Skip to content

Commit

Permalink
ipv6: add net device refcount tracker to rt6_probe_deferred()
Browse files Browse the repository at this point in the history
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
  • Loading branch information
Eric Dumazet authored and Jakub Kicinski committed Dec 7, 2021
1 parent 9038c32 commit fb67510
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions net/ipv6/route.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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);
}

Expand Down Expand Up @@ -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);
}
Expand Down

0 comments on commit fb67510

Please sign in to comment.