[PATCH 1/2] sh: kfr2r09: fix i2c adapter leak on USB gdaget setup
Johan Hovold <[email protected]>
| Newsgroups | gmane.linux.kernel,gmane.linux.ports.sh.devel,gmane.linux.kernel.stable |
|---|---|
| Message-ID | <[email protected]> |
Make sure to drop the reference taken to the I2C adapter (and its
module) when enabling USB gadget mode which prevents the adapter from
ever being deregistered.
Fixes: 5a1c4cb5bc22 ("sh: add r8a66597 usb0 gadget to the kfr2r09 board")
Cc: [email protected] # 2.6.32
Cc: Magnus Damm <[email protected]>
Signed-off-by: Johan Hovold <[email protected]>
---
arch/sh/boards/mach-kfr2r09/setup.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/arch/sh/boards/mach-kfr2r09/setup.c b/arch/sh/boards/mach-kfr2r09/setup.c
index 70236859919d..62af9a9db039 100644
--- a/arch/sh/boards/mach-kfr2r09/setup.c
+++ b/arch/sh/boards/mach-kfr2r09/setup.c
@@ -368,7 +368,7 @@ static int kfr2r09_usb0_gadget_i2c_setup(void)
msg.flags = 0;
ret = i2c_transfer(a, &msg, 1);
if (ret != 1)
- return -ENODEV;
+ goto err_put_adapter;
buf[0] = 0;
msg.addr = 0x09;
@@ -377,7 +377,7 @@ static int kfr2r09_usb0_gadget_i2c_setup(void)
msg.flags = I2C_M_RD;
ret = i2c_transfer(a, &msg, 1);
if (ret != 1)
- return -ENODEV;
+ goto err_put_adapter;
buf[1] = buf[0] | (1 << 1);
buf[0] = 0x13;
@@ -387,9 +387,16 @@ static int kfr2r09_usb0_gadget_i2c_setup(void)
msg.flags = 0;
ret = i2c_transfer(a, &msg, 1);
if (ret != 1)
- return -ENODEV;
+ goto err_put_adapter;
+
+ i2c_put_adapter(a);
return 0;
+
+err_put_adapter:
+ i2c_put_adapter(a);
+
+ return -ENODEV;
}
static int kfr2r09_serial_i2c_setup(void)
--
2.53.0