From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4EE0C3A589 for ; Tue, 20 Aug 2019 13:43:31 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 705A722DA9 for ; Tue, 20 Aug 2019 13:43:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566308611; bh=oDMtXJEa9ZCWsIE/vDnDWDnZvkXGuWpAVpKSJlV98jQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=mRzX+5BDT2Nohxk88pYfNv1ls718aQm5YA5m3eN1fm6tAo/vHZj0cZ1x00NRdvlJZ NWoyB35CZFOKl25X+oaMPQDtaR3Twt9fm8vxfT+PmiAsuaYOR8rQI6AEY1LIGkLbTq n1paw06kvPiWgzT45CrDv9/VnhwtAAW+sGfc9cOA= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730399AbfHTNna (ORCPT ); Tue, 20 Aug 2019 09:43:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:39090 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730838AbfHTNnU (ORCPT ); Tue, 20 Aug 2019 09:43:20 -0400 Received: from sasha-vm.mshome.net (unknown [12.236.144.82]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id A0AEF22DA7; Tue, 20 Aug 2019 13:43:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1566308600; bh=oDMtXJEa9ZCWsIE/vDnDWDnZvkXGuWpAVpKSJlV98jQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q/hKToztDS+fjZQT5ds3FpQsw2PnSbxd2pl/LVjkUDPiMfXsIq3S0bM5wvx3qZuED Q+w5xAkcY7e8bNiYZS4lfEywbiL4dJTsIFnZyldoT5Z4vXm3xFubVelqS2WhFtB66r WKRlKp3AOIhD8cc8Lxmo+H6tRuCso7XpSvUz1OUU= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Wenwen Wang , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Boris Ostrovsky , Jens Axboe , Sasha Levin , linux-block@vger.kernel.org Subject: [PATCH AUTOSEL 4.9 4/7] xen/blkback: fix memory leaks Date: Tue, 20 Aug 2019 09:43:12 -0400 Message-Id: <20190820134315.11720-4-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190820134315.11720-1-sashal@kernel.org> References: <20190820134315.11720-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wenwen Wang [ Upstream commit ae78ca3cf3d9e9f914bfcd0bc5c389ff18b9c2e0 ] In read_per_ring_refs(), after 'req' and related memory regions are allocated, xen_blkif_map() is invoked to map the shared frame, irq, and etc. However, if this mapping process fails, no cleanup is performed, leading to memory leaks. To fix this issue, invoke the cleanup before returning the error. Acked-by: Roger Pau Monné Reviewed-by: Boris Ostrovsky Signed-off-by: Wenwen Wang Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/block/xen-blkback/xenbus.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index 5dfe6e8af1408..ad736d7de8383 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -967,6 +967,7 @@ static int read_per_ring_refs(struct xen_blkif_ring *ring, const char *dir) } blkif->nr_ring_pages = nr_grefs; + err = -ENOMEM; for (i = 0; i < nr_grefs * XEN_BLKIF_REQS_PER_PAGE; i++) { req = kzalloc(sizeof(*req), GFP_KERNEL); if (!req) @@ -989,7 +990,7 @@ static int read_per_ring_refs(struct xen_blkif_ring *ring, const char *dir) err = xen_blkif_map(ring, ring_ref, nr_grefs, evtchn); if (err) { xenbus_dev_fatal(dev, err, "mapping ring-ref port %u", evtchn); - return err; + goto fail; } return 0; @@ -1009,8 +1010,7 @@ static int read_per_ring_refs(struct xen_blkif_ring *ring, const char *dir) } kfree(req); } - return -ENOMEM; - + return err; } static int connect_ring(struct backend_info *be) -- 2.20.1