From: Julia Lawall Date: Wed, 11 Aug 2010 01:03:12 +0000 (-0700) Subject: drivers/char/n_gsm.c: add missing spin_unlock_irqrestore X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=e73790a57abc1320b3c3a94da43ae24359687d7c;p=deliverable%2Flinux.git 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 --- 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++;