Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp2254762ybg; Sun, 27 Oct 2019 14:29:43 -0700 (PDT) X-Google-Smtp-Source: APXvYqz2pTM8lWWDmNIv4ilyfli4Eyvr8DpRuaqVpmYPyJQEn9B1CFiXdcDaCJyIf7rg0Aa77nFG X-Received: by 2002:a17:906:4554:: with SMTP id s20mr13994151ejq.283.1572211783298; Sun, 27 Oct 2019 14:29:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572211783; cv=none; d=google.com; s=arc-20160816; b=PlqNTt/Q2G/YMHMdmonU9uohuIDTrUBJNgR1XaHoOqUCMGYgm0bXLYfh0YBd+OI8du Tx7piJPei2XbLVgsUKJiakcA5NlIMqtrMAlH3P7I0ifttF9DEqZoysdgRNDm6BaRmShL FiM1CEnLooBGPW1J0bMauHRwIacrGEwtljifdrgzeWrd72K2FCPW6kxYo3vgYUwcq3Ye NW2LC53vcQCnF5bVWiKZ09L0bzNNMwulCFTfWiuGlpxdyMP4iv66zlshFakEI48mvVaE fAWf2+KbPMiSsVJ71dvLTVzeaDlF2cUDjCFFCAMGO0i5KpJtWMV94si7yFyVFsf0g2xW y20Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=cZTVo4Kv3mZXUansqX6INV9g2IOOXKAm8rW8yfKpNxc=; b=GFERp3TZQ/n2+Px6PLja3xMjwvSgmUm/mrj5zqVKH06PUJDBWOnwLH1mhv7TySkExN OsIy+vpsaxIhiKMX/CAcmhUCnYQQp7uhYNlKe0jkHu2nV6ZR59Eosvd3ROD4GfxY27XC 2v6kqplpQTHnWuksVVjr/5YubkiV5mu3r9VvkCBcNecynvoawmLMu2ujIcavKjC3jtjM ti6NgRrC7+J9ptwIoshgNGfc6AkO1gATeap2fR12FIFcXELhe14sKwjGhADE0VcHIvPF 2pZq3VR0zXU7EgtROpLWGvne0ItfqZt3zMbevQgEPLpEwRlR181ijPwda5DLkYv9Ca7m qfpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HPaQt6UM; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 5si6344966edy.95.2019.10.27.14.29.19; Sun, 27 Oct 2019 14:29:43 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=HPaQt6UM; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732506AbfJ0V1s (ORCPT + 99 others); Sun, 27 Oct 2019 17:27:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:45920 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730777AbfJ0VYU (ORCPT ); Sun, 27 Oct 2019 17:24:20 -0400 Received: from localhost (100.50.158.77.rev.sfr.net [77.158.50.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id DB76921726; Sun, 27 Oct 2019 21:24:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1572211459; bh=haQrs3c9WFi14yzGlsrMHFdxnYCKCu3FeZbrAxy876Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HPaQt6UMM9v8UDLdDsuRAIaX7bshgDYOJkAWijrgTWRe6njG7rrKANik/tJGstWs/ jc40jMRSU0jFSsCHob0+vDfYZoQy/qqIBYwYvc1fghaU73WuFq1UTsm0UAubczwaRc PeFEQAXoGINq1pgEt1/z1rmYILdZDS8/IE42s/Ow= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Heiko Carstens , Gerald Schaefer , Vasily Gorbik Subject: [PATCH 5.3 159/197] s390/kaslr: add support for R_390_GLOB_DAT relocation type Date: Sun, 27 Oct 2019 22:01:17 +0100 Message-Id: <20191027203400.264805187@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191027203351.684916567@linuxfoundation.org> References: <20191027203351.684916567@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Gerald Schaefer commit ac49303d9ef0ad98b79867a380ef23480e48870b upstream. Commit "bpf: Process in-kernel BTF" in linux-next introduced an undefined __weak symbol, which results in an R_390_GLOB_DAT relocation type. That is not yet handled by the KASLR relocation code, and the kernel stops with the message "Unknown relocation type". Add code to detect and handle R_390_GLOB_DAT relocation types and undefined symbols. Fixes: 805bc0bc238f ("s390/kernel: build a relocatable kernel") Cc: # v5.2+ Acked-by: Heiko Carstens Signed-off-by: Gerald Schaefer Signed-off-by: Vasily Gorbik Signed-off-by: Greg Kroah-Hartman --- arch/s390/boot/startup.c | 14 +++++++++++--- arch/s390/kernel/machine_kexec_reloc.c | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) --- a/arch/s390/boot/startup.c +++ b/arch/s390/boot/startup.c @@ -101,10 +101,18 @@ static void handle_relocs(unsigned long dynsym = (Elf64_Sym *) vmlinux.dynsym_start; for (rela = rela_start; rela < rela_end; rela++) { loc = rela->r_offset + offset; - val = rela->r_addend + offset; + val = rela->r_addend; r_sym = ELF64_R_SYM(rela->r_info); - if (r_sym) - val += dynsym[r_sym].st_value; + if (r_sym) { + if (dynsym[r_sym].st_shndx != SHN_UNDEF) + val += dynsym[r_sym].st_value + offset; + } else { + /* + * 0 == undefined symbol table index (STN_UNDEF), + * used for R_390_RELATIVE, only add KASLR offset + */ + val += offset; + } r_type = ELF64_R_TYPE(rela->r_info); rc = arch_kexec_do_relocs(r_type, (void *) loc, val, 0); if (rc) --- a/arch/s390/kernel/machine_kexec_reloc.c +++ b/arch/s390/kernel/machine_kexec_reloc.c @@ -27,6 +27,7 @@ int arch_kexec_do_relocs(int r_type, voi *(u32 *)loc = val; break; case R_390_64: /* Direct 64 bit. */ + case R_390_GLOB_DAT: *(u64 *)loc = val; break; case R_390_PC16: /* PC relative 16 bit. */