All of lore.kernel.org
 help / color / mirror / Atom feed
* [ammarfaizi2-block:dhowells/linux-fs/cifs-netfs 5/41] fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
@ 2022-06-01  2:08 kernel test robot
  2022-06-07  2:34 ` kernel test robot
  0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2022-06-01  2:08 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 27853 bytes --]

:::::: 
:::::: Manual check reason: "low confidence static check warning: fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]"
:::::: 

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: "GNU/Weeb Mailing List" <gwml@vger.gnuweeb.org>
CC: linux-kernel(a)vger.kernel.org
TO: David Howells <dhowells@redhat.com>

tree:   https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/cifs-netfs
head:   1fc71b6b30f6d2a981c163b77c9aee0aecaecb29
commit: 36c9de734b21b4bc60b7ee86228659d416d53470 [5/41] cifs: Change the I/O paths to use an iterator rather than a page list
:::::: branch date: 2 days ago
:::::: commit date: 5 days ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220601/202206010953.pjbFFc6d-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0fbe3f3f486e01448121f7931a4ca29fac1504ab)
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
        # https://github.com/ammarfaizi2/linux-block/commit/36c9de734b21b4bc60b7ee86228659d416d53470
        git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
        git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/cifs-netfs
        git checkout 36c9de734b21b4bc60b7ee86228659d416d53470
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4652:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(iv, (char *)tr_hdr->Nonce, SMB3_AES_GCM_NONCE);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4655:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(iv + 1, (char *)tr_hdr->Nonce, SMB3_AES_CCM_NONCE);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4655:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(iv + 1, (char *)tr_hdr->Nonce, SMB3_AES_CCM_NONCE);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4668:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
                   memcpy(&tr_hdr->Signature, sign, SMB2_SIGNATURE_SIZE);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4668:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
                   memcpy(&tr_hdr->Signature, sign, SMB2_SIGNATURE_SIZE);
                   ^
   include/linux/fortify-string.h:369:26: note: expanded from macro 'memcpy'
   #define memcpy(p, q, s)  __fortify_memcpy_chk(p, q, s,                  \
                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:45:29: note: expanded from macro '__underlying_memcpy'
   #define __underlying_memcpy     __builtin_memcpy
                                   ^~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4820:2: warning: Call to function 'memmove' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memmove_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
           memmove(buf, iov[1].iov_base, buf_data_size);
           ^
   include/linux/fortify-string.h:373:27: note: expanded from macro 'memmove'
   #define memmove(p, q, s)  __fortify_memcpy_chk(p, q, s,                 \
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:46:30: note: expanded from macro '__underlying_memmove'
   #define __underlying_memmove    __builtin_memmove
                                   ^~~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4820:2: note: Call to function 'memmove' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memmove_s' in case of C11
           memmove(buf, iov[1].iov_base, buf_data_size);
           ^
   include/linux/fortify-string.h:373:27: note: expanded from macro 'memmove'
   #define memmove(p, q, s)  __fortify_memcpy_chk(p, q, s,                 \
                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:362:2: note: expanded from macro '__fortify_memcpy_chk'
           __underlying_##op(p, q, __fortify_size);                        \
           ^~~~~~~~~~~~~~~~~
   note: expanded from here
   include/linux/fortify-string.h:46:30: note: expanded from macro '__underlying_memmove'
   #define __underlying_memmove    __builtin_memmove
                                   ^~~~~~~~~~~~~~~~~
>> fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
           return length;
           ^      ~~~~~~
   fs/cifs/smb2ops.c:4862:2: note: 'length' declared without an initial value
           int length;
           ^~~~~~~~~~
   fs/cifs/smb2ops.c:4865:6: note: Assuming field 'Command' is equal to SMB2_READ
           if (shdr->Command != SMB2_READ) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4865:2: note: Taking false branch
           if (shdr->Command != SMB2_READ) {
           ^
   fs/cifs/smb2ops.c:4870:6: note: Assuming field 'is_session_expired' is null
           if (server->ops->is_session_expired &&
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4870:38: note: Left side of '&&' is false
           if (server->ops->is_session_expired &&
                                               ^
   fs/cifs/smb2ops.c:4877:6: note: Assuming field 'is_status_pending' is null
           if (server->ops->is_status_pending &&
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4877:37: note: Left side of '&&' is false
           if (server->ops->is_status_pending &&
                                              ^
   fs/cifs/smb2ops.c:4886:3: note: Assuming '__UNIQUE_ID___x1317' is >= '__UNIQUE_ID___y1318'
                   min_t(unsigned int, buf_len, server->vals->read_rsp_size);
                   ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   fs/cifs/smb2ops.c:4886:3: note: '?' condition is false
                   min_t(unsigned int, buf_len, server->vals->read_rsp_size);
                   ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   fs/cifs/smb2ops.c:4887:2: note: Taking false branch
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:76:2: note: expanded from macro 'cifs_dbg'
           if ((type) & ONCE)                                              \
           ^
   fs/cifs/smb2ops.c:4887:2: note: Left side of '&&' is true
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:79:3: note: expanded from macro 'cifs_dbg'
                   cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);   \
                   ^
   fs/cifs/cifs_debug.h:64:6: note: expanded from macro 'cifs_dbg_func'
           if ((type) & FYI && cifsFYI & CIFS_INFO) {                      \
               ^
   fs/cifs/smb2ops.c:4887:2: note: Assuming the condition is false
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:79:3: note: expanded from macro 'cifs_dbg'
                   cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);   \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/cifs/cifs_debug.h:64:22: note: expanded from macro 'cifs_dbg_func'
           if ((type) & FYI && cifsFYI & CIFS_INFO) {                      \
                               ^~~~~~~~~~~~~~~~~~~
   fs/cifs/smb2ops.c:4887:2: note: Taking false branch
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:79:3: note: expanded from macro 'cifs_dbg'
                   cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);   \
                   ^
   fs/cifs/cifs_debug.h:64:2: note: expanded from macro 'cifs_dbg_func'
           if ((type) & FYI && cifsFYI & CIFS_INFO) {                      \
           ^
   fs/cifs/smb2ops.c:4887:2: note: Taking false branch
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:79:3: note: expanded from macro 'cifs_dbg'
                   cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);   \
                   ^
   fs/cifs/cifs_debug.h:67:9: note: expanded from macro 'cifs_dbg_func'
           } else if ((type) & VFS) {                                      \
                  ^
   fs/cifs/smb2ops.c:4887:2: note: Left side of '&&' is false
           cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
           ^
   fs/cifs/cifs_debug.h:79:3: note: expanded from macro 'cifs_dbg'
                   cifs_dbg_func(ratelimited, type, fmt, ##__VA_ARGS__);   \

vim +4995 fs/cifs/smb2ops.c

c42a6abe301283 Pavel Shilovsky    2016-11-17  4849  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4850  static int
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4851  handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
36c9de734b21b4 David Howells      2022-01-24  4852  		 char *buf, unsigned int buf_len, struct xarray *pages,
36c9de734b21b4 David Howells      2022-01-24  4853  		 unsigned int pages_len, bool is_offloaded)
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4854  {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4855  	unsigned int data_offset;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4856  	unsigned int data_len;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4857  	unsigned int cur_off;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4858  	unsigned int cur_page_idx;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4859  	unsigned int pad_len;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4860  	struct cifs_readdata *rdata = mid->callback_data;
0d35e382e4e96a Ronnie Sahlberg    2021-11-05  4861  	struct smb2_hdr *shdr = (struct smb2_hdr *)buf;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4862  	int length;
74dcf418fe3446 Long Li            2017-11-22  4863  	bool use_rdma_mr = false;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4864  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4865  	if (shdr->Command != SMB2_READ) {
3175eb9b577e82 Ronnie Sahlberg    2019-09-04  4866  		cifs_server_dbg(VFS, "only big read responses are supported\n");
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4867  		return -ENOTSUPP;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4868  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4869  
511c54a2f69195 Pavel Shilovsky    2017-07-08  4870  	if (server->ops->is_session_expired &&
511c54a2f69195 Pavel Shilovsky    2017-07-08  4871  	    server->ops->is_session_expired(buf)) {
de9ac0a6e9efdf Rohith Surabattula 2020-10-28  4872  		if (!is_offloaded)
183eea2ee5ba96 Shyam Prasad N     2021-07-19  4873  			cifs_reconnect(server, true);
511c54a2f69195 Pavel Shilovsky    2017-07-08  4874  		return -1;
511c54a2f69195 Pavel Shilovsky    2017-07-08  4875  	}
511c54a2f69195 Pavel Shilovsky    2017-07-08  4876  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4877  	if (server->ops->is_status_pending &&
66265f134acfb2 Pavel Shilovsky    2019-01-23  4878  			server->ops->is_status_pending(buf, server))
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4879  		return -1;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4880  
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4881  	/* set up first two iov to get credits */
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4882  	rdata->iov[0].iov_base = buf;
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4883  	rdata->iov[0].iov_len = 0;
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4884  	rdata->iov[1].iov_base = buf;
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4885  	rdata->iov[1].iov_len =
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4886  		min_t(unsigned int, buf_len, server->vals->read_rsp_size);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4887  	cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4888  		 rdata->iov[0].iov_base, rdata->iov[0].iov_len);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4889  	cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4890  		 rdata->iov[1].iov_base, rdata->iov[1].iov_len);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4891  
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4892  	rdata->result = server->ops->map_error(buf, true);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4893  	if (rdata->result != 0) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4894  		cifs_dbg(FYI, "%s: server returned error %d\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4895  			 __func__, rdata->result);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4896  		/* normal error on read response */
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4897  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4898  			mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4899  		else
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4900  			dequeue_mid(mid, false);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4901  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4902  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4903  
1fc6ad2f10ad6f Ronnie Sahlberg    2018-06-01  4904  	data_offset = server->ops->read_data_offset(buf);
74dcf418fe3446 Long Li            2017-11-22  4905  #ifdef CONFIG_CIFS_SMB_DIRECT
74dcf418fe3446 Long Li            2017-11-22  4906  	use_rdma_mr = rdata->mr;
74dcf418fe3446 Long Li            2017-11-22  4907  #endif
74dcf418fe3446 Long Li            2017-11-22  4908  	data_len = server->ops->read_data_length(buf, use_rdma_mr);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4909  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4910  	if (data_offset < server->vals->read_rsp_size) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4911  		/*
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4912  		 * win2k8 sometimes sends an offset of 0 when the read
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4913  		 * is beyond the EOF. Treat it as if the data starts just after
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4914  		 * the header.
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4915  		 */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4916  		cifs_dbg(FYI, "%s: data offset (%u) inside read response header\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4917  			 __func__, data_offset);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4918  		data_offset = server->vals->read_rsp_size;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4919  	} else if (data_offset > MAX_CIFS_SMALL_BUFFER_SIZE) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4920  		/* data_offset is beyond the end of smallbuf */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4921  		cifs_dbg(FYI, "%s: data offset (%u) beyond end of smallbuf\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4922  			 __func__, data_offset);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4923  		rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4924  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4925  			mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4926  		else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4927  			dequeue_mid(mid, rdata->result);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4928  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4929  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4930  
c42a6abe301283 Pavel Shilovsky    2016-11-17  4931  	pad_len = data_offset - server->vals->read_rsp_size;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4932  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4933  	if (buf_len <= data_offset) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4934  		/* read response payload is in pages */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4935  		cur_page_idx = pad_len / PAGE_SIZE;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4936  		cur_off = pad_len % PAGE_SIZE;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4937  
c42a6abe301283 Pavel Shilovsky    2016-11-17  4938  		if (cur_page_idx != 0) {
c42a6abe301283 Pavel Shilovsky    2016-11-17  4939  			/* data offset is beyond the 1st page of response */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4940  			cifs_dbg(FYI, "%s: data offset (%u) beyond 1st page of response\n",
c42a6abe301283 Pavel Shilovsky    2016-11-17  4941  				 __func__, data_offset);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4942  			rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4943  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4944  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4945  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4946  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4947  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4948  		}
c42a6abe301283 Pavel Shilovsky    2016-11-17  4949  
36c9de734b21b4 David Howells      2022-01-24  4950  		if (data_len > pages_len - pad_len) {
c42a6abe301283 Pavel Shilovsky    2016-11-17  4951  			/* data_len is corrupt -- discard frame */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4952  			rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4953  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4954  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4955  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4956  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4957  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4958  		}
c42a6abe301283 Pavel Shilovsky    2016-11-17  4959  
36c9de734b21b4 David Howells      2022-01-24  4960  		/* Copy the data to the output I/O iterator. */
36c9de734b21b4 David Howells      2022-01-24  4961  		rdata->result = cifs_copy_pages_to_iter(pages, pages_len,
36c9de734b21b4 David Howells      2022-01-24  4962  							cur_off, &rdata->iter);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4963  		if (rdata->result != 0) {
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4964  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4965  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4966  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4967  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4968  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4969  		}
36c9de734b21b4 David Howells      2022-01-24  4970  		rdata->got_bytes = pages_len;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4971  
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4972  	} else if (buf_len >= data_offset + data_len) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4973  		/* read response payload is in buf */
36c9de734b21b4 David Howells      2022-01-24  4974  		WARN_ONCE(pages && !xa_empty(pages),
36c9de734b21b4 David Howells      2022-01-24  4975  			  "read data can be either in buf or in pages");
36c9de734b21b4 David Howells      2022-01-24  4976  		length = copy_to_iter(buf + data_offset, data_len, &rdata->iter);
36c9de734b21b4 David Howells      2022-01-24  4977  		if (length < 0)
36c9de734b21b4 David Howells      2022-01-24  4978  			return length;
36c9de734b21b4 David Howells      2022-01-24  4979  		rdata->got_bytes = data_len;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4980  	} else {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4981  		/* read response payload cannot be in both buf and pages */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4982  		WARN_ONCE(1, "buf can not contain only a part of read data");
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4983  		rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4984  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4985  			mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4986  		else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4987  			dequeue_mid(mid, rdata->result);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4988  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4989  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4990  
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4991  	if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4992  		mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4993  	else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4994  		dequeue_mid(mid, false);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17 @4995  	return length;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4996  }
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4997  

:::::: The code at line 4995 was first introduced by commit
:::::: 4326ed2f6a16ae9d33e4209b540dc9a371aba840 CIFS: Decrypt and process small encrypted packets

:::::: 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] 2+ messages in thread

* [ammarfaizi2-block:dhowells/linux-fs/cifs-netfs 5/41] fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
  2022-06-01  2:08 [ammarfaizi2-block:dhowells/linux-fs/cifs-netfs 5/41] fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn] kernel test robot
@ 2022-06-07  2:34 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-07  2:34 UTC (permalink / raw)
  To: David Howells
  Cc: llvm, kbuild-all, GNU/Weeb Mailing List, Linux Kernel Mailing List

tree:   https://github.com/ammarfaizi2/linux-block dhowells/linux-fs/cifs-netfs
head:   1fc71b6b30f6d2a981c163b77c9aee0aecaecb29
commit: 36c9de734b21b4bc60b7ee86228659d416d53470 [5/41] cifs: Change the I/O paths to use an iterator rather than a page list
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220601/202206010953.pjbFFc6d-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0fbe3f3f486e01448121f7931a4ca29fac1504ab)
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
         # https://github.com/ammarfaizi2/linux-block/commit/36c9de734b21b4bc60b7ee86228659d416d53470
         git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
         git fetch --no-tags ammarfaizi2-block dhowells/linux-fs/cifs-netfs
         git checkout 36c9de734b21b4bc60b7ee86228659d416d53470
         # save the config file
         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <yujie.liu@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)

 >> fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
            return length;
            ^      ~~~~~~

vim +4995 fs/cifs/smb2ops.c

c42a6abe301283 Pavel Shilovsky    2016-11-17  4849
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4850  static int
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4851  handle_read_data(struct TCP_Server_Info *server, struct mid_q_entry *mid,
36c9de734b21b4 David Howells      2022-01-24  4852  		 char *buf, unsigned int buf_len, struct xarray *pages,
36c9de734b21b4 David Howells      2022-01-24  4853  		 unsigned int pages_len, bool is_offloaded)
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4854  {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4855  	unsigned int data_offset;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4856  	unsigned int data_len;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4857  	unsigned int cur_off;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4858  	unsigned int cur_page_idx;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4859  	unsigned int pad_len;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4860  	struct cifs_readdata *rdata = mid->callback_data;
0d35e382e4e96a Ronnie Sahlberg    2021-11-05  4861  	struct smb2_hdr *shdr = (struct smb2_hdr *)buf;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17 @4862  	int length;
74dcf418fe3446 Long Li            2017-11-22  4863  	bool use_rdma_mr = false;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4864
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4865  	if (shdr->Command != SMB2_READ) {
3175eb9b577e82 Ronnie Sahlberg    2019-09-04  4866  		cifs_server_dbg(VFS, "only big read responses are supported\n");
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4867  		return -ENOTSUPP;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4868  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4869
511c54a2f69195 Pavel Shilovsky    2017-07-08  4870  	if (server->ops->is_session_expired &&
511c54a2f69195 Pavel Shilovsky    2017-07-08  4871  	    server->ops->is_session_expired(buf)) {
de9ac0a6e9efdf Rohith Surabattula 2020-10-28  4872  		if (!is_offloaded)
183eea2ee5ba96 Shyam Prasad N     2021-07-19  4873  			cifs_reconnect(server, true);
511c54a2f69195 Pavel Shilovsky    2017-07-08  4874  		return -1;
511c54a2f69195 Pavel Shilovsky    2017-07-08  4875  	}
511c54a2f69195 Pavel Shilovsky    2017-07-08  4876
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4877  	if (server->ops->is_status_pending &&
66265f134acfb2 Pavel Shilovsky    2019-01-23  4878  			server->ops->is_status_pending(buf, server))
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4879  		return -1;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4880
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4881  	/* set up first two iov to get credits */
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4882  	rdata->iov[0].iov_base = buf;
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4883  	rdata->iov[0].iov_len = 0;
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4884  	rdata->iov[1].iov_base = buf;
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4885  	rdata->iov[1].iov_len =
bb1bccb60c2ebd Pavel Shilovsky    2019-01-17  4886  		min_t(unsigned int, buf_len, server->vals->read_rsp_size);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4887  	cifs_dbg(FYI, "0: iov_base=%p iov_len=%zu\n",
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4888  		 rdata->iov[0].iov_base, rdata->iov[0].iov_len);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4889  	cifs_dbg(FYI, "1: iov_base=%p iov_len=%zu\n",
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4890  		 rdata->iov[1].iov_base, rdata->iov[1].iov_len);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4891
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4892  	rdata->result = server->ops->map_error(buf, true);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4893  	if (rdata->result != 0) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4894  		cifs_dbg(FYI, "%s: server returned error %d\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4895  			 __func__, rdata->result);
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4896  		/* normal error on read response */
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4897  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4898  			mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4899  		else
ec678eae746dd2 Pavel Shilovsky    2019-01-18  4900  			dequeue_mid(mid, false);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4901  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4902  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4903
1fc6ad2f10ad6f Ronnie Sahlberg    2018-06-01  4904  	data_offset = server->ops->read_data_offset(buf);
74dcf418fe3446 Long Li            2017-11-22  4905  #ifdef CONFIG_CIFS_SMB_DIRECT
74dcf418fe3446 Long Li            2017-11-22  4906  	use_rdma_mr = rdata->mr;
74dcf418fe3446 Long Li            2017-11-22  4907  #endif
74dcf418fe3446 Long Li            2017-11-22  4908  	data_len = server->ops->read_data_length(buf, use_rdma_mr);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4909
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4910  	if (data_offset < server->vals->read_rsp_size) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4911  		/*
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4912  		 * win2k8 sometimes sends an offset of 0 when the read
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4913  		 * is beyond the EOF. Treat it as if the data starts just after
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4914  		 * the header.
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4915  		 */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4916  		cifs_dbg(FYI, "%s: data offset (%u) inside read response header\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4917  			 __func__, data_offset);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4918  		data_offset = server->vals->read_rsp_size;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4919  	} else if (data_offset > MAX_CIFS_SMALL_BUFFER_SIZE) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4920  		/* data_offset is beyond the end of smallbuf */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4921  		cifs_dbg(FYI, "%s: data offset (%u) beyond end of smallbuf\n",
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4922  			 __func__, data_offset);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4923  		rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4924  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4925  			mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4926  		else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4927  			dequeue_mid(mid, rdata->result);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4928  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4929  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4930
c42a6abe301283 Pavel Shilovsky    2016-11-17  4931  	pad_len = data_offset - server->vals->read_rsp_size;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4932
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4933  	if (buf_len <= data_offset) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4934  		/* read response payload is in pages */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4935  		cur_page_idx = pad_len / PAGE_SIZE;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4936  		cur_off = pad_len % PAGE_SIZE;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4937
c42a6abe301283 Pavel Shilovsky    2016-11-17  4938  		if (cur_page_idx != 0) {
c42a6abe301283 Pavel Shilovsky    2016-11-17  4939  			/* data offset is beyond the 1st page of response */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4940  			cifs_dbg(FYI, "%s: data offset (%u) beyond 1st page of response\n",
c42a6abe301283 Pavel Shilovsky    2016-11-17  4941  				 __func__, data_offset);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4942  			rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4943  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4944  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4945  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4946  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4947  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4948  		}
c42a6abe301283 Pavel Shilovsky    2016-11-17  4949
36c9de734b21b4 David Howells      2022-01-24  4950  		if (data_len > pages_len - pad_len) {
c42a6abe301283 Pavel Shilovsky    2016-11-17  4951  			/* data_len is corrupt -- discard frame */
c42a6abe301283 Pavel Shilovsky    2016-11-17  4952  			rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4953  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4954  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4955  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4956  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4957  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4958  		}
c42a6abe301283 Pavel Shilovsky    2016-11-17  4959
36c9de734b21b4 David Howells      2022-01-24  4960  		/* Copy the data to the output I/O iterator. */
36c9de734b21b4 David Howells      2022-01-24  4961  		rdata->result = cifs_copy_pages_to_iter(pages, pages_len,
36c9de734b21b4 David Howells      2022-01-24  4962  							cur_off, &rdata->iter);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4963  		if (rdata->result != 0) {
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4964  			if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4965  				mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4966  			else
c42a6abe301283 Pavel Shilovsky    2016-11-17  4967  				dequeue_mid(mid, rdata->result);
c42a6abe301283 Pavel Shilovsky    2016-11-17  4968  			return 0;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4969  		}
36c9de734b21b4 David Howells      2022-01-24  4970  		rdata->got_bytes = pages_len;
c42a6abe301283 Pavel Shilovsky    2016-11-17  4971
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4972  	} else if (buf_len >= data_offset + data_len) {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4973  		/* read response payload is in buf */
36c9de734b21b4 David Howells      2022-01-24  4974  		WARN_ONCE(pages && !xa_empty(pages),
36c9de734b21b4 David Howells      2022-01-24  4975  			  "read data can be either in buf or in pages");
36c9de734b21b4 David Howells      2022-01-24  4976  		length = copy_to_iter(buf + data_offset, data_len, &rdata->iter);
36c9de734b21b4 David Howells      2022-01-24  4977  		if (length < 0)
36c9de734b21b4 David Howells      2022-01-24  4978  			return length;
36c9de734b21b4 David Howells      2022-01-24  4979  		rdata->got_bytes = data_len;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4980  	} else {
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4981  		/* read response payload cannot be in both buf and pages */
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4982  		WARN_ONCE(1, "buf can not contain only a part of read data");
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4983  		rdata->result = -EIO;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4984  		if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4985  			mid->mid_state = MID_RESPONSE_MALFORMED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4986  		else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4987  			dequeue_mid(mid, rdata->result);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4988  		return 0;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4989  	}
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4990
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4991  	if (is_offloaded)
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4992  		mid->mid_state = MID_RESPONSE_RECEIVED;
ac873aa3dc2170 Rohith Surabattula 2020-10-29  4993  	else
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4994  		dequeue_mid(mid, false);
4326ed2f6a16ae Pavel Shilovsky    2016-11-17 @4995  	return length;
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4996  }
4326ed2f6a16ae Pavel Shilovsky    2016-11-17  4997

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-07  2:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-01  2:08 [ammarfaizi2-block:dhowells/linux-fs/cifs-netfs 5/41] fs/cifs/smb2ops.c:4995:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn] kernel test robot
2022-06-07  2:34 ` 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.