Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

NFSv4.1: fix backchannel max_resp_sz verification check

When the client max_resp_sz is larger than what the server encodes in
its reply, the nfs4_verify_back_channel_attrs() check fails and this
causes nfs4_proc_create_session() to fail, in cases where the client
page size is larger than that of the server and the server does not want
to negotiate upwards.

While this is not a problem with the linux nfs server that will reflect
the proposed value in its reply irrespective of the local page size,
other nfs server implementations may insist on their own max_resp_sz
value, which could be smaller.

Fix this by accepting smaller max_resp_sz values from the server, as
this does not violate the protocol. The server is allowed to decrease
but not increase proposed the size, and as such values smaller than the
client-proposed ones are valid.

Fixes: 43c2e885be25 ("nfs4: fix channel attribute sanity-checks")
Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>

authored by

Anthony Iliopoulos and committed by
Anna Schumaker
19151235 64afd878

+1 -1
+1 -1
fs/nfs/nfs4proc.c
··· 9442 9442 goto out; 9443 9443 if (rcvd->max_rqst_sz > sent->max_rqst_sz) 9444 9444 return -EINVAL; 9445 - if (rcvd->max_resp_sz < sent->max_resp_sz) 9445 + if (rcvd->max_resp_sz > sent->max_resp_sz) 9446 9446 return -EINVAL; 9447 9447 if (rcvd->max_resp_sz_cached > sent->max_resp_sz_cached) 9448 9448 return -EINVAL;