mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 03:50:24 +09:00
smb3: fix ksmbd bigendian bug in oplock break, and move its struct to smbfs_common
[ Upstream commit c7803b05f7 ]
Fix an endian bug in ksmbd for one remaining use of
Persistent/VolatileFid that unnecessarily converted it (it is an
opaque endian field that does not need to be and should not
be converted) in oplock_break for ksmbd, and move the definitions
for the oplock and lease break protocol requests and responses
to fs/smbfs_common/smb2pdu.h
Also move a few more definitions for various protocol requests
that were duplicated (in fs/cifs/smb2pdu.h and fs/ksmbd/smb2pdu.h)
into fs/smbfs_common/smb2pdu.h including:
- various ioctls and reparse structures
- validate negotiate request and response structs
- duplicate extents structs
Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Reviewed-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dc232946d1
commit
e9a3251246
@@ -657,8 +657,8 @@ static void __smb2_oplock_break_noti(struct work_struct *wk)
|
||||
rsp->OplockLevel = SMB2_OPLOCK_LEVEL_NONE;
|
||||
rsp->Reserved = 0;
|
||||
rsp->Reserved2 = 0;
|
||||
rsp->PersistentFid = cpu_to_le64(fp->persistent_id);
|
||||
rsp->VolatileFid = cpu_to_le64(fp->volatile_id);
|
||||
rsp->PersistentFid = fp->persistent_id;
|
||||
rsp->VolatileFid = fp->volatile_id;
|
||||
|
||||
inc_rfc1001_len(work->response_buf, 24);
|
||||
|
||||
|
||||
@@ -7996,8 +7996,8 @@ static void smb20_oplock_break_ack(struct ksmbd_work *work)
|
||||
char req_oplevel = 0, rsp_oplevel = 0;
|
||||
unsigned int oplock_change_type;
|
||||
|
||||
volatile_id = le64_to_cpu(req->VolatileFid);
|
||||
persistent_id = le64_to_cpu(req->PersistentFid);
|
||||
volatile_id = req->VolatileFid;
|
||||
persistent_id = req->PersistentFid;
|
||||
req_oplevel = req->OplockLevel;
|
||||
ksmbd_debug(OPLOCK, "v_id %llu, p_id %llu request oplock level %d\n",
|
||||
volatile_id, persistent_id, req_oplevel);
|
||||
@@ -8092,8 +8092,8 @@ static void smb20_oplock_break_ack(struct ksmbd_work *work)
|
||||
rsp->OplockLevel = rsp_oplevel;
|
||||
rsp->Reserved = 0;
|
||||
rsp->Reserved2 = 0;
|
||||
rsp->VolatileFid = cpu_to_le64(volatile_id);
|
||||
rsp->PersistentFid = cpu_to_le64(persistent_id);
|
||||
rsp->VolatileFid = volatile_id;
|
||||
rsp->PersistentFid = persistent_id;
|
||||
inc_rfc1001_len(work->response_buf, 24);
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user