On Mon, May 30, 2022 at 9:43 AM Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> 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@xxxxxxxxx> > Fixes: 89d947561077 ("sd: Implement support for ZBC device") > Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > --- > 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@xxxxxxxxx> > #ifdef CONFIG_BLK_DEV_ZONED > -- > 2.36.1 >