net/llc: avoid BUG_ON() in skb_orphan()
authorEric Dumazet <edumazet@google.com>
Sun, 12 Feb 2017 22:03:52 +0000 (14:03 -0800)
committerJiri Slaby <jslaby@suse.cz>
Wed, 1 Mar 2017 19:20:37 +0000 (20:20 +0100)
commitc112a93ae0bf3906150d3c7badd8ccc2708ad031
treed13ae33662dfaecbaa28823b2dacd735a8ae7c3c
parent8cf69a631bb3a56b917390e32b95c8e5eef8d6f8
net/llc: avoid BUG_ON() in skb_orphan()

[ Upstream commit 8b74d439e1697110c5e5c600643e823eb1dd0762 ]

It seems nobody used LLC since linux-3.12.

Fortunately fuzzers like syzkaller still know how to run this code,
otherwise it would be no fun.

Setting skb->sk without skb->destructor leads to all kinds of
bugs, we now prefer to be very strict about it.

Ideally here we would use skb_set_owner() but this helper does not exist yet,
only CAN seems to have a private helper for that.

[js] take sock_efree from 62bccb8cdb6905

Fixes: 376c7311bdb6 ("net: add a temporary sanity check in skb_orphan()")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
include/net/sock.h
net/core/sock.c
net/llc/llc_conn.c
net/llc/llc_sap.c