[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <202203312108.YiMaVSNd-lkp@intel.com>
Date: Thu, 31 Mar 2022 22:01:59 +0800
From: kernel test robot <lkp@...el.com>
To: John David Anglin <dave.anglin@...l.net>
Cc: kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
Helge Deller <deller@....de>
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@...el.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@....de>
:::::: CC: Jens Axboe <axboe@...nel.dk>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
Powered by blists - more mailing lists