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=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 25C2EC6369E for ; Wed, 18 Nov 2020 16:34:42 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 4644A20684 for ; Wed, 18 Nov 2020 16:34:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EN50a0v3" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4644A20684 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:43576 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kfQPh-0003Bh-Sv for qemu-devel@archiver.kernel.org; Wed, 18 Nov 2020 11:34:33 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:52670) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kfQJI-000522-Ab for qemu-devel@nongnu.org; Wed, 18 Nov 2020 11:27:56 -0500 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:27233) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kfQJG-00033z-2m for qemu-devel@nongnu.org; Wed, 18 Nov 2020 11:27:55 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1605716873; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=i44V+xFgOvP9txMnqpXQtW1P88J3LrzUH1T6Oo2Ubt0=; b=EN50a0v3nmaWlAK8ud7KHZAvCDZEvWmqNXR2oJKYDA47eycyfMofYFcrvh30OJVbvIVJbf hcuq2t9OFX8LhVQ5JLCfRucLdds4FTyDyALLCeDS8pt3wqlPKOjBdp0jYl2/RlM1JvoH9F PWlClV1wtHXQ0c3XVMJlaSlNP0y/p94= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-217-2zFKH99LM1CIPPP0DfHz-Q-1; Wed, 18 Nov 2020 11:27:51 -0500 X-MC-Unique: 2zFKH99LM1CIPPP0DfHz-Q-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C689B1858EC1; Wed, 18 Nov 2020 16:27:46 +0000 (UTC) Received: from blackfin.pond.sub.org (ovpn-112-103.ams2.redhat.com [10.36.112.103]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 839445D9CD; Wed, 18 Nov 2020 16:27:46 +0000 (UTC) Received: by blackfin.pond.sub.org (Postfix, from userid 1000) id 0885A11358BA; Wed, 18 Nov 2020 17:27:45 +0100 (CET) From: Markus Armbruster To: =?utf-8?Q?Marc-Andr=C3=A9?= Lureau Subject: Re: [PATCH 0/4] vhost-user: avoid g_return_val_if() in get/set_config() References: <20201118091644.199527-1-stefanha@redhat.com> Date: Wed, 18 Nov 2020 17:27:44 +0100 In-Reply-To: (=?utf-8?Q?=22Marc-Andr=C3=A9?= Lureau"'s message of "Wed, 18 Nov 2020 19:21:15 +0400") Message-ID: <87ft56hbpb.fsf@dusky.pond.sub.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=armbru@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=216.205.24.124; envelope-from=armbru@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/11/18 00:38:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , "open list:Block layer core" , "Michael S. Tsirkin" , QEMU , Coiby Xu , Raphael Norwitz , Gerd Hoffmann , Stefan Hajnoczi , Max Reitz Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Marc-Andr=C3=A9 Lureau writes: > Hi > > On Wed, Nov 18, 2020 at 1:17 PM Stefan Hajnoczi wro= te: > >> Markus Armbruster pointed out that g_return_val_if() is meant for >> programming >> errors. It must not be used for input validation since it can be compile= d >> out. >> Use explicit if statements instead. >> >> This patch series converts vhost-user device backends that use >> g_return_val_if() in get/set_config(). >> >> Stefan Hajnoczi (4): >> contrib/vhost-user-blk: avoid g_return_val_if() input validation >> contrib/vhost-user-gpu: avoid g_return_val_if() input validation >> contrib/vhost-user-input: avoid g_return_val_if() input validation >> block/export: avoid g_return_val_if() input validation >> >> > The condition is the same for all the patches, checking the message confi= g > payload is large enough. Afaict, the value is set by the client, so it > could be a runtime error, and thus explicit checking is required. > > Nevertheless, one nice thing about g_return* macros, is that it provides = an > error message when the condition fails, which helps. Could you replace it= ? > > (fwiw, I think g_return* macros are so convenient, I would simply make > G_DISABLE_CHECKS forbidden and call it a day) Nice or not, they are as inappropriate for input validation as assert() is: If expr evaluates to FALSE, the current function should be considered to have undefined behaviour (a programmer error). The only correct solution to such an error is to change the module that is calling the current function, so that it avoids this incorrect call.