From 51a4ebf1ce62f2681a7a73c1373fd125a609a339 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Mon, 22 Jun 2009 02:25:25 +0000 Subject: [PATCH] --- yaml --- r: 154111 b: refs/heads/master c: d55d87fdff8252d0e2f7c28c2d443aee17e9d70f h: refs/heads/master i: 154109: cb5717d2ae88939fb7f828f767773110a72644e2 154107: 4fbda575edf54e288779940c167ea75f9fb03850 154103: 588e54ea841876169fb65a54dde7b8621266d620 154095: 9c950291a2b483f0ba4a049f549a46b264083433 154079: 236a767b7fbe94f6e8bd0ef1ea5e0978e35abf58 154047: 8b2685fa162d7d8801d283723ca369c0744afe6c 153983: 526025a342424ec5ba6c49983772599d36fd1bfd 153855: ec13d3593320ca67df43434f791b9ff2d76680e0 153599: 031ff737217cc98f495183e2ac2b039a8cc148bd v: v3 --- [refs] | 2 +- trunk/include/net/sctp/sctp.h | 1 + trunk/include/net/sock.h | 2 ++ trunk/net/ax25/ax25_in.c | 3 +-- trunk/net/core/dev.c | 2 -- trunk/net/irda/af_irda.c | 3 --- trunk/net/irda/ircomm/ircomm_lmp.c | 1 + 7 files changed, 6 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 7fd886e3b2e9..cadc29505354 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d5fdd6babcfc2b0e6a8da1acf492a69fb54b4c47 +refs/heads/master: d55d87fdff8252d0e2f7c28c2d443aee17e9d70f diff --git a/trunk/include/net/sctp/sctp.h b/trunk/include/net/sctp/sctp.h index 9f80a7668289..d16a304cbed4 100644 --- a/trunk/include/net/sctp/sctp.h +++ b/trunk/include/net/sctp/sctp.h @@ -448,6 +448,7 @@ static inline void sctp_skb_set_owner_r(struct sk_buff *skb, struct sock *sk) { struct sctp_ulpevent *event = sctp_skb2event(skb); + skb_orphan(skb); skb->sk = sk; skb->destructor = sctp_sock_rfree; atomic_add(event->rmem_len, &sk->sk_rmem_alloc); diff --git a/trunk/include/net/sock.h b/trunk/include/net/sock.h index 570c7a12b54e..7f5c41cc45a9 100644 --- a/trunk/include/net/sock.h +++ b/trunk/include/net/sock.h @@ -1250,6 +1250,7 @@ static inline int sk_has_allocations(const struct sock *sk) static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk) { + skb_orphan(skb); skb->sk = sk; skb->destructor = sock_wfree; /* @@ -1262,6 +1263,7 @@ static inline void skb_set_owner_w(struct sk_buff *skb, struct sock *sk) static inline void skb_set_owner_r(struct sk_buff *skb, struct sock *sk) { + skb_orphan(skb); skb->sk = sk; skb->destructor = sock_rfree; atomic_add(skb->truesize, &sk->sk_rmem_alloc); diff --git a/trunk/net/ax25/ax25_in.c b/trunk/net/ax25/ax25_in.c index 5f1d2107a1dd..de56d3983de0 100644 --- a/trunk/net/ax25/ax25_in.c +++ b/trunk/net/ax25/ax25_in.c @@ -437,8 +437,7 @@ static int ax25_rcv(struct sk_buff *skb, struct net_device *dev, int ax25_kiss_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *ptype, struct net_device *orig_dev) { - skb->sk = NULL; /* Initially we don't know who it's for */ - skb->destructor = NULL; /* Who initializes this, dammit?! */ + skb_orphan(skb); if (!net_eq(dev_net(dev), &init_net)) { kfree_skb(skb); diff --git a/trunk/net/core/dev.c b/trunk/net/core/dev.c index baf2dc13a34a..60b572812278 100644 --- a/trunk/net/core/dev.c +++ b/trunk/net/core/dev.c @@ -2310,8 +2310,6 @@ int netif_receive_skb(struct sk_buff *skb) if (!skb) goto out; - skb_orphan(skb); - type = skb->protocol; list_for_each_entry_rcu(ptype, &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) { diff --git a/trunk/net/irda/af_irda.c b/trunk/net/irda/af_irda.c index 5922febe25c4..cb762c8723ea 100644 --- a/trunk/net/irda/af_irda.c +++ b/trunk/net/irda/af_irda.c @@ -913,9 +913,6 @@ static int irda_accept(struct socket *sock, struct socket *newsock, int flags) /* Clean up the original one to keep it in listen state */ irttp_listen(self->tsap); - /* Wow ! What is that ? Jean II */ - skb->sk = NULL; - skb->destructor = NULL; kfree_skb(skb); sk->sk_ack_backlog--; diff --git a/trunk/net/irda/ircomm/ircomm_lmp.c b/trunk/net/irda/ircomm/ircomm_lmp.c index 67c99d20857f..7ba96618660e 100644 --- a/trunk/net/irda/ircomm/ircomm_lmp.c +++ b/trunk/net/irda/ircomm/ircomm_lmp.c @@ -196,6 +196,7 @@ static int ircomm_lmp_data_request(struct ircomm_cb *self, /* Don't forget to refcount it - see ircomm_tty_do_softint() */ skb_get(skb); + skb_orphan(skb); skb->destructor = ircomm_lmp_flow_control; if ((self->pkt_count++ > 7) && (self->flow_status == FLOW_START)) {