Re: [linux-next:master 2908/3314] lib/stackdepot.c:544 stack_print() warn: unsigned 'stack->size' is never less than zero.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 18, 2023 at 01:32:47PM -0700, Andrew Morton wrote:
> On Thu, 18 May 2023 23:44:10 +0800 kernel test robot <lkp@xxxxxxxxx> wrote:
> 
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > head:   798d276b39e984345d52b933a900a71fa0815928
> > commit: e435b85a4aea7a82259105d5d8025655460052e1 [2908/3314] mm, page_owner: add page_owner_stacks file to print out only stacks and their counte
> > config: x86_64-randconfig-m001
> > compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
> > 
> > If you fix the issue, kindly add following tag where applicable
> > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202305182345.LTMlWG84-lkp@xxxxxxxxx/
> > 
> > smatch warnings:
> > lib/stackdepot.c:544 stack_print() warn: unsigned 'stack->size' is never less than zero.
> > 
> 
> Linus would complain about that warning.
> 

Yeah.  I hadn't intended that warning to be printed.  It's supposed
to check for if the check for negatives is paired with an upper bound
check.  That Smatch check is original vintage from 2009 so it's due for
a re-write.

> > 
> >    537	
> >    538	int stack_print(struct seq_file *m, void *v)
> >    539	{
> >    540		char *buf;
> >    541		int ret = 0;
> >    542		struct stack_record *stack = v;
> >    543	
> >  > 544		if (!stack->size || stack->size < 0 ||
> >    545		    stack->size > PAGE_SIZE || stack->handle.valid != 1 ||
> >    546		    refcount_read(&stack->count) < 1)
> 
> How about <=?

It doesn't really solve the problem.  Smatch complains about that too.
I'll fix the Smatch check.

regards,
dan carpenter





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux