[ofa-general] Re: sg_reset can trigger a NULL pointer dereference in the SRP initiator

Bart Van Assche bart.vanassche at gmail.com
Thu Aug 6 08:38:18 PDT 2009


On Thu, Aug 6, 2009 at 10:30 AM, Boaz Harrosh <bharrosh at panasas.com> wrote:
> [Just out of memory, I've not inspected the code for a long time]
>
> It looks like an srp_request was never allocated for the reset
> command. (since it never went through .queuecommand)
>
> static int srp_find_req(struct srp_target_port *target,
>                        struct scsi_cmnd *scmnd,
>                        struct srp_request **req)
> {
>        if (scmnd->host_scribble == (void *) -1L)
>                return -1;
>
>        *req = &target->req_ring[(long) scmnd->host_scribble];
>
>        return 0;
> }
>
> Specifically scmnd->host_scribble can just be Zero.
> When queues are active that does not matter and a device is found
> since the reset does not really need the scsi_cmnd. But in above
> scenario the queues were never used and the array entry is empty.

Hello Boaz,

Thanks for the info. Do you know by heart which SCSI drivers process
the SG_SCSI_RESET ioctl correctly and that could be used as an example
for fixing the SRP initiator ?

Bart.



More information about the general mailing list