M Michael Büsch #
Message details and related content
rt6_probe allocates a struct __rt6_probe_work and schedules a work handler rt6_probe_deferred. But rt6_probe_deferred kfree's the struct work_struct instead of struct __rt6_probe_work. This works, because struct work_struct is the first element of struct __rt6_probe_work. Change it to kfree struct __rt6_probe_work to not implicitly depend on struct work_struct being the first element. This does not affect the generated code. Signed-off-by: Michael Buesch <m@bues.ch> --- The affected code was introduced in c2f17e827b419918c856131f592df9521e1a38e3 Index: linux/net/ipv6/route.c ===================================================================
--- linux.orig/net/ipv6/route.c
+++ linux/net/ipv6/route.c@@ -499,7 +499,7 @@ static void rt6_probe_deferred(struct wo addrconf_addr_solict_mult(&work->target, &mcaddr); ndisc_send_ns(work->dev, NULL, &work->target, &mcaddr, NULL); dev_put(work->dev); - kfree(w); + kfree(work); } static void rt6_probe(struct rt6_info *rt)