lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Wed, 3 Feb 2021 07:30:39 +0800
From:   kernel test robot <lkp@...el.com>
To:     "Liam R. Howlett" <Liam.Howlett@...cle.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        "Matthew Wilcox (Oracle)" <willy@...radead.org>
Subject: [rcu:willy-maple 125/202] lib/maple_tree.c:3273:6: warning: no
 previous prototype for 'mas_is_span_wr'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git willy-maple
head:   7e346d2845b4bd77663394f39fa70456e0084c86
commit: 824aa5e4af0be646da193e90e3383651b93f1c8d [125/202] Maple Tree: Add new data structure
config: alpha-defconfig (attached as .config)
compiler: alpha-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git/commit/?id=824aa5e4af0be646da193e90e3383651b93f1c8d
        git remote add rcu https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
        git fetch --no-tags rcu willy-maple
        git checkout 824aa5e4af0be646da193e90e3383651b93f1c8d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=alpha 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> lib/maple_tree.c:3273:6: warning: no previous prototype for 'mas_is_span_wr' [-Wmissing-prototypes]
    3273 | bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
         |      ^~~~~~~~~~~~~~
>> lib/maple_tree.c:3373:6: warning: no previous prototype for 'mas_wr_walk' [-Wmissing-prototypes]
    3373 | bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
         |      ^~~~~~~~~~~
>> lib/maple_tree.c:5633:5: warning: no previous prototype for 'mtree_store' [-Wmissing-prototypes]
    5633 | int mtree_store(struct maple_tree *mt, unsigned long index, void *entry,
         |     ^~~~~~~~~~~
>> lib/maple_tree.c:5692:5: warning: no previous prototype for 'mtree_alloc_range' [-Wmissing-prototypes]
    5692 | int mtree_alloc_range(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~
>> lib/maple_tree.c:5727:5: warning: no previous prototype for 'mtree_alloc_rrange' [-Wmissing-prototypes]
    5727 | int mtree_alloc_rrange(struct maple_tree *mt, unsigned long *startp,
         |     ^~~~~~~~~~~~~~~~~~
   lib/maple_tree.c:31:28: warning: 'mt_max' defined but not used [-Wunused-const-variable=]
      31 | static const unsigned long mt_max[] = {
         |                            ^~~~~~


vim +/mas_is_span_wr +3273 lib/maple_tree.c

  3259	
  3260	/*
  3261	 * mas_is_span_wr() - Check if the write needs to be treated as a write that
  3262	 * spans the node.
  3263	 * @mas: The maple state
  3264	 * @piv: The pivot value being written
  3265	 * @type: The maple node type
  3266	 * @entry: The data to write
  3267	 *
  3268	 * Spanning writes are writes that start in one node and end in another OR if
  3269	 * the write of a %NULL will cause the node to end with a %NULL.
  3270	 *
  3271	 * Return: True if this is a spanning write, false otherwise.
  3272	 */
> 3273	bool mas_is_span_wr(struct ma_state *mas, unsigned long piv,
  3274					  enum maple_type type, void *entry)
  3275	{
  3276		unsigned long max;
  3277		unsigned long last = mas->last;
  3278	
  3279		if (piv > last) // Contained in this pivot
  3280			return false;
  3281	
  3282		max = mas->max;
  3283		if (unlikely(ma_is_leaf(type))) {
  3284			if (last < max) // Fits in the node, but may span slots.
  3285				return false;
  3286	
  3287			if ((last == max) && entry) // Writes to the end of the node but not null.
  3288				return false;
  3289		} else if ((piv == last) && entry) {
  3290			return false;
  3291		}
  3292	
  3293		/* Writing ULONG_MAX is not a spanning write regardless of the value
  3294		 * being written as long as the range fits in the node.
  3295		 */
  3296		if ((last == ULONG_MAX) && (last == max))
  3297			return false;
  3298	
  3299		trace_mas_is_span_wr(mas, piv, entry);
  3300	
  3301		return true;
  3302	}
  3303	
  3304	/*
  3305	 * mas_node_walk() - Walk a maple node to offset of the index.
  3306	 * @mas: The maple state
  3307	 * @type: The maple node type
  3308	 * @*range_min: Pointer to store the minimum range of the offset
  3309	 * @*range_max: Pointer to store the maximum range of the offset
  3310	 *
  3311	 * The offset will be stored in the maple state.
  3312	 *
  3313	 */
  3314	static inline void mas_node_walk(struct ma_state *mas, enum maple_type type,
  3315			unsigned long *range_min, unsigned long *range_max)
  3316	{
  3317		unsigned long *pivots = ma_pivots(mas_mn(mas), type);
  3318		unsigned char offset, count;
  3319		unsigned long min, max, index;
  3320	
  3321		if (unlikely(ma_is_dense(type))) {
  3322			(*range_max) = (*range_min) = mas->index;
  3323			mas->offset = mas->index = mas->min;
  3324			return;
  3325		}
  3326	
  3327		offset = mas->offset;
  3328		min = mas_safe_min(mas, pivots, offset);
  3329		count = mt_pivots[type];
  3330		if (unlikely(offset == count))
  3331			goto max;
  3332	
  3333		index = mas->index;
  3334		max = pivots[offset];
  3335		if (unlikely(index <= max))
  3336			goto done;
  3337	
  3338		if (unlikely(!max && offset))
  3339			goto max;
  3340	
  3341		offset++;
  3342		min = max + 1;
  3343		while (offset < count) {
  3344			max = pivots[offset];
  3345			if (index <= max)
  3346				goto done;
  3347	
  3348			if (unlikely(!max))
  3349				break;
  3350	
  3351			min = max + 1;
  3352			offset++;
  3353		}
  3354	
  3355	max:
  3356		max = mas->max;
  3357	done:
  3358		*range_max = max;
  3359		*range_min = min;
  3360		mas->offset = offset;
  3361	}
  3362	
  3363	/*
  3364	 * mas_wr_walk(): Walk the tree for a write.
  3365	 * @range_min - pointer that will be set to the minimum of the slot range
  3366	 * @range_max - pointer that will be set to the maximum of the slot range
  3367	 * @entry - the value that will be written.
  3368	 *
  3369	 * Uses mas_slot_locked() and does not need to worry about dead nodes.
  3370	 *
  3371	 * Return: True if it's contained in a node, false on spanning write.
  3372	 */
> 3373	bool mas_wr_walk(struct ma_state *mas, unsigned long *range_min,
  3374			unsigned long *range_max, void *entry)
  3375	{
  3376		enum maple_type type;
  3377	
  3378		while (true) {
  3379			type = mte_node_type(mas->node);
  3380			mas->depth++;
  3381	
  3382			mas_node_walk(mas, type, range_min, range_max);
  3383			if (mas_is_span_wr(mas, *range_max, type, entry))
  3384				return false;
  3385	
  3386			if (ma_is_leaf(type))
  3387				return true;
  3388	
  3389			// Traverse.
  3390			mas->max = *range_max;
  3391			mas->min = *range_min;
  3392			mas->node = mas_slot_locked(mas, ma_slots(mas_mn(mas), type),
  3393					     mas->offset);
  3394			mas->offset = 0;
  3395		}
  3396		return true;
  3397	}
  3398	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (13878 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ