Hi Roberto,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v5.1 next-20190517]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Roberto-Sassu/initramfs-set-extended-attributes/20190518-055846
config: sparc64-allyesconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=sparc64 

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

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

   init/initramfs.c: In function 'do_readxattrs':
>> init/initramfs.c:437:10: error: implicit declaration of function 'vmalloc'; 
>> did you mean 'kvmalloc'? [-Werror=implicit-function-declaration]
      path = vmalloc(file_entry_size);
             ^~~~~~~
             kvmalloc
>> init/initramfs.c:437:8: warning: assignment makes pointer from integer 
>> without a cast [-Wint-conversion]
      path = vmalloc(file_entry_size);
           ^
>> init/initramfs.c:461:3: error: implicit declaration of function 'vfree'; did 
>> you mean 'kvfree'? [-Werror=implicit-function-declaration]
      vfree(path);
      ^~~~~
      kvfree
   cc1: some warnings being treated as errors

vim +437 init/initramfs.c

   391  
   392  static int __init do_readxattrs(void)
   393  {
   394          struct path_hdr hdr;
   395          char *path = NULL;
   396          char str[sizeof(hdr.p_size) + 1];
   397          unsigned long file_entry_size;
   398          size_t size, path_size, total_size;
   399          struct kstat st;
   400          struct file *file;
   401          loff_t pos;
   402          int ret;
   403  
   404          ret = vfs_lstat(XATTR_LIST_FILENAME, &st);
   405          if (ret < 0)
   406                  return ret;
   407  
   408          total_size = st.size;
   409  
   410          file = filp_open(XATTR_LIST_FILENAME, O_RDONLY, 0);
   411          if (IS_ERR(file))
   412                  return PTR_ERR(file);
   413  
   414          pos = file->f_pos;
   415  
   416          while (total_size) {
   417                  size = kernel_read(file, (char *)&hdr, sizeof(hdr), 
&pos);
   418                  if (size != sizeof(hdr)) {
   419                          ret = -EIO;
   420                          goto out;
   421                  }
   422  
   423                  total_size -= size;
   424  
   425                  str[sizeof(hdr.p_size)] = 0;
   426                  memcpy(str, hdr.p_size, sizeof(hdr.p_size));
   427                  ret = kstrtoul(str, 16, &file_entry_size);
   428                  if (ret < 0)
   429                          goto out;
   430  
   431                  file_entry_size -= sizeof(sizeof(hdr.p_size));
   432                  if (file_entry_size > total_size) {
   433                          ret = -EINVAL;
   434                          goto out;
   435                  }
   436  
 > 437                  path = vmalloc(file_entry_size);
   438                  if (!path) {
   439                          ret = -ENOMEM;
   440                          goto out;
   441                  }
   442  
   443                  size = kernel_read(file, path, file_entry_size, &pos);
   444                  if (size != file_entry_size) {
   445                          ret = -EIO;
   446                          goto out_free;
   447                  }
   448  
   449                  total_size -= size;
   450  
   451                  path_size = strnlen(path, file_entry_size);
   452                  if (path_size == file_entry_size) {
   453                          ret = -EINVAL;
   454                          goto out_free;
   455                  }
   456  
   457                  xattr_buf = path + path_size + 1;
   458                  xattr_len = file_entry_size - path_size - 1;
   459  
   460                  ret = do_setxattrs(path);
 > 461                  vfree(path);
   462                  path = NULL;
   463  
   464                  if (ret < 0)
   465                          break;
   466          }
   467  out_free:
   468          vfree(path);
   469  out:
   470          fput(file);
   471  
   472          if (ret < 0)
   473                  error("Unable to parse xattrs");
   474  
   475          return ret;
   476  }
   477  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to