isci: fix remote_device start_io regressions

While reducing indentation commits 7ab92c9e "isci: make a
remote_node_context a proper member of a remote_device", 0879e6a6 "isci:
merge remote_device substates into a single state machine" broke
handling of situations where i/o's successfully started at the port
level need to terminated when the remote_node declines to start the i/o.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c
index 834a3fe..3e567bf 100644
--- a/drivers/scsi/isci/remote_device.c
+++ b/drivers/scsi/isci/remote_device.c
@@ -1157,10 +1157,8 @@
 			return status;
 
 		status = scic_sds_remote_node_context_start_io(&sci_dev->rnc, request);
-		if (status != SCI_SUCCESS)
-			return status;
-
-		status = request->state_handlers->start_handler(request);
+		if (status == SCI_SUCCESS)
+			status = request->state_handlers->start_handler(request);
 
 		scic_sds_remote_device_start_request(sci_dev, request, status);
 	} else
@@ -1302,16 +1300,17 @@
 
 	status = scic_sds_remote_node_context_start_io(&sci_dev->rnc, sci_req);
 	if (status != SCI_SUCCESS)
-		return status;
+		goto out;
 
 	status = scic_sds_request_start(sci_req);
 	if (status != SCI_SUCCESS)
-		return status;
+		goto out;
 
 	sci_dev->working_request = sci_req;
 	sci_base_state_machine_change_state(&sci_dev->state_machine,
 					    SCIC_SDS_SMP_REMOTE_DEVICE_READY_SUBSTATE_CMD);
 
+ out:
 	scic_sds_remote_device_start_request(sci_dev, sci_req, status);
 
 	return status;