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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 21 Apr 2022 17:48:46 +0200 From: Sebastian Andrzej Siewior <bigeasy@...utronix.de> To: Eric Dumazet <edumazet@...gle.com> Cc: netdev <netdev@...r.kernel.org>, "David S. Miller" <davem@...emloft.net>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, Thomas Gleixner <tglx@...utronix.de>, Peter Zijlstra <peterz@...radead.org> Subject: Re: [PATCH net] net: Use this_cpu_inc() to increment net->core_stats On 2022-04-21 08:32:30 [-0700], Eric Dumazet wrote: > On Thu, Apr 21, 2022 at 7:00 AM Sebastian Andrzej Siewior > <bigeasy@...utronix.de> wrote: > > > > The macro dev_core_stats_##FIELD##_inc() disables preemption and invokes > > netdev_core_stats_alloc() to return a per-CPU pointer. > > netdev_core_stats_alloc() will allocate memory on its first invocation > > which breaks on PREEMPT_RT because it requires non-atomic context for > > memory allocation. > > Can you elaborate on this, I am confused ? > > You are saying that on PREEMPT_RT, we can not call > alloc_percpu_gfp(XXX, GFP_ATOMIC | __GFP_NOWARN); > under some contexts ? Correct. On PREEMPT_RT you must not explicitly create an atomic context by - using preempt_disable() - acquiring a raw_spinlock_t lock - using local_irq_disable() while allocating memory. GFP_ATOMIC won't save you. The internal locks within mm (kmalloc() and per-CPU memory) are sleeping locks and can not be acquired in atomic context. > preemption might be disabled by callers of net->core_stats anyways... It won't be disabled by - acquiring a spinlock_t lock - running in softirq or interrupt handler I haven't seen any splats (with RT enabled) other than this preempt_disable() section so far. However only the first caller allocates memory so maybe I add a check later on to be sure. Sebastian
Powered by blists - more mailing lists