| From bf2a7ca39fd3ab47ef71c621a7ee69d1813b1f97 Mon Sep 17 00:00:00 2001 |
| From: Anson Huang <anson.huang@nxp.com> |
| Date: Wed, 3 Apr 2019 15:14:44 -0700 |
| Subject: Input: snvs_pwrkey - initialize necessary driver data before enabling IRQ |
| |
| From: Anson Huang <anson.huang@nxp.com> |
| |
| commit bf2a7ca39fd3ab47ef71c621a7ee69d1813b1f97 upstream. |
| |
| SNVS IRQ is requested before necessary driver data initialized, |
| if there is a pending IRQ during driver probe phase, kernel |
| NULL pointer panic will occur in IRQ handler. To avoid such |
| scenario, just initialize necessary driver data before enabling |
| IRQ. This patch is inspired by NXP's internal kernel tree. |
| |
| Fixes: d3dc6e232215 ("input: keyboard: imx: add snvs power key driver") |
| Signed-off-by: Anson Huang <Anson.Huang@nxp.com> |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/input/keyboard/snvs_pwrkey.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/input/keyboard/snvs_pwrkey.c |
| +++ b/drivers/input/keyboard/snvs_pwrkey.c |
| @@ -148,6 +148,9 @@ static int imx_snvs_pwrkey_probe(struct |
| return error; |
| } |
| |
| + pdata->input = input; |
| + platform_set_drvdata(pdev, pdata); |
| + |
| error = devm_request_irq(&pdev->dev, pdata->irq, |
| imx_snvs_pwrkey_interrupt, |
| 0, pdev->name, pdev); |
| @@ -163,9 +166,6 @@ static int imx_snvs_pwrkey_probe(struct |
| return error; |
| } |
| |
| - pdata->input = input; |
| - platform_set_drvdata(pdev, pdata); |
| - |
| device_init_wakeup(&pdev->dev, pdata->wakeup); |
| |
| return 0; |