Re: [PATCH v9 04/10] serial: sc16is7xx: refactor GPIO controller registration

From: Greg KH
Date: Mon Jul 31 2023 - 11:56:19 EST


On Tue, Jul 25, 2023 at 10:23:36AM -0400, Hugo Villeneuve wrote:
> From: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>
>
> In preparation for upcoming patch "fix regression with GPIO
> configuration". To facilitate review and make code more modular.

I would much rather the issue be fixed _before_ the code is refactored,
unless it is impossible to fix it without the refactor?

>
> Cc: <stable@xxxxxxxxxxxxxxx> # 6.1.x

What commit id does this fix?

> Signed-off-by: Hugo Villeneuve <hvilleneuve@xxxxxxxxxxxx>
> Reviewed-by: Lech Perczak <lech.perczak@xxxxxxxxxxxxxxx>
> Tested-by: Lech Perczak <lech.perczak@xxxxxxxxxxxxxxx>
> ---
> drivers/tty/serial/sc16is7xx.c | 40 ++++++++++++++++++++--------------
> 1 file changed, 24 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
> index 32d43d00a583..5b0aeef9d534 100644
> --- a/drivers/tty/serial/sc16is7xx.c
> +++ b/drivers/tty/serial/sc16is7xx.c
> @@ -332,6 +332,7 @@ struct sc16is7xx_one {
>
> struct sc16is7xx_port {
> const struct sc16is7xx_devtype *devtype;
> + struct device *dev;

Why is this pointer needed?

Why is it grabbed and yet the reference count is never incremented? Who
owns the reference count and when will it go away?

And what device is this? The parent? Current device? What type of
device is it? And why is it needed?

Using "raw" devices is almost never something a driver should do, they
are only passed into functions by the driver core, but then the driver
should instantly turn them into the "real" structure.


thanks,

greg k-h