Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

arm64: trans_pgd: pass NULL instead of init_mm to *_populate functions

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>

authored by

Pavel Tatashin and committed by
Will Deacon
5de59884 89d1410f

+7 -7
+7 -7
arch/arm64/mm/trans_pgd.c
··· 67 67 dst_ptep = trans_alloc(info); 68 68 if (!dst_ptep) 69 69 return -ENOMEM; 70 - pmd_populate_kernel(&init_mm, dst_pmdp, dst_ptep); 70 + pmd_populate_kernel(NULL, dst_pmdp, dst_ptep); 71 71 dst_ptep = pte_offset_kernel(dst_pmdp, start); 72 72 73 73 src_ptep = pte_offset_kernel(src_pmdp, start); ··· 90 90 dst_pmdp = trans_alloc(info); 91 91 if (!dst_pmdp) 92 92 return -ENOMEM; 93 - pud_populate(&init_mm, dst_pudp, dst_pmdp); 93 + pud_populate(NULL, dst_pudp, dst_pmdp); 94 94 } 95 95 dst_pmdp = pmd_offset(dst_pudp, start); 96 96 ··· 126 126 dst_pudp = trans_alloc(info); 127 127 if (!dst_pudp) 128 128 return -ENOMEM; 129 - p4d_populate(&init_mm, dst_p4dp, dst_pudp); 129 + p4d_populate(NULL, dst_p4dp, dst_pudp); 130 130 } 131 131 dst_pudp = pud_offset(dst_p4dp, start); 132 132 ··· 241 241 p4dp = trans_alloc(info); 242 242 if (!pgdp) 243 243 return -ENOMEM; 244 - pgd_populate(&init_mm, pgdp, p4dp); 244 + pgd_populate(NULL, pgdp, p4dp); 245 245 } 246 246 247 247 p4dp = p4d_offset(pgdp, dst_addr); ··· 249 249 pudp = trans_alloc(info); 250 250 if (!pudp) 251 251 return -ENOMEM; 252 - p4d_populate(&init_mm, p4dp, pudp); 252 + p4d_populate(NULL, p4dp, pudp); 253 253 } 254 254 255 255 pudp = pud_offset(p4dp, dst_addr); ··· 257 257 pmdp = trans_alloc(info); 258 258 if (!pmdp) 259 259 return -ENOMEM; 260 - pud_populate(&init_mm, pudp, pmdp); 260 + pud_populate(NULL, pudp, pmdp); 261 261 } 262 262 263 263 pmdp = pmd_offset(pudp, dst_addr); ··· 265 265 ptep = trans_alloc(info); 266 266 if (!ptep) 267 267 return -ENOMEM; 268 - pmd_populate_kernel(&init_mm, pmdp, ptep); 268 + pmd_populate_kernel(NULL, pmdp, ptep); 269 269 } 270 270 271 271 ptep = pte_offset_kernel(pmdp, dst_addr);