SUNRPC: improve error response to over-size gss credential
authorNeilBrown <neilb@suse.de>
Wed, 1 Sep 2021 23:30:37 +0000 (09:30 +1000)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 3 Sep 2021 17:38:11 +0000 (13:38 -0400)
commit0c217d5066c84f67cd672cf03ec8f682e5d013c2
tree042d081a4fa11ab491c43e3054bbe66886294aea
parente38b3f20059426a0adbde014ff71071739ab5226
SUNRPC: improve error response to over-size gss credential

When the NFS server receives a large gss (kerberos) credential and tries
to pass it up to rpc.svcgssd (which is deprecated), it triggers an
infinite loop in cache_read().

cache_request() always returns -EAGAIN, and this causes a "goto again".

This patch:
 - changes the error to -E2BIG to avoid the infinite loop, and
 - generates a WARN_ONCE when rsi_request first sees an over-sized
   credential.  The warning suggests switching to gssproxy.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=196583
Signed-off-by: NeilBrown <neilb@suse.de>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/auth_gss/svcauth_gss.c
net/sunrpc/cache.c