summaryrefslogtreecommitdiffstats
path: root/fs/cifs/smb2ops.c
diff options
context:
space:
mode:
authorSachin Prabhu <sprabhu@redhat.com>2014-12-09 17:37:00 +0000
committerSteve French <steve.french@primarydata.com>2014-12-14 14:55:45 -0600
commit9235d09873316d602937b5d45c431fb653f3aed8 (patch)
tree57891955422b96f3226fd913eefcae0d2e1f1611 /fs/cifs/smb2ops.c
parent9ea18f8cab5f1c36cdd0f09717e35ceb48c36a87 (diff)
downloadlinux-0-day-9235d09873316d602937b5d45c431fb653f3aed8.tar.gz
linux-0-day-9235d09873316d602937b5d45c431fb653f3aed8.tar.xz
Convert MessageID in smb2_hdr to LE
We have encountered failures when When testing smb2 mounts on ppc64 machines when using both Samba as well as Windows 2012. On poking around, the problem was determined to be caused by the high endian MessageID passed in the header for smb2. On checking the corresponding MID for smb1 is converted to LE before being sent on the wire. We have tested this patch successfully on a ppc64 machine. Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
Diffstat (limited to 'fs/cifs/smb2ops.c')
-rw-r--r--fs/cifs/smb2ops.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index 93fd0586f9ec6..96b5d40a2ece6 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -176,10 +176,11 @@ smb2_find_mid(struct TCP_Server_Info *server, char *buf)
{
struct mid_q_entry *mid;
struct smb2_hdr *hdr = (struct smb2_hdr *)buf;
+ __u64 wire_mid = le64_to_cpu(hdr->MessageId);
spin_lock(&GlobalMid_Lock);
list_for_each_entry(mid, &server->pending_mid_q, qhead) {
- if ((mid->mid == hdr->MessageId) &&
+ if ((mid->mid == wire_mid) &&
(mid->mid_state == MID_REQUEST_SUBMITTED) &&
(mid->command == hdr->Command)) {
spin_unlock(&GlobalMid_Lock);