All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2.6] fix duart locking
@ 2004-09-16  0:19 Peter Buckingham
  0 siblings, 0 replies; only message in thread
From: Peter Buckingham @ 2004-09-16  0:19 UTC (permalink / raw)
  To: Ralf Baechle, linux-mips

[-- Attachment #1: Type: text/plain, Size: 229 bytes --]

Hi Ralf,

the duart code tries to hold a spin lock across a call to 
copy_from_user(). This patch releases the spin lock before the call and 
reacquires it afterwards.

peter

Signed-off-by: Peter Buckingham <peter@pantasys.com>

[-- Attachment #2: p --]
[-- Type: text/plain, Size: 966 bytes --]

? drivers/i2c/algos/.built-in.o.cmd
? drivers/i2c/algos/.i2c-algo-bit.o.cmd
? drivers/i2c/busses/.built-in.o.cmd
? drivers/i2c/chips/.built-in.o.cmd
? drivers/input/misc/.built-in.o.cmd
? drivers/input/misc/.pcspkr.o.cmd
? drivers/input/misc/.uinput.o.cmd
Index: drivers/char/sb1250_duart.c
===================================================================
RCS file: /home/cvs/linux/drivers/char/sb1250_duart.c,v
retrieving revision 1.23
diff -u -r1.23 sb1250_duart.c
--- drivers/char/sb1250_duart.c	15 Oct 2003 16:19:12 -0000	1.23
+++ drivers/char/sb1250_duart.c	16 Sep 2004 00:10:31 -0000
@@ -326,10 +326,11 @@
 		if (c <= 0) break;
 
 		if (from_user) {
+			spin_unlock_irqrestore(&us->outp_lock, flags);
 			if (copy_from_user(us->outp_buf + us->outp_tail, buf, c)) {
-				spin_unlock_irqrestore(&us->outp_lock, flags);
 				return -EFAULT;
 			}
+			spin_lock_irqsave(&us->outp_lock, flags);
 		} else {
 			memcpy(us->outp_buf + us->outp_tail, buf, c);
 		}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-09-16  0:19 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-16  0:19 [PATCH 2.6] fix duart locking Peter Buckingham

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.