diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-07-21 17:53:33 +0300 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2025-07-21 17:53:33 +0300 | 
| commit | bcbef1e4a626e093d4ead56593fb169eed5033c7 (patch) | |
| tree | d17ab18b665433070a93c0cbd0d0291b0f262353 /mm/vmalloc.c | |
| parent | 103f5d8c35b3d22b700f1f6d585e499b2df62df6 (diff) | |
| parent | 89be9a83ccf1f88522317ce02f854f30d6115c41 (diff) | |
| download | linux-bcbef1e4a626e093d4ead56593fb169eed5033c7.tar.xz | |
Merge tag 'v6.16-rc7' into tty-next
We need the tty/serial fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm/vmalloc.c')
| -rw-r--r-- | mm/vmalloc.c | 22 | 
1 files changed, 15 insertions, 7 deletions
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index ab986dd09b6a..6dbcdceecae1 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -514,6 +514,7 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr,  		unsigned long end, pgprot_t prot, struct page **pages, int *nr,  		pgtbl_mod_mask *mask)  { +	int err = 0;  	pte_t *pte;  	/* @@ -530,12 +531,18 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr,  	do {  		struct page *page = pages[*nr]; -		if (WARN_ON(!pte_none(ptep_get(pte)))) -			return -EBUSY; -		if (WARN_ON(!page)) -			return -ENOMEM; -		if (WARN_ON(!pfn_valid(page_to_pfn(page)))) -			return -EINVAL; +		if (WARN_ON(!pte_none(ptep_get(pte)))) { +			err = -EBUSY; +			break; +		} +		if (WARN_ON(!page)) { +			err = -ENOMEM; +			break; +		} +		if (WARN_ON(!pfn_valid(page_to_pfn(page)))) { +			err = -EINVAL; +			break; +		}  		set_pte_at(&init_mm, addr, pte, mk_pte(page, prot));  		(*nr)++; @@ -543,7 +550,8 @@ static int vmap_pages_pte_range(pmd_t *pmd, unsigned long addr,  	arch_leave_lazy_mmu_mode();  	*mask |= PGTBL_PTE_MODIFIED; -	return 0; + +	return err;  }  static int vmap_pages_pmd_range(pud_t *pud, unsigned long addr,  | 
