use_sg = !(remaining % 4);
 
        while (remaining) {
+               struct fc_seq *seq = cmd->seq;
+
+               if (!seq) {
+                       pr_debug("%s: Command aborted, xid 0x%x\n",
+                                __func__, ep->xid);
+                       break;
+               }
                if (!mem_len) {
                        sg = sg_next(sg);
                        mem_len = min((size_t)sg->length, remaining);
                        f_ctl |= FC_FC_END_SEQ;
                fc_fill_fc_hdr(fp, FC_RCTL_DD_SOL_DATA, ep->did, ep->sid,
                               FC_TYPE_FCP, f_ctl, fh_off);
-               error = lport->tt.seq_send(lport, cmd->seq, fp);
+               error = lport->tt.seq_send(lport, seq, fp);
                if (error) {
                        /* XXX For now, initiator will retry */
                        pr_err_ratelimited("%s: Failed to send frame %p, "