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:
"Two simple fixes.

One prevents a soft lockup on some target removal scenarios and the
other prevents us trying to probe the marvell console device, which
causes it to time out and need the bus resetting"

* tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
scsi: fix soft lockup in scsi_remove_target() on module removal
SCSI: Add Marvell configuration device to VPD blacklist

+5 -2
+1
drivers/scsi/scsi_devinfo.c
··· 206 206 {"iRiver", "iFP Mass Driver", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, 207 207 {"LASOUND", "CDX7405", "3.10", BLIST_MAX5LUN | BLIST_SINGLELUN}, 208 208 {"Marvell", "Console", NULL, BLIST_SKIP_VPD_PAGES}, 209 + {"Marvell", "91xx Config", "1.01", BLIST_SKIP_VPD_PAGES}, 209 210 {"MATSHITA", "PD-1", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, 210 211 {"MATSHITA", "DMC-LC5", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36}, 211 212 {"MATSHITA", "DMC-LC40", NULL, BLIST_NOT_LOCKABLE | BLIST_INQUIRY_36},
+4 -2
drivers/scsi/scsi_sysfs.c
··· 1272 1272 void scsi_remove_target(struct device *dev) 1273 1273 { 1274 1274 struct Scsi_Host *shost = dev_to_shost(dev->parent); 1275 - struct scsi_target *starget; 1275 + struct scsi_target *starget, *last_target = NULL; 1276 1276 unsigned long flags; 1277 1277 1278 1278 restart: 1279 1279 spin_lock_irqsave(shost->host_lock, flags); 1280 1280 list_for_each_entry(starget, &shost->__targets, siblings) { 1281 - if (starget->state == STARGET_DEL) 1281 + if (starget->state == STARGET_DEL || 1282 + starget == last_target) 1282 1283 continue; 1283 1284 if (starget->dev.parent == dev || &starget->dev == dev) { 1284 1285 kref_get(&starget->reap_ref); 1286 + last_target = starget; 1285 1287 spin_unlock_irqrestore(shost->host_lock, flags); 1286 1288 __scsi_remove_target(starget); 1287 1289 scsi_target_reap(starget);