]> git.baikalelectronics.ru Git - kernel.git/commit
SUNRPC: fix sign error causing rpcsec_gss drops
authorJ. Bruce Fields <bfields@redhat.com>
Fri, 1 Oct 2021 13:59:21 +0000 (09:59 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Fri, 1 Oct 2021 15:17:42 +0000 (11:17 -0400)
commita0d3da18713b2abf50ca947c443c84bd4bbb10b9
treebfb7c6494174a1cc962b9d8ee229892a6ac8156c
parenta059401742c2687c3bc00b785ff21c49ee9468ad
SUNRPC: fix sign error causing rpcsec_gss drops

If sd_max is unsigned, then sd_max - GSS_SEQ_WIN is a very large number
whenever sd_max is less than GSS_SEQ_WIN, and the comparison:

seq_num <= sd->sd_max - GSS_SEQ_WIN

in gss_check_seq_num is pretty much always true, even when that's
clearly not what was intended.

This was causing pynfs to hang when using krb5, because pynfs uses zero
as the initial gss sequence number.  That's perfectly legal, but this
logic error causes knfsd to drop the rpc in that case.  Out-of-order
sequence IDs in the first GSS_SEQ_WIN (128) calls will also cause this.

Fixes: 7a924c69ed9c ("SUNRPC: Augment server-side rpcgss tracepoints")
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
net/sunrpc/auth_gss/svcauth_gss.c