mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-10 07:00:48 +00:00
iommu/tegra: smmu: Fix unsleepable memory allocation
allo_pdir() is called in smmu_iommu_domain_init() with spin_lock held. memory allocations in it have to be atomic/unsleepable. Signed-off-by: Hiroshi DOYU <hdoyu@nvidia.com> Reported-by: Chris Wright <chrisw@sous-sol.org> Acked-by: Chris Wright <chrisw@sous-sol.org> Cc: stable@vger.kernel.org Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
ac1534a55d
commit
8f53dc724a
@ -550,13 +550,13 @@ static int alloc_pdir(struct smmu_as *as)
|
||||
return 0;
|
||||
|
||||
as->pte_count = devm_kzalloc(smmu->dev,
|
||||
sizeof(as->pte_count[0]) * SMMU_PDIR_COUNT, GFP_KERNEL);
|
||||
sizeof(as->pte_count[0]) * SMMU_PDIR_COUNT, GFP_ATOMIC);
|
||||
if (!as->pte_count) {
|
||||
dev_err(smmu->dev,
|
||||
"failed to allocate smmu_device PTE cunters\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
as->pdir_page = alloc_page(GFP_KERNEL | __GFP_DMA);
|
||||
as->pdir_page = alloc_page(GFP_ATOMIC | __GFP_DMA);
|
||||
if (!as->pdir_page) {
|
||||
dev_err(smmu->dev,
|
||||
"failed to allocate smmu_device page directory\n");
|
||||
|
Loading…
x
Reference in New Issue
Block a user