From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: mm/page_alloc.c:3472 reserve_highatomic_pageblock() warn: inconsistent returns '&zone->lock'.
Date: Fri, 09 Oct 2026 08:19:51 +0200 [thread overview]
Message-ID: <202610090809.1WrAzuGx-lkp@intel.com> (raw)
Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Dmitry Ilvokhin <d@ilvokhin.com>
CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux Memory Management List <linux-mm@kvack.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: af32da41b0327b9c6a37856ba82b6760d6c8d10e
commit: 5ebb2064da361ca860c052bca9ae37962adef3f7 mm: use zone lock guard in reserve_highatomic_pageblock()
date: 4 months ago
:::::: branch date: 2 hours ago
:::::: commit date: 4 months ago
config: loongarch-randconfig-r2200-20261009 (https://download.01.org/0day-ci/archive/20261009/202610090809.1WrAzuGx-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 16.1.0
smatch: v0.5.0-9187-g5189e3fb
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 5ebb2064da36 ("mm: use zone lock guard in reserve_highatomic_pageblock()")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202610090809.1WrAzuGx-lkp@intel.com/
smatch warnings:
mm/page_alloc.c:3472 reserve_highatomic_pageblock() warn: inconsistent returns '&zone->lock'.
mm/page_alloc.c:3472 reserve_highatomic_pageblock() warn: inconsistent returns 'irq'.
vim +3472 mm/page_alloc.c
^1da177e4c3f415 Linus Torvalds 2005-04-16 3435
a4138a2702a4428 Johannes Weiner 2025-02-24 3436 /*
a4138a2702a4428 Johannes Weiner 2025-02-24 3437 * Reserve the pageblock(s) surrounding an allocation request for
a4138a2702a4428 Johannes Weiner 2025-02-24 3438 * exclusive use of high-order atomic allocations if there are no
a4138a2702a4428 Johannes Weiner 2025-02-24 3439 * empty page blocks that contain a page with a suitable order
a4138a2702a4428 Johannes Weiner 2025-02-24 3440 */
a4138a2702a4428 Johannes Weiner 2025-02-24 3441 static void reserve_highatomic_pageblock(struct page *page, int order,
a4138a2702a4428 Johannes Weiner 2025-02-24 3442 struct zone *zone)
a4138a2702a4428 Johannes Weiner 2025-02-24 3443 {
a4138a2702a4428 Johannes Weiner 2025-02-24 3444 int mt;
5ebb2064da361ca Dmitry Ilvokhin 2026-04-29 3445 unsigned long max_managed;
a4138a2702a4428 Johannes Weiner 2025-02-24 3446
a4138a2702a4428 Johannes Weiner 2025-02-24 3447 /*
a4138a2702a4428 Johannes Weiner 2025-02-24 3448 * The number reserved as: minimum is 1 pageblock, maximum is
a4138a2702a4428 Johannes Weiner 2025-02-24 3449 * roughly 1% of a zone. But if 1% of a zone falls below a
a4138a2702a4428 Johannes Weiner 2025-02-24 3450 * pageblock size, then don't reserve any pageblocks.
a4138a2702a4428 Johannes Weiner 2025-02-24 3451 * Check is race-prone but harmless.
a4138a2702a4428 Johannes Weiner 2025-02-24 3452 */
a4138a2702a4428 Johannes Weiner 2025-02-24 3453 if ((zone_managed_pages(zone) / 100) < pageblock_nr_pages)
a4138a2702a4428 Johannes Weiner 2025-02-24 3454 return;
a4138a2702a4428 Johannes Weiner 2025-02-24 3455 max_managed = ALIGN((zone_managed_pages(zone) / 100), pageblock_nr_pages);
a4138a2702a4428 Johannes Weiner 2025-02-24 3456 if (zone->nr_reserved_highatomic >= max_managed)
a4138a2702a4428 Johannes Weiner 2025-02-24 3457 return;
a4138a2702a4428 Johannes Weiner 2025-02-24 3458
5ebb2064da361ca Dmitry Ilvokhin 2026-04-29 3459 guard(spinlock_irqsave)(&zone->lock);
a4138a2702a4428 Johannes Weiner 2025-02-24 3460
a4138a2702a4428 Johannes Weiner 2025-02-24 3461 /* Recheck the nr_reserved_highatomic limit under the lock */
a4138a2702a4428 Johannes Weiner 2025-02-24 3462 if (zone->nr_reserved_highatomic >= max_managed)
5ebb2064da361ca Dmitry Ilvokhin 2026-04-29 3463 return;
a4138a2702a4428 Johannes Weiner 2025-02-24 3464
a4138a2702a4428 Johannes Weiner 2025-02-24 3465 /* Yoink! */
a4138a2702a4428 Johannes Weiner 2025-02-24 3466 mt = get_pageblock_migratetype(page);
a4138a2702a4428 Johannes Weiner 2025-02-24 3467 /* Only reserve normal pageblocks (i.e., they can merge with others) */
a4138a2702a4428 Johannes Weiner 2025-02-24 3468 if (!migratetype_is_mergeable(mt))
5ebb2064da361ca Dmitry Ilvokhin 2026-04-29 3469 return;
a4138a2702a4428 Johannes Weiner 2025-02-24 3470
a4138a2702a4428 Johannes Weiner 2025-02-24 3471 if (order < pageblock_order) {
a4138a2702a4428 Johannes Weiner 2025-02-24 @3472 if (move_freepages_block(zone, page, mt, MIGRATE_HIGHATOMIC) == -1)
5ebb2064da361ca Dmitry Ilvokhin 2026-04-29 3473 return;
a4138a2702a4428 Johannes Weiner 2025-02-24 3474 zone->nr_reserved_highatomic += pageblock_nr_pages;
a4138a2702a4428 Johannes Weiner 2025-02-24 3475 } else {
a4138a2702a4428 Johannes Weiner 2025-02-24 3476 change_pageblock_range(page, order, MIGRATE_HIGHATOMIC);
a4138a2702a4428 Johannes Weiner 2025-02-24 3477 zone->nr_reserved_highatomic += 1 << order;
a4138a2702a4428 Johannes Weiner 2025-02-24 3478 }
a4138a2702a4428 Johannes Weiner 2025-02-24 3479 }
a4138a2702a4428 Johannes Weiner 2025-02-24 3480
:::::: The code at line 3472 was first introduced by commit
:::::: a4138a2702a4428317ecdb115934554df4b788b4 mm: page_alloc: group fallback functions together
:::::: TO: Johannes Weiner <hannes@cmpxchg.org>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-10-09 6:20 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202610090809.1WrAzuGx-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.