linux/arch/um/drivers
Jeff Dike d79a580936 [PATCH] uml: console locking fixes
Clean up the console driver locking.  There are various problems here,
including sleeping under a spinlock and spinlock recursion, some of which are
fixed here.  This patch deals with the locking involved with opens and closes.
 The problem is that an mconsole request to change a console's configuration
can race with an open.  Changing a configuration should only be done when a
console isn't opened.  Also, an open must be looking at a stable
configuration.  In addition, a get configuration request must observe the same
locking since it must also see a stable configuration.  With the old locking,
it was possible for this to hang indefinitely in some cases because open would
block for a long time waiting for a connection from the host while holding the
lock needed by the mconsole request.

As explained in the long comment, this is fixed by adding a spinlock for the
use count and configuration and a mutex for the actual open and close.

Signed-off-by: Jeff Dike <jdike@addtoit.com>
Cc: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-02-11 10:51:21 -08:00
..
chan_kern.c WorkQueue: Fix up arch-specific work items where possible 2006-12-05 19:36:26 +00:00
chan_user.c Fix typos in doc and comments 2006-11-30 05:32:19 +01:00
cow_sys.h [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
cow_user.c [PATCH] uml: fix patch mismerge 2006-05-01 18:17:44 -07:00
cow.h [PATCH] uml: avoid warnings for diffent names for an unsigned quadword 2006-04-11 06:18:37 -07:00
daemon_kern.c [PATCH] uml: use get_random_bytes() after random pool is seeded 2006-12-07 08:39:29 -08:00
daemon_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
daemon.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
fd.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
harddog_kern.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
harddog_user.c [PATCH] uml: separate libc-dependent helper code 2005-11-07 07:53:31 -08:00
hostaudio_kern.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
line.c [PATCH] uml: console locking fixes 2007-02-11 10:51:21 -08:00
Makefile [PATCH] uml: revert block driver use of host AIO 2005-10-12 08:22:26 -07:00
mcast_kern.c [PATCH] uml: use get_random_bytes() after random pool is seeded 2006-12-07 08:39:29 -08:00
mcast_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
mcast.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
mconsole_kern.c WorkQueue: Fix up arch-specific work items where possible 2006-12-05 19:36:26 +00:00
mconsole_user.c [PATCH] uml: mconsole fixes 2006-10-24 22:01:10 -07:00
mmapper_kern.c [PATCH] uml: mmapper - remove just added but wrong "const" attribute 2006-10-20 10:26:36 -07:00
net_kern.c [PATCH] uml: fix net_kern workqueue abuse 2006-12-13 09:05:47 -08:00
net_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
null.c [PATCH] uml: locking documentation 2006-09-29 09:18:04 -07:00
pcap_kern.c [PATCH] uml: use get_random_bytes() after random pool is seeded 2006-12-07 08:39:29 -08:00
pcap_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
pcap_user.h [PATCH] missed const in prototype 2006-10-10 15:37:24 -07:00
port_kern.c WorkQueue: Fix up arch-specific work items where possible 2006-12-05 19:36:26 +00:00
port_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
port.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pty.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
random.c [PATCH] uml: locking documentation 2006-09-29 09:18:04 -07:00
slip_common.c [PATCH] uml: slirp and slip driver cleanups and fixes 2005-06-13 20:58:43 -07:00
slip_common.h [PATCH] uml: fix hugest stack users 2006-02-01 08:53:22 -08:00
slip_kern.c [PATCH] uml: use get_random_bytes() after random pool is seeded 2006-12-07 08:39:29 -08:00
slip_user.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
slip.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
slirp_kern.c [PATCH] uml: use get_random_bytes() after random pool is seeded 2006-12-07 08:39:29 -08:00
slirp_user.c [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
slirp.h [PATCH] uml: const more data 2006-09-27 08:26:15 -07:00
ssl.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
ssl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stderr_console.c [PATCH] uml: locking documentation 2006-09-29 09:18:04 -07:00
stdio_console.c [PATCH] uml: console locking fixes 2007-02-11 10:51:21 -08:00
stdio_console.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tty.c [PATCH] uml: split memory allocation prototypes out of user.h 2006-10-20 10:26:36 -07:00
ubd_kern.c [PATCH] uml ubd driver: various little changes 2006-10-31 08:07:00 -08:00
ubd_user.c [PATCH] uml: revert block driver use of host AIO 2005-10-12 08:22:26 -07:00
xterm_kern.c [PATCH] uml pt_regs fixes 2006-10-08 16:34:08 -07:00
xterm.c [PATCH] uml: cleanup run_helper() API to fix a leak 2006-10-20 10:26:36 -07:00
xterm.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00