diff options
author | trasz <trasz@FreeBSD.org> | 2014-02-11 12:01:11 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2014-02-11 12:01:11 +0000 |
commit | 3e89ba0a6aa0b081596853f06081c29c66790242 (patch) | |
tree | 72752a68d5e98dac2e716f07881beaf322b5b5f1 /sys/dev/iscsi/icl.c | |
parent | a92d8da5ad7b149e8fd60a5161b84b2df861825d (diff) | |
download | FreeBSD-src-3e89ba0a6aa0b081596853f06081c29c66790242.zip FreeBSD-src-3e89ba0a6aa0b081596853f06081c29c66790242.tar.gz |
MFC r260389:
Fix a rare "truncated checksums" problem, which manifested like this:
WARNING: icl_pdu_check_data_digest: data digest check failed; got 0xf23b,
should be 0xdb7f23b
Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'sys/dev/iscsi/icl.c')
-rw-r--r-- | sys/dev/iscsi/icl.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/iscsi/icl.c b/sys/dev/iscsi/icl.c index e0e1179..5739028 100644 --- a/sys/dev/iscsi/icl.c +++ b/sys/dev/iscsi/icl.c @@ -324,7 +324,7 @@ icl_pdu_check_header_digest(struct icl_pdu *request, size_t *availablep) } CTASSERT(sizeof(received_digest) == ISCSI_HEADER_DIGEST_SIZE); - memcpy(&received_digest, mtod(m, void *), ISCSI_HEADER_DIGEST_SIZE); + m_copydata(m, 0, ISCSI_HEADER_DIGEST_SIZE, (void *)&received_digest); m_freem(m); *availablep -= ISCSI_HEADER_DIGEST_SIZE; @@ -482,7 +482,7 @@ icl_pdu_check_data_digest(struct icl_pdu *request, size_t *availablep) } CTASSERT(sizeof(received_digest) == ISCSI_DATA_DIGEST_SIZE); - memcpy(&received_digest, mtod(m, void *), ISCSI_DATA_DIGEST_SIZE); + m_copydata(m, 0, ISCSI_DATA_DIGEST_SIZE, (void *)&received_digest); m_freem(m); *availablep -= ISCSI_DATA_DIGEST_SIZE; |