diff options
author | zhengbin <zhengbin13@huawei.com> | 2019-08-13 19:23:12 +0800 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-09-04 07:04:37 -0600 |
commit | 03754ea361826fd477d7824ea75ad9e42df1580d (patch) | |
tree | dbc9da4498d452c697d49b260b871af42cf40be7 /drivers/block | |
parent | d821cce8ac4625ceecabb9c9e2420daaf41d41d8 (diff) | |
download | linux-03754ea361826fd477d7824ea75ad9e42df1580d.tar.gz linux-03754ea361826fd477d7824ea75ad9e42df1580d.tar.bz2 linux-03754ea361826fd477d7824ea75ad9e42df1580d.zip |
paride/pcd: need to check if cd->disk is null in pcd_detect
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>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/paride/pcd.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c index bfca80dde7db..636bfea2de6f 100644 --- a/drivers/block/paride/pcd.c +++ b/drivers/block/paride/pcd.c @@ -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 |