lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <14124e34-04f7-950e-72fb-64f13e62f57e@suse.de>
Date:   Wed, 11 Oct 2017 09:42:09 -0300
From:   Joao Moreira <jmoreira@...e.de>
To:     Josh Poimboeuf <jpoimboe@...hat.com>,
        Miroslav Benes <mbenes@...e.cz>
Cc:     live-patching@...r.kernel.org, linux-kernel@...r.kernel.org,
        mmarek@...e.cz, pmladek@...e.com, jikos@...e.cz, nstange@...e.de,
        jroedel@...e.de, matz@...e.de, khlebnikov@...dex-team.ru,
        jeyu@...nel.org
Subject: Re: [PATCH 0/8] livepatch: klp-convert tool



On 10/10/2017 11:46 PM, Josh Poimboeuf wrote:
> On Tue, Oct 10, 2017 at 04:17:10PM +0200, Miroslav Benes wrote:
>> On Wed, 30 Aug 2017, Josh Poimboeuf wrote:
>>
>>> On Tue, Aug 29, 2017 at 04:01:32PM -0300, Joao Moreira wrote:
>>>> Livepatches may use symbols which are not contained in its own scope,
>>>> and, because of that, may end up compiled with relocations that will
>>>> only be resolved during module load. Yet, when the referenced symbols are
>>>> not exported, solving this relocation requires information on the object
>>>> that holds the symbol (either vmlinux or modules) and its position inside
>>>> the object, as an object may contain multiple symbols with the same name.
>>>> Providing such information must be done accordingly to what is specified
>>>> in Documentation/livepatch/module-elf-format.txt.
>>>>
>>>> Currently, there is no trivial way to embed the required information as
>>>> requested in the final livepatch elf object. klp-convert solves this
>>>> problem in two different forms: (i) by relying on a symbol map, which is
>>>> built during kernel compilation, to automatically infers the relocation
>>>> targeted symbol, and, when such inference is not possible (ii) by using
>>>> annotations in the elf object to convert the relocation accordingly to
>>>> the specification, enabling it to be handled by the livepatch loader.
>>>>
>>>> Given the above, add support for symbol mapping in the form of
>>>> Symbols.list file; add klp-convert tool; integrate klp-convert tool into
>>>> kbuild; make livepatch modules discernible during kernel compilation
>>>> pipeline; add data-structure and macros to enable users to annotate
>>>> livepatch source code; make modpost stage compatible with livepatches;
>>>> update livepatch-sample and update documentation.
>>>>
>>>> The patch was tested under three use-cases:
>>>>
>>>> use-case 1: There is a relocation in the lp that can be automatically
>>>> resolved by klp-convert (tested by removing the annotations from
>>>> samples/livepatch/livepatch-annotated-sample.c)
>>>>
>>>> use-case 2: There is a relocation in the lp that cannot be automatically
>>>> resolved, as the name of the respective symbol appears in multiple
>>>> objects. The livepatch contains an annotation to enable a correct
>>>> relocation - reproducible with this livepatch sample:
>>>> www.livewire.com.br/suse/klp/livepatch-sample.1.c
>>>>
>>>> use-case 3: There is a relocation in the lp that cannot be automatically
>>>> resolved similarly as 2, but no annotation was provided in the livepatch,
>>>> triggering an error during compilation - reproducible with this livepatch
>>>> sample: www.livewire.com.br/suse/klp/livepatch-sample.2.c
>>>>
>>>> Joao Moreira (2):
>>>>    kbuild: Support for Symbols.list creation
>>>>    documentation: Update on livepatch elf format
>>>>
>>>> Josh Poimboeuf (5):
>>>>    livepatch: Create and include UAPI headers
>>>>    livepatch: Add klp-convert tool
>>>>    livepatch: Add klp-convert annotation helpers
>>>>    modpost: Integrate klp-convert
>>>>    livepatch: Add sample livepatch module
>>>>
>>>> Miroslav Benes (1):
>>>>    modpost: Add modinfo flag to livepatch modules
>>>
>>> Thanks a lot for picking these patches up and improving them.  I've only
>>> glanced at the code, but so far it's looking good.  It may be a few
>>> weeks before a I get a chance to do a proper review.
>>>
>>> One quick question, possibly for Miroslav.  Do we have a plan yet for
>>> dealing with GCC optimizations?
>>>
>>>    https://lkml.kernel.org/r/20161110161053.heua3abuaekz4yy7@treble
>>>
>>> I still like the '-fpreserve-function-abi' idea, but maybe it's not
>>> realistic.
>>
>> I'm sorry for the late response, I failed to reply immediately and then
>> completely forgot about it :(
> 
> No worries...
> 
>> I talked to Martin Jambor from gcc community month ago and he told me it
>> could be possible to do. But we need to come up with a good proposal. We
>> need a good description of what it should do and provide reasons why we
>> need it. I'll talk to him again tomorrow and I'll start to work on the
>> proposal.
> 
> Sounds good!  For klp-convert to be successful, we really need a
> strategy for dealing with such optimizations.  I'm thinking that a
> '-fpreserve-function-abi' flag would be the cleanest way to handle it.
> 
> If we don't have a strategy for dealing with optimizations, then we may
> instead need to go with a binary diff-based tool like kpatch-build.

I'm currently looking into binary diff-based solutions to deal with this 
problem. My plan is to submit a second patch set once I have it 
functional and land both things (klp-convert and bin-diff) in two 
different steps.

Is there any issue with following this schedule? Meaning, do you guys 
still plan on reviewing this patch set or do you prefer me to do 
something differently in terms of approach?

> 
>> Ideas are of course more than welcome.
>>
>> However that might be the easier part. We need to find out what it would
>> mean for the whole kernel and its performance.
> 
> TBH, I'd be surprised if it affected kernel performance in any
> measurable way.  The vast majority of non-inlined functions seem to
> conform to function ABI.
> 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ