lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <DB3PR0402MB3916979BF8E1E94C29063F3EF5580@DB3PR0402MB3916.eurprd04.prod.outlook.com>
Date:   Wed, 27 Mar 2019 05:05:28 +0000
From:   Anson Huang <anson.huang@....com>
To:     "dmitry.torokhov@...il.com" <dmitry.torokhov@...il.com>
CC:     Fabio Estevam <fabio.estevam@....com>,
        "linux-input@...r.kernel.org" <linux-input@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        dl-linux-imx <linux-imx@....com>
Subject: RE: [PATCH] input: keyboard: snvs: make sure irq is handled correctly

Hi, Dmitry

Best Regards!
Anson Huang

> -----Original Message-----
> From: dmitry.torokhov@...il.com [mailto:dmitry.torokhov@...il.com]
> Sent: 2019年3月27日 12:29
> To: Anson Huang <anson.huang@....com>
> Cc: Fabio Estevam <fabio.estevam@....com>; linux-input@...r.kernel.org;
> linux-kernel@...r.kernel.org; dl-linux-imx <linux-imx@....com>
> Subject: Re: [PATCH] input: keyboard: snvs: make sure irq is handled
> correctly
> 
> Hi Anson,
> 
> On Wed, Mar 27, 2019 at 02:47:06AM +0000, Anson Huang wrote:
> > 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, need to move
> > the IRQ request to after driver data initialization done. 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@....com>
> > ---
> >  drivers/input/keyboard/snvs_pwrkey.c | 17 ++++++++---------
> >  1 file changed, 8 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/input/keyboard/snvs_pwrkey.c
> > b/drivers/input/keyboard/snvs_pwrkey.c
> > index effb632..6ff41fd 100644
> > --- a/drivers/input/keyboard/snvs_pwrkey.c
> > +++ b/drivers/input/keyboard/snvs_pwrkey.c
> > @@ -148,15 +148,6 @@ static int imx_snvs_pwrkey_probe(struct
> platform_device *pdev)
> >  		return error;
> >  	}
> >
> > -	error = devm_request_irq(&pdev->dev, pdata->irq,
> > -			       imx_snvs_pwrkey_interrupt,
> > -			       0, pdev->name, pdev);
> > -
> > -	if (error) {
> > -		dev_err(&pdev->dev, "interrupt not available.\n");
> > -		return error;
> > -	}
> > -
> >  	error = input_register_device(input);
> >  	if (error < 0) {
> >  		dev_err(&pdev->dev, "failed to register input device\n");
> @@ -166,6
> > +157,14 @@ static int imx_snvs_pwrkey_probe(struct platform_device
> *pdev)
> >  	pdata->input = input;
> >  	platform_set_drvdata(pdev, pdata);
> >
> > +	error = devm_request_irq(&pdev->dev, pdata->irq,
> > +				 imx_snvs_pwrkey_interrupt,
> > +				 0, pdev->name, pdev);
> > +	if (error) {
> > +		dev_err(&pdev->dev, "interrupt not available.\n");
> > +		return error;
> > +	}
> 
> Instead of moving devm_request_irq() around could you simply move
> pdata->input = input assignment higher? It is perfectly fine to try
> calling input_event() on input device that is allocated but not yet registered.

OK, make sense.

> 
> > +
> >  	device_init_wakeup(&pdev->dev, pdata->wakeup);
> 
> Unrelated suggestion:
> 
> Can you try calling dev_pm_set_wake_irq(&pdev->dev, pdata->irq) here and
> I think you will be able to get rid of suspend/resume methods in the driver.

OK, I will look into it, and send another patch to improve this.

Thanks.
Anson

> 
> Thanks.
> 
> --
> Dmitry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ