usb: core: use kbasename() instead of open-coded variant
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 10 Dec 2015 14:49:14 +0000 (16:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 25 Jan 2016 04:37:47 +0000 (20:37 -0800)
kbasename() helper is dedicated to find a last part of the filename or
pathname. USB core uses open-coded variant of that helper.

Replace some lines of code by kbasename() call.

The current users do not have trailing slash and we are on the safe side to
make such change. I dig a history of the code under question up and found the
patch [1] that brought it along with the same to tty layer. The check for
trailing slash looks like copy'n'paste thing and I consider it as redundant.

[1] http://www.kernel.org/pub/linux/kernel//people/akpm/patches/2.5/2.5.69/2.5.69-mm3/broken-out/linus.patch

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/core/file.c

index ea337a718cc1ca38945d3c42e6d0f75d157083b6..822ced9639aaf67463b359055ee825ff863761ea 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/errno.h>
 #include <linux/rwsem.h>
 #include <linux/slab.h>
+#include <linux/string.h>
 #include <linux/usb.h>
 
 #include "usb.h"
@@ -155,7 +156,6 @@ int usb_register_dev(struct usb_interface *intf,
        int minor_base = class_driver->minor_base;
        int minor;
        char name[20];
-       char *temp;
 
 #ifdef CONFIG_USB_DYNAMIC_MINORS
        /*
@@ -192,14 +192,9 @@ int usb_register_dev(struct usb_interface *intf,
 
        /* create a usb class device for this usb interface */
        snprintf(name, sizeof(name), class_driver->name, minor - minor_base);
-       temp = strrchr(name, '/');
-       if (temp && (temp[1] != '\0'))
-               ++temp;
-       else
-               temp = name;
        intf->usb_dev = device_create(usb_class->class, &intf->dev,
                                      MKDEV(USB_MAJOR, minor), class_driver,
-                                     "%s", temp);
+                                     "%s", kbasename(name));
        if (IS_ERR(intf->usb_dev)) {
                down_write(&minor_rwsem);
                usb_minors[minor] = NULL;