forked from Minki/linux
[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: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
This commit is contained in:
parent
48918a4dbd
commit
edc9e81917
@ -58,10 +58,21 @@ static int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
|
||||
switch (dcb->dccpd_type) {
|
||||
case DCCP_PKT_DATA:
|
||||
set_ack = 0;
|
||||
/* fall through */
|
||||
case DCCP_PKT_DATAACK:
|
||||
break;
|
||||
|
||||
case DCCP_PKT_SYNC:
|
||||
case DCCP_PKT_SYNCACK:
|
||||
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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
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. */
|
||||
memset(dh, 0, dccp_header_size);
|
||||
dh->dccph_type = dcb->dccpd_type;
|
||||
|
Loading…
Reference in New Issue
Block a user