diff options
author | Jean Delvare <khali@linux-fr.org> | 2008-08-17 15:06:59 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2008-10-20 13:48:35 -0400 |
commit | b41d6cf38e27a940d998d989526a9748de1bf028 (patch) | |
tree | a2ae90005e000d4f9d16637171ff11dd31a4917a /drivers/i2c | |
parent | edbc25caaa492a82e19baa915f1f6b0a0db6554d (diff) |
PCI: Check dynids driver_data value for validity
Only accept dynids whose driver_data value matches one of the driver's
pci_driver_id entries. This prevents the user from accidentally passing
values the drivers do not expect.
Cc: Milton Miller <miltonm@bga.com>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r-- | drivers/i2c/busses/i2c-amd756.c | 4 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-viapro.c | 4 |
2 files changed, 0 insertions, 8 deletions
diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c index a3542b053c8e..424dad6f18d8 100644 --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c | |||
@@ -332,10 +332,6 @@ static int __devinit amd756_probe(struct pci_dev *pdev, | |||
332 | int error; | 332 | int error; |
333 | u8 temp; | 333 | u8 temp; |
334 | 334 | ||
335 | /* driver_data might come from user-space, so check it */ | ||
336 | if (id->driver_data >= ARRAY_SIZE(chipname)) | ||
337 | return -EINVAL; | ||
338 | |||
339 | if (amd756_ioport) { | 335 | if (amd756_ioport) { |
340 | dev_err(&pdev->dev, "Only one device supported " | 336 | dev_err(&pdev->dev, "Only one device supported " |
341 | "(you have a strange motherboard, btw)\n"); | 337 | "(you have a strange motherboard, btw)\n"); |
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c index 2324780484c0..9f194d9efd91 100644 --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c | |||
@@ -332,10 +332,6 @@ static int __devinit vt596_probe(struct pci_dev *pdev, | |||
332 | unsigned char temp; | 332 | unsigned char temp; |
333 | int error = -ENODEV; | 333 | int error = -ENODEV; |
334 | 334 | ||
335 | /* driver_data might come from user-space, so check it */ | ||
336 | if (id->driver_data & 1 || id->driver_data > 0xff) | ||
337 | return -EINVAL; | ||
338 | |||
339 | /* Determine the address of the SMBus areas */ | 335 | /* Determine the address of the SMBus areas */ |
340 | if (force_addr) { | 336 | if (force_addr) { |
341 | vt596_smba = force_addr & 0xfff0; | 337 | vt596_smba = force_addr & 0xfff0; |