Re: [PATCH v3 1/7] Fix "x86/alternatives: Lockdep-enforce text_mutex in text_poke*()"

From: Nadav Amit
Date: Mon Nov 05 2018 - 13:14:32 EST


From: Thomas Gleixner
Sent: November 4, 2018 at 8:58:20 PM GMT
> To: Nadav Amit <namit@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx>, x86@xxxxxxxxxx>, H. Peter Anvin <hpa@xxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>, Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>, Jiri Kosina <jkosina@xxxxxxx>, Andy Lutomirski <luto@xxxxxxxxxx>, Kees Cook <keescook@xxxxxxxxxxxx>, Dave Hansen <dave.hansen@xxxxxxxxx>
> Subject: Re: [PATCH v3 1/7] Fix "x86/alternatives: Lockdep-enforce text_mutex in text_poke*()"
>
>
> On Fri, 2 Nov 2018, Nadav Amit wrote:
>
>> text_mutex is expected to be held before text_poke() is called, but we
>> cannot add a lockdep assertion since kgdb does not take it, and instead
>> *supposedly* ensures the lock is not taken and will not be acquired by
>> any other core while text_poke() is running.
>>
>> The reason for the "supposedly" comment is that it is not entirely clear
>> that this would be the case if gdb_do_roundup is zero.
>>
>> Add a comment to clarify this behavior, and restore the assertions as
>> they were before the recent commit.
>
> It restores nothing. It just removes the assertion.

Sorry - wrong commit log. There were no other assertions before.

>
>> This partially reverts commit 9222f606506c ("x86/alternatives:
>> Lockdep-enforce text_mutex in text_poke*()")
>
> That opens up the same can of worms again, which took us a while to close.

Iâm surprised. This patch only removes one assertion that was added two
months ago.

> Can we please instead split out the text_poke() code into a helper function
> and have two callers:
>
> text_poke() which contains the assert
>
> text_poke_kgdb() which does not

Sure. I will send another version once I realize how to deal with the other
concerns that Peter and Andy raised.

Regards,
Nadav