summaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2021-05-11 11:49:42 +0300
committerTrond Myklebust <trond.myklebust@hammerspace.com>2021-05-20 12:17:08 -0400
commit769b01ea68b6c49dc3cde6adf7e53927dacbd3a8 (patch)
tree939cab969061c04a2ff9927cb98473f0517d7367 /fs/nfs
parentbb002388901151fe35b6697ab116f6ed0721a9ed (diff)
downloadlinux-stable-769b01ea68b6c49dc3cde6adf7e53927dacbd3a8.tar.gz
linux-stable-769b01ea68b6c49dc3cde6adf7e53927dacbd3a8.tar.bz2
linux-stable-769b01ea68b6c49dc3cde6adf7e53927dacbd3a8.zip
NFS: fix an incorrect limit in filelayout_decode_layout()
The "sizeof(struct nfs_fh)" is two bytes too large and could lead to memory corruption. It should be NFS_MAXFHSIZE because that's the size of the ->data[] buffer. I reversed the size of the arguments to put the variable on the left. Fixes: 16b374ca439f ("NFSv4.1: pnfs: filelayout: add driver's LAYOUTGET and GETDEVICEINFO infrastructure") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/filelayout/filelayout.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c
index d158a500c25c..d2103852475f 100644
--- a/fs/nfs/filelayout/filelayout.c
+++ b/fs/nfs/filelayout/filelayout.c
@@ -718,7 +718,7 @@ filelayout_decode_layout(struct pnfs_layout_hdr *flo,
if (unlikely(!p))
goto out_err;
fl->fh_array[i]->size = be32_to_cpup(p++);
- if (sizeof(struct nfs_fh) < fl->fh_array[i]->size) {
+ if (fl->fh_array[i]->size > NFS_MAXFHSIZE) {
printk(KERN_ERR "NFS: Too big fh %d received %d\n",
i, fl->fh_array[i]->size);
goto out_err;