mfd: twl6030-irq: Make sure to call request_irq before using the irq_num
Subsystems (2)
PATCH 1/1 mfd: twl6030-irq: Make sure to call request_irq before using the irq_num
I was trying to fix the error handling part because in the case of request_irq failure, it should call kthread_stop instead of free_irq. But it seems more reasonable to do request_irq before calling kthread_run.
Signed-off-by Axel Lin <[email protected]>
--- drivers/mfd/twl6030-irq.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-)
drivers/mfd/twl6030-irq.c +10 -8
@@ -332,12 +332,6 @@ int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)/* install an irq handler to demultiplex the TWL6030 interrupt */ init_completion (&irq_event); - task =kthread_run (twl6030_irq_thread, (void *)irq_num,"twl6030-irq" ); -if (IS_ERR (task)) { -pr_err ("twl6030: could not create irq %d thread!\n" , irq_num); - status =PTR_ERR (task); - goto fail_kthread; - } status =request_irq (irq_num, handle_twl6030_pih,IRQF_DISABLED ,"TWL6030-PIH" , &irq_event);
@@ -345,11 +339,19 @@ int twl6030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)pr_err ("twl6030: could not claim irq%d: %d\n" , irq_num, status); goto fail_irq; } + + task =kthread_run (twl6030_irq_thread, (void *)irq_num,"twl6030-irq" ); +if (IS_ERR (task)) { +pr_err ("twl6030: could not create irq %d thread!\n" , irq_num); + status =PTR_ERR (task); + goto fail_kthread; + }return status; -fail_irq: -free_irq (irq_num, &irq_event); fail_kthread: +free_irq (irq_num, &irq_event); + +fail_irq:for (i = irq_base; i < irq_end; i++)irq_set_chip_and_handler (i,NULL ,NULL );return status;
Signature · 1 line
1.7.4.1
Hi Axel,
Quoted 3 lines · Axel Lin
I was trying to fix the error handling part because in the case of
request_irqfailure, it should callkthread_stopinstead offree_irq. But it seems more reasonable to dorequest_irqbefore callingkthread_run.
I don't have the hardware, but that makes sense to me. Unless some from TI NACK this patch, I'm applying it.
Cheers,
Samuel.
Signature · 2 lines
Intel Open Source Technology Centre http://oss.intel.com/