linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* drivers/vhost/net.c:1080 get_rx_bufs() error: uninitialized symbol 'len'.
@ 2020-08-07 20:38 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-08-07 20:38 UTC (permalink / raw)
  To: Kees Cook; +Cc: kbuild-all, linux-kernel, Chao Yu, Chao Yu

[-- Attachment #1: Type: text/plain, Size: 6836 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   5631c5e0eb9035d92ceb20fcd9cdb7779a3f5cc7
commit: 3f649ab728cda8038259d8f14492fe400fbab911 treewide: Remove uninitialized_var() usage
date:   3 weeks ago
config: x86_64-randconfig-m031-20200807 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
drivers/vhost/net.c:1080 get_rx_bufs() error: uninitialized symbol 'len'.

vim +/len +1080 drivers/vhost/net.c

03088137246065 Jason Wang         2016-03-04  1018  
8dd014adfea6f1 David Stevens      2010-07-27  1019  /* This is a multi-buffer version of vhost_get_desc, that works if
8dd014adfea6f1 David Stevens      2010-07-27  1020   *	vq has read descriptors only.
8dd014adfea6f1 David Stevens      2010-07-27  1021   * @vq		- the relevant virtqueue
8dd014adfea6f1 David Stevens      2010-07-27  1022   * @datalen	- data length we'll be reading
8dd014adfea6f1 David Stevens      2010-07-27  1023   * @iovcount	- returned count of io vectors we fill
8dd014adfea6f1 David Stevens      2010-07-27  1024   * @log		- vhost log
8dd014adfea6f1 David Stevens      2010-07-27  1025   * @log_num	- log offset
94249369e99302 Jason Wang         2011-01-17  1026   * @quota       - headcount quota, 1 for big buffer
8dd014adfea6f1 David Stevens      2010-07-27  1027   *	returns number of buffer heads allocated, negative on error
8dd014adfea6f1 David Stevens      2010-07-27  1028   */
8dd014adfea6f1 David Stevens      2010-07-27  1029  static int get_rx_bufs(struct vhost_virtqueue *vq,
8dd014adfea6f1 David Stevens      2010-07-27  1030  		       struct vring_used_elem *heads,
8dd014adfea6f1 David Stevens      2010-07-27  1031  		       int datalen,
8dd014adfea6f1 David Stevens      2010-07-27  1032  		       unsigned *iovcount,
8dd014adfea6f1 David Stevens      2010-07-27  1033  		       struct vhost_log *log,
94249369e99302 Jason Wang         2011-01-17  1034  		       unsigned *log_num,
94249369e99302 Jason Wang         2011-01-17  1035  		       unsigned int quota)
8dd014adfea6f1 David Stevens      2010-07-27  1036  {
8dd014adfea6f1 David Stevens      2010-07-27  1037  	unsigned int out, in;
8dd014adfea6f1 David Stevens      2010-07-27  1038  	int seg = 0;
8dd014adfea6f1 David Stevens      2010-07-27  1039  	int headcount = 0;
8dd014adfea6f1 David Stevens      2010-07-27  1040  	unsigned d;
8dd014adfea6f1 David Stevens      2010-07-27  1041  	int r, nlogs = 0;
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1042  	/* len is always initialized before use since we are always called with
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1043  	 * datalen > 0.
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1044  	 */
3f649ab728cda8 Kees Cook          2020-06-03  1045  	u32 len;
8dd014adfea6f1 David Stevens      2010-07-27  1046  
94249369e99302 Jason Wang         2011-01-17  1047  	while (datalen > 0 && headcount < quota) {
e0e9b406470b8d Jason Wang         2010-09-14  1048  		if (unlikely(seg >= UIO_MAXIOV)) {
8dd014adfea6f1 David Stevens      2010-07-27  1049  			r = -ENOBUFS;
8dd014adfea6f1 David Stevens      2010-07-27  1050  			goto err;
8dd014adfea6f1 David Stevens      2010-07-27  1051  		}
47283bef7ed356 Michael S. Tsirkin 2014-06-05  1052  		r = vhost_get_vq_desc(vq, vq->iov + seg,
8dd014adfea6f1 David Stevens      2010-07-27  1053  				      ARRAY_SIZE(vq->iov) - seg, &out,
8dd014adfea6f1 David Stevens      2010-07-27  1054  				      &in, log, log_num);
a39ee449f96a2c Michael S. Tsirkin 2014-03-27  1055  		if (unlikely(r < 0))
a39ee449f96a2c Michael S. Tsirkin 2014-03-27  1056  			goto err;
a39ee449f96a2c Michael S. Tsirkin 2014-03-27  1057  
a39ee449f96a2c Michael S. Tsirkin 2014-03-27  1058  		d = r;
8dd014adfea6f1 David Stevens      2010-07-27  1059  		if (d == vq->num) {
8dd014adfea6f1 David Stevens      2010-07-27  1060  			r = 0;
8dd014adfea6f1 David Stevens      2010-07-27  1061  			goto err;
8dd014adfea6f1 David Stevens      2010-07-27  1062  		}
8dd014adfea6f1 David Stevens      2010-07-27  1063  		if (unlikely(out || in <= 0)) {
8dd014adfea6f1 David Stevens      2010-07-27  1064  			vq_err(vq, "unexpected descriptor format for RX: "
8dd014adfea6f1 David Stevens      2010-07-27  1065  				"out %d, in %d\n", out, in);
8dd014adfea6f1 David Stevens      2010-07-27  1066  			r = -EINVAL;
8dd014adfea6f1 David Stevens      2010-07-27  1067  			goto err;
8dd014adfea6f1 David Stevens      2010-07-27  1068  		}
8dd014adfea6f1 David Stevens      2010-07-27  1069  		if (unlikely(log)) {
8dd014adfea6f1 David Stevens      2010-07-27  1070  			nlogs += *log_num;
8dd014adfea6f1 David Stevens      2010-07-27  1071  			log += *log_num;
8dd014adfea6f1 David Stevens      2010-07-27  1072  		}
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1073  		heads[headcount].id = cpu_to_vhost32(vq, d);
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1074  		len = iov_length(vq->iov + seg, in);
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1075  		heads[headcount].len = cpu_to_vhost32(vq, len);
8b38694a2dc8b1 Michael S. Tsirkin 2014-10-24  1076  		datalen -= len;
8dd014adfea6f1 David Stevens      2010-07-27  1077  		++headcount;
8dd014adfea6f1 David Stevens      2010-07-27  1078  		seg += in;
8dd014adfea6f1 David Stevens      2010-07-27  1079  	}
99975cc6ada0d5 Michael S. Tsirkin 2015-01-07 @1080  	heads[headcount - 1].len = cpu_to_vhost32(vq, len + datalen);
8dd014adfea6f1 David Stevens      2010-07-27  1081  	*iovcount = seg;
8dd014adfea6f1 David Stevens      2010-07-27  1082  	if (unlikely(log))
8dd014adfea6f1 David Stevens      2010-07-27  1083  		*log_num = nlogs;
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1084  
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1085  	/* Detect overrun */
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1086  	if (unlikely(datalen > 0)) {
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1087  		r = UIO_MAXIOV + 1;
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1088  		goto err;
d8316f3991d207 Michael S. Tsirkin 2014-03-27  1089  	}
8dd014adfea6f1 David Stevens      2010-07-27  1090  	return headcount;
8dd014adfea6f1 David Stevens      2010-07-27  1091  err:
8dd014adfea6f1 David Stevens      2010-07-27  1092  	vhost_discard_vq_desc(vq, headcount);
8dd014adfea6f1 David Stevens      2010-07-27  1093  	return r;
8dd014adfea6f1 David Stevens      2010-07-27  1094  }
8dd014adfea6f1 David Stevens      2010-07-27  1095  

:::::: The code at line 1080 was first introduced by commit
:::::: 99975cc6ada0d5f2675e83abecae05aba5f437d2 vhost/net: length miscalculation

:::::: TO: Michael S. Tsirkin <mst@redhat.com>
:::::: CC: Michael S. Tsirkin <mst@redhat.com>

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 31874 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-08-07 20:41 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-07 20:38 drivers/vhost/net.c:1080 get_rx_bufs() error: uninitialized symbol 'len' kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).