On Saturday 12 August 2006 18:59, Daniel Drake wrote:
> +static int eject_installer(struct usb_interface *intf)
> +{
> + struct usb_device *udev = interface_to_usbdev(intf);
> + struct usb_host_interface *iface_desc = &intf->altsetting[0];
> + struct usb_endpoint_descriptor *endpoint;
> + unsigned char *cmd;
> + u8 bulk_out_ep;
> + int r;
> +
> + /* Find bulk out endpoint */
> + endpoint = &iface_desc->endpoint[1].desc;
> + if ((endpoint->bEndpointAddress & USB_TYPE_MASK) == USB_DIR_OUT &&
> + (endpoint->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
> + USB_ENDPOINT_XFER_BULK) {
> + bulk_out_ep = endpoint->bEndpointAddress;
> + } else {
> + dev_err(&udev->dev,
> + "zd1211rw: Could not find bulk out endpoint\n");
> + return -ENODEV;
> + }
> +
> + cmd = kzalloc(31, GFP_KERNEL);
> + if (cmd == NULL)
> + return -ENODEV;
> +
> + /* USB bulk command block */
> + cmd[0] = 0x55; /* bulk command signature */
> + cmd[1] = 0x53; /* bulk command signature */
> + cmd[2] = 0x42; /* bulk command signature */
> + cmd[3] = 0x43; /* bulk command signature */
> + cmd[14] = 6; /* command length */
> +
> + cmd[15] = 0x1b; /* SCSI command: START STOP UNIT */
> + cmd[19] = 0x2; /* eject disc */
> +
> + dev_info(&udev->dev, "Ejecting virtual installer media...\n");
> + r = usb_bulk_msg(udev, usb_sndbulkpipe(udev, bulk_out_ep),
> + cmd, 31, NULL, 2000);
Does usb_bulk_msg kfree cmd, or are we leaking it here?
> + if (r)
> + return r;
> +
> + /* At this point, the device disconnects and reconnects with the real
> + * ID numbers. */
> +
> + usb_set_intfdata(intf, NULL);
> + return 0;
> +}
--
Greetings Michael.
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html