diff options
author | Alan Cox <alan@linux.intel.com> | 2013-01-24 19:28:15 -0500 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-02-07 21:02:40 -0500 |
commit | 50e244cc793d511b86adea24972f3a7264cae114 (patch) | |
tree | de59e5f228a256ad09521524639e1b5b6e49b8cc /include | |
parent | 84b603abd23300df8ee5fb1c23c83634c2aaedea (diff) |
fb: rework locking to fix lock ordering on takeover
Adjust the console layer to allow a take over call where the caller
already holds the locks. Make the fb layer lock in order.
This is partly a band aid, the fb layer is terminally confused about the
locking rules it uses for its notifiers it seems.
[akpm@linux-foundation.org: remove stray non-ascii char, tidy comment]
[akpm@linux-foundation.org: export do_take_over_console()]
[airlied: cleanup another non-ascii char]
Signed-off-by: Alan Cox <alan@linux.intel.com>
Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Jiri Kosina <jkosina@suse.cz>
Cc: stable <stable@vger.kernel.org>
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/console.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/console.h b/include/linux/console.h index dedb082fe50f..4ef4307dfb82 100644 --- a/include/linux/console.h +++ b/include/linux/console.h | |||
@@ -78,6 +78,7 @@ int con_is_bound(const struct consw *csw); | |||
78 | int register_con_driver(const struct consw *csw, int first, int last); | 78 | int register_con_driver(const struct consw *csw, int first, int last); |
79 | int unregister_con_driver(const struct consw *csw); | 79 | int unregister_con_driver(const struct consw *csw); |
80 | int take_over_console(const struct consw *sw, int first, int last, int deflt); | 80 | int take_over_console(const struct consw *sw, int first, int last, int deflt); |
81 | int do_take_over_console(const struct consw *sw, int first, int last, int deflt); | ||
81 | void give_up_console(const struct consw *sw); | 82 | void give_up_console(const struct consw *sw); |
82 | #ifdef CONFIG_HW_CONSOLE | 83 | #ifdef CONFIG_HW_CONSOLE |
83 | int con_debug_enter(struct vc_data *vc); | 84 | int con_debug_enter(struct vc_data *vc); |