| From 2f217b6eaa2f80a33e71a2cd30938b667f99cd68 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 14 May 2020 16:09:40 -0400 |
| Subject: NFSv3: fix rpc receive buffer size for MOUNT call |
| |
| From: Olga Kornievskaia <olga.kornievskaia@gmail.com> |
| |
| [ Upstream commit 8eed292bc8cbf737e46fb1c119d4c8f6dcb00650 ] |
| |
| Prior to commit e3d3ab64dd66 ("SUNRPC: Use au_rslack when |
| computing reply buffer size"), there was enough slack in the reply |
| buffer to commodate filehandles of size 60bytes. However, the real |
| problem was that the reply buffer size for the MOUNT operation was |
| not correctly calculated. Received buffer size used the filehandle |
| size for NFSv2 (32bytes) which is much smaller than the allowed |
| filehandle size for the v3 mounts. |
| |
| Fix the reply buffer size (decode arguments size) for the MNT command. |
| |
| Fixes: 2c94b8eca1a2 ("SUNRPC: Use au_rslack when computing reply buffer size") |
| Signed-off-by: Olga Kornievskaia <kolga@netapp.com> |
| Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/nfs/mount_clnt.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c |
| index 35c8cb2d76372..dda5c3e65d8d6 100644 |
| --- a/fs/nfs/mount_clnt.c |
| +++ b/fs/nfs/mount_clnt.c |
| @@ -30,6 +30,7 @@ |
| #define encode_dirpath_sz (1 + XDR_QUADLEN(MNTPATHLEN)) |
| #define MNT_status_sz (1) |
| #define MNT_fhandle_sz XDR_QUADLEN(NFS2_FHSIZE) |
| +#define MNT_fhandlev3_sz XDR_QUADLEN(NFS3_FHSIZE) |
| #define MNT_authflav3_sz (1 + NFS_MAX_SECFLAVORS) |
| |
| /* |
| @@ -37,7 +38,7 @@ |
| */ |
| #define MNT_enc_dirpath_sz encode_dirpath_sz |
| #define MNT_dec_mountres_sz (MNT_status_sz + MNT_fhandle_sz) |
| -#define MNT_dec_mountres3_sz (MNT_status_sz + MNT_fhandle_sz + \ |
| +#define MNT_dec_mountres3_sz (MNT_status_sz + MNT_fhandlev3_sz + \ |
| MNT_authflav3_sz) |
| |
| /* |
| -- |
| 2.20.1 |
| |