]>
Commit | Line | Data |
---|---|---|
04fd09d4 SL |
1 | From 16af174f32b4075355d2635175a36ab11dc7b2f7 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 29b7a6755fcd..56368c8bd791 100644 | |
37 | --- a/drivers/iommu/io-pgtable-arm-v7s.c | |
38 | +++ b/drivers/iommu/io-pgtable-arm-v7s.c | |
39 | @@ -217,7 +217,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 |