mfd: pm8921: Potential NULL dereference in pm8921_remove()
authorDan Carpenter <dan.carpenter@oracle.com>
Thu, 7 Nov 2013 08:04:20 +0000 (11:04 +0300)
committerWilly Tarreau <w@1wt.eu>
Wed, 7 Jun 2017 22:47:00 +0000 (00:47 +0200)
commit d6daef95127e41233ac8e2d8472d8c0cd8687d38 upstream.

We assume that "pmic" could be NULL and then dereference it two lines
later.  I fix this by moving the dereference inside the NULL check.

Fixes: c013f0a56c56 ('mfd: Add pm8xxx irq support')

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Signed-off-by: Willy Tarreau <w@1wt.eu>
drivers/mfd/pm8921-core.c

index ecc137ffa8c3c6369592a5cea5ecd987f9deeed4..a28f434147fed01a3595b9130e6e69cf4df4366d 100644 (file)
@@ -173,11 +173,12 @@ static int pm8921_remove(struct platform_device *pdev)
        drvdata = platform_get_drvdata(pdev);
        if (drvdata)
                pmic = drvdata->pm_chip_data;
-       if (pmic)
+       if (pmic) {
                mfd_remove_devices(pmic->dev);
-       if (pmic->irq_chip) {
-               pm8xxx_irq_exit(pmic->irq_chip);
-               pmic->irq_chip = NULL;
+               if (pmic->irq_chip) {
+                       pm8xxx_irq_exit(pmic->irq_chip);
+                       pmic->irq_chip = NULL;
+               }
        }
        platform_set_drvdata(pdev, NULL);
        kfree(pmic);