From patchwork Wed May 8 07:44:46 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Stefano Garzarella X-Patchwork-Id: 1932868 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=i5fMwZrF; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VZ6hl3ztFz1ymg for ; Wed, 8 May 2024 17:48:39 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s4bzs-0003az-8C; Wed, 08 May 2024 03:45:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s4bzS-0003SE-Bn for qemu-devel@nongnu.org; Wed, 08 May 2024 03:45:29 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s4bzO-0000q6-H0 for qemu-devel@nongnu.org; Wed, 08 May 2024 03:45:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715154317; 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=Vs3QOPT0b+rkefawz4PPNw8XtECEjgm+FjXJsIBmtfo=; b=i5fMwZrFIGxXV/Uqcfj3hDCQz7qOiF8nWPf8NBRGd5uiEEBbJRnvGI4ZNIkS+yuXuApmtR 2anxvrRIveFhxRyOfrBKbz86pTMDoq8h/FZ8ul3VF5I3RFHYCbhzpEiRgMzLJ2wF/1KbIQ 7/1COt/PS23FKaD7kQ5VWA+DYoAOhYE= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-33-LizKm5plOdKsxa1X90lQtg-1; Wed, 08 May 2024 03:45:15 -0400 X-MC-Unique: LizKm5plOdKsxa1X90lQtg-1 Received: by mail-ed1-f72.google.com with SMTP id 4fb4d7f45d1cf-572b3091d68so2349579a12.2 for ; Wed, 08 May 2024 00:45:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715154314; x=1715759114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Vs3QOPT0b+rkefawz4PPNw8XtECEjgm+FjXJsIBmtfo=; b=d/hwByzQa/L3J5cG2xyondP8wIrYm9SZBIfet1OKqDPF7z+cn75LZ0OLqk6QgQqw+t gzY0Z9koa0+r25/Azrcgpmq2JtBTvl9RAOqSH3BlvbehsXjwMWdoJtRQ2Uj81fYa5Sn2 s3hQLrWS76JuHxcc80qFAdcJl9J+FPvKJE9khOFeLpEnrJd8OPmXZ+CKkFzvFvTBlGRl Cn6ltG5vSMUAFFuw1/Ugd2EO14fx0YRMfXJ7AfFMo7fQ7wOBz9SomwN7VmvHrBKpn3VA 1qayeLnBGFWvG2mg2TWQrpdhZmxlwD70fIdRGI0NElsW3uFngWmTBGrx7QnG+hpPxdvs 0s2w== X-Gm-Message-State: AOJu0YwSF5IY3kKX2GNOQv3uPw+rSW6X3Z0AqnUDW5D9dkWti9Ny/zsK GqV/ie5v3HvUgoQNcFDDh6/IqMAtPJz87szKIT/KDYo3dki8DsQ8PSq7Mbixo3HUs8JGE9lPhc2 0FIbQiiOzpQV3BD3+smG28/tNTv6YcmeIHAQs30rg0CkoOhY5Ff7FJCxnV8413JKMRZpSm6P9UC wis7GMa+ZcLTc3Spqivm3I3xD6W3XvDPK62+e1 X-Received: by 2002:a50:9317:0:b0:572:8aab:441c with SMTP id 4fb4d7f45d1cf-5731da5b65amr1253646a12.26.1715154314054; Wed, 08 May 2024 00:45:14 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEHrsrWeJgIT3Ek9Coozq8NQkbRqXhAGzux1zrYc55O/lshafDqRssXbCHqeprmjqg24zdK3A== X-Received: by 2002:a50:9317:0:b0:572:8aab:441c with SMTP id 4fb4d7f45d1cf-5731da5b65amr1253613a12.26.1715154313727; Wed, 08 May 2024 00:45:13 -0700 (PDT) Received: from localhost.localdomain (host-87-12-25-56.business.telecomitalia.it. [87.12.25.56]) by smtp.gmail.com with ESMTPSA id bt9-20020a0564020a4900b005729c4c2501sm7303585edb.24.2024.05.08.00.45.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 May 2024 00:45:13 -0700 (PDT) From: Stefano Garzarella To: qemu-devel@nongnu.org Cc: Jason Wang , Coiby Xu , Paolo Bonzini , qemu-block@nongnu.org, =?utf-8?q?Danie?= =?utf-8?q?l_P=2E_Berrang=C3=A9?= , Gerd Hoffmann , slp@redhat.com, =?utf-8?q?Philippe_Mathi?= =?utf-8?q?eu-Daud=C3=A9?= , Brad Smith , Eduardo Habkost , Thomas Huth , Eric Blake , Kevin Wolf , Markus Armbruster , Raphael Norwitz , gmaglione@redhat.com, Laurent Vivier , stefanha@redhat.com, David Hildenbrand , Hanna Reitz , "Michael S. Tsirkin" , Igor Mammedov , =?utf-8?q?Marc-Andr=C3=A9_Lureau?= , Stefano Garzarella Subject: [PATCH v4 02/12] libvhost-user: fail vu_message_write() if sendmsg() is failing Date: Wed, 8 May 2024 09:44:46 +0200 Message-ID: <20240508074457.12367-3-sgarzare@redhat.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240508074457.12367-1-sgarzare@redhat.com> References: <20240508074457.12367-1-sgarzare@redhat.com> MIME-Version: 1.0 Content-type: text/plain Received-SPF: pass client-ip=170.10.129.124; envelope-from=sgarzare@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.581, 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_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org In vu_message_write() we use sendmsg() to send the message header, then a write() to send the payload. If sendmsg() fails we should avoid sending the payload, since we were unable to send the header. Discovered before fixing the issue with the previous patch, where sendmsg() failed on macOS due to wrong parameters, but the frontend still sent the payload which the backend incorrectly interpreted as a wrong header. Signed-off-by: Stefano Garzarella Reviewed-by: Daniel P. Berrangé Reviewed-by: Philippe Mathieu-Daudé Tested-by: Philippe Mathieu-Daudé --- subprojects/libvhost-user/libvhost-user.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subprojects/libvhost-user/libvhost-user.c b/subprojects/libvhost-user/libvhost-user.c index 22bea0c775..a11afd1960 100644 --- a/subprojects/libvhost-user/libvhost-user.c +++ b/subprojects/libvhost-user/libvhost-user.c @@ -639,6 +639,11 @@ vu_message_write(VuDev *dev, int conn_fd, VhostUserMsg *vmsg) rc = sendmsg(conn_fd, &msg, 0); } while (rc < 0 && (errno == EINTR || errno == EAGAIN)); + if (rc <= 0) { + vu_panic(dev, "Error while writing: %s", strerror(errno)); + return false; + } + if (vmsg->size) { do { if (vmsg->data) {