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
| ||
|
Message-ID: <561DBC1A.5060902@linux.intel.com> Date: Wed, 14 Oct 2015 10:21:14 +0800 From: Jiang Liu <jiang.liu@...ux.intel.com> To: Marc Zyngier <marc.zyngier@....com>, Thomas Gleixner <tglx@...utronix.de>, Bjorn Helgaas <bhelgaas@...gle.com> Cc: linux-kernel@...r.kernel.org Subject: Re: [PATCH] genirq/msi: Do not use pci_msi_[un]mask_irq as default methods On 2015/10/14 2:14, Marc Zyngier wrote: > When we create a generic MSI domain, that MSI_FLAG_USE_DEF_CHIP_OPS > is set, and that any of .mask or .unmask are NULL in the irq_chip > structure, we set them to pci_msi_[un]mask_irq. > > This is a bad idea for at least two reasons: > - PCI_MSI might not be selected, kernel fails to build (yes, this is > legitimate, at least on arm64!) > - This may not be a PCI/MSI domain at all (platform MSI, for example) > > Either way, this looks wrong. Move the overriding of mask/unmask to > the PCI counterpart, and panic is any of these two methods is not > set in the core code (they really should be present). Hi Marc, Thanks for fixing this, Reviewed-by: Jiang Liu <jiang.liu@...ux.intel.com> Thanks, Gerry > > Signed-off-by: Marc Zyngier <marc.zyngier@....com> > --- > drivers/pci/msi.c | 4 ++++ > kernel/irq/msi.c | 6 +----- > 2 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c > index d449714..4a7da3c 100644 > --- a/drivers/pci/msi.c > +++ b/drivers/pci/msi.c > @@ -1243,6 +1243,10 @@ static void pci_msi_domain_update_chip_ops(struct msi_domain_info *info) > BUG_ON(!chip); > if (!chip->irq_write_msi_msg) > chip->irq_write_msi_msg = pci_msi_domain_write_msg; > + if (!chip->irq_mask) > + chip->irq_mask = pci_msi_mask_irq; > + if (!chip->irq_unmask) > + chip->irq_unmask = pci_msi_unmask_irq; > } > > /** > diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c > index 7e6512b..be9149f 100644 > --- a/kernel/irq/msi.c > +++ b/kernel/irq/msi.c > @@ -228,11 +228,7 @@ static void msi_domain_update_chip_ops(struct msi_domain_info *info) > { > struct irq_chip *chip = info->chip; > > - BUG_ON(!chip); > - if (!chip->irq_mask) > - chip->irq_mask = pci_msi_mask_irq; > - if (!chip->irq_unmask) > - chip->irq_unmask = pci_msi_unmask_irq; > + BUG_ON(!chip || !chip->irq_mask || !chip->irq_unmask); > if (!chip->irq_set_affinity) > chip->irq_set_affinity = msi_domain_set_affinity; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists