diff options
Diffstat (limited to 'drivers/i2c/busses/i2c-viapro.c')
-rw-r--r-- | drivers/i2c/busses/i2c-viapro.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-viapro.c b/drivers/i2c/busses/i2c-viapro.c index c9ce77f13c0e..661ebc7a711e 100644 --- a/drivers/i2c/busses/i2c-viapro.c +++ b/drivers/i2c/busses/i2c-viapro.c | |||
@@ -318,6 +318,10 @@ static int __devinit vt596_probe(struct pci_dev *pdev, | |||
318 | unsigned char temp; | 318 | unsigned char temp; |
319 | int error = -ENODEV; | 319 | int error = -ENODEV; |
320 | 320 | ||
321 | /* driver_data might come from user-space, so check it */ | ||
322 | if (id->driver_data & 1 || id->driver_data > 0xff) | ||
323 | return -EINVAL; | ||
324 | |||
321 | /* Determine the address of the SMBus areas */ | 325 | /* Determine the address of the SMBus areas */ |
322 | if (force_addr) { | 326 | if (force_addr) { |
323 | vt596_smba = force_addr & 0xfff0; | 327 | vt596_smba = force_addr & 0xfff0; |
@@ -455,6 +459,7 @@ static struct pci_driver vt596_driver = { | |||
455 | .name = "vt596_smbus", | 459 | .name = "vt596_smbus", |
456 | .id_table = vt596_ids, | 460 | .id_table = vt596_ids, |
457 | .probe = vt596_probe, | 461 | .probe = vt596_probe, |
462 | .dynids.use_driver_data = 1, | ||
458 | }; | 463 | }; |
459 | 464 | ||
460 | static int __init i2c_vt596_init(void) | 465 | static int __init i2c_vt596_init(void) |