Commit faeefc17 authored by Zijun Hu's avatar Zijun Hu Committed by Jakub Kicinski
Browse files

sock: Correct error checking condition for (assign|release)_proto_idx()



(assign|release)_proto_idx() wrongly check find_first_zero_bit() failure
by condition '(prot->inuse_idx == PROTO_INUSE_NR - 1)' obviously.

Fix by correcting the condition to '(prot->inuse_idx == PROTO_INUSE_NR)'

Signed-off-by: default avatarZijun Hu <quic_zijuhu@quicinc.com>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250410-fix_net-v2-1-d69e7c5739a4@quicinc.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 61499764
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -4004,7 +4004,7 @@ static int assign_proto_idx(struct proto *prot)
{
	prot->inuse_idx = find_first_zero_bit(proto_inuse_idx, PROTO_INUSE_NR);

	if (unlikely(prot->inuse_idx == PROTO_INUSE_NR - 1)) {
	if (unlikely(prot->inuse_idx == PROTO_INUSE_NR)) {
		pr_err("PROTO_INUSE_NR exhausted\n");
		return -ENOSPC;
	}
@@ -4015,7 +4015,7 @@ static int assign_proto_idx(struct proto *prot)

static void release_proto_idx(struct proto *prot)
{
	if (prot->inuse_idx != PROTO_INUSE_NR - 1)
	if (prot->inuse_idx != PROTO_INUSE_NR)
		clear_bit(prot->inuse_idx, proto_inuse_idx);
}
#else