From nobody Sun Oct 5 21:12:42 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1582768603; cv=none; d=zohomail.com; s=zohoarc; b=EYQWk4icBkt3vAbyiI+BjePPlGUrJu+Rc1vpjgtCw7uoM6AD3aEJc3fmdYEmqJKU2f6KM3b4uysGNtnj+9ML4StL+vOrK98rj+bqC0/PeXkr2oGE3Sapfj9Mi7vvK4GAuQVb86tubRdY0236iHEOQAh2Y2CHkKRuId6CzEYoF1A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1582768603; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=LUPXxxCKyagr4YZxReptWxzyXWpDfn+h00F9pRtBtOc=; b=hSGSz6eAaloDSDsP2JxnEXubzwcrliAbCWdsz9oxuWV0HAu3jH0vIa0Ynb/OdJaUHbyeCFajZFc1XC4nIazzgxjfDDJPLmlDqp2FaRGzjULe9CQRWDbkxP/eTlQalKSrByw7NAaXNOqFJ69RLrOD/O0JCCry394FyHaWZgt27u4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 158276860385831.932267541061037; Wed, 26 Feb 2020 17:56:43 -0800 (PST) Received: from localhost ([::1]:52686 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j78Pp-0006co-Gf for importer@patchew.org; Wed, 26 Feb 2020 20:56:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36366) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j78OB-0004cA-7O for qemu-devel@nongnu.org; Wed, 26 Feb 2020 20:55:00 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j78O9-0002bX-S5 for qemu-devel@nongnu.org; Wed, 26 Feb 2020 20:54:59 -0500 Received: from us-smtp-1.mimecast.com ([205.139.110.61]:42094) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j78O9-0002aH-Ow for qemu-devel@nongnu.org; Wed, 26 Feb 2020 20:54:57 -0500 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-10-Vr7GnvyIOK6_Ip3C3n4SmQ-1; Wed, 26 Feb 2020 20:54:53 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 508CA1005512; Thu, 27 Feb 2020 01:54:51 +0000 (UTC) Received: from blue.redhat.com (ovpn-116-57.phx2.redhat.com [10.3.116.57]) by smtp.corp.redhat.com (Postfix) with ESMTP id E8E515C21B; Thu, 27 Feb 2020 01:54:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582768497; 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=LUPXxxCKyagr4YZxReptWxzyXWpDfn+h00F9pRtBtOc=; b=RxAmLlTNhf5FyuOFS6cLhEE3471xJtdJ3NkWUh9LzL6dsr3tvwJSkh+OU4R4i4EtRkXsel d4j28jtBcx9TSZclpFXV8DG8QKBltQ9Qmso3uSsCH2himqJYcss6ny+V4bliyJ4jjNvX8x XGyGB0eQJcfiTGWNhm7uGoZEmtGy+lI= X-MC-Unique: Vr7GnvyIOK6_Ip3C3n4SmQ-1 From: Eric Blake To: qemu-devel@nongnu.org Subject: [PULL 1/4] nbd: Fix regression with multiple meta contexts Date: Wed, 26 Feb 2020 19:54:45 -0600 Message-Id: <20200227015448.960538-2-eblake@redhat.com> In-Reply-To: <20200227015448.960538-1-eblake@redhat.com> References: <20200227015448.960538-1-eblake@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.61 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: Laurent Vivier , "open list:Network Block Dev..." Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Detected by a hang in the libnbd testsuite. If a client requests multiple meta contexts (both base:allocation and qemu:dirty-bitmap:x) at the same time, our attempt to silence a false-positive warning about a potential uninitialized variable introduced botched logic: we were short-circuiting the second context, and never sending the NBD_REPLY_FLAG_DONE. Combining two 'if' into one 'if/else' in bdf200a55 was wrong (I'm a bit embarrassed that such a change was my initial suggestion after the v1 patch, then I did not review the v2 patch that actually got committed). Revert that, and instead silence the false positive warning by replacing 'return ret' with 'return 0' (the value it always has at that point in the code, even though it eluded the deduction abilities of the robot that reported the false positive). Fixes: bdf200a5535 Signed-off-by: Eric Blake Message-Id: <20200206173832.130004-1-eblake@redhat.com> Reviewed-by: Laurent Vivier --- nbd/server.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/nbd/server.c b/nbd/server.c index 87fcd2e7bfac..11a31094ff83 100644 --- a/nbd/server.c +++ b/nbd/server.c @@ -2384,15 +2384,23 @@ static coroutine_fn int nbd_handle_request(NBDClien= t *client, !client->export_meta.bitmap, NBD_META_ID_BASE_ALLOCATION, errp); - } else { /* client->export_meta.bitmap */ + if (ret < 0) { + return ret; + } + } + + if (client->export_meta.bitmap) { ret =3D nbd_co_send_bitmap(client, request->handle, client->exp->export_bitmap, request->from, request->len, dont_fragment, true, NBD_META_ID_DIRTY_BITMAP, e= rrp); + if (ret < 0) { + return ret; + } } - return ret; + return 0; } else { return nbd_send_generic_reply(client, request->handle, -EINVAL, "CMD_BLOCK_STATUS not negotiated= ", --=20 2.24.1