diff options
author | Milton Miller <miltonm@bga.com> | 2009-01-08 02:14:18 +0000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-01-13 14:48:01 +1100 |
commit | 9fef3d2d15ae8ca24e4a145f2e189eea145d18c2 (patch) | |
tree | deb3764686dcbeb5ab013ecf6183d55c514f216f /drivers/char | |
parent | a1c5a8932bbb75b550deb156d890027827fc9d6e (diff) | |
download | linux-9fef3d2d15ae8ca24e4a145f2e189eea145d18c2.tar.bz2 |
hvc_console: Change an mb() to smp_mb() and add some comments
I remember some history on this barrier. There was a race between
open via /dev/console and the tty being fully setup. Its also why
there is a temporary variable and the global is assigned at the end
of the function.
Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/hvc_console.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c index 5a8a4c28c867..f2685b747fb9 100644 --- a/drivers/char/hvc_console.c +++ b/drivers/char/hvc_console.c @@ -876,8 +876,11 @@ static int hvc_init(void) goto stop_thread; } - /* FIXME: This mb() seems completely random. Remove it. */ - mb(); + /* + * Make sure tty is fully registered before allowing it to be + * found by hvc_console_device. + */ + smp_mb(); hvc_driver = drv; return 0; |