[lvc-project] [PATCH 5.10] page_pool: Fix use-after-free in page_pool_recycle_in_ring
Fedor Pchelkin
pchelkin at ispras.ru
Fri Jun 5 19:28:08 MSK 2026
On Fri, 05. Jun 18:56, Viktoriya Danchenko wrote:
> [ Upstream commit 271683bb2cf32e5126c592b5d5e6a756fa374fd9 ]
Ещё нужен From автора ориг. коммита перед этим.
> [ Viktoriya: add patch hunk related to newer functionality,
> namely added by:
> - 368d3cb406cd ("page_pool: fix inconsistency for page_pool_ring_[un]lock()")]
Его лучше портировать отдельным патчем.
> @@ -21,6 +21,29 @@
> #define DEFER_TIME (msecs_to_jiffies(1000))
> #define DEFER_WARN_INTERVAL (60 * HZ)
>
> +static bool page_pool_producer_lock(struct page_pool *pool)
> + __acquires(&pool->ring.producer_lock)
> +{
> + bool in_softirq = in_softirq();
...
> @@ -320,14 +343,13 @@ static void page_pool_return_page(struct page_pool *pool, struct page *page)
>
> static bool page_pool_recycle_in_ring(struct page_pool *pool, struct page *page)
> {
> - int ret;
> + bool in_softirq, ret;
> /* BH protection not needed if current is serving softirq */
> - if (in_serving_softirq())
В 5.10 был in_serving_softirq(), патч заменяет на использование
in_softirq(). Они несколько отличаются.
Апстримный патч заменяет in_softirq() на in_softirq(), т.е. эта функция
уже вызывалась там изначально в силу каких-то изменений, случившихся после
5.10.
Этол требует какого-то обоснования.
More information about the lvc-project
mailing list