From ad173173fe6b67e41c2c232a15c5eb6939836871 Mon Sep 17 00:00:00 2001 From: Doug Oucharek Date: Tue, 4 Sep 2012 12:35:35 -0700 Subject: [PATCH] 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 --- lnet/selftest/rpc.c | 3 ++- lnet/selftest/rpc.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) 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); -- 1.8.3.1