On Tue, Jul 24, 2018 at 04:35:09PM +0200, Sebastian Andrzej Siewior wrote:
> I doubt that there any need to set ->active_mm. It is used by the
> scheduler to keep track of the "currently used mm" so it can reuse one
> for the kernel thread which does not own one and take a reference on it
> so it does not go away while the thread (that borrows it) is active.

>  void efi_switch_mm(struct mm_struct *mm)
>  {
> -     task_lock(current);
>       efi_scratch.prev_mm = current->active_mm;
> -     current->active_mm = mm;
>       switch_mm(efi_scratch.prev_mm, mm, NULL);
> -     task_unlock(current);
>  }

I think that's broken. Take for instance stuff like
perf_callchain_user32() -> get_segment_base(). That looks at active_mm
to get at the current LDT.

Now, I'm not saying the whole perf vs EFI thing isn't already terminally
wrecked, but the rule is that active_mm really should point at the
current active mm, and the above breaks that.
--
To unsubscribe from this list: send the line "unsubscribe linux-efi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to