tree:   
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git 
for-next
head:   43323993e68adf32894189c57245a13c2bc2ff91
commit: 43323993e68adf32894189c57245a13c2bc2ff91 [1/1] dm verity: fix crash on 
bufio buffer that was allocated with vmalloc
config: i386-randconfig-x000-201834 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-16) 7.3.0
reproduce:
        git checkout 43323993e68adf32894189c57245a13c2bc2ff91
        # save the attached .config to linux build tree
        make ARCH=i386 

All warnings (new ones prefixed by >>):

   In file included from arch/x86/include/asm/percpu.h:45:0,
                    from arch/x86/include/asm/current.h:6,
                    from include/linux/sched.h:12,
                    from include/linux/blkdev.h:5,
                    from include/linux/dm-bufio.h:12,
                    from drivers/md/dm-verity.h:15,
                    from drivers/md/dm-verity-target.c:17:
   drivers/md/dm-verity-target.c: In function 'verity_hash_update':
   include/linux/kernel.h:845:29: warning: comparison of distinct pointer types 
lacks a cast
      (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                ^
   include/linux/kernel.h:859:4: note: in expansion of macro '__typecheck'
      (__typecheck(x, y) && __no_side_effects(x, y))
       ^~~~~~~~~~~
   include/linux/kernel.h:869:24: note: in expansion of macro '__safe_cmp'
     __builtin_choose_expr(__safe_cmp(x, y), \
                           ^~~~~~~~~~
   include/linux/kernel.h:878:19: note: in expansion of macro '__careful_cmp'
    #define min(x, y) __careful_cmp(x, y, <)
                      ^~~~~~~~~~~~~
>> drivers/md/dm-verity-target.c:109:23: note: in expansion of macro 'min'
       size_t this_step = min(len, PAGE_SIZE - offset_in_page(data));
                          ^~~

vim +/min +109 drivers/md/dm-verity-target.c

    95  
    96  static int verity_hash_update(struct dm_verity *v, struct ahash_request 
*req,
    97                                  const u8 *data, size_t len,
    98                                  struct crypto_wait *wait)
    99  {
   100          struct scatterlist sg;
   101  
   102          if (likely(!is_vmalloc_addr(data))) {
   103                  sg_init_one(&sg, data, len);
   104                  ahash_request_set_crypt(req, &sg, NULL, len);
   105                  return crypto_wait_req(crypto_ahash_update(req), wait);
   106          } else {
   107                  do {
   108                          int r;
 > 109                          size_t this_step = min(len, PAGE_SIZE - 
 > offset_in_page(data));
   110                          flush_kernel_vmap_range((void *)data, 
this_step);
   111                          sg_init_table(&sg, 1);
   112                          sg_set_page(&sg, vmalloc_to_page(data), 
this_step, offset_in_page(data));
   113                          ahash_request_set_crypt(req, &sg, NULL, 
this_step);
   114                          r = crypto_wait_req(crypto_ahash_update(req), 
wait);
   115                          if (unlikely(r))
   116                                  return r;
   117                          data += this_step;
   118                          len -= this_step;
   119                  } while (len);
   120                  return 0;
   121          }
   122  }
   123  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to