On Fri 23-06-17 14:08:42, Sebastian Andrzej Siewior wrote: > 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. yeah, makes sense to me. > > 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 :) Ohh, I didn't know about that. > > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > > > > Acked-by: Michal Hocko <mhocko@xxxxxxxx> > Thanks. > > Sebastian -- Michal Hocko SUSE Labs -- 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>