In ipv6_srh_rcv() we use min(net->ipv6.devconf_all->seg6_enabled, idev->cnf.seg6_enabled) is intended to return 0 when either value is zero, but if one of the values is negative it will in fact return non-zero. Signed-off-by: Yue Haibing --- v2: use proc_dointvec_minmax() --- net/ipv6/addrconf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 40e9c336f6c5..69ec9cb6031e 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -7192,7 +7192,9 @@ static const struct ctl_table addrconf_sysctl[] = { .data = &ipv6_devconf.seg6_enabled, .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_dointvec, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ZERO, + .extra2 = SYSCTL_ONE, }, #ifdef CONFIG_IPV6_SEG6_HMAC { -- 2.34.1