OSDN Git Service

paride/pcd: need to check if cd->disk is null in pcd_detect
authorzhengbin <zhengbin13@huawei.com>
Tue, 13 Aug 2019 11:23:12 +0000 (19:23 +0800)
committerJens Axboe <axboe@kernel.dk>
Wed, 4 Sep 2019 13:04:37 +0000 (07:04 -0600)
If alloc_disk fails in pcd_init_units, cd->disk & pi are empty, we need
to check if cd->disk is null in pcd_detect.

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: zhengbin <zhengbin13@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/block/paride/pcd.c

index bfca80d..636bfea 100644 (file)
@@ -723,9 +723,9 @@ static int pcd_detect(void)
        k = 0;
        if (pcd_drive_count == 0) { /* nothing spec'd - so autoprobe for 1 */
                cd = pcd;
-               if (pi_init(cd->pi, 1, -1, -1, -1, -1, -1, pcd_buffer,
-                           PI_PCD, verbose, cd->name)) {
-                       if (!pcd_probe(cd, -1, id) && cd->disk) {
+               if (cd->disk && pi_init(cd->pi, 1, -1, -1, -1, -1, -1,
+                           pcd_buffer, PI_PCD, verbose, cd->name)) {
+                       if (!pcd_probe(cd, -1, id)) {
                                cd->present = 1;
                                k++;
                        } else
@@ -736,11 +736,13 @@ static int pcd_detect(void)
                        int *conf = *drives[unit];
                        if (!conf[D_PRT])
                                continue;
+                       if (!cd->disk)
+                               continue;
                        if (!pi_init(cd->pi, 0, conf[D_PRT], conf[D_MOD],
                                     conf[D_UNI], conf[D_PRO], conf[D_DLY],
                                     pcd_buffer, PI_PCD, verbose, cd->name)) 
                                continue;
-                       if (!pcd_probe(cd, conf[D_SLV], id) && cd->disk) {
+                       if (!pcd_probe(cd, conf[D_SLV], id)) {
                                cd->present = 1;
                                k++;
                        } else