]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/802/psnap.c
[SCTP]: ADD-IP updates the states where ASCONFs can be sent
[linux-2.6-omap-h63xx.git] / net / 802 / psnap.c
index 6e7c2120b83ff6a678ca0e3e33f377b713a711cf..31128cb92a23fc9b3eba377b52705671a3c984c7 100644 (file)
@@ -55,21 +55,28 @@ static int snap_rcv(struct sk_buff *skb, struct net_device *dev,
                .type = __constant_htons(ETH_P_SNAP),
        };
 
+       if (unlikely(!pskb_may_pull(skb, 5)))
+               goto drop;
+
        rcu_read_lock();
-       proto = find_snap_client(skb->h.raw);
+       proto = find_snap_client(skb_transport_header(skb));
        if (proto) {
                /* Pass the frame on. */
-               skb->h.raw  += 5;
+               skb->transport_header += 5;
                skb_pull_rcsum(skb, 5);
                rc = proto->rcvfunc(skb, dev, &snap_packet_type, orig_dev);
-       } else {
-               skb->sk = NULL;
-               kfree_skb(skb);
-               rc = 1;
        }
-
        rcu_read_unlock();
+
+       if (unlikely(!proto))
+               goto drop;
+
+out:
        return rc;
+
+drop:
+       kfree_skb(skb);
+       goto out;
 }
 
 /*