Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi

Pull SCSI fixes from James Bottomley:
"One target driver fix and one scsi-generic one. The latter is 10 lines
because the problem lock has to be dropped and re-taken around the
call causing the sleep in atomic"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: sg: Do not sleep in atomic context
scsi: target: tcm_loop: Fix segfault in tcm_loop_tpg_address_show()

+12 -1
+9 -1
drivers/scsi/sg.c
··· 2208 2208 write_lock_irqsave(&sfp->rq_list_lock, iflags); 2209 2209 while (!list_empty(&sfp->rq_list)) { 2210 2210 srp = list_first_entry(&sfp->rq_list, Sg_request, entry); 2211 - sg_finish_rem_req(srp); 2212 2211 list_del(&srp->entry); 2212 + write_unlock_irqrestore(&sfp->rq_list_lock, iflags); 2213 + 2214 + sg_finish_rem_req(srp); 2215 + /* 2216 + * sg_rq_end_io() uses srp->parentfp. Hence, only clear 2217 + * srp->parentfp after blk_mq_free_request() has been called. 2218 + */ 2213 2219 srp->parentfp = NULL; 2220 + 2221 + write_lock_irqsave(&sfp->rq_list_lock, iflags); 2214 2222 } 2215 2223 write_unlock_irqrestore(&sfp->rq_list_lock, iflags); 2216 2224
+3
drivers/target/loopback/tcm_loop.c
··· 894 894 struct tcm_loop_tpg, tl_se_tpg); 895 895 struct tcm_loop_hba *tl_hba = tl_tpg->tl_hba; 896 896 897 + if (!tl_hba->sh) 898 + return -ENODEV; 899 + 897 900 return snprintf(page, PAGE_SIZE, "%d:0:%d\n", 898 901 tl_hba->sh->host_no, tl_tpg->tl_tpgt); 899 902 }