]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.19/iommu-io-pgtable-arm-v7s-only-kmemleak_ignore-l2-tab.patch
9a87fcb2f8507e02891626b7e6d8880816d06731
[thirdparty/kernel/stable-queue.git] / queue-4.19 / iommu-io-pgtable-arm-v7s-only-kmemleak_ignore-l2-tab.patch
1 From f5e9dfadd76f391e8561a69df50acc261da5a51a Mon Sep 17 00:00:00 2001
2 From: Nicolas Boichat <drinkcat@chromium.org>
3 Date: Mon, 28 Jan 2019 17:43:01 +0800
4 Subject: iommu/io-pgtable-arm-v7s: Only kmemleak_ignore L2 tables
5
6 [ Upstream commit 032ebd8548c9d05e8d2bdc7a7ec2fe29454b0ad0 ]
7
8 L1 tables are allocated with __get_dma_pages, and therefore already
9 ignored by kmemleak.
10
11 Without this, the kernel would print this error message on boot,
12 when the first L1 table is allocated:
13
14 [ 2.810533] kmemleak: Trying to color unknown object at 0xffffffd652388000 as Black
15 [ 2.818190] CPU: 5 PID: 39 Comm: kworker/5:0 Tainted: G S 4.19.16 #8
16 [ 2.831227] Workqueue: events deferred_probe_work_func
17 [ 2.836353] Call trace:
18 ...
19 [ 2.852532] paint_ptr+0xa0/0xa8
20 [ 2.855750] kmemleak_ignore+0x38/0x6c
21 [ 2.859490] __arm_v7s_alloc_table+0x168/0x1f4
22 [ 2.863922] arm_v7s_alloc_pgtable+0x114/0x17c
23 [ 2.868354] alloc_io_pgtable_ops+0x3c/0x78
24 ...
25
26 Fixes: e5fc9753b1a8314 ("iommu/io-pgtable: Add ARMv7 short descriptor support")
27 Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
28 Acked-by: Will Deacon <will.deacon@arm.com>
29 Signed-off-by: Joerg Roedel <jroedel@suse.de>
30 Signed-off-by: Sasha Levin <sashal@kernel.org>
31 ---
32 drivers/iommu/io-pgtable-arm-v7s.c | 3 ++-
33 1 file changed, 2 insertions(+), 1 deletion(-)
34
35 diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c
36 index fde728ea2900..48d4709a8e93 100644
37 --- a/drivers/iommu/io-pgtable-arm-v7s.c
38 +++ b/drivers/iommu/io-pgtable-arm-v7s.c
39 @@ -228,7 +228,8 @@ static void *__arm_v7s_alloc_table(int lvl, gfp_t gfp,
40 if (dma != phys)
41 goto out_unmap;
42 }
43 - kmemleak_ignore(table);
44 + if (lvl == 2)
45 + kmemleak_ignore(table);
46 return table;
47
48 out_unmap:
49 --
50 2.19.1
51