net: tracepoint of net_dev_xmit sees freed skb and causes panic
authorKoki Sanagi <sanagi.koki@jp.fujitsu.com>
Mon, 30 May 2011 21:48:34 +0000 (21:48 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Jun 2011 21:06:31 +0000 (14:06 -0700)
commitec764bf083a6ff396234351b51fd236f53c903bf
tree30c0f8232fe10c76651114dea999b93fa2c8ade5
parent2e4ceec4edaef6e903422792de4f7f37de98cec6
net: tracepoint of net_dev_xmit sees freed skb and causes panic

Because there is a possibility that skb is kfree_skb()ed and zero cleared
after ndo_start_xmit, we should not see the contents of skb like skb->len and
skb->dev->name after ndo_start_xmit. But trace_net_dev_xmit does that
and causes panic by NULL pointer dereference.
This patch fixes trace_net_dev_xmit not to see the contents of skb directly.

If you want to reproduce this panic,

1. Get tracepoint of net_dev_xmit on
2. Create 2 guests on KVM
2. Make 2 guests use virtio_net
4. Execute netperf from one to another for a long time as a network burden
5. host will panic(It takes about 30 minutes)

Signed-off-by: Koki Sanagi <sanagi.koki@jp.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/trace/events/net.h
net/core/dev.c