diff options
| author | Eric Dumazet <edumazet@google.com> | 2017-05-11 15:24:41 -0700 |
|---|---|---|
| committer | Ben Hutchings <ben@decadent.org.uk> | 2017-09-15 18:29:34 +0100 |
| commit | 682f39d1d9c435f5804a94afc6626f4642eaa06c (patch) | |
| tree | 7994f90d73c36c4a8de912ec0e8fcc60a944dc12 /kernel/workqueue_internal.h | |
| parent | 6319dcdaf90db619675df6685dea460352f577dd (diff) | |
netem: fix skb_orphan_partial()
commit f6ba8d33cfbb46df569972e64dbb5bb7e929bfd9 upstream.
I should have known that lowering skb->truesize was dangerous :/
In case packets are not leaving the host via a standard Ethernet device,
but looped back to local sockets, bad things can happen, as reported
by Michael Madsen ( https://bugzilla.kernel.org/show_bug.cgi?id=195713 )
So instead of tweaking skb->truesize, lets change skb->destructor
and keep a reference on the owner socket via its sk_refcnt.
Fixes: f2f872f9272a ("netem: Introduce skb_orphan_partial() helper")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Michael Madsen <mkm@nabto.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.16: drop changes to the preceding comment and the
fast path, which we don't have]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Diffstat (limited to 'kernel/workqueue_internal.h')
0 files changed, 0 insertions, 0 deletions
