Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1df2dcc authored by Todd Poynor's avatar Todd Poynor Committed by Santosh Shilimkar
Browse files

OMAP: Fix a BUG in l3 error handler.



With the current sequence of registering the irq and
assigning it to the app_irq, debug_irq driver variables,
there can be corner cases where the pending irq gets
triggered immediately after registering, handler gets called
resulting in a crash. So changed this sequence.

Signed-off-by: default avatarsricharan <r.sricharan@ti.com>
Signed-off-by: default avatarTodd Poynor <toddpoynor@google.com>
Signed-off-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
parent 342fd144
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ static int __init omap4_l3_probe(struct platform_device *pdev)
{
	static struct omap4_l3		*l3;
	struct resource	*res;
	int ret, irq;
	int ret;

	l3 = kzalloc(sizeof(*l3), GFP_KERNEL);
	if (!l3)
@@ -176,8 +176,8 @@ static int __init omap4_l3_probe(struct platform_device *pdev)
	/*
	 * Setup interrupt Handlers
	 */
	irq = platform_get_irq(pdev, 0);
	ret = request_irq(irq,
	l3->debug_irq = platform_get_irq(pdev, 0);
	ret = request_irq(l3->debug_irq,
			l3_interrupt_handler,
			IRQF_DISABLED, "l3-dbg-irq", l3);
	if (ret) {
@@ -185,10 +185,9 @@ static int __init omap4_l3_probe(struct platform_device *pdev)
					 OMAP44XX_IRQ_L3_DBG);
		goto err3;
	}
	l3->debug_irq = irq;

	irq = platform_get_irq(pdev, 1);
	ret = request_irq(irq,
	l3->app_irq = platform_get_irq(pdev, 1);
	ret = request_irq(l3->app_irq,
			l3_interrupt_handler,
			IRQF_DISABLED, "l3-app-irq", l3);
	if (ret) {
@@ -196,7 +195,6 @@ static int __init omap4_l3_probe(struct platform_device *pdev)
					 OMAP44XX_IRQ_L3_APP);
		goto err4;
	}
	l3->app_irq = irq;

	return 0;