tree: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-linus head: 17ee7fc85eaa18c413b1947c52d7b928e78bc8b1 commit: 17ee7fc85eaa18c413b1947c52d7b928e78bc8b1 [3/3] fix the copy vs. map logics in blk_rq_map_user_iov() config: i386-randconfig-x003-201614 (attached as .config) reproduce: git checkout 17ee7fc85eaa18c413b1947c52d7b928e78bc8b1 # save the attached .config to linux build tree make ARCH=i386 All warnings (new ones prefixed by >>): block/blk-map.c: In function 'blk_rq_map_user_iov': >> block/blk-map.c:110:20: warning: unused variable 'prv' [-Wunused-variable] struct iovec iov, prv = {.iov_base = NULL, .iov_len = 0}; ^ >> block/blk-map.c:110:15: warning: unused variable 'iov' [-Wunused-variable] struct iovec iov, prv = {.iov_base = NULL, .iov_len = 0}; ^ vim +/prv +110 block/blk-map.c 710027a48 Randy Dunlap 2008-08-19 94 * Data will be mapped directly for zero copy I/O, if possible. Otherwise 86db1e297 Jens Axboe 2008-01-29 95 * a kernel bounce buffer is used. 86db1e297 Jens Axboe 2008-01-29 96 * 710027a48 Randy Dunlap 2008-08-19 97 * A matching blk_rq_unmap_user() must be issued at the end of I/O, while 86db1e297 Jens Axboe 2008-01-29 98 * still in process context. 86db1e297 Jens Axboe 2008-01-29 99 * 86db1e297 Jens Axboe 2008-01-29 100 * Note: The mapped bio may need to be bounced through blk_queue_bounce() 86db1e297 Jens Axboe 2008-01-29 101 * before being submitted to the device, as pages mapped may be out of 86db1e297 Jens Axboe 2008-01-29 102 * reach. It's the callers responsibility to make sure this happens. The 86db1e297 Jens Axboe 2008-01-29 103 * original bio must be passed back in to blk_rq_unmap_user() for proper 86db1e297 Jens Axboe 2008-01-29 104 * unmapping. 86db1e297 Jens Axboe 2008-01-29 105 */ 86db1e297 Jens Axboe 2008-01-29 106 int blk_rq_map_user_iov(struct request_queue *q, struct request *rq, 26e49cfc7 Kent Overstreet 2015-01-18 107 struct rq_map_data *map_data, 26e49cfc7 Kent Overstreet 2015-01-18 108 const struct iov_iter *iter, gfp_t gfp_mask) 86db1e297 Jens Axboe 2008-01-29 109 { 46348456c Sagi Grimberg 2015-09-03 @110 struct iovec iov, prv = {.iov_base = NULL, .iov_len = 0}; 17ee7fc85 Al Viro 2016-04-08 111 bool copy = false; 17ee7fc85 Al Viro 2016-04-08 112 unsigned long align = q->dma_pad_mask | queue_dma_alignment(q); 4d6af73d9 Christoph Hellwig 2016-03-02 113 struct bio *bio = NULL; 4d6af73d9 Christoph Hellwig 2016-03-02 114 struct iov_iter i; 4d6af73d9 Christoph Hellwig 2016-03-02 115 int ret; 86db1e297 Jens Axboe 2008-01-29 116 17ee7fc85 Al Viro 2016-04-08 117 if (map_data) 4d6af73d9 Christoph Hellwig 2016-03-02 118 copy = true; :::::: The code at line 110 was first introduced by commit :::::: 46348456c1791053dcbe5a9e21825b10a3c8a8fb block: Copy a user iovec if it includes gaps :::::: TO: Sagi Grimberg <sagig@xxxxxxxxxxxx> :::::: CC: Jens Axboe <axboe@xxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: Binary data