Alexey Khoroshilov
2012-Sep-01 19:49 UTC
[PATCH] virtio: console: fix error handling in init() function
If register_virtio_driver() fails, virtio-ports class is not destroyed. The patch adds error handling of register_virtio_driver(). Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Alexey Khoroshilov <khoroshilov at ispras.ru> --- drivers/char/virtio_console.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c index cdf2f54..060a672 100644 --- a/drivers/char/virtio_console.c +++ b/drivers/char/virtio_console.c @@ -1941,7 +1941,17 @@ static int __init init(void) INIT_LIST_HEAD(&pdrvdata.consoles); INIT_LIST_HEAD(&pdrvdata.portdevs); - return register_virtio_driver(&virtio_console); + err = register_virtio_driver(&virtio_console); + if (err < 0) { + pr_err("Error %d registering virtio driver\n", err); + goto free; + } + return 0; +free: + if (pdrvdata.debugfs_dir) + debugfs_remove_recursive(pdrvdata.debugfs_dir); + class_destroy(pdrvdata.class); + return err; } static void __exit fini(void) -- 1.7.9.5
Amit Shah
2012-Sep-09 20:19 UTC
[PATCH] virtio: console: fix error handling in init() function
Hi Alexey, On (Sat) 01 Sep 2012 [23:49:37], Alexey Khoroshilov wrote:> If register_virtio_driver() fails, virtio-ports class is not destroyed. > The patch adds error handling of register_virtio_driver(). > > Found by Linux Driver Verification project (linuxtesting.org). > > Signed-off-by: Alexey Khoroshilov <khoroshilov at ispras.ru> > --- > drivers/char/virtio_console.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/char/virtio_console.c b/drivers/char/virtio_console.c > index cdf2f54..060a672 100644 > --- a/drivers/char/virtio_console.c > +++ b/drivers/char/virtio_console.c > @@ -1941,7 +1941,17 @@ static int __init init(void) > INIT_LIST_HEAD(&pdrvdata.consoles); > INIT_LIST_HEAD(&pdrvdata.portdevs); > > - return register_virtio_driver(&virtio_console); > + err = register_virtio_driver(&virtio_console); > + if (err < 0) { > + pr_err("Error %d registering virtio driver\n", err); > + goto free; > + } > + return 0; > +free: > + if (pdrvdata.debugfs_dir) > + debugfs_remove_recursive(pdrvdata.debugfs_dir); > + class_destroy(pdrvdata.class); > + return err; > } > > static void __exit fini(void)Patch looks good. Acked-by: Amit Shah <amit.shah at redhat.com> Rusty, please pick this up. Thanks, Amit
Rusty Russell
2012-Sep-10 02:19 UTC
[PATCH] virtio: console: fix error handling in init() function
Amit Shah <amit.shah at redhat.com> writes:> On (Sat) 01 Sep 2012 [23:49:37], Alexey Khoroshilov wrote: >> If register_virtio_driver() fails, virtio-ports class is not destroyed. >> The patch adds error handling of register_virtio_driver(). >> >> Found by Linux Driver Verification project (linuxtesting.org). >> >> Signed-off-by: Alexey Khoroshilov <khoroshilov at ispras.ru> > > Acked-by: Amit Shah <amit.shah at redhat.com> > > Rusty, please pick this up.Thanks for the CC. Applied, Rusty.