Re: [PATCH 1/2] dma-buf: heaps: DMA_HEAP_IOCTL_ALLOC_READ_FILE framework
From: kernel test robot
Date: Sat Jul 13 2024 - 06:34:48 EST
Hi Huan,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 523b23f0bee3014a7a752c9bb9f5c54f0eddae88]
url: https://github.com/intel-lab-lkp/linux/commits/Huan-Yang/dma-buf-heaps-DMA_HEAP_IOCTL_ALLOC_READ_FILE-framework/20240711-155902
base: 523b23f0bee3014a7a752c9bb9f5c54f0eddae88
patch link: https://lore.kernel.org/r/20240711074221.459589-2-link%40vivo.com
patch subject: [PATCH 1/2] dma-buf: heaps: DMA_HEAP_IOCTL_ALLOC_READ_FILE framework
config: i386-buildonly-randconfig-002-20240713 (https://download.01.org/0day-ci/archive/20240713/202407131825.A44mFGu1-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240713/202407131825.A44mFGu1-lkp@xxxxxxxxx/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@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407131825.A44mFGu1-lkp@xxxxxxxxx/
All warnings (new ones prefixed by >>):
>> drivers/dma-buf/dma-heap.c:293:18: warning: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Wformat]
292 | pr_err("failed to use buffer kernel_read_file %s, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zd
293 | pathp, err, start, fsz, fsz);
| ^~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
>> drivers/dma-buf/dma-heap.c:293:23: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
292 | pr_err("failed to use buffer kernel_read_file %s, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zu
293 | pathp, err, start, fsz, fsz);
| ^~~~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:293:30: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
292 | pr_err("failed to use buffer kernel_read_file %s, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zu
293 | pathp, err, start, fsz, fsz);
| ^~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:293:35: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
292 | pr_err("failed to use buffer kernel_read_file %s, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zu
293 | pathp, err, start, fsz, fsz);
| ^~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:367:10: warning: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Wformat]
366 | pr_err("use kernel_read_file, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zd
367 | err, start, (start + size), heap_file->fsz);
| ^~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:367:15: warning: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Wformat]
366 | pr_err("use kernel_read_file, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zd
367 | err, start, (start + size), heap_file->fsz);
| ^~~~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:367:22: warning: format specifies type 'long' but the argument has type 'ssize_t' (aka 'int') [-Wformat]
366 | pr_err("use kernel_read_file, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zd
367 | err, start, (start + size), heap_file->fsz);
| ^~~~~~~~~~~~~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:462:19: note: expanded from macro 'printk_index_wrap'
462 | _p_func(_fmt, ##__VA_ARGS__); \
| ~~~~ ^~~~~~~~~~~
drivers/dma-buf/dma-heap.c:367:38: warning: format specifies type 'long' but the argument has type 'size_t' (aka 'unsigned int') [-Wformat]
366 | pr_err("use kernel_read_file, err=%ld, [%ld, %ld], f_sz=%ld\n",
| ~~~
| %zu
367 | err, start, (start + size), heap_file->fsz);
| ^~~~~~~~~~~~~~
include/linux/printk.h:533:33: note: expanded from macro 'pr_err'
533 | printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^~~~~~~~~~~
include/linux/printk.h:490:60: note: expanded from macro 'printk'
490 | #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
vim +293 drivers/dma-buf/dma-heap.c
239
240 int dma_heap_submit_file_read(struct dma_heap_file_task *heap_ftask)
241 {
242 struct dma_heap_file_work *heap_fwork = init_file_work(heap_ftask);
243 struct page *last = NULL;
244 struct dma_heap_file *heap_file = heap_ftask->heap_file;
245 size_t start = heap_ftask->roffset;
246 struct file *file = heap_file->file;
247 size_t fsz = heap_file->fsz;
248
249 if (unlikely(!heap_fwork))
250 return -ENOMEM;
251
252 /**
253 * If file size is not page aligned, direct io can't process the tail.
254 * So, if reach to tail, remain the last page use buffer read.
255 */
256 if (heap_file->direct && start + heap_ftask->rsize > fsz) {
257 heap_fwork->need_size -= PAGE_SIZE;
258 last = heap_ftask->parray[heap_ftask->pindex - 1];
259 }
260
261 spin_lock(&heap_fctl->lock);
262 list_add_tail(&heap_fwork->list, &heap_fctl->works);
263 spin_unlock(&heap_fctl->lock);
264 atomic_inc(&heap_fctl->nr_work);
265
266 wake_up(&heap_fctl->threadwq);
267
268 if (last) {
269 char *buf, *pathp;
270 ssize_t err;
271 void *buffer;
272
273 buf = kmalloc(PATH_MAX, GFP_KERNEL);
274 if (unlikely(!buf))
275 return -ENOMEM;
276
277 start = PAGE_ALIGN_DOWN(fsz);
278
279 pathp = file_path(file, buf, PATH_MAX);
280 if (IS_ERR(pathp)) {
281 kfree(buf);
282 return PTR_ERR(pathp);
283 }
284
285 buffer = kmap_local_page(last); // use page's kaddr.
286 err = kernel_read_file_from_path(pathp, start, &buffer,
287 fsz - start, &fsz,
288 READING_POLICY);
289 kunmap_local(buffer);
290 kfree(buf);
291 if (err < 0) {
292 pr_err("failed to use buffer kernel_read_file %s, err=%ld, [%ld, %ld], f_sz=%ld\n",
> 293 pathp, err, start, fsz, fsz);
294
295 return err;
296 }
297 }
298
299 heap_ftask->roffset += heap_ftask->rsize;
300 heap_ftask->rsize = 0;
301 heap_ftask->pindex = 0;
302 heap_ftask->rbatch = min_t(size_t,
303 PAGE_ALIGN(fsz) - heap_ftask->roffset,
304 heap_ftask->rbatch);
305 return 0;
306 }
307
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki