Skip to content

Commit d2c5231

Browse files
committed
Merge tag 'mm-hotfixes-stable-2023-10-01-08-34' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull misc fixes from Andrew Morton: "Fourteen hotfixes, eleven of which are cc:stable. The remainder pertain to issues which were introduced after 6.5" * tag 'mm-hotfixes-stable-2023-10-01-08-34' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: Crash: add lock to serialize crash hotplug handling selftests/mm: fix awk usage in charge_reserved_hugetlb.sh and hugetlb_reparenting_test.sh that may cause error mm: mempolicy: keep VMA walk if both MPOL_MF_STRICT and MPOL_MF_MOVE are specified mm/damon/vaddr-test: fix memory leak in damon_do_test_apply_three_regions() mm, memcg: reconsider kmem.limit_in_bytes deprecation mm: zswap: fix potential memory corruption on duplicate store arm64: hugetlb: fix set_huge_pte_at() to work with all swap entries mm: hugetlb: add huge page size param to set_huge_pte_at() maple_tree: add MAS_UNDERFLOW and MAS_OVERFLOW states maple_tree: add mas_is_active() to detect in-tree walks nilfs2: fix potential use after free in nilfs_gccache_submit_read_data() mm: abstract moving to the next PFN mm: report success more often from filemap_map_folio_range() fs: binfmt_elf_efpic: fix personality for ELF-FDPIC
2 parents 8f63336 + e2a8f20 commit d2c5231

File tree

38 files changed

+455
-169
lines changed

38 files changed

+455
-169
lines changed

Documentation/admin-guide/cgroup-v1/memory.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,13 @@ Brief summary of control files.
9292
memory.oom_control set/show oom controls.
9393
memory.numa_stat show the number of memory usage per numa
9494
node
95+
memory.kmem.limit_in_bytes Deprecated knob to set and read the kernel
96+
memory hard limit. Kernel hard limit is not
97+
supported since 5.16. Writing any value to
98+
do file will not have any effect same as if
99+
nokmem kernel parameter was specified.
100+
Kernel memory is still charged and reported
101+
by memory.kmem.usage_in_bytes.
95102
memory.kmem.usage_in_bytes show current kernel memory allocation
96103
memory.kmem.failcnt show the number of kernel memory usage
97104
hits limits

arch/arm64/include/asm/hugetlb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags);
2828
#define arch_make_huge_pte arch_make_huge_pte
2929
#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
3030
extern void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
31-
pte_t *ptep, pte_t pte);
31+
pte_t *ptep, pte_t pte, unsigned long sz);
3232
#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
3333
extern int huge_ptep_set_access_flags(struct vm_area_struct *vma,
3434
unsigned long addr, pte_t *ptep,

arch/arm64/mm/hugetlbpage.c

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -241,29 +241,19 @@ static void clear_flush(struct mm_struct *mm,
241241
flush_tlb_range(&vma, saddr, addr);
242242
}
243243

244-
static inline struct folio *hugetlb_swap_entry_to_folio(swp_entry_t entry)
245-
{
246-
VM_BUG_ON(!is_migration_entry(entry) && !is_hwpoison_entry(entry));
247-
248-
return page_folio(pfn_to_page(swp_offset_pfn(entry)));
249-
}
250-
251244
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
252-
pte_t *ptep, pte_t pte)
245+
pte_t *ptep, pte_t pte, unsigned long sz)
253246
{
254247
size_t pgsize;
255248
int i;
256249
int ncontig;
257250
unsigned long pfn, dpfn;
258251
pgprot_t hugeprot;
259252

260-
if (!pte_present(pte)) {
261-
struct folio *folio;
262-
263-
folio = hugetlb_swap_entry_to_folio(pte_to_swp_entry(pte));
264-
ncontig = num_contig_ptes(folio_size(folio), &pgsize);
253+
ncontig = num_contig_ptes(sz, &pgsize);
265254

266-
for (i = 0; i < ncontig; i++, ptep++)
255+
if (!pte_present(pte)) {
256+
for (i = 0; i < ncontig; i++, ptep++, addr += pgsize)
267257
set_pte_at(mm, addr, ptep, pte);
268258
return;
269259
}
@@ -273,7 +263,6 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
273263
return;
274264
}
275265

276-
ncontig = find_num_contig(mm, addr, ptep, &pgsize);
277266
pfn = pte_pfn(pte);
278267
dpfn = pgsize >> PAGE_SHIFT;
279268
hugeprot = pte_pgprot(pte);
@@ -571,5 +560,7 @@ pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr
571560
void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
572561
pte_t old_pte, pte_t pte)
573562
{
574-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
563+
unsigned long psize = huge_page_size(hstate_vma(vma));
564+
565+
set_huge_pte_at(vma->vm_mm, addr, ptep, pte, psize);
575566
}

arch/parisc/include/asm/hugetlb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
88
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
9-
pte_t *ptep, pte_t pte);
9+
pte_t *ptep, pte_t pte, unsigned long sz);
1010

1111
#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
1212
pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,

arch/parisc/mm/hugetlbpage.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ static void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
140140
}
141141

142142
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
143-
pte_t *ptep, pte_t entry)
143+
pte_t *ptep, pte_t entry, unsigned long sz)
144144
{
145145
__set_huge_pte_at(mm, addr, ptep, entry);
146146
}

arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ static inline int check_and_get_huge_psize(int shift)
4646
}
4747

4848
#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
49-
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte);
49+
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
50+
pte_t pte, unsigned long sz);
5051

5152
#define __HAVE_ARCH_HUGE_PTE_CLEAR
5253
static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,

arch/powerpc/mm/book3s64/hugetlbpage.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,14 @@ pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
143143
void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
144144
pte_t *ptep, pte_t old_pte, pte_t pte)
145145
{
146+
unsigned long psize;
146147

147148
if (radix_enabled())
148149
return radix__huge_ptep_modify_prot_commit(vma, addr, ptep,
149150
old_pte, pte);
150-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
151+
152+
psize = huge_page_size(hstate_vma(vma));
153+
set_huge_pte_at(vma->vm_mm, addr, ptep, pte, psize);
151154
}
152155

153156
void __init hugetlbpage_init_defaultsize(void)

arch/powerpc/mm/book3s64/radix_hugetlbpage.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
4747
pte_t old_pte, pte_t pte)
4848
{
4949
struct mm_struct *mm = vma->vm_mm;
50+
unsigned long psize = huge_page_size(hstate_vma(vma));
5051

5152
/*
5253
* POWER9 NMMU must flush the TLB after clearing the PTE before
@@ -58,5 +59,5 @@ void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
5859
atomic_read(&mm->context.copros) > 0)
5960
radix__flush_hugetlb_page(vma, addr);
6061

61-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
62+
set_huge_pte_at(vma->vm_mm, addr, ptep, pte, psize);
6263
}

arch/powerpc/mm/nohash/8xx.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ static int __ref __early_map_kernel_hugepage(unsigned long va, phys_addr_t pa,
9191
if (new && WARN_ON(pte_present(*ptep) && pgprot_val(prot)))
9292
return -EINVAL;
9393

94-
set_huge_pte_at(&init_mm, va, ptep, pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)));
94+
set_huge_pte_at(&init_mm, va, ptep,
95+
pte_mkhuge(pfn_pte(pa >> PAGE_SHIFT, prot)), psize);
9596

9697
return 0;
9798
}

arch/powerpc/mm/pgtable.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,8 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
288288
}
289289

290290
#if defined(CONFIG_PPC_8xx)
291-
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep, pte_t pte)
291+
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
292+
pte_t pte, unsigned long sz)
292293
{
293294
pmd_t *pmd = pmd_off(mm, addr);
294295
pte_basic_t val;

arch/riscv/include/asm/hugetlb.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
1818

1919
#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
2020
void set_huge_pte_at(struct mm_struct *mm,
21-
unsigned long addr, pte_t *ptep, pte_t pte);
21+
unsigned long addr, pte_t *ptep, pte_t pte,
22+
unsigned long sz);
2223

2324
#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
2425
pte_t huge_ptep_get_and_clear(struct mm_struct *mm,

arch/riscv/mm/hugetlbpage.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags)
180180
void set_huge_pte_at(struct mm_struct *mm,
181181
unsigned long addr,
182182
pte_t *ptep,
183-
pte_t pte)
183+
pte_t pte,
184+
unsigned long sz)
184185
{
185186
int i, pte_num;
186187

arch/s390/include/asm/hugetlb.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
#define hugepages_supported() (MACHINE_HAS_EDAT1)
1717

1818
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
19+
pte_t *ptep, pte_t pte, unsigned long sz);
20+
void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
1921
pte_t *ptep, pte_t pte);
2022
pte_t huge_ptep_get(pte_t *ptep);
2123
pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
@@ -65,7 +67,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
6567
int changed = !pte_same(huge_ptep_get(ptep), pte);
6668
if (changed) {
6769
huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
68-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
70+
__set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
6971
}
7072
return changed;
7173
}
@@ -74,7 +76,7 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
7476
unsigned long addr, pte_t *ptep)
7577
{
7678
pte_t pte = huge_ptep_get_and_clear(mm, addr, ptep);
77-
set_huge_pte_at(mm, addr, ptep, pte_wrprotect(pte));
79+
__set_huge_pte_at(mm, addr, ptep, pte_wrprotect(pte));
7880
}
7981

8082
static inline pte_t mk_huge_pte(struct page *page, pgprot_t pgprot)

arch/s390/mm/hugetlbpage.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ static void clear_huge_pte_skeys(struct mm_struct *mm, unsigned long rste)
142142
__storage_key_init_range(paddr, paddr + size - 1);
143143
}
144144

145-
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
145+
void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
146146
pte_t *ptep, pte_t pte)
147147
{
148148
unsigned long rste;
@@ -163,6 +163,12 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
163163
set_pte(ptep, __pte(rste));
164164
}
165165

166+
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
167+
pte_t *ptep, pte_t pte, unsigned long sz)
168+
{
169+
__set_huge_pte_at(mm, addr, ptep, pte);
170+
}
171+
166172
pte_t huge_ptep_get(pte_t *ptep)
167173
{
168174
return __rste_to_pte(pte_val(*ptep));

arch/sparc/include/asm/hugetlb.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ extern struct pud_huge_patch_entry __pud_huge_patch, __pud_huge_patch_end;
1414

1515
#define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
1616
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
17+
pte_t *ptep, pte_t pte, unsigned long sz);
18+
void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
1719
pte_t *ptep, pte_t pte);
1820

1921
#define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
@@ -32,7 +34,7 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
3234
unsigned long addr, pte_t *ptep)
3335
{
3436
pte_t old_pte = *ptep;
35-
set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte));
37+
__set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte));
3638
}
3739

3840
#define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
@@ -42,7 +44,7 @@ static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
4244
{
4345
int changed = !pte_same(*ptep, pte);
4446
if (changed) {
45-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
47+
__set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
4648
flush_tlb_page(vma, addr);
4749
}
4850
return changed;

arch/sparc/mm/hugetlbpage.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm,
328328
return pte_offset_huge(pmd, addr);
329329
}
330330

331-
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
331+
void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
332332
pte_t *ptep, pte_t entry)
333333
{
334334
unsigned int nptes, orig_shift, shift;
@@ -364,6 +364,12 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
364364
orig_shift);
365365
}
366366

367+
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
368+
pte_t *ptep, pte_t entry, unsigned long sz)
369+
{
370+
__set_huge_pte_at(mm, addr, ptep, entry);
371+
}
372+
367373
pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
368374
pte_t *ptep)
369375
{

arch/x86/include/asm/pgtable.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,14 @@ static inline int pte_same(pte_t a, pte_t b)
955955
return a.pte == b.pte;
956956
}
957957

958+
static inline pte_t pte_next_pfn(pte_t pte)
959+
{
960+
if (__pte_needs_invert(pte_val(pte)))
961+
return __pte(pte_val(pte) - (1UL << PFN_PTE_SHIFT));
962+
return __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT));
963+
}
964+
#define pte_next_pfn pte_next_pfn
965+
958966
static inline int pte_present(pte_t a)
959967
{
960968
return pte_flags(a) & (_PAGE_PRESENT | _PAGE_PROTNONE);

fs/binfmt_elf_fdpic.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -345,10 +345,9 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm)
345345
/* there's now no turning back... the old userspace image is dead,
346346
* defunct, deceased, etc.
347347
*/
348+
SET_PERSONALITY(exec_params.hdr);
348349
if (elf_check_fdpic(&exec_params.hdr))
349-
set_personality(PER_LINUX_FDPIC);
350-
else
351-
set_personality(PER_LINUX);
350+
current->personality |= PER_LINUX_FDPIC;
352351
if (elf_read_implies_exec(&exec_params.hdr, executable_stack))
353352
current->personality |= READ_IMPLIES_EXEC;
354353

fs/nilfs2/gcinode.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,8 @@ int nilfs_gccache_submit_read_data(struct inode *inode, sector_t blkoff,
7373
struct the_nilfs *nilfs = inode->i_sb->s_fs_info;
7474

7575
err = nilfs_dat_translate(nilfs->ns_dat, vbn, &pbn);
76-
if (unlikely(err)) { /* -EIO, -ENOMEM, -ENOENT */
77-
brelse(bh);
76+
if (unlikely(err)) /* -EIO, -ENOMEM, -ENOENT */
7877
goto failed;
79-
}
8078
}
8179

8280
lock_buffer(bh);
@@ -102,6 +100,8 @@ int nilfs_gccache_submit_read_data(struct inode *inode, sector_t blkoff,
102100
failed:
103101
unlock_page(bh->b_page);
104102
put_page(bh->b_page);
103+
if (unlikely(err))
104+
brelse(bh);
105105
return err;
106106
}
107107

include/asm-generic/hugetlb.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
7676

7777
#ifndef __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
7878
static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
79-
pte_t *ptep, pte_t pte)
79+
pte_t *ptep, pte_t pte, unsigned long sz)
8080
{
8181
set_pte_at(mm, addr, ptep, pte);
8282
}

include/linux/hugetlb.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,9 @@ static inline void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
984984
unsigned long addr, pte_t *ptep,
985985
pte_t old_pte, pte_t pte)
986986
{
987-
set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
987+
unsigned long psize = huge_page_size(hstate_vma(vma));
988+
989+
set_huge_pte_at(vma->vm_mm, addr, ptep, pte, psize);
988990
}
989991
#endif
990992

@@ -1173,7 +1175,7 @@ static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
11731175
}
11741176

11751177
static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
1176-
pte_t *ptep, pte_t pte)
1178+
pte_t *ptep, pte_t pte, unsigned long sz)
11771179
{
11781180
}
11791181

include/linux/maple_tree.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,8 @@ struct ma_wr_state {
428428
#define MAS_ROOT ((struct maple_enode *)5UL)
429429
#define MAS_NONE ((struct maple_enode *)9UL)
430430
#define MAS_PAUSE ((struct maple_enode *)17UL)
431+
#define MAS_OVERFLOW ((struct maple_enode *)33UL)
432+
#define MAS_UNDERFLOW ((struct maple_enode *)65UL)
431433
#define MA_ERROR(err) \
432434
((struct maple_enode *)(((unsigned long)err << 2) | 2UL))
433435

@@ -511,6 +513,15 @@ static inline bool mas_is_paused(const struct ma_state *mas)
511513
return mas->node == MAS_PAUSE;
512514
}
513515

516+
/* Check if the mas is pointing to a node or not */
517+
static inline bool mas_is_active(struct ma_state *mas)
518+
{
519+
if ((unsigned long)mas->node >= MAPLE_RESERVED_RANGE)
520+
return true;
521+
522+
return false;
523+
}
524+
514525
/**
515526
* mas_reset() - Reset a Maple Tree operation state.
516527
* @mas: Maple Tree operation state.

include/linux/pgtable.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,14 @@ static inline int pmd_young(pmd_t pmd)
206206
#endif
207207

208208
#ifndef set_ptes
209+
210+
#ifndef pte_next_pfn
211+
static inline pte_t pte_next_pfn(pte_t pte)
212+
{
213+
return __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT));
214+
}
215+
#endif
216+
209217
/**
210218
* set_ptes - Map consecutive pages to a contiguous range of addresses.
211219
* @mm: Address space to map the pages into.
@@ -231,7 +239,7 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
231239
if (--nr == 0)
232240
break;
233241
ptep++;
234-
pte = __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT));
242+
pte = pte_next_pfn(pte);
235243
}
236244
arch_leave_lazy_mmu_mode();
237245
}

0 commit comments

Comments
 (0)