Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp239544ybi; Wed, 29 May 2019 20:25:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqzDXHgxbtqEsR18uuyC9oFN9i/HThOkxx5JSriQCkHvKFY/Re+ddsaRJgTyFj/0TKQWgKEG X-Received: by 2002:a17:902:b215:: with SMTP id t21mr1646925plr.152.1559186748783; Wed, 29 May 2019 20:25:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559186748; cv=none; d=google.com; s=arc-20160816; b=qGDe/omrqgorwmtv644IRj28unJw6DMCNpu48ht+GxCBWTg2pBmdiPL9enNOZWYz4F 0k+bTmfWXC3C/PP1nKdB7wwsywrqCnxpfZB6euhvuj4lpHFXMa5M0du01HOBdS1ppAMj zSjJL48Dlo0d9izaqZ7FDZqOJo8CKLVFCdn1Xdt7fXxlkqt4syZApy2pXV0Y7ZMU06ol 7+PS2BTzcHX+fuvirmnEaAoulVfO06YOrn0H26/aQ1wjma/wFD8OTp01GMp4c+x1onaY 51smNUuWWQqJuf9A1kFon0iceJc2caTYsY7H2imokLEdLVc10f9Y1tMR0gY+1XHwHqHZ upjw== 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=EEXMGFh3Xo40MkcpNNxG9PzQI4NcbfFz9SAbHTPyAIU=; b=Kr7ZC7oNekhnii+mjXj2ypfPdEEQAbJLJ345gQ3rI7HHO4X9whe8eDVhY3MDlGa/iv mmhb9spmIfjfYCskb74VZXoP+JFwsRHM+5d/c9Q6MmxgY6yLKojCFMkKVKBf7YYCeXlJ 3miJ/T+nneNOrqx3taa+2nqBIObrfeubD/JO7UcQ1D7gNBwGizAmv8utqfjYriZLHyiQ 31Y2V2PKUMAfQxVMHmZmRULiNQNHOA52rpf806Mf0uaDQRW6jiO+sd+MI8zNOV7XhC8f 8/GVK0KKcRoMvVJruQP2AiMhAKr3A1cbyjDxBafYCydq7fLMMDqCAm1Gtedv5rk8pDzh KGhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Ntcn1jHY; 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 z12si1803209pgl.467.2019.05.29.20.25.31; Wed, 29 May 2019 20:25:48 -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=Ntcn1jHY; 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 S1732814AbfE3DWX (ORCPT + 99 others); Wed, 29 May 2019 23:22:23 -0400 Received: from mail.kernel.org ([198.145.29.99]:43666 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729583AbfE3DQn (ORCPT ); Wed, 29 May 2019 23:16:43 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (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 C697E245DA; Thu, 30 May 2019 03:16:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186202; bh=0CbJ8rpWm3HT9n56a02/4rzdQVexT5uxY+2zHGbKtZc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ntcn1jHYC9VVXoIa2ptZCZdIdy30OQDxpPOnnLAN2/B7RfVxFwzcq4osEZZft1DAm hOabBOYOxazxRPbbz8yF9O4Wx+2ARDAT0bNt2I+sjB/YeJDdpDVstbB+9tKA6bFJFA OoBLw6ijXxQVggg80PnxGfaZEOPQWKwVc7b7Udpk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Philipp Rudo , Martin Schwidefsky , Sasha Levin Subject: [PATCH 4.19 087/276] s390/kexec_file: Fix detection of text segment in ELF loader Date: Wed, 29 May 2019 20:04:05 -0700 Message-Id: <20190530030531.697773045@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030523.133519668@linuxfoundation.org> References: <20190530030523.133519668@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 [ Upstream commit 729829d775c9a5217abc784b2f16087d79c4eec8 ] To register data for the next kernel (command line, oldmem_base, etc.) the current kernel needs to find the ELF segment that contains head.S. This is currently done by checking ifor 'phdr->p_paddr == 0'. This works fine for the current kernel build but in theory the first few pages could be skipped. Make the detection more robust by checking if the entry point lies within the segment. Signed-off-by: Philipp Rudo Signed-off-by: Martin Schwidefsky Signed-off-by: Sasha Levin --- arch/s390/kernel/kexec_elf.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/arch/s390/kernel/kexec_elf.c b/arch/s390/kernel/kexec_elf.c index 5a286b012043b..602e7cc26d118 100644 --- a/arch/s390/kernel/kexec_elf.c +++ b/arch/s390/kernel/kexec_elf.c @@ -19,10 +19,15 @@ static int kexec_file_add_elf_kernel(struct kimage *image, struct kexec_buf buf; const Elf_Ehdr *ehdr; const Elf_Phdr *phdr; + Elf_Addr entry; int i, ret; ehdr = (Elf_Ehdr *)kernel; buf.image = image; + if (image->type == KEXEC_TYPE_CRASH) + entry = STARTUP_KDUMP_OFFSET; + else + entry = ehdr->e_entry; phdr = (void *)ehdr + ehdr->e_phoff; for (i = 0; i < ehdr->e_phnum; i++, phdr++) { @@ -35,7 +40,7 @@ static int kexec_file_add_elf_kernel(struct kimage *image, buf.mem = ALIGN(phdr->p_paddr, phdr->p_align); buf.memsz = phdr->p_memsz; - if (phdr->p_paddr == 0) { + if (entry - phdr->p_paddr < phdr->p_memsz) { data->kernel_buf = buf.buffer; data->memsz += STARTUP_NORMAL_OFFSET; -- 2.20.1