Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp9011054rwr; Thu, 11 May 2023 08:51:55 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5mZngD7879FdY2PMO3Eu47WN7LadLHGtAnK0Mw6x59Sz3NJng4Hk3amfBDLsw0d6ZS74lH X-Received: by 2002:a05:6a20:8e29:b0:103:b0f9:7110 with SMTP id y41-20020a056a208e2900b00103b0f97110mr4813323pzj.11.1683820315095; Thu, 11 May 2023 08:51:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683820315; cv=none; d=google.com; s=arc-20160816; b=Dd1tZFb5idJQAjDHV5UwbeEkfuoyKo7NUek0joKXfbfH4x8gP9EIZ4q9zGol/ZPc+z mw9IF/IODu1Yzbfhl/Jvons/fGcKLejXrlCSJ2M/3avaHEH2PE2vnwFVCa6cwl9Rr7DA vfNNk4Re3X79eM1a8mHViPcdJ2ITuuUlttU8f+J3nudmYi2H0IGugePNmDc1B4Acb2jV Zo4KD9JRqFwMUwdoKc3Ks5Y+w8BpbKbuV9eWZgb67CQ+Tqo5kz93u0eRTOsovBhnqmAP rRY+yfQ0bYNbImkdVA3uq2vU0623hpAoxEhweWzX2pZzrA8WeKsEybl7S4H4lKqkLIeS NiPA== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=VPzDlPnKyy3xtGfiw0OBcH2inUcT8Zlw+3JDssnLSGc=; b=ZY6YLEH27Le+JXcekEiwQqef5fTE3tdHQ+faM2LHZUaYmyPGLt3ltiNgc6niJofack a84vQpL2zkunzCGe1VgsZqbaNnQrXpnZvVotYQL5jJOx0ih5kS0C54cY7KYCJi8l1kkg XAGQC9iG340BOltQgNI49Gd66XkG3ivgEwqH0yk6GqKwDQ1ccpLUraQqg/8+srMd7dHu F1vXHvt+XG6eaC/8yGCVp5OuIpGdVv5B4VzwMzq9OaU893fn9rtOAOkY2QPOl+4k7jtt ePK3HF+sZA3Htt3+cfunO3HZzY4oETP+8068pHVnR3YCXsU+GYHcoXDysNJy7y9B2Y7q p3NQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BShJ9Que; 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=intel.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ck20-20020a17090afe1400b0024e036ec731si25533668pjb.36.2023.05.11.08.51.41; Thu, 11 May 2023 08:51:55 -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=@intel.com header.s=Intel header.b=BShJ9Que; 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=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238823AbjEKPpK (ORCPT + 99 others); Thu, 11 May 2023 11:45:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238660AbjEKPo6 (ORCPT ); Thu, 11 May 2023 11:44:58 -0400 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8E826FD; Thu, 11 May 2023 08:44:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1683819896; x=1715355896; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=8S7nmNRsfN3F7l+vsdYbyvmv0P60T0hUfIF0wQ0EMhs=; b=BShJ9Querevh4ei01lDrbXOa+Q1HsrtF9qhkdyxoOB7OvqhAMq+sai7i Lqg20VxcJetVkXD3YNxqB9ZDaPc7JdvcraXNAfpkasbCoHJRneIrzKBrY zTwDjkfSSnBzDbbcMN+rxAZbiyYTkkEvUCYo6FepfgNLgC8G8mfRu2Cy9 LZ3XB+cNQ47+ct1MRDQNdMBUp8xFalpW0wZbsnoA86wjBlG6T10X+68Ue WEqQTanWyJgcjCSEAunNKL/cCYUvwtrpjx+Ao3FWsVAuXlLr219fq3S/N cSB24lz+Vp0TPOEAA4OatbG5Lre2j7EnOYycKKIxQTdu1Y8V7A5wkq95r Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10707"; a="335046665" X-IronPort-AV: E=Sophos;i="5.99,266,1677571200"; d="scan'208";a="335046665" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2023 08:44:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10707"; a="699776230" X-IronPort-AV: E=Sophos;i="5.99,266,1677571200"; d="scan'208";a="699776230" Received: from rchatre-ws.ostc.intel.com ([10.54.69.144]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 May 2023 08:44:48 -0700 From: Reinette Chatre To: jgg@nvidia.com, yishaih@nvidia.com, shameerali.kolothum.thodi@huawei.com, kevin.tian@intel.com, alex.williamson@redhat.com Cc: tglx@linutronix.de, darwi@linutronix.de, kvm@vger.kernel.org, dave.jiang@intel.com, jing2.liu@intel.com, ashok.raj@intel.com, fenghua.yu@intel.com, tom.zanussi@linux.intel.com, reinette.chatre@intel.com, linux-kernel@vger.kernel.org Subject: [PATCH V5 04/11] vfio/pci: Move to single error path Date: Thu, 11 May 2023 08:44:31 -0700 Message-Id: <72dddae8aa710ce522a74130120733af61cffe4d.1683740667.git.reinette.chatre@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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,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 Enabling and disabling of an interrupt involves several steps that can fail. Cleanup after failure is done when the error is encountered, resulting in some repetitive code. Support for dynamic contexts will introduce more steps during interrupt enabling and disabling. Transition to centralized exit path in preparation for dynamic contexts to eliminate duplicate error handling code. Signed-off-by: Reinette Chatre Reviewed-by: Kevin Tian --- Changes since V4: - Add Kevin's Reviewed-by tag. (Kevin) Changes since V2: - Move patch to earlier in series in support of the change to dynamic context management. - Do not add the "ctx->name = NULL" in error path. It is not done in baseline and will not be needed when transitioning to dynamic context management. - Update changelog to not make this change specific to dynamic MSI-X. Changes since RFC V1: - Improve changelog. drivers/vfio/pci/vfio_pci_intrs.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c index 6094679349d9..96396e1ad085 100644 --- a/drivers/vfio/pci/vfio_pci_intrs.c +++ b/drivers/vfio/pci/vfio_pci_intrs.c @@ -427,8 +427,8 @@ static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev, trigger = eventfd_ctx_fdget(fd); if (IS_ERR(trigger)) { - kfree(ctx->name); - return PTR_ERR(trigger); + ret = PTR_ERR(trigger); + goto out_free_name; } /* @@ -448,11 +448,8 @@ static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev, ret = request_irq(irq, vfio_msihandler, 0, ctx->name, trigger); vfio_pci_memory_unlock_and_restore(vdev, cmd); - if (ret) { - kfree(ctx->name); - eventfd_ctx_put(trigger); - return ret; - } + if (ret) + goto out_put_eventfd_ctx; ctx->producer.token = trigger; ctx->producer.irq = irq; @@ -467,6 +464,12 @@ static int vfio_msi_set_vector_signal(struct vfio_pci_core_device *vdev, ctx->trigger = trigger; return 0; + +out_put_eventfd_ctx: + eventfd_ctx_put(trigger); +out_free_name: + kfree(ctx->name); + return ret; } static int vfio_msi_set_block(struct vfio_pci_core_device *vdev, unsigned start, -- 2.34.1