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

From: Salah Triki
Date: Mon Apr 07 2025 - 13:04:16 EST


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