diff options
author | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-02-18 21:11:07 +0100 |
---|---|---|
committer | Stefan Richter <stefanr@s5r6.in-berlin.de> | 2008-04-18 17:55:29 +0200 |
commit | d2ace29fa44589da51fedc06a67b3f05301f3bfd (patch) | |
tree | 3790d77128ba48194af5ca667ba304d3047c1363 /drivers/ieee1394 | |
parent | 63995d46506a774f5ddd6b51c017d42c3fbfaedb (diff) | |
download | op-kernel-dev-d2ace29fa44589da51fedc06a67b3f05301f3bfd.zip op-kernel-dev-d2ace29fa44589da51fedc06a67b3f05301f3bfd.tar.gz |
ieee1394: prevent device binding of raw1394, video1394, dv1394
These drivers don't need to match any unit_directory type device.
They just need the id_table for module autoloading per module alias.
Not binding any of these drivers allows special-purpose drivers with
similar or same IDs to bind to devices. This currently only benefits
out-of-tree drivers; on the other hand it is in no way detrimental to
in-tree drivers.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Diffstat (limited to 'drivers/ieee1394')
-rw-r--r-- | drivers/ieee1394/dv1394.c | 3 | ||||
-rw-r--r-- | drivers/ieee1394/nodemgr.c | 6 | ||||
-rw-r--r-- | drivers/ieee1394/raw1394.c | 1 | ||||
-rw-r--r-- | drivers/ieee1394/video1394.c | 3 |
4 files changed, 7 insertions, 6 deletions
diff --git a/drivers/ieee1394/dv1394.c b/drivers/ieee1394/dv1394.c index 6572211..8c72f36 100644 --- a/drivers/ieee1394/dv1394.c +++ b/drivers/ieee1394/dv1394.c @@ -2179,8 +2179,7 @@ static struct ieee1394_device_id dv1394_id_table[] = { MODULE_DEVICE_TABLE(ieee1394, dv1394_id_table); static struct hpsb_protocol_driver dv1394_driver = { - .name = "dv1394", - .id_table = dv1394_id_table, + .name = "dv1394", }; diff --git a/drivers/ieee1394/nodemgr.c b/drivers/ieee1394/nodemgr.c index 511e432..70afa37 100644 --- a/drivers/ieee1394/nodemgr.c +++ b/drivers/ieee1394/nodemgr.c @@ -701,7 +701,11 @@ static int nodemgr_bus_match(struct device * dev, struct device_driver * drv) return 0; driver = container_of(drv, struct hpsb_protocol_driver, driver); - for (id = driver->id_table; id->match_flags != 0; id++) { + id = driver->id_table; + if (!id) + return 0; + + for (; id->match_flags != 0; id++) { if ((id->match_flags & IEEE1394_MATCH_VENDOR_ID) && id->vendor_id != ud->vendor_id) continue; diff --git a/drivers/ieee1394/raw1394.c b/drivers/ieee1394/raw1394.c index 37e7e10..3634785 100644 --- a/drivers/ieee1394/raw1394.c +++ b/drivers/ieee1394/raw1394.c @@ -2959,7 +2959,6 @@ MODULE_DEVICE_TABLE(ieee1394, raw1394_id_table); static struct hpsb_protocol_driver raw1394_driver = { .name = "raw1394", - .id_table = raw1394_id_table, }; /******************************************************************************/ diff --git a/drivers/ieee1394/video1394.c b/drivers/ieee1394/video1394.c index bd28adf..cc240b2 100644 --- a/drivers/ieee1394/video1394.c +++ b/drivers/ieee1394/video1394.c @@ -1315,8 +1315,7 @@ static struct ieee1394_device_id video1394_id_table[] = { MODULE_DEVICE_TABLE(ieee1394, video1394_id_table); static struct hpsb_protocol_driver video1394_driver = { - .name = VIDEO1394_DRIVER_NAME, - .id_table = video1394_id_table, + .name = VIDEO1394_DRIVER_NAME, }; |