Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp26273795rwd; Mon, 3 Jul 2023 07:36:27 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7J0iEjVGUoXmCzNAZXTpiM2JNYIoqISYDcEhDKVRyf3c2lPBBRKCIt6voctFP+3+OsvNlx X-Received: by 2002:a17:902:cecb:b0:1b7:dfbd:4dd3 with SMTP id d11-20020a170902cecb00b001b7dfbd4dd3mr25027895plg.9.1688394986891; Mon, 03 Jul 2023 07:36:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688394986; cv=none; d=google.com; s=arc-20160816; b=r5SduO3M9/3qHPVn3fd9nqxbl0G2dZSkVs1b9/Uscc75HVP1gLXmXsaQam/RsFrinJ AKQGPF0lhBQ+VkfDH3lnBXMle4ADvwU1QLPMCh7FdW+jor6Kx6fUkqjsK3nzOjurjAYF ghjMcnCyJtatqDioN2lJZQVj0sYWswX0wLv/329ywIIdA0Yx5vYmkLuxpoSWWJxMo/Sq nmqEQBF3StlaKobGrJlq+pgf+to56b1B9Lkw8MukWNBB6dW8uMlaIw9Vghn9BdIeIdXr qT645YR2BeRCedIX8LR5VqLWFJk8/ApkqxpCCKHWH03TVkQF5mMuC5IRGvAhjm8Us8pr 2urg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=tXq7CSCBg4+cZGxQq09ZDU/5siBg7EUbmcmgq0dXQ3g=; fh=rbrjJ8BT+MxUrCsYX5TsNq5qDGo+H1MA1m3+Cfe862Y=; b=Ebly8Qfw3f5YJryzBiM58FJLxNdPdnH0Cn3kLfNB0fPtU9PFR8o63NHXAxrmcIdGJr mugOgZURT/ii4q+ieVwBAznjmorZ9NOQLf/66L/YJ4A0wSCXVYruRmg3su8AYk6iU1MF qeN5nF3i8kcKQRcg4Zahg1Uo5i2j6vxFTEZVFE1vIm9pYRxeXyRqMaEuiCiwUEITbD4b ExxbRMO3YJmo9+70E+Ww7v6BWci+m+AaQxkFZFdw6+yuQ/CyvPr3TH1I41cdVO3rtW5G tNtukKiwktOwWmbTb4GYcyP9g9gFcM3F9932zf7SKYoEyc64yyfFa10o6ywnhxSVAyP0 7cTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cMGId2cm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m1-20020a170902db0100b001b88e609e56si3877036plx.488.2023.07.03.07.36.12; Mon, 03 Jul 2023 07:36:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=cMGId2cm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230493AbjGCOXr (ORCPT + 99 others); Mon, 3 Jul 2023 10:23:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48120 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231259AbjGCOX1 (ORCPT ); Mon, 3 Jul 2023 10:23:27 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC35CB3 for ; Mon, 3 Jul 2023 07:22:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1688394164; 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; bh=tXq7CSCBg4+cZGxQq09ZDU/5siBg7EUbmcmgq0dXQ3g=; b=cMGId2cmMNYg1rXUJd334BfXmOlzN7hOK56lPYJMQuNn6cKV5K/w0KjqA/SuxIIhwZGawd 4QTkLLm5QVyggNMYXUiq89WmfV9MZmKG+zsxlxeRJftgBs+mnZuyEwhG62IdU+jkTbL4eJ 8VHOGd1NpXYSwKWhiXMu0lNrb9J2kQw= Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-134-g9FqHmkaM_WYKSeHKKyPcQ-1; Mon, 03 Jul 2023 10:22:42 -0400 X-MC-Unique: g9FqHmkaM_WYKSeHKKyPcQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 628983813F2C; Mon, 3 Jul 2023 14:22:42 +0000 (UTC) Received: from eperezma.remote.csb (unknown [10.39.192.105]) by smtp.corp.redhat.com (Postfix) with ESMTP id A2D581400C35; Mon, 3 Jul 2023 14:22:19 +0000 (UTC) From: =?UTF-8?q?Eugenio=20P=C3=A9rez?= To: mst@redhat.com Cc: Jason Wang , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Shannon Nelson , virtualization@lists.linux-foundation.org, kvm@vger.kernel.org Subject: [PATCH] vdpa: reject F_ENABLE_AFTER_DRIVER_OK if backend does not support it Date: Mon, 3 Jul 2023 16:22:18 +0200 Message-Id: <20230703142218.362549-1-eperezma@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With the current code it is accepted as long as userland send it. Although userland should not set a feature flag that has not been offered to it with VHOST_GET_BACKEND_FEATURES, the current code will not complain for it. Since there is no specific reason for any parent to reject that backend feature bit when it has been proposed, let's control it at vdpa frontend level. Future patches may move this control to the parent driver. Fixes: 967800d2d52e ("vdpa: accept VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK backend feature") Signed-off-by: Eugenio PĂ©rez --- Sent with Fixes: tag pointing to git.kernel.org/pub/scm/linux/kernel/git/mst commit. Please let me know if I should send a v3 of [1] instead. [1] https://lore.kernel.org/lkml/20230609121244-mutt-send-email-mst@kernel.org/T/ --- drivers/vhost/vdpa.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c index e1abf29fed5b..a7e554352351 100644 --- a/drivers/vhost/vdpa.c +++ b/drivers/vhost/vdpa.c @@ -681,18 +681,21 @@ static long vhost_vdpa_unlocked_ioctl(struct file *filep, { struct vhost_vdpa *v = filep->private_data; struct vhost_dev *d = &v->vdev; + const struct vdpa_config_ops *ops = v->vdpa->config; void __user *argp = (void __user *)arg; u64 __user *featurep = argp; - u64 features; + u64 features, parent_features = 0; long r = 0; if (cmd == VHOST_SET_BACKEND_FEATURES) { if (copy_from_user(&features, featurep, sizeof(features))) return -EFAULT; + if (ops->get_backend_features) + parent_features = ops->get_backend_features(v->vdpa); if (features & ~(VHOST_VDPA_BACKEND_FEATURES | BIT_ULL(VHOST_BACKEND_F_SUSPEND) | BIT_ULL(VHOST_BACKEND_F_RESUME) | - BIT_ULL(VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK))) + parent_features)) return -EOPNOTSUPP; if ((features & BIT_ULL(VHOST_BACKEND_F_SUSPEND)) && !vhost_vdpa_can_suspend(v)) -- 2.39.3