Message ID | 20210616152836.507544876@linuxfoundation.org |
---|---|
State | Superseded |
Headers | show |
Series | None | expand |
В Ср, 16/06/2021 в 17:33 +0200, Greg Kroah-Hartman пишет: > From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com> > > [ Upstream commit a8db57c1d285c758adc7fb43d6e2bad2554106e1 ] > > The error code is missing in this code scenario, add the error code > '-EINVAL' to the return value 'err'. > > Eliminate the follow smatch warning: > > net/core/rtnetlink.c:4834 rtnl_bridge_notify() warn: missing error code > 'err'. This patch breaks systemd-resolved. It is 100% reproducible on two of my systems, but there are also systems where I cannot reproduce it. The problem manifests itself as SERVFAIL on every DNS query. Just reverting this patch from 5.10.45 fixes the problem for me. > > Reported-by: Abaci Robot <abaci@linux.alibaba.com> > Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com> > Signed-off-by: David S. Miller <davem@davemloft.net> > Signed-off-by: Sasha Levin <sashal@kernel.org> > --- > net/core/rtnetlink.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c > index eae8e87930cd..83894723ebee 100644 > --- a/net/core/rtnetlink.c > +++ b/net/core/rtnetlink.c > @@ -4842,8 +4842,10 @@ static int rtnl_bridge_notify(struct net_device > *dev) > if (err < 0) > goto errout; > > - if (!skb->len) > + if (!skb->len) { > + err = -EINVAL; > goto errout; > + } > > rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); > return 0;
On Sat, Jun 19, 2021 at 02:58:28AM +0300, Alexander Tsoy wrote: > В Ср, 16/06/2021 в 17:33 +0200, Greg Kroah-Hartman пишет: > > From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com> > > > > [ Upstream commit a8db57c1d285c758adc7fb43d6e2bad2554106e1 ] > > > > The error code is missing in this code scenario, add the error code > > '-EINVAL' to the return value 'err'. > > > > Eliminate the follow smatch warning: > > > > net/core/rtnetlink.c:4834 rtnl_bridge_notify() warn: missing error code > > 'err'. > > This patch breaks systemd-resolved. It is 100% reproducible on two of > my systems, but there are also systems where I cannot reproduce it. The > problem manifests itself as SERVFAIL on every DNS query. > > Just reverting this patch from 5.10.45 fixes the problem for me. Is Linus's tree also broken for you? It should be reverted there first. thanks, greg k-h
В Сб, 19/06/2021 в 08:45 +0200, Greg Kroah-Hartman пишет: > On Sat, Jun 19, 2021 at 02:58:28AM +0300, Alexander Tsoy wrote: > > В Ср, 16/06/2021 в 17:33 +0200, Greg Kroah-Hartman пишет: > > > From: Jiapeng Chong <jiapeng.chong@linux.alibaba.com> > > > > > > [ Upstream commit a8db57c1d285c758adc7fb43d6e2bad2554106e1 ] > > > > > > The error code is missing in this code scenario, add the error code > > > '-EINVAL' to the return value 'err'. > > > > > > Eliminate the follow smatch warning: > > > > > > net/core/rtnetlink.c:4834 rtnl_bridge_notify() warn: missing error > > > code > > > 'err'. > > > > This patch breaks systemd-resolved. It is 100% reproducible on two of > > my systems, but there are also systems where I cannot reproduce it. > > The > > problem manifests itself as SERVFAIL on every DNS query. > > > > Just reverting this patch from 5.10.45 fixes the problem for me. > > Is Linus's tree also broken for you? It should be reverted there > first. Looks like this patch was reverted in Linus's tree: d2e381c4963663bca6f30c3b996fa4dbafe8fcb5 (rtnetlink: Fix regression in bridge VLAN configuration) Also after some investigation I think my problem was actually with NetworkManager as systemd-networkd + systemd-resolved works fine. $ grep ^dns /etc/NetworkManager/NetworkManager.conf dns=systemd-resolved with this patch: $ resolvectl ... Link 4 (eno1) Current Scopes: none Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported DNS Servers: 192.168.1.1 fd9f:5696:250c::1 DNS Domain: lan with this patch reverted: $ resolvectl ... Link 4 (eno1) Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6 Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.1.1 DNS Servers: 192.168.1.1 fd9f:5696:250c::1 DNS Domain: lan
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index eae8e87930cd..83894723ebee 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c @@ -4842,8 +4842,10 @@ static int rtnl_bridge_notify(struct net_device *dev) if (err < 0) goto errout; - if (!skb->len) + if (!skb->len) { + err = -EINVAL; goto errout; + } rtnl_notify(skb, net, 0, RTNLGRP_LINK, NULL, GFP_ATOMIC); return 0;