Messages in this thread | | | Date | Thu, 31 Mar 2022 22:01:59 +0800 | From | kernel test robot <> | Subject | [deller-parisc:for-next 2/3] block/blk-map.c:318:17: error: implicit declaration of function 'invalidate_kernel_vmap_range' |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git for-next head: 22fe34a0015587b8b1c7eddbf97752b046c24927 commit: 5753bafd53dc8cdcbf6a3388747e11bc8d634ce1 [2/3] parisc: Implement flush_cache_vmap_vunmap config: parisc-defconfig (https://download.01.org/0day-ci/archive/20220331/202203312108.YiMaVSNd-lkp@intel.com/config) compiler: hppa-linux-gcc (GCC) 11.2.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/deller/parisc-linux.git/commit/?id=5753bafd53dc8cdcbf6a3388747e11bc8d634ce1 git remote add deller-parisc https://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git git fetch --no-tags deller-parisc for-next git checkout 5753bafd53dc8cdcbf6a3388747e11bc8d634ce1 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=parisc SHELL=/bin/bash arch/parisc/kernel/ block/ drivers/md/ sound/core/
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from include/linux/pagemap.h:11, from arch/parisc/kernel/cache.c:19: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/kernel/cache.c:623:6: warning: no previous prototype for 'flush_kernel_vmap_range' [-Wmissing-prototypes] 623 | void flush_kernel_vmap_range(void *vaddr, int size) | ^~~~~~~~~~~~~~~~~~~~~~~ >> arch/parisc/kernel/cache.c:640:6: warning: no previous prototype for 'invalidate_kernel_vmap_range' [-Wmissing-prototypes] 640 | void invalidate_kernel_vmap_range(void *vaddr, int size) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- In file included from arch/parisc/kernel/setup.c:29: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/setup.c:48:13: warning: no previous prototype for 'setup_cmdline' [-Wmissing-prototypes] 48 | void __init setup_cmdline(char **cmdline_p) | ^~~~~~~~~~~~~ arch/parisc/kernel/setup.c:87:13: warning: no previous prototype for 'dma_ops_init' [-Wmissing-prototypes] 87 | void __init dma_ops_init(void) | ^~~~~~~~~~~~ arch/parisc/kernel/setup.c:390:13: warning: no previous prototype for 'start_parisc' [-Wmissing-prototypes] 390 | void __init start_parisc(void) | ^~~~~~~~~~~~ -- In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from include/linux/bvec.h:10, from include/linux/blk_types.h:10, from include/linux/writeback.h:13, from include/linux/memcontrol.h:22, from include/linux/swap.h:9, from arch/parisc/kernel/pdt.c:21: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | -- In file included from arch/parisc/kernel/traps.c:46: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/traps.c:338:6: warning: no previous prototype for 'transfer_pim_to_trap_frame' [-Wmissing-prototypes] 338 | void transfer_pim_to_trap_frame(struct pt_regs *regs) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ arch/parisc/kernel/traps.c:479:14: warning: no previous prototype for 'handle_interruption' [-Wmissing-prototypes] 479 | void notrace handle_interruption(int code, struct pt_regs *regs) | ^~~~~~~~~~~~~~~~~~~ arch/parisc/kernel/traps.c:806:13: warning: no previous prototype for 'initialize_ivt' [-Wmissing-prototypes] 806 | void __init initialize_ivt(const void *iva) | ^~~~~~~~~~~~~~ arch/parisc/kernel/traps.c: In function 'initialize_ivt': arch/parisc/kernel/traps.c:813:14: warning: variable 'hpmcp' set but not used [-Wunused-but-set-variable] 813 | u32 *hpmcp; | ^~~~~ arch/parisc/kernel/traps.c: At top level: arch/parisc/kernel/traps.c:858:14: warning: no previous prototype for 'early_trap_init' [-Wmissing-prototypes] 858 | void __init early_trap_init(void) | ^~~~~~~~~~~~~~~ -- In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from include/linux/bvec.h:10, from include/linux/blk_types.h:10, from include/linux/writeback.h:13, from include/linux/memcontrol.h:22, from include/linux/resume_user_mode.h:8, from arch/parisc/kernel/signal.c:22: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/signal.c:77:1: warning: no previous prototype for 'sys_rt_sigreturn' [-Wmissing-prototypes] 77 | sys_rt_sigreturn(struct pt_regs *regs, int in_syscall) | ^~~~~~~~~~~~~~~~ arch/parisc/kernel/signal.c:581:6: warning: no previous prototype for 'do_notify_resume' [-Wmissing-prototypes] 581 | void do_notify_resume(struct pt_regs *regs, long in_syscall) | ^~~~~~~~~~~~~~~~ -- In file included from arch/parisc/kernel/process.c:50: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/process.c:67:6: warning: no previous prototype for 'machine_restart' [-Wmissing-prototypes] 67 | void machine_restart(char *cmd) | ^~~~~~~~~~~~~~~ arch/parisc/kernel/process.c:105:6: warning: no previous prototype for 'machine_power_off' [-Wmissing-prototypes] 105 | void machine_power_off(void) | ^~~~~~~~~~~~~~~~~ arch/parisc/kernel/process.c:137:6: warning: no previous prototype for 'machine_halt' [-Wmissing-prototypes] 137 | void machine_halt(void) | ^~~~~~~~~~~~ -- In file included from arch/parisc/kernel/smp.c:47: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/smp.c:120:1: warning: no previous prototype for 'ipi_interrupt' [-Wmissing-prototypes] 120 | ipi_interrupt(int irq, void *dev_id) | ^~~~~~~~~~~~~ arch/parisc/kernel/smp.c:311:6: warning: no previous prototype for 'smp_callin' [-Wmissing-prototypes] 311 | void smp_callin(unsigned long pdce_proc) | ^~~~~~~~~~ arch/parisc/kernel/smp.c:518:5: warning: no previous prototype for 'setup_profiling_timer' [-Wmissing-prototypes] 518 | int setup_profiling_timer(unsigned int multiplier) | ^~~~~~~~~~~~~~~~~~~~~ -- In file included from arch/parisc/kernel/pci-dma.c:31: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | arch/parisc/kernel/pci-dma.c:249:1: warning: no previous prototype for 'pcxl_alloc_range' [-Wmissing-prototypes] 249 | pcxl_alloc_range(size_t size) | ^~~~~~~~~~~~~~~~ -- In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from include/linux/bvec.h:10, from include/linux/blk_types.h:10, from include/linux/bio.h:10, from block/blk-map.c:8: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | block/blk-map.c: In function 'bio_invalidate_vmalloc_pages': >> block/blk-map.c:318:17: error: implicit declaration of function 'invalidate_kernel_vmap_range' [-Werror=implicit-function-declaration] 318 | invalidate_kernel_vmap_range(bio->bi_private, len); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ block/blk-map.c: In function 'bio_map_kern': >> block/blk-map.c:356:17: error: implicit declaration of function 'flush_kernel_vmap_range'; did you mean 'flush_kernel_dcache_range'? [-Werror=implicit-function-declaration] 356 | flush_kernel_vmap_range(data, len); | ^~~~~~~~~~~~~~~~~~~~~~~ | flush_kernel_dcache_range cc1: some warnings being treated as errors -- In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from include/linux/bvec.h:10, from include/linux/blk_types.h:10, from include/linux/blkdev.h:9, from include/linux/blk-mq.h:5, from drivers/md/dm-core.h:14, from drivers/md/dm-io.c:8: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | drivers/md/dm-io.c: In function 'complete_io': >> drivers/md/dm-io.c:121:17: error: implicit declaration of function 'invalidate_kernel_vmap_range' [-Werror=implicit-function-declaration] 121 | invalidate_kernel_vmap_range(io->vma_invalidate_address, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/md/dm-io.c: In function 'dp_init': >> drivers/md/dm-io.c:491:17: error: implicit declaration of function 'flush_kernel_vmap_range'; did you mean 'flush_kernel_dcache_range'? [-Werror=implicit-function-declaration] 491 | flush_kernel_vmap_range(io_req->mem.ptr.vma, size); | ^~~~~~~~~~~~~~~~~~~~~~~ | flush_kernel_dcache_range cc1: some warnings being treated as errors -- In file included from include/linux/cacheflush.h:5, from include/linux/highmem.h:8, from sound/core/memalloc.c:13: >> arch/parisc/include/asm/cacheflush.h:44: warning: "flush_cache_vmap" redefined 44 | #define flush_cache_vmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:41: note: this is the location of the previous definition 41 | #define flush_cache_vmap(start, end) flush_cache_vmap_vunmap(start, end) | >> arch/parisc/include/asm/cacheflush.h:45: warning: "flush_cache_vunmap" redefined 45 | #define flush_cache_vunmap(start, end) flush_cache_all() | arch/parisc/include/asm/cacheflush.h:42: note: this is the location of the previous definition 42 | #define flush_cache_vunmap(start, end) flush_cache_vmap_vunmap(start, end) | sound/core/memalloc.c: In function 'snd_dma_noncontig_sync': >> sound/core/memalloc.c:544:17: error: implicit declaration of function 'invalidate_kernel_vmap_range' [-Werror=implicit-function-declaration] 544 | invalidate_kernel_vmap_range(dmab->area, dmab->bytes); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> sound/core/memalloc.c:550:17: error: implicit declaration of function 'flush_kernel_vmap_range'; did you mean 'flush_kernel_dcache_range'? [-Werror=implicit-function-declaration] 550 | flush_kernel_vmap_range(dmab->area, dmab->bytes); | ^~~~~~~~~~~~~~~~~~~~~~~ | flush_kernel_dcache_range cc1: some warnings being treated as errors
vim +/invalidate_kernel_vmap_range +318 block/blk-map.c
130879f1ee0e25 Christoph Hellwig 2020-03-27 309 130879f1ee0e25 Christoph Hellwig 2020-03-27 310 static void bio_invalidate_vmalloc_pages(struct bio *bio) 130879f1ee0e25 Christoph Hellwig 2020-03-27 311 { f358afc52c3066 Christoph Hellwig 2021-09-02 312 #ifdef ARCH_IMPLEMENTS_FLUSH_KERNEL_VMAP_RANGE 130879f1ee0e25 Christoph Hellwig 2020-03-27 313 if (bio->bi_private && !op_is_write(bio_op(bio))) { 130879f1ee0e25 Christoph Hellwig 2020-03-27 314 unsigned long i, len = 0; 130879f1ee0e25 Christoph Hellwig 2020-03-27 315 130879f1ee0e25 Christoph Hellwig 2020-03-27 316 for (i = 0; i < bio->bi_vcnt; i++) 130879f1ee0e25 Christoph Hellwig 2020-03-27 317 len += bio->bi_io_vec[i].bv_len; 130879f1ee0e25 Christoph Hellwig 2020-03-27 @318 invalidate_kernel_vmap_range(bio->bi_private, len); 130879f1ee0e25 Christoph Hellwig 2020-03-27 319 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 320 #endif 130879f1ee0e25 Christoph Hellwig 2020-03-27 321 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 322 130879f1ee0e25 Christoph Hellwig 2020-03-27 323 static void bio_map_kern_endio(struct bio *bio) 130879f1ee0e25 Christoph Hellwig 2020-03-27 324 { 130879f1ee0e25 Christoph Hellwig 2020-03-27 325 bio_invalidate_vmalloc_pages(bio); 130879f1ee0e25 Christoph Hellwig 2020-03-27 326 bio_put(bio); 130879f1ee0e25 Christoph Hellwig 2020-03-27 327 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 328 130879f1ee0e25 Christoph Hellwig 2020-03-27 329 /** 130879f1ee0e25 Christoph Hellwig 2020-03-27 330 * bio_map_kern - map kernel address into bio 130879f1ee0e25 Christoph Hellwig 2020-03-27 331 * @q: the struct request_queue for the bio 130879f1ee0e25 Christoph Hellwig 2020-03-27 332 * @data: pointer to buffer to map 130879f1ee0e25 Christoph Hellwig 2020-03-27 333 * @len: length in bytes 130879f1ee0e25 Christoph Hellwig 2020-03-27 334 * @gfp_mask: allocation flags for bio allocation 130879f1ee0e25 Christoph Hellwig 2020-03-27 335 * 130879f1ee0e25 Christoph Hellwig 2020-03-27 336 * Map the kernel address into a bio suitable for io to a block 130879f1ee0e25 Christoph Hellwig 2020-03-27 337 * device. Returns an error pointer in case of error. 130879f1ee0e25 Christoph Hellwig 2020-03-27 338 */ 130879f1ee0e25 Christoph Hellwig 2020-03-27 339 static struct bio *bio_map_kern(struct request_queue *q, void *data, 130879f1ee0e25 Christoph Hellwig 2020-03-27 340 unsigned int len, gfp_t gfp_mask) 130879f1ee0e25 Christoph Hellwig 2020-03-27 341 { 130879f1ee0e25 Christoph Hellwig 2020-03-27 342 unsigned long kaddr = (unsigned long)data; 130879f1ee0e25 Christoph Hellwig 2020-03-27 343 unsigned long end = (kaddr + len + PAGE_SIZE - 1) >> PAGE_SHIFT; 130879f1ee0e25 Christoph Hellwig 2020-03-27 344 unsigned long start = kaddr >> PAGE_SHIFT; 130879f1ee0e25 Christoph Hellwig 2020-03-27 345 const int nr_pages = end - start; 130879f1ee0e25 Christoph Hellwig 2020-03-27 346 bool is_vmalloc = is_vmalloc_addr(data); 130879f1ee0e25 Christoph Hellwig 2020-03-27 347 struct page *page; 130879f1ee0e25 Christoph Hellwig 2020-03-27 348 int offset, i; 130879f1ee0e25 Christoph Hellwig 2020-03-27 349 struct bio *bio; 130879f1ee0e25 Christoph Hellwig 2020-03-27 350 130879f1ee0e25 Christoph Hellwig 2020-03-27 351 bio = bio_kmalloc(gfp_mask, nr_pages); 130879f1ee0e25 Christoph Hellwig 2020-03-27 352 if (!bio) 130879f1ee0e25 Christoph Hellwig 2020-03-27 353 return ERR_PTR(-ENOMEM); 130879f1ee0e25 Christoph Hellwig 2020-03-27 354 130879f1ee0e25 Christoph Hellwig 2020-03-27 355 if (is_vmalloc) { 130879f1ee0e25 Christoph Hellwig 2020-03-27 @356 flush_kernel_vmap_range(data, len); 130879f1ee0e25 Christoph Hellwig 2020-03-27 357 bio->bi_private = data; 130879f1ee0e25 Christoph Hellwig 2020-03-27 358 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 359 130879f1ee0e25 Christoph Hellwig 2020-03-27 360 offset = offset_in_page(kaddr); 130879f1ee0e25 Christoph Hellwig 2020-03-27 361 for (i = 0; i < nr_pages; i++) { 130879f1ee0e25 Christoph Hellwig 2020-03-27 362 unsigned int bytes = PAGE_SIZE - offset; 130879f1ee0e25 Christoph Hellwig 2020-03-27 363 130879f1ee0e25 Christoph Hellwig 2020-03-27 364 if (len <= 0) 130879f1ee0e25 Christoph Hellwig 2020-03-27 365 break; 130879f1ee0e25 Christoph Hellwig 2020-03-27 366 130879f1ee0e25 Christoph Hellwig 2020-03-27 367 if (bytes > len) 130879f1ee0e25 Christoph Hellwig 2020-03-27 368 bytes = len; 130879f1ee0e25 Christoph Hellwig 2020-03-27 369 130879f1ee0e25 Christoph Hellwig 2020-03-27 370 if (!is_vmalloc) 130879f1ee0e25 Christoph Hellwig 2020-03-27 371 page = virt_to_page(data); 130879f1ee0e25 Christoph Hellwig 2020-03-27 372 else 130879f1ee0e25 Christoph Hellwig 2020-03-27 373 page = vmalloc_to_page(data); 130879f1ee0e25 Christoph Hellwig 2020-03-27 374 if (bio_add_pc_page(q, bio, page, bytes, 130879f1ee0e25 Christoph Hellwig 2020-03-27 375 offset) < bytes) { 130879f1ee0e25 Christoph Hellwig 2020-03-27 376 /* we don't support partial mappings */ 130879f1ee0e25 Christoph Hellwig 2020-03-27 377 bio_put(bio); 130879f1ee0e25 Christoph Hellwig 2020-03-27 378 return ERR_PTR(-EINVAL); 130879f1ee0e25 Christoph Hellwig 2020-03-27 379 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 380 130879f1ee0e25 Christoph Hellwig 2020-03-27 381 data += bytes; 130879f1ee0e25 Christoph Hellwig 2020-03-27 382 len -= bytes; 130879f1ee0e25 Christoph Hellwig 2020-03-27 383 offset = 0; 130879f1ee0e25 Christoph Hellwig 2020-03-27 384 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 385 130879f1ee0e25 Christoph Hellwig 2020-03-27 386 bio->bi_end_io = bio_map_kern_endio; 130879f1ee0e25 Christoph Hellwig 2020-03-27 387 return bio; 130879f1ee0e25 Christoph Hellwig 2020-03-27 388 } 130879f1ee0e25 Christoph Hellwig 2020-03-27 389
:::::: The code at line 318 was first introduced by commit :::::: 130879f1ee0e25b0391b8c78b3baac6fe41f4d38 block: move bio_map_* to blk-map.c
:::::: TO: Christoph Hellwig <hch@lst.de> :::::: CC: Jens Axboe <axboe@kernel.dk>
-- 0-DAY CI Kernel Test Service https://01.org/lkp
| |