Re: [PATCH] drivers: char: scx200_gpio: check return value of cdev_add()

From: Greg Kroah-Hartman
Date: Tue Apr 15 2025 - 12:01:51 EST


On Tue, Apr 15, 2025 at 04:30:08PM +0100, Salah Triki wrote:
> On Tue, Apr 15, 2025 at 04:54:38PM +0200, Greg Kroah-Hartman wrote:
> > On Mon, Apr 07, 2025 at 05:56:14PM +0100, Salah Triki wrote:
> > > Check return value of cdev_add() and in case of error unregister the
> > > range of device numbers.
> > >
> > > Signed-off-by: Salah Triki <salah.triki@xxxxxxxxx>
> > > ---
> > > drivers/char/scx200_gpio.c | 6 +++++-
> > > 1 file changed, 5 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/char/scx200_gpio.c b/drivers/char/scx200_gpio.c
> > > index 700e6affea6f..36efcc828e8e 100644
> > > --- a/drivers/char/scx200_gpio.c
> > > +++ b/drivers/char/scx200_gpio.c
> > > @@ -107,10 +107,14 @@ static int __init scx200_gpio_init(void)
> > > }
> > >
> > > cdev_init(&scx200_gpio_cdev, &scx200_gpio_fileops);
> > > - cdev_add(&scx200_gpio_cdev, devid, MAX_PINS);
> > > + rc = cdev_add(&scx200_gpio_cdev, devid, MAX_PINS);
> > > + if (rc)
> > > + goto unregister_chrdev_region;
> > >
> > > return 0; /* succeed */
> > >
> > > +unregister_chrdev_region:
> > > + unregister_chrdev_region(devid, MAX_PINS);
> > > undo_platform_device_add:
> > > platform_device_del(pdev);
> > > undo_malloc:
> > > --
> > > 2.43.0
> > >
> >
> > How was this tested?
> >
>
> I only compiled it.

Please properly test it.