[PATCH 1/2] sh: kfr2r09: fix i2c adapter leak on USB gdaget setup

From: Johan Hovold

Date: Fri May 08 2026 - 08:08:55 EST


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: stable@xxxxxxxxxxxxxxx # 2.6.32
Cc: Magnus Damm <damm@xxxxxxxxxx>
Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
---
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