Ignore:
Timestamp:
Apr 21, 2017, 4:28:29 AM (4 months ago)
Author:
brainslayer
Message:

update

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.18/drivers/net/usb/catc.c

    r25370 r31885  
    778778        struct catc *catc;
    779779        u8 broadcast[ETH_ALEN];
    780         int i, pktsz;
     780        int pktsz, ret;
    781781
    782782        if (usb_set_interface(usbdev,
     
    813813            (!catc->rx_urb) || (!catc->irq_urb)) {
    814814                dev_err(&intf->dev, "No free urbs available.\n");
    815                 usb_free_urb(catc->ctrl_urb);
    816                 usb_free_urb(catc->tx_urb);
    817                 usb_free_urb(catc->rx_urb);
    818                 usb_free_urb(catc->irq_urb);
    819                 free_netdev(netdev);
    820                 return -ENOMEM;
     815                ret = -ENOMEM;
     816                goto fail_free;
    821817        }
    822818
     
    846842
    847843        if (!catc->is_f5u011) {
     844                u32 *buf;
     845                int i;
     846
    848847                dev_dbg(dev, "Checking memory size\n");
    849848
    850                 i = 0x12345678;
    851                 catc_write_mem(catc, 0x7a80, &i, 4);
    852                 i = 0x87654321;
    853                 catc_write_mem(catc, 0xfa80, &i, 4);
    854                 catc_read_mem(catc, 0x7a80, &i, 4);
     849                buf = kmalloc(4, GFP_KERNEL);
     850                if (!buf) {
     851                        ret = -ENOMEM;
     852                        goto fail_free;
     853                }
     854
     855                *buf = 0x12345678;
     856                catc_write_mem(catc, 0x7a80, buf, 4);
     857                *buf = 0x87654321;
     858                catc_write_mem(catc, 0xfa80, buf, 4);
     859                catc_read_mem(catc, 0x7a80, buf, 4);
    855860         
    856                 switch (i) {
     861                switch (*buf) {
    857862                case 0x12345678:
    858863                        catc_set_reg(catc, TxBufCount, 8);
     
    869874                        break;
    870875                }
     876
     877                kfree(buf);
    871878         
    872879                dev_dbg(dev, "Getting MAC from SEEROM.\n");
     
    915922
    916923        SET_NETDEV_DEV(netdev, &intf->dev);
    917         if (register_netdev(netdev) != 0) {
    918                 usb_set_intfdata(intf, NULL);
    919                 usb_free_urb(catc->ctrl_urb);
    920                 usb_free_urb(catc->tx_urb);
    921                 usb_free_urb(catc->rx_urb);
    922                 usb_free_urb(catc->irq_urb);
    923                 free_netdev(netdev);
    924                 return -EIO;
    925         }
     924        ret = register_netdev(netdev);
     925        if (ret)
     926                goto fail_clear_intfdata;
     927
    926928        return 0;
     929
     930fail_clear_intfdata:
     931        usb_set_intfdata(intf, NULL);
     932fail_free:
     933        usb_free_urb(catc->ctrl_urb);
     934        usb_free_urb(catc->tx_urb);
     935        usb_free_urb(catc->rx_urb);
     936        usb_free_urb(catc->irq_urb);
     937        free_netdev(netdev);
     938        return ret;
    927939}
    928940
Note: See TracChangeset for help on using the changeset viewer.