GCC options for kernel live-patching (Was: Add a new option to control inlining only on static functions)
Qing Zhao
qing.zhao@oracle.com
Tue Oct 2 14:00:00 GMT 2018
> On Oct 2, 2018, at 3:33 AM, Martin Jambor <mjambor@suse.cz> wrote:
>
> Hi,
>
> my apologies for being terse, I'm in a meeting.
>
> On Mon, Oct 01 2018, Qing Zhao wrote:
>> Hi, Martin,
>>
>> I have studied a little more on
>>
>> https://github.com/marxin/kgraft-analysis-tool/blob/master/README.md <https://github.com/marxin/kgraft-analysis-tool/blob/master/README.md>
>>
>> in the Section “Usages”, from the example, we can see:
>>
>> the tool will report a list of affected functions for a function that will be patched.
>> In this list, it includes all callers of the patched function, and the cloned functions from the patched function due to ipa const-propogation or ipa sra.
>>
>> My question:
>>
>> what’s the current action to handle the cloned functions from the
>> patched function due to ipa const-proposation or ipa sra, etc?
>
> If we want to patch an inlined, cloned, or IPA-SRAed function, we also
> patch all of its callers.
take the example from the link:
$ gcc /home/marxin/Programming/linux/aesni-intel_glue.i -O2 -fdump-ipa-clones -c
$ ./kgraft-ipa-analysis.py aesni-intel_glue.i.000i.ipa-clones
[..skipped..]
Function: fls64/63 (./arch/x86/include/asm/bitops.h:479:90)
inlining to: __ilog2_u64/132 (include/linux/log2.h:40:5)
inlining to: ablkcipher_request_alloc/1639 (include/linux/crypto.h:979:82)
constprop: ablkcipher_request_alloc.constprop.8/3198 (include/linux/crypto.h:979:82)
inlining to: helper_rfc4106_decrypt/3007 (arch/x86/crypto/aesni-intel_glue.c:1016:12)
inlining to: helper_rfc4106_encrypt/3006 (arch/x86/crypto/aesni-intel_glue.c:939:12)
Affected functions: 5
__ilog2_u64/132 (include/linux/log2.h:40:5)
ablkcipher_request_alloc/1639 (include/linux/crypto.h:979:82)
ablkcipher_request_alloc.constprop.8/3198 (include/linux/crypto.h:979:82)
helper_rfc4106_decrypt/3007 (arch/x86/crypto/aesni-intel_glue.c:1016:12)
helper_rfc4106_encrypt/3006 (arch/x86/crypto/aesni-intel_glue.c:939:12)
[..skipped..]
if we want to patch the function “fls64/63”, what else functions we need to patch, too? my guess is:
**all the callers:
__ilog2_u64/132
ablkcipher_request_alloc/1639
helper_rfc4106_decrypt/3007
helper_rfc4106_encrypt/3006
**and:
ablkcipher_request_alloc.constprop.8/3198
is the above correct?
how to generate patch for ablkcipher_request_alloc.constprop.8/3198? since it’s not a function in the source code?
Qing
>
>>
>> since those cloned functions are NOT in the source code level, how to generate the patches for the cloned functions? how to guarantee that after
>> the patched function is changed, the same ipa const-propogation or ipa
>> sra will still happened?
>
> You don't.
>
> Martin
>
>>
More information about the Gcc-patches
mailing list