[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