[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMxuvawhzjNA8gQSCpVtff-A6-Umg6fPz37nPhqRrDiRwKqUCQ@mail.gmail.com>
Date: Thu, 15 Feb 2018 10:46:50 +0100
From: Marc-Andre Lureau <mlureau@...hat.com>
To: kbuild test robot <fengguang.wu@...el.com>
Cc: Marc-André Lureau <marcandre.lureau@...hat.com>,
kbuild-all@...org, kvm@...r.kernel.org,
virtualization@...ts.linux-foundation.org, netdev@...r.kernel.org,
"Michael S. Tsirkin" <mst@...hat.com>
Subject: Re: [vhost:vhost 24/24] drivers/firmware/qemu_fw_cfg.c:499:22: error:
storage size of 'files' isn't known
Hi
On Wed, Feb 14, 2018 at 9:27 PM, kbuild test robot
<fengguang.wu@...el.com> 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.
> 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 infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
Powered by blists - more mailing lists