[Linux-cachefs] [PATCH 3/3] cifs: Eliminate cifs_readdata::pages
kernel test robot
lkp at intel.com
Fri Jan 7 20:59:43 UTC 2022
Hi David,
I love your patch! Perhaps something to improve:
[auto build test WARNING on next-20220105]
[cannot apply to cifs/for-next linus/master v5.16-rc8 v5.16-rc7 v5.16-rc6 v5.16-rc8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/David-Howells/cifs-Use-netfslib/20220107-025845
base: 7a769a3922d81cfc74ab4d90a9cc69485f260976
config: hexagon-randconfig-r023-20220107 (https://download.01.org/0day-ci/archive/20220108/202201080434.84lhmayM-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project f3a344d2125fa37e59bae1b0874442c650a19607)
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/0day-ci/linux/commit/ed7e6fa413c08f7992992e2282f64df2a6894f10
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review David-Howells/cifs-Use-netfslib/20220107-025845
git checkout ed7e6fa413c08f7992992e2282f64df2a6894f10
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=hexagon SHELL=/bin/bash fs/cifs/ kernel/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>
All warnings (new ones prefixed by >>):
fs/cifs/smb2ops.c:4437:39: error: no member named 'rq_npages' in 'struct smb_rqst'
sg_len += rqst[i].rq_nvec + rqst[i].rq_npages;
~~~~~~~ ^
fs/cifs/smb2ops.c:4456:27: error: no member named 'rq_npages' in 'struct smb_rqst'
for (j = 0; j < rqst[i].rq_npages; j++) {
~~~~~~~ ^
fs/cifs/smb2ops.c:4459:4: error: implicit declaration of function 'rqst_page_get_length' [-Werror,-Wimplicit-function-declaration]
rqst_page_get_length(&rqst[i], j, &len, &offset);
^
fs/cifs/smb2ops.c:4460:36: error: no member named 'rq_pages' in 'struct smb_rqst'
sg_set_page(&sg[idx++], rqst[i].rq_pages[j], len, offset);
~~~~~~~ ^
fs/cifs/smb2ops.c:4663:4: error: must use 'struct' tag to refer to type 'page'
page = alloc_page(GFP_KERNEL|__GFP_HIGHMEM);
^
struct
fs/cifs/smb2ops.c:4663:9: error: expected identifier or '('
page = alloc_page(GFP_KERNEL|__GFP_HIGHMEM);
^
fs/cifs/smb2ops.c:4664:29: error: use of undeclared identifier 'page'
if (!xa_store(buffer, j, page, gfp))
^
fs/cifs/smb2ops.c:4664:35: error: use of undeclared identifier 'gfp'
if (!xa_store(buffer, j, page, gfp))
^
>> fs/cifs/smb2ops.c:4667:10: warning: comparison of distinct pointer types ('typeof (size) *' (aka 'unsigned int *') and 'typeof ((1UL << 18)) *' (aka 'unsigned long *')) [-Wcompare-distinct-pointer-types]
seg = min(size, PAGE_SIZE);
^~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:45:19: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:36:24: note: expanded from macro '__careful_cmp'
__builtin_choose_expr(__safe_cmp(x, y), \
^~~~~~~~~~~~~~~~
include/linux/minmax.h:26:4: note: expanded from macro '__safe_cmp'
(__typecheck(x, y) && __no_side_effects(x, y))
^~~~~~~~~~~~~~~~~
include/linux/minmax.h:20:28: note: expanded from macro '__typecheck'
(!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
fs/cifs/smb2ops.c:4668:28: error: use of undeclared identifier 'page'; did you mean 'pages'?
if (copy_page_from_iter(page, 0, seg, &old->rq_iter) != seg) {
^~~~
pages
fs/cifs/smb2ops.c:4644:16: note: 'pages' declared here
struct page **pages;
^
fs/cifs/smb2ops.c:4718:7: error: no member named 'rq_pages' in 'struct smb_rqst'
rqst.rq_pages = pages;
~~~~ ^
fs/cifs/smb2ops.c:4719:7: error: no member named 'rq_npages' in 'struct smb_rqst'
rqst.rq_npages = npages;
~~~~ ^
fs/cifs/smb2ops.c:4720:7: error: no member named 'rq_pagesz' in 'struct smb_rqst'
rqst.rq_pagesz = PAGE_SIZE;
~~~~ ^
fs/cifs/smb2ops.c:4721:7: error: no member named 'rq_tailsz' in 'struct smb_rqst'
rqst.rq_tailsz = (page_data_size % PAGE_SIZE) ? : PAGE_SIZE;
~~~~ ^
1 warning and 13 errors generated.
vim +4667 fs/cifs/smb2ops.c
4626
4627 /*
4628 * This function will initialize new_rq and encrypt the content.
4629 * The first entry, new_rq[0], only contains a single iov which contains
4630 * a smb2_transform_hdr and is pre-allocated by the caller.
4631 * This function then populates new_rq[1+] with the content from olq_rq[0+].
4632 *
4633 * The end result is an array of smb_rqst structures where the first structure
4634 * only contains a single iov for the transform header which we then can pass
4635 * to crypt_message().
4636 *
4637 * new_rq[0].rq_iov[0] : smb2_transform_hdr pre-allocated by the caller
4638 * new_rq[1+].rq_iov[*] == old_rq[0+].rq_iov[*] : SMB2/3 requests
4639 */
4640 static int
4641 smb3_init_transform_rq(struct TCP_Server_Info *server, int num_rqst,
4642 struct smb_rqst *new_rq, struct smb_rqst *old_rq)
4643 {
4644 struct page **pages;
4645 struct smb2_transform_hdr *tr_hdr = new_rq[0].rq_iov[0].iov_base;
4646 unsigned int npages;
4647 unsigned int orig_len = 0;
4648 int i, j;
4649 int rc = -ENOMEM;
4650
4651 for (i = 1; i < num_rqst; i++) {
4652 struct smb_rqst *old = &old_rq[i - 1];
4653 struct smb_rqst *new = &new_rq[i];
4654 struct xarray *buffer = &new->rq_buffer;
4655 unsigned int npages;
4656 size_t size = iov_iter_count(&old->rq_iter), seg;
4657
4658 orig_len += size;
4659 xa_init(buffer);
4660
4661 npages = DIV_ROUND_UP(size, PAGE_SIZE);
4662 for (j = 0; j < npages; j++) {
4663 page = alloc_page(GFP_KERNEL|__GFP_HIGHMEM);
4664 if (!xa_store(buffer, j, page, gfp))
4665 goto err_free;
4666
> 4667 seg = min(size, PAGE_SIZE);
4668 if (copy_page_from_iter(page, 0, seg, &old->rq_iter) != seg) {
4669 rc = -EFAULT;
4670 goto err_free;
4671 }
4672 }
4673
4674 new->rq_iov = old->rq_iov;
4675 new->rq_nvec = old->rq_nvec;
4676 }
4677
4678 /* fill the 1st iov with a transform header */
4679 fill_transform_hdr(tr_hdr, orig_len, old_rq, server->cipher_type);
4680
4681 rc = crypt_message(server, num_rqst, new_rq, 1);
4682 cifs_dbg(FYI, "Encrypt message returned %d\n", rc);
4683 if (rc)
4684 goto err_free;
4685
4686 return rc;
4687
4688 err_free:
4689 smb3_free_compound_rqst(num_rqst - 1, &new_rq[1]);
4690 return rc;
4691 }
4692
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Linux-cachefs
mailing list