vserver 1.9.3
[linux-2.6.git] / net / atm / br2684.c
index 91a89d3..f7955e6 100644 (file)
@@ -294,7 +294,7 @@ static inline unsigned short br_type_trans(struct sk_buff *skb,
 {
        struct ethhdr *eth;
        unsigned char *rawp;
-       eth = skb->mac.ethernet;
+       eth = eth_hdr(skb);
 
        if (*eth->h_dest & 1) {
                if (memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0)
@@ -558,12 +558,12 @@ Note: we do not have explicit unassign, but look at _push()
        atmvcc->push = br2684_push;
        skb_queue_head_init(&copy);
        skb_migrate(&atmvcc->sk->sk_receive_queue, &copy);
-       while ((skb = skb_dequeue(&copy))) {
+       while ((skb = skb_dequeue(&copy)) != NULL) {
                BRPRIV(skb->dev)->stats.rx_bytes -= skb->len;
                BRPRIV(skb->dev)->stats.rx_packets--;
                br2684_push(atmvcc, skb);
        }
-       (void) try_module_get(THIS_MODULE);
+       __module_get(THIS_MODULE);
        return 0;
     error:
        write_unlock_irq(&devs_lock);