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=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,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 1C96FC3A5A9 for ; Wed, 4 Sep 2019 18:22:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E2BBD20882 for ; Wed, 4 Sep 2019 18:22:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567621365; bh=UCZZizavb/RPzN5GuYOlI/PuCcWJPuHtHFmlKoqNlWA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=yXCX/adML4M4LYG9S89OsWPyYi+EA2TPIdQ7o9POXaSHcOAGQ2lt2syimIG7nDeXk UvfAhTwprJxZZh7RZbe6cbddjp/Tiyj4M99dvrRkxHxrLTA8y4oQJFO7Hd78zUrQd/ b3m4v9oYlSaGXFI6GyQFDbjLlsAvwtT8Lm+kDXUQ= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388680AbfIDSEK (ORCPT ); Wed, 4 Sep 2019 14:04:10 -0400 Received: from mail.kernel.org ([198.145.29.99]:45040 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389058AbfIDSEH (ORCPT ); Wed, 4 Sep 2019 14:04:07 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 1D12322CF7; Wed, 4 Sep 2019 18:04:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1567620246; bh=UCZZizavb/RPzN5GuYOlI/PuCcWJPuHtHFmlKoqNlWA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=izQjw6YP8ys1cF1Kx1iAkP6uQH5F9Q0f1d1IGii+aGyQQSE9XZT8fc6+mjwe+wAYT EdAL2nIsuS9yrL1CGc8vfQY9ajvj9c7ut74XavPT6xqwAZgqC9/vzbsEx0tSvq9Mgq u0s7oX6euC8wDY/r0BuSug/43JOUtM3PYwzGViAo= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Boris Ostrovsky , Wenwen Wang , Jens Axboe , Sasha Levin Subject: [PATCH 4.14 06/57] xen/blkback: fix memory leaks Date: Wed, 4 Sep 2019 19:53:34 +0200 Message-Id: <20190904175302.568239872@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190904175301.777414715@linuxfoundation.org> References: <20190904175301.777414715@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org [ 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 21c1be1eb2260..ed4e807791243 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -973,6 +973,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) @@ -995,7 +996,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; @@ -1015,8 +1016,7 @@ fail: } kfree(req); } - return -ENOMEM; - + return err; } static int connect_ring(struct backend_info *be) -- 2.20.1