On Thu, Aug 19, 2021 at 11:12:22AM +0200, Hannes Reinecke wrote: > > diff --git a/drivers/scsi/snic/snic_main.c b/drivers/scsi/snic/snic_main.c > index 14f4ce665e58..65f50057c66e 100644 > --- a/drivers/scsi/snic/snic_main.c > +++ b/drivers/scsi/snic/snic_main.c > @@ -512,6 +512,9 @@ snic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > max_t(u32, SNIC_MIN_IO_REQ, max_ios)); > > snic->max_tag_id = shost->can_queue; > + /* Reserve one reset command */ > + shost->can_queue--; > + snic->tmf_tag_id = shost->can_queue; This is decrementing can_queue before scsi_add_host, which allocates the requests .. > + sc = scsi_host_find_tag(shost, snic->tmf_tag_id); > + if (!sc) { ... but this is expecting a scsi_cmnd / struct request for that tag value. How is that supposed to work?