* [samba-ksmbd:for-next 17/26] fs/cifs/smb2ops.c:4961:7: warning: variable 'length' is used uninitialized whenever 'if' condition is false
@ 2022-05-03 2:47 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-05-03 2:47 UTC (permalink / raw)
To: David Howells; +Cc: llvm, kbuild-all, linux-kernel, Steve French
tree: git://git.samba.org/ksmbd.git for-next
head: 422ce10d22e2de32427ff611478747dd27af50f8
commit: fb82dff413832d7afbef54d40c2bd6828a0699a5 [17/26] cifs: Change the I/O paths to use an iterator rather than a page list
config: x86_64-randconfig-a011-20220502 (https://download.01.org/0day-ci/archive/20220503/202205031012.L7O6Uj9A-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 363b3a645a1e30011cc8da624f13dac5fd915628)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git remote add samba-ksmbd git://git.samba.org/ksmbd.git
git fetch --no-tags samba-ksmbd for-next
git checkout fb82dff413832d7afbef54d40c2bd6828a0699a5
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash fs/cifs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
>> fs/cifs/smb2ops.c:4961:7: warning: variable 'length' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
if (rdata->result != 0) {
^~~~~~~~~~~~~~~~~~
fs/cifs/smb2ops.c:4993:9: note: uninitialized use occurs here
return length;
^~~~~~
fs/cifs/smb2ops.c:4961:3: note: remove the 'if' if its condition is always true
if (rdata->result != 0) {
^~~~~~~~~~~~~~~~~~~~~~~~
fs/cifs/smb2ops.c:4860:12: note: initialize the variable 'length' to silence this warning
int length;
^
= 0
1 warning generated.
vim +4961 fs/cifs/smb2ops.c
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4847
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4848 static int
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4849 handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
fb82dff413832d7 David Howells 2022-01-24 4850 char *buf, unsigned int buf_len, struct xarray *pages,
fb82dff413832d7 David Howells 2022-01-24 4851 unsigned int pages_len, bool is_offloaded)
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4852 {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4853 unsigned int data_offset;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4854 unsigned int data_len;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4855 unsigned int cur_off;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4856 unsigned int cur_page_idx;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4857 unsigned int pad_len;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4858 struct cifs_readdata *rdata = mid->callback_data;
0d35e382e4e96a4 Ronnie Sahlberg 2021-11-05 4859 struct smb2_hdr *shdr = (struct smb2_hdr *)buf;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4860 int length;
74dcf418fe34465 Long Li 2017-11-22 4861 bool use_rdma_mr = false;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4862
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4863 if (shdr->Command != SMB2_READ) {
3175eb9b577e82b Ronnie Sahlberg 2019-09-04 4864 cifs_server_dbg(VFS, "only big read responses are supported\n");
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4865 return -ENOTSUPP;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4866 }
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4867
511c54a2f69195b Pavel Shilovsky 2017-07-08 4868 if (server->ops->is_session_expired &&
511c54a2f69195b Pavel Shilovsky 2017-07-08 4869 server->ops->is_session_expired(buf)) {
de9ac0a6e9efdff Rohith Surabattula 2020-10-28 4870 if (!is_offloaded)
183eea2ee5ba968 Shyam Prasad N 2021-07-19 4871 cifs_reconnect(server, true);
511c54a2f69195b Pavel Shilovsky 2017-07-08 4872 return -1;
511c54a2f69195b Pavel Shilovsky 2017-07-08 4873 }
511c54a2f69195b Pavel Shilovsky 2017-07-08 4874
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4875 if (server->ops->is_status_pending &&
66265f134acfb20 Pavel Shilovsky 2019-01-23 4876 server->ops->is_status_pending(buf, server))
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4877 return -1;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4878
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4879 /* set up first two iov to get credits */
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4880 rdata->iov[0].iov_base = buf;
bb1bccb60c2ebd9 Pavel Shilovsky 2019-01-17 4881 rdata->iov[0].iov_len = 0;
bb1bccb60c2ebd9 Pavel Shilovsky 2019-01-17 4882 rdata->iov[1].iov_base = buf;
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4883 rdata->iov[1].iov_len =
bb1bccb60c2ebd9 Pavel Shilovsky 2019-01-17 4884 min_t(unsigned int, buf_len, server->vals->read_rsp_size);
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4885 cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4886 rdata->iov[0].iov_base, rdata->iov[0].iov_len);
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4887 cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4888 rdata->iov[1].iov_base, rdata->iov[1].iov_len);
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4889
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4890 rdata->result = server->ops->map_error(buf, true);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4891 if (rdata->result != 0) {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4892 cifs_dbg(FYI, "%s: server returned error %d\n",
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4893 __func__, rdata->result);
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4894 /* normal error on read response */
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4895 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4896 mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4897 else
ec678eae746dd25 Pavel Shilovsky 2019-01-18 4898 dequeue_mid(mid, false);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4899 return 0;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4900 }
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4901
1fc6ad2f10ad6f5 Ronnie Sahlberg 2018-06-01 4902 data_offset = server->ops->read_data_offset(buf);
74dcf418fe34465 Long Li 2017-11-22 4903 #ifdef CONFIG_CIFS_SMB_DIRECT
74dcf418fe34465 Long Li 2017-11-22 4904 use_rdma_mr = rdata->mr;
74dcf418fe34465 Long Li 2017-11-22 4905 #endif
74dcf418fe34465 Long Li 2017-11-22 4906 data_len = server->ops->read_data_length(buf, use_rdma_mr);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4907
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4908 if (data_offset < server->vals->read_rsp_size) {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4909 /*
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4910 * win2k8 sometimes sends an offset of 0 when the read
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4911 * is beyond the EOF. Treat it as if the data starts just after
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4912 * the header.
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4913 */
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4914 cifs_dbg(FYI, "%s: data offset (%u) inside read response header\n",
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4915 __func__, data_offset);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4916 data_offset = server->vals->read_rsp_size;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4917 } else if (data_offset > MAX_CIFS_SMALL_BUFFER_SIZE) {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4918 /* data_offset is beyond the end of smallbuf */
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4919 cifs_dbg(FYI, "%s: data offset (%u) beyond end of smallbuf\n",
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4920 __func__, data_offset);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4921 rdata->result = -EIO;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4922 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4923 mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4924 else
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4925 dequeue_mid(mid, rdata->result);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4926 return 0;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4927 }
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4928
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4929 pad_len = data_offset - server->vals->read_rsp_size;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4930
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4931 if (buf_len <= data_offset) {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4932 /* read response payload is in pages */
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4933 cur_page_idx = pad_len / PAGE_SIZE;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4934 cur_off = pad_len % PAGE_SIZE;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4935
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4936 if (cur_page_idx != 0) {
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4937 /* data offset is beyond the 1st page of response */
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4938 cifs_dbg(FYI, "%s: data offset (%u) beyond 1st page of response\n",
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4939 __func__, data_offset);
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4940 rdata->result = -EIO;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4941 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4942 mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4943 else
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4944 dequeue_mid(mid, rdata->result);
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4945 return 0;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4946 }
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4947
fb82dff413832d7 David Howells 2022-01-24 4948 if (data_len > pages_len - pad_len) {
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4949 /* data_len is corrupt -- discard frame */
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4950 rdata->result = -EIO;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4951 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4952 mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4953 else
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4954 dequeue_mid(mid, rdata->result);
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4955 return 0;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4956 }
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4957
fb82dff413832d7 David Howells 2022-01-24 4958 /* Copy the data to the output I/O iterator. */
fb82dff413832d7 David Howells 2022-01-24 4959 rdata->result = cifs_copy_pages_to_iter(pages, pages_len,
fb82dff413832d7 David Howells 2022-01-24 4960 cur_off, &rdata->iter);
c42a6abe3012832 Pavel Shilovsky 2016-11-17 @4961 if (rdata->result != 0) {
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4962 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4963 mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4964 else
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4965 dequeue_mid(mid, rdata->result);
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4966 return 0;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4967 }
fb82dff413832d7 David Howells 2022-01-24 4968 rdata->got_bytes = pages_len;
c42a6abe3012832 Pavel Shilovsky 2016-11-17 4969
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4970 } else if (buf_len >= data_offset + data_len) {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4971 /* read response payload is in buf */
fb82dff413832d7 David Howells 2022-01-24 4972 WARN_ONCE(pages && !xa_empty(pages),
fb82dff413832d7 David Howells 2022-01-24 4973 "read data can be either in buf or in pages");
fb82dff413832d7 David Howells 2022-01-24 4974 length = copy_to_iter(buf + data_offset, data_len, &rdata->iter);
fb82dff413832d7 David Howells 2022-01-24 4975 if (length < 0)
fb82dff413832d7 David Howells 2022-01-24 4976 return length;
fb82dff413832d7 David Howells 2022-01-24 4977 rdata->got_bytes = data_len;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4978 } else {
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4979 /* read response payload cannot be in both buf and pages */
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4980 WARN_ONCE(1, "buf can not contain only a part of read data");
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4981 rdata->result = -EIO;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4982 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4983 mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4984 else
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4985 dequeue_mid(mid, rdata->result);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4986 return 0;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4987 }
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4988
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4989 if (is_offloaded)
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4990 mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc21707 Rohith Surabattula 2020-10-29 4991 else
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4992 dequeue_mid(mid, false);
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4993 return length;
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4994 }
4326ed2f6a16ae9 Pavel Shilovsky 2016-11-17 4995
:::::: The code at line 4961 was first introduced by commit
:::::: c42a6abe3012832a68a371dabe17c2ced97e62ad CIFS: Add capability to decrypt big read responses
:::::: TO: Pavel Shilovsky <pshilov@microsoft.com>
:::::: CC: Steve French <smfrench@gmail.com>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-03 2:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-03 2:47 [samba-ksmbd:for-next 17/26] fs/cifs/smb2ops.c:4961:7: warning: variable 'length' is used uninitialized whenever 'if' condition is false kernel test robot
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.