]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mm: remove page->order
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 10 Sep 2025 14:29:19 +0000 (15:29 +0100)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 21 Sep 2025 21:22:32 +0000 (14:22 -0700)
We already use page->private for storing the order of a page while it's in
the buddy allocator system; extend that to also storing the order while
it's in the pcp_llist.

Link: https://lkml.kernel.org/r/20250910142923.2465470-4-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/mm_types.h
mm/page_alloc.c

index f048dc80646eba6591b228e3c80e55bd6151323c..6920c816f6c668f743e677240e262b3e3a7179c4 100644 (file)
@@ -97,10 +97,7 @@ struct page {
                                /* Or, free page */
                                struct list_head buddy_list;
                                struct list_head pcp_list;
-                               struct {
-                                       struct llist_node pcp_llist;
-                                       unsigned int order;
-                               };
+                               struct llist_node pcp_llist;
                        };
                        struct address_space *mapping;
                        union {
@@ -111,7 +108,8 @@ struct page {
                         * @private: Mapping-private opaque data.
                         * Usually used for buffer_heads if PagePrivate.
                         * Used for swp_entry_t if swapcache flag set.
-                        * Indicates order in the buddy system if PageBuddy.
+                        * Indicates order in the buddy system if PageBuddy
+                        * or on pcp_llist.
                         */
                        unsigned long private;
                };
index cf38d499e0459bccd8793f1914c323800f6ad6bd..2bfab96c207f64ec15a5945378c2934ea7826e23 100644 (file)
@@ -1520,7 +1520,7 @@ static void add_page_to_zone_llist(struct zone *zone, struct page *page,
                                   unsigned int order)
 {
        /* Remember the order */
-       page->order = order;
+       page->private = order;
        /* Add the page to the free list */
        llist_add(&page->pcp_llist, &zone->trylock_free_pages);
 }
@@ -1549,7 +1549,7 @@ static void free_one_page(struct zone *zone, struct page *page,
 
                llnode = llist_del_all(llhead);
                llist_for_each_entry_safe(p, tmp, llnode, pcp_llist) {
-                       unsigned int p_order = p->order;
+                       unsigned int p_order = p->private;
 
                        split_large_buddy(zone, p, page_to_pfn(p), p_order, fpi_flags);
                        __count_vm_events(PGFREE, 1 << p_order);