Re: [PATCH 01/16] x86, fpu: wrap get_xsave_addr() to make it safer

From: Borislav Petkov
Date: Wed Apr 22 2015 - 09:31:59 EST


On Wed, Apr 22, 2015 at 03:16:18PM +0200, Oleg Nesterov wrote:
> I agree, tsk_used_math(tsk) looks better, simpy because we have this
> argument.
>
> But this "tsk" should be always current, otherwise this code is wrong

This is exactly what I'm asking: is that always the case?...

> anyway. Say, unlazy_fpu(tsk) can't work if tsk != current.
>
> So perhaps the comment should be updated...
>
> > Because used_math() is looking at current, maybe even in
> > preemption-enabled paths - I'm eyeing task_get_bounds_dir() - and
> > that current might get changed from under us and it might happen that
> > current != tsk. Yes, no?
>
> Not sure I understand... "current" can't change from under us?

... I'm not sure all tsk_get_xsave_field() callers disable preemption.
If not, then current can change from under us...

> Even if this CPU switches to another thread which executes the same code,
> that thread will obviously see another "current", but its "tsk" variable
> will still match its "current".

Well, we want to see if @tsk used math, not necessarily if current used
math, especially if it is another task, right?

I read tsk_get_xsave_field(@tsk, ) as give me the xsave field of @tsk
but doing used_math() we're querying current and I'm not sure

tsk == current

in all the call sites of tsk_get_xsave_field().

Does that make more sense?

--
Regards/Gruss,
Boris.

ECO tip #101: Trim your mails when you reply.
--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/