Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1772189ybl; Sat, 11 Jan 2020 02:30:52 -0800 (PST) X-Google-Smtp-Source: APXvYqye+UW6bVA7tRq7UhLSjiryA65Oqe17Xz56QlmvBjrYwgL6EYZoCMkQ9CvDQOOKlGV9q7fW X-Received: by 2002:a05:6830:596:: with SMTP id c22mr6693851oth.188.1578738652860; Sat, 11 Jan 2020 02:30:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578738652; cv=none; d=google.com; s=arc-20160816; b=x6krMjgNQFVfL+R2Rf6V0XKnFC1LTl/JRQ7Fm8pCOsyYvOS62WLyUHMLPPHpGQ3/bQ UJAVHP9Krit8GECLAcN2OLwJ4JbPUC/oLf8D5Ej3X8VsKReqfYkHExG0b3iTcN9oePWb wFEXZRuYTF1GG5Fos9J5IxRVtR+YLf8vntnddYaCPR+p7CtxkId22VXj6JUzfznqyhiq B0OdXCANDFzmlOOzvl6GeM+Yiiqx3avOPVrvRRBXyFYok95jk4kTs3RNLIKcVPbb9P4k cwQKIfifTWvZC1L0lVGHpX4x9UqAhiIguov9zNYYZAxGf/b9B3hTHxawu6NHpac9pTiR 5ffA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=EJ3IBbWzoc/TidzFwCF5QY2DYUFFVZM6N0yXqz92nPs=; b=a3GxYF4N6vLCDtSmhS8FgX4JYaymfqkPdifmWbBO9KFDglomJRMACDqCS+vkIQb6Cz WyALxl0TNXt/zfJmlqIMG0vLOZO1kaBvISTTUwvFjNkyQvIOu0UdBOpb9BXlO1Yr4pBX WzW3kl+mOM134AfslI+9/hlumK97wt+o71o3OlkK0Axp9kPTMgIiQDvFSM1zf+UbIlmi Vu3OGhdA6+YnBQ7Z8hGHLSaRrBQD57z+Up0QzsgVIdcNDlEYOzMZojwOtD4tyx9RTmzm PTdSfTy6JpGVZ9UtOjv+qgkcJ+sNr4SMDtnU99vYWJoSECCHR6l7qo7HeiOyG3XwTcl6 x7yw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hxP+2boa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i20si2887720oie.119.2020.01.11.02.30.41; Sat, 11 Jan 2020 02:30:52 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=hxP+2boa; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731323AbgAKK2y (ORCPT + 99 others); Sat, 11 Jan 2020 05:28:54 -0500 Received: from mail.kernel.org ([198.145.29.99]:37092 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731321AbgAKK2v (ORCPT ); Sat, 11 Jan 2020 05:28:51 -0500 Received: from localhost (unknown [62.119.166.9]) (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 1389620842; Sat, 11 Jan 2020 10:28:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1578738530; bh=WMjkH9wse0rnpgJxqY+z7zV+kEI78+sKlYa1WVzgLAg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hxP+2boaP6yPXgcqSF9e9NHFcPQINUZgJ7y2w5hTZM8HLCO4N0duDBs/R0zEdvMYW oDvgR8bc9ylWSSLN+9X8r6IDoz7ce7aRnwwR8RcF3plth1+g2R9AcyqlLU2jpID8+L z0gF+TdGWIX040ILNYPLQZZ5BjHAPinp1GRjUxbg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Xiaotao Yin , Robin Murphy , Joerg Roedel , Sasha Levin Subject: [PATCH 5.4 095/165] iommu/iova: Init the struct iova to fix the possible memleak Date: Sat, 11 Jan 2020 10:50:14 +0100 Message-Id: <20200111094929.627407672@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200111094921.347491861@linuxfoundation.org> References: <20200111094921.347491861@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Xiaotao Yin [ Upstream commit 472d26df5e8075eda677b6be730e0fbf434ff2a8 ] During ethernet(Marvell octeontx2) set ring buffer test: ethtool -G eth1 rx tx following kmemleak will happen sometimes: unreferenced object 0xffff000b85421340 (size 64): comm "ethtool", pid 867, jiffies 4295323539 (age 550.500s) hex dump (first 64 bytes): 80 13 42 85 0b 00 ff ff ff ff ff ff ff ff ff ff ..B............. 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ff ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ backtrace: [<000000001b204ddf>] kmem_cache_alloc+0x1b0/0x350 [<00000000d9ef2e50>] alloc_iova+0x3c/0x168 [<00000000ea30f99d>] alloc_iova_fast+0x7c/0x2d8 [<00000000b8bb2f1f>] iommu_dma_alloc_iova.isra.0+0x12c/0x138 [<000000002f1a43b5>] __iommu_dma_map+0x8c/0xf8 [<00000000ecde7899>] iommu_dma_map_page+0x98/0xf8 [<0000000082004e59>] otx2_alloc_rbuf+0xf4/0x158 [<000000002b107f6b>] otx2_rq_aura_pool_init+0x110/0x270 [<00000000c3d563c7>] otx2_open+0x15c/0x734 [<00000000a2f5f3a8>] otx2_dev_open+0x3c/0x68 [<00000000456a98b5>] otx2_set_ringparam+0x1ac/0x1d4 [<00000000f2fbb819>] dev_ethtool+0xb84/0x2028 [<0000000069b67c5a>] dev_ioctl+0x248/0x3a0 [<00000000af38663a>] sock_ioctl+0x280/0x638 [<000000002582384c>] do_vfs_ioctl+0x8b0/0xa80 [<000000004e1a2c02>] ksys_ioctl+0x84/0xb8 The reason: When alloc_iova_mem() without initial with Zero, sometimes fpn_lo will equal to IOVA_ANCHOR by chance, so when return with -ENOMEM(iova32_full) from __alloc_and_insert_iova_range(), the new_iova will not be freed in free_iova_mem(). Fixes: bb68b2fbfbd6 ("iommu/iova: Add rbtree anchor node") Signed-off-by: Xiaotao Yin Reviewed-by: Robin Murphy Signed-off-by: Joerg Roedel Signed-off-by: Sasha Levin --- drivers/iommu/iova.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c index 41c605b0058f..c7a914b9bbbc 100644 --- a/drivers/iommu/iova.c +++ b/drivers/iommu/iova.c @@ -233,7 +233,7 @@ static DEFINE_MUTEX(iova_cache_mutex); struct iova *alloc_iova_mem(void) { - return kmem_cache_alloc(iova_cache, GFP_ATOMIC); + return kmem_cache_zalloc(iova_cache, GFP_ATOMIC); } EXPORT_SYMBOL(alloc_iova_mem); -- 2.20.1