Re: [vhost:vhost 24/24] drivers/firmware/qemu_fw_cfg.c:499:22: error: storage size of 'files' isn't known

2018-02-15 Thread Michael S. Tsirkin
On Thu, Feb 15, 2018 at 10:46:50AM +0100, Marc-Andre Lureau wrote:
> Hi
> 
> On Wed, Feb 14, 2018 at 9:27 PM, kbuild test robot
>  wrote:
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git vhost
> > head:   5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e
> > commit: 5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e [24/24] fw_cfg: fix sparse 
> > warnings around FW_CFG_FILE_DIR read
> > config: i386-randconfig-x015-201806 (attached as .config)
> > compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> > reproduce:
> > git checkout 5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e
> > # save the attached .config to linux build tree
> > make ARCH=i386
> >
> > All errors (new ones prefixed by >>):
> >
> >drivers/firmware/qemu_fw_cfg.c: In function 
> > 'fw_cfg_register_dir_entries':
> >>> drivers/firmware/qemu_fw_cfg.c:499:22: error: storage size of 'files' 
> >>> isn't known
> >  struct fw_cfg_files files;
> >  ^
> 
> struct fw_cfg_files {
> __be32 count; /* number of entries */
> struct fw_cfg_file f[];
> };
> 
> Interesting, I don't have that warning with 7.3.1.
> 
> I thought the size would be sizeof(count) by standard.
> 
> I replaced it with a __be32 files_count variable instead.
> 
> >drivers/firmware/qemu_fw_cfg.c:499:22: warning: unused variable 'files' 
> > [-Wunused-variable]
> >
> 
> files.count is used 3 lines below, that looks like a compiler bug to me.


No - i tried dropping one patch out of series, this did not work out.
So whole series is out for now.

> > vim +499 drivers/firmware/qemu_fw_cfg.c
> >
> >493
> >494  /* iterate over all fw_cfg directory entries, registering each one 
> > */
> >495  static int fw_cfg_register_dir_entries(void)
> >496  {
> >497  int ret = 0;
> >498  u32 count, i;
> >  > 499  struct fw_cfg_files files;
> >500  struct fw_cfg_file *dir;
> >501  size_t dir_size;
> >502
> >503  fw_cfg_read_blob(FW_CFG_FILE_DIR, &files.count, 0, 
> > sizeof(files.count));
> >504  count = be32_to_cpu(files.count);
> >505  dir_size = count * sizeof(struct fw_cfg_file);
> >506
> >507  dir = kmalloc(dir_size, GFP_KERNEL);
> >508  if (!dir)
> >509  return -ENOMEM;
> >510
> >511  fw_cfg_read_blob(FW_CFG_FILE_DIR, dir, sizeof(files.count), 
> > dir_size);
> >512
> >513  for (i = 0; i < count; i++) {
> >514  ret = fw_cfg_register_file(&dir[i]);
> >515  if (ret)
> >516  break;
> >517  }
> >518
> >519  kfree(dir);
> >520  return ret;
> >521  }
> >522
> >
> > ---
> > 0-DAY kernel test infrastructureOpen Source Technology 
> > Center
> > https://lists.01.org/pipermail/kbuild-all   Intel 
> > Corporation
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization


[vhost:vhost 24/24] drivers/firmware/qemu_fw_cfg.c:499:22: error: storage size of 'files' isn't known

2018-02-14 Thread kbuild test robot
tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git vhost
head:   5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e
commit: 5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e [24/24] fw_cfg: fix sparse 
warnings around FW_CFG_FILE_DIR read
config: i386-randconfig-x015-201806 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
git checkout 5d457fe6aeaab9d0a1665eafc8af7139bc6b6f2e
# save the attached .config to linux build tree
make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/firmware/qemu_fw_cfg.c: In function 'fw_cfg_register_dir_entries':
>> drivers/firmware/qemu_fw_cfg.c:499:22: error: storage size of 'files' isn't 
>> known
 struct fw_cfg_files files;
 ^
   drivers/firmware/qemu_fw_cfg.c:499:22: warning: unused variable 'files' 
[-Wunused-variable]

vim +499 drivers/firmware/qemu_fw_cfg.c

   493  
   494  /* iterate over all fw_cfg directory entries, registering each one */
   495  static int fw_cfg_register_dir_entries(void)
   496  {
   497  int ret = 0;
   498  u32 count, i;
 > 499  struct fw_cfg_files files;
   500  struct fw_cfg_file *dir;
   501  size_t dir_size;
   502  
   503  fw_cfg_read_blob(FW_CFG_FILE_DIR, &files.count, 0, 
sizeof(files.count));
   504  count = be32_to_cpu(files.count);
   505  dir_size = count * sizeof(struct fw_cfg_file);
   506  
   507  dir = kmalloc(dir_size, GFP_KERNEL);
   508  if (!dir)
   509  return -ENOMEM;
   510  
   511  fw_cfg_read_blob(FW_CFG_FILE_DIR, dir, sizeof(files.count), 
dir_size);
   512  
   513  for (i = 0; i < count; i++) {
   514  ret = fw_cfg_register_file(&dir[i]);
   515  if (ret)
   516  break;
   517  }
   518  
   519  kfree(dir);
   520  return ret;
   521  }
   522  

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


.config.gz
Description: application/gzip
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization