GPIO expander failure case did not unlock a mutex (e.g. when the I2C
bus could not be found). Fix that.
Signed-off-by: Bernard Blackham <[EMAIL PROTECTED]>
---
drivers/i2c/chips/gpio_expander_davinci.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
Index: linux-davinci-2.6.24.git/drivers/i2c/chips/gpio_expander_davinci.c
===================================================================
--- linux-davinci-2.6.24.git.orig/drivers/i2c/chips/gpio_expander_davinci.c
2008-03-27 22:20:58.000000000 +0900
+++ linux-davinci-2.6.24.git/drivers/i2c/chips/gpio_expander_davinci.c
2008-03-27 22:22:56.000000000 +0900
@@ -77,7 +77,7 @@ int davinci_i2c_expander_op(u16 client_a
err = davinci_i2c_expander_read(1, &data_to_u35, 0x3A);
if (err < 0)
- return err;
+ goto out;
if (client_addr == 0x3A) {
switch (pin) {
@@ -128,13 +128,14 @@ int davinci_i2c_expander_op(u16 client_a
break;
}
} else {
- printk("Only IO Expander at address 0x3A is suuported\n");
- mutex_unlock(&expander_lock);
- return -EINVAL;
+ printk("Only IO Expander at address 0x3A is supported\n");
+ err = -EINVAL;
+ goto out;
}
err = davinci_i2c_expander_write(1, &data_to_u35, 0x3A);
+out:
mutex_unlock(&expander_lock);
return err;
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source