Received: by 2002:a05:6358:4e97:b0:b3:742d:4702 with SMTP id ce23csp1864624rwb; Fri, 19 Aug 2022 10:39:40 -0700 (PDT) X-Google-Smtp-Source: AA6agR5cOzPU3W5EMOtzoTCl1lFa15O1QYCja7IKiuUuhMgdr0/InqNoY5aT+AhEp/4+cweG5tUd X-Received: by 2002:a17:907:7b9d:b0:731:1a2:5a32 with SMTP id ne29-20020a1709077b9d00b0073101a25a32mr5390433ejc.542.1660930780372; Fri, 19 Aug 2022 10:39:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660930780; cv=none; d=google.com; s=arc-20160816; b=fhpqdjGDcbBZ6RCOJYIDi0NJSv4ldFleL4NfToiYgKPxd+jUwgr7/tT5r/8U1BGiBj foY+VVZPnDRfha2RYY3t5HmNEQG8AQb4vSvBoU1fMmAR8jeMr0kzf1ySeSp0S2QElIc8 dU4aLcW2lpHpDDoww+LeGb0XbGdnF6Deza82lVOJDX67YHCu61jQQvfPQL/v6Hv3nuFw ipOlRve2aa7/EkjghDb9wzyq0RqEaktWxYh8KfU9xOB2YMmRB/azjtvSrHd7Tm/C/Veg popxq1IoozZsMF8U1BzRL+R0VBBi9YeGY+MH7PsoNt7DGD4V0cdbqw+7Xh/YBG+sC341 2bAg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=LHsQY3bJ3ZN4Dqxu4tEZUArfsnvavBpjcw50CHRhy6Y=; b=oC+4JklopcmDLtgNW9DMbrx0m4DnmqheAJDhz/EFSehrc+GW3QKNbUtZTl3EvomCk7 V7vgD/Az8xD0uz3nfEpg3Qgddmfe1o3jsd1mFzSJzBCOHJ4bXtTRNC3vD/fyiSdYg+bP birJrpjB5N7248Q/+L04YEIOSKwslzS5GA0nIKAQ2AxP5bx5liQGPmq2KcvuzojraIqB 0V/L9lqIHIy8RAt1ly6vcdl/UQGmaESIP3NF1aP4lUQhj5rymRZlcsFafbtHnF+uuACZ RyhhAOVhoGcALolxOk5vCTxIEtf2+YaSwEfUCLn0BtjOBESyoK6b+GfSzyeZ5Ydl0t38 C/0Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=t0608oLx; 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=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nc4-20020a1709071c0400b007341ad4aff7si3845296ejc.505.2022.08.19.10.39.15; Fri, 19 Aug 2022 10:39:40 -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=@linuxfoundation.org header.s=korg header.b=t0608oLx; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354263AbiHSQwR (ORCPT + 99 others); Fri, 19 Aug 2022 12:52:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354390AbiHSQuu (ORCPT ); Fri, 19 Aug 2022 12:50:50 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E955463C3; Fri, 19 Aug 2022 09:13:54 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id DA244B8281F; Fri, 19 Aug 2022 16:13:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42F79C433C1; Fri, 19 Aug 2022 16:13:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1660925590; bh=Sc7BqZDk1f59iz6GdHTuaXWtnjTzvHo7f/8963wEQ2o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t0608oLxydmcpMeiBlDQCvu/fbJmSvyz8o8O+5yu30UeD1ivYQuV0TXNqU8VTq/TM ScHL1UL8yikg+w4e/Xyq6p3BHJdY4CCvrMTp/dRgWi5cK/dKJ/eNre8W0iVub0YxHO TEy7FKVWM2PICGQj/XJWEINpt3SzR3M9rxm+xu1E= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Maximilian Heyne , SeongJae Park , Juergen Gross Subject: [PATCH 5.10 510/545] xen-blkback: fix persistent grants negotiation Date: Fri, 19 Aug 2022 17:44:40 +0200 Message-Id: <20220819153852.307904743@linuxfoundation.org> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220819153829.135562864@linuxfoundation.org> References: <20220819153829.135562864@linuxfoundation.org> User-Agent: quilt/0.67 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 From: SeongJae Park commit fc9be616bb8f3ed9cf560308f86904f5c06be205 upstream. Persistent grants feature can be used only when both backend and the frontend supports the feature. The feature was always supported by 'blkback', but commit aac8a70db24b ("xen-blkback: add a parameter for disabling of persistent grants") has introduced a parameter for disabling it runtime. To avoid the parameter be updated while being used by 'blkback', the commit caches the parameter into 'vbd->feature_gnt_persistent' in 'xen_vbd_create()', and then check if the guest also supports the feature and finally updates the field in 'connect_ring()'. However, 'connect_ring()' could be called before 'xen_vbd_create()', so later execution of 'xen_vbd_create()' can wrongly overwrite 'true' to 'vbd->feature_gnt_persistent'. As a result, 'blkback' could try to use 'persistent grants' feature even if the guest doesn't support the feature. This commit fixes the issue by moving the parameter value caching to 'xen_blkif_alloc()', which allocates the 'blkif'. Because the struct embeds 'vbd' object, which will be used by 'connect_ring()' later, this should be called before 'connect_ring()' and therefore this should be the right and safe place to do the caching. Fixes: aac8a70db24b ("xen-blkback: add a parameter for disabling of persistent grants") Cc: # 5.10.x Signed-off-by: Maximilian Heyne Signed-off-by: SeongJae Park Reviewed-by: Maximilian Heyne Reviewed-by: Juergen Gross Link: https://lore.kernel.org/r/20220715225108.193398-2-sj@kernel.org Signed-off-by: Juergen Gross Signed-off-by: Greg Kroah-Hartman --- drivers/block/xen-blkback/xenbus.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -157,6 +157,11 @@ static int xen_blkif_alloc_rings(struct return 0; } +/* Enable the persistent grants feature. */ +static bool feature_persistent = true; +module_param(feature_persistent, bool, 0644); +MODULE_PARM_DESC(feature_persistent, "Enables the persistent grants feature"); + static struct xen_blkif *xen_blkif_alloc(domid_t domid) { struct xen_blkif *blkif; @@ -181,6 +186,8 @@ static struct xen_blkif *xen_blkif_alloc __module_get(THIS_MODULE); INIT_WORK(&blkif->free_work, xen_blkif_deferred_free); + blkif->vbd.feature_gnt_persistent = feature_persistent; + return blkif; } @@ -472,12 +479,6 @@ static void xen_vbd_free(struct xen_vbd vbd->bdev = NULL; } -/* Enable the persistent grants feature. */ -static bool feature_persistent = true; -module_param(feature_persistent, bool, 0644); -MODULE_PARM_DESC(feature_persistent, - "Enables the persistent grants feature"); - static int xen_vbd_create(struct xen_blkif *blkif, blkif_vdev_t handle, unsigned major, unsigned minor, int readonly, int cdrom) @@ -523,8 +524,6 @@ static int xen_vbd_create(struct xen_blk if (q && blk_queue_secure_erase(q)) vbd->discard_secure = true; - vbd->feature_gnt_persistent = feature_persistent; - pr_debug("Successful creation of handle=%04x (dom=%u)\n", handle, blkif->domid); return 0;