All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Memory Management List <linux-mm@kvack.org>
Subject: lib/maple_tree.c:3783:19: warning: stack frame size (1032) exceeds limit (1024) in 'mas_wr_spanning_store'
Date: Wed, 6 Aug 2025 07:14:50 +0200	[thread overview]
Message-ID: <202508060727.LX1lVT66-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   7881cd6886a89eda848192d3f5759ce08672e084
commit: bd164d81a767f33c30d5c5b50b775631699ee976 maple_tree: introduce store_type enum
date:   11 months ago
config: um-alldefconfig (https://download.01.org/0day-ci/archive/20250806/202508060727.LX1lVT66-lkp@intel.com/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508060727.LX1lVT66-lkp@intel.com/reproduce)

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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508060727.LX1lVT66-lkp@intel.com/

All warnings (new ones prefixed by >>):

   lib/maple_tree.c:351:21: warning: unused function 'mte_set_full' [-Wunused-function]
     351 | static inline void *mte_set_full(const struct maple_enode *node)
         |                     ^~~~~~~~~~~~
   lib/maple_tree.c:356:21: warning: unused function 'mte_clear_full' [-Wunused-function]
     356 | static inline void *mte_clear_full(const struct maple_enode *node)
         |                     ^~~~~~~~~~~~~~
   lib/maple_tree.c:361:20: warning: unused function 'mte_has_null' [-Wunused-function]
     361 | static inline bool mte_has_null(const struct maple_enode *node)
         |                    ^~~~~~~~~~~~
   lib/maple_tree.c:4161:20: warning: stack frame size (1080) exceeds limit (1024) in 'mas_wr_modify' [-Wframe-larger-than]
    4161 | static inline void mas_wr_modify(struct ma_wr_state *wr_mas)
         |                    ^
>> lib/maple_tree.c:3783:19: warning: stack frame size (1032) exceeds limit (1024) in 'mas_wr_spanning_store' [-Wframe-larger-than]
    3783 | static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas)
         |                   ^
   5 warnings generated.


vim +/mas_wr_spanning_store +3783 lib/maple_tree.c

54a611b605901c Liam R. Howlett 2022-09-06  3724  
530f745c7620af Liam R. Howlett 2023-08-04  3725  static void mte_destroy_walk(struct maple_enode *, struct maple_tree *);
54a611b605901c Liam R. Howlett 2022-09-06  3726  /*
54a611b605901c Liam R. Howlett 2022-09-06  3727   * mas_new_root() - Create a new root node that only contains the entry passed
54a611b605901c Liam R. Howlett 2022-09-06  3728   * in.
54a611b605901c Liam R. Howlett 2022-09-06  3729   * @mas: The maple state
54a611b605901c Liam R. Howlett 2022-09-06  3730   * @entry: The entry to store.
54a611b605901c Liam R. Howlett 2022-09-06  3731   *
54a611b605901c Liam R. Howlett 2022-09-06  3732   * Only valid when the index == 0 and the last == ULONG_MAX
54a611b605901c Liam R. Howlett 2022-09-06  3733   *
54a611b605901c Liam R. Howlett 2022-09-06  3734   * Return 0 on error, 1 on success.
54a611b605901c Liam R. Howlett 2022-09-06  3735   */
54a611b605901c Liam R. Howlett 2022-09-06  3736  static inline int mas_new_root(struct ma_state *mas, void *entry)
54a611b605901c Liam R. Howlett 2022-09-06  3737  {
54a611b605901c Liam R. Howlett 2022-09-06  3738  	struct maple_enode *root = mas_root_locked(mas);
54a611b605901c Liam R. Howlett 2022-09-06  3739  	enum maple_type type = maple_leaf_64;
54a611b605901c Liam R. Howlett 2022-09-06  3740  	struct maple_node *node;
54a611b605901c Liam R. Howlett 2022-09-06  3741  	void __rcu **slots;
54a611b605901c Liam R. Howlett 2022-09-06  3742  	unsigned long *pivots;
54a611b605901c Liam R. Howlett 2022-09-06  3743  
54a611b605901c Liam R. Howlett 2022-09-06  3744  	if (!entry && !mas->index && mas->last == ULONG_MAX) {
54a611b605901c Liam R. Howlett 2022-09-06  3745  		mas->depth = 0;
54a611b605901c Liam R. Howlett 2022-09-06  3746  		mas_set_height(mas);
54a611b605901c Liam R. Howlett 2022-09-06  3747  		rcu_assign_pointer(mas->tree->ma_root, entry);
067311d33e650a Liam R. Howlett 2023-11-01  3748  		mas->status = ma_start;
54a611b605901c Liam R. Howlett 2022-09-06  3749  		goto done;
54a611b605901c Liam R. Howlett 2022-09-06  3750  	}
54a611b605901c Liam R. Howlett 2022-09-06  3751  
54a611b605901c Liam R. Howlett 2022-09-06  3752  	mas_node_count(mas, 1);
54a611b605901c Liam R. Howlett 2022-09-06  3753  	if (mas_is_err(mas))
54a611b605901c Liam R. Howlett 2022-09-06  3754  		return 0;
54a611b605901c Liam R. Howlett 2022-09-06  3755  
54a611b605901c Liam R. Howlett 2022-09-06  3756  	node = mas_pop_node(mas);
54a611b605901c Liam R. Howlett 2022-09-06  3757  	pivots = ma_pivots(node, type);
54a611b605901c Liam R. Howlett 2022-09-06  3758  	slots = ma_slots(node, type);
4ffc2ee2cf01f3 Liam R. Howlett 2023-08-04  3759  	node->parent = ma_parent_ptr(mas_tree_parent(mas));
54a611b605901c Liam R. Howlett 2022-09-06  3760  	mas->node = mt_mk_node(node, type);
067311d33e650a Liam R. Howlett 2023-11-01  3761  	mas->status = ma_active;
54a611b605901c Liam R. Howlett 2022-09-06  3762  	rcu_assign_pointer(slots[0], entry);
54a611b605901c Liam R. Howlett 2022-09-06  3763  	pivots[0] = mas->last;
54a611b605901c Liam R. Howlett 2022-09-06  3764  	mas->depth = 1;
54a611b605901c Liam R. Howlett 2022-09-06  3765  	mas_set_height(mas);
54a611b605901c Liam R. Howlett 2022-09-06  3766  	rcu_assign_pointer(mas->tree->ma_root, mte_mk_root(mas->node));
54a611b605901c Liam R. Howlett 2022-09-06  3767  
54a611b605901c Liam R. Howlett 2022-09-06  3768  done:
54a611b605901c Liam R. Howlett 2022-09-06  3769  	if (xa_is_node(root))
54a611b605901c Liam R. Howlett 2022-09-06  3770  		mte_destroy_walk(root, mas->tree);
54a611b605901c Liam R. Howlett 2022-09-06  3771  
54a611b605901c Liam R. Howlett 2022-09-06  3772  	return 1;
54a611b605901c Liam R. Howlett 2022-09-06  3773  }
54a611b605901c Liam R. Howlett 2022-09-06  3774  /*
54a611b605901c Liam R. Howlett 2022-09-06  3775   * mas_wr_spanning_store() - Create a subtree with the store operation completed
54a611b605901c Liam R. Howlett 2022-09-06  3776   * and new nodes where necessary, then place the sub-tree in the actual tree.
54a611b605901c Liam R. Howlett 2022-09-06  3777   * Note that mas is expected to point to the node which caused the store to
54a611b605901c Liam R. Howlett 2022-09-06  3778   * span.
54a611b605901c Liam R. Howlett 2022-09-06  3779   * @wr_mas: The maple write state
54a611b605901c Liam R. Howlett 2022-09-06  3780   *
54a611b605901c Liam R. Howlett 2022-09-06  3781   * Return: 0 on error, positive on success.
54a611b605901c Liam R. Howlett 2022-09-06  3782   */
54a611b605901c Liam R. Howlett 2022-09-06 @3783  static inline int mas_wr_spanning_store(struct ma_wr_state *wr_mas)
54a611b605901c Liam R. Howlett 2022-09-06  3784  {
54a611b605901c Liam R. Howlett 2022-09-06  3785  	struct maple_subtree_state mast;
54a611b605901c Liam R. Howlett 2022-09-06  3786  	struct maple_big_node b_node;
54a611b605901c Liam R. Howlett 2022-09-06  3787  	struct ma_state *mas;
54a611b605901c Liam R. Howlett 2022-09-06  3788  	unsigned char height;
54a611b605901c Liam R. Howlett 2022-09-06  3789  
54a611b605901c Liam R. Howlett 2022-09-06  3790  	/* Left and Right side of spanning store */
54a611b605901c Liam R. Howlett 2022-09-06  3791  	MA_STATE(l_mas, NULL, 0, 0);
54a611b605901c Liam R. Howlett 2022-09-06  3792  	MA_STATE(r_mas, NULL, 0, 0);
54a611b605901c Liam R. Howlett 2022-09-06  3793  	MA_WR_STATE(r_wr_mas, &r_mas, wr_mas->entry);
54a611b605901c Liam R. Howlett 2022-09-06  3794  	MA_WR_STATE(l_wr_mas, &l_mas, wr_mas->entry);
54a611b605901c Liam R. Howlett 2022-09-06  3795  
54a611b605901c Liam R. Howlett 2022-09-06  3796  	/*
54a611b605901c Liam R. Howlett 2022-09-06  3797  	 * A store operation that spans multiple nodes is called a spanning
54a611b605901c Liam R. Howlett 2022-09-06  3798  	 * store and is handled early in the store call stack by the function
54a611b605901c Liam R. Howlett 2022-09-06  3799  	 * mas_is_span_wr().  When a spanning store is identified, the maple
54a611b605901c Liam R. Howlett 2022-09-06  3800  	 * state is duplicated.  The first maple state walks the left tree path
54a611b605901c Liam R. Howlett 2022-09-06  3801  	 * to ``index``, the duplicate walks the right tree path to ``last``.
54a611b605901c Liam R. Howlett 2022-09-06  3802  	 * The data in the two nodes are combined into a single node, two nodes,
54a611b605901c Liam R. Howlett 2022-09-06  3803  	 * or possibly three nodes (see the 3-way split above).  A ``NULL``
54a611b605901c Liam R. Howlett 2022-09-06  3804  	 * written to the last entry of a node is considered a spanning store as
54a611b605901c Liam R. Howlett 2022-09-06  3805  	 * a rebalance is required for the operation to complete and an overflow
54a611b605901c Liam R. Howlett 2022-09-06  3806  	 * of data may happen.
54a611b605901c Liam R. Howlett 2022-09-06  3807  	 */
54a611b605901c Liam R. Howlett 2022-09-06  3808  	mas = wr_mas->mas;
54a611b605901c Liam R. Howlett 2022-09-06  3809  	trace_ma_op(__func__, mas);
54a611b605901c Liam R. Howlett 2022-09-06  3810  
54a611b605901c Liam R. Howlett 2022-09-06  3811  	if (unlikely(!mas->index && mas->last == ULONG_MAX))
54a611b605901c Liam R. Howlett 2022-09-06  3812  		return mas_new_root(mas, wr_mas->entry);
54a611b605901c Liam R. Howlett 2022-09-06  3813  	/*
54a611b605901c Liam R. Howlett 2022-09-06  3814  	 * Node rebalancing may occur due to this store, so there may be three new
54a611b605901c Liam R. Howlett 2022-09-06  3815  	 * entries per level plus a new root.
54a611b605901c Liam R. Howlett 2022-09-06  3816  	 */
54a611b605901c Liam R. Howlett 2022-09-06  3817  	height = mas_mt_height(mas);
54a611b605901c Liam R. Howlett 2022-09-06  3818  	mas_node_count(mas, 1 + height * 3);
54a611b605901c Liam R. Howlett 2022-09-06  3819  	if (mas_is_err(mas))
54a611b605901c Liam R. Howlett 2022-09-06  3820  		return 0;
54a611b605901c Liam R. Howlett 2022-09-06  3821  
54a611b605901c Liam R. Howlett 2022-09-06  3822  	/*
54a611b605901c Liam R. Howlett 2022-09-06  3823  	 * Set up right side.  Need to get to the next offset after the spanning
54a611b605901c Liam R. Howlett 2022-09-06  3824  	 * store to ensure it's not NULL and to combine both the next node and
54a611b605901c Liam R. Howlett 2022-09-06  3825  	 * the node with the start together.
54a611b605901c Liam R. Howlett 2022-09-06  3826  	 */
54a611b605901c Liam R. Howlett 2022-09-06  3827  	r_mas = *mas;
54a611b605901c Liam R. Howlett 2022-09-06  3828  	/* Avoid overflow, walk to next slot in the tree. */
54a611b605901c Liam R. Howlett 2022-09-06  3829  	if (r_mas.last + 1)
54a611b605901c Liam R. Howlett 2022-09-06  3830  		r_mas.last++;
54a611b605901c Liam R. Howlett 2022-09-06  3831  
54a611b605901c Liam R. Howlett 2022-09-06  3832  	r_mas.index = r_mas.last;
54a611b605901c Liam R. Howlett 2022-09-06  3833  	mas_wr_walk_index(&r_wr_mas);
54a611b605901c Liam R. Howlett 2022-09-06  3834  	r_mas.last = r_mas.index = mas->last;
54a611b605901c Liam R. Howlett 2022-09-06  3835  
54a611b605901c Liam R. Howlett 2022-09-06  3836  	/* Set up left side. */
54a611b605901c Liam R. Howlett 2022-09-06  3837  	l_mas = *mas;
54a611b605901c Liam R. Howlett 2022-09-06  3838  	mas_wr_walk_index(&l_wr_mas);
54a611b605901c Liam R. Howlett 2022-09-06  3839  
54a611b605901c Liam R. Howlett 2022-09-06  3840  	if (!wr_mas->entry) {
54a611b605901c Liam R. Howlett 2022-09-06  3841  		mas_extend_spanning_null(&l_wr_mas, &r_wr_mas);
54a611b605901c Liam R. Howlett 2022-09-06  3842  		mas->offset = l_mas.offset;
54a611b605901c Liam R. Howlett 2022-09-06  3843  		mas->index = l_mas.index;
54a611b605901c Liam R. Howlett 2022-09-06  3844  		mas->last = l_mas.last = r_mas.last;
54a611b605901c Liam R. Howlett 2022-09-06  3845  	}
54a611b605901c Liam R. Howlett 2022-09-06  3846  
54a611b605901c Liam R. Howlett 2022-09-06  3847  	/* expanding NULLs may make this cover the entire range */
54a611b605901c Liam R. Howlett 2022-09-06  3848  	if (!l_mas.index && r_mas.last == ULONG_MAX) {
54a611b605901c Liam R. Howlett 2022-09-06  3849  		mas_set_range(mas, 0, ULONG_MAX);
54a611b605901c Liam R. Howlett 2022-09-06  3850  		return mas_new_root(mas, wr_mas->entry);
54a611b605901c Liam R. Howlett 2022-09-06  3851  	}
54a611b605901c Liam R. Howlett 2022-09-06  3852  
54a611b605901c Liam R. Howlett 2022-09-06  3853  	memset(&b_node, 0, sizeof(struct maple_big_node));
54a611b605901c Liam R. Howlett 2022-09-06  3854  	/* Copy l_mas and store the value in b_node. */
0de56e38b307b0 Liam R. Howlett 2023-11-01  3855  	mas_store_b_node(&l_wr_mas, &b_node, l_mas.end);
54a611b605901c Liam R. Howlett 2022-09-06  3856  	/* Copy r_mas into b_node. */
0de56e38b307b0 Liam R. Howlett 2023-11-01  3857  	if (r_mas.offset <= r_mas.end)
0de56e38b307b0 Liam R. Howlett 2023-11-01  3858  		mas_mab_cp(&r_mas, r_mas.offset, r_mas.end,
54a611b605901c Liam R. Howlett 2022-09-06  3859  			   &b_node, b_node.b_end + 1);
54a611b605901c Liam R. Howlett 2022-09-06  3860  	else
54a611b605901c Liam R. Howlett 2022-09-06  3861  		b_node.b_end++;
54a611b605901c Liam R. Howlett 2022-09-06  3862  
54a611b605901c Liam R. Howlett 2022-09-06  3863  	/* Stop spanning searches by searching for just index. */
54a611b605901c Liam R. Howlett 2022-09-06  3864  	l_mas.index = l_mas.last = mas->index;
54a611b605901c Liam R. Howlett 2022-09-06  3865  
54a611b605901c Liam R. Howlett 2022-09-06  3866  	mast.bn = &b_node;
54a611b605901c Liam R. Howlett 2022-09-06  3867  	mast.orig_l = &l_mas;
54a611b605901c Liam R. Howlett 2022-09-06  3868  	mast.orig_r = &r_mas;
54a611b605901c Liam R. Howlett 2022-09-06  3869  	/* Combine l_mas and r_mas and split them up evenly again. */
54a611b605901c Liam R. Howlett 2022-09-06  3870  	return mas_spanning_rebalance(mas, &mast, height + 1);
54a611b605901c Liam R. Howlett 2022-09-06  3871  }
54a611b605901c Liam R. Howlett 2022-09-06  3872  

:::::: The code at line 3783 was first introduced by commit
:::::: 54a611b605901c7d5d05b6b8f5d04a6ceb0962aa Maple Tree: add new data structure

:::::: TO: Liam R. Howlett <Liam.Howlett@Oracle.com>
:::::: CC: Andrew Morton <akpm@linux-foundation.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


                 reply	other threads:[~2025-08-06  5:15 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=202508060727.LX1lVT66-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=sidhartha.kumar@oracle.com \
    /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.