skbuff: re-add check for NULL skb->head in kfree_skb path
authorFlorian Westphal <fw@strlen.de>
Sun, 23 Jul 2017 17:54:47 +0000 (19:54 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Jul 2017 23:27:08 +0000 (16:27 -0700)
commita28b1b90de8322ecc45d58f1c08da12197dad17f
tree49bc180709a0af274935ef2216ed0041fe04e579
parentba3fb1022154d93fe71ee78e28e195207d511bc0
skbuff: re-add check for NULL skb->head in kfree_skb path

A null check is needed after all.  netlink skbs can have skb->head be
backed by vmalloc.  The netlink destructor vfree()s head, then sets it to
NULL.  We then panic in skb_release_data with a NULL dereference.

Re-add such a test.

Alternative would be to switch to kvfree to free skb->head memory
and remove the special handling in netlink destructor.

Reported-by: kernel test robot <fengguang.wu@intel.com>
Fixes: 06dc75ab06943 ("net: Revert "net: add function to allocate sk_buff head without data area")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c