PCI: remove dynids.use_driver_data
authorMilton Miller <miltonm@bga.com>
Thu, 10 Jul 2008 21:29:37 +0000 (16:29 -0500)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Mon, 20 Oct 2008 17:48:34 +0000 (10:48 -0700)
The driver flag dynids.use_driver_data is almost consistently not set,
and causes more problems than it solves.  It was initially intended as a
flag to indicate whether a driver's usage of driver_data had been
carefully inspected and was ready for values from userspace.  That audit
was never done, so most drivers just get a 0 for driver_data when new
IDs are added from userspace via sysfs.  So remove the flag, allowing
drivers to see the data directly (a followon patch validates the passed
driver_data value against what the drivers expect).

Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/i2c/busses/i2c-amd756.c
drivers/i2c/busses/i2c-viapro.c
drivers/pci/pci-driver.c
drivers/scsi/ipr.c
include/linux/pci.h

index 1ea39254dac6e41dbd66fb0252d9016f1b95195d..a3542b053c8e3a91abe9c033433713f050f5e2d9 100644 (file)
@@ -412,7 +412,6 @@ static struct pci_driver amd756_driver = {
        .id_table       = amd756_ids,
        .probe          = amd756_probe,
        .remove         = __devexit_p(amd756_remove),
-       .dynids.use_driver_data = 1,
 };
 
 static int __init amd756_init(void)
index 73dc52e114eb00009d2b87e43250ce03d233ac17..2324780484c07d343bb624d146e1e2531ef223d6 100644 (file)
@@ -483,7 +483,6 @@ static struct pci_driver vt596_driver = {
        .name           = "vt596_smbus",
        .id_table       = vt596_ids,
        .probe          = vt596_probe,
-       .dynids.use_driver_data = 1,
 };
 
 static int __init i2c_vt596_init(void)
index a13f53486114fe27e665bfc7451933d823465ca1..4940a53c56a305f347495777143e2b53e341a054 100644 (file)
@@ -65,8 +65,7 @@ store_new_id(struct device_driver *driver, const char *buf, size_t count)
        dynid->id.subdevice = subdevice;
        dynid->id.class = class;
        dynid->id.class_mask = class_mask;
-       dynid->id.driver_data = pdrv->dynids.use_driver_data ?
-               driver_data : 0UL;
+       dynid->id.driver_data = driver_data;
 
        spin_lock(&pdrv->dynids.lock);
        list_add_tail(&dynid->node, &pdrv->dynids.list);
index d30eb7ba018e6dde266ac53253b95c8687dde8e8..098739deb02e1394dc466f51061284a484245cf8 100644 (file)
@@ -7859,7 +7859,6 @@ static struct pci_driver ipr_driver = {
        .remove = ipr_remove,
        .shutdown = ipr_shutdown,
        .err_handler = &ipr_err_handler,
-       .dynids.use_driver_data = 1
 };
 
 /**
index acf8f24037cd0cd261772e23cbf8d86386318f2d..c989f58d09bffec6ed4e8b27164b20173d78e99a 100644 (file)
@@ -347,7 +347,6 @@ struct pci_bus_region {
 struct pci_dynids {
        spinlock_t lock;            /* protects list, index */
        struct list_head list;      /* for IDs added at runtime */
-       unsigned int use_driver_data:1; /* pci_device_id->driver_data is used */
 };
 
 /* ---------------------------------------------------------------- */