From: Jiayuan Chen <jiayuan.chen@linux.dev>
To: netdev@vger.kernel.org
Cc: Jiayuan Chen <jiayuan.chen@linux.dev>,
stable@vger.kernel.org,
Fernando Fernandez Mancera <fmancera@suse.de>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@kernel.org>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
David Ahern <dsahern@kernel.org>,
Ido Schimmel <idosch@nvidia.com>,
Joel Granados <joel.granados@kernel.org>,
Thomas Gleixner <tglx@kernel.org>,
Petr Pavlu <petr.pavlu@suse.com>,
Kuniyuki Iwashima <kuniyu@google.com>,
Willem de Bruijn <willemb@google.com>,
Maoyi Xie <maoyi.xie@ntu.edu.sg>,
Daniel J Blueman <daniel@quora.org>,
Oleg Nesterov <oleg@redhat.com>,
Chia-Yu Chang <chia-yu.chang@nokia-bell-labs.com>,
Yung Chih Su <yuuchihsu@gmail.com>,
Wyatt Feng <bronzed_45_vested@icloud.com>,
Hannes Frederic Sowa <hannes@stressinduktion.org>,
Flavio Leitner <fbl@redhat.com>,
"Paul E. McKenney" <paulmck@kernel.org>,
Petr Mladek <pmladek@suse.com>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH net v2 3/5] ipv6: restrict mld_qrv to 255
Date: Tue, 27 Oct 2026 18:45:31 +0800 [thread overview]
Message-ID: <20261027104701.296240-4-jiayuan.chen@linux.dev> (raw)
In-Reply-To: <20261027104701.296240-1-jiayuan.chen@linux.dev>
net.ipv6.mld_qrv only has a lower bound, but ipv6_mc_reset() stores it
into the u8 inet6_dev::mc_qrv, so 256 wraps to 0 and the first MLDv2
Query received on the interface trips the WARN_ON() in mld_update_qrv():
WARN_ON(idev->mc_qrv == 0);
WARNING: net/ipv6/mcast.c:1327 at mld_query_work+0x1fd2/0x2cb0, CPU#3: kworker/3:1/2688
Workqueue: mld mld_query_work
RIP: 0010:mld_query_work+0x1fd2/0x2cb0
Call Trace:
<TASK>
process_one_work+0x93a/0x1b20
worker_thread+0x6d0/0x11d0
kthread+0x358/0x470
ret_from_fork+0x5b3/0x820
ret_from_fork_asm+0x1a/0x30
</TASK>
Make the sysctl a u8 like mc_qrv and switch to proc_dou8vec_minmax(),
which rejects anything above 255, and document it.
Fixes: 2f711939d2ea ("ipv6: add sysctl_mld_qrv to configure query robustness variable")
Cc: stable@vger.kernel.org
Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Jiayuan Chen <jiayuan.chen@linux.dev>
---
v2: switched to u8 and proc_dou8vec_minmax(), as suggested by Kuniyuki
Iwashima.
---
Documentation/networking/ip-sysctl.rst | 2 ++
include/net/ipv6.h | 2 +-
net/ipv6/mcast.c | 2 +-
net/ipv6/sysctl_net_ipv6.c | 4 ++--
4 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/Documentation/networking/ip-sysctl.rst b/Documentation/networking/ip-sysctl.rst
index 4b19c8d3efda7..71f334f27004e 100644
--- a/Documentation/networking/ip-sysctl.rst
+++ b/Documentation/networking/ip-sysctl.rst
@@ -2515,6 +2515,8 @@ mld_qrv - INTEGER
Minimum: 1 (as specified by RFC6636 4.5)
+ Maximum: 255
+
max_dst_opts_number - INTEGER
Maximum number of non-padding TLVs allowed in a Destination
options extension header. If this value is less than zero
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 3de07e738538f..4901a92066e61 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -205,7 +205,7 @@ struct sk_buff *ip6_frag_next(struct sk_buff *skb,
/* sysctls */
extern int sysctl_mld_max_msf;
-extern int sysctl_mld_qrv;
+extern u8 sysctl_mld_qrv;
#define _DEVINC(net, statname, mod, idev, field) \
({ \
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c
index ecef55f261890..13f31132e0f97 100644
--- a/net/ipv6/mcast.c
+++ b/net/ipv6/mcast.c
@@ -106,7 +106,7 @@ static int __ipv6_dev_mc_inc(struct net_device *dev,
#define IPV6_MLD_MAX_MSF 64
int sysctl_mld_max_msf __read_mostly = IPV6_MLD_MAX_MSF;
-int sysctl_mld_qrv __read_mostly = MLD_QRV_DEFAULT;
+u8 sysctl_mld_qrv __read_mostly = MLD_QRV_DEFAULT;
#define mc_assert_locked(idev) \
lockdep_assert_held(&(idev)->mc_lock)
diff --git a/net/ipv6/sysctl_net_ipv6.c b/net/ipv6/sysctl_net_ipv6.c
index 1a0a36dcdabc1..f3ac04dbc71d0 100644
--- a/net/ipv6/sysctl_net_ipv6.c
+++ b/net/ipv6/sysctl_net_ipv6.c
@@ -226,9 +226,9 @@ static struct ctl_table ipv6_rotable[] = {
{
.procname = "mld_qrv",
.data = &sysctl_mld_qrv,
- .maxlen = sizeof(int),
+ .maxlen = sizeof(u8),
.mode = 0644,
- .proc_handler = proc_dointvec_minmax,
+ .proc_handler = proc_dou8vec_minmax,
.extra1 = SYSCTL_ONE
},
#ifdef CONFIG_NETLABEL
--
2.43.0
next prev parent reply other threads:[~2026-10-27 10:49 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-27 10:45 [PATCH net v2 0/5] net: fix misc signed overflows caused by bad sysctl values Jiayuan Chen
2026-10-27 10:45 ` [PATCH net v2 1/5] ipv6: restrict gc_elasticity to 31 Jiayuan Chen
2026-10-28 23:58 ` Kuniyuki Iwashima
2026-10-29 1:46 ` Jiayuan Chen
2026-10-29 1:53 ` Kuniyuki Iwashima
2026-10-29 2:07 ` Jiayuan Chen
2026-10-27 10:45 ` [PATCH net v2 2/5] ipv4: fix shift-out-of-bounds in ip_rt_send_redirect() Jiayuan Chen
2026-10-27 11:54 ` Fernando Fernandez Mancera
2026-10-27 10:45 ` Jiayuan Chen [this message]
2026-10-27 10:45 ` [PATCH net v2 4/5] ipv4: restrict igmp_qrv to 255 Jiayuan Chen
2026-10-27 10:45 ` [PATCH net v2 5/5] net: restrict message_cost and message_burst to non-negative values Jiayuan Chen
2026-10-27 11:56 ` Fernando Fernandez Mancera
2026-10-28 23:07 ` Jakub Kicinski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261027104701.296240-4-jiayuan.chen@linux.dev \
--to=jiayuan.chen@linux.dev \
--cc=bronzed_45_vested@icloud.com \
--cc=chia-yu.chang@nokia-bell-labs.com \
--cc=corbet@lwn.net \
--cc=daniel@quora.org \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@kernel.org \
--cc=fbl@redhat.com \
--cc=fmancera@suse.de \
--cc=hannes@stressinduktion.org \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=joel.granados@kernel.org \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maoyi.xie@ntu.edu.sg \
--cc=netdev@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=pabeni@redhat.com \
--cc=paulmck@kernel.org \
--cc=petr.pavlu@suse.com \
--cc=pmladek@suse.com \
--cc=rdunlap@infradead.org \
--cc=skhan@linuxfoundation.org \
--cc=stable@vger.kernel.org \
--cc=tglx@kernel.org \
--cc=willemb@google.com \
--cc=yuuchihsu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.