1 From 0b3fff54bc01e8e6064d222a33e6fa7adabd94cd Mon Sep 17 00:00:00 2001
2 From: Joerg Roedel <jroedel@suse.de>
3 Date: Thu, 18 Jun 2015 10:48:34 +0200
4 Subject: iommu/amd: Handle large pages correctly in free_pagetable
6 From: Joerg Roedel <jroedel@suse.de>
8 commit 0b3fff54bc01e8e6064d222a33e6fa7adabd94cd upstream.
10 Make sure that we are skipping over large PTEs while walking
13 Fixes: 5c34c403b723 ("iommu/amd: Fix memory leak in free_pagetable")
14 Signed-off-by: Joerg Roedel <jroedel@suse.de>
15 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
18 drivers/iommu/amd_iommu.c | 6 ++++++
19 1 file changed, 6 insertions(+)
21 --- a/drivers/iommu/amd_iommu.c
22 +++ b/drivers/iommu/amd_iommu.c
23 @@ -1870,9 +1870,15 @@ static void free_pt_##LVL (unsigned long
26 for (i = 0; i < 512; ++i) { \
27 + /* PTE present? */ \
28 if (!IOMMU_PTE_PRESENT(pt[i])) \
32 + if (PM_PTE_LEVEL(pt[i]) == 0 || \
33 + PM_PTE_LEVEL(pt[i]) == 7) \
36 p = (unsigned long)IOMMU_PTE_PAGE(pt[i]); \