diff options
Diffstat (limited to 'kernel/printk.c')
-rw-r--r-- | kernel/printk.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/kernel/printk.c b/kernel/printk.c index 7015733793e8..e3602d0755b0 100644 --- a/kernel/printk.c +++ b/kernel/printk.c | |||
@@ -73,7 +73,6 @@ EXPORT_SYMBOL(oops_in_progress); | |||
73 | * driver system. | 73 | * driver system. |
74 | */ | 74 | */ |
75 | static DECLARE_MUTEX(console_sem); | 75 | static DECLARE_MUTEX(console_sem); |
76 | static DECLARE_MUTEX(secondary_console_sem); | ||
77 | struct console *console_drivers; | 76 | struct console *console_drivers; |
78 | EXPORT_SYMBOL_GPL(console_drivers); | 77 | EXPORT_SYMBOL_GPL(console_drivers); |
79 | 78 | ||
@@ -382,7 +381,7 @@ out: | |||
382 | return error; | 381 | return error; |
383 | } | 382 | } |
384 | 383 | ||
385 | asmlinkage long sys_syslog(int type, char __user *buf, int len) | 384 | SYSCALL_DEFINE3(syslog, int, type, char __user *, buf, int, len) |
386 | { | 385 | { |
387 | return do_syslog(type, buf, len); | 386 | return do_syslog(type, buf, len); |
388 | } | 387 | } |
@@ -742,11 +741,6 @@ EXPORT_SYMBOL(vprintk); | |||
742 | 741 | ||
743 | #else | 742 | #else |
744 | 743 | ||
745 | asmlinkage long sys_syslog(int type, char __user *buf, int len) | ||
746 | { | ||
747 | return -ENOSYS; | ||
748 | } | ||
749 | |||
750 | static void call_console_drivers(unsigned start, unsigned end) | 744 | static void call_console_drivers(unsigned start, unsigned end) |
751 | { | 745 | { |
752 | } | 746 | } |
@@ -896,12 +890,14 @@ void suspend_console(void) | |||
896 | printk("Suspending console(s) (use no_console_suspend to debug)\n"); | 890 | printk("Suspending console(s) (use no_console_suspend to debug)\n"); |
897 | acquire_console_sem(); | 891 | acquire_console_sem(); |
898 | console_suspended = 1; | 892 | console_suspended = 1; |
893 | up(&console_sem); | ||
899 | } | 894 | } |
900 | 895 | ||
901 | void resume_console(void) | 896 | void resume_console(void) |
902 | { | 897 | { |
903 | if (!console_suspend_enabled) | 898 | if (!console_suspend_enabled) |
904 | return; | 899 | return; |
900 | down(&console_sem); | ||
905 | console_suspended = 0; | 901 | console_suspended = 0; |
906 | release_console_sem(); | 902 | release_console_sem(); |
907 | } | 903 | } |
@@ -917,11 +913,9 @@ void resume_console(void) | |||
917 | void acquire_console_sem(void) | 913 | void acquire_console_sem(void) |
918 | { | 914 | { |
919 | BUG_ON(in_interrupt()); | 915 | BUG_ON(in_interrupt()); |
920 | if (console_suspended) { | ||
921 | down(&secondary_console_sem); | ||
922 | return; | ||
923 | } | ||
924 | down(&console_sem); | 916 | down(&console_sem); |
917 | if (console_suspended) | ||
918 | return; | ||
925 | console_locked = 1; | 919 | console_locked = 1; |
926 | console_may_schedule = 1; | 920 | console_may_schedule = 1; |
927 | } | 921 | } |
@@ -931,6 +925,10 @@ int try_acquire_console_sem(void) | |||
931 | { | 925 | { |
932 | if (down_trylock(&console_sem)) | 926 | if (down_trylock(&console_sem)) |
933 | return -1; | 927 | return -1; |
928 | if (console_suspended) { | ||
929 | up(&console_sem); | ||
930 | return -1; | ||
931 | } | ||
934 | console_locked = 1; | 932 | console_locked = 1; |
935 | console_may_schedule = 0; | 933 | console_may_schedule = 0; |
936 | return 0; | 934 | return 0; |
@@ -984,7 +982,7 @@ void release_console_sem(void) | |||
984 | unsigned wake_klogd = 0; | 982 | unsigned wake_klogd = 0; |
985 | 983 | ||
986 | if (console_suspended) { | 984 | if (console_suspended) { |
987 | up(&secondary_console_sem); | 985 | up(&console_sem); |
988 | return; | 986 | return; |
989 | } | 987 | } |
990 | 988 | ||