I backed this out temporarily - it generated various sparse endian warnings. On Sun, Dec 7, 2014 at 10:57 PM, Steve French <smfrench@xxxxxxxxx> wrote: > 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 -- 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