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

Signed-off-by: Ludovic Barre <[email protected]>
Signed-off-by: Fabien Dessenne <[email protected]>
---
 drivers/mailbox/mailbox-test.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/mailbox/mailbox-test.c b/drivers/mailbox/mailbox-test.c
index 4e2bfba..4e4ac4b 100644
--- a/drivers/mailbox/mailbox-test.c
+++ b/drivers/mailbox/mailbox-test.c
@@ -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");
-- 
2.7.4

Reply via email to