Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: fix __must_check warnings in drivers/usb/core/

Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

+80 -29
+1 -1
drivers/usb/core/devio.c
··· 1359 1359 /* let kernel drivers try to (re)bind to the interface */ 1360 1360 case USBDEVFS_CONNECT: 1361 1361 usb_unlock_device(ps->dev); 1362 - bus_rescan_devices(intf->dev.bus); 1362 + retval = bus_rescan_devices(intf->dev.bus); 1363 1363 usb_lock_device(ps->dev); 1364 1364 break; 1365 1365
+7 -3
drivers/usb/core/driver.c
··· 49 49 u32 idVendor = 0; 50 50 u32 idProduct = 0; 51 51 int fields = 0; 52 + int retval = 0; 52 53 53 54 fields = sscanf(buf, "%x %x", &idVendor, &idProduct); 54 55 if (fields < 2) ··· 69 68 spin_unlock(&usb_drv->dynids.lock); 70 69 71 70 if (get_driver(driver)) { 72 - driver_attach(driver); 71 + retval = driver_attach(driver); 73 72 put_driver(driver); 74 73 } 75 74 75 + if (retval) 76 + return retval; 76 77 return count; 77 78 } 78 79 static DRIVER_ATTR(new_id, S_IWUSR, NULL, store_new_id); ··· 294 291 { 295 292 struct device *dev = &iface->dev; 296 293 struct usb_device *udev = interface_to_usbdev(iface); 294 + int retval = 0; 297 295 298 296 if (dev->driver) 299 297 return -EBUSY; ··· 312 308 * the future device_add() bind it, bypassing probe() 313 309 */ 314 310 if (device_is_registered(dev)) 315 - device_bind_driver(dev); 311 + retval = device_bind_driver(dev); 316 312 317 - return 0; 313 + return retval; 318 314 } 319 315 EXPORT_SYMBOL(usb_driver_claim_interface); 320 316
+22 -8
drivers/usb/core/endpoint.c
··· 207 207 kfree(ep_dev); 208 208 } 209 209 210 - void usb_create_ep_files(struct device *parent, 211 - struct usb_host_endpoint *endpoint, 212 - struct usb_device *udev) 210 + int usb_create_ep_files(struct device *parent, 211 + struct usb_host_endpoint *endpoint, 212 + struct usb_device *udev) 213 213 { 214 214 char name[8]; 215 215 struct ep_device *ep_dev; ··· 242 242 retval = device_register(&ep_dev->dev); 243 243 if (retval) 244 244 goto error; 245 - sysfs_create_group(&ep_dev->dev.kobj, &ep_dev_attr_grp); 245 + retval = sysfs_create_group(&ep_dev->dev.kobj, &ep_dev_attr_grp); 246 + if (retval) 247 + goto error_group; 246 248 247 249 endpoint->ep_dev = ep_dev; 248 250 249 251 /* create the symlink to the old-style "ep_XX" directory */ 250 252 sprintf(name, "ep_%02x", endpoint->desc.bEndpointAddress); 251 - sysfs_create_link(&parent->kobj, &endpoint->ep_dev->dev.kobj, name); 252 - 253 + retval = sysfs_create_link(&parent->kobj, 254 + &endpoint->ep_dev->dev.kobj, name); 255 + if (retval) 256 + goto error_link; 253 257 exit: 254 - return; 258 + return retval; 259 + 260 + error_link: 261 + sysfs_remove_group(&ep_dev->dev.kobj, &ep_dev_attr_grp); 262 + 263 + error_group: 264 + device_unregister(&ep_dev->dev); 265 + endpoint->ep_dev = NULL; 266 + destroy_endpoint_class(); 267 + return retval; 255 268 error: 256 269 kfree(ep_dev); 257 - return; 270 + destroy_endpoint_class(); 271 + return retval; 258 272 } 259 273 260 274 void usb_remove_ep_files(struct usb_host_endpoint *endpoint)
+43 -12
drivers/usb/core/sysfs.c
··· 210 210 .attrs = dev_attrs, 211 211 }; 212 212 213 - void usb_create_sysfs_dev_files (struct usb_device *udev) 213 + int usb_create_sysfs_dev_files(struct usb_device *udev) 214 214 { 215 215 struct device *dev = &udev->dev; 216 + int retval; 216 217 217 - sysfs_create_group(&dev->kobj, &dev_attr_grp); 218 + retval = sysfs_create_group(&dev->kobj, &dev_attr_grp); 219 + if (retval) 220 + return retval; 218 221 219 - if (udev->manufacturer) 220 - device_create_file (dev, &dev_attr_manufacturer); 221 - if (udev->product) 222 - device_create_file (dev, &dev_attr_product); 223 - if (udev->serial) 224 - device_create_file (dev, &dev_attr_serial); 225 - usb_create_ep_files(dev, &udev->ep0, udev); 222 + if (udev->manufacturer) { 223 + retval = device_create_file (dev, &dev_attr_manufacturer); 224 + if (retval) 225 + goto error; 226 + } 227 + if (udev->product) { 228 + retval = device_create_file (dev, &dev_attr_product); 229 + if (retval) 230 + goto error; 231 + } 232 + if (udev->serial) { 233 + retval = device_create_file (dev, &dev_attr_serial); 234 + if (retval) 235 + goto error; 236 + } 237 + retval = usb_create_ep_files(dev, &udev->ep0, udev); 238 + if (retval) 239 + goto error; 240 + return 0; 241 + error: 242 + usb_remove_ep_files(&udev->ep0); 243 + device_remove_file(dev, &dev_attr_manufacturer); 244 + device_remove_file(dev, &dev_attr_product); 245 + device_remove_file(dev, &dev_attr_serial); 246 + return retval; 226 247 } 227 248 228 249 void usb_remove_sysfs_dev_files (struct usb_device *udev) ··· 360 339 usb_remove_ep_files(&iface_desc->endpoint[i]); 361 340 } 362 341 363 - void usb_create_sysfs_intf_files (struct usb_interface *intf) 342 + int usb_create_sysfs_intf_files(struct usb_interface *intf) 364 343 { 365 344 struct usb_device *udev = interface_to_usbdev(intf); 366 345 struct usb_host_interface *alt = intf->cur_altsetting; 346 + int retval; 367 347 368 - sysfs_create_group(&intf->dev.kobj, &intf_attr_grp); 348 + retval = sysfs_create_group(&intf->dev.kobj, &intf_attr_grp); 349 + if (retval) 350 + goto error; 369 351 370 352 if (alt->string == NULL) 371 353 alt->string = usb_cache_string(udev, alt->desc.iInterface); 372 354 if (alt->string) 373 - device_create_file(&intf->dev, &dev_attr_interface); 355 + retval = device_create_file(&intf->dev, &dev_attr_interface); 374 356 usb_create_intf_ep_files(intf, udev); 357 + return 0; 358 + error: 359 + if (alt->string) 360 + device_remove_file(&intf->dev, &dev_attr_interface); 361 + sysfs_remove_group(&intf->dev.kobj, &intf_attr_grp); 362 + usb_remove_intf_ep_files(intf); 363 + return retval; 375 364 } 376 365 377 366 void usb_remove_sysfs_intf_files (struct usb_interface *intf)
+4 -2
drivers/usb/core/usb.c
··· 147 147 struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor) 148 148 { 149 149 struct find_interface_arg argb; 150 + int retval; 150 151 151 152 argb.minor = minor; 152 153 argb.interface = NULL; 153 - driver_for_each_device(&drv->drvwrap.driver, NULL, &argb, 154 - __find_interface); 154 + /* eat the error, it will be in argb.interface */ 155 + retval = driver_for_each_device(&drv->drvwrap.driver, NULL, &argb, 156 + __find_interface); 155 157 return argb.interface; 156 158 } 157 159
+3 -3
drivers/usb/core/usb.h
··· 1 1 /* Functions local to drivers/usb/core/ */ 2 2 3 - extern void usb_create_sysfs_dev_files (struct usb_device *dev); 3 + extern int usb_create_sysfs_dev_files (struct usb_device *dev); 4 4 extern void usb_remove_sysfs_dev_files (struct usb_device *dev); 5 - extern void usb_create_sysfs_intf_files (struct usb_interface *intf); 5 + extern int usb_create_sysfs_intf_files (struct usb_interface *intf); 6 6 extern void usb_remove_sysfs_intf_files (struct usb_interface *intf); 7 - extern void usb_create_ep_files(struct device *parent, struct usb_host_endpoint *endpoint, 7 + extern int usb_create_ep_files(struct device *parent, struct usb_host_endpoint *endpoint, 8 8 struct usb_device *udev); 9 9 extern void usb_remove_ep_files(struct usb_host_endpoint *endpoint); 10 10