From patchwork Tue Jul 3 23:34:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laura Abbott X-Patchwork-Id: 10505605 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2714060225 for ; Tue, 3 Jul 2018 23:38:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1390B28749 for ; Tue, 3 Jul 2018 23:38:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 04CB6289CE; Tue, 3 Jul 2018 23:38:04 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 90AB628749 for ; Tue, 3 Jul 2018 23:38:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=HnkvFjO1xIcop/n8Cr3RqHVXBDN0ruma7xj6RIrFKDg=; b=FpQ2+5AZSDjUW29IXNrf3cDpHz kas/gZzgqBCf9iRJYNnaa0rzJbFHjfWMeFVBop5ewCu+IGJgOl+6Kf51C94gqAeGy2OUzUliwtL6b 6TEMeRURFsz7lNdDcM9Q8EM4xVmTpyl974DXnso7KJW6hSomNanEvf9H5/Qf9cMXC3BQPrl7NDChV tG2rC3fqBz2nzSqK1SsFOoKKUcjTotRYKM8aYYd/WQ6jo25+XZzRpAdTsYHeqWLcuY9b83vhlAuub IhA+bMRkm5sVxdVw0JBKZWEbg2N5/718jvMqQDjErzmJUUKWZMCnlAn4zDXJ436Oj/XKiXhPKSTaK Ummb/7sw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1faUrv-0004ro-Du; Tue, 03 Jul 2018 23:37:59 +0000 Received: from mail-oi0-f66.google.com ([209.85.218.66]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1faUor-0002Dw-4w for linux-arm-kernel@lists.infradead.org; Tue, 03 Jul 2018 23:34:56 +0000 Received: by mail-oi0-f66.google.com with SMTP id n84-v6so7211344oib.9 for ; Tue, 03 Jul 2018 16:34:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=JSiYJxVu4Lk+P/iYMSDC9lASMjQX+zcA6OF5z2ph/ww=; b=RDNftXR+B7xWexlt+ect6jYd8yCgCGLTBQ7UhtV/2ZiGUFYTPBtodkMqZ1DR9+Av3p dHkgjWHS+D3wXSF/troeC6DZwebCQNFcOBCYG6EuMRxqwqAfuOwddKulAVD2epdOf+k3 rbUu5os0DCIWSwTY7QcyG0TYpnQmVVnOSdDKcngTO/T0o3Vd69TA7JRhnmM8MZa2F1DG UrwlYImiUrUqGkZgQkfpztsynnafrFl55qJ5ymctjEAm0tosQkSWYsMIi+Sq9DMCbcAB gIPpsfq1BbhAt8fyGr2G/05V5yp920dGzxKnhXO8P6LX+h2qpPRxp9yoZAWwhp0RdxlT 0Ifw== X-Gm-Message-State: APt69E3HjYN3iAOqBfRezQdMfZIV9VLQhCaZeBiMbj5I4ruvDu6tFXt0 7YpHrPQicEsvpSmBW+qLLuCNsA== X-Google-Smtp-Source: AAOMgpchIoMRSlaUTxrdAuAj5tDPAXcPw609bKZdPYqy4jkcwDBVmtRJdRIvqjJtIYJWZ6u2978aBw== X-Received: by 2002:aca:dec6:: with SMTP id v189-v6mr1739997oig.98.1530660878014; Tue, 03 Jul 2018 16:34:38 -0700 (PDT) Received: from labbott-redhat.redhat.com ([2601:602:9802:a8dc::f0c1]) by smtp.gmail.com with ESMTPSA id h22-v6sm1828702otc.25.2018.07.03.16.34.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 03 Jul 2018 16:34:36 -0700 (PDT) From: Laura Abbott To: Andy Lutomirski , mjw@fedoraproject.org, "H . J . Lu" , Masahiro Yamada , Michael Ellerman , Catalin Marinas , Will Deacon Subject: [PATCHv5 1/4] kbuild: Add build salt to the kernel and modules Date: Tue, 3 Jul 2018 16:34:27 -0700 Message-Id: <20180703233430.14416-2-labbott@redhat.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180703233430.14416-1-labbott@redhat.com> References: <20180703233430.14416-1-labbott@redhat.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180703_163449_549688_D39F4BB9 X-CRM114-Status: GOOD ( 20.88 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Nick Clifton , linux-kbuild@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, X86 ML , linux-kernel@vger.kernel.org, Cary Coutant , Laura Abbott , Linus Torvalds , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP The build id generated from --build-id can be generated in several different ways, with the default being the sha1 on the output of the linked file. For distributions, it can be useful to make sure this ID is unique, even if the actual file contents don't change. The easiest way to do this is to insert a section with some data. Add an ELF note to both the kernel and module which contains some data based off of a config option. Signed-off-by: Masahiro Yamada Signed-off-by: Laura Abbott --- v5: I used S-o-b here since the majority of the code was written already. Please feel free to change the tag if you think it's not appropriate. I also tweaked this to take an ascii string instead of just a hex value since this makes things much easier on the distribution side. --- include/linux/build-salt.h | 20 ++++++++++++++++++++ init/Kconfig | 9 +++++++++ init/version.c | 3 +++ scripts/mod/modpost.c | 3 +++ 4 files changed, 35 insertions(+) create mode 100644 include/linux/build-salt.h diff --git a/include/linux/build-salt.h b/include/linux/build-salt.h new file mode 100644 index 000000000000..bb007bd05e7a --- /dev/null +++ b/include/linux/build-salt.h @@ -0,0 +1,20 @@ +#ifndef __BUILD_SALT_H +#define __BUILD_SALT_H + +#include + +#define LINUX_ELFNOTE_BUILD_SALT 0x100 + +#ifdef __ASSEMBLER__ + +#define BUILD_SALT \ + ELFNOTE(Linux, LINUX_ELFNOTE_BUILD_SALT, .asciz CONFIG_BUILD_SALT) + +#else + +#define BUILD_SALT \ + ELFNOTE32("Linux", LINUX_ELFNOTE_BUILD_SALT, CONFIG_BUILD_SALT) + +#endif + +#endif /* __BUILD_SALT_H */ diff --git a/init/Kconfig b/init/Kconfig index 041f3a022122..8de789f40db9 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -107,6 +107,15 @@ config LOCALVERSION_AUTO which is done within the script "scripts/setlocalversion".) +config BUILD_SALT + string "Build ID Salt" + default "Linux" + help + The build ID is used to link binaries and their debug info. Setting + this option will use the value in the calculation of the build id. + This is mostly useful for distributions which want to ensure the + build is unique between builds. It's safe to leave the default. + config HAVE_KERNEL_GZIP bool diff --git a/init/version.c b/init/version.c index bfb4e3f4955e..ef4012ec4375 100644 --- a/init/version.c +++ b/init/version.c @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -49,3 +50,5 @@ const char linux_proc_banner[] = "%s version %s" " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")" " (" LINUX_COMPILER ") %s\n"; + +BUILD_SALT; diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 1663fb19343a..dc6d714e4dcb 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c @@ -2125,10 +2125,13 @@ static int check_modname_len(struct module *mod) **/ static void add_header(struct buffer *b, struct module *mod) { + buf_printf(b, "#include \n"); buf_printf(b, "#include \n"); buf_printf(b, "#include \n"); buf_printf(b, "#include \n"); buf_printf(b, "\n"); + buf_printf(b, "BUILD_SALT;\n"); + buf_printf(b, "\n"); buf_printf(b, "MODULE_INFO(vermagic, VERMAGIC_STRING);\n"); buf_printf(b, "MODULE_INFO(name, KBUILD_MODNAME);\n"); buf_printf(b, "\n");