Commit edc9e819 authored by Herbert Xu's avatar Herbert Xu Committed by Arnaldo Carvalho de Melo

[DCCP]: Set socket owner iff packet is not data

  
Here is a complimentary insurance policy for those feeling a bit insecure.
You don't have to accept this.  However, if you do, you can't blame me for
it :)
  
> 1) dccp_transmit_skb sets the owner for all packets except data packets.
  
We can actually verify this by looking at pkt_type.
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@mandriva.com>
parent 48918a4d
...@@ -58,10 +58,21 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb) ...@@ -58,10 +58,21 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
switch (dcb->dccpd_type) { switch (dcb->dccpd_type) {
case DCCP_PKT_DATA: case DCCP_PKT_DATA:
set_ack = 0; set_ack = 0;
/* fall through */
case DCCP_PKT_DATAACK:
break; break;
case DCCP_PKT_SYNC: case DCCP_PKT_SYNC:
case DCCP_PKT_SYNCACK: case DCCP_PKT_SYNCACK:
ackno = dcb->dccpd_seq; ackno = dcb->dccpd_seq;
/* fall through */
default:
/*
* Only data packets should come through with skb->sk
* set.
*/
WARN_ON(skb->sk);
skb_set_owner_w(skb, sk);
break; break;
} }
...@@ -71,12 +82,6 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb) ...@@ -71,12 +82,6 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
skb->h.raw = skb_push(skb, dccp_header_size); skb->h.raw = skb_push(skb, dccp_header_size);
dh = dccp_hdr(skb); dh = dccp_hdr(skb);
/*
* Only data packets should come through with skb->sk set.
*/
if (!skb->sk)
skb_set_owner_w(skb, sk);
/* Build DCCP header and checksum it. */ /* Build DCCP header and checksum it. */
memset(dh, 0, dccp_header_size); memset(dh, 0, dccp_header_size);
dh->dccph_type = dcb->dccpd_type; dh->dccph_type = dcb->dccpd_type;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment