aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2013-08-01 11:43:08 -0700
committerDavid S. Miller <davem@davemloft.net>2013-08-01 12:49:28 -0700
commit376c7311bdb6efea3322310333576a04d73fbe4c (patch)
tree7f3218e1bc7cfbda553714a4d2c82c0eeb02d3be /include
parentipv6: fib6_rules should return exact return value (diff)
downloadlinux-dev-376c7311bdb6efea3322310333576a04d73fbe4c.tar.xz
linux-dev-376c7311bdb6efea3322310333576a04d73fbe4c.zip
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>
Diffstat (limited to 'include')
-rw-r--r--include/linux/skbuff.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index a95547adff25..d48de687c21f 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);
}
}