All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] SUNRPC: fix sign error causing rpcsec_gss drops
@ 2021-10-01 13:59 J. Bruce Fields
  2021-10-01 16:00 ` Chuck Lever III
  2021-10-01 16:50 ` Daniel Kobras
  0 siblings, 2 replies; 5+ messages in thread
From: J. Bruce Fields @ 2021-10-01 13:59 UTC (permalink / raw)
  To: Chuck Lever; +Cc: linux-nfs, Volodymyr Khomenko

From: "J. Bruce Fields" <bfields@redhat.com>

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: 10b9d99a3dbb ("SUNRPC: Augment server-side rpcgss tracepoints")
Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
---
 net/sunrpc/auth_gss/svcauth_gss.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/sunrpc/auth_gss/svcauth_gss.c b/net/sunrpc/auth_gss/svcauth_gss.c
index 7dba6a9c213a..b87565b64928 100644
--- a/net/sunrpc/auth_gss/svcauth_gss.c
+++ b/net/sunrpc/auth_gss/svcauth_gss.c
@@ -645,7 +645,7 @@ static bool gss_check_seq_num(const struct svc_rqst *rqstp, struct rsc *rsci,
 		}
 		__set_bit(seq_num % GSS_SEQ_WIN, sd->sd_win);
 		goto ok;
-	} else if (seq_num <= sd->sd_max - GSS_SEQ_WIN) {
+	} else if (seq_num + GSS_SEQ_WIN <= sd->sd_max) {
 		goto toolow;
 	}
 	if (__test_and_set_bit(seq_num % GSS_SEQ_WIN, sd->sd_win))
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-10-04  6:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-01 13:59 [PATCH] SUNRPC: fix sign error causing rpcsec_gss drops J. Bruce Fields
2021-10-01 16:00 ` Chuck Lever III
2021-10-01 16:50 ` Daniel Kobras
2021-10-01 17:44   ` J. Bruce Fields
2021-10-04  6:50     ` Daniel Kobras

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.