Fix arc_read_done may try to byteswap undefined data (sparc related)

OpenSolaris onnv-revision:	10839:cf83b553a2ab

Obtained from:	OpenSolaris (Bug ID 6836714)
Approved by:	pjd, delphij (mentor)
MFC after:	3 days
This commit is contained in:
Martin Matuska 2010-06-12 11:28:46 +00:00
parent 726db0af89
commit bc5752e811
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=209101

View File

@ -2687,7 +2687,7 @@ arc_read_done(zio_t *zio)
/* byteswap if necessary */
callback_list = hdr->b_acb;
ASSERT(callback_list != NULL);
if (BP_SHOULD_BYTESWAP(zio->io_bp)) {
if (BP_SHOULD_BYTESWAP(zio->io_bp) && zio->io_error == 0) {
arc_byteswap_func_t *func = BP_GET_LEVEL(zio->io_bp) > 0 ?
byteswap_uint64_array :
dmu_ot[BP_GET_TYPE(zio->io_bp)].ot_byteswap;