On 9/11/19 9:22 PM, Mike Snitzer wrote:> > I resolved this and pushed new code, thanks! > Hi Mike, I just saw the report and was about to fix it, but I noticed you have already fixed it. Thanks a lot. I had forgotten to include the header file for vmalloc(), but I saw you used kvmalloc(), which is even better. I took a quick look at the diff and there are a few places that still need fixing: drivers/md/dm-clone-target.c:563: clone->ht = vmalloc(sz *sizeof(struct hash_table_bucket)); drivers/md/dm-clone-target.c:579: vfree(clone->ht); Also, the allocation of cmd->region_map is done with kvmalloc(), but the deallocation is still done with vfree(): drivers/md/dm-clone-metadata.c:597: vfree(cmd->region_map); I will be away from keyboard for the rest of the day, but I will take a closer look at the diff tomorrow and I will send a new version fixing these and any other issues I might find. Thanks, Nikos. > On Wed, Sep 11 2019 at 12:03pm -0400, > kbuild test robot <lkp@xxxxxxxxx> wrote: > >> tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/device-mapper/linux-dm.git for-next >> head: 509818079bf1fefff4ed02d6a1b994e20efc0480 >> commit: 1529a543debdf75fb26e7ecd732da0cc36f78a36 [29/30] dm: add clone target >> config: sparc64-allmodconfig (attached as .config) >> compiler: sparc64-linux-gcc (GCC) 7.4.0 >> reproduce: >> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross >> chmod +x ~/bin/make.cross >> git checkout 1529a543debdf75fb26e7ecd732da0cc36f78a36 >> # save the attached .config to linux build tree >> GCC_VERSION=7.4.0 make.cross ARCH=sparc64 >> >> If you fix the issue, kindly add following tag >> Reported-by: kbuild test robot <lkp@xxxxxxxxx> >> >> All error/warnings (new ones prefixed by >>): >> >> drivers//md/dm-clone-target.c: In function 'hash_table_init': >>>> drivers//md/dm-clone-target.c:563:14: error: implicit declaration of function 'vmalloc'; did you mean 'kmalloc'? [-Werror=implicit-function-declaration] >> clone->ht = vmalloc(sz * sizeof(struct hash_table_bucket)); >> ^~~~~~~ >> kmalloc >>>> drivers//md/dm-clone-target.c:563:12: warning: assignment makes pointer from integer without a cast [-Wint-conversion] >> clone->ht = vmalloc(sz * sizeof(struct hash_table_bucket)); >> ^ >> drivers//md/dm-clone-target.c: In function 'hash_table_exit': >>>> drivers//md/dm-clone-target.c:579:2: error: implicit declaration of function 'vfree'; did you mean 'kfree'? [-Werror=implicit-function-declaration] >> vfree(clone->ht); >> ^~~~~ >> kfree >> cc1: some warnings being treated as errors >> -- >> drivers//md/dm-clone-metadata.c: In function 'dirty_map_init': >>>> drivers//md/dm-clone-metadata.c:466:28: error: implicit declaration of function 'vzalloc'; did you mean 'kvzalloc'? [-Werror=implicit-function-declaration] >> md->dmap[0].dirty_words = vzalloc(bitmap_size(md->nr_words)); >> ^~~~~~~ >> kvzalloc >>>> drivers//md/dm-clone-metadata.c:466:26: warning: assignment makes pointer from integer without a cast [-Wint-conversion] >> md->dmap[0].dirty_words = vzalloc(bitmap_size(md->nr_words)); >> ^ >> drivers//md/dm-clone-metadata.c:474:26: warning: assignment makes pointer from integer without a cast [-Wint-conversion] >> md->dmap[1].dirty_words = vzalloc(bitmap_size(md->nr_words)); >> ^ >>>> drivers//md/dm-clone-metadata.c:478:3: error: implicit declaration of function 'vfree'; did you mean 'kvfree'? [-Werror=implicit-function-declaration] >> vfree(md->dmap[0].dirty_words); >> ^~~~~ >> kvfree >> drivers//md/dm-clone-metadata.c: In function 'dm_clone_metadata_open': >>>> drivers//md/dm-clone-metadata.c:553:19: error: implicit declaration of function 'vmalloc'; did you mean 'kvmalloc'? [-Werror=implicit-function-declaration] >> md->region_map = vmalloc(bitmap_size(md->nr_regions)); >> ^~~~~~~ >> kvmalloc >> drivers//md/dm-clone-metadata.c:553:17: warning: assignment makes pointer from integer without a cast [-Wint-conversion] >> md->region_map = vmalloc(bitmap_size(md->nr_regions)); >> ^ >> cc1: some warnings being treated as errors >> >> vim +563 drivers//md/dm-clone-target.c >> >> 549 >> 550 #define bucket_lock_irqsave(bucket, flags) \ >> 551 spin_lock_irqsave(&(bucket)->lock, flags) >> 552 >> 553 #define bucket_unlock_irqrestore(bucket, flags) \ >> 554 spin_unlock_irqrestore(&(bucket)->lock, flags) >> 555 >> 556 static int hash_table_init(struct clone *clone) >> 557 { >> 558 unsigned int i, sz; >> 559 struct hash_table_bucket *bucket; >> 560 >> 561 sz = 1 << HASH_TABLE_BITS; >> 562 >> > 563 clone->ht = vmalloc(sz * sizeof(struct hash_table_bucket)); >> 564 if (!clone->ht) >> 565 return -ENOMEM; >> 566 >> 567 for (i = 0; i < sz; i++) { >> 568 bucket = clone->ht + i; >> 569 >> 570 INIT_HLIST_HEAD(&bucket->head); >> 571 spin_lock_init(&bucket->lock); >> 572 } >> 573 >> 574 return 0; >> 575 } >> 576 >> 577 static void hash_table_exit(struct clone *clone) >> 578 { >> > 579 vfree(clone->ht); >> 580 } >> 581 >> >> --- >> 0-DAY kernel test infrastructure Open Source Technology Center >> https://lists.01.org/pipermail/kbuild-all Intel Corporation > > -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel