Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752543AbdH3SA3 (ORCPT ); Wed, 30 Aug 2017 14:00:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:48068 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751549AbdH3SA1 (ORCPT ); Wed, 30 Aug 2017 14:00:27 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 53955267CD Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jpoimboe@redhat.com Date: Wed, 30 Aug 2017 13:00:25 -0500 From: Josh Poimboeuf To: Joao Moreira Cc: live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, mbenes@suse.cz, mmarek@suse.cz, pmladek@suse.com, jikos@suse.cz, nstange@suse.de, jroedel@suse.de, matz@suse.de, khlebnikov@yandex-team.ru, jeyu@kernel.org Subject: Re: [PATCH 0/8] livepatch: klp-convert tool Message-ID: <20170830180025.3s5tscqf5isqwg5n@treble> References: <20170829190140.401-1-jmoreira@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20170829190140.401-1-jmoreira@suse.de> User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 30 Aug 2017 18:00:27 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3301 Lines: 70 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. -- Josh