1
0
Fork 0
freescale-linux-fslc/fs/nfs/flexfilelayout
Nikola Livic 1fbea60ea6 pNFS/flexfiles: fix incorrect size check in decode_nfs_fh()
[ Upstream commit ed34695e15 ]

We (adam zabrocki, alexander matrosov, alexander tereshkin, maksym
bazalii) observed the check:

	if (fh->size > sizeof(struct nfs_fh))

should not use the size of the nfs_fh struct which includes an extra two
bytes from the size field.

struct nfs_fh {
	unsigned short         size;
	unsigned char          data[NFS_MAXFHSIZE];
}

but should determine the size from data[NFS_MAXFHSIZE] so the memcpy
will not write 2 bytes beyond destination.  The proposed fix is to
compare against the NFS_MAXFHSIZE directly, as is done elsewhere in fs
code base.

Fixes: d67ae825a5 ("pnfs/flexfiles: Add the FlexFile Layout Driver")
Signed-off-by: Nikola Livic <nlivic@gmail.com>
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-19 10:13:03 +02:00
..
Makefile treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
flexfilelayout.c pNFS/flexfiles: fix incorrect size check in decode_nfs_fh() 2021-05-19 10:13:03 +02:00
flexfilelayout.h pNFS/flexfiles: Simplify allocation of the mirror array 2020-03-26 10:52:04 -04:00
flexfilelayoutdev.c pnfs/flexfiles: Fix PTR_ERR() dereferences in ff_layout_track_ds_error 2019-07-18 14:43:52 -04:00