On Tue, 2012-08-21 at 11:44 +0800, Cong Wang wrote:
Hi, Debabrata,
Could you help to test the attached patch below?
Thanks!
Hard to comment on your patch since its not inlined.
+ nw = kmalloc(sizeof(*nw), GFP_ATOMIC);
+ if (nw) {
+ memcpy(&nw->target, &neigh->primary_key, sizeof(struct in6_addr));
+ addrconf_addr_solict_mult(&nw->target, &nw->mcaddr);
+ nw->dev = rt->dst.dev;
+ INIT_WORK(&nw->work, queue_ndisc);
+ schedule_work(&nw->work);
+ }
You cant do that without taking extra reference on dev,
and release it in queue_ndisc()
This also will add interesting side effects at device dismantle.