Hi:

Here is a complementary 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 <[EMAIL PROTECTED]>

Cheers,
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <[EMAIL PROTECTED]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
diff --git a/net/dccp/output.c b/net/dccp/output.c
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -58,10 +58,21 @@ static int dccp_transmit_skb(struct sock
                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
                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;
diff --git a/net/dccp/proto.c b/net/dccp/proto.c

Reply via email to