Re: [PATCH v3] scsi: mpi3mr: fix possible crash when setup bsg fail

Bart Van Assche
2025-01-06T18:30:35Z

On 12/26/24 4:18 AM, Guixin Liu wrote:
> diff --git a/drivers/scsi/mpi3mr/mpi3mr_app.c b/drivers/scsi/mpi3mr/mpi3mr_app.c
> index 10b8e4dc64f8..7589f48aebc8 100644
> --- a/drivers/scsi/mpi3mr/mpi3mr_app.c
> +++ b/drivers/scsi/mpi3mr/mpi3mr_app.c
> @@ -2951,6 +2951,7 @@ void mpi3mr_bsg_init(struct mpi3mr_ioc *mrioc)
> .max_hw_sectors = MPI3MR_MAX_APP_XFER_SECTORS,
> .max_segments = MPI3MR_MAX_APP_XFER_SEGMENTS,
> };
> + struct request_queue *q;
>
> device_initialize(bsg_dev);
>
> @@ -2966,14 +2967,17 @@ void mpi3mr_bsg_init(struct mpi3mr_ioc *mrioc)
> return;
> }
>
> - mrioc->bsg_queue = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), &lim,
> + q = bsg_setup_queue(bsg_dev, dev_name(bsg_dev), &lim,
> mpi3mr_bsg_request, NULL, 0);
> - if (IS_ERR(mrioc->bsg_queue)) {
> + if (IS_ERR(q)) {
> ioc_err(mrioc, "%s: bsg registration failed\n",
> dev_name(bsg_dev));
> device_del(bsg_dev);
> put_device(bsg_dev);
> + return;
> }
> +
> + mrioc->bsg_queue = q;
> }

Next time, when including a call stack in the patch description, please
clean it up. This means removing the timestamps, the register dumps and
also the stack frames that start with " ? ". Anyway:

Reviewed-by: Bart Van Assche <bvanassche@acm.org>