Re: [tip:x86/urgent] x86/kasan: Fix boot with KASAN=y and PROFILE_ANNOTATED_BRANCHES=y

From: Andrey Ryabinin
Date: Tue Mar 14 2017 - 10:58:48 EST


On 03/14/2017 05:09 PM, Alexander Potapenko wrote:
> On Tue, Mar 14, 2017 at 12:03 AM, tip-bot for Andrey Ryabinin
> <tipbot@xxxxxxxxx> wrote:
>> Commit-ID: be3606ff739d1c1be36389f8737c577ad87e1f57
>> Gitweb: http://git.kernel.org/tip/be3606ff739d1c1be36389f8737c577ad87e1f57
>> Author: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx>
>> AuthorDate: Mon, 13 Mar 2017 19:33:37 +0300
>> Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
>> CommitDate: Tue, 14 Mar 2017 00:00:55 +0100
>>
>> x86/kasan: Fix boot with KASAN=y and PROFILE_ANNOTATED_BRANCHES=y
>>
>> The kernel doesn't boot with both PROFILE_ANNOTATED_BRANCHES=y and KASAN=y
>> options selected. With branch profiling enabled we end up calling
>> ftrace_likely_update() before kasan_early_init(). ftrace_likely_update() is
>> built with KASAN instrumentation, so calling it before kasan has been
>> initialized leads to crash.
>>
>> Use DISABLE_BRANCH_PROFILING define to make sure that we don't call
>> ftrace_likely_update() from early code before kasan_early_init().
> Won't it suffice to disable instrumentation of ftrace_likely_update() and alike?

Not just ftrace_likely_update(), but also all functions that ftrace_likely_update() might call.
That would suffice, but it would be unreasonable way to fix this, given that we can just
ftrace_likely_update() call.
Plus we don't have any sane way to disable instrumentation per-function.