[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected. No action required from the submitter.
The upstream commit SHA1 provided is correct: eb02688c5c45c3e7af7e71f036a7144f5639cbfe
WARNING: Author mismatch between patch and upstream commit: Backport author: Harshit Mogalapalliharshit.m.mogalapalli@oracle.com Commit author: Paolo Abenipabeni@redhat.com
Status in newer kernel trees: 6.14.y | Present (exact SHA1) 6.13.y | Present (exact SHA1) 6.12.y | Present (different SHA1: 0e4c6faaef8a) 6.6.y | Present (different SHA1: 43e25adc8026) 6.1.y | Present (different SHA1: b2f26a27ea3f)
Note: The patch differs from the upstream commit: --- 1: eb02688c5c45c ! 1: 47cc8122c9644 ipv6: release nexthop on device removal @@ Metadata ## Commit message ## ipv6: release nexthop on device removal
+ [ Upstream commit eb02688c5c45c3e7af7e71f036a7144f5639cbfe ] + The CI is hitting some aperiodic hangup at device removal time in the pmtu.sh self-test:
@@ Commit message Reviewed-by: David Ahern dsahern@kernel.org Link: https://patch.msgid.link/604c45c188c609b732286b47ac2a451a40f6cf6d.1730828007... Signed-off-by: Jakub Kicinski kuba@kernel.org + (cherry picked from commit eb02688c5c45c3e7af7e71f036a7144f5639cbfe) + [Harshit: Resolved conflict due to missing commit: e5f80fcf869a ("ipv6: + give an IPv6 dev to blackhole_netdev") and commit: b4cb4a1391dc ("net: + use unrcu_pointer() helper") in linux-5.15.y] + Signed-off-by: Harshit Mogalapalli harshit.m.mogalapalli@oracle.com
## net/ipv6/route.c ## -@@ net/ipv6/route.c: static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev) - { - struct rt6_info *rt = dst_rt6_info(dst); +@@ net/ipv6/route.c: static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev, struct inet6_dev *idev = rt->rt6i_idev; + struct net_device *loopback_dev = + dev_net(dev)->loopback_dev; + struct fib6_info *from;
- if (idev && idev->dev != blackhole_netdev) { - struct inet6_dev *blackhole_idev = in6_dev_get(blackhole_netdev); -@@ net/ipv6/route.c: static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev) + if (idev && idev->dev != loopback_dev) { + struct inet6_dev *loopback_idev = in6_dev_get(loopback_dev); +@@ net/ipv6/route.c: static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev, in6_dev_put(idev); } } -+ from = unrcu_pointer(xchg(&rt->from, NULL)); ++ from = xchg((__force struct fib6_info **)&rt->from, NULL); + fib6_info_release(from); }
@@ net/ipv6/route.c: static void rt6_remove_exception(struct rt6_exception_bucket * /* purge completely the exception to allow releasing the held resources: * some [sk] cache may keep the dst around for unlimited time */ -- from = unrcu_pointer(xchg(&rt6_ex->rt6i->from, NULL)); +- from = xchg((__force struct fib6_info **)&rt6_ex->rt6i->from, NULL); - fib6_info_release(from); dst_dev_put(&rt6_ex->rt6i->dst);
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test | |---------------------------|-------------|------------| | stable/linux-6.1.y | Success | Success |