Re: [x86/entry_32] aa93e2ad74: BUG:soft_lockup-CPU##stuck_for#s![systemd-logind:#]

From: Sean Christopherson
Date: Tue Jan 11 2022 - 20:29:05 EST


On Tue, Jan 11, 2022, Peter Zijlstra wrote:
> On Thu, Jan 06, 2022 at 04:35:23PM +0800, kernel test robot wrote:
> >
> >
> > Greeting,
> >
> > FYI, we noticed the following commit (built with clang-14):
> >
> > commit: aa93e2ad7464ffb90155a5ffdde963816f86d5dc ("x86/entry_32: Remove .fixup usage")
> > https://git.kernel.org/cgit/linux/kernel/git/tip/tip.git x86/core
> >
> > in testcase: kernel-selftests
> > version:
> > with following parameters:
> >
> > group: x86
> >
>
> It would be very useful if this thing would also say which of the many
> x86 selftests fails... it appears to be: ldt_gdt_32.
>
> The below fixes it, but I'm still not entirely sure what the actual
> problem is, although Andy did find a bug in that the exception handler
> should do: *(ss:esp) = 0, adding ss-base (using insn_get_seg_base())
> doesn't seem to cure things.

Because I was curious...

The issue is that PARANOID_EXIT_TO_KERNEL_MODE in the handle_exception_return
path overwrites the entry stack data with the task stack data, restoring the "bad"
segment value.