diff options
author | Jean Delvare <khali@linux-fr.org> | 2008-08-10 22:56:15 +0200 |
---|---|---|
committer | Jean Delvare <khali@mahadeva.delvare> | 2008-08-10 22:56:15 +0200 |
commit | 399d6b26539d83dd734746dc2292d53fbc5807b2 (patch) | |
tree | 3f13ea26c570dafab9c516179da3342cca697858 /drivers/i2c/busses/i2c-nforce2-s4985.c | |
parent | 796aadeb1b2db9b5d463946766c5bbfd7717158c (diff) | |
download | op-kernel-dev-399d6b26539d83dd734746dc2292d53fbc5807b2.zip op-kernel-dev-399d6b26539d83dd734746dc2292d53fbc5807b2.tar.gz |
i2c: Fix oops on bus multiplexer driver loading
The two I2C bus multiplexer drivers (i2c-amd756-s4882 and
i2c-nforce2-s4985) make use of the bus they want to multiplex before
checking if it is really present. Swap the instructions to test for
presence first. This fixes a oops reported by Ingo Molnar.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Cc: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/i2c/busses/i2c-nforce2-s4985.c')
-rw-r--r-- | drivers/i2c/busses/i2c-nforce2-s4985.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/i2c/busses/i2c-nforce2-s4985.c b/drivers/i2c/busses/i2c-nforce2-s4985.c index d1a4cbc..29015eb 100644 --- a/drivers/i2c/busses/i2c-nforce2-s4985.c +++ b/drivers/i2c/busses/i2c-nforce2-s4985.c @@ -150,6 +150,9 @@ static int __init nforce2_s4985_init(void) int i, error; union i2c_smbus_data ioconfig; + if (!nforce2_smbus) + return -ENODEV; + /* Configure the PCA9556 multiplexer */ ioconfig.byte = 0x00; /* All I/O to output mode */ error = i2c_smbus_xfer(nforce2_smbus, 0x18, 0, I2C_SMBUS_WRITE, 0x03, @@ -161,8 +164,6 @@ static int __init nforce2_s4985_init(void) } /* Unregister physical bus */ - if (!nforce2_smbus) - return -ENODEV; error = i2c_del_adapter(nforce2_smbus); if (error) { dev_err(&nforce2_smbus->dev, "Physical bus removal failed\n"); |