Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp8893769rwb; Tue, 13 Dec 2022 11:50:58 -0800 (PST) X-Google-Smtp-Source: AA0mqf5Kk8hLNEdl+nCQXG8eWd7f2gym38/iJVP5xY5/sJvjszXZn/r/4LJ5CnSFiFkf/H1fwV6W X-Received: by 2002:a17:906:f74a:b0:7c1:453f:1aae with SMTP id jp10-20020a170906f74a00b007c1453f1aaemr14637959ejb.37.1670961058098; Tue, 13 Dec 2022 11:50:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670961058; cv=none; d=google.com; s=arc-20160816; b=jWvarRK6BnO/jxul2ZLeZSQk/PGNlp5IEnFTUqQntizzJIVSCKQnfGuhVK+qXfc+rB h4ZJ0W7S1mIuAl9JNjdG3sxkpaVAabCEqkCoBup32MHVuhYISOL1/PRMele8+uG3BiOP gaAMyHp/NUZavABGTtpM4W5h3W+gd1WJbBxm7PeGaLUvvDq3M1/sCbUp1WtByhmb0jI2 h/n/CMwWgYsgOWwMFsotCshTcr1/fhsRu0tSsXFrH4RQzRwwJQby4VYszC3aoBdKyXJQ M30Q+bcp7SLaYVEHYT3T/qoFibkhQjjIvpypdDfp9KAZLT+ePrQ9R2WOh1i1yw47d/70 aNmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=BMJoaNUYc9TVom14/S5mkPrOwPFTxmicNQDM3SqHeZE=; b=T4KgIdODeqhD9191yJB1b/r4xq5u0BdvXB+cn4LC9Cah7CaXsGVmpUrqQ5cTZQG8m4 csCH/GvqyjFHxFSVJAfJjh63LSdDqqLVSSfEPHnzAMQiRa0hrruYbc4TgSGwzyvCI6nX jciiysmZbnl1JiCfhfhpMFkUu/N+3omRl7Mz3dPeUXN91CBLN0DDfcz8yk/PSWrikvA3 2OQYIMy6YanlRnKzwfrbNS6mvH5KIqyeu5fWI3QTvVUQyH7aYOYiVSbel5k7M0dL4O6+ DhKVB767qIj0SqJHufnN8U9TMasLfSK9Kq63Aa6yFgX7azuh+0C10tdlknn+oDqbPjBM /W7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ruIiTNcC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hs30-20020a1709073e9e00b007bbf9652314si10560746ejc.435.2022.12.13.11.50.38; Tue, 13 Dec 2022 11:50:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=ruIiTNcC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236833AbiLMTbt (ORCPT + 73 others); Tue, 13 Dec 2022 14:31:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236267AbiLMTbr (ORCPT ); Tue, 13 Dec 2022 14:31:47 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 102BD24085; Tue, 13 Dec 2022 11:31:46 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id B204AB815BA; Tue, 13 Dec 2022 19:31:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56862C43392; Tue, 13 Dec 2022 19:31:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1670959903; bh=MIb0vB7MRAZr9GxU2bjkcrUiXnT7auWLqHlL2N0BTp4=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=ruIiTNcCq1XV+RLd13TjcNnOMOy7/PI2eauysDoZR9onsyoky3dKj+fgfezxcTmkb iDI/x9tAzqLSMzbyzDXEHRR/KW8IMXkjm2s2hGFUz/8Bbg/u51G83YfptfVVVBVd0K uidK7eur+qRwQpOE88L2suob2AeXlLTJFXKswIgexDCCm9OLi6WeFVYXYpTjij2N15 tIsDV7xVIP5G2ZByUQlSySgwjgSwNSBsQ07D1eXqJUzyHQhTW3sB1VQ1Ef5gPJT4IB zaGhDE5RCTYnLKbJHj2NYGI3w7o/C7Vt2naWCDlVfbTcr3bQJxhSpOba0aMU0q/GiY abzGmXKCorxxA== Received: by mail-lf1-f51.google.com with SMTP id 1so6666122lfz.4; Tue, 13 Dec 2022 11:31:43 -0800 (PST) X-Gm-Message-State: ANoB5pn0r5H1eqWlGPWtNkFoOB1acVjL1kvYGhrwEw38hPauNA9NnP4j /HQiJaToCqM4DqRIUv29Yerj2uSWahcztdLsgsA= X-Received: by 2002:a05:6512:2c87:b0:4a2:4282:89c7 with SMTP id dw7-20020a0565122c8700b004a2428289c7mr27966486lfb.437.1670959901273; Tue, 13 Dec 2022 11:31:41 -0800 (PST) MIME-Version: 1.0 References: <20220901171252.2148348-1-song@kernel.org> In-Reply-To: From: Song Liu Date: Tue, 13 Dec 2022 11:31:29 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: powerpc-part: was: Re: [PATCH v6] livepatch: Clear relocation targets on a module removal To: Petr Mladek Cc: live-patching@vger.kernel.org, linux-kernel@vger.kernel.org, jpoimboe@kernel.org, jikos@kernel.org, mbenes@suse.cz, x86@kernel.org, joe.lawrence@redhat.com, linuxppc-dev@lists.ozlabs.org, Josh Poimboeuf , Kamalesh Babulal , Michael Ellerman Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Dec 9, 2022 at 3:41 AM Petr Mladek wrote: > > Hi, > > this reply is only about the powerpc-specific part. > > Also adding Kamalesh and Michael into Cc who worked on the related > commit a443bf6e8a7674b86221f49 ("powerpc/modules: Add REL24 relocation > support of livepatch symbols"). > > > On Mon 2022-11-28 17:57:06, Song Liu wrote: > > On Fri, Nov 18, 2022 at 8:24 AM Petr Mladek wrote: > > > > > > > --- a/arch/powerpc/kernel/module_64.c > > > > +++ b/arch/powerpc/kernel/module_64.c > > I put back the name of the modified file so that it is easier > to know what changes we are talking about. > > [...] > > > > +#ifdef CONFIG_LIVEPATCH > > > > +void clear_relocate_add(Elf64_Shdr *sechdrs, > > > > + const char *strtab, > > > > + unsigned int symindex, > > > > + unsigned int relsec, > > > > + struct module *me) > > > > +{ > > > > + unsigned int i; > > > > + Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; > > > > + Elf64_Sym *sym; > > > > + unsigned long *location; > > > > + const char *symname; > > > > + u32 *instruction; > > > > + > > > > + pr_debug("Clearing ADD relocate section %u to %u\n", relsec, > > > > + sechdrs[relsec].sh_info); > > > > + > > > > + for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rela); i++) { > > > > + location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr > > > > + + rela[i].r_offset; > > > > + sym = (Elf64_Sym *)sechdrs[symindex].sh_addr > > > > + + ELF64_R_SYM(rela[i].r_info); > > > > + symname = me->core_kallsyms.strtab > > > > + + sym->st_name; > > The above calculation is quite complex. It seems to be copied from > apply_relocate_add(). If I maintained this code I would want to avoid > the duplication. definitely. > Back to this one... If we go with option 2 that clear_relocate_add() only does things needed to make the next apply_relocate_add() succeed, we are not likely to have one write_relocate_add(), which is shared by apply_relocate_add() and clear_relocate_add(). To avoid duplication, shall we have two helpers to calculate location and sym? Or maybe one more to calculate symname? I personally don't like such one liner helper with multiple arguments, such as static unsigned long *get_location(Elf64_Shdr *sechdrs, unsigned int relsec, unsigned int idx) { Elf64_Rela *rela = (void *)sechdrs[relsec].sh_addr; return (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr + rela[idx].r_offset; } Then use it as location = get_location(sechdrs, relsec, i); We also need get_sym(), which is similar to get_location. We can probably pass in different arguments. But I don't find any options that I like. I think duplicate some code is better in this case. However, if you do think these helpers are better, or have other suggestions, I won't insist further. Thanks, Song