From: Eric Dumazet Date: Sun, 5 Dec 2021 04:22:04 +0000 (-0800) Subject: ipv6: add net device refcount tracker to rt6_probe_deferred() X-Git-Tag: howlett/maple/20220722_2~1498^2~259^2~13 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=fb67510ba9bd3ed1f8a2db4946e847ca0418f8dc;p=users%2Fjedix%2Flinux-maple.git ipv6: add net device refcount tracker to rt6_probe_deferred() Signed-off-by: Eric Dumazet Signed-off-by: Jakub Kicinski --- diff --git a/net/ipv6/route.c b/net/ipv6/route.c index ba4dc94d76d6..8d834f901b48 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -593,6 +593,7 @@ struct __rt6_probe_work { struct work_struct work; struct in6_addr target; struct net_device *dev; + netdevice_tracker dev_tracker; }; static void rt6_probe_deferred(struct work_struct *w) @@ -603,7 +604,7 @@ static void rt6_probe_deferred(struct work_struct *w) addrconf_addr_solict_mult(&work->target, &mcaddr); ndisc_send_ns(work->dev, &work->target, &mcaddr, NULL, 0); - dev_put(work->dev); + dev_put_track(work->dev, &work->dev_tracker); kfree(work); } @@ -657,7 +658,7 @@ static void rt6_probe(struct fib6_nh *fib6_nh) } else { INIT_WORK(&work->work, rt6_probe_deferred); work->target = *nh_gw; - dev_hold(dev); + dev_hold_track(dev, &work->dev_tracker, GFP_KERNEL); work->dev = dev; schedule_work(&work->work); }