Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp814087ybg; Mon, 1 Jun 2020 15:23:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxMzvEjveXSw6GStKUTVnWk1y/qpSJO9gYps+XPI5nFmPtdB1Z3oxRAEGTHrEQFHQSqOQcw X-Received: by 2002:aa7:cb8d:: with SMTP id r13mr23292612edt.12.1591050229675; Mon, 01 Jun 2020 15:23:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591050229; cv=none; d=google.com; s=arc-20160816; b=LBCQQH8zOipPC1IkxCLPVZWmqPVqRUORzYDgzb5cxol8gQA/3IL5+QvwKcH+xrbW8H GJ83DjBmXdRP1VN5w7PwlwGoDK5WkVGHY4QcR90xJtLCE5JoOBt0InRbksC6SvrV0Jzp JnpVFUzA2YIDtVLwnbqnkexEQBFIkxkw6A4jdk842wR1d1ouK2JX9vC/SJosPb87hH3f wH0orToPSe/ntJAOXWZLG/4DmZXIVSmzhYNLX8e1E6D8Kgg2JC+g2ONI5wr7xxvLn8wQ /yCwHQNKm768KMXRszU43U+gt6JDbOUYRhtj+hA67U0fF6kqJQg+sYn+a4E63iRfei9w 9ijw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=/IqLU2DCduGFuGkJYk7IH1ysNp9fExFbJIun8lKl0NY=; b=oQ2NHi6D7J0a0lCB5F99BkdfiPjkMTmgSPFyYIyjlmBcBUGZpnMQNgajQ9CQXx6Ioj eaGLCs63cjnkSEIasyx7UwuclAagVGJXZumFNuvXbpMiUUh1qKWdaf2IAayPerXUDIYe i9ZNIWr8ydf8kiyC/8gk6gyUjRlC/8I61j5sGacid6iDDXQrWspzjfClSwg3bbr9cZS5 gysMRZw9mv79aWnS7jhumM/wPPzE7NR2I5VUm7lqUIU7C35OyTaTADB1WNRXLH5bQBKe TJmXFJ3eAPwY+gCeRA7oZLazW3dyjJ6Ieepnd6m3FChiwWSsXlciSc8HQKHZD8teG3Lw NZgg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Va83dYTq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q13si422683ejr.650.2020.06.01.15.23.26; Mon, 01 Jun 2020 15:23:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Va83dYTq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728795AbgFAWTg (ORCPT + 99 others); Mon, 1 Jun 2020 18:19:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728182AbgFAWTg (ORCPT ); Mon, 1 Jun 2020 18:19:36 -0400 Received: from mail-pg1-x543.google.com (mail-pg1-x543.google.com [IPv6:2607:f8b0:4864:20::543]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A035C061A0E for ; Mon, 1 Jun 2020 15:19:36 -0700 (PDT) Received: by mail-pg1-x543.google.com with SMTP id d10so4129022pgn.4 for ; Mon, 01 Jun 2020 15:19:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=/IqLU2DCduGFuGkJYk7IH1ysNp9fExFbJIun8lKl0NY=; b=Va83dYTqvaNl5qiheSXCYhTaywOS/5I7nBvJ60RbmcbffczHTFnTdy5w3Cu9/InZIZ L3p9iZvAep9FZAzDYnYpoVIwaS96ru06JOjvqqhKVhdThLDW+exQ28MEi8KSfWD8prhL SsVoR+CV+vcAnRTeB2HjvMO3ZDw1m6FPL4D+rW4Q4WgOcFRHRqBjlVAsC4TWVgCkcBNA khC67QMX2BiAvNcy6z3T+LXut4iJSHRvAp7W1rDWfzEY9XZ8ZEvZYdgkTisC9DDb2CmA Z9uMwt0/7keUrv2M4CtCr7QCFMzmt2vX/iaO7/Lk3KNrL36QGMeAs+5ZsI+mrMHJhW4n 6WXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=/IqLU2DCduGFuGkJYk7IH1ysNp9fExFbJIun8lKl0NY=; b=NEKY8w74+mpfmcQL2dL8u4LdgHFtRNwaH83B6n6r3rtNZzjeA2RLrY/QWxCc/xWkSb LFWMchz56Lukw1eRfkEL6xP+wbOXTMq/xe/5hV3OK4Sv+O0vTZA4Gc/rrSk5+zPlz2p0 pC5Lfk8nyk0HLa/pWCwTvz8lFtsAY3AEnDOCL4hyDBGd1ClKuwNMqVap7I0jeDhYx4Gq QUQKgztkJf4eMUhix7t5eL8a7CTYiHpoFSN6yVs+cJYRf/4uBoQKdhzNmqJO0PMz51Qd S/SGNgRmFzY5WGq1JxUwp2yNvQp/zGU90bv0ZRLHRoGjeU5luUY2W/BckLh0KAmea24M P0rg== X-Gm-Message-State: AOAM530EVfA5VhiW3jN/l+dkhOpREKNmCEkFn7IH1mW8bu9bSlQq8zlB rN0VLNA77zn8C5hXckJIXWldqVdx+fbMIXvp7Jq44Q== X-Received: by 2002:a63:5644:: with SMTP id g4mr20317628pgm.381.1591049975387; Mon, 01 Jun 2020 15:19:35 -0700 (PDT) MIME-Version: 1.0 References: <20200521100952.GA5360@willie-the-truck> <20200521173738.GA29590@e121166-lin.cambridge.arm.com> <20200526202157.GE2206@willie-the-truck> <20200527134104.GA16115@e121166-lin.cambridge.arm.com> <20200601070459.GB8601@willie-the-truck> In-Reply-To: From: Nick Desaulniers Date: Mon, 1 Jun 2020 15:19:23 -0700 Message-ID: Subject: Re: arm64/acpi: NULL dereference reports from UBSAN at boot To: Ard Biesheuvel Cc: Will Deacon , Lorenzo Pieralisi , Hanjun Guo , "Rafael J. Wysocki" , Linux ARM , LKML , Mark Rutland , Dmitry Vyukov , Alexander Potapenko , Peter Collingbourne Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Jun 1, 2020 at 2:57 PM Ard Biesheuvel wrote: > > On Mon, 1 Jun 2020 at 23:52, Nick Desaulniers wrote: > > > > Anyways, it looks like the address of member from NULL subexpression > > looks problematic. I wonder if offsetof can be used here? > > > > #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (offsetof(d, f), (void *) 0) > > > > Seems to work in my basic test case. Untested in the kernel. > > > > IIUC, ACPI_OFFSET is trying to calculate the difference between the > > offset of a member of a struct and 0? Isn't that the tautology `x - 0 > > == x`? > > No. ACPI_OFFSET() is just a poor person's version of offsetof(). > > (Note that it calculates the difference between &(((d *) 0)->f) and > (void *)0x0, so the 0x0 term is there on both sides) Got it. So we're trying to avoid including stddef.h? Can __builtin_offsetof be used here? #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (__builtin_offsetof(d, f), (void *) 0) The oldest version of GCC in godbolt.org (4.1) supports this builtin. -- Thanks, ~Nick Desaulniers