]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: iwlegacy: Fix GFP flags in allocation loop
authorBrendan Jackman <jackmanb@google.com>
Fri, 27 Mar 2026 12:30:07 +0000 (12:30 +0000)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 7 Apr 2026 13:38:35 +0000 (15:38 +0200)
Do not latch these flags, they should be re-evaluated for each
iteration of the loop.

Concretely, rxq->free_count is incremented during the loop so the
__GFP_NOWARN decision may be stale. There may be other reasons to
require the re-evaluation too.

Suggested-by: Stanislaw Gruszka <stf_xl@wp.pl>
Link: https://lore.kernel.org/all/20260327115739.GB16800@wp.pl/
Signed-off-by: Brendan Jackman <jackmanb@google.com>
Acked-by: Stanislaw Gruszka <stf_xl@wp.pl>
Link: https://patch.msgid.link/20260327-iwlegacy-gfp-fix-v1-1-b83e4db0bd66@google.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlegacy/3945-mac.c

index 88b31e0b9568c96f05c5b390b8a6cb06d882004f..cbaf250626c5c3652fda9d49d5d0f0ef3920e0be 100644 (file)
@@ -979,9 +979,10 @@ il3945_rx_allocate(struct il_priv *il, gfp_t priority)
        struct page *page;
        dma_addr_t page_dma;
        unsigned long flags;
-       gfp_t gfp_mask = priority;
 
        while (1) {
+               gfp_t gfp_mask = priority;
+
                spin_lock_irqsave(&rxq->lock, flags);
                if (list_empty(&rxq->rx_used)) {
                        spin_unlock_irqrestore(&rxq->lock, flags);