static void asix_async_cmd_callback(struct urb *urb)
 {
        struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
+       int status = urb->status;
 
-       if (urb->status < 0)
+       if (status < 0)
                printk(KERN_DEBUG "asix_async_cmd_callback() failed with %d",
-                       urb->status);
+                       status);
 
        kfree(req);
        usb_free_urb(urb);
 
        u8 *pkt_start = urb->transfer_buffer;
        struct sk_buff *skb;
        int pkt_len, pkt_offset = 0;
+       int status = urb->status;
 
        if (!catc->is_f5u011) {
                clear_bit(RX_RUNNING, &catc->flags);
                pkt_offset = 2;
        }
 
-       if (urb->status) {
-               dbg("rx_done, status %d, length %d", urb->status, urb->actual_length);
+       if (status) {
+               dbg("rx_done, status %d, length %d", status, urb->actual_length);
                return;
        }
 
 
        if (catc->is_f5u011) {
                if (atomic_read(&catc->recq_sz)) {
-                       int status;
+                       int state;
                        atomic_dec(&catc->recq_sz);
                        dbg("getting extra packet");
                        urb->dev = catc->usbdev;
-                       if ((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
-                               dbg("submit(rx_urb) status %d", status);
+                       if ((state = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
+                               dbg("submit(rx_urb) status %d", state);
                        }
                } else {
                        clear_bit(RX_RUNNING, &catc->flags);
 {
        struct catc *catc = urb->context;
        u8 *data = urb->transfer_buffer;
-       int status;
+       int status = urb->status;
        unsigned int hasdata = 0, linksts = LinkNoChange;
+       int res;
 
        if (!catc->is_f5u011) {
                hasdata = data[1] & 0x80;
                        linksts = LinkBad;
        }
 
-       switch (urb->status) {
+       switch (status) {
        case 0:                 /* success */
                break;
        case -ECONNRESET:       /* unlink */
                return;
        /* -EPIPE:  should clear the halt */
        default:                /* error */
-               dbg("irq_done, status %d, data %02x %02x.", urb->status, data[0], data[1]);
+               dbg("irq_done, status %d, data %02x %02x.", status, data[0], data[1]);
                goto resubmit;
        }
 
                                atomic_inc(&catc->recq_sz);
                } else {
                        catc->rx_urb->dev = catc->usbdev;
-                       if ((status = usb_submit_urb(catc->rx_urb, GFP_ATOMIC)) < 0) {
-                               err("submit(rx_urb) status %d", status);
+                       if ((res = usb_submit_urb(catc->rx_urb, GFP_ATOMIC)) < 0) {
+                               err("submit(rx_urb) status %d", res);
                        }
                } 
        }
 resubmit:
-       status = usb_submit_urb (urb, GFP_ATOMIC);
-       if (status)
+       res = usb_submit_urb (urb, GFP_ATOMIC);
+       if (res)
                err ("can't resubmit intr, %s-%s, status %d",
                                catc->usbdev->bus->bus_name,
-                               catc->usbdev->devpath, status);
+                               catc->usbdev->devpath, res);
 }
 
 /*
 {
        struct catc *catc = urb->context;
        unsigned long flags;
-       int r;
+       int r, status = urb->status;
 
-       if (urb->status == -ECONNRESET) {
+       if (status == -ECONNRESET) {
                dbg("Tx Reset.");
                urb->status = 0;
                catc->netdev->trans_start = jiffies;
                return;
        }
 
-       if (urb->status) {
-               dbg("tx_done, status %d, length %d", urb->status, urb->actual_length);
+       if (status) {
+               dbg("tx_done, status %d, length %d", status, urb->actual_length);
                return;
        }
 
        struct catc *catc = urb->context;
        struct ctrl_queue *q;
        unsigned long flags;
+       int status = urb->status;
 
-       if (urb->status)
-               dbg("ctrl_done, status %d, len %d.", urb->status, urb->actual_length);
+       if (status)
+               dbg("ctrl_done, status %d, len %d.", status, urb->actual_length);
 
        spin_lock_irqsave(&catc->ctrl_lock, flags);
 
 
 static void dm_write_async_callback(struct urb *urb)
 {
        struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
+       int status = urb->status;
 
-       if (urb->status < 0)
+       if (status < 0)
                printk(KERN_DEBUG "dm_write_async_callback() failed with %d\n",
-                      urb->status);
+                      status);
 
        kfree(req);
        usb_free_urb(urb);
 
 {
        struct kaweth_device *kaweth = u->context;
        int act_state;
+       int status = u->status;
 
-       switch (u->status) {
+       switch (status) {
        case 0:                 /* success */
                break;
        case -ECONNRESET:       /* unlink */
 {
        struct kaweth_device *kaweth = urb->context;
        struct net_device *net = kaweth->net;
+       int status = urb->status;
 
        int count = urb->actual_length;
        int count2 = urb->transfer_buffer_length;
 
        struct sk_buff *skb;
 
-       if(unlikely(urb->status == -ECONNRESET || urb->status == -ESHUTDOWN))
+       if(unlikely(status == -ECONNRESET || status == -ESHUTDOWN))
        /* we are killed - set a flag and wake the disconnect handler */
        {
                kaweth->end = 1;
        }
        spin_unlock(&kaweth->device_lock);
 
-       if(urb->status && urb->status != -EREMOTEIO && count != 1) {
+       if(status && status != -EREMOTEIO && count != 1) {
                err("%s RX status: %d count: %d packet_len: %d",
                            net->name,
-                          urb->status,
+                          status,
                           count,
                           (int)pkt_len);
                kaweth_resubmit_rx_urb(kaweth, GFP_ATOMIC);
 {
        struct kaweth_device *kaweth = urb->context;
        struct sk_buff *skb = kaweth->tx_skb;
+       int status = urb->status;
 
-       if (unlikely(urb->status != 0))
-               if (urb->status != -ENOENT)
-                       dbg("%s: TX status %d.", kaweth->net->name, urb->status);
+       if (unlikely(status != 0))
+               if (status != -ENOENT)
+                       dbg("%s: TX status %d.", kaweth->net->name, status);
 
        netif_wake_queue(kaweth->net);
        dev_kfree_skb_irq(skb);
 
 static void mcs7830_async_cmd_callback(struct urb *urb)
 {
        struct usb_ctrlrequest *req = (struct usb_ctrlrequest *)urb->context;
+       int status = urb->status;
 
-       if (urb->status < 0)
+       if (status < 0)
                printk(KERN_DEBUG "%s() failed with %d\n",
-                      __func__, urb->status);
+                      __func__, status);
 
        kfree(req);
        usb_free_urb(urb);
 
 static void ctrl_callback(struct urb *urb)
 {
        pegasus_t *pegasus = urb->context;
+       int status = urb->status;
 
        if (!pegasus)
                return;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                if (pegasus->flags & ETH_REGS_CHANGE) {
                        pegasus->flags &= ~ETH_REGS_CHANGE;
        default:
                if (netif_msg_drv(pegasus) && printk_ratelimit())
                        dev_dbg(&pegasus->intf->dev, "%s, status %d\n",
-                               __func__, urb->status);
+                               __func__, status);
        }
        pegasus->flags &= ~ETH_REGS_CHANGED;
        wake_up(&pegasus->ctrl_wait);
        pegasus_t *pegasus = urb->context;
        struct net_device *net;
        int rx_status, count = urb->actual_length;
+       int status = urb->status;
        u8 *buf = urb->transfer_buffer;
        __u16 pkt_len;
 
        if (!netif_device_present(net) || !netif_running(net))
                return;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -ETIME:
        case -ECONNRESET:
        case -ESHUTDOWN:
                if (netif_msg_ifdown(pegasus))
-                       pr_debug("%s: rx unlink, %d\n", net->name, urb->status);
+                       pr_debug("%s: rx unlink, %d\n", net->name, status);
                return;
        default:
                if (netif_msg_rx_err(pegasus))
-                       pr_debug("%s: RX status %d\n", net->name, urb->status);
+                       pr_debug("%s: RX status %d\n", net->name, status);
                goto goon;
        }
 
 {
        pegasus_t *pegasus = urb->context;
        struct net_device *net;
+       int status = urb->status;
 
        if (!pegasus)
                return;
        if (!netif_device_present(net) || !netif_running(net))
                return;
 
-       switch (urb->status) {
+       switch (status) {
        case -EPIPE:
                /* FIXME schedule_work() to clear the tx halt */
                netif_stop_queue(net);
        case -ECONNRESET:
        case -ESHUTDOWN:
                if (netif_msg_ifdown(pegasus))
-                       pr_debug("%s: tx unlink, %d\n", net->name, urb->status);
+                       pr_debug("%s: tx unlink, %d\n", net->name, status);
                return;
        default:
                if (netif_msg_tx_err(pegasus))
-                       pr_info("%s: TX status %d\n", net->name, urb->status);
+                       pr_info("%s: TX status %d\n", net->name, status);
                /* FALL THROUGH */
        case 0:
                break;
 {
        pegasus_t *pegasus = urb->context;
        struct net_device *net;
-       int status;
+       int res, status = urb->status;
 
        if (!pegasus)
                return;
        net = pegasus->net;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -ECONNRESET:       /* unlink */
                 */
                if (netif_msg_timer(pegasus))
                        pr_debug("%s: intr status %d\n", net->name,
-                                       urb->status);
+                                       status);
        }
 
        if (urb->actual_length >= 6) {
                pegasus->stats.rx_missed_errors += ((d[3] & 0x7f) << 8) | d[4];
        }
 
-       status = usb_submit_urb(urb, GFP_ATOMIC);
-       if (status == -ENODEV)
+       res = usb_submit_urb(urb, GFP_ATOMIC);
+       if (res == -ENODEV)
                netif_device_detach(pegasus->net);
-       if (status && netif_msg_timer(pegasus))
+       if (res && netif_msg_timer(pegasus))
                printk(KERN_ERR "%s: can't resubmit interrupt urb, %d\n",
-                               net->name, status);
+                               net->name, res);
 }
 
 static void pegasus_tx_timeout(struct net_device *net)
 
 static void ctrl_callback(struct urb *urb)
 {
        rtl8150_t *dev;
+       int status = urb->status;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -EINPROGRESS:
        case -ENOENT:
                break;
        default:
-               dev_warn(&urb->dev->dev, "ctrl urb status %d\n", urb->status);
+               dev_warn(&urb->dev->dev, "ctrl urb status %d\n", status);
        }
        dev = urb->context;
        clear_bit(RX_REG_SET, &dev->flags);
        struct sk_buff *skb;
        struct net_device *netdev;
        u16 rx_stat;
-       int status;
+       int status = urb->status;
+       int result;
 
        dev = urb->context;
        if (!dev)
        if (!netif_device_present(netdev))
                return;
 
-       switch (urb->status) {
+       switch (status) {
        case 0:
                break;
        case -ENOENT:
                dev_warn(&urb->dev->dev, "may be reset is needed?..\n");
                goto goon;
        default:
-               dev_warn(&urb->dev->dev, "Rx status %d\n", urb->status);
+               dev_warn(&urb->dev->dev, "Rx status %d\n", status);
                goto goon;
        }
 
 goon:
        usb_fill_bulk_urb(dev->rx_urb, dev->udev, usb_rcvbulkpipe(dev->udev, 1),
                      dev->rx_skb->data, RTL8150_MTU, read_bulk_callback, dev);
-       status = usb_submit_urb(dev->rx_urb, GFP_ATOMIC);
-       if (status == -ENODEV)
+       result = usb_submit_urb(dev->rx_urb, GFP_ATOMIC);
+       if (result == -ENODEV)
                netif_device_detach(dev->netdev);
-       else if (status) {
+       else if (result) {
                set_bit(RX_URB_FAIL, &dev->flags);
                goto resched;
        } else {
 static void write_bulk_callback(struct urb *urb)
 {
        rtl8150_t *dev;
+       int status = urb->status;
 
        dev = urb->context;
        if (!dev)
        dev_kfree_skb_irq(dev->tx_skb);
        if (!netif_device_present(dev->netdev))
                return;
-       if (urb->status)
+       if (status)
                dev_info(&urb->dev->dev, "%s: Tx status %d\n",
-                        dev->netdev->name, urb->status);
+                        dev->netdev->name, status);
        dev->netdev->trans_start = jiffies;
        netif_wake_queue(dev->netdev);
 }
 {
        rtl8150_t *dev;
        __u8 *d;
-       int status;
+       int status = urb->status;
+       int res;
 
        dev = urb->context;
        if (!dev)
                return;
-       switch (urb->status) {
+       switch (status) {
        case 0:                 /* success */
                break;
        case -ECONNRESET:       /* unlink */
        /* -EPIPE:  should clear the halt */
        default:
                dev_info(&urb->dev->dev, "%s: intr status %d\n",
-                        dev->netdev->name, urb->status);
+                        dev->netdev->name, status);
                goto resubmit;
        }
 
        }
 
 resubmit:
-       status = usb_submit_urb (urb, GFP_ATOMIC);
-       if (status == -ENODEV)
+       res = usb_submit_urb (urb, GFP_ATOMIC);
+       if (res == -ENODEV)
                netif_device_detach(dev->netdev);
-       else if (status)
+       else if (res)
                err ("can't resubmit intr, %s-%s/input0, status %d",
                                dev->udev->bus->bus_name,
-                               dev->udev->devpath, status);
+                               dev->udev->devpath, res);
 }
 
 static int rtl8150_suspend(struct usb_interface *intf, pm_message_t message)
 
 {
        struct usb_context *usb_context = urb->context;
        struct usbnet *dev = usb_context->dev;
+       int status = urb->status;
 
-       if (urb->status < 0)
-               devwarn(dev, "async callback failed with %d", urb->status);
+       if (status < 0)
+               devwarn(dev, "async callback failed with %d", status);
 
        complete(&usb_context->notify);