Re: [PATCH 2/2] sh: kfr2r09: fix i2c adapter leak on serial console setup

Geert Uytterhoeven <[email protected]> Wed, 24 Jun 2026 10:30:26 +0200
Newsgroups org.kernel.vger.linux-sh,org.kernel.vger.linux-kernel,org.kernel.vger.stable
Message-ID <CAMuHMdUyObfgZye=J5S6JgLsf6StJRUqTmkE2Zo04fyCc-LO0A@mail.gmail.com>
Hi Johan,

On Fri, 8 May 2026 at 14:08, Johan Hovold <[email protected]> wrote:
> Make sure to drop the reference taken to the I2C adapter (and its
> module) when setting up the serial console which prevents the adapter
> from ever being deregistered.
>
> Fixes: e6d8460aca63 ("sh: Improve kfr2r09 serial port setup code")
> Cc: [email protected]      # 2.6.33
> Cc: Magnus Damm <[email protected]>
> Signed-off-by: Johan Hovold <[email protected]>

Thanks for your patch!

> --- a/arch/sh/boards/mach-kfr2r09/setup.c
> +++ b/arch/sh/boards/mach-kfr2r09/setup.c
> @@ -418,7 +418,7 @@ static int kfr2r09_serial_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;
> @@ -427,7 +427,7 @@ static int kfr2r09_serial_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 << 6);
>         buf[0] = 0x13;
> @@ -437,9 +437,16 @@ static int kfr2r09_serial_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;

I case i2c_transfer() returns a negative error code (the other
possible value is zero, right?), you might want to propagate that to
the caller. However, the single caller ignores the return value anyway,
so I guess your patch is fine.

Reviewed-by: Geert Uytterhoeven <[email protected]>

>  }
>  #else
>  static int kfr2r09_usb0_gadget_i2c_setup(void)

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds