lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 13 May 2022 09:22:02 -0700 From: Eric Dumazet <edumazet@...gle.com> To: Xin Long <lucien.xin@...il.com> Cc: network dev <netdev@...r.kernel.org>, David Miller <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Steffen Klassert <steffen.klassert@...unet.com> Subject: Re: [PATCH ipsec] xfrm: set dst dev to blackhole_netdev instead of loopback_dev in ifdown On Fri, May 13, 2022 at 8:47 AM Xin Long <lucien.xin@...il.com> wrote: > > The global blackhole_netdev has replaced pernet loopback_dev to become the > one given to the object that holds an netdev when ifdown in many places of > ipv4 and ipv6 since commit 8d7017fd621d ("blackhole_netdev: use > blackhole_netdev to invalidate dst entries"). > > Especially after commit faab39f63c1f ("net: allow out-of-order netdev > unregistration"), it's no longer safe to use loopback_dev that may be > freed before other netdev. Maybe add it formally in Fixes: tag. > > This patch is to set dst dev to blackhole_netdev instead of loopback_dev > in ifdown. > > Signed-off-by: Xin Long <lucien.xin@...il.com> > --- > net/xfrm/xfrm_policy.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c > index 00bd0ecff5a1..f1876ea61fdc 100644 > --- a/net/xfrm/xfrm_policy.c > +++ b/net/xfrm/xfrm_policy.c > @@ -3744,7 +3744,7 @@ static int stale_bundle(struct dst_entry *dst) > void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev) > { > while ((dst = xfrm_dst_child(dst)) && dst->xfrm && dst->dev == dev) { > - dst->dev = dev_net(dev)->loopback_dev; > + dst->dev = blackhole_netdev; I assume the XFRM layer is ready to deal with dst->dev set to blackhole ? No initial setup needed ? Thanks > dev_hold(dst->dev); > dev_put(dev); > } > -- > 2.31.1 >
Powered by blists - more mailing lists