android_kernel_xiaomi_sm8350/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
cow.h
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
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
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
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
slip_common.h
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
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
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
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