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

Reply via email to