On Tue, 23 Apr 2019 15:25:09 +0900 Sergey Senozhatsky <sergey.senozhatsky.w...@gmail.com> wrote:
> Petr, Steven, > > RFC > > Normally, we grab console_sem lock before we iterate consoles > list, which is necessary if we want to be race free. The only exception > to this rule is console_flush_on_panic(). However, it seems that we are > not fully race free - register_console() iterates console drivers list > in unsafe manner in several places. E.g. the following scenarion: > > CPU0 CPU1 > register_console() unregister_console() > console_lock() > for_each_console() // modify console_drivers > con->foo kfree(con) > > So I have two quick-n-dirty patches, which remove unsafe console list > access. > > What do you think? I just skimmed the patches and haven't done a thorough review, but the concept seems sane to me. -- Steve > > Sergey Senozhatsky (2): > printk: lock console_sem before we unregister boot consoles > printk: take console_sem when accessing console drivers list > > kernel/printk/printk.c | 117 ++++++++++++++++++++++++----------------- > 1 file changed, 69 insertions(+), 48 deletions(-) >