diff options
author | Oliver Hartkopp <socketcan@hartkopp.net> | 2014-01-30 13:11:28 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-01-31 04:25:49 +0400 |
commit | 0ae89beb283a0db5980d1d4781c7d7be2f2810d6 (patch) | |
tree | 70260be9219b03dbc8e96f852a8900db7845cbc9 /net/can/af_can.c | |
parent | 920a0fde5a32fd40b4d3c94ad72f7fc7039db8e3 (diff) | |
download | linux-0ae89beb283a0db5980d1d4781c7d7be2f2810d6.tar.xz |
can: add destructor for self generated skbs
Self generated skbuffs in net/can/bcm.c are setting a skb->sk reference but
no explicit destructor which is enforced since Linux 3.11 with commit
376c7311bdb6 (net: add a temporary sanity check in skb_orphan()).
This patch adds some helper functions to make sure that a destructor is
properly defined when a sock reference is assigned to a CAN related skb.
To create an unshared skb owned by the original sock a common helper function
has been introduced to replace open coded functions to create CAN echo skbs.
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Tested-by: Andre Naujoks <nautsch2@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/can/af_can.c')
-rw-r--r-- | net/can/af_can.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/can/af_can.c b/net/can/af_can.c index d249874a366d..a27f8aad9e99 100644 --- a/net/can/af_can.c +++ b/net/can/af_can.c @@ -57,6 +57,7 @@ #include <linux/skbuff.h> #include <linux/can.h> #include <linux/can/core.h> +#include <linux/can/skb.h> #include <linux/ratelimit.h> #include <net/net_namespace.h> #include <net/sock.h> @@ -290,7 +291,7 @@ int can_send(struct sk_buff *skb, int loop) return -ENOMEM; } - newskb->sk = skb->sk; + can_skb_set_owner(newskb, skb->sk); newskb->ip_summed = CHECKSUM_UNNECESSARY; newskb->pkt_type = PACKET_BROADCAST; } |