summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Krafft <krafft@de.ibm.com>2008-02-24 19:03:42 (GMT)
committerJean Delvare <khali@hyperion.delvare>2008-02-24 19:03:42 (GMT)
commit104cb574feb3033299568483a3f68031f47e0d43 (patch)
tree72308d9dd04d42c3f0565f7084d78d607031c46d
parent9e39ffeff6e54ef65832e4eb58059133f1a8aadf (diff)
downloadlinux-104cb574feb3033299568483a3f68031f47e0d43.tar.xz
i2c-pca-isa: Add access check to legacy ioports
When probing i2c-pca-isa writes to legacy ioports, which crashes the kernel if there is no device at that port. This patch adds a check_legacy_ioport call, so probe fails gracefully and thus prevents the oops. Signed-off-by: Christian Krafft <krafft@de.ibm.com> Signed-off-by: Jean Delvare <khali@linux-fr.org>
-rw-r--r--drivers/i2c/busses/i2c-pca-isa.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-pca-isa.c b/drivers/i2c/busses/i2c-pca-isa.c
index 5161aaf..496ee87 100644
--- a/drivers/i2c/busses/i2c-pca-isa.c
+++ b/drivers/i2c/busses/i2c-pca-isa.c
@@ -125,6 +125,13 @@ static int __devinit pca_isa_probe(struct device *dev, unsigned int id)
dev_info(dev, "i/o base %#08lx. irq %d\n", base, irq);
+#ifdef CONFIG_PPC_MERGE
+ if (check_legacy_ioport(base)) {
+ dev_err(dev, "I/O address %#08lx is not available\n", base);
+ goto out;
+ }
+#endif
+
if (!request_region(base, IO_SIZE, "i2c-pca-isa")) {
dev_err(dev, "I/O address %#08lx is in use\n", base);
goto out;