Re: [PATCH V2 1/3] usb: add kerneldoc for usb_get_hub_child_device function

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

 



On Mon, May 14, 2012 at 09:18:38AM -0700, Greg KH wrote:
> On Mon, May 14, 2012 at 11:25:29PM +0800, Lan Tianyu wrote:
> > Signed-off-by: Lan Tianyu <tianyu.lan@xxxxxxxxx>
> > ---
> >  drivers/usb/core/hub.c |   14 ++++++++++++++
> >  1 files changed, 14 insertions(+), 0 deletions(-)
> > 
> > diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> > index 6bf7124..6f909db 100644
> > --- a/drivers/usb/core/hub.c
> > +++ b/drivers/usb/core/hub.c
> > @@ -4236,6 +4236,20 @@ void usb_queue_reset_device(struct usb_interface *iface)
> >  }
> >  EXPORT_SYMBOL_GPL(usb_queue_reset_device);
> >  
> > +/**
> > + * usb_get_hub_child_device - Get the pointer of child device
> > + * attached to the port which is specified by @port1.
> > + *
> > + * @hdev: USB device belonging to the usb hub
> > + * @port1: port num to indicate which port the child device
> > + *	is attached to.
> > + *
> > + * USB drivers call this function to get hub's child device
> > + * pointer.
> > + *
> > + * Return NULL if input param is invalid and
> > + * child's usb_device pointer if non-NULL.
> > + */
> >  struct usb_device *usb_get_hub_child_device(struct usb_device *hdev,
> 
> The more I look at this function, the worse I like it, here's why:
>   - you don't increment the reference count of the device, what is to
>     keep it from going away from when you find it and the caller uses
>     it?
>   - why all of the checking of the arguments, how, and who, would ever
>     mess up calling this function incorrectly?
>   - Whenever you are using this function, it's in a loop, which
>     indicates that what you really want is a function to iterate over
>     the child devices of a hub, right?  So that is the function you need
>     to write, which will handle the proper locking and incrementing of
>     device reference counts.
> 
> So, care to just delete the function and do this correctly instead?  As
> it is, it seems very fragile.

Because of this, I've reverted the patch that added this function, and
the one prior to this, as this series really isn't that thought out just
yet, and I don't want it into 3.5.

Please take the time to rework these patches and do it correctly.

thanks,

greg k-h
--
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