Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp1394547imm; Fri, 8 Jun 2018 15:36:25 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKQJes+0P0gwIuj+i0CPKa/10pAFbw5/NX7CUw5wzL0IgjIXGkWhJETK0R3/MhvzEWlEQP4 X-Received: by 2002:a63:7419:: with SMTP id p25-v6mr6947246pgc.24.1528497385082; Fri, 08 Jun 2018 15:36:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528497385; cv=none; d=google.com; s=arc-20160816; b=UwCcPLkVhTjhwjSzWEQ4mJCD5MHoltEl2nyec0NIlEo+wL91Zk4kfeA/6OT1ivUGUE QrQvOCDOTg8rt3Y9lIVy7EnklP1isUxASGq1iVJfipaEgDVi0DzV2WqNZ7tKPWw5/k99 y75uV/Mlcyu//fQ5P8cvve1pM6NJ4nCmYDnf9tv3nYLSAylBg64PbDTIp57SoWaiPWwg P09RIo/e4JEIgSiGw/qND9A+xIjkmiQ8UFWnDgeZi0/UjSOuket4zMwKGwnDxov8grxs 8sY6ecsmF/32SQ/bAX0r8oG786M8Jr5fQoSuSGhs0B9SosA+Z+y26zfdF0gN8p/pS0Zl AjLQ== 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 :message-id:to:from:cc:in-reply-to:subject:date:dkim-signature :arc-authentication-results; bh=frfIJEP+NRzVrDZfmlheglP3ayxvEKuSbkSIg1XYuE4=; b=NOyYCf3l9IVQkRwU8WjrjjsRwEkAcr2TG9t90QnsTzv7zR+UbQqPLqYWMqvyIhEs8Q arOxAQjqjX/IrmvmR8khyZv+yHKBr3VRFZgDehO87P4pw/M1SbDg/jrN5OeQ+mZ2xMyh cxWF1XH99RfgXjKt88THwRjhfvNJTYx48BCW35yX0dsnV0p6iiGwxwLigJ5eDoc5Tdda CLoPAGHHYU3ZsZzSI+XsuUdrp6E6DXVDfujVK/LTDaTtInGTRFJyRuvWGdC6nM7scdNy lAfRLySqPxrIpGn9UCjcU2WrjqMZlKKMLGH/c35fsHhr2g1lh7SvOZu2gKcrDIh9HR3E UXWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=btu2DB+i; 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 p91-v6si56998472plb.457.2018.06.08.15.36.10; Fri, 08 Jun 2018 15:36:25 -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=@sifive.com header.s=google header.b=btu2DB+i; 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 S1753031AbeFHWdh (ORCPT + 99 others); Fri, 8 Jun 2018 18:33:37 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:42734 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752774AbeFHWdg (ORCPT ); Fri, 8 Jun 2018 18:33:36 -0400 Received: by mail-pl0-f68.google.com with SMTP id w17-v6so9045859pll.9 for ; Fri, 08 Jun 2018 15:33:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=date:subject:in-reply-to:cc:from:to:message-id:mime-version :content-transfer-encoding; bh=frfIJEP+NRzVrDZfmlheglP3ayxvEKuSbkSIg1XYuE4=; b=btu2DB+iw6+Nae5eJQQhILSZe5Msy/8ASEiNAnQEpvecKyjPM6dNMpBU1IZHgObIrt yOqhzBrptYrRPcMAA1uqBthMNBqGJ0M+GfhvntHWml4FM7PKoEMi583eqtRa8jREKLZ7 OAmv3NnYyPqXv3HXS8Dna2irHWIa7hIMcVeqZ1PBxXrCsVcLGHMoGbxzUiISheGUiCqO 2lSjFmILJAv28j4qAe3UpF1SAMDqvbWRY4A7IlpVgbfGU3OWCHAqIA9L4REy3peRVnTB uICJgf1/vn/Y9/3Mb+9aekM1BHNseNLR7jCFwcQ1EVeFnaGA78Xr0nqypFEVJ3AnVSaS 5w5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:in-reply-to:cc:from:to:message-id :mime-version:content-transfer-encoding; bh=frfIJEP+NRzVrDZfmlheglP3ayxvEKuSbkSIg1XYuE4=; b=onqm6qzW3ZSPToJyRQvnLHbGeY9w2d5eB2oB7i2B9cdW8USXCrvKLGEzSmgtvAsnA4 mgLszQ6/bgYYV2P8pL3a9YVLh1pFTeldVLhxUxYIBBlCUP8NtiKyiysHhpV1I0PQmK0s fJuAt7MyzIb2kop0fbGdPP7xTRPLkO12ApUKFm6I52LC39E9J6uhJEjNoLjn6PQRH+e2 1Flegg6lDHw2CC7utYpHhrm8gPDEF/LJWbkRPbMesMD+yAVKEUxNa/xzglY+lE81gybA cMQO6qdINaYInQ2aVwwzZdLeQp/J6QdArjDIhBf9r4EqaQ/rrY/JsY4Er7RIf5XitoGQ cu3A== X-Gm-Message-State: APt69E0HJthjG54zdAb7hTh3ehxq/sHTX+bMwNXXGHH3MjoCgofbIfsA kNNglKq+MlJ+8kIuQosGSjP6yw== X-Received: by 2002:a17:902:4101:: with SMTP id e1-v6mr8359229pld.205.1528497215690; Fri, 08 Jun 2018 15:33:35 -0700 (PDT) Received: from localhost ([73.93.152.77]) by smtp.gmail.com with ESMTPSA id x2-v6sm124917658pfk.113.2018.06.08.15.33.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 08 Jun 2018 15:33:35 -0700 (PDT) Date: Fri, 08 Jun 2018 15:33:35 -0700 (PDT) X-Google-Original-Date: Fri, 08 Jun 2018 11:57:10 PDT (-0700) Subject: Re: [PATCH] RISC-V: Handle R_RISCV_32 in modules In-Reply-To: CC: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org From: Palmer Dabbelt To: schwab@suse.de Message-ID: Mime-Version: 1.0 (MHng) Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 07 Jun 2018 03:27:27 PDT (-0700), schwab@suse.de wrote: > With CONFIG_MODVERSIONS=y the R_RISCV_32 relocation is used by the > __kcrctab section. > > Signed-off-by: Andreas Schwab > --- > arch/riscv/kernel/module.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/arch/riscv/kernel/module.c b/arch/riscv/kernel/module.c > index 5dddba301d..1d5e9b934b 100644 > --- a/arch/riscv/kernel/module.c > +++ b/arch/riscv/kernel/module.c > @@ -17,6 +17,17 @@ > #include > #include > > +static int apply_r_riscv_32_rela(struct module *me, u32 *location, Elf_Addr v) > +{ > + if (v != (u32)v) { My worry with this kind of check is that it relies on some sort of undefined behavior in C and that at some point in the future GCC will just go decide the check can never fail. I checked and GCC doesn't elide these checks now, so I might be wrong. Is this defined to do what it looks like it's doing? > + pr_err("%s: value %016llx out of range for 32-bit field\n", > + me->name, v); > + return -EINVAL; > + } > + *location = v; > + return 0; > +} > + > static int apply_r_riscv_64_rela(struct module *me, u32 *location, Elf_Addr v) > { > *(u64 *)location = v; > @@ -265,6 +276,7 @@ static int apply_r_riscv_sub32_rela(struct module *me, u32 *location, > > static int (*reloc_handlers_rela[]) (struct module *me, u32 *location, > Elf_Addr v) = { > + [R_RISCV_32] = apply_r_riscv_32_rela, > [R_RISCV_64] = apply_r_riscv_64_rela, > [R_RISCV_BRANCH] = apply_r_riscv_branch_rela, > [R_RISCV_JAL] = apply_r_riscv_jal_rela, Thanks!