trans_pgd_* should be independent from mm context because the tables that
are created by this code are used when there are no mm context around, as
it is between kernels. Simply replace mm_init's with NULL.
Signed-off-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Acked-by: James Morse <james.morse@arm.com>
Link: https://lore.kernel.org/r/20210125191923.1060122-7-pasha.tatashin@soleen.com
Signed-off-by: Will Deacon <will@kernel.org>
dst_ptep = trans_alloc(info);
if (!dst_ptep)
return -ENOMEM;
dst_ptep = trans_alloc(info);
if (!dst_ptep)
return -ENOMEM;
- pmd_populate_kernel(&init_mm, dst_pmdp, dst_ptep);
+ pmd_populate_kernel(NULL, dst_pmdp, dst_ptep);
dst_ptep = pte_offset_kernel(dst_pmdp, start);
src_ptep = pte_offset_kernel(src_pmdp, start);
dst_ptep = pte_offset_kernel(dst_pmdp, start);
src_ptep = pte_offset_kernel(src_pmdp, start);
dst_pmdp = trans_alloc(info);
if (!dst_pmdp)
return -ENOMEM;
dst_pmdp = trans_alloc(info);
if (!dst_pmdp)
return -ENOMEM;
- pud_populate(&init_mm, dst_pudp, dst_pmdp);
+ pud_populate(NULL, dst_pudp, dst_pmdp);
}
dst_pmdp = pmd_offset(dst_pudp, start);
}
dst_pmdp = pmd_offset(dst_pudp, start);
dst_pudp = trans_alloc(info);
if (!dst_pudp)
return -ENOMEM;
dst_pudp = trans_alloc(info);
if (!dst_pudp)
return -ENOMEM;
- p4d_populate(&init_mm, dst_p4dp, dst_pudp);
+ p4d_populate(NULL, dst_p4dp, dst_pudp);
}
dst_pudp = pud_offset(dst_p4dp, start);
}
dst_pudp = pud_offset(dst_p4dp, start);
p4dp = trans_alloc(info);
if (!pgdp)
return -ENOMEM;
p4dp = trans_alloc(info);
if (!pgdp)
return -ENOMEM;
- pgd_populate(&init_mm, pgdp, p4dp);
+ pgd_populate(NULL, pgdp, p4dp);
}
p4dp = p4d_offset(pgdp, dst_addr);
}
p4dp = p4d_offset(pgdp, dst_addr);
pudp = trans_alloc(info);
if (!pudp)
return -ENOMEM;
pudp = trans_alloc(info);
if (!pudp)
return -ENOMEM;
- p4d_populate(&init_mm, p4dp, pudp);
+ p4d_populate(NULL, p4dp, pudp);
}
pudp = pud_offset(p4dp, dst_addr);
}
pudp = pud_offset(p4dp, dst_addr);
pmdp = trans_alloc(info);
if (!pmdp)
return -ENOMEM;
pmdp = trans_alloc(info);
if (!pmdp)
return -ENOMEM;
- pud_populate(&init_mm, pudp, pmdp);
+ pud_populate(NULL, pudp, pmdp);
}
pmdp = pmd_offset(pudp, dst_addr);
}
pmdp = pmd_offset(pudp, dst_addr);
ptep = trans_alloc(info);
if (!ptep)
return -ENOMEM;
ptep = trans_alloc(info);
if (!ptep)
return -ENOMEM;
- pmd_populate_kernel(&init_mm, pmdp, ptep);
+ pmd_populate_kernel(NULL, pmdp, ptep);
}
ptep = pte_offset_kernel(pmdp, dst_addr);
}
ptep = pte_offset_kernel(pmdp, dst_addr);