soc: fsl: dpio: register dpio irq handlers after dpio create
The dpio irqs must be registered when you can actually receive interrupts, ie when the dpios are created. Kernel goes through NULL pointer dereference errors followed by kernel panic because the dpio irqs are enabled before the dpio is created. Tested-by: Grigore Popescu <grigore.popescu@nxp.com> Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> Signed-off-by: Grigore Popescu <grigore.popescu@nxp.com> (cherry picked from commit 50722e6685488ddadf15804c85b6da0a107d6847)5.4-rM2-2.2.x-imx-squashed
parent
6446af3feb
commit
603554005b
|
@ -236,10 +236,6 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
|
|||
goto err_allocate_irqs;
|
||||
}
|
||||
|
||||
err = register_dpio_irq_handlers(dpio_dev, desc.cpu);
|
||||
if (err)
|
||||
goto err_register_dpio_irq;
|
||||
|
||||
priv->io = dpaa2_io_create(&desc, dev);
|
||||
if (!priv->io) {
|
||||
dev_err(dev, "dpaa2_io_create failed\n");
|
||||
|
@ -247,6 +243,10 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
|
|||
goto err_dpaa2_io_create;
|
||||
}
|
||||
|
||||
err = register_dpio_irq_handlers(dpio_dev, desc.cpu);
|
||||
if (err)
|
||||
goto err_register_dpio_irq;
|
||||
|
||||
dev_info(dev, "probed\n");
|
||||
dev_dbg(dev, " receives_notifications = %d\n",
|
||||
desc.receives_notifications);
|
||||
|
|
Loading…
Reference in New Issue