From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AF809C2BA16 for ; Tue, 7 Apr 2020 09:01:57 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 809F8206F7 for ; Tue, 7 Apr 2020 09:01:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="DZGBbvmf" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 809F8206F7 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jLk71-00073Z-TW; Tue, 07 Apr 2020 09:01:39 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jLk6z-00073U-VL for xen-devel@lists.xenproject.org; Tue, 07 Apr 2020 09:01:37 +0000 X-Inumbo-ID: 634c6866-78ae-11ea-b4f4-bc764e2007e4 Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 634c6866-78ae-11ea-b4f4-bc764e2007e4; Tue, 07 Apr 2020 09:01:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To: MIME-Version:Date:Message-ID:From:References:Cc:To:Subject:Sender:Reply-To: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=z652YeEs/2kLzM0La3yrghnyvCLBH662Wd6GthnNSeI=; b=DZGBbvmffetRjur8md4SMKuFhU r0lvU9oTcdCWrooIEUSnbYVSW8VkKck2tt3wRhynO9eGxKAXqeXT5zglUAkwL7uyDsq3rM5A1+yY9 eq7VdVcmMdoz1kz5mdjZYjAD5gI+SeEDQ84ZEN025HA4451JHvLWXxt43mLipzkRg24E=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jLk6v-0006Ve-KC; Tue, 07 Apr 2020 09:01:33 +0000 Received: from 54-240-197-236.amazon.com ([54.240.197.236] helo=a483e7b01a66.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jLk6v-0007ZZ-D4; Tue, 07 Apr 2020 09:01:33 +0000 Subject: Re: [PATCH v2] xen/guest_access: Harden *copy_to_guest_offset() to prevent const dest operand To: Jan Beulich References: <20200404130613.26428-1-julien@xen.org> <391ef401-b5d3-2f95-5fe3-c32f372dcc92@suse.com> From: Julien Grall Message-ID: Date: Tue, 7 Apr 2020 10:01:30 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Thunderbird/68.6.0 MIME-Version: 1.0 In-Reply-To: <391ef401-b5d3-2f95-5fe3-c32f372dcc92@suse.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Wei Liu , Andrew Cooper , Julien Grall , xen-devel@lists.xenproject.org, Volodymyr Babchuk , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Hi Jan, On 06/04/2020 12:01, Jan Beulich wrote: > On 04.04.2020 15:06, Julien Grall wrote: >> From: Julien Grall >> >> At the moment, *copy_to_guest_offset() will allow the hypervisor to copy >> data to guest handle marked const. >> >> Thankfully, no users of the helper will do that. Rather than hoping this >> can be caught during review, harden copy_to_guest_offset() so the build >> will fail if such users are introduced. >> >> There is no easy way to check whether a const is NULL in C99. The >> approach used is to introduce an unused variable that is non-const and >> assign the handle. If the handle were const, this would fail at build >> because without an explicit cast, it is not possible to assign a const >> variable to a non-const variable. >> >> Suggested-by: Jan Beulich >> Signed-off-by: Julien Grall > > I'm not convinced it is a good idea to add (recurring) comments > like you do - there are more aspects of these macros that would > be worth commenting on, and commenting on some but not all may > give the wrong impression of all subtleties being covered (also > for others). I thought you would say that, but I don't think I am the best person to describe all the other subtetly of the code. Yet I didn't want to not comment the oddity of using a maybe_unused variable. > > In any event I'd like to ask that each header gain such a > comment only once, with the other being a tiny reference to the > one "complete" instance. I am not entirely sure how this would look like. We would need to rely on _t having the same meaning across all the headers. This is quite easy to miss during review, so my preference still sticks to multiple comments. Although I can reduce the size of the comment to one on top of the definition of _t. Something like: "Check if the handler is not const". Cheers, -- Julien Grall