Re: FAILED: patch "[PATCH] iommu/arm-smmu-v3: Don't free page table ops twice" failed to apply to 4.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Sun, Jan 07, 2018 at 08:35:02AM +0000, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> The patch below does not apply to the 4.4-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.

Please consider applying the updated backport for 4.4-stable, below.

Thanks,
Jean

--- 8< ---
>From 36a792dfdaff7fafeb7b870cc0f86a339df9ea25 Mon Sep 17 00:00:00 2001
From: Jean-Philippe Brucker <jean-philippe.brucker@xxxxxxx>
Date: Thu, 14 Dec 2017 11:03:01 +0000
Subject: [PATCH] iommu/arm-smmu-v3: Don't free page table ops twice

commit 57d72e159b60456c8bb281736c02ddd3164037aa upstream.

Kasan reports a double free when finalise_stage_fn fails: the io_pgtable
ops are freed by arm_smmu_domain_finalise and then again by
arm_smmu_domain_free. Prevent this by leaving pgtbl_ops empty on failure.

Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@xxxxxxx>
---
 drivers/iommu/arm-smmu-v3.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
index 64f1eb8fdcbc..347aaaa5a7ea 100644
--- a/drivers/iommu/arm-smmu-v3.c
+++ b/drivers/iommu/arm-smmu-v3.c
@@ -1541,13 +1541,15 @@ static int arm_smmu_domain_finalise(struct iommu_domain *domain)
                return -ENOMEM;

        arm_smmu_ops.pgsize_bitmap = pgtbl_cfg.pgsize_bitmap;
-       smmu_domain->pgtbl_ops = pgtbl_ops;

        ret = finalise_stage_fn(smmu_domain, &pgtbl_cfg);
-       if (IS_ERR_VALUE(ret))
+       if (IS_ERR_VALUE(ret)) {
                free_io_pgtable_ops(pgtbl_ops);
+               return ret;
+       }

-       return ret;
+       smmu_domain->pgtbl_ops = pgtbl_ops;
+       return 0;
 }

 static struct arm_smmu_group *arm_smmu_group_get(struct device *dev)
--
2.15.1




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]