summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2005-10-14 08:38:49 +0200
committerArnaldo Carvalho de Melo <acme@mandriva.com>2005-10-20 18:25:28 +0200
commitfda0fd6c5b722cc48e904e0daafedca275d332af (patch)
treea575ee8872964b55a8ef64ed9f57f52f26e25979
parent[PATCH] Fix handling spurious page fault for hugetlb region (diff)
downloadlinux-fda0fd6c5b722cc48e904e0daafedca275d332af.tar.xz
linux-fda0fd6c5b722cc48e904e0daafedca275d332af.zip
[DCCP]: Use skb_set_owner_w in dccp_transmit_skb when skb->sk is NULL
David S. Miller <davem@davemloft.net> wrote: > One thing you can probably do for this bug is to mark data packets > explicitly somehow, perhaps in the SKB control block DCCP already > uses for other data. Put some boolean in there, set it true for > data packets. Then change the test in dccp_transmit_skb() as > appropriate to test the boolean flag instead of "skb_cloned(skb)". I agree. In fact we already have that flag, it's called skb->sk. So here is patch to test that instead of skb_cloned(). Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Acked-by: Ian McDonald <imcdnzl@gmail.com> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
-rw-r--r--net/dccp/output.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 4786bdcddcc9..946ec2db75de 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -62,10 +62,8 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
skb->h.raw = skb_push(skb, dccp_header_size);
dh = dccp_hdr(skb);
- /*
- * Data packets are not cloned as they are never retransmitted
- */
- if (skb_cloned(skb))
+
+ if (!skb->sk)
skb_set_owner_w(skb, sk);
/* Build DCCP header and checksum it. */