From e73790a57abc1320b3c3a94da43ae24359687d7c Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Tue, 10 Aug 2010 18:03:12 -0700 Subject: [PATCH] drivers/char/n_gsm.c: add missing spin_unlock_irqrestore Add a spin_unlock_irqrestore missing on the error path. Converting the return to break leads to the spin_unlock_irqrestore at the end of the function. The semantic match that finds this problem is as follows: (http://coccinelle.lip6.fr/) // @@ expression E1; @@ * spin_lock_irqsave(E1,...); <+... when != E1 if (...) { ... when != E1 * return ...; } ...+> * spin_unlock_irqrestore(E1,...); // Signed-off-by: Julia Lawall Cc: Greg Kroah-Hartman Cc: Alan Cox Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- drivers/char/n_gsm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/char/n_gsm.c b/drivers/char/n_gsm.c index 099105e0894e..04ef3ef0a422 100644 --- a/drivers/char/n_gsm.c +++ b/drivers/char/n_gsm.c @@ -919,7 +919,7 @@ static void gsm_dlci_data_sweep(struct gsm_mux *gsm) else len = gsm_dlci_data_output_framed(gsm, dlci); if (len < 0) - return; + break; /* DLCI empty - try the next */ if (len == 0) i++; -- 2.20.1