Hi Zhou,

I love your patch! Yet something to improve:

[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR on soc/for-next linux/master linus/master v5.11-rc4 
next-20210121]
[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/Zhou-Wang/uacce-Add-uacce_ctrl-misc-device/20210121-172139
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git 
f6f1f8e6e3eea25f539105d48166e91f0ab46dd1
config: alpha-randconfig-p002-20210121 (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.0
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/4dc40d891a7e60ed79e6b9460a38a142d3d1a965
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Zhou-Wang/uacce-Add-uacce_ctrl-misc-device/20210121-172139
        git checkout 4dc40d891a7e60ed79e6b9460a38a142d3d1a965
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross 
ARCH=alpha 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All error/warnings (new ones prefixed by >>):

   drivers/misc/uacce/uacce.c:511:5: warning: no previous prototype for 
'uacce_ctrl_open' [-Wmissing-prototypes]
     511 | int uacce_ctrl_open(struct inode *inode, struct file *file)
         |     ^~~~~~~~~~~~~~~
   drivers/misc/uacce/uacce.c:525:5: warning: no previous prototype for 
'uacce_ctrl_release' [-Wmissing-prototypes]
     525 | int uacce_ctrl_release(struct inode *inode, struct file *file)
         |     ^~~~~~~~~~~~~~~~~~
   drivers/misc/uacce/uacce.c: In function 'uacce_ctrl_release':
>> drivers/misc/uacce/uacce.c:534:3: error: implicit declaration of function 
>> 'vfree'; did you mean 'kfree'? [-Werror=implicit-function-declaration]
     534 |   vfree(p->pages);
         |   ^~~~~
         |   kfree
   drivers/misc/uacce/uacce.c: In function 'uacce_pin_page':
>> drivers/misc/uacce/uacce.c:557:10: error: implicit declaration of function 
>> 'vmalloc'; did you mean 'kmalloc'? [-Werror=implicit-function-declaration]
     557 |  pages = vmalloc(nr_pages * sizeof(struct page *));
         |          ^~~~~~~
         |          kmalloc
>> drivers/misc/uacce/uacce.c:557:8: warning: assignment to 'struct page **' 
>> from 'int' makes pointer from integer without a cast [-Wint-conversion]
     557 |  pages = vmalloc(nr_pages * sizeof(struct page *));
         |        ^
   drivers/misc/uacce/uacce.c: In function 'uacce_ctrl_unl_ioctl':
   drivers/misc/uacce/uacce.c:626:6: warning: unused variable 'ret' 
[-Wunused-variable]
     626 |  int ret;
         |      ^~~
   cc1: some warnings being treated as errors


vim +534 drivers/misc/uacce/uacce.c

   524  
   525  int uacce_ctrl_release(struct inode *inode, struct file *file)
   526  {
   527          struct uacce_pin_container *priv = file->private_data;
   528          struct pin_pages *p;
   529          unsigned long idx;
   530  
   531          xa_for_each(&priv->array, idx, p) {
   532                  unpin_user_pages(p->pages, p->nr_pages);
   533                  xa_erase(&priv->array, p->first);
 > 534                  vfree(p->pages);
   535                  kfree(p);
   536          }
   537  
   538          xa_destroy(&priv->array);
   539          kfree(priv);
   540  
   541          return 0;
   542  }
   543  
   544  static int uacce_pin_page(struct uacce_pin_container *priv,
   545                            struct uacce_pin_address *addr)
   546  {
   547          unsigned int flags = FOLL_FORCE | FOLL_WRITE;
   548          unsigned long first, last, nr_pages;
   549          struct page **pages;
   550          struct pin_pages *p;
   551          int ret;
   552  
   553          first = (addr->addr & PAGE_MASK) >> PAGE_SHIFT;
   554          last = ((addr->addr + addr->size - 1) & PAGE_MASK) >> 
PAGE_SHIFT;
   555          nr_pages = last - first + 1;
   556  
 > 557          pages = vmalloc(nr_pages * sizeof(struct page *));
   558          if (!pages)
   559                  return -ENOMEM;
   560  
   561          p = kzalloc(sizeof(*p), GFP_KERNEL);
   562          if (!p) {
   563                  ret = -ENOMEM;
   564                  goto free;
   565          }
   566  
   567          ret = pin_user_pages_fast(addr->addr & PAGE_MASK, nr_pages,
   568                                    flags | FOLL_LONGTERM, pages);
   569          if (ret != nr_pages) {
   570                  pr_err("uacce: Failed to pin page\n");
   571                  goto free_p;
   572          }
   573          p->first = first;
   574          p->nr_pages = nr_pages;
   575          p->pages = pages;
   576  
   577          ret = xa_err(xa_store(&priv->array, p->first, p, GFP_KERNEL));
   578          if (ret)
   579                  goto unpin_pages;
   580  
   581          return 0;
   582  
   583  unpin_pages:
   584          unpin_user_pages(pages, nr_pages);
   585  free_p:
   586          kfree(p);
   587  free:
   588          vfree(pages);
   589          return ret;
   590  }
   591  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to