[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <e78ff391-3141-bf0b-6fe1-4ff7204414fb@pengutronix.de>
Date: Fri, 29 Jul 2022 12:21:31 +0200
From: Ahmad Fatoum <a.fatoum@...gutronix.de>
To: Kshitiz Varshney <kshitiz.varshney@....com>,
Horia Geanta <horia.geanta@....com>,
Pankaj Gupta <pankaj.gupta@....com>,
Varun Sethi <V.Sethi@....com>,
Herbert Xu <herbert@...dor.apana.org.au>,
"David S . Miller" <davem@...emloft.net>,
Iuliana Prodan <iuliana.prodan@....com>,
Gaurav Jain <gaurav.jain@....com>,
Rahul Kumar Yadav <rahulkumar.yadav@....com>,
Vabhav Sharma <vabhav.sharma@....com>,
Sahil Malhotra <sahil.malhotra@....com>,
Matt Mackall <mpm@...enic.com>,
Shawn Guo <shawnguo@...nel.org>,
Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>,
Steffen Trumtrar <s.trumtrar@...gutronix.de>,
PrasannaKumar Muralidharan <prasannatsmkumar@...il.com>,
Martin Kaiser <martin@...ser.cx>
Cc: linux-imx@....com, linux-crypto@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v1] Moving init_completion before request_irq
Hello Kshitiz,
On 29.07.22 12:02, Kshitiz Varshney wrote:
> Issue:
> While servicing interrupt, trying to access variable rng_op_done,
> which is not yet initalized hence causing kernel to crash
> while booting.
>
> Fix:
> Moving initialization of rng_op_done before request_irq.
>
> Fixes: 1d5449445bd0 (hwrng: mx-rngc - add a driver for Freescale RNGC)
> Signed-off-by: Kshitiz Varshney <kshitiz.varshney@....com>
Thanks for your patch.
> + init_completion(&rngc->rng_op_done);
> +
> ret = devm_request_irq(&pdev->dev,
> irq, imx_rngc_irq, 0, pdev->name, (void *)rngc);
This should probably be moved below imx_rngc_irq_mask_clear(rngc).
init_completion can stay where it is. That way:
- You initialize rngc fully before registering the IRQ handler
- You don't handle pending IRQs that you want to dismiss anyway
- If the IRQ happens to be because of a SEED_DONE due to a previous
boot stage, you don't end up completing the completion prematurely.
Cheers,
Ahmad
> if (ret) {
> @@ -277,7 +279,6 @@ static int imx_rngc_probe(struct platform_device *pdev)
> goto err;
> }
>
> - init_completion(&rngc->rng_op_done);
>
> rngc->rng.name = pdev->name;
> rngc->rng.init = imx_rngc_init;
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
Powered by blists - more mailing lists