usb-storage: Use const to reduce object data size
authorJoe Perches <joe@perches.com>
Tue, 18 Feb 2020 00:59:54 +0000 (16:59 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Feb 2020 10:08:52 +0000 (11:08 +0100)
Make structs const to reduce data size ~20KB.

Change function arguments and prototypes as necessary to compile.

$ size (x86-64 defconfig pre)
   text    data     bss     dec     hex filename
  12281   10948     480   23709    5c9d ./drivers/usb/storage/usb.o
    111   10528       8   10647    2997 ./drivers/usb/storage/usual-tables.o

$ size (x86-64 defconfig post)
   text    data     bss     dec     hex filename
  22809     420     480   23709    5c9d drivers/usb/storage/usb.o
  10551       0       0   10551    2937 drivers/usb/storage/usual-tables.o

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/cf13bd2d790ae3afbf5da55ea7bed12e00c5119d.camel@perches.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/storage/usb.c
drivers/usb/storage/usb.h
drivers/usb/storage/usual-tables.c
include/linux/usb_usual.h

index 9a79cd9..94a6472 100644 (file)
@@ -121,12 +121,12 @@ MODULE_PARM_DESC(quirks, "supplemental list of device IDs and their quirks");
        .initFunction = init_function,  \
 }
 
-static struct us_unusual_dev us_unusual_dev_list[] = {
+static const struct us_unusual_dev us_unusual_dev_list[] = {
 #      include "unusual_devs.h"
        { }             /* Terminating entry */
 };
 
-static struct us_unusual_dev for_dynamic_ids =
+static const struct us_unusual_dev for_dynamic_ids =
                USUAL_DEV(USB_SC_SCSI, USB_PR_BULK);
 
 #undef UNUSUAL_DEV
@@ -583,7 +583,7 @@ EXPORT_SYMBOL_GPL(usb_stor_adjust_quirks);
 
 /* Get the unusual_devs entries and the string descriptors */
 static int get_device_info(struct us_data *us, const struct usb_device_id *id,
-               struct us_unusual_dev *unusual_dev)
+               const struct us_unusual_dev *unusual_dev)
 {
        struct usb_device *dev = us->pusb_dev;
        struct usb_interface_descriptor *idesc =
@@ -933,7 +933,7 @@ static unsigned int usb_stor_sg_tablesize(struct usb_interface *intf)
 int usb_stor_probe1(struct us_data **pus,
                struct usb_interface *intf,
                const struct usb_device_id *id,
-               struct us_unusual_dev *unusual_dev,
+               const struct us_unusual_dev *unusual_dev,
                struct scsi_host_template *sht)
 {
        struct Scsi_Host *host;
@@ -1092,7 +1092,7 @@ static struct scsi_host_template usb_stor_host_template;
 static int storage_probe(struct usb_interface *intf,
                         const struct usb_device_id *id)
 {
-       struct us_unusual_dev *unusual_dev;
+       const struct us_unusual_dev *unusual_dev;
        struct us_data *us;
        int result;
        int size;
index 85052cd..5850d62 100644 (file)
@@ -93,7 +93,8 @@ struct us_data {
        struct mutex            dev_mutex;       /* protect pusb_dev */
        struct usb_device       *pusb_dev;       /* this usb_device */
        struct usb_interface    *pusb_intf;      /* this interface */
-       struct us_unusual_dev   *unusual_dev;    /* device-filter entry     */
+       const struct us_unusual_dev   *unusual_dev;
+                                               /* device-filter entry     */
        unsigned long           fflags;          /* fixed flags from filter */
        unsigned long           dflags;          /* dynamic atomic bitflags */
        unsigned int            send_bulk_pipe;  /* cached pipe values */
@@ -185,7 +186,7 @@ extern int usb_stor_post_reset(struct usb_interface *iface);
 extern int usb_stor_probe1(struct us_data **pus,
                struct usb_interface *intf,
                const struct usb_device_id *id,
-               struct us_unusual_dev *unusual_dev,
+               const struct us_unusual_dev *unusual_dev,
                struct scsi_host_template *sht);
 extern int usb_stor_probe2(struct us_data *us);
 extern void usb_stor_disconnect(struct usb_interface *intf);
index cfd12e5..5295128 100644 (file)
@@ -40,7 +40,7 @@
        .driver_info = (flags) \
 }
 
-struct usb_device_id usb_storage_usb_ids[] = {
+const struct usb_device_id usb_storage_usb_ids[] = {
 #      include "unusual_devs.h"
        { }             /* Terminating entry */
 };
@@ -68,7 +68,7 @@ struct ignore_entry {
        .bcdmax = bcdDeviceMax,         \
 }
 
-static struct ignore_entry ignore_ids[] = {
+static const struct ignore_entry ignore_ids[] = {
 #      include "unusual_alauda.h"
 #      include "unusual_cypress.h"
 #      include "unusual_datafab.h"
@@ -92,7 +92,7 @@ int usb_usual_ignore_device(struct usb_interface *intf)
 {
        struct usb_device *udev;
        unsigned vid, pid, bcd;
-       struct ignore_entry *p;
+       const struct ignore_entry *p;
 
        udev = interface_to_usbdev(intf);
        vid = le16_to_cpu(udev->descriptor.idVendor);
index 000a595..4a19ac3 100644 (file)
@@ -92,6 +92,6 @@ enum { US_DO_ALL_FLAGS };
 #include <linux/usb/storage.h>
 
 extern int usb_usual_ignore_device(struct usb_interface *intf);
-extern struct usb_device_id usb_storage_usb_ids[];
+extern const struct usb_device_id usb_storage_usb_ids[];
 
 #endif /* __LINUX_USB_USUAL_H */