瀏覽代碼

ieee1394: sbp2: recheck node generation in sbp2_update

While sbp2_update() is doing its duties after a bus reset, another reset
could happen.  Don't accept new requests until the next undisturbed
sbp2_update() or until sbp2_remove().

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Stefan Richter 19 年之前
父節點
當前提交
4fc383c09d
共有 1 個文件被更改,包括 6 次插入5 次删除
  1. 6 5
      drivers/ieee1394/sbp2.c

+ 6 - 5
drivers/ieee1394/sbp2.c

@@ -802,11 +802,12 @@ static int sbp2_update(struct unit_directory *ud)
 	 */
 	sbp2scsi_complete_all_commands(scsi_id, DID_BUS_BUSY);
 
-	/* Make sure we unblock requests (since this is likely after a bus
-	 * reset). */
-	atomic_set(&scsi_id->unfinished_reset, 0);
-	scsi_unblock_requests(scsi_id->scsi_host);
-
+	/* Accept new commands unless there was another bus reset in the
+	 * meantime. */
+	if (hpsb_node_entry_valid(scsi_id->ne)) {
+		atomic_set(&scsi_id->unfinished_reset, 0);
+		scsi_unblock_requests(scsi_id->scsi_host);
+	}
 	return 0;
 }