xen-blkfront: plug device number leak in xlblk_init() error path
authorLaszlo Ersek <lersek@redhat.com>
Fri, 7 Oct 2011 19:34:38 +0000 (21:34 +0200)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thu, 13 Oct 2011 13:48:35 +0000 (09:48 -0400)
... though after a failed xenbus_register_frontend() all may be lost.

Acked-by: Ian Campbell <ian.campbell@citrix.com>
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/block/xen-blkfront.c

index 8bf0cb7..773da7d 100644 (file)
@@ -1450,6 +1450,8 @@ static struct xenbus_driver blkfront = {
 
 static int __init xlblk_init(void)
 {
+       int ret;
+
        if (!xen_domain())
                return -ENODEV;
 
@@ -1459,7 +1461,13 @@ static int __init xlblk_init(void)
                return -ENODEV;
        }
 
-       return xenbus_register_frontend(&blkfront);
+       ret = xenbus_register_frontend(&blkfront);
+       if (ret) {
+               unregister_blkdev(XENVBD_MAJOR, DEV_NAME);
+               return ret;
+       }
+
+       return 0;
 }
 module_init(xlblk_init);