Merged into cifs-2.6.git for-next On Mon, Nov 24, 2014 at 8:36 PM, Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> wrote: > Acked-by: Shirish Pargaonkar <shirishpargaonkar@xxxxxxxxx> > > On Mon, Nov 24, 2014 at 9:53 AM, Sachin Prabhu <sprabhu@xxxxxxxxxx> wrote: >> 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 using the RHEL 7 kernel where the patch fixes the >> issue. >> >> Signed-off-by: Sachin Prabhu <sprabhu@xxxxxxxxxx> >> --- >> fs/cifs/cifsglob.h | 6 +++--- >> fs/cifs/smb2pdu.h | 2 +- >> 2 files changed, 4 insertions(+), 4 deletions(-) >> >> diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h >> index 02a33e5..41ec69d 100644 >> --- a/fs/cifs/cifsglob.h >> +++ b/fs/cifs/cifsglob.h >> @@ -661,16 +661,16 @@ set_credits(struct TCP_Server_Info *server, const int val) >> server->ops->set_credits(server, val); >> } >> >> -static inline __u64 >> +static inline __le64 >> get_next_mid64(struct TCP_Server_Info *server) >> { >> - return server->ops->get_next_mid(server); >> + return cpu_to_le64(server->ops->get_next_mid(server)); >> } >> >> static inline __le16 >> get_next_mid(struct TCP_Server_Info *server) >> { >> - __u16 mid = get_next_mid64(server); >> + __u16 mid = server->ops->get_next_mid(server); >> /* >> * The value in the SMB header should be little endian for easy >> * on-the-wire decoding. >> diff --git a/fs/cifs/smb2pdu.h b/fs/cifs/smb2pdu.h >> index e3188ab..2d4914e 100644 >> --- a/fs/cifs/smb2pdu.h >> +++ b/fs/cifs/smb2pdu.h >> @@ -110,7 +110,7 @@ struct smb2_hdr { >> __le16 CreditRequest; /* CreditResponse */ >> __le32 Flags; >> __le32 NextCommand; >> - __u64 MessageId; /* opaque - so can stay little endian */ >> + __le64 MessageId; >> __le32 ProcessId; >> __u32 TreeId; /* opaque - so do not make little endian */ >> __u64 SessionId; /* opaque - so do not make little endian */ >> -- >> 1.9.3 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-cifs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Thanks, Steve -- To unsubscribe from this list: send the line "unsubscribe linux-cifs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html