diff options
author | Tetsuo Handa <[email protected]> | 2019-02-16 19:59:33 +0900 |
---|---|---|
committer | Petr Mladek <[email protected]> | 2019-02-21 10:41:15 +0100 |
commit | cbae05d32ff68233f00cbad9fda0382cc982d821 (patch) | |
tree | ab996f5dc1a8497669e66cf717889d5302d779ce /kernel/fail_function.c | |
parent | 15ff2069cb7f967dae6a8f8c176ba51447c75f00 (diff) |
printk: Pass caller information to log_store().
When thread1 called printk() which did not end with '\n', and then thread2
called printk() which ends with '\n' before thread1 calls pr_cont(), the
partial content saved into "struct cont" is flushed by thread2 despite the
partial content was generated by thread1. This leads to confusing output
as if the partial content was generated by thread2. Fix this problem by
passing correct caller information to log_store().
Before:
[ T8533] abcdefghijklm
[ T8533] ABCDEFGHIJKLMNOPQRSTUVWXYZ
[ T8532] nopqrstuvwxyz
[ T8532] abcdefghijklmnopqrstuvwxyz
[ T8533] abcdefghijklm
[ T8533] ABCDEFGHIJKLMNOPQRSTUVWXYZ
[ T8532] nopqrstuvwxyz
After:
[ T8507] abcdefghijklm
[ T8508] ABCDEFGHIJKLMNOPQRSTUVWXYZ
[ T8507] nopqrstuvwxyz
[ T8507] abcdefghijklmnopqrstuvwxyz
[ T8507] abcdefghijklm
[ T8508] ABCDEFGHIJKLMNOPQRSTUVWXYZ
[ T8507] nopqrstuvwxyz
Link: http://lkml.kernel.org/r/1550314773-8607-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp
To: Dmitry Vyukov <[email protected]>
To: Sergey Senozhatsky <[email protected]>
To: Steven Rostedt <[email protected]>
Cc: [email protected]
Signed-off-by: Tetsuo Handa <[email protected]>
Reviewed-by: Sergey Senozhatsky <[email protected]>
[pmladek: broke 80-column rule where it made more harm than good]
Signed-off-by: Petr Mladek <[email protected]>
Diffstat (limited to 'kernel/fail_function.c')
0 files changed, 0 insertions, 0 deletions