[PATCH -next] tty: serial: max3100: Add missing uart_unregister_driver in max3100_probe

Zheng Bin posted 1 patch 4 years, 1 month ago
drivers/tty/serial/max3100.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH -next] tty: serial: max3100: Add missing uart_unregister_driver in max3100_probe
Posted by Zheng Bin 4 years, 1 month ago
max3100_probe misses a call uart_unregister_driver in error path,
this patch fixes that.

Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
---
 drivers/tty/serial/max3100.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c
index 0b5f21fbb53d..6d34ca2a3f7b 100644
--- a/drivers/tty/serial/max3100.c
+++ b/drivers/tty/serial/max3100.c
@@ -752,6 +752,7 @@ static int max3100_probe(struct spi_device *spi)
 		if (!max3100s[i])
 			break;
 	if (i == MAX_MAX3100) {
+		uart_unregister_driver(&max3100_uart_driver);
 		dev_warn(&spi->dev, "too many MAX3100 chips\n");
 		mutex_unlock(&max3100s_lock);
 		return -ENOMEM;
@@ -759,6 +760,7 @@ static int max3100_probe(struct spi_device *spi)

 	max3100s[i] = kzalloc(sizeof(struct max3100_port), GFP_KERNEL);
 	if (!max3100s[i]) {
+		uart_unregister_driver(&max3100_uart_driver);
 		dev_warn(&spi->dev,
 			 "kmalloc for max3100 structure %d failed!\n", i);
 		mutex_unlock(&max3100s_lock);
--
2.31.1
Re: [PATCH -next] tty: serial: max3100: Add missing uart_unregister_driver in max3100_probe
Posted by Greg KH 4 years ago
On Wed, May 11, 2022 at 03:15:23PM +0800, Zheng Bin wrote:
> max3100_probe misses a call uart_unregister_driver in error path,
> this patch fixes that.
> 
> Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
> ---
>  drivers/tty/serial/max3100.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c
> index 0b5f21fbb53d..6d34ca2a3f7b 100644
> --- a/drivers/tty/serial/max3100.c
> +++ b/drivers/tty/serial/max3100.c
> @@ -752,6 +752,7 @@ static int max3100_probe(struct spi_device *spi)
>  		if (!max3100s[i])
>  			break;
>  	if (i == MAX_MAX3100) {
> +		uart_unregister_driver(&max3100_uart_driver);
>  		dev_warn(&spi->dev, "too many MAX3100 chips\n");
>  		mutex_unlock(&max3100s_lock);
>  		return -ENOMEM;
> @@ -759,6 +760,7 @@ static int max3100_probe(struct spi_device *spi)
> 
>  	max3100s[i] = kzalloc(sizeof(struct max3100_port), GFP_KERNEL);
>  	if (!max3100s[i]) {
> +		uart_unregister_driver(&max3100_uart_driver);
>  		dev_warn(&spi->dev,
>  			 "kmalloc for max3100 structure %d failed!\n", i);
>  		mutex_unlock(&max3100s_lock);

As Jiri said, this change would break the existing devices that are
registered with this driver.

How did you test this change?  What tool found this?  How was it
verified?

thanks,

greg k-h
Re: [PATCH -next] tty: serial: max3100: Add missing uart_unregister_driver in max3100_probe
Posted by Jiri Slaby 4 years, 1 month ago
On 11. 05. 22, 9:15, Zheng Bin wrote:
> max3100_probe misses a call uart_unregister_driver in error path,
> this patch fixes that.

I believe, that's intentional. Cf. uart_driver_registered.

> Signed-off-by: Zheng Bin <zhengbin13@huawei.com>
> ---
>   drivers/tty/serial/max3100.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c
> index 0b5f21fbb53d..6d34ca2a3f7b 100644
> --- a/drivers/tty/serial/max3100.c
> +++ b/drivers/tty/serial/max3100.c
> @@ -752,6 +752,7 @@ static int max3100_probe(struct spi_device *spi)
>   		if (!max3100s[i])
>   			break;
>   	if (i == MAX_MAX3100) {
> +		uart_unregister_driver(&max3100_uart_driver);
>   		dev_warn(&spi->dev, "too many MAX3100 chips\n");
>   		mutex_unlock(&max3100s_lock);
>   		return -ENOMEM;
> @@ -759,6 +760,7 @@ static int max3100_probe(struct spi_device *spi)
> 
>   	max3100s[i] = kzalloc(sizeof(struct max3100_port), GFP_KERNEL);
>   	if (!max3100s[i]) {
> +		uart_unregister_driver(&max3100_uart_driver);
>   		dev_warn(&spi->dev,
>   			 "kmalloc for max3100 structure %d failed!\n", i);
>   		mutex_unlock(&max3100s_lock);
> --
> 2.31.1
> 


-- 
js
suse labs