All of lore.kernel.org
 help / color / mirror / Atom feed
* [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)'
@ 2021-02-17 16:20 kernel test robot
  2021-02-19  7:32 ` Ardelean, Alexandru
  2021-02-19  7:32 ` Ardelean, Alexandru
  0 siblings, 2 replies; 3+ messages in thread
From: kernel test robot @ 2021-02-17 16:20 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3213 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git testing
head:   0fd146b288591a8139220fec417dfc5652820480
commit: b9ad66ba4db6f349aa795ed59c3e42d4208844fa [47/53] iio: buffer-dma: Add mmap support
config: x86_64-randconfig-m001-20210215 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)'
drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)'

vim +669 drivers/iio/buffer/industrialio-buffer-dma.c

   603	
   604	int iio_dma_buffer_alloc_blocks(struct iio_buffer *buffer,
   605					struct iio_buffer_block_alloc_req *req)
   606	{
   607		struct iio_dma_buffer_queue *queue = iio_buffer_to_queue(buffer);
   608		struct iio_dma_buffer_block **blocks;
   609		unsigned int num_blocks;
   610		unsigned int i;
   611		int ret = 0;
   612	
   613		mutex_lock(&queue->lock);
   614	
   615		/*
   616		 * If the buffer is enabled and in fileio mode new blocks can't be
   617		 * allocated.
   618		 */
   619		if (queue->fileio.enabled) {
   620			ret = -EBUSY;
   621			goto err_unlock;
   622		}
   623	
   624		/* Free memory that might be in use for fileio mode */
   625		iio_dma_buffer_fileio_free(queue);
   626	
   627		/* 64 blocks ought to be enough for anybody ;) */
   628		if (req->count > 64 - queue->num_blocks)
   629			req->count = 64 - queue->num_blocks;
   630		if (req->size > iio_dma_buffer_max_block_size)
   631			req->size = iio_dma_buffer_max_block_size;
   632	
   633		req->id = queue->num_blocks;
   634	
   635		if (req->count == 0 || req->size == 0) {
   636			ret = 0;
   637			goto err_unlock;
   638		}
   639	
   640		num_blocks = req->count + queue->num_blocks;
   641	
   642		blocks = krealloc(queue->blocks, sizeof(*blocks) * num_blocks,
   643				  GFP_KERNEL);
   644		if (!blocks) {
   645			ret = -ENOMEM;
   646			goto err_unlock;
   647		}
   648	
   649		for (i = queue->num_blocks; i < num_blocks; i++) {
   650			blocks[i] = iio_dma_buffer_alloc_block(queue, req->size);
   651			if (!blocks[i]) {
   652				ret = -ENOMEM;
   653				goto err_unwind;
   654			}
   655			blocks[i]->block.id = i;
   656			blocks[i]->block.data.offset = queue->max_offset;
   657			queue->max_offset += PAGE_ALIGN(req->size);
   658		}
   659	
   660		req->count = i - queue->num_blocks;
   661		queue->num_blocks = i;
   662		queue->blocks = blocks;
   663	
   664		mutex_unlock(&queue->lock);
   665	
   666		return 0;
   667	
   668	err_unwind:
 > 669		for (; i >= 0; i--)
   670			iio_buffer_block_put(blocks[i]);
   671		kfree(blocks);
   672	err_unlock:
   673		mutex_unlock(&queue->lock);
   674	
   675		return ret;
   676	}
   677	EXPORT_SYMBOL_GPL(iio_dma_buffer_alloc_blocks);
   678	

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 31029 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)'
  2021-02-17 16:20 [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)' kernel test robot
  2021-02-19  7:32 ` Ardelean, Alexandru
@ 2021-02-19  7:32 ` Ardelean, Alexandru
  1 sibling, 0 replies; 3+ messages in thread
From: Ardelean, Alexandru @ 2021-02-19  7:32 UTC (permalink / raw)
  To: kernel test robot, Lars-Peter Clausen
  Cc: kbuild-all, Jonathan Cameron, linux-iio



> -----Original Message-----
> From: kernel test robot <lkp@intel.com>
> Sent: Wednesday, February 17, 2021 6:21 PM
> To: Lars-Peter Clausen <lars@metafoo.de>
> Cc: kbuild-all@lists.01.org; Jonathan Cameron
> <Jonathan.Cameron@huawei.com>; Ardelean, Alexandru
> <alexandru.Ardelean@analog.com>
> Subject: [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669
> iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-
> u32max >= 0)'
> 
> [External]
> 
> tree:
> https://urldefense.com/v3/__https://git.kernel.org/pub/scm/linux/kernel/git/jic
> 23/iio.git__;!!A3Ni8CS0y2Y!r0vJx0FTiLi3bS6LugAUkUV4m4kSgQvuRql4XvRJBxLk
> EhqwktjO1ekJmXEVppxQ7ZPMsA$  testing
> head:   0fd146b288591a8139220fec417dfc5652820480
> commit: b9ad66ba4db6f349aa795ed59c3e42d4208844fa [47/53] iio: buffer-
> dma: Add mmap support
> config: x86_64-randconfig-m001-20210215 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> smatch warnings:
> drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks()
> warn: always true condition '(i >= 0) => (0-u32max >= 0)'
> drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks()
> warn: always true condition '(i >= 0) => (0-u32max >= 0)'
> 
> vim +669 drivers/iio/buffer/industrialio-buffer-dma.c
> 
>    603
>    604	int iio_dma_buffer_alloc_blocks(struct iio_buffer *buffer,
>    605					struct iio_buffer_block_alloc_req *req)
>    606	{
>    607		struct iio_dma_buffer_queue *queue =
> iio_buffer_to_queue(buffer);
>    608		struct iio_dma_buffer_block **blocks;
>    609		unsigned int num_blocks;
>    610		unsigned int i;
>    611		int ret = 0;
>    612
>    613		mutex_lock(&queue->lock);
>    614
>    615		/*
>    616		 * If the buffer is enabled and in fileio mode new blocks can't be
>    617		 * allocated.
>    618		 */
>    619		if (queue->fileio.enabled) {
>    620			ret = -EBUSY;
>    621			goto err_unlock;
>    622		}
>    623
>    624		/* Free memory that might be in use for fileio mode */
>    625		iio_dma_buffer_fileio_free(queue);
>    626
>    627		/* 64 blocks ought to be enough for anybody ;) */
>    628		if (req->count > 64 - queue->num_blocks)
>    629			req->count = 64 - queue->num_blocks;
>    630		if (req->size > iio_dma_buffer_max_block_size)
>    631			req->size = iio_dma_buffer_max_block_size;
>    632
>    633		req->id = queue->num_blocks;
>    634
>    635		if (req->count == 0 || req->size == 0) {
>    636			ret = 0;
>    637			goto err_unlock;
>    638		}
>    639
>    640		num_blocks = req->count + queue->num_blocks;
>    641
>    642		blocks = krealloc(queue->blocks, sizeof(*blocks) * num_blocks,
>    643				  GFP_KERNEL);
>    644		if (!blocks) {
>    645			ret = -ENOMEM;
>    646			goto err_unlock;
>    647		}
>    648
>    649		for (i = queue->num_blocks; i < num_blocks; i++) {
>    650			blocks[i] = iio_dma_buffer_alloc_block(queue, req-
> >size);
>    651			if (!blocks[i]) {
>    652				ret = -ENOMEM;
>    653				goto err_unwind;
>    654			}
>    655			blocks[i]->block.id = i;
>    656			blocks[i]->block.data.offset = queue->max_offset;
>    657			queue->max_offset += PAGE_ALIGN(req->size);
>    658		}
>    659
>    660		req->count = i - queue->num_blocks;
>    661		queue->num_blocks = i;
>    662		queue->blocks = blocks;
>    663
>    664		mutex_unlock(&queue->lock);
>    665
>    666		return 0;
>    667
>    668	err_unwind:
>  > 669		for (; i >= 0; i--)

Oh crap.
This is actually serious.
Will fix this

>    670			iio_buffer_block_put(blocks[i]);
>    671		kfree(blocks);
>    672	err_unlock:
>    673		mutex_unlock(&queue->lock);
>    674
>    675		return ret;
>    676	}
>    677	EXPORT_SYMBOL_GPL(iio_dma_buffer_alloc_blocks);
>    678
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://urldefense.com/v3/__https://lists.01.org/hyperkitty/list/kbuild-
> all@lists.01.org__;!!A3Ni8CS0y2Y!r0vJx0FTiLi3bS6LugAUkUV4m4kSgQvuRql4Xv
> RJBxLkEhqwktjO1ekJmXEVppzqskxNkQ$

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)'
  2021-02-17 16:20 [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)' kernel test robot
@ 2021-02-19  7:32 ` Ardelean, Alexandru
  2021-02-19  7:32 ` Ardelean, Alexandru
  1 sibling, 0 replies; 3+ messages in thread
From: Ardelean, Alexandru @ 2021-02-19  7:32 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 4213 bytes --]



> -----Original Message-----
> From: kernel test robot <lkp@intel.com>
> Sent: Wednesday, February 17, 2021 6:21 PM
> To: Lars-Peter Clausen <lars@metafoo.de>
> Cc: kbuild-all(a)lists.01.org; Jonathan Cameron
> <Jonathan.Cameron@huawei.com>; Ardelean, Alexandru
> <alexandru.Ardelean@analog.com>
> Subject: [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669
> iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-
> u32max >= 0)'
> 
> [External]
> 
> tree:
> https://urldefense.com/v3/__https://git.kernel.org/pub/scm/linux/kernel/git/jic
> 23/iio.git__;!!A3Ni8CS0y2Y!r0vJx0FTiLi3bS6LugAUkUV4m4kSgQvuRql4XvRJBxLk
> EhqwktjO1ekJmXEVppxQ7ZPMsA$  testing
> head:   0fd146b288591a8139220fec417dfc5652820480
> commit: b9ad66ba4db6f349aa795ed59c3e42d4208844fa [47/53] iio: buffer-
> dma: Add mmap support
> config: x86_64-randconfig-m001-20210215 (attached as .config)
> compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
> 
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> 
> smatch warnings:
> drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks()
> warn: always true condition '(i >= 0) => (0-u32max >= 0)'
> drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks()
> warn: always true condition '(i >= 0) => (0-u32max >= 0)'
> 
> vim +669 drivers/iio/buffer/industrialio-buffer-dma.c
> 
>    603
>    604	int iio_dma_buffer_alloc_blocks(struct iio_buffer *buffer,
>    605					struct iio_buffer_block_alloc_req *req)
>    606	{
>    607		struct iio_dma_buffer_queue *queue =
> iio_buffer_to_queue(buffer);
>    608		struct iio_dma_buffer_block **blocks;
>    609		unsigned int num_blocks;
>    610		unsigned int i;
>    611		int ret = 0;
>    612
>    613		mutex_lock(&queue->lock);
>    614
>    615		/*
>    616		 * If the buffer is enabled and in fileio mode new blocks can't be
>    617		 * allocated.
>    618		 */
>    619		if (queue->fileio.enabled) {
>    620			ret = -EBUSY;
>    621			goto err_unlock;
>    622		}
>    623
>    624		/* Free memory that might be in use for fileio mode */
>    625		iio_dma_buffer_fileio_free(queue);
>    626
>    627		/* 64 blocks ought to be enough for anybody ;) */
>    628		if (req->count > 64 - queue->num_blocks)
>    629			req->count = 64 - queue->num_blocks;
>    630		if (req->size > iio_dma_buffer_max_block_size)
>    631			req->size = iio_dma_buffer_max_block_size;
>    632
>    633		req->id = queue->num_blocks;
>    634
>    635		if (req->count == 0 || req->size == 0) {
>    636			ret = 0;
>    637			goto err_unlock;
>    638		}
>    639
>    640		num_blocks = req->count + queue->num_blocks;
>    641
>    642		blocks = krealloc(queue->blocks, sizeof(*blocks) * num_blocks,
>    643				  GFP_KERNEL);
>    644		if (!blocks) {
>    645			ret = -ENOMEM;
>    646			goto err_unlock;
>    647		}
>    648
>    649		for (i = queue->num_blocks; i < num_blocks; i++) {
>    650			blocks[i] = iio_dma_buffer_alloc_block(queue, req-
> >size);
>    651			if (!blocks[i]) {
>    652				ret = -ENOMEM;
>    653				goto err_unwind;
>    654			}
>    655			blocks[i]->block.id = i;
>    656			blocks[i]->block.data.offset = queue->max_offset;
>    657			queue->max_offset += PAGE_ALIGN(req->size);
>    658		}
>    659
>    660		req->count = i - queue->num_blocks;
>    661		queue->num_blocks = i;
>    662		queue->blocks = blocks;
>    663
>    664		mutex_unlock(&queue->lock);
>    665
>    666		return 0;
>    667
>    668	err_unwind:
>  > 669		for (; i >= 0; i--)

Oh crap.
This is actually serious.
Will fix this

>    670			iio_buffer_block_put(blocks[i]);
>    671		kfree(blocks);
>    672	err_unlock:
>    673		mutex_unlock(&queue->lock);
>    674
>    675		return ret;
>    676	}
>    677	EXPORT_SYMBOL_GPL(iio_dma_buffer_alloc_blocks);
>    678
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://urldefense.com/v3/__https://lists.01.org/hyperkitty/list/kbuild-
> all(a)lists.01.org__;!!A3Ni8CS0y2Y!r0vJx0FTiLi3bS6LugAUkUV4m4kSgQvuRql4Xv
> RJBxLkEhqwktjO1ekJmXEVppzqskxNkQ$

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-02-19  7:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-17 16:20 [iio:testing 47/53] drivers/iio/buffer/industrialio-buffer-dma.c:669 iio_dma_buffer_alloc_blocks() warn: always true condition '(i >= 0) => (0-u32max >= 0)' kernel test robot
2021-02-19  7:32 ` Ardelean, Alexandru
2021-02-19  7:32 ` Ardelean, Alexandru

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.