On 2017-06-23 14:02:33 [+0200], Michal Hocko wrote: > On Fri 23-06-17 13:47:55, Sebastian Andrzej Siewior wrote: > > get_cpu_var() disables preemption and returns the per-CPU version of the > > variable. Disabling preemption is useful to ensure atomic access to the > > variable within the critical section. > > In this case however, after the per-CPU version of the variable is > > obtained the ->free_lock is acquired. For that reason it seems the raw > > accessor could be used. It only seems that ->slots_ret should be > > retested (because with disabled preemption this variable can not be set > > to NULL otherwise). > > This popped up during PREEMPT-RT testing because it tries to take > > spinlocks in a preempt disabled section. > > Ohh, because the spinlock can sleep with PREEMPT-RT right? Don't we have yup. > much more places like that? It is perfectly valid to take a spinlock well we have more than just this one patch to fix things like that :) The easy/simple things (like this one which is valid in RT and !RT) I try to push upstream asap and the other remain in the RT tree. > while the preemption is disabled. E.g. we do take ptl lock inside > kmap_atomic sections which disables preemption on 32b systems. we don't disable preemption in kmap_atomic(). It would be bad :) > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > > Acked-by: Michal Hocko <mhocko@xxxxxxxx> Thanks. Sebastian -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>