From: kernel test robot <lkp@intel.com>
To: Ronnie Sahlberg <lsahlber@redhat.com>
Cc: kbuild-all@lists.01.org,
Linux Memory Management List <linux-mm@kvack.org>,
Steve French <stfrench@microsoft.com>
Subject: [linux-next:master 11997/12116] fs/cifs/smb2pdu.c:3967:41: sparse: sparse: incorrect type in assignment (different base types)
Date: Wed, 8 Sep 2021 19:44:23 +0800 [thread overview]
Message-ID: <202109081910.BQrP3ZGN-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 13054 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 999569d59a0aa2509ae4a67ecc266c1134e37e7b
commit: 5c840ceb247ced42df472fff0d952603027eb66c [11997/12116] cifs: Create a new shared file holding smb2 pdu definitions
config: x86_64-randconfig-s021-20210908 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=5c840ceb247ced42df472fff0d952603027eb66c
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 5c840ceb247ced42df472fff0d952603027eb66c
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
fs/cifs/smb2pdu.c:118:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] TreeId @@ got unsigned int const [usertype] tid @@
fs/cifs/smb2pdu.c:118:32: sparse: expected restricted __le32 [usertype] TreeId
fs/cifs/smb2pdu.c:118:32: sparse: got unsigned int const [usertype] tid
fs/cifs/smb2pdu.c:121:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:121:33: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:121:33: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1253:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1253:36: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1253:36: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1561:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1561:28: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1561:28: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1587:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] Suid @@ got restricted __le64 [usertype] SessionId @@
fs/cifs/smb2pdu.c:1587:27: sparse: expected unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1587:27: sparse: got restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1526:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] Suid @@ got restricted __le64 [usertype] SessionId @@
fs/cifs/smb2pdu.c:1526:27: sparse: expected unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1526:27: sparse: got restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1718:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1718:28: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1718:28: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1874:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] tid @@ got restricted __le32 [usertype] TreeId @@
fs/cifs/smb2pdu.c:1874:19: sparse: expected unsigned int [usertype] tid
fs/cifs/smb2pdu.c:1874:19: sparse: got restricted __le32 [usertype] TreeId
>> fs/cifs/smb2pdu.c:3967:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long @@
fs/cifs/smb2pdu.c:3967:41: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:3967:41: sparse: got unsigned long
fs/cifs/smb2pdu.c:3968:48: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] TreeId @@ got unsigned int @@
fs/cifs/smb2pdu.c:3968:48: sparse: expected restricted __le32 [usertype] TreeId
fs/cifs/smb2pdu.c:3968:48: sparse: got unsigned int
vim +3967 fs/cifs/smb2pdu.c
09a4707e763824 Pavel Shilovsky 2012-09-18 3882
09a4707e763824 Pavel Shilovsky 2012-09-18 3883 /*
09a4707e763824 Pavel Shilovsky 2012-09-18 3884 * To form a chain of read requests, any read requests after the first should
09a4707e763824 Pavel Shilovsky 2012-09-18 3885 * have the end_of_chain boolean set to true.
09a4707e763824 Pavel Shilovsky 2012-09-18 3886 */
09a4707e763824 Pavel Shilovsky 2012-09-18 3887 static int
738f9de5cdb917 Pavel Shilovsky 2016-11-23 3888 smb2_new_read_req(void **buf, unsigned int *total_len,
2dabfd5baba641 Long Li 2017-11-07 3889 struct cifs_io_parms *io_parms, struct cifs_readdata *rdata,
2dabfd5baba641 Long Li 2017-11-07 3890 unsigned int remaining_bytes, int request_type)
09a4707e763824 Pavel Shilovsky 2012-09-18 3891 {
09a4707e763824 Pavel Shilovsky 2012-09-18 3892 int rc = -EACCES;
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3893 struct smb2_read_plain_req *req = NULL;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3894 struct smb2_hdr *shdr;
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3895 struct TCP_Server_Info *server = io_parms->server;
09a4707e763824 Pavel Shilovsky 2012-09-18 3896
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3897 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server,
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3898 (void **) &req, total_len);
09a4707e763824 Pavel Shilovsky 2012-09-18 3899 if (rc)
09a4707e763824 Pavel Shilovsky 2012-09-18 3900 return rc;
2dabfd5baba641 Long Li 2017-11-07 3901
2dabfd5baba641 Long Li 2017-11-07 3902 if (server == NULL)
09a4707e763824 Pavel Shilovsky 2012-09-18 3903 return -ECONNABORTED;
09a4707e763824 Pavel Shilovsky 2012-09-18 3904
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3905 shdr = &req->hdr;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3906 shdr->Id.SyncId.ProcessId = cpu_to_le32(io_parms->pid);
09a4707e763824 Pavel Shilovsky 2012-09-18 3907
09a4707e763824 Pavel Shilovsky 2012-09-18 3908 req->PersistentFileId = io_parms->persistent_fid;
09a4707e763824 Pavel Shilovsky 2012-09-18 3909 req->VolatileFileId = io_parms->volatile_fid;
09a4707e763824 Pavel Shilovsky 2012-09-18 3910 req->ReadChannelInfoOffset = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3911 req->ReadChannelInfoLength = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3912 req->Channel = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3913 req->MinimumCount = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3914 req->Length = cpu_to_le32(io_parms->length);
09a4707e763824 Pavel Shilovsky 2012-09-18 3915 req->Offset = cpu_to_le64(io_parms->offset);
d323c24617527f Steve French 2019-02-25 3916
d323c24617527f Steve French 2019-02-25 3917 trace_smb3_read_enter(0 /* xid */,
d323c24617527f Steve French 2019-02-25 3918 io_parms->persistent_fid,
d323c24617527f Steve French 2019-02-25 3919 io_parms->tcon->tid, io_parms->tcon->ses->Suid,
d323c24617527f Steve French 2019-02-25 3920 io_parms->offset, io_parms->length);
bd3dcc6a22a918 Long Li 2017-11-22 3921 #ifdef CONFIG_CIFS_SMB_DIRECT
bd3dcc6a22a918 Long Li 2017-11-22 3922 /*
bd3dcc6a22a918 Long Li 2017-11-22 3923 * If we want to do a RDMA write, fill in and append
bd3dcc6a22a918 Long Li 2017-11-22 3924 * smbd_buffer_descriptor_v1 to the end of read request
bd3dcc6a22a918 Long Li 2017-11-22 3925 */
bb4c0419476bd3 Long Li 2018-04-17 3926 if (server->rdma && rdata && !server->sign &&
bd3dcc6a22a918 Long Li 2017-11-22 3927 rdata->bytes >= server->smbd_conn->rdma_readwrite_threshold) {
bd3dcc6a22a918 Long Li 2017-11-22 3928
bd3dcc6a22a918 Long Li 2017-11-22 3929 struct smbd_buffer_descriptor_v1 *v1;
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3930 bool need_invalidate = server->dialect == SMB30_PROT_ID;
bd3dcc6a22a918 Long Li 2017-11-22 3931
bd3dcc6a22a918 Long Li 2017-11-22 3932 rdata->mr = smbd_register_mr(
bd3dcc6a22a918 Long Li 2017-11-22 3933 server->smbd_conn, rdata->pages,
7cf20bce77581b Long Li 2018-05-30 3934 rdata->nr_pages, rdata->page_offset,
7cf20bce77581b Long Li 2018-05-30 3935 rdata->tailsz, true, need_invalidate);
bd3dcc6a22a918 Long Li 2017-11-22 3936 if (!rdata->mr)
b7972092199f6d Long Li 2019-04-05 3937 return -EAGAIN;
bd3dcc6a22a918 Long Li 2017-11-22 3938
bd3dcc6a22a918 Long Li 2017-11-22 3939 req->Channel = SMB2_CHANNEL_RDMA_V1_INVALIDATE;
bd3dcc6a22a918 Long Li 2017-11-22 3940 if (need_invalidate)
bd3dcc6a22a918 Long Li 2017-11-22 3941 req->Channel = SMB2_CHANNEL_RDMA_V1;
bd3dcc6a22a918 Long Li 2017-11-22 3942 req->ReadChannelInfoOffset =
2026b06e9ce852 Steve French 2018-01-24 3943 cpu_to_le16(offsetof(struct smb2_read_plain_req, Buffer));
bd3dcc6a22a918 Long Li 2017-11-22 3944 req->ReadChannelInfoLength =
2026b06e9ce852 Steve French 2018-01-24 3945 cpu_to_le16(sizeof(struct smbd_buffer_descriptor_v1));
bd3dcc6a22a918 Long Li 2017-11-22 3946 v1 = (struct smbd_buffer_descriptor_v1 *) &req->Buffer[0];
2026b06e9ce852 Steve French 2018-01-24 3947 v1->offset = cpu_to_le64(rdata->mr->mr->iova);
2026b06e9ce852 Steve French 2018-01-24 3948 v1->token = cpu_to_le32(rdata->mr->mr->rkey);
2026b06e9ce852 Steve French 2018-01-24 3949 v1->length = cpu_to_le32(rdata->mr->mr->length);
bd3dcc6a22a918 Long Li 2017-11-22 3950
bd3dcc6a22a918 Long Li 2017-11-22 3951 *total_len += sizeof(*v1) - 1;
bd3dcc6a22a918 Long Li 2017-11-22 3952 }
bd3dcc6a22a918 Long Li 2017-11-22 3953 #endif
09a4707e763824 Pavel Shilovsky 2012-09-18 3954 if (request_type & CHAINED_REQUEST) {
09a4707e763824 Pavel Shilovsky 2012-09-18 3955 if (!(request_type & END_OF_CHAIN)) {
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3956 /* next 8-byte aligned request */
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3957 *total_len = DIV_ROUND_UP(*total_len, 8) * 8;
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3958 shdr->NextCommand = cpu_to_le32(*total_len);
09a4707e763824 Pavel Shilovsky 2012-09-18 3959 } else /* END_OF_CHAIN */
31473fc4f9653b Pavel Shilovsky 2016-10-24 3960 shdr->NextCommand = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3961 if (request_type & RELATED_REQUEST) {
31473fc4f9653b Pavel Shilovsky 2016-10-24 3962 shdr->Flags |= SMB2_FLAGS_RELATED_OPERATIONS;
09a4707e763824 Pavel Shilovsky 2012-09-18 3963 /*
09a4707e763824 Pavel Shilovsky 2012-09-18 3964 * Related requests use info from previous read request
09a4707e763824 Pavel Shilovsky 2012-09-18 3965 * in chain.
09a4707e763824 Pavel Shilovsky 2012-09-18 3966 */
c0d46717b95735 Steve French 2021-05-15 @3967 shdr->SessionId = 0xFFFFFFFFFFFFFFFF;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3968 shdr->Id.SyncId.TreeId = 0xFFFFFFFF;
c0d46717b95735 Steve French 2021-05-15 3969 req->PersistentFileId = 0xFFFFFFFFFFFFFFFF;
c0d46717b95735 Steve French 2021-05-15 3970 req->VolatileFileId = 0xFFFFFFFFFFFFFFFF;
09a4707e763824 Pavel Shilovsky 2012-09-18 3971 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3972 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3973 if (remaining_bytes > io_parms->length)
09a4707e763824 Pavel Shilovsky 2012-09-18 3974 req->RemainingBytes = cpu_to_le32(remaining_bytes);
09a4707e763824 Pavel Shilovsky 2012-09-18 3975 else
09a4707e763824 Pavel Shilovsky 2012-09-18 3976 req->RemainingBytes = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3977
738f9de5cdb917 Pavel Shilovsky 2016-11-23 3978 *buf = req;
09a4707e763824 Pavel Shilovsky 2012-09-18 3979 return rc;
09a4707e763824 Pavel Shilovsky 2012-09-18 3980 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3981
:::::: The code at line 3967 was first introduced by commit
:::::: c0d46717b95735b0eacfddbcca9df37a49de9c7a SMB3: incorrect file id in requests compounded with open
:::::: TO: Steve French <stfrench@microsoft.com>
:::::: CC: Steve French <stfrench@microsoft.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 29996 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [linux-next:master 11997/12116] fs/cifs/smb2pdu.c:3967:41: sparse: sparse: incorrect type in assignment (different base types)
Date: Wed, 08 Sep 2021 19:44:23 +0800 [thread overview]
Message-ID: <202109081910.BQrP3ZGN-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 13219 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: 999569d59a0aa2509ae4a67ecc266c1134e37e7b
commit: 5c840ceb247ced42df472fff0d952603027eb66c [11997/12116] cifs: Create a new shared file holding smb2 pdu definitions
config: x86_64-randconfig-s021-20210908 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=5c840ceb247ced42df472fff0d952603027eb66c
git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git fetch --no-tags linux-next master
git checkout 5c840ceb247ced42df472fff0d952603027eb66c
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
fs/cifs/smb2pdu.c:118:32: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] TreeId @@ got unsigned int const [usertype] tid @@
fs/cifs/smb2pdu.c:118:32: sparse: expected restricted __le32 [usertype] TreeId
fs/cifs/smb2pdu.c:118:32: sparse: got unsigned int const [usertype] tid
fs/cifs/smb2pdu.c:121:33: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:121:33: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:121:33: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1253:36: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1253:36: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1253:36: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1561:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1561:28: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1561:28: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1587:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] Suid @@ got restricted __le64 [usertype] SessionId @@
fs/cifs/smb2pdu.c:1587:27: sparse: expected unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1587:27: sparse: got restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1526:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned long long [usertype] Suid @@ got restricted __le64 [usertype] SessionId @@
fs/cifs/smb2pdu.c:1526:27: sparse: expected unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1526:27: sparse: got restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1718:28: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long long [usertype] Suid @@
fs/cifs/smb2pdu.c:1718:28: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:1718:28: sparse: got unsigned long long [usertype] Suid
fs/cifs/smb2pdu.c:1874:19: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] tid @@ got restricted __le32 [usertype] TreeId @@
fs/cifs/smb2pdu.c:1874:19: sparse: expected unsigned int [usertype] tid
fs/cifs/smb2pdu.c:1874:19: sparse: got restricted __le32 [usertype] TreeId
>> fs/cifs/smb2pdu.c:3967:41: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] SessionId @@ got unsigned long @@
fs/cifs/smb2pdu.c:3967:41: sparse: expected restricted __le64 [usertype] SessionId
fs/cifs/smb2pdu.c:3967:41: sparse: got unsigned long
fs/cifs/smb2pdu.c:3968:48: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 [usertype] TreeId @@ got unsigned int @@
fs/cifs/smb2pdu.c:3968:48: sparse: expected restricted __le32 [usertype] TreeId
fs/cifs/smb2pdu.c:3968:48: sparse: got unsigned int
vim +3967 fs/cifs/smb2pdu.c
09a4707e763824 Pavel Shilovsky 2012-09-18 3882
09a4707e763824 Pavel Shilovsky 2012-09-18 3883 /*
09a4707e763824 Pavel Shilovsky 2012-09-18 3884 * To form a chain of read requests, any read requests after the first should
09a4707e763824 Pavel Shilovsky 2012-09-18 3885 * have the end_of_chain boolean set to true.
09a4707e763824 Pavel Shilovsky 2012-09-18 3886 */
09a4707e763824 Pavel Shilovsky 2012-09-18 3887 static int
738f9de5cdb917 Pavel Shilovsky 2016-11-23 3888 smb2_new_read_req(void **buf, unsigned int *total_len,
2dabfd5baba641 Long Li 2017-11-07 3889 struct cifs_io_parms *io_parms, struct cifs_readdata *rdata,
2dabfd5baba641 Long Li 2017-11-07 3890 unsigned int remaining_bytes, int request_type)
09a4707e763824 Pavel Shilovsky 2012-09-18 3891 {
09a4707e763824 Pavel Shilovsky 2012-09-18 3892 int rc = -EACCES;
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3893 struct smb2_read_plain_req *req = NULL;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3894 struct smb2_hdr *shdr;
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3895 struct TCP_Server_Info *server = io_parms->server;
09a4707e763824 Pavel Shilovsky 2012-09-18 3896
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3897 rc = smb2_plain_req_init(SMB2_READ, io_parms->tcon, server,
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3898 (void **) &req, total_len);
09a4707e763824 Pavel Shilovsky 2012-09-18 3899 if (rc)
09a4707e763824 Pavel Shilovsky 2012-09-18 3900 return rc;
2dabfd5baba641 Long Li 2017-11-07 3901
2dabfd5baba641 Long Li 2017-11-07 3902 if (server == NULL)
09a4707e763824 Pavel Shilovsky 2012-09-18 3903 return -ECONNABORTED;
09a4707e763824 Pavel Shilovsky 2012-09-18 3904
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3905 shdr = &req->hdr;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3906 shdr->Id.SyncId.ProcessId = cpu_to_le32(io_parms->pid);
09a4707e763824 Pavel Shilovsky 2012-09-18 3907
09a4707e763824 Pavel Shilovsky 2012-09-18 3908 req->PersistentFileId = io_parms->persistent_fid;
09a4707e763824 Pavel Shilovsky 2012-09-18 3909 req->VolatileFileId = io_parms->volatile_fid;
09a4707e763824 Pavel Shilovsky 2012-09-18 3910 req->ReadChannelInfoOffset = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3911 req->ReadChannelInfoLength = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3912 req->Channel = 0; /* reserved */
09a4707e763824 Pavel Shilovsky 2012-09-18 3913 req->MinimumCount = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3914 req->Length = cpu_to_le32(io_parms->length);
09a4707e763824 Pavel Shilovsky 2012-09-18 3915 req->Offset = cpu_to_le64(io_parms->offset);
d323c24617527f Steve French 2019-02-25 3916
d323c24617527f Steve French 2019-02-25 3917 trace_smb3_read_enter(0 /* xid */,
d323c24617527f Steve French 2019-02-25 3918 io_parms->persistent_fid,
d323c24617527f Steve French 2019-02-25 3919 io_parms->tcon->tid, io_parms->tcon->ses->Suid,
d323c24617527f Steve French 2019-02-25 3920 io_parms->offset, io_parms->length);
bd3dcc6a22a918 Long Li 2017-11-22 3921 #ifdef CONFIG_CIFS_SMB_DIRECT
bd3dcc6a22a918 Long Li 2017-11-22 3922 /*
bd3dcc6a22a918 Long Li 2017-11-22 3923 * If we want to do a RDMA write, fill in and append
bd3dcc6a22a918 Long Li 2017-11-22 3924 * smbd_buffer_descriptor_v1 to the end of read request
bd3dcc6a22a918 Long Li 2017-11-22 3925 */
bb4c0419476bd3 Long Li 2018-04-17 3926 if (server->rdma && rdata && !server->sign &&
bd3dcc6a22a918 Long Li 2017-11-22 3927 rdata->bytes >= server->smbd_conn->rdma_readwrite_threshold) {
bd3dcc6a22a918 Long Li 2017-11-22 3928
bd3dcc6a22a918 Long Li 2017-11-22 3929 struct smbd_buffer_descriptor_v1 *v1;
352d96f3acc6e0 Aurelien Aptel 2020-05-31 3930 bool need_invalidate = server->dialect == SMB30_PROT_ID;
bd3dcc6a22a918 Long Li 2017-11-22 3931
bd3dcc6a22a918 Long Li 2017-11-22 3932 rdata->mr = smbd_register_mr(
bd3dcc6a22a918 Long Li 2017-11-22 3933 server->smbd_conn, rdata->pages,
7cf20bce77581b Long Li 2018-05-30 3934 rdata->nr_pages, rdata->page_offset,
7cf20bce77581b Long Li 2018-05-30 3935 rdata->tailsz, true, need_invalidate);
bd3dcc6a22a918 Long Li 2017-11-22 3936 if (!rdata->mr)
b7972092199f6d Long Li 2019-04-05 3937 return -EAGAIN;
bd3dcc6a22a918 Long Li 2017-11-22 3938
bd3dcc6a22a918 Long Li 2017-11-22 3939 req->Channel = SMB2_CHANNEL_RDMA_V1_INVALIDATE;
bd3dcc6a22a918 Long Li 2017-11-22 3940 if (need_invalidate)
bd3dcc6a22a918 Long Li 2017-11-22 3941 req->Channel = SMB2_CHANNEL_RDMA_V1;
bd3dcc6a22a918 Long Li 2017-11-22 3942 req->ReadChannelInfoOffset =
2026b06e9ce852 Steve French 2018-01-24 3943 cpu_to_le16(offsetof(struct smb2_read_plain_req, Buffer));
bd3dcc6a22a918 Long Li 2017-11-22 3944 req->ReadChannelInfoLength =
2026b06e9ce852 Steve French 2018-01-24 3945 cpu_to_le16(sizeof(struct smbd_buffer_descriptor_v1));
bd3dcc6a22a918 Long Li 2017-11-22 3946 v1 = (struct smbd_buffer_descriptor_v1 *) &req->Buffer[0];
2026b06e9ce852 Steve French 2018-01-24 3947 v1->offset = cpu_to_le64(rdata->mr->mr->iova);
2026b06e9ce852 Steve French 2018-01-24 3948 v1->token = cpu_to_le32(rdata->mr->mr->rkey);
2026b06e9ce852 Steve French 2018-01-24 3949 v1->length = cpu_to_le32(rdata->mr->mr->length);
bd3dcc6a22a918 Long Li 2017-11-22 3950
bd3dcc6a22a918 Long Li 2017-11-22 3951 *total_len += sizeof(*v1) - 1;
bd3dcc6a22a918 Long Li 2017-11-22 3952 }
bd3dcc6a22a918 Long Li 2017-11-22 3953 #endif
09a4707e763824 Pavel Shilovsky 2012-09-18 3954 if (request_type & CHAINED_REQUEST) {
09a4707e763824 Pavel Shilovsky 2012-09-18 3955 if (!(request_type & END_OF_CHAIN)) {
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3956 /* next 8-byte aligned request */
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3957 *total_len = DIV_ROUND_UP(*total_len, 8) * 8;
b8f57ee8aad414 Pavel Shilovsky 2016-11-23 3958 shdr->NextCommand = cpu_to_le32(*total_len);
09a4707e763824 Pavel Shilovsky 2012-09-18 3959 } else /* END_OF_CHAIN */
31473fc4f9653b Pavel Shilovsky 2016-10-24 3960 shdr->NextCommand = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3961 if (request_type & RELATED_REQUEST) {
31473fc4f9653b Pavel Shilovsky 2016-10-24 3962 shdr->Flags |= SMB2_FLAGS_RELATED_OPERATIONS;
09a4707e763824 Pavel Shilovsky 2012-09-18 3963 /*
09a4707e763824 Pavel Shilovsky 2012-09-18 3964 * Related requests use info from previous read request
09a4707e763824 Pavel Shilovsky 2012-09-18 3965 * in chain.
09a4707e763824 Pavel Shilovsky 2012-09-18 3966 */
c0d46717b95735 Steve French 2021-05-15 @3967 shdr->SessionId = 0xFFFFFFFFFFFFFFFF;
5c840ceb247ced Ronnie Sahlberg 2021-09-07 3968 shdr->Id.SyncId.TreeId = 0xFFFFFFFF;
c0d46717b95735 Steve French 2021-05-15 3969 req->PersistentFileId = 0xFFFFFFFFFFFFFFFF;
c0d46717b95735 Steve French 2021-05-15 3970 req->VolatileFileId = 0xFFFFFFFFFFFFFFFF;
09a4707e763824 Pavel Shilovsky 2012-09-18 3971 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3972 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3973 if (remaining_bytes > io_parms->length)
09a4707e763824 Pavel Shilovsky 2012-09-18 3974 req->RemainingBytes = cpu_to_le32(remaining_bytes);
09a4707e763824 Pavel Shilovsky 2012-09-18 3975 else
09a4707e763824 Pavel Shilovsky 2012-09-18 3976 req->RemainingBytes = 0;
09a4707e763824 Pavel Shilovsky 2012-09-18 3977
738f9de5cdb917 Pavel Shilovsky 2016-11-23 3978 *buf = req;
09a4707e763824 Pavel Shilovsky 2012-09-18 3979 return rc;
09a4707e763824 Pavel Shilovsky 2012-09-18 3980 }
09a4707e763824 Pavel Shilovsky 2012-09-18 3981
:::::: The code at line 3967 was first introduced by commit
:::::: c0d46717b95735b0eacfddbcca9df37a49de9c7a SMB3: incorrect file id in requests compounded with open
:::::: TO: Steve French <stfrench@microsoft.com>
:::::: CC: Steve French <stfrench@microsoft.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29996 bytes --]
next reply other threads:[~2021-09-08 11:45 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-08 11:44 kernel test robot [this message]
2021-09-08 11:44 ` [linux-next:master 11997/12116] fs/cifs/smb2pdu.c:3967:41: sparse: sparse: incorrect type in assignment (different base types) kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202109081910.BQrP3ZGN-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=linux-mm@kvack.org \
--cc=lsahlber@redhat.com \
--cc=stfrench@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.