diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2011-09-09 17:36:37 -0400 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2012-03-25 00:29:53 +0100 |
commit | d8c215adbf3901aa7d00a0f17f08d77be689f838 (patch) | |
tree | 88f7f49abb5944725f3b60d8f28a41580e7f915f /arch/um/drivers/ssl.c | |
parent | 43574c1afea4f798592c03cf4d4ecea4fd0a8416 (diff) | |
download | linux-d8c215adbf3901aa7d00a0f17f08d77be689f838.tar.gz linux-d8c215adbf3901aa7d00a0f17f08d77be689f838.tar.bz2 linux-d8c215adbf3901aa7d00a0f17f08d77be689f838.zip |
um: convert count_lock to mutex, fix a race in line_open()
If two processes are opening the same line, the second to get
into line_open() will decide that it doesn't need to do anything
(correctly) or wait for anything. The latter, unfortunately,
is incorrect - the first opener might not be through yet. We
need to have exclusion covering the entire line_init(), including
the blocking parts. Moreover, the next patch will need to
widen the exclusion on mconsole side of things, also including
the blocking bits, so let's just convert that sucker to mutex...
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/drivers/ssl.c')
-rw-r--r-- | arch/um/drivers/ssl.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/um/drivers/ssl.c b/arch/um/drivers/ssl.c index 445288ff0650..23cffd6d85af 100644 --- a/arch/um/drivers/ssl.c +++ b/arch/um/drivers/ssl.c @@ -201,7 +201,7 @@ static int ssl_init(void) serial_lines[i].valid = 1; } spin_lock_init(&serial_lines[i].lock); - spin_lock_init(&serial_lines[i].count_lock); + mutex_init(&serial_lines[i].count_lock); serial_lines[i].driver = &driver; } ssl_driver = register_lines(&driver, &ssl_ops, serial_lines, |