linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
@ 2019-03-11  9:39 Mao Wenan
  2019-03-11 12:19 ` Dan Carpenter
  0 siblings, 1 reply; 4+ messages in thread
From: Mao Wenan @ 2019-03-11  9:39 UTC (permalink / raw)
  To: gregkh, jslaby, linux-serial, linux-kernel, kernel-janitors, vz,
	dan.carpenter

Add the missing uart_unregister_driver() and i2c_del_driver() before
return from sc16is7xx_init() in the error handling case.

Signed-off-by: Mao Wenan <maowenan@huawei.com>
Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>
---
 v1->v2: fix compile warning if CONFIG_SERIAL_SC16IS7XX_SPI is not exist.
 v2->v3: create functions for i2c and spi to do error handling as dan carpenter
 suggestion.
 drivers/tty/serial/sc16is7xx.c | 53 ++++++++++++++++++++++++----------
 1 file changed, 38 insertions(+), 15 deletions(-)

diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
index 268098681856..8be3adaf4782 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
@@ -1436,6 +1436,19 @@ static struct spi_driver sc16is7xx_spi_uart_driver = {
 };
 
 MODULE_ALIAS("spi:sc16is7xx");
+
+static int __init register_sc16is7xx_spi(void)
+{
+	return spi_register_driver(&sc16is7xx_spi_uart_driver);
+}
+
+static void __exit unregister_sc16is7xx_spi(void)
+{
+	spi_unregister_driver(&sc16is7xx_spi_uart_driver);
+}
+#else
+static int __init register_sc16is7xx_spi(void) { return 0; }
+static void __exit unregister_sc16is7xx_spi(void) {}
 #endif
 
 #ifdef CONFIG_SERIAL_SC16IS7XX_I2C
@@ -1493,6 +1506,18 @@ static struct i2c_driver sc16is7xx_i2c_uart_driver = {
 	.id_table	= sc16is7xx_i2c_id_table,
 };
 
+static int __init register_sc16is7xx_i2c(void)
+{
+	return i2c_add_driver(&sc16is7xx_i2c_uart_driver);
+}
+
+static void __exit del_sc16is7xx_i2c(void)
+{
+	i2c_del_driver(&sc16is7xx_i2c_uart_driver);
+}
+#else
+static int __init register_sc16is7xx_i2c(void) { return 0; }
+static void __exit del_sc16is7xx_i2c(void) {}
 #endif
 
 static int __init sc16is7xx_init(void)
@@ -1505,34 +1530,32 @@ static int __init sc16is7xx_init(void)
 		return ret;
 	}
 
-#ifdef CONFIG_SERIAL_SC16IS7XX_I2C
-	ret = i2c_add_driver(&sc16is7xx_i2c_uart_driver);
+	ret = register_sc16is7xx_i2c();
 	if (ret < 0) {
 		pr_err("failed to init sc16is7xx i2c --> %d\n", ret);
-		return ret;
+		goto err_i2c;
 	}
-#endif
 
-#ifdef CONFIG_SERIAL_SC16IS7XX_SPI
-	ret = spi_register_driver(&sc16is7xx_spi_uart_driver);
+	ret = register_sc16is7xx_spi();
 	if (ret < 0) {
 		pr_err("failed to init sc16is7xx spi --> %d\n", ret);
-		return ret;
+		goto err_spi;
 	}
-#endif
+
+	return ret;
+
+err_spi:
+	del_sc16is7xx_i2c();
+err_i2c:
+	uart_unregister_driver(&sc16is7xx_uart);
 	return ret;
 }
 module_init(sc16is7xx_init);
 
 static void __exit sc16is7xx_exit(void)
 {
-#ifdef CONFIG_SERIAL_SC16IS7XX_I2C
-	i2c_del_driver(&sc16is7xx_i2c_uart_driver);
-#endif
-
-#ifdef CONFIG_SERIAL_SC16IS7XX_SPI
-	spi_unregister_driver(&sc16is7xx_spi_uart_driver);
-#endif
+	del_sc16is7xx_i2c();
+	unregister_sc16is7xx_spi();
 	uart_unregister_driver(&sc16is7xx_uart);
 }
 module_exit(sc16is7xx_exit);
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
  2019-03-11  9:39 [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init() Mao Wenan
@ 2019-03-11 12:19 ` Dan Carpenter
  2019-03-15 13:56   ` maowenan
  0 siblings, 1 reply; 4+ messages in thread
From: Dan Carpenter @ 2019-03-11 12:19 UTC (permalink / raw)
  To: Mao Wenan; +Cc: gregkh, jslaby, linux-serial, linux-kernel, kernel-janitors, vz

On Mon, Mar 11, 2019 at 05:39:59PM +0800, Mao Wenan wrote:
> Add the missing uart_unregister_driver() and i2c_del_driver() before
> return from sc16is7xx_init() in the error handling case.
> 
> Signed-off-by: Mao Wenan <maowenan@huawei.com>
> Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>

This looks nice.  Thanks!

Reviewed-by: Dan Carpeter <dan.carpenter@oracle.com>

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
  2019-03-11 12:19 ` Dan Carpenter
@ 2019-03-15 13:56   ` maowenan
  2019-03-15 14:19     ` Greg KH
  0 siblings, 1 reply; 4+ messages in thread
From: maowenan @ 2019-03-15 13:56 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: gregkh, jslaby, linux-serial, linux-kernel, kernel-janitors, vz

ping...

On 2019/3/11 20:19, Dan Carpenter wrote:
> On Mon, Mar 11, 2019 at 05:39:59PM +0800, Mao Wenan wrote:
>> Add the missing uart_unregister_driver() and i2c_del_driver() before
>> return from sc16is7xx_init() in the error handling case.
>>
>> Signed-off-by: Mao Wenan <maowenan@huawei.com>
>> Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>
> 
> This looks nice.  Thanks!
> 
> Reviewed-by: Dan Carpeter <dan.carpenter@oracle.com>
> 
> regards,
> dan carpenter
> 
> 
> 


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init()
  2019-03-15 13:56   ` maowenan
@ 2019-03-15 14:19     ` Greg KH
  0 siblings, 0 replies; 4+ messages in thread
From: Greg KH @ 2019-03-15 14:19 UTC (permalink / raw)
  To: maowenan
  Cc: Dan Carpenter, jslaby, linux-serial, linux-kernel, kernel-janitors, vz

On Fri, Mar 15, 2019 at 09:56:07PM +0800, maowenan wrote:
> ping...

For what?  It's the middle of the merge window at the moment, you should
have gotten an email from my scripts saying what happens at this point
in time, right?

greg k-h

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-03-15 14:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-11  9:39 [PATCH serial v3] sc16is7xx: missing unregister/delete driver on error in sc16is7xx_init() Mao Wenan
2019-03-11 12:19 ` Dan Carpenter
2019-03-15 13:56   ` maowenan
2019-03-15 14:19     ` Greg KH

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).