These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / block / paride / pcd.c
index 3b7c9f1..9336236 100644 (file)
@@ -221,6 +221,7 @@ static int pcd_busy;                /* request being processed ? */
 static int pcd_sector;         /* address of next requested sector */
 static int pcd_count;          /* number of blocks still to do */
 static char *pcd_buf;          /* buffer for request in progress */
+static void *par_drv;          /* reference of parport driver */
 
 /* kernel glue structures */
 
@@ -690,6 +691,12 @@ static int pcd_detect(void)
        printk("%s: %s version %s, major %d, nice %d\n",
               name, name, PCD_VERSION, major, nice);
 
+       par_drv = pi_register_driver(name);
+       if (!par_drv) {
+               pr_err("failed to register %s driver\n", name);
+               return -1;
+       }
+
        k = 0;
        if (pcd_drive_count == 0) { /* nothing spec'd - so autoprobe for 1 */
                cd = pcd;
@@ -723,6 +730,7 @@ static int pcd_detect(void)
        printk("%s: No CD-ROM drive found\n", name);
        for (unit = 0, cd = pcd; unit < PCD_UNITS; unit++, cd++)
                put_disk(cd->disk);
+       pi_unregister_driver(par_drv);
        return -1;
 }
 
@@ -984,6 +992,7 @@ static void __exit pcd_exit(void)
        }
        blk_cleanup_queue(pcd_queue);
        unregister_blkdev(major, name);
+       pi_unregister_driver(par_drv);
 }
 
 MODULE_LICENSE("GPL");