question about drivers/usb/musb/musb_host.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The function musb_urb_enqueue contains the following code:

        if (hep->hcpriv) {
                /* some concurrent activity submitted another urb to hep...
                 * odd, rare, error prone, but legal.
                 */
                kfree(qh);
                ret = 0;
        } else
                ret = musb_schedule(musb, qh,
                                epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK);

        if (ret == 0) {
                urb->hcpriv = qh;
                /* FIXME set urb->start_frame for iso/intr, it's tested in
                 * musb_start_urb(), but otherwise only konicawc cares ...
                 */
        }

Since the then branch of the first if sets ret to 0, the then branch of 
the second branch will be executed, possibly leading to a use of qh after 
it has been freed.  Could it be that the second if is suppoed to beunder 
the else of the first one?

julia
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux