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>] [day] [month] [year] [list]
Message-ID: <202110080426.iEAAMTTr-lkp@intel.com>
Date:   Fri, 8 Oct 2021 04:14:30 +0800
From:   kernel test robot <lkp@...el.com>
To:     Kanchan Joshi <joshi.k@...sung.com>
Cc:     llvm@...ts.linux.dev, kbuild-all@...ts.01.org,
        linux-kernel@...r.kernel.org, Jens Axboe <axboe@...nel.dk>,
        Anuj Gupta <anuj20.g@...sung.com>
Subject: [axboe-block:nvme-passthru-wip 14/19]
 drivers/nvme/host/ioctl.c:158:5: warning: no previous prototype for function
 'nvme_rq_map_user_fixedb'

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git nvme-passthru-wip
head:   9c18980ac90053bcdb21594eae48935d89bf389c
commit: 2e6a09df7c3f2f4161b9d6aa691f2801b2428eae [14/19] nvme: enable passthrough with fixed-buffer
config: hexagon-randconfig-r045-20211007 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 58b68e70ebf6308f982426a2618782f473218eed)
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/axboe/linux-block.git/commit/?id=2e6a09df7c3f2f4161b9d6aa691f2801b2428eae
        git remote add axboe-block https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
        git fetch --no-tags axboe-block nvme-passthru-wip
        git checkout 2e6a09df7c3f2f4161b9d6aa691f2801b2428eae
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=hexagon 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>

All warnings (new ones prefixed by >>):

>> drivers/nvme/host/ioctl.c:158:5: warning: no previous prototype for function 'nvme_rq_map_user_fixedb' [-Wmissing-prototypes]
   int nvme_rq_map_user_fixedb(struct request_queue *q, struct request *rq,
       ^
   drivers/nvme/host/ioctl.c:158:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   int nvme_rq_map_user_fixedb(struct request_queue *q, struct request *rq,
   ^
   static 
   1 warning generated.


vim +/nvme_rq_map_user_fixedb +158 drivers/nvme/host/ioctl.c

   108	
   109	static void *nvme_add_user_metadata(struct bio *bio, void __user *ubuf,
   110			unsigned len, u32 seed, bool write)
   111	{
   112		struct bio_integrity_payload *bip;
   113		int ret = -ENOMEM;
   114		void *buf;
   115	
   116		buf = kmalloc(len, GFP_KERNEL);
   117		if (!buf)
   118			goto out;
   119	
   120		ret = -EFAULT;
   121		if (write && copy_from_user(buf, ubuf, len))
   122			goto out_free_meta;
   123	
   124		bip = bio_integrity_alloc(bio, GFP_KERNEL, 1);
   125		if (IS_ERR(bip)) {
   126			ret = PTR_ERR(bip);
   127			goto out_free_meta;
   128		}
   129	
   130		bip->bip_iter.bi_size = len;
   131		bip->bip_iter.bi_sector = seed;
   132		ret = bio_integrity_add_page(bio, virt_to_page(buf), len,
   133				offset_in_page(buf));
   134		if (ret == len)
   135			return buf;
   136		ret = -ENOMEM;
   137	out_free_meta:
   138		kfree(buf);
   139	out:
   140		return ERR_PTR(ret);
   141	}
   142	static inline bool nvme_is_fixedb_passthru(struct io_uring_cmd *ioucmd)
   143	{
   144		struct block_uring_cmd *bcmd;
   145	
   146		if (!ioucmd)
   147			return false;
   148		bcmd = (struct block_uring_cmd *)&ioucmd->pdu;
   149		if (bcmd && ((bcmd->ioctl_cmd == NVME_IOCTL_IO_CMD_FIXED) ||
   150					(bcmd->ioctl_cmd == NVME_IOCTL_IO64_CMD_FIXED)))
   151			return true;
   152		return false;
   153	}
   154	/*
   155	 * Unlike blk_rq_map_user () this is only for fixed-buffer async passthrough.
   156	 * And hopefully faster as well.
   157	 */
 > 158	int nvme_rq_map_user_fixedb(struct request_queue *q, struct request *rq,
   159			     void __user *ubuf, unsigned long len, gfp_t gfp_mask,
   160			     struct io_uring_cmd *ioucmd)
   161	{
   162		struct iov_iter iter;
   163		size_t iter_count, nr_segs;
   164		struct bio *bio;
   165		int ret;
   166	
   167		/*
   168		 * Talk to io_uring to obtain BVEC iterator for the buffer.
   169		 * And use that iterator to form bio/request.
   170		 */
   171		ret = io_uring_cmd_import_fixed(ubuf, len, rq_data_dir(rq), &iter,
   172				ioucmd);
   173		if (unlikely(ret < 0))
   174			return ret;
   175		iter_count = iov_iter_count(&iter);
   176		nr_segs = iter.nr_segs;
   177	
   178		if (!iter_count || (iter_count >> 9) > queue_max_hw_sectors(q))
   179			return -EINVAL;
   180		if (nr_segs > queue_max_segments(q))
   181			return -EINVAL;
   182		/* no iovecs to alloc, as we already have a BVEC iterator */
   183		bio = bio_kmalloc(gfp_mask, 0);
   184		if (!bio)
   185			return -ENOMEM;
   186	
   187		bio->bi_opf |= req_op(rq);
   188		ret = bio_iov_iter_get_pages(bio, &iter);
   189		if (ret)
   190			goto out_free;
   191	
   192		blk_rq_bio_prep(rq, bio, nr_segs);
   193		return 0;
   194	
   195	out_free:
   196		bio_release_pages(bio, false);
   197		bio_put(bio);
   198		return ret;
   199	}
   200	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (25202 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ