On Wed, Aug 18, 2021 at 01:53:28PM +0200, Peter Zijlstra wrote: > On Wed, Aug 18, 2021 at 12:56:41PM +0200, Peter Zijlstra wrote: > > On Wed, Aug 18, 2021 at 11:42:28AM +0100, Will Deacon wrote: > > > > I think the idea looks good, but perhaps we could wrap things up a bit: > > > > > > /* Comment about why this is useful with RT */ > > > static cpumask_t *clear_user_cpus_ptr(struct task_struct *p) > > > { > > > struct cpumask *user_mask = NULL; > > > > > > swap(user_mask, p->user_cpus_ptr); > > > return user_mask; > > > } > > > > > > void release_user_cpus_ptr(struct task_struct *p) > > > { > > > kfree(clear_user_cpus_ptr(p)); > > > } > > > > > > Then just use clear_user_cpus_ptr() in sched/core.c where we know what > > > we're doing (well, at least one of us does!). > > > > OK, I'll go make it like that. > > Something like so then? Looks good to me, thanks! Will