lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Mon, 13 Jan 2020 09:11:41 -0800
From:   Nick Desaulniers <ndesaulniers@...gle.com>
To:     marmarek@...isiblethingslab.com
Cc:     kbuild@...ts.01.org,
        clang-built-linux <clang-built-linux@...glegroups.com>,
        kbuild test robot <lkp@...el.com>, kbuild-all@...ts.01.org,
        xen-devel@...ts.xenproject.org, jbeulich@...e.com,
        simon@...isiblethingslab.com,
        Boris Ostrovsky <boris.ostrovsky@...cle.com>,
        Juergen Gross <jgross@...e.com>, sstabellini@...nel.org,
        yuehaibing@...wei.com, LKML <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3] xen-pciback: optionally allow interrupt enable flag writes

Hi Marek,
Below is a report from 0day bot build w/ Clang. The warning looks
legit, can you please take a look? Apologies if this has already been
reported.

On Sat, Jan 11, 2020 at 7:48 AM kbuild test robot <lkp@...el.com> wrote:
>
> CC: kbuild-all@...ts.01.org
> In-Reply-To: <20200111034347.5270-1-marmarek@...isiblethingslab.com>
> References: <20200111034347.5270-1-marmarek@...isiblethingslab.com>
> TO: "Marek Marczykowski-Górecki" <marmarek@...isiblethingslab.com>
> CC: xen-devel@...ts.xenproject.org, "Marek Marczykowski-Górecki" <marmarek@...isiblethingslab.com>, Jan Beulich <jbeulich@...e.com>, Simon Gaiser <simon@...isiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@...cle.com>, Juergen Gross <jgross@...e.com>, Stefano Stabellini <sstabellini@...nel.org>, YueHaibing <yuehaibing@...wei.com>, open list <linux-kernel@...r.kernel.org>, "Marek Marczykowski-Górecki" <marmarek@...isiblethingslab.com>, Jan Beulich <jbeulich@...e.com>, Simon Gaiser <simon@...isiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@...cle.com>, Juergen Gross <jgross@...e.com>, Stefano Stabellini <sstabellini@...nel.org>, YueHaibing <yuehaibing@...wei.com>, open list <linux-kernel@...r.kernel.org>
> CC: "Marek Marczykowski-Górecki" <marmarek@...isiblethingslab.com>, Jan Beulich <jbeulich@...e.com>, Simon Gaiser <simon@...isiblethingslab.com>, Boris Ostrovsky <boris.ostrovsky@...cle.com>, Juergen Gross <jgross@...e.com>, Stefano Stabellini <sstabellini@...nel.org>, YueHaibing <yuehaibing@...wei.com>, open list <linux-kernel@...r.kernel.org>
>
> Hi "Marek,
>
> Thank you for the patch! Perhaps something to improve:
>
> [auto build test WARNING on xen-tip/linux-next]
> [also build test WARNING on linux/master linus/master v5.5-rc5 next-20200110]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
>
> url:    https://github.com/0day-ci/linux/commits/Marek-Marczykowski-G-recki/xen-pciback-optionally-allow-interrupt-enable-flag-writes/20200111-162243
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git linux-next
> config: x86_64-allyesconfig (attached as .config)
> compiler: clang version 10.0.0 (git://gitmirror/llvm_project 016bf03ef6fcd9dce43b0c17971f76323f07a684)
> reproduce:
>         # save the attached .config to linux build tree
>         make ARCH=x86_64
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@...el.com>
>
> All warnings (new ones prefixed by >>):
>
> >> drivers/xen/xen-pciback/conf_space_header.c:121:19: warning: variable 'val' is uninitialized when used here [-Wuninitialized]
>                    if ((cmd->val ^ val) & PCI_COMMAND_INTX_DISABLE) {
>                                    ^~~
>    drivers/xen/xen-pciback/conf_space_header.c:65:9: note: initialize the variable 'val' to silence this warning
>            u16 val;
>                   ^
>                    = 0
>    1 warning generated.
>
> vim +/val +121 drivers/xen/xen-pciback/conf_space_header.c
>
>     60
>     61  static int command_write(struct pci_dev *dev, int offset, u16 value, void *data)
>     62  {
>     63          struct xen_pcibk_dev_data *dev_data;
>     64          int err;
>     65          u16 val;
>     66          struct pci_cmd_info *cmd = data;
>     67
>     68          dev_data = pci_get_drvdata(dev);
>     69          if (!pci_is_enabled(dev) && is_enable_cmd(value)) {
>     70                  if (unlikely(verbose_request))
>     71                          printk(KERN_DEBUG DRV_NAME ": %s: enable\n",
>     72                                 pci_name(dev));
>     73                  err = pci_enable_device(dev);
>     74                  if (err)
>     75                          return err;
>     76                  if (dev_data)
>     77                          dev_data->enable_intx = 1;
>     78          } else if (pci_is_enabled(dev) && !is_enable_cmd(value)) {
>     79                  if (unlikely(verbose_request))
>     80                          printk(KERN_DEBUG DRV_NAME ": %s: disable\n",
>     81                                 pci_name(dev));
>     82                  pci_disable_device(dev);
>     83                  if (dev_data)
>     84                          dev_data->enable_intx = 0;
>     85          }
>     86
>     87          if (!dev->is_busmaster && is_master_cmd(value)) {
>     88                  if (unlikely(verbose_request))
>     89                          printk(KERN_DEBUG DRV_NAME ": %s: set bus master\n",
>     90                                 pci_name(dev));
>     91                  pci_set_master(dev);
>     92          } else if (dev->is_busmaster && !is_master_cmd(value)) {
>     93                  if (unlikely(verbose_request))
>     94                          printk(KERN_DEBUG DRV_NAME ": %s: clear bus master\n",
>     95                                 pci_name(dev));
>     96                  pci_clear_master(dev);
>     97          }
>     98
>     99          if (!(cmd->val & PCI_COMMAND_INVALIDATE) &&
>    100              (value & PCI_COMMAND_INVALIDATE)) {
>    101                  if (unlikely(verbose_request))
>    102                          printk(KERN_DEBUG
>    103                                 DRV_NAME ": %s: enable memory-write-invalidate\n",
>    104                                 pci_name(dev));
>    105                  err = pci_set_mwi(dev);
>    106                  if (err) {
>    107                          pr_warn("%s: cannot enable memory-write-invalidate (%d)\n",
>    108                                  pci_name(dev), err);
>    109                          value &= ~PCI_COMMAND_INVALIDATE;
>    110                  }
>    111          } else if ((cmd->val & PCI_COMMAND_INVALIDATE) &&
>    112                     !(value & PCI_COMMAND_INVALIDATE)) {
>    113                  if (unlikely(verbose_request))
>    114                          printk(KERN_DEBUG
>    115                                 DRV_NAME ": %s: disable memory-write-invalidate\n",
>    116                                 pci_name(dev));
>    117                  pci_clear_mwi(dev);
>    118          }
>    119
>    120          if (dev_data && dev_data->allow_interrupt_control) {
>  > 121                  if ((cmd->val ^ val) & PCI_COMMAND_INTX_DISABLE) {
>    122                          if (value & PCI_COMMAND_INTX_DISABLE) {
>    123                                  pci_intx(dev, 0);
>    124                          } else {
>    125                                  /* Do not allow enabling INTx together with MSI or MSI-X. */
>    126                                  switch (xen_pcibk_get_interrupt_type(dev)) {
>    127                                  case INTERRUPT_TYPE_NONE:
>    128                                  case INTERRUPT_TYPE_INTX:
>    129                                          pci_intx(dev, 1);
>    130                                          break;
>    131                                  default:
>    132                                          return PCIBIOS_SET_FAILED;
>    133                                  }
>    134                          }
>    135                  }
>    136          }
>    137
>    138          cmd->val = value;
>    139
>    140          if (!xen_pcibk_permissive && (!dev_data || !dev_data->permissive))
>    141                  return 0;
>    142
>    143          /* Only allow the guest to control certain bits. */
>    144          err = pci_read_config_word(dev, offset, &val);
>    145          if (err || val == value)
>    146                  return err;
>    147
>    148          value &= PCI_COMMAND_GUEST;
>    149          value |= val & ~PCI_COMMAND_GUEST;
>    150
>    151          return pci_write_config_word(dev, offset, value);
>    152  }
>    153
>
> ---
> 0-DAY kernel test infrastructure                 Open Source Technology Center
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/202001112351.gy4c3aUU%25lkp%40intel.com.



-- 
Thanks,
~Nick Desaulniers

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ