Received: by 10.223.185.82 with SMTP id b18csp62555wrg; Thu, 8 Mar 2018 19:19:32 -0800 (PST) X-Google-Smtp-Source: AG47ELvRckONz3rDMouvCBKHiuAOHg7BHfw9x2OWtG+skZMiZmxTqdYL1qoI4UMdWfeoQW2QqSQq X-Received: by 10.99.103.196 with SMTP id b187mr23191377pgc.1.1520565572556; Thu, 08 Mar 2018 19:19:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520565572; cv=none; d=google.com; s=arc-20160816; b=gcOSKiWLfRRkuj40f8ClUmKuCnuyrfAGxOGvCnqJS1kr97Om4SPaxFUutJULHI3I8B AIYW+yZhv6V10+sQsygQ7kWt6gzZstyBaySfjmdsjT0KwRcaIHlCohdpOSXeelcyCLj0 zxr/d3cf1NtdAX+vzxrPuBSNALEYKFMz5wfMOqdUIDlwbRPRVqwym6CutM8qiYBgxmQf BiTVqD8xp/uCZQUIkU2X37TqT9KOMAdeZlY/LN1eNCjhM36wxKJ2VRi5wedmNiOXfrR1 9HhH2t+ArXJVSRspASqJhloKipeY/zxcNORvD/2ybwXUYQuDbq1uLA0sOckFUKF0Ow1u kxFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=8Gj5nuvrn42s2Zjd971cSMy9QDkjisAiqQHtSgTEUh4=; b=GAuzQKgm55e31ih15DfBdZlgShaWtoW5wj72YrAEJjskPlzhLOF+j+k5gusRoWlB8b rzkPqrGd7z0cIt7HowVzWivsFzCvP28It2eLRIaGxnZMOQ2OanptU5js7TBmrvdvjYpI OegjPJWXF6JjpcQDPOYaotwB28Ev15X++WShIH5InPK84atfw3FDU9l16PwCR11/3SFR aZFk5OvWZv2DTIr5893TmhNKGy5PXIGuIZLhqqUBqgJ0UZgIfByi/p8bSV4Sk/7wenvG VXwbJwR1qJpFWeyfgN1QeCRVbt+OuVzGvbMISe/3f69Vq+b2HU69OgSC2ZQ7em+p/KlK 9rbA== ARC-Authentication-Results: i=1; mx.google.com; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i136si79781pgc.416.2018.03.08.19.19.18; Thu, 08 Mar 2018 19:19:32 -0800 (PST) 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; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751239AbeCIDSS (ORCPT + 99 others); Thu, 8 Mar 2018 22:18:18 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:37964 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750918AbeCIDSR (ORCPT ); Thu, 8 Mar 2018 22:18:17 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 4CBD54040856; Fri, 9 Mar 2018 03:18:16 +0000 (UTC) Received: from dhcp-128-65.nay.redhat.com (ovpn-12-79.pek2.redhat.com [10.72.12.79]) by smtp.corp.redhat.com (Postfix) with ESMTPS id DDC081C70F; Fri, 9 Mar 2018 03:18:09 +0000 (UTC) Date: Fri, 9 Mar 2018 11:18:05 +0800 From: Dave Young To: Philipp Rudo Cc: kexec@lists.infradead.org, linux-s390@vger.kernel.org, linux-kernel@vger.kernel.org, Eric Biederman , Vivek Goyal , Michael Ellerman , Thiago Jung Bauermann , Martin Schwidefsky , Heiko Carstens , Andrew Morton , x86@kernel.org, AKASHI Takahiro Subject: Re: [PATCH 08/11] kexec_file: Simplify kexec_purgatory_setup_sechdrs 2 Message-ID: <20180309031805.GB3246@dhcp-128-65.nay.redhat.com> References: <20180226151620.20970-1-prudo@linux.vnet.ibm.com> <20180226151620.20970-9-prudo@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180226151620.20970-9-prudo@linux.vnet.ibm.com> User-Agent: Mutt/1.9.1 (2017-09-22) X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 09 Mar 2018 03:18:16 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.11.55.5]); Fri, 09 Mar 2018 03:18:16 +0000 (UTC) for IP:'10.11.54.5' DOMAIN:'int-mx05.intmail.prod.int.rdu2.redhat.com' HELO:'smtp.corp.redhat.com' FROM:'dyoung@redhat.com' RCPT:'' Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 02/26/18 at 04:16pm, Philipp Rudo wrote: > The main loop currently uses quite a lot of variables to update the section > headers. Some of them are unnecessary. So clean them up a little. > It looks better to use some patch subject eg below: "Remove unnecessary variables in kexec_purgatory_setup_sechdrs" > Signed-off-by: Philipp Rudo > --- > kernel/kexec_file.c | 34 ++++++++++++---------------------- > 1 file changed, 12 insertions(+), 22 deletions(-) > > diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c > index bb31a3b627c2..746b91e46e34 100644 > --- a/kernel/kexec_file.c > +++ b/kernel/kexec_file.c > @@ -724,12 +724,8 @@ static int kexec_purgatory_setup_kbuf(struct purgatory_info *pi, > static int kexec_purgatory_setup_sechdrs(struct purgatory_info *pi, > struct kexec_buf *kbuf) > { > - unsigned long curr_load_addr; > - unsigned long load_addr; > unsigned long bss_addr; > unsigned long offset; > - unsigned char *buf_addr; > - unsigned char *src; > Elf_Shdr *sechdrs; > int i; > > @@ -762,20 +758,18 @@ static int kexec_purgatory_setup_sechdrs(struct purgatory_info *pi, > sechdrs[i].sh_offset; > } > > - /* Load SHF_ALLOC sections */ > - buf_addr = kbuf->buffer; > - load_addr = curr_load_addr = kbuf->mem; > - bss_addr = load_addr + kbuf->bufsz; > + offset = 0; > + bss_addr = kbuf->mem + kbuf->bufsz; > kbuf->image->start = pi->ehdr->e_entry; > > for (i = 0; i < pi->ehdr->e_shnum; i++) { > unsigned long align; > + void *src, *dst; > > if (!(sechdrs[i].sh_flags & SHF_ALLOC)) > continue; > > align = sechdrs[i].sh_addralign; > - > if (sechdrs[i].sh_type == SHT_NOBITS) { > bss_addr = ALIGN(bss_addr, align); > sechdrs[i].sh_addr = bss_addr; > @@ -783,31 +777,27 @@ static int kexec_purgatory_setup_sechdrs(struct purgatory_info *pi, > continue; > } > > - curr_load_addr = ALIGN(curr_load_addr, align); > - offset = curr_load_addr - load_addr; > - /* We already modifed ->sh_offset to keep src addr */ > - src = (char *)sechdrs[i].sh_offset; > - memcpy(buf_addr + offset, src, sechdrs[i].sh_size); > - > + offset = ALIGN(offset, align); > if (sechdrs[i].sh_flags & SHF_EXECINSTR && > pi->ehdr->e_entry >= sechdrs[i].sh_addr && > pi->ehdr->e_entry < (sechdrs[i].sh_addr > + sechdrs[i].sh_size)) { > kbuf->image->start -= sechdrs[i].sh_addr; > - kbuf->image->start += curr_load_addr > + kbuf->image->start += kbuf->mem + offset; > } > > - /* Store load address and source address of section */ > - sechdrs[i].sh_addr = curr_load_addr; > + src = (void *)sechdrs[i].sh_offset; > + dst = pi->purgatory_buf + offset; > + memcpy(dst, src, sechdrs[i].sh_size); > + > + sechdrs[i].sh_addr = kbuf->mem + offset; > > /* > * This section got copied to temporary buffer. Update > * ->sh_offset accordingly. > */ > - sechdrs[i].sh_offset = (unsigned long)(buf_addr + offset); > - > - /* Advance to the next address */ > - curr_load_addr += sechdrs[i].sh_size; > + sechdrs[i].sh_offset = (unsigned long)dst; > + offset += sechdrs[i].sh_size; > } > > return 0; > -- > 2.13.5 > Thanks Dave