Skip to content

Commit a15932f

Browse files
Yang Yingliangjoergroedel
authored andcommitted
iommu/dart: check return value after calling platform_get_resource()
It will cause null-ptr-deref in resource_size(), if platform_get_resource() returns NULL, move calling resource_size() after devm_ioremap_resource() that will check 'res' to avoid null-ptr-deref. And use devm_platform_get_and_ioremap_resource() to simplify code. Fixes: 46d1fb0 ("iommu/dart: Add DART iommu driver") Signed-off-by: Yang Yingliang <[email protected]> Reviewed-by: Sven Peter <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Joerg Roedel <[email protected]>
1 parent e6f48be commit a15932f

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

drivers/iommu/apple-dart.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -859,16 +859,15 @@ static int apple_dart_probe(struct platform_device *pdev)
859859
dart->dev = dev;
860860
spin_lock_init(&dart->lock);
861861

862-
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
862+
dart->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
863+
if (IS_ERR(dart->regs))
864+
return PTR_ERR(dart->regs);
865+
863866
if (resource_size(res) < 0x4000) {
864867
dev_err(dev, "MMIO region too small (%pr)\n", res);
865868
return -EINVAL;
866869
}
867870

868-
dart->regs = devm_ioremap_resource(dev, res);
869-
if (IS_ERR(dart->regs))
870-
return PTR_ERR(dart->regs);
871-
872871
dart->irq = platform_get_irq(pdev, 0);
873872
if (dart->irq < 0)
874873
return -ENODEV;

0 commit comments

Comments
 (0)