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

Configure Feed

Select the types of activity you want to include in your feed.

drivers/virtio/virtio_balloon: stop using balloon_page_push/pop()

Let's stop using these functions so we can remove them. They look like
belonging to the balloon API for managing the device balloon list when
really they are just simple helpers only used by virtio-balloon.

Let's just inline them and switch to a proper list_for_each_entry_safe().

Link: https://lkml.kernel.org/r/20260119230133.3551867-13-david@kernel.org
Signed-off-by: David Hildenbrand (Red Hat) <david@kernel.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: Eugenio Pérez <eperezma@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jason Wang <jasowang@redhat.com>
Cc: Jerrin Shaji George <jerrin.shaji-george@broadcom.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: SeongJae Park <sj@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

David Hildenbrand (Red Hat) and committed by
Andrew Morton
f7e15373 aa974cbf

+15 -10
+15 -10
drivers/virtio/virtio_balloon.c
··· 242 242 static unsigned int fill_balloon(struct virtio_balloon *vb, size_t num) 243 243 { 244 244 unsigned int num_allocated_pages; 245 + struct page *page, *next; 245 246 unsigned int num_pfns; 246 - struct page *page; 247 247 LIST_HEAD(pages); 248 248 249 249 /* We can only do one array worth at a time. */ ··· 262 262 break; 263 263 } 264 264 265 - balloon_page_push(&pages, page); 265 + list_add(&page->lru, &pages); 266 266 } 267 267 268 268 mutex_lock(&vb->balloon_lock); 269 269 270 270 vb->num_pfns = 0; 271 271 272 - while ((page = balloon_page_pop(&pages))) { 272 + list_for_each_entry_safe(page, next, &pages, lru) { 273 + list_del(&page->lru); 273 274 balloon_page_enqueue(&vb->vb_dev_info, page); 274 275 275 276 set_page_pfns(vb, vb->pfns + vb->num_pfns, page); ··· 475 474 static unsigned long return_free_pages_to_mm(struct virtio_balloon *vb, 476 475 unsigned long num_to_return) 477 476 { 478 - struct page *page; 479 - unsigned long num_returned; 477 + unsigned long num_returned = 0; 478 + struct page *page, *next; 479 + 480 + if (unlikely(!num_to_return)) 481 + return 0; 480 482 481 483 spin_lock_irq(&vb->free_page_list_lock); 482 - for (num_returned = 0; num_returned < num_to_return; num_returned++) { 483 - page = balloon_page_pop(&vb->free_page_list); 484 - if (!page) 485 - break; 484 + 485 + list_for_each_entry_safe(page, next, &vb->free_page_list, lru) { 486 + list_del(&page->lru); 486 487 __free_pages(page, VIRTIO_BALLOON_HINT_BLOCK_ORDER); 488 + if (++num_returned == num_to_return) 489 + break; 487 490 } 488 491 vb->num_free_page_blocks -= num_returned; 489 492 spin_unlock_irq(&vb->free_page_list_lock); ··· 722 717 } 723 718 virtqueue_kick(vq); 724 719 spin_lock_irq(&vb->free_page_list_lock); 725 - balloon_page_push(&vb->free_page_list, page); 720 + list_add(&page->lru, &vb->free_page_list); 726 721 vb->num_free_page_blocks++; 727 722 spin_unlock_irq(&vb->free_page_list_lock); 728 723 } else {