Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp5011740rwl; Tue, 28 Mar 2023 14:57:16 -0700 (PDT) X-Google-Smtp-Source: AKy350ZE2sMNEb+SFZjKUOMmPPxWAUwZHPmwfYpmB2LUxTgCxX2VQU6TXxjxiRAE2mo9qn2h8Xi0 X-Received: by 2002:a17:906:dffb:b0:92f:de0c:c914 with SMTP id lc27-20020a170906dffb00b0092fde0cc914mr18699350ejc.28.1680040636495; Tue, 28 Mar 2023 14:57:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680040636; cv=none; d=google.com; s=arc-20160816; b=J9103fCOMDies7rR069u1V43320i0qT4EFbyHmxcMBL2mfBJTlIy2S5279OwukzBpG Tmu6fD5jGta8G6CSS/l449rQQ3q7RnU20g2AbXAJFE2rJl3SXDVMMCxrXnerqm2hsaiA qzzm42Kdmy30QKV5iHdqhFGSsOBNYzPl81q6xLIutyykFS++vPI1efEhRRJsL0mCof5V ulRMJ9cTQJReeIwnGM/Mf9r9eYs9RWzvz1l4qphHrX61VgrPdhhY2H6T7JcrSZwjMHuj FjJIyWMHoqvy29X5iWZ07k4nHxwBJXEjHwvqXUxB4+FIZ3/2RdUy8ICTLW8z/OR02csB B23A== 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=UYtRZ+9LCzc4ob5FwVFJlraEFeZWCmyPJRNSffesbLU=; b=A1hYHRw7/wMkFS0Txa/ihERs8SwLbZ0swzoFBtTuV8iXzQsqTVDTKqIUJzZAc4apHx y6GqTInvAnN0Q95DOv6x8joXIhfl8d1zxT5WnNo3a5gHahnYDvwUsFBGxXDNEggHx0eE COTsHfYNa8/dPXT9cpQ/ndpAv9FsbzwYfptHm2oqCZUFNo0m/CzWyvhxmOvRXw66SLIH JZsLrdLsxw3ap+U3a9LVWskP7OIz62ukioK0jxKXl0AgdA4fCZBNz4XU6GmzCHZqOgh1 HafOO7qiackSkW9CoRh8QLdo8KWMdWMe06pf4dz/FDAjn+tTUboBcq60Sb4Vr1RP+ix5 fbzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=Byp15Mcs; 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 xa15-20020a170907b9cf00b0092d5457516asi27355475ejc.589.2023.03.28.14.56.52; Tue, 28 Mar 2023 14:57:16 -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=Byp15Mcs; 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 S230098AbjC1Vy6 (ORCPT + 99 others); Tue, 28 Mar 2023 17:54:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48708 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230075AbjC1Vyn (ORCPT ); Tue, 28 Mar 2023 17:54:43 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 669F73591; Tue, 28 Mar 2023 14:54:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1680040463; x=1711576463; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ZFMnAYWkb7URHJwpoaNsszFowQGtPXU9f9P8ZuKBdU4=; b=Byp15McsPG8nMDQugS83bOLsuNJshXHpSeF8Ir+eTBT3uEx0EodIhJzk tUy9kPrgWFv2ktLXxHC5PwBuxEOfqk1g+CJzqW4upiQom3TnUBkUuC6bT fIXVIuUQ50BJhFgUtRdI19T26G3ZpiyHI1I8HhcFdXHPUmJniyu23VC4W dRAv6VI2qHTC9/W+Y4uKU55X9F8ZLICbSLFqkPgdFvmO6XD5qETuhcBCG vnRKyhJ1tXdSeMYbrikI8GigHL9MkSIFOCtyVw0wsultI5Sk8N4AWW2tl UI3CqHsL6J9wJg/BPuh0Zja1c8PaWpQqiurmxOsRZtHXPVODWs1Jffcli A==; X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="403316942" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="403316942" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 14:53:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10663"; a="748543785" X-IronPort-AV: E=Sophos;i="5.98,297,1673942400"; d="scan'208";a="748543785" Received: from rchatre-ws.ostc.intel.com ([10.54.69.144]) by fmsmga008-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2023 14:53:51 -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 V2 6/8] vfio/pci: Move to single error path Date: Tue, 28 Mar 2023 14:53:33 -0700 Message-Id: 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.5 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE autolearn=unavailable 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 MSI-X will introduce more steps during interrupt enabling and disabling. Transition to centralized exit path in preparation for dynamic MSI-X to eliminate duplicate error handling code. Ensure no remaining state refers to freed memory. Signed-off-by: Reinette Chatre --- Changes since RFC V1: - Improve changelog. drivers/vfio/pci/vfio_pci_intrs.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c index b86dce0f384f..b3a258e58625 100644 --- a/drivers/vfio/pci/vfio_pci_intrs.c +++ b/drivers/vfio/pci/vfio_pci_intrs.c @@ -439,8 +439,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; } /* @@ -460,11 +460,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; @@ -479,6 +476,13 @@ 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); + ctx->name = NULL; + return ret; } static int vfio_msi_set_block(struct vfio_pci_core_device *vdev, unsigned start, -- 2.34.1