lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Fri, 30 Sep 2016 10:15:44 +0900 From: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com> To: Petr Mladek <pmladek@...e.com> Cc: Sergey Senozhatsky <sergey.senozhatsky@...il.com>, Jan Kara <jack@...e.cz>, Andrew Morton <akpm@...ux-foundation.org>, Tejun Heo <tj@...nel.org>, Calvin Owens <calvinowens@...com>, linux-kernel@...r.kernel.org, Sergey Senozhatsky <sergey.senozhatsky.work@...il.com> Subject: Re: [RFC][PATCH 6/7] printk: use alternative printk buffers On (09/29/16 15:00), Petr Mladek wrote: [..] > > @@ -1791,7 +1791,7 @@ asmlinkage int vprintk_emit(int facility, int level, > > zap_locks(); > > } > > > > - lockdep_off(); > > + alt_printk_enter(); > > IMHO, we could not longer enter vprintk_emit() recursively. The same > section that was guarded by logbuf_cpu is guarded by > alt_printk_enter()/exit() now. you might be very right here. I'll take a look. > IMHO, we could remove all the logic around the recursion. Then we > could even disable/enable irqs inside alt_printk_enter()/exit(). I was thinking of doing something like this; but that would require storing 'unsigned long' flags in per-cpu data alt_enter() { unsinged long flags; local_irq_save(flags); ctx = this_cpu_ptr(); ctx->flags = flags; ... } alt_exit() { ctx = this_cpu_ptr(); ... local_irq_restore(ctx->flags); } and the decision was to keep `unsigned long flags' on stack in the alt_enter/exit caller. besides in most of the cases we already have it (in vprintk_emit() and console_unlock()). but I can certainly hide these details in alt_enter/exit. > And to correct myself from the previous mail. It is enough to disable > IRQs. It is enough to make sure that we will not preempt and will > stay on the same CPU. ah, no prob. > > @@ -2479,7 +2490,9 @@ void console_unlock(void) > > */ > > raw_spin_lock(&logbuf_lock); > > retry = console_seq != log_next_seq; > > - raw_spin_unlock_irqrestore(&logbuf_lock, flags); > > + raw_spin_unlock(&logbuf_lock); > > + alt_printk_exit(); > > + local_irq_restore(flags); > > We should mention that this patch makes an obsolete artefact from > printk_deferred(). It opens the door for another big cleanup and > relief. do you mean that, once alt_printk is done properly, we can drop printk_deferred()? I was thinking of it, but decided not to mention/touch it in this patch set. -ss
Powered by blists - more mailing lists