lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 10 Oct 2015 23:34:41 +0800
From:	kbuild test robot <lkp@...el.com>
To:	Ming Lei <tom.leiming@...il.com>
Cc:	kbuild-all@...org, Jens Axboe <axboe@...nel.dk>,
	linux-kernel@...r.kernel.org,
	Christoph Hellwig <hch@...radead.org>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Alexander Viro <viro@...iv.linux.org.uk>,
	Ming Lei <tom.leiming@...il.com>
Subject: Re: [PATCH 2/2] iov_iter: use bvec iterator to implement
 iterate_bvec()

Hi Ming,

[auto build test WARNING on v4.3-rc4 -- if it's inappropriate base, please ignore]

config: x86_64-randconfig-x015-201540 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   lib/iov_iter.c: In function 'copy_to_iter':
   lib/iov_iter.c:61:19: error: storage size of '__bi' isn't known
     struct bvec_iter __bi, __start;   \
                      ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:25: error: storage size of '__start' isn't known
     struct bvec_iter __bi, __start;   \
                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:66:2: error: implicit declaration of function 'for_each_bvec' [-Werror=implicit-function-declaration]
     for_each_bvec(__v, __p, __bi, __start) { \
     ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:66:41: error: expected ';' before '{' token
     for_each_bvec(__v, __p, __bi, __start) { \
                                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:71:2: error: 'else' without a previous 'if'
     else      \
     ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:25: warning: unused variable '__start' [-Wunused-variable]
     struct bvec_iter __bi, __start;   \
                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:19: warning: unused variable '__bi' [-Wunused-variable]
     struct bvec_iter __bi, __start;   \
                      ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
>> lib/iov_iter.c:386:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c: In function 'copy_from_iter':
   lib/iov_iter.c:61:19: error: storage size of '__bi' isn't known
     struct bvec_iter __bi, __start;   \
                      ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:25: error: storage size of '__start' isn't known
     struct bvec_iter __bi, __start;   \
                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:66:41: error: expected ';' before '{' token
     for_each_bvec(__v, __p, __bi, __start) { \
                                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:71:2: error: 'else' without a previous 'if'
     else      \
     ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:25: warning: unused variable '__start' [-Wunused-variable]
     struct bvec_iter __bi, __start;   \
                            ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c:61:19: warning: unused variable '__bi' [-Wunused-variable]
     struct bvec_iter __bi, __start;   \
                      ^
>> lib/iov_iter.c:97:3: note: in expansion of macro 'iterate_bvec'
      iterate_bvec(i, n, v, bvec, skip, (B))  \
      ^
   lib/iov_iter.c:407:2: note: in expansion of macro 'iterate_and_advance'
     iterate_and_advance(i, bytes, v,
     ^
   lib/iov_iter.c: In function 'copy_from_iter_nocache':
   lib/iov_iter.c:61:19: error: storage size of '__bi' isn't known
     struct bvec_iter __bi, __start;   \
                      ^

vim +/iterate_bvec +97 lib/iov_iter.c

a280455f mm/iov_iter.c  Al Viro  2014-11-27   55  		n -= __v.iov_len;			\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   56  	}						\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   57  	n = wanted;					\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   58  }
a280455f mm/iov_iter.c  Al Viro  2014-11-27   59  
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   60  #define iterate_bvec(i, n, __v, __p, skip, STEP) {	\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10  @61  	struct bvec_iter __bi, __start;			\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   62  	__start.bi_size = n;				\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   63  	__start.bi_bvec_done = skip;			\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   64  	__start.bi_idx = 0;				\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   65  	__p = i->bvec;					\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   66  	for_each_bvec(__v, __p, __bi, __start) {	\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   67  		(void)(STEP);				\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   68  	}						\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   69  	if (!__bi.bi_idx)				\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   70  		skip += __v.bv_len;			\
d8853dc1 lib/iov_iter.c Ming Lei 2015-10-10   71  	else						\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   72  		skip = __v.bv_len;			\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   73  }
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   74  
a280455f mm/iov_iter.c  Al Viro  2014-11-27   75  #define iterate_all_kinds(i, n, v, I, B, K) {			\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   76  	size_t skip = i->iov_offset;				\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   77  	if (unlikely(i->type & ITER_BVEC)) {			\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   78  		const struct bio_vec *bvec;			\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   79  		struct bio_vec v;				\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   80  		iterate_bvec(i, n, v, bvec, skip, (B))		\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   81  	} else if (unlikely(i->type & ITER_KVEC)) {		\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   82  		const struct kvec *kvec;			\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   83  		struct kvec v;					\
a280455f mm/iov_iter.c  Al Viro  2014-11-27   84  		iterate_kvec(i, n, v, kvec, skip, (K))		\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   85  	} else {						\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   86  		const struct iovec *iov;			\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   87  		struct iovec v;					\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   88  		iterate_iovec(i, n, v, iov, skip, (I))		\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   89  	}							\
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   90  }
04a31165 mm/iov_iter.c  Al Viro  2014-11-27   91  
a280455f mm/iov_iter.c  Al Viro  2014-11-27   92  #define iterate_and_advance(i, n, v, I, B, K) {			\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   93  	size_t skip = i->iov_offset;				\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   94  	if (unlikely(i->type & ITER_BVEC)) {			\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   95  		const struct bio_vec *bvec;			\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   96  		struct bio_vec v;				\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27  @97  		iterate_bvec(i, n, v, bvec, skip, (B))		\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   98  		if (skip == bvec->bv_len) {			\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27   99  			bvec++;					\
7ce2a91e mm/iov_iter.c  Al Viro  2014-11-27  100  			skip = 0;				\

:::::: The code at line 97 was first introduced by commit
:::::: 7ce2a91e51288f308bfe5ea7e5743517c15c8e25 iov_iter.c: iterate_and_advance

:::::: TO: Al Viro <viro@...iv.linux.org.uk>
:::::: CC: Al Viro <viro@...iv.linux.org.uk>

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

Download attachment ".config.gz" of type "application/octet-stream" (21344 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ