mailbox: mailbox-test: fix null pointer if no mmio
authorFabien Dessenne <fabien.dessenne@st.com>
Fri, 4 Jan 2019 13:47:16 +0000 (14:47 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 5 Dec 2019 08:21:35 +0000 (09:21 +0100)
commit 6899b4f7c99c72968e58e502f96084f74f6e5e86 upstream.

Fix null pointer issue if resource_size is called with no ioresource.

Signed-off-by: Ludovic Barre <ludovic.barre@st.com>
Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mailbox/mailbox-test.c

index 58bfafc..129b365 100644 (file)
@@ -363,22 +363,24 @@ static int mbox_test_probe(struct platform_device *pdev)
 
        /* It's okay for MMIO to be NULL */
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       size = resource_size(res);
        tdev->tx_mmio = devm_ioremap_resource(&pdev->dev, res);
-       if (PTR_ERR(tdev->tx_mmio) == -EBUSY)
+       if (PTR_ERR(tdev->tx_mmio) == -EBUSY) {
                /* if reserved area in SRAM, try just ioremap */
+               size = resource_size(res);
                tdev->tx_mmio = devm_ioremap(&pdev->dev, res->start, size);
-       else if (IS_ERR(tdev->tx_mmio))
+       } else if (IS_ERR(tdev->tx_mmio)) {
                tdev->tx_mmio = NULL;
+       }
 
        /* If specified, second reg entry is Rx MMIO */
        res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
-       size = resource_size(res);
        tdev->rx_mmio = devm_ioremap_resource(&pdev->dev, res);
-       if (PTR_ERR(tdev->rx_mmio) == -EBUSY)
+       if (PTR_ERR(tdev->rx_mmio) == -EBUSY) {
+               size = resource_size(res);
                tdev->rx_mmio = devm_ioremap(&pdev->dev, res->start, size);
-       else if (IS_ERR(tdev->rx_mmio))
+       } else if (IS_ERR(tdev->rx_mmio)) {
                tdev->rx_mmio = tdev->tx_mmio;
+       }
 
        tdev->tx_channel = mbox_test_request_channel(pdev, "tx");
        tdev->rx_channel = mbox_test_request_channel(pdev, "rx");