summaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
Diffstat (limited to 'src/net')
-rw-r--r--src/net/fcp.c5
-rw-r--r--src/net/tcp/iscsi.c11
2 files changed, 9 insertions, 7 deletions
diff --git a/src/net/fcp.c b/src/net/fcp.c
index 241b54638..9c36a4c72 100644
--- a/src/net/fcp.c
+++ b/src/net/fcp.c
@@ -551,7 +551,6 @@ static int fcpcmd_recv_rsp ( struct fcp_command *fcpcmd,
struct fcp_device *fcpdev = fcpcmd->fcpdev;
struct scsi_cmd *command = &fcpcmd->command;
struct fcp_rsp *rsp = iobuf->data;
- struct scsi_sense *sense;
struct scsi_rsp response;
int rc;
@@ -607,8 +606,8 @@ static int fcpcmd_recv_rsp ( struct fcp_command *fcpcmd,
if ( rsp->flags & FCP_RSP_RESIDUAL_UNDERRUN )
response.overrun = -response.overrun;
}
- if ( ( sense = fcp_rsp_sense_data ( rsp ) ) != NULL )
- memcpy ( &response.sense, sense, sizeof ( response.sense ) );
+ scsi_parse_sense ( fcp_rsp_sense_data ( rsp ),
+ fcp_rsp_sense_data_len ( rsp ), &response.sense );
/* Free buffer before sending response, to minimise
* out-of-memory errors.
diff --git a/src/net/tcp/iscsi.c b/src/net/tcp/iscsi.c
index a6fcd251b..03c6d0f23 100644
--- a/src/net/tcp/iscsi.c
+++ b/src/net/tcp/iscsi.c
@@ -412,11 +412,12 @@ static int iscsi_rx_scsi_response ( struct iscsi_session *iscsi,
= &iscsi->rx_bhs.scsi_response;
struct scsi_rsp rsp;
uint32_t residual_count;
+ size_t data_len;
int rc;
/* Buffer up the PDU data */
if ( ( rc = iscsi_rx_buffered_data ( iscsi, data, len ) ) != 0 ) {
- DBGC ( iscsi, "iSCSI %p could not buffer login response: %s\n",
+ DBGC ( iscsi, "iSCSI %p could not buffer SCSI response: %s\n",
iscsi, strerror ( rc ) );
return rc;
}
@@ -432,9 +433,11 @@ static int iscsi_rx_scsi_response ( struct iscsi_session *iscsi,
} else if ( response->flags & ISCSI_DATA_FLAG_UNDERFLOW ) {
rsp.overrun = -(residual_count);
}
- if ( ISCSI_DATA_LEN ( response->lengths ) )
- memcpy ( &rsp.sense, ( iscsi->rx_buffer + 2 ),
- sizeof ( rsp.sense ) );
+ data_len = ISCSI_DATA_LEN ( response->lengths );
+ if ( data_len ) {
+ scsi_parse_sense ( ( iscsi->rx_buffer + 2 ), ( data_len - 2 ),
+ &rsp.sense );
+ }
iscsi_rx_buffered_data_done ( iscsi );
/* Check for errors */