mailbox: zynqmp: Fix counts of child nodes
authorTanmay Shah <tanmay.shah@amd.com>
Sat, 11 Mar 2023 01:24:04 +0000 (17:24 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 09:53:28 +0000 (11:53 +0200)
[ Upstream commit f72f805e72882c361e2a612c64a6e549f3da7152 ]

If child mailbox node status is disabled it causes
crash in interrupt handler. Fix this by assigning
only available child node during driver probe.

Fixes: 4981b82ba2ff ("mailbox: ZynqMP IPI mailbox controller")
Signed-off-by: Tanmay Shah <tanmay.shah@amd.com>
Acked-by: Michal Simek <michal.simek@amd.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20230311012407.1292118-2-tanmay.shah@amd.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/mailbox/zynqmp-ipi-mailbox.c

index 29f09ded6e7391d090b48a7fad701af3391cfedf..d097f45b0e5f5cedeb079031c9fbf45da07bd940 100644 (file)
@@ -634,7 +634,12 @@ static int zynqmp_ipi_probe(struct platform_device *pdev)
        struct zynqmp_ipi_mbox *mbox;
        int num_mboxes, ret = -EINVAL;
 
-       num_mboxes = of_get_child_count(np);
+       num_mboxes = of_get_available_child_count(np);
+       if (num_mboxes == 0) {
+               dev_err(dev, "mailbox nodes not available\n");
+               return -EINVAL;
+       }
+
        pdata = devm_kzalloc(dev, struct_size(pdata, ipi_mboxes, num_mboxes),
                             GFP_KERNEL);
        if (!pdata)