From: Doug Oucharek Date: Tue, 4 Sep 2012 19:35:35 +0000 (-0700) Subject: LU-521 lnet: Fix endian issue introduced by change 1338 X-Git-Tag: 2.3.51~120 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=ad173173fe6b67e41c2c232a15c5eb6939836871;p=fs%2Flustre-release.git LU-521 lnet: Fix endian issue introduced by change 1338 In change 1338 done for LU-521, an endian issue was introduced when the magic number for the RPC header was swapped before the body has been swapped. We use the magic number to determine if the body needs swapping. Signed-off-by: Doug Oucharek Change-Id: I0a64ca13dbdc04169d59a1bd531b4877e8736993 Reviewed-on: http://review.whamcloud.com/3831 Reviewed-by: Isaac Huang Tested-by: Hudson Tested-by: Maloo Reviewed-by: Liang Zhen Reviewed-by: Oleg Drokin Tested-by: Oleg Drokin --- diff --git a/lnet/selftest/rpc.c b/lnet/selftest/rpc.c index 20358fe..ab7cee6 100644 --- a/lnet/selftest/rpc.c +++ b/lnet/selftest/rpc.c @@ -1267,7 +1267,8 @@ srpc_send_rpc (swi_workitem_t *wi) srpc_unpack_msg_hdr(reply); if (reply->msg_type != type || - reply->msg_magic != SRPC_MSG_MAGIC) { + (reply->msg_magic != SRPC_MSG_MAGIC && + reply->msg_magic != __swab32(SRPC_MSG_MAGIC))) { CWARN ("Bad message from %s: type %u (%d expected)," " magic %u (%d expected).\n", libcfs_id2str(rpc->crpc_dest), diff --git a/lnet/selftest/rpc.h b/lnet/selftest/rpc.h index 25a37d0..accceb7 100644 --- a/lnet/selftest/rpc.h +++ b/lnet/selftest/rpc.h @@ -290,7 +290,9 @@ srpc_unpack_msg_hdr(srpc_msg_t *msg) if (msg->msg_magic == SRPC_MSG_MAGIC) return; /* no flipping needed */ - __swab32s(&msg->msg_magic); + /* We do not swap the magic number here as it is needed to + determine whether the body needs to be swapped. */ + /* __swab32s(&msg->msg_magic); */ __swab32s(&msg->msg_type); __swab32s(&msg->msg_version); __swab32s(&msg->msg_ses_feats);