On Mon, Sep 17, 2018 at 02:15:03PM -0500, Bjorn Helgaas wrote: > A WARN_ON() shouldn't cause the kernel to panic. Do you mean that it > causes a backtrace? I think that's the intended behavior, because > calling this twice would be a driver bug, and we want to find and fix > those bugs. > > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > > index f2ef896..324840f 100644 > > --- a/drivers/pci/msi.c > > +++ b/drivers/pci/msi.c > > @@ -958,7 +958,9 @@ static int __pci_enable_msix(struct pci_dev *dev, > > struct msix_entry *entries, > > } > > } > > } > > - WARN_ON(!!dev->msix_enabled); > > + > > + if (dev->msix_enabled) > > + return -EINVAL; This is a grave driver bug, so we should keep a trace. Then again handling even grave driver bugs more gracefull is a good idea, so I'd vote for: if (WARN_ON_ONCE(dev->msix_enabled)) return -EINVAL;