* ax8817x_set_multicast - use address of dev->data, not contents
* ax8817x_write_async_cmd - free request and urb if submit fails
--- a/drivers/usb/net/usbnet.c  2003-10-20 23:43:22.000000000 -0400
+++ b/drivers/usb/net/usbnet.c  2003-10-21 12:49:13.519752384 -0400
@@ -493,8 +493,11 @@
                             (void *)req, data, size,
                             ax8817x_async_cmd_callback, req);
 
-       if((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0)
+       if((status = usb_submit_urb(urb, GFP_ATOMIC)) < 0) {
                deverr(dev, "Error submitting the control message: status=%d", status);
+               kfree(req);
+               usb_free_urb(urb);
+       }
 }
 
 static void ax8817x_set_multicast(struct net_device *net)
@@ -514,7 +517,7 @@
                 * for our 8 byte filter buffer
                 * to avoid allocating memory that
                 * is tricky to free later */
-               u8 *multi_filter = (u8 *)dev->data;
+               u8 *multi_filter = (u8 *)&dev->data;
                struct dev_mc_list *mc_list = net->mc_list;
                u32 crc_bits;
                int i;

Reply via email to