diff options
author | Eric Dumazet <edumazet@google.com> | 2013-08-01 11:43:08 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-08-01 12:49:28 -0700 |
commit | 376c7311bdb6efea3322310333576a04d73fbe4c (patch) | |
tree | 7f3218e1bc7cfbda553714a4d2c82c0eeb02d3be | |
parent | 46b3a421903aa2a4bc9731ca4663cee3ea869dab (diff) |
net: add a temporary sanity check in skb_orphan()
David suggested to add a BUG_ON() to catch if some layer
sets skb->sk pointer without a corresponding destructor.
As skb can sit in a queue, it's mandatory to make sure the
socket cannot disappear, and it's usually done by taking a
reference on the socket, then releasing it from the skb
destructor.
This patch is a follow-up to commit c34a761231b5
("net: skb_orphan() changes") and will be reverted after
catching all possible offenders if any.
Suggested-by: David Miller <davem@davemloft.net>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/skbuff.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index a95547adff2..d48de687c21 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -1809,6 +1809,8 @@ static inline void skb_orphan(struct sk_buff *skb) skb->destructor(skb); skb->destructor = NULL; skb->sk = NULL; + } else { + BUG_ON(skb->sk); } } |