ieee1394: sbp2: recheck node generation in sbp2_update
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Mon, 14 Aug 2006 16:46:00 +0000 (18:46 +0200)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Sun, 17 Sep 2006 17:34:33 +0000 (19:34 +0200)
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>
drivers/ieee1394/sbp2.c

index b5bcca36d43ccc1c8dd6b8296cffe00a33ce00d8..5440cd05026894704681c2e1b64ce4d0451a09b3 100644 (file)
@@ -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;
 }