Hi Khan,

On Tue, Apr 04, 2017 at 11:14:33AM -0600, Shuah Khan wrote:
> On 03/30/2017 06:28 PM, Yuyang Du wrote:
> > The commit 0775a9cbc694e8c7 ("usbip: vhci extension: modifications
> > to vhci driver") introduced multiple controllers, but the status
> > of the ports are only extracted from the first status file, fix it.
> 
> Are sure this change is needed? What bug are you fixing? This change
> will impact every single code path that calls usbip_vhci_driver_open()
> 
> It might be sufficient to look at just the first file status in many of
> these cases?
Yes, I'm sure. The 1st status file only has the 1st controller's ports,
but we must have the status of all the ports of all the controllers.

> > 
> > Signed-off-by: Yuyang Du <yuyang...@intel.com>
> > ---
> >  tools/usb/usbip/libsrc/vhci_driver.c | 27 +++++++++++++++++++++------
> >  1 file changed, 21 insertions(+), 6 deletions(-)
> > 
> > diff --git a/tools/usb/usbip/libsrc/vhci_driver.c 
> > b/tools/usb/usbip/libsrc/vhci_driver.c
> > index ccecd47..630b139 100644
> > --- a/tools/usb/usbip/libsrc/vhci_driver.c
> > +++ b/tools/usb/usbip/libsrc/vhci_driver.c
> > @@ -108,18 +108,33 @@ static int parse_status(const char *value)
> >     return 0;
> >  }
> >  
> > +#define MAX_STATUS_NAME 16
> > +
> >  static int refresh_imported_device_list(void)
> >  {
> >     const char *attr_status;
> > +   char status[MAX_STATUS_NAME+1] = "status";
> > +   int i, ret;
> >  
> > -   attr_status = udev_device_get_sysattr_value(vhci_driver->hc_device,
> > -                                          "status");
> > -   if (!attr_status) {
> > -           err("udev_device_get_sysattr_value failed");
> > -           return -1;
> > +   for (i = 0; i < vhci_driver->ncontrollers; i++) {
> > +           if (i > 0)
> > +                   snprintf(status, sizeof(status), "status.%d", i);
> > +
> > +           attr_status = 
> > udev_device_get_sysattr_value(vhci_driver->hc_device,
> > +                                                       status);
> > +           if (!attr_status) {
> > +                   err("udev_device_get_sysattr_value failed");
> > +                   return -1;
> > +           }
> > +
> > +           dbg("controller %d", i);
> > +
> > +           ret = parse_status(attr_status);
> > +           if (ret != 0)
> > +                   return ret;
> 
> usbip_vhci_driver_open() will fail even if one of these fails? Is that
> what you would want?

Ditto.

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

Reply via email to