Skip to contentSkip to conversation

FAILED: patch "[PATCH] vmalloc: fix accounting with i915" failed to apply to 6.1-stable tree

PATCH In review [email protected] 3 participants 5 messages Dec 23, 2024 – Dec 26, 2024

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer
#0 lore raw

The patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x a2e740e216f5bf49ccb83b6d490c72a340558a43
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024122359-compactly-cranium-ec0b@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..

Possible dependencies:

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From a2e740e216f5bf49ccb83b6d490c72a340558a43 Mon Sep 17 00:00:00 2001
From: "Matthew Wilcox (Oracle)" <[email protected]>
Date: Wed, 11 Dec 2024 20:25:37 +0000
Subject: [PATCH] vmalloc: fix accounting with i915

If the caller of vmap() specifies VM_MAP_PUT_PAGES (currently only the i915 driver), we will decrement nr_vmalloc_pages and MEMCG_VMALLOC in vfree(). These counters are incremented by vmalloc() but not by vmap() so this will cause an underflow. Check the VM_MAP_PUT_PAGES flag before decrementing either counter.

mm/vmalloc.c +4 -2
index f009b21705c1..5c88d0e90c20 100644
@@ -3374,7 +3374,8 @@ void vfree(const void *addr)
 		struct page *page = vm->pages[i];
 
 		BUG_ON(!page);
-		mod_memcg_page_state(page, MEMCG_VMALLOC, -1);
+		if (!(vm->flags & VM_MAP_PUT_PAGES))
+			mod_memcg_page_state(page, MEMCG_VMALLOC, -1);
 		/*
 		 * High-order allocs for huge vmallocs are split, so
 		 * can be freed as an array of order-0 allocations
@@ -3382,7 +3383,8 @@ void vfree(const void *addr)
 		__free_page(page);
 		cond_resched();
 	}
-	atomic_long_sub(vm->nr_pages, &nr_vmalloc_pages);
+	if (!(vm->flags & VM_MAP_PUT_PAGES))
+		atomic_long_sub(vm->nr_pages, &nr_vmalloc_pages);
 	kvfree(vm->pages);
 	kfree(vm);
 }
#1 lore raw

PATCH 1/1 vmalloc: fix accounting with i915

If the caller of vmap() specifies VM_MAP_PUT_PAGES (currently only the i915 driver), we will decrement nr_vmalloc_pages and MEMCG_VMALLOC in vfree(). These counters are incremented by vmalloc() but not by vmap() so this will cause an underflow. Check the VM_MAP_PUT_PAGES flag before decrementing either counter.

Fixes b944afc9d64d ("mm: add a VM_MAP_PUT_PAGES flag for vmap")
Cc Christoph Hellwig <[email protected]>
Cc Muchun Song <[email protected]>
Cc Roman Gushchin <[email protected]>
Cc "Uladzislau Rezki (Sony)" <[email protected]>
(cherry picked from commit a2e740e216f5bf49ccb83b6d490c72a340558a43)
---
 mm/vmalloc.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
mm/vmalloc.c +4 -2
index a0b650f50faa..7c6694514606 100644
@@ -2709,7 +2709,8 @@ static void __vunmap(const void *addr, int deallocate_pages)
 			struct page *page = area->pages[i];
 
 			BUG_ON(!page);
-			mod_memcg_page_state(page, MEMCG_VMALLOC, -1);
+			if (!(area->flags & VM_MAP_PUT_PAGES))
+				mod_memcg_page_state(page, MEMCG_VMALLOC, -1);
 			/*
 			 * High-order allocs for huge vmallocs are split, so
 			 * can be freed as an array of order-0 allocations
@@ -2717,7 +2718,8 @@ static void __vunmap(const void *addr, int deallocate_pages)
 			__free_pages(page, 0);
 			cond_resched();
 		}
-		atomic_long_sub(area->nr_pages, &nr_vmalloc_pages);
+		if (!(area->flags & VM_MAP_PUT_PAGES))
+			atomic_long_sub(area->nr_pages, &nr_vmalloc_pages);
 
 		kvfree(area->pages);
 	}
Signature · 1 line
2.45.2
maintainer
#2 lore raw

Re: [PATCH 6.1.y] vmalloc: fix accounting with i915

[ Sasha's backport helper bot ]

Hi,

Found matching upstream commit: a2e740e216f5bf49ccb83b6d490c72a340558a43

WARNING: Author mismatch between patch and found commit:
Backport author: "Matthew Wilcox (Oracle)" <[email protected]> Commit author: Matthew Wilcox (Oracle) <[email protected]>

Status in newer kernel trees:
6.12.y | Not found
6.6.y | Not found
6.1.y | Not found

Note: The patch differs from the upstream commit:
---

1:  a2e740e216f5 < -:  ------------ vmalloc: fix accounting with i915
-:  ------------ > 1:  e85bcde84558 vmalloc: fix accounting with i915

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-6.1.y        |  Success    |  Success   |
#3 lore raw

Re: [PATCH 6.1.y] vmalloc: fix accounting with i915

Quoted 9 lines · Sasha Levin

[ Sasha's backport helper bot ]

Hi,

Found matching upstream commit: a2e740e216f5bf49ccb83b6d490c72a340558a43

WARNING: Author mismatch between patch and found commit:
Backport author: "Matthew Wilcox (Oracle)" <[email protected]> Commit author: Matthew Wilcox (Oracle) <[email protected]>

Do I need to adjust my tooling, or do you?

maintainer
#4 lore raw

Re: [PATCH 6.1.y] vmalloc: fix accounting with i915

Quoted 5 lines · Matthew Wilcox
Quoted 4 lines · Sasha Levin

[ Sasha's backport helper bot ]

Hi,

Quoted 7 lines
Quoted 5 lines

Found matching upstream commit: a2e740e216f5bf49ccb83b6d490c72a340558a43

WARNING: Author mismatch between patch and found commit:
Backport author: "Matthew Wilcox (Oracle)" <[email protected]> Commit author: Matthew Wilcox (Oracle) <[email protected]>

Do I need to adjust my tooling, or do you?

I'll go fix it...

Signature · 2 lines
Thanks,
Sasha