diff options
author | Christoph Hellwig <hch@lst.de> | 2020-10-07 14:40:09 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2020-10-07 15:55:35 +0200 |
commit | 7370997d48520ad923e8eb4deb59ebf290396202 (patch) | |
tree | 30ef50ddfa727c63a9cd10948c8b007a07259e51 /block/partitions/ibm.c | |
parent | block/scsi-ioctl: Fix kernel-infoleak in scsi_put_cdrom_generic_arg() (diff) | |
download | linux-7370997d48520ad923e8eb4deb59ebf290396202.tar.xz linux-7370997d48520ad923e8eb4deb59ebf290396202.zip |
partitions/ibm: fix non-DASD devices
Don't error out if the dasd_biodasdinfo symbol is not available.
Cc: stable@vger.kernel.org
Fixes: 26d7e28e3820 ("s390/dasd: remove ioctl_by_bdev calls")
Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to '')
-rw-r--r-- | block/partitions/ibm.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/block/partitions/ibm.c b/block/partitions/ibm.c index d6e18df9c53c..4b044e620d35 100644 --- a/block/partitions/ibm.c +++ b/block/partitions/ibm.c @@ -305,8 +305,6 @@ int ibm_partition(struct parsed_partitions *state) if (!disk->fops->getgeo) goto out_exit; fn = symbol_get(dasd_biodasdinfo); - if (!fn) - goto out_exit; blocksize = bdev_logical_block_size(bdev); if (blocksize <= 0) goto out_symbol; @@ -326,7 +324,7 @@ int ibm_partition(struct parsed_partitions *state) geo->start = get_start_sect(bdev); if (disk->fops->getgeo(bdev, geo)) goto out_freeall; - if (fn(disk, info)) { + if (!fn || fn(disk, info)) { kfree(info); info = NULL; } @@ -370,7 +368,8 @@ out_nolab: out_nogeo: kfree(info); out_symbol: - symbol_put(dasd_biodasdinfo); + if (fn) + symbol_put(dasd_biodasdinfo); out_exit: return res; } |