* [akpm-mm:mm-nonmm-unstable 30/33] samples/kfifo/dma-example.c:119:2: warning: variable '__tmp' is uninitialized when used within its own initialization
@ 2024-02-24 18:07 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-02-24 18:07 UTC (permalink / raw)
To: Jiri Slaby (SUSE)
Cc: llvm, oe-kbuild-all, Andrew Morton, Linux Memory Management List
tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-nonmm-unstable
head: 2d9bfd745d675f50d81466645e10fde77e75eea9
commit: a6be92e5510c1505cad39d7b707f78b70eb98725 [30/33] kfifo: introduce and use kfifo_skip_count()
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20240225/202402250254.ZU9AWM30-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240225/202402250254.ZU9AWM30-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/202402250254.ZU9AWM30-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> samples/kfifo/dma-example.c:119:2: warning: variable '__tmp' is uninitialized when used within its own initialization [-Wuninitialized]
119 | kfifo_dma_out_finish(&fifo, ret);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kfifo.h:801:19: note: expanded from macro 'kfifo_dma_out_finish'
801 | kfifo_skip_count(__tmp, (len) / sizeof(*__tmp->type)); \
| ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kfifo.h:312:30: note: expanded from macro 'kfifo_skip_count'
312 | typeof((fifo) + 1) __tmp = (fifo); \
| ~~~~~ ^~~~
1 warning generated.
vim +/__tmp +119 samples/kfifo/dma-example.c
5bf2b19320ec31 Stefani Seibold 2010-08-10 20
5bf2b19320ec31 Stefani Seibold 2010-08-10 21 static int __init example_init(void)
5bf2b19320ec31 Stefani Seibold 2010-08-10 22 {
5bf2b19320ec31 Stefani Seibold 2010-08-10 23 int i;
5bf2b19320ec31 Stefani Seibold 2010-08-10 24 unsigned int ret;
399f1e30ac17b7 Ira W. Snyder 2010-09-30 25 unsigned int nents;
5bf2b19320ec31 Stefani Seibold 2010-08-10 26 struct scatterlist sg[10];
5bf2b19320ec31 Stefani Seibold 2010-08-10 27
5bf2b19320ec31 Stefani Seibold 2010-08-10 28 printk(KERN_INFO "DMA fifo test start\n");
5bf2b19320ec31 Stefani Seibold 2010-08-10 29
5bf2b19320ec31 Stefani Seibold 2010-08-10 30 if (kfifo_alloc(&fifo, FIFO_SIZE, GFP_KERNEL)) {
a25effa4d265eb Andrea Righi 2010-08-19 31 printk(KERN_WARNING "error kfifo_alloc\n");
a25effa4d265eb Andrea Righi 2010-08-19 32 return -ENOMEM;
5bf2b19320ec31 Stefani Seibold 2010-08-10 33 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 34
5bf2b19320ec31 Stefani Seibold 2010-08-10 35 printk(KERN_INFO "queue size: %u\n", kfifo_size(&fifo));
5bf2b19320ec31 Stefani Seibold 2010-08-10 36
5bf2b19320ec31 Stefani Seibold 2010-08-10 37 kfifo_in(&fifo, "test", 4);
5bf2b19320ec31 Stefani Seibold 2010-08-10 38
5bf2b19320ec31 Stefani Seibold 2010-08-10 39 for (i = 0; i != 9; i++)
498d319bb51299 Stefani Seibold 2013-11-14 40 kfifo_put(&fifo, i);
5bf2b19320ec31 Stefani Seibold 2010-08-10 41
5bf2b19320ec31 Stefani Seibold 2010-08-10 42 /* kick away first byte */
a25effa4d265eb Andrea Righi 2010-08-19 43 kfifo_skip(&fifo);
5bf2b19320ec31 Stefani Seibold 2010-08-10 44
5bf2b19320ec31 Stefani Seibold 2010-08-10 45 printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo));
5bf2b19320ec31 Stefani Seibold 2010-08-10 46
a25effa4d265eb Andrea Righi 2010-08-19 47 /*
a25effa4d265eb Andrea Righi 2010-08-19 48 * Configure the kfifo buffer to receive data from DMA input.
a25effa4d265eb Andrea Righi 2010-08-19 49 *
a25effa4d265eb Andrea Righi 2010-08-19 50 * .--------------------------------------.
a25effa4d265eb Andrea Righi 2010-08-19 51 * | 0 | 1 | 2 | ... | 12 | 13 | ... | 31 |
a25effa4d265eb Andrea Righi 2010-08-19 52 * |---|------------------|---------------|
a25effa4d265eb Andrea Righi 2010-08-19 53 * \_/ \________________/ \_____________/
a25effa4d265eb Andrea Righi 2010-08-19 54 * \ \ \
a25effa4d265eb Andrea Righi 2010-08-19 55 * \ \_allocated data \
a25effa4d265eb Andrea Righi 2010-08-19 56 * \_*free space* \_*free space*
a25effa4d265eb Andrea Righi 2010-08-19 57 *
a25effa4d265eb Andrea Righi 2010-08-19 58 * We need two different SG entries: one for the free space area at the
a25effa4d265eb Andrea Righi 2010-08-19 59 * end of the kfifo buffer (19 bytes) and another for the first free
a25effa4d265eb Andrea Righi 2010-08-19 60 * byte at the beginning, after the kfifo_skip().
a25effa4d265eb Andrea Righi 2010-08-19 61 */
7b34d5257a90c4 Andrea Righi 2010-08-19 62 sg_init_table(sg, ARRAY_SIZE(sg));
399f1e30ac17b7 Ira W. Snyder 2010-09-30 63 nents = kfifo_dma_in_prepare(&fifo, sg, ARRAY_SIZE(sg), FIFO_SIZE);
399f1e30ac17b7 Ira W. Snyder 2010-09-30 64 printk(KERN_INFO "DMA sgl entries: %d\n", nents);
399f1e30ac17b7 Ira W. Snyder 2010-09-30 65 if (!nents) {
a25effa4d265eb Andrea Righi 2010-08-19 66 /* fifo is full and no sgl was created */
a25effa4d265eb Andrea Righi 2010-08-19 67 printk(KERN_WARNING "error kfifo_dma_in_prepare\n");
a25effa4d265eb Andrea Righi 2010-08-19 68 return -EIO;
a25effa4d265eb Andrea Righi 2010-08-19 69 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 70
a25effa4d265eb Andrea Righi 2010-08-19 71 /* receive data */
5bf2b19320ec31 Stefani Seibold 2010-08-10 72 printk(KERN_INFO "scatterlist for receive:\n");
399f1e30ac17b7 Ira W. Snyder 2010-09-30 73 for (i = 0; i < nents; i++) {
5bf2b19320ec31 Stefani Seibold 2010-08-10 74 printk(KERN_INFO
5bf2b19320ec31 Stefani Seibold 2010-08-10 75 "sg[%d] -> "
9263969a46fc89 Logan Gunthorpe 2017-07-12 76 "page %p offset 0x%.8x length 0x%.8x\n",
9263969a46fc89 Logan Gunthorpe 2017-07-12 77 i, sg_page(&sg[i]), sg[i].offset, sg[i].length);
5bf2b19320ec31 Stefani Seibold 2010-08-10 78
5bf2b19320ec31 Stefani Seibold 2010-08-10 79 if (sg_is_last(&sg[i]))
5bf2b19320ec31 Stefani Seibold 2010-08-10 80 break;
5bf2b19320ec31 Stefani Seibold 2010-08-10 81 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 82
a25effa4d265eb Andrea Righi 2010-08-19 83 /* put here your code to setup and exectute the dma operation */
5bf2b19320ec31 Stefani Seibold 2010-08-10 84 /* ... */
5bf2b19320ec31 Stefani Seibold 2010-08-10 85
5bf2b19320ec31 Stefani Seibold 2010-08-10 86 /* example: zero bytes received */
5bf2b19320ec31 Stefani Seibold 2010-08-10 87 ret = 0;
5bf2b19320ec31 Stefani Seibold 2010-08-10 88
5bf2b19320ec31 Stefani Seibold 2010-08-10 89 /* finish the dma operation and update the received data */
5bf2b19320ec31 Stefani Seibold 2010-08-10 90 kfifo_dma_in_finish(&fifo, ret);
5bf2b19320ec31 Stefani Seibold 2010-08-10 91
a25effa4d265eb Andrea Righi 2010-08-19 92 /* Prepare to transmit data, example: 8 bytes */
399f1e30ac17b7 Ira W. Snyder 2010-09-30 93 nents = kfifo_dma_out_prepare(&fifo, sg, ARRAY_SIZE(sg), 8);
399f1e30ac17b7 Ira W. Snyder 2010-09-30 94 printk(KERN_INFO "DMA sgl entries: %d\n", nents);
399f1e30ac17b7 Ira W. Snyder 2010-09-30 95 if (!nents) {
a25effa4d265eb Andrea Righi 2010-08-19 96 /* no data was available and no sgl was created */
a25effa4d265eb Andrea Righi 2010-08-19 97 printk(KERN_WARNING "error kfifo_dma_out_prepare\n");
a25effa4d265eb Andrea Righi 2010-08-19 98 return -EIO;
a25effa4d265eb Andrea Righi 2010-08-19 99 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 100
5bf2b19320ec31 Stefani Seibold 2010-08-10 101 printk(KERN_INFO "scatterlist for transmit:\n");
399f1e30ac17b7 Ira W. Snyder 2010-09-30 102 for (i = 0; i < nents; i++) {
5bf2b19320ec31 Stefani Seibold 2010-08-10 103 printk(KERN_INFO
5bf2b19320ec31 Stefani Seibold 2010-08-10 104 "sg[%d] -> "
9263969a46fc89 Logan Gunthorpe 2017-07-12 105 "page %p offset 0x%.8x length 0x%.8x\n",
9263969a46fc89 Logan Gunthorpe 2017-07-12 106 i, sg_page(&sg[i]), sg[i].offset, sg[i].length);
5bf2b19320ec31 Stefani Seibold 2010-08-10 107
5bf2b19320ec31 Stefani Seibold 2010-08-10 108 if (sg_is_last(&sg[i]))
5bf2b19320ec31 Stefani Seibold 2010-08-10 109 break;
5bf2b19320ec31 Stefani Seibold 2010-08-10 110 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 111
a25effa4d265eb Andrea Righi 2010-08-19 112 /* put here your code to setup and exectute the dma operation */
5bf2b19320ec31 Stefani Seibold 2010-08-10 113 /* ... */
5bf2b19320ec31 Stefani Seibold 2010-08-10 114
5bf2b19320ec31 Stefani Seibold 2010-08-10 115 /* example: 5 bytes transmitted */
5bf2b19320ec31 Stefani Seibold 2010-08-10 116 ret = 5;
5bf2b19320ec31 Stefani Seibold 2010-08-10 117
5bf2b19320ec31 Stefani Seibold 2010-08-10 118 /* finish the dma operation and update the transmitted data */
5bf2b19320ec31 Stefani Seibold 2010-08-10 @119 kfifo_dma_out_finish(&fifo, ret);
5bf2b19320ec31 Stefani Seibold 2010-08-10 120
a25effa4d265eb Andrea Righi 2010-08-19 121 ret = kfifo_len(&fifo);
5bf2b19320ec31 Stefani Seibold 2010-08-10 122 printk(KERN_INFO "queue len: %u\n", kfifo_len(&fifo));
5bf2b19320ec31 Stefani Seibold 2010-08-10 123
a25effa4d265eb Andrea Righi 2010-08-19 124 if (ret != 7) {
a25effa4d265eb Andrea Righi 2010-08-19 125 printk(KERN_WARNING "size mismatch: test failed");
a25effa4d265eb Andrea Righi 2010-08-19 126 return -EIO;
a25effa4d265eb Andrea Righi 2010-08-19 127 }
a25effa4d265eb Andrea Righi 2010-08-19 128 printk(KERN_INFO "test passed\n");
a25effa4d265eb Andrea Righi 2010-08-19 129
5bf2b19320ec31 Stefani Seibold 2010-08-10 130 return 0;
5bf2b19320ec31 Stefani Seibold 2010-08-10 131 }
5bf2b19320ec31 Stefani Seibold 2010-08-10 132
:::::: The code at line 119 was first introduced by commit
:::::: 5bf2b19320ec31d094d7370fdf536f7fd91fd799 kfifo: add example files to the kernel sample directory
:::::: TO: Stefani Seibold <stefani@seibold.net>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-02-24 18:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-02-24 18:07 [akpm-mm:mm-nonmm-unstable 30/33] samples/kfifo/dma-example.c:119:2: warning: variable '__tmp' is uninitialized when used within its own initialization kernel test robot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox