> On Oct 2, 2018, at 3:33 AM, Martin Jambor <mjambor@xxxxxxx> 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 > >>