Skip to content

Commit ef3e73a

Browse files
covanammaddy-kerneldev
authored andcommitted
powerpc/pseries/msi: Fix NULL pointer dereference at irq domain teardown
pseries_msi_ops_teardown() reads pci_dev* from msi_alloc_info_t. However, pseries_msi_ops_prepare() does not populate this structure, thus it is all zeros. Consequently, pseries_msi_ops_teardown() triggers a NULL pointer dereference crash. struct pci_dev is available in struct irq_domain. Read it there instead. Reported-by: Venkat Rao Bagalkote <[email protected]> Closes: https://lore.kernel.org/linuxppc-dev/[email protected]/ Tested-by: Venkat Rao Bagalkote <[email protected]> Signed-off-by: Nam Cao <[email protected]> Signed-off-by: Madhavan Srinivasan <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent 3a86608 commit ef3e73a

1 file changed

Lines changed: 1 addition & 2 deletions

File tree

  • arch/powerpc/platforms/pseries

arch/powerpc/platforms/pseries/msi.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,7 @@ static int pseries_msi_ops_prepare(struct irq_domain *domain, struct device *dev
443443
*/
444444
static void pseries_msi_ops_teardown(struct irq_domain *domain, msi_alloc_info_t *arg)
445445
{
446-
struct msi_desc *desc = arg->desc;
447-
struct pci_dev *pdev = msi_desc_to_pci_dev(desc);
446+
struct pci_dev *pdev = to_pci_dev(domain->dev);
448447

449448
rtas_disable_msi(pdev);
450449
}

0 commit comments

Comments
 (0)