On 01/22/2013 10:11 PM, Eric Dumazet wrote:
On Tue, 2013-01-22 at 18:32 -0800, Ben Greear wrote:
diff --git a/net/core/dst.c b/net/core/dst.c
index ee6153e..234b168 100644
--- a/net/core/dst.c
+++ b/net/core/dst.c
@@ -245,6 +245,7 @@ again:
dst->ops->destroy(dst);
if (dst->dev)
dev_put(dst->dev);
+ dst->input = dst->output = 0xdeadbeef;
kmem_cache_free(dst->ops->kmem_cachep, dst);
Great !
You could comment the kmem_cache_free() as well to get better chances to
hit the bug, and maybe start a bisection to find the faulty commit ?
I suspect the bug goes back at least as far as 3.3. And since
I need the NFS patches for this test case, bisecting will be pure hell.
I'll work on some more code instrumentation tomorrow.
One thing that came to mind while I was looking at the code today:
How are the non-ref-counted dst objects used safely? Any chance
that tearing down the IP protocol on a device (or deleting a device)
could delete a dst that is referenced by an skb (and thus crashes as
I see)?
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html