crypto: atmel - fix checks of error code returned by devm_ioremap_resource()
authorVladimir Zapolskiy <vz@mleia.com>
Sun, 6 Mar 2016 01:21:52 +0000 (03:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Apr 2016 16:08:46 +0000 (09:08 -0700)
commit 9b52d55f4f0e2bb9a34abbcf99e05e17f1b3b281 upstream.

The change fixes potential oops while accessing iomem on invalid
address, if devm_ioremap_resource() fails due to some reason.

The devm_ioremap_resource() function returns ERR_PTR() and never
returns NULL, which makes useless a following check for NULL.

Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
Fixes: b0e8b3417a62 ("crypto: atmel - use devm_xxx() managed function")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/crypto/atmel-aes.c
drivers/crypto/atmel-sha.c
drivers/crypto/atmel-tdes.c

index fb16d812c8f555493f3a2527c0c551bc6de59139..1dffb13e5c2f8134fedb1a84b2cef3daef10fdce 100644 (file)
@@ -1396,9 +1396,9 @@ static int atmel_aes_probe(struct platform_device *pdev)
        }
 
        aes_dd->io_base = devm_ioremap_resource(&pdev->dev, aes_res);
-       if (!aes_dd->io_base) {
+       if (IS_ERR(aes_dd->io_base)) {
                dev_err(dev, "can't ioremap\n");
-               err = -ENOMEM;
+               err = PTR_ERR(aes_dd->io_base);
                goto res_err;
        }
 
index 3178f84d2757c9f3de8ea6114831d43f2eb17507..0dadb6332f0eb7621875a9f35526a33581e50cd8 100644 (file)
@@ -1405,9 +1405,9 @@ static int atmel_sha_probe(struct platform_device *pdev)
        }
 
        sha_dd->io_base = devm_ioremap_resource(&pdev->dev, sha_res);
-       if (!sha_dd->io_base) {
+       if (IS_ERR(sha_dd->io_base)) {
                dev_err(dev, "can't ioremap\n");
-               err = -ENOMEM;
+               err = PTR_ERR(sha_dd->io_base);
                goto res_err;
        }
 
index 2c7a628d0375fd43d80f82084b38eed009a8f032..bf467d7be35cfe2d94fccdbb884716c948017bd6 100644 (file)
@@ -1417,9 +1417,9 @@ static int atmel_tdes_probe(struct platform_device *pdev)
        }
 
        tdes_dd->io_base = devm_ioremap_resource(&pdev->dev, tdes_res);
-       if (!tdes_dd->io_base) {
+       if (IS_ERR(tdes_dd->io_base)) {
                dev_err(dev, "can't ioremap\n");
-               err = -ENOMEM;
+               err = PTR_ERR(tdes_dd->io_base);
                goto res_err;
        }