* commands!
         */
 
-       hostdata->selecting = NULL;
+       if (list_del_cmd(&hostdata->unissued, cmd)) {
+               cmd->result = DID_RESET << 16;
+               cmd->scsi_done(cmd);
+       }
+
+       if (hostdata->selecting) {
+               hostdata->selecting->result = DID_RESET << 16;
+               complete_cmd(instance, hostdata->selecting);
+               hostdata->selecting = NULL;
+       }
 
        list_for_each_entry(ncmd, &hostdata->disconnected, list) {
                struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
                set_host_byte(cmd, DID_RESET);
                cmd->scsi_done(cmd);
        }
+       INIT_LIST_HEAD(&hostdata->disconnected);
 
        list_for_each_entry(ncmd, &hostdata->autosense, list) {
                struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
                set_host_byte(cmd, DID_RESET);
                cmd->scsi_done(cmd);
        }
+       INIT_LIST_HEAD(&hostdata->autosense);
 
        if (hostdata->connected) {
                set_host_byte(hostdata->connected, DID_RESET);
                hostdata->connected = NULL;
        }
 
-       if (hostdata->sensing) {
-               set_host_byte(hostdata->connected, DID_RESET);
-               complete_cmd(instance, hostdata->sensing);
-               hostdata->sensing = NULL;
-       }
-
        for (i = 0; i < 8; ++i)
                hostdata->busy[i] = 0;
 #ifdef REAL_DMA
 
         * commands!
         */
 
-       hostdata->selecting = NULL;
+       if (list_del_cmd(&hostdata->unissued, cmd)) {
+               cmd->result = DID_RESET << 16;
+               cmd->scsi_done(cmd);
+       }
+
+       if (hostdata->selecting) {
+               hostdata->selecting->result = DID_RESET << 16;
+               complete_cmd(instance, hostdata->selecting);
+               hostdata->selecting = NULL;
+       }
 
        list_for_each_entry(ncmd, &hostdata->disconnected, list) {
                struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
                set_host_byte(cmd, DID_RESET);
                cmd->scsi_done(cmd);
        }
+       INIT_LIST_HEAD(&hostdata->disconnected);
 
        list_for_each_entry(ncmd, &hostdata->autosense, list) {
                struct scsi_cmnd *cmd = NCR5380_to_scmd(ncmd);
                set_host_byte(cmd, DID_RESET);
                cmd->scsi_done(cmd);
        }
+       INIT_LIST_HEAD(&hostdata->autosense);
 
        if (hostdata->connected) {
                set_host_byte(hostdata->connected, DID_RESET);
                hostdata->connected = NULL;
        }
 
-       if (hostdata->sensing) {
-               set_host_byte(hostdata->connected, DID_RESET);
-               complete_cmd(instance, hostdata->sensing);
-               hostdata->sensing = NULL;
-       }
-
 #ifdef SUPPORT_TAGS
        free_all_tags(hostdata);
 #endif