Re: [PATCH v4 01/14] usb: assign default peer ports for root hubs

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

 



On Thu, 6 Feb 2014, Alan Stern wrote:

> It would also be a good idea to verify that peer->peer is NULL before
> doing these assignments.

Now I see that you did this in patch 2.  Might as well do it in patch 
1 instead.

> > +	spin_lock(&peer_lock);
> > +	if (peer) {
> > +		peer->peer = NULL;
> > +		port_dev->peer = NULL;
> > +		put_device(&port_dev->dev);
> > +		put_device(&peer->dev);
> > +	}
> > +	spin_unlock(&peer_lock);
> 
> This was added in the wrong place; it should go in
> usb_port_device_release.  The way things are now, this code won't get
> executed if the device_add call fails.

Oops -- that first sentence was wrong.  If the code is moved to
usb_port_device_release then the release routine will never be called,
because of the circular references.  So it has to stay here.

This means that you have to copy this code into the failure path in 
usb_hub_create_port_device.  Or put it in a little subroutine that gets 
called from both places.

Alan Stern

--
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