From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [linux-next:master 3481/4316] mm/hugetlb.c:3086 alloc_hugetlb_folio() warn: mixing irq and irqsave
Date: Tue, 08 Sep 2026 15:53:22 +0800 [thread overview]
Message-ID: <202609081528.N9VrC0I3-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: Zhao Li <enderaoelyther@gmail.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/next/linux-next.git master
head: 944a035ecca915ae947905dcfb03f2b9dc6d032c
commit: cdf1d821e3e4fbbb91fe4b3890482f5458e2d7c6 [3481/4316] mm/hugetlb: fix max-only subpool accounting on alloc_hugetlb_folio failure
:::::: branch date: 17 hours ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-161-20260908 (https://download.01.org/0day-ci/archive/20260908/202609081528.N9VrC0I3-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
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
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202609081528.N9VrC0I3-lkp@intel.com/
smatch warnings:
mm/hugetlb.c:3086 alloc_hugetlb_folio() warn: mixing irq and irqsave
vim +3086 mm/hugetlb.c
923682a0dd5706 Peter Xu 2025-01-07 2942
30cef82bc6e897 Peter Xu 2025-01-07 2943 /*
30cef82bc6e897 Peter Xu 2025-01-07 2944 * NOTE! "cow_from_owner" represents a very hacky usage only used in CoW
30cef82bc6e897 Peter Xu 2025-01-07 2945 * faults of hugetlb private mappings on top of a non-page-cache folio (in
30cef82bc6e897 Peter Xu 2025-01-07 2946 * which case even if there's a private vma resv map it won't cover such
30cef82bc6e897 Peter Xu 2025-01-07 2947 * allocation). New call sites should (probably) never set it to true!!
30cef82bc6e897 Peter Xu 2025-01-07 2948 * When it's set, the allocation will bypass all vma level reservations.
30cef82bc6e897 Peter Xu 2025-01-07 2949 */
d0ce0e47b323a8 Sidhartha Kumar 2023-01-25 2950 struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
30cef82bc6e897 Peter Xu 2025-01-07 2951 unsigned long addr, bool cow_from_owner)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2952 {
90481622d75715 David Gibson 2012-03-21 2953 struct hugepage_subpool *spool = subpool_vma(vma);
a5516438959d90 Andi Kleen 2008-07-23 2954 struct hstate *h = hstate_vma(vma);
d4ab0316cc33ae Sidhartha Kumar 2022-11-01 2955 struct folio *folio;
a833a693a490ec Wupeng Ma 2025-04-10 2956 long retval, gbl_chg, gbl_reserve;
923682a0dd5706 Peter Xu 2025-01-07 2957 map_chg_state map_chg;
a492abe28bece8 Ackerley Tng 2026-07-02 2958 struct mempolicy_interpreted mpoli;
66a4e9e11e43f1 Ackerley Tng 2026-07-02 2959 gfp_t gfp = htlb_alloc_mask(h);
a492abe28bece8 Ackerley Tng 2026-07-02 2960 struct mempolicy *mpol;
a492abe28bece8 Ackerley Tng 2026-07-02 2961 nodemask_t *nodemask;
5737df3826dee4 Ackerley Tng 2026-07-02 2962 u8 alloc_flags = 0;
a492abe28bece8 Ackerley Tng 2026-07-02 2963 int nid;
5737df3826dee4 Ackerley Tng 2026-07-02 2964 int ret;
923682a0dd5706 Peter Xu 2025-01-07 2965
923682a0dd5706 Peter Xu 2025-01-07 2966 /* Whether we need a separate per-vma reservation? */
923682a0dd5706 Peter Xu 2025-01-07 2967 if (cow_from_owner) {
923682a0dd5706 Peter Xu 2025-01-07 2968 /*
923682a0dd5706 Peter Xu 2025-01-07 2969 * Special case! Since it's a CoW on top of a reserved
923682a0dd5706 Peter Xu 2025-01-07 2970 * page, the private resv map doesn't count. So it cannot
923682a0dd5706 Peter Xu 2025-01-07 2971 * consume the per-vma resv map even if it's reserved.
923682a0dd5706 Peter Xu 2025-01-07 2972 */
923682a0dd5706 Peter Xu 2025-01-07 2973 map_chg = MAP_CHG_ENFORCED;
923682a0dd5706 Peter Xu 2025-01-07 2974 } else {
a1e78772d72b26 Mel Gorman 2008-07-23 2975 /*
d85f69b0b533ec Mike Kravetz 2015-09-08 2976 * Examine the region/reserve map to determine if the process
d85f69b0b533ec Mike Kravetz 2015-09-08 2977 * has a reservation for the page to be allocated. A return
d85f69b0b533ec Mike Kravetz 2015-09-08 2978 * code of zero indicates a reservation exists (no change).
a1e78772d72b26 Mel Gorman 2008-07-23 2979 */
923682a0dd5706 Peter Xu 2025-01-07 2980 retval = vma_needs_reservation(h, vma, addr);
923682a0dd5706 Peter Xu 2025-01-07 2981 if (retval < 0)
76dcee75c1aff6 Aneesh Kumar K.V 2012-07-31 2982 return ERR_PTR(-ENOMEM);
923682a0dd5706 Peter Xu 2025-01-07 2983 map_chg = retval ? MAP_CHG_NEEDED : MAP_CHG_REUSE;
923682a0dd5706 Peter Xu 2025-01-07 2984 }
d85f69b0b533ec Mike Kravetz 2015-09-08 2985
d85f69b0b533ec Mike Kravetz 2015-09-08 2986 /*
923682a0dd5706 Peter Xu 2025-01-07 2987 * Whether we need a separate global reservation?
923682a0dd5706 Peter Xu 2025-01-07 2988 *
d85f69b0b533ec Mike Kravetz 2015-09-08 2989 * Processes that did not create the mapping will have no
d85f69b0b533ec Mike Kravetz 2015-09-08 2990 * reserves as indicated by the region/reserve map. Check
d85f69b0b533ec Mike Kravetz 2015-09-08 2991 * that the allocation will not exceed the subpool limit.
923682a0dd5706 Peter Xu 2025-01-07 2992 * Or if it can get one from the pool reservation directly.
d85f69b0b533ec Mike Kravetz 2015-09-08 2993 */
923682a0dd5706 Peter Xu 2025-01-07 2994 if (map_chg) {
d85f69b0b533ec Mike Kravetz 2015-09-08 2995 gbl_chg = hugepage_subpool_get_pages(spool, 1);
564b2eeeb9ad1a Ackerley Tng 2026-07-02 2996 if (gbl_chg < 0) {
564b2eeeb9ad1a Ackerley Tng 2026-07-02 2997 ret = -ENOSPC;
8cba9576df601c Nhat Pham 2023-10-06 2998 goto out_end_reservation;
564b2eeeb9ad1a Ackerley Tng 2026-07-02 2999 }
923682a0dd5706 Peter Xu 2025-01-07 3000 } else {
923682a0dd5706 Peter Xu 2025-01-07 3001 /*
923682a0dd5706 Peter Xu 2025-01-07 3002 * If we have the vma reservation ready, no need for extra
923682a0dd5706 Peter Xu 2025-01-07 3003 * global reservation.
923682a0dd5706 Peter Xu 2025-01-07 3004 */
923682a0dd5706 Peter Xu 2025-01-07 3005 gbl_chg = 0;
d85f69b0b533ec Mike Kravetz 2015-09-08 3006 }
d85f69b0b533ec Mike Kravetz 2015-09-08 3007
923682a0dd5706 Peter Xu 2025-01-07 3008 /*
5737df3826dee4 Ackerley Tng 2026-07-02 3009 * If allocation doesn't reuse a reservation in the resv_map,
5737df3826dee4 Ackerley Tng 2026-07-02 3010 * charge for the reservation.
08cf9faf755802 Mina Almasry 2020-04-01 3011 */
5737df3826dee4 Ackerley Tng 2026-07-02 3012 if (map_chg != MAP_CHG_REUSE)
5737df3826dee4 Ackerley Tng 2026-07-02 3013 alloc_flags |= HUGETLB_ALLOC_CHARG_CGROUP_RSVD;
08cf9faf755802 Mina Almasry 2020-04-01 3014
d85f69b0b533ec Mike Kravetz 2015-09-08 3015 /*
5737df3826dee4 Ackerley Tng 2026-07-02 3016 * gbl_chg == 0 indicates a reservation exists for this
5737df3826dee4 Ackerley Tng 2026-07-02 3017 * allocation, so try to use it.
d85f69b0b533ec Mike Kravetz 2015-09-08 3018 */
5737df3826dee4 Ackerley Tng 2026-07-02 3019 if (gbl_chg == 0)
5737df3826dee4 Ackerley Tng 2026-07-02 3020 alloc_flags |= HUGETLB_ALLOC_USE_GLOBAL_RESERVATIONS;
ff7d853b031302 Sidhartha Kumar 2023-01-13 3021
a492abe28bece8 Ackerley Tng 2026-07-02 3022 /* Takes reference on mpol. */
a492abe28bece8 Ackerley Tng 2026-07-02 3023 nid = huge_node(vma, addr, gfp, &mpol, &nodemask);
a492abe28bece8 Ackerley Tng 2026-07-02 3024 mpoli = (struct mempolicy_interpreted){
a492abe28bece8 Ackerley Tng 2026-07-02 3025 .nid = nid,
a492abe28bece8 Ackerley Tng 2026-07-02 3026 #ifdef CONFIG_NUMA
a492abe28bece8 Ackerley Tng 2026-07-02 3027 .mode = mpol ? mpol->mode : MPOL_DEFAULT,
a492abe28bece8 Ackerley Tng 2026-07-02 3028 #else
a492abe28bece8 Ackerley Tng 2026-07-02 3029 .mode = MPOL_DEFAULT,
a492abe28bece8 Ackerley Tng 2026-07-02 3030 #endif
a492abe28bece8 Ackerley Tng 2026-07-02 3031 .nodemask = nodemask,
a492abe28bece8 Ackerley Tng 2026-07-02 3032 };
f931af2e41ab40 Peter Xu 2025-01-07 3033
5737df3826dee4 Ackerley Tng 2026-07-02 3034 folio = hugetlb_alloc_folio(h, &mpoli, alloc_flags);
08cf9faf755802 Mina Almasry 2020-04-01 3035
66a4e9e11e43f1 Ackerley Tng 2026-07-02 3036 mpol_cond_put(mpol);
7893d1d505d59d Adam Litke 2007-10-16 3037
5737df3826dee4 Ackerley Tng 2026-07-02 3038 if (IS_ERR(folio)) {
5737df3826dee4 Ackerley Tng 2026-07-02 3039 ret = PTR_ERR(folio);
177e1cbbb58128 Ackerley Tng 2026-07-02 3040 goto out_subpool_put;
177e1cbbb58128 Ackerley Tng 2026-07-02 3041 }
7893d1d505d59d Adam Litke 2007-10-16 3042
ff7d853b031302 Sidhartha Kumar 2023-01-13 3043 hugetlb_set_folio_subpool(folio, spool);
a1e78772d72b26 Mel Gorman 2008-07-23 3044
923682a0dd5706 Peter Xu 2025-01-07 3045 if (map_chg != MAP_CHG_ENFORCED) {
923682a0dd5706 Peter Xu 2025-01-07 3046 /* commit() is only needed if the map_chg is not enforced */
923682a0dd5706 Peter Xu 2025-01-07 3047 retval = vma_commit_reservation(h, vma, addr);
33039678c8da81 Mike Kravetz 2015-06-24 3048 /*
923682a0dd5706 Peter Xu 2025-01-07 3049 * Check for possible race conditions. When it happens..
33039678c8da81 Mike Kravetz 2015-06-24 3050 * The page was added to the reservation map between
33039678c8da81 Mike Kravetz 2015-06-24 3051 * vma_needs_reservation and vma_commit_reservation.
33039678c8da81 Mike Kravetz 2015-06-24 3052 * This indicates a race with hugetlb_reserve_pages.
33039678c8da81 Mike Kravetz 2015-06-24 3053 * Adjust for the subpool count incremented above AND
33039678c8da81 Mike Kravetz 2015-06-24 3054 * in hugetlb_reserve_pages for the same page. Also,
33039678c8da81 Mike Kravetz 2015-06-24 3055 * the reservation count added in hugetlb_reserve_pages
33039678c8da81 Mike Kravetz 2015-06-24 3056 * no longer applies.
33039678c8da81 Mike Kravetz 2015-06-24 3057 */
923682a0dd5706 Peter Xu 2025-01-07 3058 if (unlikely(map_chg == MAP_CHG_NEEDED && retval == 0)) {
33039678c8da81 Mike Kravetz 2015-06-24 3059 long rsv_adjust;
33039678c8da81 Mike Kravetz 2015-06-24 3060
33039678c8da81 Mike Kravetz 2015-06-24 3061 rsv_adjust = hugepage_subpool_put_pages(spool, 1);
33039678c8da81 Mike Kravetz 2015-06-24 3062 hugetlb_acct_memory(h, -rsv_adjust);
b76b46902c2d03 Peter Xu 2024-04-17 3063 spin_lock_irq(&hugetlb_lock);
923682a0dd5706 Peter Xu 2025-01-07 3064 hugetlb_cgroup_uncharge_folio_rsvd(
a1c655f5544415 Joshua Hahn 2026-01-16 3065 hstate_index(h), pages_per_huge_page(h), folio);
b76b46902c2d03 Peter Xu 2024-04-17 3066 spin_unlock_irq(&hugetlb_lock);
b76b46902c2d03 Peter Xu 2024-04-17 3067 }
33039678c8da81 Mike Kravetz 2015-06-24 3068 }
8cba9576df601c Nhat Pham 2023-10-06 3069
d0ce0e47b323a8 Sidhartha Kumar 2023-01-25 3070 return folio;
8f34af6f93aee8 Jianyu Zhan 2014-06-04 3071
8f34af6f93aee8 Jianyu Zhan 2014-06-04 3072 out_subpool_put:
cdf1d821e3e4fb Zhao Li 2026-04-28 3073 if (map_chg) {
cdf1d821e3e4fb Zhao Li 2026-04-28 3074 if (!gbl_chg) {
cdf1d821e3e4fb Zhao Li 2026-04-28 3075 /* Full inverse when subpool_get_pages() consumed rsv_hpages. */
a833a693a490ec Wupeng Ma 2025-04-10 3076 gbl_reserve = hugepage_subpool_put_pages(spool, 1);
a833a693a490ec Wupeng Ma 2025-04-10 3077 hugetlb_acct_memory(h, -gbl_reserve);
cdf1d821e3e4fb Zhao Li 2026-04-28 3078 } else if (gbl_chg > 0 && spool && spool->min_hpages == -1 &&
cdf1d821e3e4fb Zhao Li 2026-04-28 3079 spool->max_hpages != -1) {
cdf1d821e3e4fb Zhao Li 2026-04-28 3080 unsigned long flags;
cdf1d821e3e4fb Zhao Li 2026-04-28 3081
cdf1d821e3e4fb Zhao Li 2026-04-28 3082 /*
cdf1d821e3e4fb Zhao Li 2026-04-28 3083 * For max-only subpools, subpool_get_pages() took only a
cdf1d821e3e4fb Zhao Li 2026-04-28 3084 * speculative used_hpages slot. Drop that slot directly.
cdf1d821e3e4fb Zhao Li 2026-04-28 3085 */
cdf1d821e3e4fb Zhao Li 2026-04-28 @3086 spin_lock_irqsave(&spool->lock, flags);
cdf1d821e3e4fb Zhao Li 2026-04-28 3087 if (spool->used_hpages > 0)
cdf1d821e3e4fb Zhao Li 2026-04-28 3088 spool->used_hpages--;
cdf1d821e3e4fb Zhao Li 2026-04-28 3089 unlock_or_release_subpool(spool, flags);
cdf1d821e3e4fb Zhao Li 2026-04-28 3090 }
a833a693a490ec Wupeng Ma 2025-04-10 3091 }
a833a693a490ec Wupeng Ma 2025-04-10 3092
8cba9576df601c Nhat Pham 2023-10-06 3093 out_end_reservation:
923682a0dd5706 Peter Xu 2025-01-07 3094 if (map_chg != MAP_CHG_ENFORCED)
feba16e25a5780 Mike Kravetz 2015-09-08 3095 vma_end_reservation(h, vma, addr);
564b2eeeb9ad1a Ackerley Tng 2026-07-02 3096 return ERR_PTR(ret);
^1da177e4c3f41 Linus Torvalds 2005-04-16 3097 }
b45b5bd65f668a David Gibson 2006-03-22 3098
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-09-08 7:54 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=202609081528.N9VrC0I3-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.