From nobody Sat Jun 27 16:01:42 2026 Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 744BF34750A for ; Mon, 8 Jun 2026 16:22:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780935759; cv=none; b=O4toODYPVjN2LO13cdlcA0q6h6SOHgkej31ivlZ6GAveB1u7FD1yFKfURrDxsT1wRYSaBt0AVkWulRi8T9Wq434bW5nQMy9h5A7E12UUWmH9ZCG3TOxPiSJcW37G5NUx8CPBOOmz2r0BVN1040wrl79nmwd21fIOzhMw0VxRBHc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780935759; c=relaxed/simple; bh=jFcy7qGszDpviUxuZY4SN2f2XLYRG009KZCZxWTYTDk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=EyA/IPp1DmtznzDPK0IoA1+HYSM1e6OEwmJcvBoiGsICpgr+CKg5SzciDc6WIppwDLL9eodFl72NNIa9Ofxsarmd01FCDgwPQqblpvz8mLP7d3K4selTCTIioUgt61QuBV75gmM/DThKzMO3mxaDmH3hpzBCoYaiQoWQZ+gxHM8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ibL9kTmg; arc=none smtp.client-ip=209.85.222.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ibL9kTmg" Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-9156ceb55ffso393528985a.0 for ; Mon, 08 Jun 2026 09:22:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780935756; x=1781540556; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=yvinHr1mQvwvNvWAosxx0fmHzORHH/aQDJK7llc8tJM=; b=ibL9kTmgsM0+NW/9htvvrjqgoaRAMO1LNxr3WhP/f7qzJ6OoEC59FiD02bgPfULDB6 TNIsI8MVk60PTFrhuGZBx0w26TybCtsElCioHSJWrU06S16pTJUNareffudBXZlTiD1L FVOCb+iuJzvKBBjeT2Mxv3FvQzvoEk+yV/KKEd2M2TuvyyW2js0VQkQ24L3HTz9og1mm ciksH9e5koDO51zwnc9Rfi6uXWsQpfcjpTqwU/HlqqpmINV4o5nf3OfJnpjwLaLTzRai Ttlmeiy4A7AeudNmltsfuDJMN1+NlvwewvyBSKcDHdsG/d16mVYn2YwfLkwrEgBqQ6wm TvKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780935756; x=1781540556; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=yvinHr1mQvwvNvWAosxx0fmHzORHH/aQDJK7llc8tJM=; b=ACrbN6RvQh5Pp7NqS3+DFlKqe6IGlXAVcpxxrtOuTkLUfy9GSc/Dmo9uVqGi8a2vsd TIkty57DPkx3J59+dSn+wDppqgEoYR9QsR9b/d/QUcxAt2B/z9U3uYyq4f/Xp+8sOraC q84a2tBd2qq0clp7Isq965krL+AQS723b/IXUmaIVo97x/xU6IgqkvvXp2W775oJ0WJB Y9rxobZI8jLPn+L8bTShuD2iY0YkQ4xC8y9ZdEjcL32cQty3eQYWM3Rinw62PhGYCmMd HGpqpVR2C4Oe0A+HWhc2hQI8wdJCPAFIFibVaw8GLuMFv4DR2o4dDAb5Thu/3x4tInIc sNBw== X-Forwarded-Encrypted: i=1; AFNElJ9CQdL+3kCOyKAAk6tvzc2frL/mynG3Gkwl2fvQlrjEPtAxXqKQH2OWmAutKH3GZzc6JAbu1R6Cby1BCT4=@vger.kernel.org X-Gm-Message-State: AOJu0YyHaUmtzZUXVnahktgZIf3GfKVawleTI1Uq11YCz7m2y+fsLBsu pCJOYqCsMyFFoSscr/styS0+wpT9DQor/WLRbDCQMgvvM3jHXFSwvpfQ X-Gm-Gg: Acq92OFuWG/b6WWFgV8hZZ37Aszk4AHd8a0xNpOHMo+u4kEpFihQn2JfVzy8ofC3Cv4 Yu312mHqNMliNbfrRM9qrfZBbTxhfij9ARXjBAgAhdepDzRc87QZAPLTNgLtAl3Fbds8kL4Mx+S cObF0B2mdJ2/1+es7PcW2ECV9R5uYTA05QvEUOCQXBX+Zp5h4tKMjRa4FjNUv4RT4N1cUI5xbIy jDhl4E4xuYhaue6+xpMSzN4CuBHZH4sJLVO2CA9N7Ps62sP1jYOAJZ/3NpwksiwzBQF6tLJDShd ohmQwDRqA3lj+ngnBu198ULRiM9U7a2dnS32Zz+mcryI+lBHtt1/pukpwtMOKhdeAi3C+oQuGB4 tQtm1ilmITkQzzUQQ9LrNEklwJntc2SNBBux6Cp3hxpFmmfU5KT366eClXJMDwNvI8csOEQ1MXp 6JlPHtQa876bXQfT/2RrMCWWfDoRppioBw4YNPmYX0fZ7FEIYoTOWZ1RljqsP5YA== X-Received: by 2002:a05:620a:bcb:b0:915:6a2b:626c with SMTP id af79cd13be357-915a9dd11d3mr2539559785a.51.1780935756139; Mon, 08 Jun 2026 09:22:36 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9159cd62a84sm1382524185a.5.2026.06.08.09.22.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 09:22:35 -0700 (PDT) From: Yuho Choi To: Marcelo Ricardo Leitner , Xin Long , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Simon Horman , linux-sctp@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH net v1] sctp: Unwind address notifier registration on failure Date: Mon, 8 Jun 2026 12:22:30 -0400 Message-ID: <20260608162230.46644-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" sctp_v4_add_protocol() and sctp_v6_add_protocol() register their address notifiers before registering the SCTP protocol handlers. If protocol registration fails, the functions return without unregistering the notifiers. Unregister the notifiers on the protocol registration failure paths. Also propagate notifier registration failures instead of ignoring them. Fixes: 827bf12236fb ("[SCTP]: Re-order SCTP initializations to avoid race w= ith sctp_rcv()") Fixes: 270637abff0c ("[SCTP]: Fix a race between module load and protosw ac= cess") Signed-off-by: Yuho Choi --- net/sctp/ipv6.c | 10 ++++++++-- net/sctp/protocol.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index cd15b695607e..ef26878f1282 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c @@ -1176,11 +1176,17 @@ void sctp_v6_protosw_exit(void) /* Register with inet6 layer. */ int sctp_v6_add_protocol(void) { + int ret; + /* Register notifier for inet6 address additions/deletions. */ - register_inet6addr_notifier(&sctp_inet6addr_notifier); + ret =3D register_inet6addr_notifier(&sctp_inet6addr_notifier); + if (ret) + return ret; =20 - if (inet6_add_protocol(&sctpv6_protocol, IPPROTO_SCTP) < 0) + if (inet6_add_protocol(&sctpv6_protocol, IPPROTO_SCTP) < 0) { + unregister_inet6addr_notifier(&sctp_inet6addr_notifier); return -EAGAIN; + } =20 return 0; } diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 5800e7ee7ea0..6153340f1b45 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c @@ -1263,12 +1263,18 @@ static void sctp_v4_protosw_exit(void) =20 static int sctp_v4_add_protocol(void) { + int ret; + /* Register notifier for inet address additions/deletions. */ - register_inetaddr_notifier(&sctp_inetaddr_notifier); + ret =3D register_inetaddr_notifier(&sctp_inetaddr_notifier); + if (ret) + return ret; =20 /* Register SCTP with inet layer. */ - if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0) + if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0) { + unregister_inetaddr_notifier(&sctp_inetaddr_notifier); return -EAGAIN; + } =20 return 0; } --=20 2.43.0