Received: by 10.192.165.148 with SMTP id m20csp4448985imm; Tue, 24 Apr 2018 03:00:00 -0700 (PDT) X-Google-Smtp-Source: AIpwx48COFiFISWaG0qn8KPUQ4vsoJ956yQcgo6ClaEyMMa8Jn90GICBx8xZcjPouBlIsPS3bbSS X-Received: by 10.98.198.195 with SMTP id x64mr23088669pfk.11.1524564000487; Tue, 24 Apr 2018 03:00:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524564000; cv=none; d=google.com; s=arc-20160816; b=nv11cy0LVZRIiaGbDYpoXbbfcZO3/AraJrCSxlPzxjmuWAjnbqrqXB051KPme7a97e dBoHt88G1r5eD/Gn5JIQxfd7ypMnregmklnQdJ8sZDyml5BgPEyKisxwYwS6N4REn/W0 pEaYN1oq881k/5tp+C251V4guoaVv7rv6tQtuFQT6zxhukw7rzeywcGR+nCkmXsiHtC5 tXRnf+VK0A+SRsT9eOZUNLiXCxW4AHoeOJeCDJ58V54BjFxrHbzjZIJMQUMnmwsarTj8 xOIC0oT1I8Ecx2QTSGdy7rZHsXPrWwuVdOtv8+QLYEDh2mzD/y+OCr6tVTdD2J4b31xy 1izg== 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 :arc-authentication-results; bh=ziv4GkHm+iveLGNFgJwAP4xP4zonossqmROfHKxsNPk=; b=SE6e6eig7W8VwlxzXPUqUbug2ZI5yfLb7LPfHO36UTNTd8ZNXU3Kb5uZfn1FYs6Rhs Y6qLhi5zCiCe9qLTtBiT1AuYvKMVtjhg7bDpwc/ZRpZe2IUAEQEzPoLYFZ9t4goz/X2C +P4emwVt0pE3mTH/7n7+05BHW9ScJ5TQww7oDaeZUesqjGEPplxEOf2WBBzCpU4ahf7E vaBgp6RtMvHaSP3qppvJhNP80sXxVJkCEyw/DdWTsdLwUgrR13fHg3sxl7UjzkElSNhY 7nbpV1gmx5/l261dZDWo7mPyW3NG5YQhamE9JCwBAu05hw/GsuVOBJg38ty651Dzk0P4 JHTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=BPlCLKDL; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b2-v6si1620858plz.469.2018.04.24.02.59.46; Tue, 24 Apr 2018 03:00:00 -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=@google.com header.s=20161025 header.b=BPlCLKDL; 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=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756904AbeDXJ6P (ORCPT + 99 others); Tue, 24 Apr 2018 05:58:15 -0400 Received: from mail-io0-f194.google.com ([209.85.223.194]:44047 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756841AbeDXJ6K (ORCPT ); Tue, 24 Apr 2018 05:58:10 -0400 Received: by mail-io0-f194.google.com with SMTP id d11-v6so14081372iof.11 for ; Tue, 24 Apr 2018 02:58:10 -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=ziv4GkHm+iveLGNFgJwAP4xP4zonossqmROfHKxsNPk=; b=BPlCLKDL7Ctyfupu8ggX3tKrIdefPqe5x/Yzy91BJJytJ6nYraYmrU+1j6goJHsXT0 1Tk6sABJG4s65sNtADnbkVva2VY2wqyst4h9ovSZx/GUx0tTdoi/HDUypu4CB7QwRVc7 94CwR9P9la8H66xGSC4aHyKGxjWwVfKoULZXpI1kUACpHug/5y+4Gv8tV4eJx5WQ23H8 BnhEwQELOCOjHaT5zKVtQONhfw7SYfbtVcVi2/l9sSpDkg4fvISPCEGGWwXSzMucgy1x 2sASao2JbRHYrAu4/AJ/XYyMW9P1BUWzqWZp5yIz0NUnUmKTzFNDyslDiPx9FtvP6MdT 5hTw== 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=ziv4GkHm+iveLGNFgJwAP4xP4zonossqmROfHKxsNPk=; b=IFmmfVgMn6Ci2Qf115R3bis9mKjJnhIBgkrSdmXgSjDXuxKB0EIetNbm3mOGlUlRmE uc+Xs4P3Yo2/nkZ2BSK0bjZZZY3OPx0qOLfdXHDT3WlZsSRuKGXB0xwxy4AY45H7G4GZ zo9vGx4g9d9FHAR3ot2k0PFDeshBIWbl0QMClUJEvP7ngYpcnDYVoMLIz91S3BzMNcAr Um4kLxewsEgzjNpuj7J3wb+Sb0AjMRqZNDSzm5hoELvatvM6ofTgtrrEYz9XSHo7GgN1 FFZYB8ehVFo9izijYB8+oK85l21PJGRpQ79Ii3gDwd8L5BbtUI5cNZF1gWHFPB/iC0/2 7RFg== X-Gm-Message-State: ALQs6tCg5Ecrua4Mj95mzaJj/e1WjaPCuoGGdLdpIgcnON+XE0lOtcsw s8EVuNZhgmnK1A89A2Qv02KSio8GGp17Xmo6B1HeAQ== X-Received: by 2002:a6b:90c6:: with SMTP id s189-v6mr23495984iod.95.1524563889750; Tue, 24 Apr 2018 02:58:09 -0700 (PDT) MIME-Version: 1.0 References: <20180412101350.210547-1-tweek@google.com> <20180412101350.210547-2-tweek@google.com> <20180417030202.GA30624@ziepe.ca> <20180417140013.GA2029@ziepe.ca> <20180420145740.GC30433@ziepe.ca> <20180423100629.effueb6i7q3hmhu3@ltop.local> In-Reply-To: <20180423100629.effueb6i7q3hmhu3@ltop.local> From: Thiebaud Weksteen Date: Tue, 24 Apr 2018 09:57:58 +0000 Message-ID: Subject: Re: [PATCH v2 1/4] tpm: Add explicit endianness cast To: luc.vanoostenryck@gmail.com Cc: jgg@ziepe.ca, Christopher Li , Jarkko Sakkinen , Nayna Jain , linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sparse@vger.kernel.org, josh@joshtriplett.org 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, Apr 23, 2018 at 12:06 PM Luc Van Oostenryck < luc.vanoostenryck@gmail.com> wrote: > On Mon, Apr 23, 2018 at 09:22:06AM +0000, Thiebaud Weksteen wrote: > > On Fri, Apr 20, 2018 at 4:57 PM Jason Gunthorpe wrote: > > > > > On Thu, Apr 19, 2018 at 01:09:12PM +0000, Thiebaud Weksteen wrote: > > > > On Tue, Apr 17, 2018 at 4:00 PM Jason Gunthorpe wrote: > > > > > > > > > On Tue, Apr 17, 2018 at 08:32:33AM +0000, Thiebaud Weksteen wrote: > > > > > > On Tue, Apr 17, 2018 at 5:02 AM Jason Gunthorpe > > wrote: > > > > > > > > > > > > > On Thu, Apr 12, 2018 at 12:13:47PM +0200, Thiebaud Weksteen wrote: > > > > > > > > Signed-off-by: Thiebaud Weksteen > > > > > > > > drivers/char/tpm/tpm_eventlog_of.c | 4 ++-- > > > > > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > > > > > > > > > diff --git a/drivers/char/tpm/tpm_eventlog_of.c > > > > > > b/drivers/char/tpm/tpm_eventlog_of.c > > > > > > > > index 96fd5646f866..d74568d58a66 100644 > > > > > > > > +++ b/drivers/char/tpm/tpm_eventlog_of.c > > > > > > > > @@ -56,8 +56,8 @@ int tpm_read_log_of(struct tpm_chip *chip) > > > > > > > > * but physical tpm needs the conversion. > > > > > > > > */ > > > > > > > > if (of_property_match_string(np, "compatible", > > "IBM,vtpm") < > > > > 0) { > > > > > > > > - size = be32_to_cpup(sizep); > > > > > > > > - base = be64_to_cpup(basep); > > > > > > > > + size = be32_to_cpup((__be32 *)sizep); > > > > > > > > + base = be64_to_cpup((__be64 *)basep); > > > > > > > > > > > > > Er, no.. change the definitions of sizep and basep to be __be > > > > > > > > > > > > > Jason > > > > > > > > > > > > Please read the comment before the condition. sizep and > > > > > > basep may contain either little endian or big endian and this block > > is > > > > used > > > > > > to adjust that. Let me know if there is a better way for handling > > this. > > > > > > > > > Well a cast like that will throw sparse warnings, you need __force at > > > > > least > > > > > > > > I don't think so. Since the variable is only defined as u32*, no > > specific > > > > warning is generated. I've used `make C=2 drivers/char/tpm/` with this > > > > patch applied and no new warning is being triggered. > Interesting. > > > I'm surprised to hear you say that.. > Same for me. > > > Sparse is supposed to require force on all cast that change the > > > annotation, and there are many examples in the kernel that have force > > > in that case. > Yes, sparse is supposed to warn in such cases and the __force is there > to quiets the warning when it is known that the cast is in fact correct. > > +linux-sparse@vger.kernel.org and sparse@chrisli.org for a sanity check. > > > > If you look at the man page of sparse, under the bitwise option, it states: > > "Sparse will warn on [...] any conversion of one restricted type into > > another, except via a cast that includes __attribute__((force)).". In our > > case, it is a conversion from unrestricted to restricted which does not > > fall in this category. > The man page is not very clear here. It must be understood in the context > where each use of '__bitwise' will create a new *distinct* type. > Given this and the normal type checking, sparse should warn > "on any conversion of one restricted type into another *or* between a > restricted and the corresponding plain/unrestricted type" (or consider > that an 'unrestricted type' is 'a restricted type with no restriction', > which is, I think, what was meant here). Thanks for the explanation, that make sense. I believe the issue happens when dealing with restricted pointer types more than regular types. Also, this is not new and has probably been going on for the last 13 years. For instance, 81179bb6a54c2c626b4cbcc084ca974bb2d7f2a3 explicitly removed the __force attribute. I'll send a validation patch for sparse and update this patch. > The fact that sparse doesn't warn in your case is clearly a bug in > sparse's type checking. > Regards, > -- Luc Van Oostenryck