Message ID | 20220530014341.115427-2-damien.lemoal@opensource.wdc.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | sd_zbc fixes | expand |
On Mon, May 30, 2022 at 9:43 AM Damien Le Moal <damien.lemoal@opensource.wdc.com> wrote: > > If sd_probe() sees an error before sdkp->device is initialized, > sd_zbc_release_disk() is called, which causes a NULL pointer dereference > when sd_is_zoned() is called. Avoid this by also testing if a scsi disk > device pointer is set in sd_is_zoned(). > > Reported-by: Dongliang Mu <mudongliangabcd@gmail.com> > Fixes: 89d947561077 ("sd: Implement support for ZBC device") > Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> > --- > drivers/scsi/sd.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h > index 2abad54fd23f..b90b96e8834e 100644 > --- a/drivers/scsi/sd.h > +++ b/drivers/scsi/sd.h > @@ -236,7 +236,8 @@ static inline void sd_dif_config_host(struct scsi_disk *disk) > > static inline int sd_is_zoned(struct scsi_disk *sdkp) > { > - return sdkp->zoned == 1 || sdkp->device->type == TYPE_ZBC; > + return sdkp->zoned == 1 || > + (sdkp->device && sdkp->device->type == TYPE_ZBC); > } > Tested-by: Dongliang Mu <mudongliangabcd@gmail.com> > #ifdef CONFIG_BLK_DEV_ZONED > -- > 2.36.1 >
Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
diff --git a/drivers/scsi/sd.h b/drivers/scsi/sd.h index 2abad54fd23f..b90b96e8834e 100644 --- a/drivers/scsi/sd.h +++ b/drivers/scsi/sd.h @@ -236,7 +236,8 @@ static inline void sd_dif_config_host(struct scsi_disk *disk) static inline int sd_is_zoned(struct scsi_disk *sdkp) { - return sdkp->zoned == 1 || sdkp->device->type == TYPE_ZBC; + return sdkp->zoned == 1 || + (sdkp->device && sdkp->device->type == TYPE_ZBC); } #ifdef CONFIG_BLK_DEV_ZONED
If sd_probe() sees an error before sdkp->device is initialized, sd_zbc_release_disk() is called, which causes a NULL pointer dereference when sd_is_zoned() is called. Avoid this by also testing if a scsi disk device pointer is set in sd_is_zoned(). Reported-by: Dongliang Mu <mudongliangabcd@gmail.com> Fixes: 89d947561077 ("sd: Implement support for ZBC device") Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> --- drivers/scsi/sd.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)