Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5f66eaf authored by Dan Carpenter's avatar Dan Carpenter Committed by Bjorn Helgaas
Browse files

PCI: Set ->mask_pos correctly



The "+" operation has higher precedence than "?:" and ->msi_cap is
always non-zero here so the original statement is equivalent to:

    entry->mask_pos = PCI_MSI_MASK_64;

Which wasn't the intent.

[bhelgaas: my fault from 78b5a310]
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent ab86e974
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -563,8 +563,10 @@ static int msi_capability_init(struct pci_dev *dev, int nvec)
	entry->msi_attrib.default_irq	= dev->irq;	/* Save IOAPIC IRQ */
	entry->msi_attrib.pos		= dev->msi_cap;

	entry->mask_pos = dev->msi_cap + (control & PCI_MSI_FLAGS_64BIT) ?
		PCI_MSI_MASK_64 : PCI_MSI_MASK_32;
	if (control & PCI_MSI_FLAGS_64BIT)
		entry->mask_pos = dev->msi_cap + PCI_MSI_MASK_64;
	else
		entry->mask_pos = dev->msi_cap + PCI_MSI_MASK_32;
	/* All MSIs are unmasked by default, Mask them all */
	if (entry->msi_attrib.maskbit)
		pci_read_config_dword(dev, entry->mask_pos, &entry->masked);