All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/gpu/drm/i915/gvt/kvmgt.c:1447 intel_vgpu_ioctl() warn: potential spectre issue 'vdev->region'
@ 2020-12-29 12:00 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-12-29 12:00 UTC (permalink / raw)
  To: kbuild

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

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Julian Stecklina <julian.stecklina@cyberus-technology.de>
CC: Zhenyu Wang <zhenyuw@linux.intel.com>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   dea8dcf2a9fa8cc540136a6cd885c3beece16ec3
commit: 06d63c48dd30b968d2a56e3ece02d6b635cf369a drm/i915/gvt: make gvt oblivious of kvmgt data structures
date:   10 months ago
:::::: branch date: 14 hours ago
:::::: commit date: 10 months ago
config: x86_64-randconfig-m031-20201229 (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>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
drivers/gpu/drm/i915/gvt/kvmgt.c:1447 intel_vgpu_ioctl() warn: potential spectre issue 'vdev->region' [r]

Old smatch warnings:
drivers/gpu/drm/i915/gvt/kvmgt.c:1377 intel_vgpu_ioctl() warn: potential spectre issue 'vgpu->cfg_space.bar' [r]

vim +1447 drivers/gpu/drm/i915/gvt/kvmgt.c

659643f7d814321 Jike Song           2016-12-08  1321  
659643f7d814321 Jike Song           2016-12-08  1322  static long intel_vgpu_ioctl(struct mdev_device *mdev, unsigned int cmd,
659643f7d814321 Jike Song           2016-12-08  1323  			     unsigned long arg)
659643f7d814321 Jike Song           2016-12-08  1324  {
659643f7d814321 Jike Song           2016-12-08  1325  	struct intel_vgpu *vgpu = mdev_get_drvdata(mdev);
06d63c48dd30b96 Julian Stecklina    2020-02-17  1326  	struct kvmgt_vdev *vdev = kvmgt_vdev(vgpu);
659643f7d814321 Jike Song           2016-12-08  1327  	unsigned long minsz;
659643f7d814321 Jike Song           2016-12-08  1328  
659643f7d814321 Jike Song           2016-12-08  1329  	gvt_dbg_core("vgpu%d ioctl, cmd: %d\n", vgpu->id, cmd);
659643f7d814321 Jike Song           2016-12-08  1330  
659643f7d814321 Jike Song           2016-12-08  1331  	if (cmd == VFIO_DEVICE_GET_INFO) {
659643f7d814321 Jike Song           2016-12-08  1332  		struct vfio_device_info info;
659643f7d814321 Jike Song           2016-12-08  1333  
659643f7d814321 Jike Song           2016-12-08  1334  		minsz = offsetofend(struct vfio_device_info, num_irqs);
659643f7d814321 Jike Song           2016-12-08  1335  
659643f7d814321 Jike Song           2016-12-08  1336  		if (copy_from_user(&info, (void __user *)arg, minsz))
659643f7d814321 Jike Song           2016-12-08  1337  			return -EFAULT;
659643f7d814321 Jike Song           2016-12-08  1338  
659643f7d814321 Jike Song           2016-12-08  1339  		if (info.argsz < minsz)
659643f7d814321 Jike Song           2016-12-08  1340  			return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1341  
659643f7d814321 Jike Song           2016-12-08  1342  		info.flags = VFIO_DEVICE_FLAGS_PCI;
659643f7d814321 Jike Song           2016-12-08  1343  		info.flags |= VFIO_DEVICE_FLAGS_RESET;
b851adeac0858c7 Tina Zhang          2017-11-20  1344  		info.num_regions = VFIO_PCI_NUM_REGIONS +
06d63c48dd30b96 Julian Stecklina    2020-02-17  1345  				vdev->num_regions;
659643f7d814321 Jike Song           2016-12-08  1346  		info.num_irqs = VFIO_PCI_NUM_IRQS;
659643f7d814321 Jike Song           2016-12-08  1347  
659643f7d814321 Jike Song           2016-12-08  1348  		return copy_to_user((void __user *)arg, &info, minsz) ?
659643f7d814321 Jike Song           2016-12-08  1349  			-EFAULT : 0;
659643f7d814321 Jike Song           2016-12-08  1350  
659643f7d814321 Jike Song           2016-12-08  1351  	} else if (cmd == VFIO_DEVICE_GET_REGION_INFO) {
659643f7d814321 Jike Song           2016-12-08  1352  		struct vfio_region_info info;
659643f7d814321 Jike Song           2016-12-08  1353  		struct vfio_info_cap caps = { .buf = NULL, .size = 0 };
de5372da605d3bc Gustavo A. R. Silva 2018-08-02  1354  		unsigned int i;
de5372da605d3bc Gustavo A. R. Silva 2018-08-02  1355  		int ret;
659643f7d814321 Jike Song           2016-12-08  1356  		struct vfio_region_info_cap_sparse_mmap *sparse = NULL;
659643f7d814321 Jike Song           2016-12-08  1357  		int nr_areas = 1;
659643f7d814321 Jike Song           2016-12-08  1358  		int cap_type_id;
659643f7d814321 Jike Song           2016-12-08  1359  
659643f7d814321 Jike Song           2016-12-08  1360  		minsz = offsetofend(struct vfio_region_info, offset);
659643f7d814321 Jike Song           2016-12-08  1361  
659643f7d814321 Jike Song           2016-12-08  1362  		if (copy_from_user(&info, (void __user *)arg, minsz))
659643f7d814321 Jike Song           2016-12-08  1363  			return -EFAULT;
659643f7d814321 Jike Song           2016-12-08  1364  
659643f7d814321 Jike Song           2016-12-08  1365  		if (info.argsz < minsz)
659643f7d814321 Jike Song           2016-12-08  1366  			return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1367  
659643f7d814321 Jike Song           2016-12-08  1368  		switch (info.index) {
659643f7d814321 Jike Song           2016-12-08  1369  		case VFIO_PCI_CONFIG_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1370  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
02d578e5edd980e Changbin Du         2017-08-23  1371  			info.size = vgpu->gvt->device_info.cfg_space_size;
659643f7d814321 Jike Song           2016-12-08  1372  			info.flags = VFIO_REGION_INFO_FLAG_READ |
659643f7d814321 Jike Song           2016-12-08  1373  				     VFIO_REGION_INFO_FLAG_WRITE;
659643f7d814321 Jike Song           2016-12-08  1374  			break;
659643f7d814321 Jike Song           2016-12-08  1375  		case VFIO_PCI_BAR0_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1376  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
659643f7d814321 Jike Song           2016-12-08  1377  			info.size = vgpu->cfg_space.bar[info.index].size;
659643f7d814321 Jike Song           2016-12-08  1378  			if (!info.size) {
659643f7d814321 Jike Song           2016-12-08  1379  				info.flags = 0;
659643f7d814321 Jike Song           2016-12-08  1380  				break;
659643f7d814321 Jike Song           2016-12-08  1381  			}
659643f7d814321 Jike Song           2016-12-08  1382  
659643f7d814321 Jike Song           2016-12-08  1383  			info.flags = VFIO_REGION_INFO_FLAG_READ |
659643f7d814321 Jike Song           2016-12-08  1384  				     VFIO_REGION_INFO_FLAG_WRITE;
659643f7d814321 Jike Song           2016-12-08  1385  			break;
659643f7d814321 Jike Song           2016-12-08  1386  		case VFIO_PCI_BAR1_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1387  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
659643f7d814321 Jike Song           2016-12-08  1388  			info.size = 0;
659643f7d814321 Jike Song           2016-12-08  1389  			info.flags = 0;
659643f7d814321 Jike Song           2016-12-08  1390  			break;
659643f7d814321 Jike Song           2016-12-08  1391  		case VFIO_PCI_BAR2_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1392  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
659643f7d814321 Jike Song           2016-12-08  1393  			info.flags = VFIO_REGION_INFO_FLAG_CAPS |
659643f7d814321 Jike Song           2016-12-08  1394  					VFIO_REGION_INFO_FLAG_MMAP |
659643f7d814321 Jike Song           2016-12-08  1395  					VFIO_REGION_INFO_FLAG_READ |
659643f7d814321 Jike Song           2016-12-08  1396  					VFIO_REGION_INFO_FLAG_WRITE;
659643f7d814321 Jike Song           2016-12-08  1397  			info.size = gvt_aperture_sz(vgpu->gvt);
659643f7d814321 Jike Song           2016-12-08  1398  
cd3e05836fc6653 Gustavo A. R. Silva 2019-05-24  1399  			sparse = kzalloc(struct_size(sparse, areas, nr_areas),
cd3e05836fc6653 Gustavo A. R. Silva 2019-05-24  1400  					 GFP_KERNEL);
659643f7d814321 Jike Song           2016-12-08  1401  			if (!sparse)
659643f7d814321 Jike Song           2016-12-08  1402  				return -ENOMEM;
659643f7d814321 Jike Song           2016-12-08  1403  
dda01f787df9f9e Alex Williamson     2017-12-12  1404  			sparse->header.id = VFIO_REGION_INFO_CAP_SPARSE_MMAP;
dda01f787df9f9e Alex Williamson     2017-12-12  1405  			sparse->header.version = 1;
659643f7d814321 Jike Song           2016-12-08  1406  			sparse->nr_areas = nr_areas;
659643f7d814321 Jike Song           2016-12-08  1407  			cap_type_id = VFIO_REGION_INFO_CAP_SPARSE_MMAP;
659643f7d814321 Jike Song           2016-12-08  1408  			sparse->areas[0].offset =
659643f7d814321 Jike Song           2016-12-08  1409  					PAGE_ALIGN(vgpu_aperture_offset(vgpu));
659643f7d814321 Jike Song           2016-12-08  1410  			sparse->areas[0].size = vgpu_aperture_sz(vgpu);
659643f7d814321 Jike Song           2016-12-08  1411  			break;
659643f7d814321 Jike Song           2016-12-08  1412  
659643f7d814321 Jike Song           2016-12-08  1413  		case VFIO_PCI_BAR3_REGION_INDEX ... VFIO_PCI_BAR5_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1414  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
659643f7d814321 Jike Song           2016-12-08  1415  			info.size = 0;
659643f7d814321 Jike Song           2016-12-08  1416  			info.flags = 0;
072ec93d50fd4c4 Pei Zhang           2017-12-08  1417  
659643f7d814321 Jike Song           2016-12-08  1418  			gvt_dbg_core("get region info bar:%d\n", info.index);
659643f7d814321 Jike Song           2016-12-08  1419  			break;
659643f7d814321 Jike Song           2016-12-08  1420  
659643f7d814321 Jike Song           2016-12-08  1421  		case VFIO_PCI_ROM_REGION_INDEX:
659643f7d814321 Jike Song           2016-12-08  1422  		case VFIO_PCI_VGA_REGION_INDEX:
072ec93d50fd4c4 Pei Zhang           2017-12-08  1423  			info.offset = VFIO_PCI_INDEX_TO_OFFSET(info.index);
072ec93d50fd4c4 Pei Zhang           2017-12-08  1424  			info.size = 0;
072ec93d50fd4c4 Pei Zhang           2017-12-08  1425  			info.flags = 0;
072ec93d50fd4c4 Pei Zhang           2017-12-08  1426  
659643f7d814321 Jike Song           2016-12-08  1427  			gvt_dbg_core("get region info index:%d\n", info.index);
659643f7d814321 Jike Song           2016-12-08  1428  			break;
659643f7d814321 Jike Song           2016-12-08  1429  		default:
659643f7d814321 Jike Song           2016-12-08  1430  			{
dda01f787df9f9e Alex Williamson     2017-12-12  1431  				struct vfio_region_info_cap_type cap_type = {
dda01f787df9f9e Alex Williamson     2017-12-12  1432  					.header.id = VFIO_REGION_INFO_CAP_TYPE,
dda01f787df9f9e Alex Williamson     2017-12-12  1433  					.header.version = 1 };
659643f7d814321 Jike Song           2016-12-08  1434  
659643f7d814321 Jike Song           2016-12-08  1435  				if (info.index >= VFIO_PCI_NUM_REGIONS +
06d63c48dd30b96 Julian Stecklina    2020-02-17  1436  						vdev->num_regions)
659643f7d814321 Jike Song           2016-12-08  1437  					return -EINVAL;
de5372da605d3bc Gustavo A. R. Silva 2018-08-02  1438  				info.index =
de5372da605d3bc Gustavo A. R. Silva 2018-08-02  1439  					array_index_nospec(info.index,
de5372da605d3bc Gustavo A. R. Silva 2018-08-02  1440  							VFIO_PCI_NUM_REGIONS +
06d63c48dd30b96 Julian Stecklina    2020-02-17  1441  							vdev->num_regions);
659643f7d814321 Jike Song           2016-12-08  1442  
659643f7d814321 Jike Song           2016-12-08  1443  				i = info.index - VFIO_PCI_NUM_REGIONS;
659643f7d814321 Jike Song           2016-12-08  1444  
659643f7d814321 Jike Song           2016-12-08  1445  				info.offset =
659643f7d814321 Jike Song           2016-12-08  1446  					VFIO_PCI_INDEX_TO_OFFSET(info.index);
06d63c48dd30b96 Julian Stecklina    2020-02-17 @1447  				info.size = vdev->region[i].size;
06d63c48dd30b96 Julian Stecklina    2020-02-17  1448  				info.flags = vdev->region[i].flags;
659643f7d814321 Jike Song           2016-12-08  1449  
06d63c48dd30b96 Julian Stecklina    2020-02-17  1450  				cap_type.type = vdev->region[i].type;
06d63c48dd30b96 Julian Stecklina    2020-02-17  1451  				cap_type.subtype = vdev->region[i].subtype;
659643f7d814321 Jike Song           2016-12-08  1452  
659643f7d814321 Jike Song           2016-12-08  1453  				ret = vfio_info_add_capability(&caps,
dda01f787df9f9e Alex Williamson     2017-12-12  1454  							&cap_type.header,
dda01f787df9f9e Alex Williamson     2017-12-12  1455  							sizeof(cap_type));
659643f7d814321 Jike Song           2016-12-08  1456  				if (ret)
659643f7d814321 Jike Song           2016-12-08  1457  					return ret;
659643f7d814321 Jike Song           2016-12-08  1458  			}
659643f7d814321 Jike Song           2016-12-08  1459  		}
659643f7d814321 Jike Song           2016-12-08  1460  
659643f7d814321 Jike Song           2016-12-08  1461  		if ((info.flags & VFIO_REGION_INFO_FLAG_CAPS) && sparse) {
659643f7d814321 Jike Song           2016-12-08  1462  			switch (cap_type_id) {
659643f7d814321 Jike Song           2016-12-08  1463  			case VFIO_REGION_INFO_CAP_SPARSE_MMAP:
659643f7d814321 Jike Song           2016-12-08  1464  				ret = vfio_info_add_capability(&caps,
cd3e05836fc6653 Gustavo A. R. Silva 2019-05-24  1465  					&sparse->header,
cd3e05836fc6653 Gustavo A. R. Silva 2019-05-24  1466  					struct_size(sparse, areas,
cd3e05836fc6653 Gustavo A. R. Silva 2019-05-24  1467  						    sparse->nr_areas));
7590ebb8b456464 Yi Wang             2018-08-08  1468  				if (ret) {
659643f7d814321 Jike Song           2016-12-08  1469  					kfree(sparse);
659643f7d814321 Jike Song           2016-12-08  1470  					return ret;
7590ebb8b456464 Yi Wang             2018-08-08  1471  				}
659643f7d814321 Jike Song           2016-12-08  1472  				break;
659643f7d814321 Jike Song           2016-12-08  1473  			default:
7590ebb8b456464 Yi Wang             2018-08-08  1474  				kfree(sparse);
659643f7d814321 Jike Song           2016-12-08  1475  				return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1476  			}
659643f7d814321 Jike Song           2016-12-08  1477  		}
659643f7d814321 Jike Song           2016-12-08  1478  
659643f7d814321 Jike Song           2016-12-08  1479  		if (caps.size) {
b851adeac0858c7 Tina Zhang          2017-11-20  1480  			info.flags |= VFIO_REGION_INFO_FLAG_CAPS;
659643f7d814321 Jike Song           2016-12-08  1481  			if (info.argsz < sizeof(info) + caps.size) {
659643f7d814321 Jike Song           2016-12-08  1482  				info.argsz = sizeof(info) + caps.size;
659643f7d814321 Jike Song           2016-12-08  1483  				info.cap_offset = 0;
659643f7d814321 Jike Song           2016-12-08  1484  			} else {
659643f7d814321 Jike Song           2016-12-08  1485  				vfio_info_cap_shift(&caps, sizeof(info));
659643f7d814321 Jike Song           2016-12-08  1486  				if (copy_to_user((void __user *)arg +
659643f7d814321 Jike Song           2016-12-08  1487  						  sizeof(info), caps.buf,
659643f7d814321 Jike Song           2016-12-08  1488  						  caps.size)) {
659643f7d814321 Jike Song           2016-12-08  1489  					kfree(caps.buf);
7590ebb8b456464 Yi Wang             2018-08-08  1490  					kfree(sparse);
659643f7d814321 Jike Song           2016-12-08  1491  					return -EFAULT;
659643f7d814321 Jike Song           2016-12-08  1492  				}
659643f7d814321 Jike Song           2016-12-08  1493  				info.cap_offset = sizeof(info);
659643f7d814321 Jike Song           2016-12-08  1494  			}
659643f7d814321 Jike Song           2016-12-08  1495  
659643f7d814321 Jike Song           2016-12-08  1496  			kfree(caps.buf);
659643f7d814321 Jike Song           2016-12-08  1497  		}
659643f7d814321 Jike Song           2016-12-08  1498  
7590ebb8b456464 Yi Wang             2018-08-08  1499  		kfree(sparse);
659643f7d814321 Jike Song           2016-12-08  1500  		return copy_to_user((void __user *)arg, &info, minsz) ?
659643f7d814321 Jike Song           2016-12-08  1501  			-EFAULT : 0;
659643f7d814321 Jike Song           2016-12-08  1502  	} else if (cmd == VFIO_DEVICE_GET_IRQ_INFO) {
659643f7d814321 Jike Song           2016-12-08  1503  		struct vfio_irq_info info;
659643f7d814321 Jike Song           2016-12-08  1504  
659643f7d814321 Jike Song           2016-12-08  1505  		minsz = offsetofend(struct vfio_irq_info, count);
659643f7d814321 Jike Song           2016-12-08  1506  
659643f7d814321 Jike Song           2016-12-08  1507  		if (copy_from_user(&info, (void __user *)arg, minsz))
659643f7d814321 Jike Song           2016-12-08  1508  			return -EFAULT;
659643f7d814321 Jike Song           2016-12-08  1509  
659643f7d814321 Jike Song           2016-12-08  1510  		if (info.argsz < minsz || info.index >= VFIO_PCI_NUM_IRQS)
659643f7d814321 Jike Song           2016-12-08  1511  			return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1512  
659643f7d814321 Jike Song           2016-12-08  1513  		switch (info.index) {
659643f7d814321 Jike Song           2016-12-08  1514  		case VFIO_PCI_INTX_IRQ_INDEX:
659643f7d814321 Jike Song           2016-12-08  1515  		case VFIO_PCI_MSI_IRQ_INDEX:
659643f7d814321 Jike Song           2016-12-08  1516  			break;
659643f7d814321 Jike Song           2016-12-08  1517  		default:
659643f7d814321 Jike Song           2016-12-08  1518  			return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1519  		}
659643f7d814321 Jike Song           2016-12-08  1520  
659643f7d814321 Jike Song           2016-12-08  1521  		info.flags = VFIO_IRQ_INFO_EVENTFD;
659643f7d814321 Jike Song           2016-12-08  1522  
659643f7d814321 Jike Song           2016-12-08  1523  		info.count = intel_vgpu_get_irq_count(vgpu, info.index);
659643f7d814321 Jike Song           2016-12-08  1524  
659643f7d814321 Jike Song           2016-12-08  1525  		if (info.index == VFIO_PCI_INTX_IRQ_INDEX)
659643f7d814321 Jike Song           2016-12-08  1526  			info.flags |= (VFIO_IRQ_INFO_MASKABLE |
659643f7d814321 Jike Song           2016-12-08  1527  				       VFIO_IRQ_INFO_AUTOMASKED);
659643f7d814321 Jike Song           2016-12-08  1528  		else
659643f7d814321 Jike Song           2016-12-08  1529  			info.flags |= VFIO_IRQ_INFO_NORESIZE;
659643f7d814321 Jike Song           2016-12-08  1530  
659643f7d814321 Jike Song           2016-12-08  1531  		return copy_to_user((void __user *)arg, &info, minsz) ?
659643f7d814321 Jike Song           2016-12-08  1532  			-EFAULT : 0;
659643f7d814321 Jike Song           2016-12-08  1533  	} else if (cmd == VFIO_DEVICE_SET_IRQS) {
659643f7d814321 Jike Song           2016-12-08  1534  		struct vfio_irq_set hdr;
659643f7d814321 Jike Song           2016-12-08  1535  		u8 *data = NULL;
659643f7d814321 Jike Song           2016-12-08  1536  		int ret = 0;
659643f7d814321 Jike Song           2016-12-08  1537  		size_t data_size = 0;
659643f7d814321 Jike Song           2016-12-08  1538  
659643f7d814321 Jike Song           2016-12-08  1539  		minsz = offsetofend(struct vfio_irq_set, count);
659643f7d814321 Jike Song           2016-12-08  1540  
659643f7d814321 Jike Song           2016-12-08  1541  		if (copy_from_user(&hdr, (void __user *)arg, minsz))
659643f7d814321 Jike Song           2016-12-08  1542  			return -EFAULT;
659643f7d814321 Jike Song           2016-12-08  1543  
659643f7d814321 Jike Song           2016-12-08  1544  		if (!(hdr.flags & VFIO_IRQ_SET_DATA_NONE)) {
659643f7d814321 Jike Song           2016-12-08  1545  			int max = intel_vgpu_get_irq_count(vgpu, hdr.index);
659643f7d814321 Jike Song           2016-12-08  1546  
659643f7d814321 Jike Song           2016-12-08  1547  			ret = vfio_set_irqs_validate_and_prepare(&hdr, max,
659643f7d814321 Jike Song           2016-12-08  1548  						VFIO_PCI_NUM_IRQS, &data_size);
659643f7d814321 Jike Song           2016-12-08  1549  			if (ret) {
695fbc08d80f93e Tina Zhang          2017-03-10  1550  				gvt_vgpu_err("intel:vfio_set_irqs_validate_and_prepare failed\n");
659643f7d814321 Jike Song           2016-12-08  1551  				return -EINVAL;
659643f7d814321 Jike Song           2016-12-08  1552  			}
659643f7d814321 Jike Song           2016-12-08  1553  			if (data_size) {
659643f7d814321 Jike Song           2016-12-08  1554  				data = memdup_user((void __user *)(arg + minsz),
659643f7d814321 Jike Song           2016-12-08  1555  						   data_size);
659643f7d814321 Jike Song           2016-12-08  1556  				if (IS_ERR(data))
659643f7d814321 Jike Song           2016-12-08  1557  					return PTR_ERR(data);
659643f7d814321 Jike Song           2016-12-08  1558  			}
659643f7d814321 Jike Song           2016-12-08  1559  		}
659643f7d814321 Jike Song           2016-12-08  1560  
659643f7d814321 Jike Song           2016-12-08  1561  		ret = intel_vgpu_set_irqs(vgpu, hdr.flags, hdr.index,
659643f7d814321 Jike Song           2016-12-08  1562  					hdr.start, hdr.count, data);
659643f7d814321 Jike Song           2016-12-08  1563  		kfree(data);
659643f7d814321 Jike Song           2016-12-08  1564  
659643f7d814321 Jike Song           2016-12-08  1565  		return ret;
659643f7d814321 Jike Song           2016-12-08  1566  	} else if (cmd == VFIO_DEVICE_RESET) {
659643f7d814321 Jike Song           2016-12-08  1567  		intel_gvt_ops->vgpu_reset(vgpu);
659643f7d814321 Jike Song           2016-12-08  1568  		return 0;
e546e281d33d1fc Tina Zhang          2017-11-23  1569  	} else if (cmd == VFIO_DEVICE_QUERY_GFX_PLANE) {
e546e281d33d1fc Tina Zhang          2017-11-23  1570  		struct vfio_device_gfx_plane_info dmabuf;
e546e281d33d1fc Tina Zhang          2017-11-23  1571  		int ret = 0;
e546e281d33d1fc Tina Zhang          2017-11-23  1572  
e546e281d33d1fc Tina Zhang          2017-11-23  1573  		minsz = offsetofend(struct vfio_device_gfx_plane_info,
e546e281d33d1fc Tina Zhang          2017-11-23  1574  				    dmabuf_id);
e546e281d33d1fc Tina Zhang          2017-11-23  1575  		if (copy_from_user(&dmabuf, (void __user *)arg, minsz))
e546e281d33d1fc Tina Zhang          2017-11-23  1576  			return -EFAULT;
e546e281d33d1fc Tina Zhang          2017-11-23  1577  		if (dmabuf.argsz < minsz)
e546e281d33d1fc Tina Zhang          2017-11-23  1578  			return -EINVAL;
e546e281d33d1fc Tina Zhang          2017-11-23  1579  
e546e281d33d1fc Tina Zhang          2017-11-23  1580  		ret = intel_gvt_ops->vgpu_query_plane(vgpu, &dmabuf);
e546e281d33d1fc Tina Zhang          2017-11-23  1581  		if (ret != 0)
e546e281d33d1fc Tina Zhang          2017-11-23  1582  			return ret;
e546e281d33d1fc Tina Zhang          2017-11-23  1583  
e546e281d33d1fc Tina Zhang          2017-11-23  1584  		return copy_to_user((void __user *)arg, &dmabuf, minsz) ?
e546e281d33d1fc Tina Zhang          2017-11-23  1585  								-EFAULT : 0;
e546e281d33d1fc Tina Zhang          2017-11-23  1586  	} else if (cmd == VFIO_DEVICE_GET_GFX_DMABUF) {
e546e281d33d1fc Tina Zhang          2017-11-23  1587  		__u32 dmabuf_id;
e546e281d33d1fc Tina Zhang          2017-11-23  1588  		__s32 dmabuf_fd;
e546e281d33d1fc Tina Zhang          2017-11-23  1589  
e546e281d33d1fc Tina Zhang          2017-11-23  1590  		if (get_user(dmabuf_id, (__u32 __user *)arg))
e546e281d33d1fc Tina Zhang          2017-11-23  1591  			return -EFAULT;
e546e281d33d1fc Tina Zhang          2017-11-23  1592  
e546e281d33d1fc Tina Zhang          2017-11-23  1593  		dmabuf_fd = intel_gvt_ops->vgpu_get_dmabuf(vgpu, dmabuf_id);
e546e281d33d1fc Tina Zhang          2017-11-23  1594  		return dmabuf_fd;
e546e281d33d1fc Tina Zhang          2017-11-23  1595  
659643f7d814321 Jike Song           2016-12-08  1596  	}
659643f7d814321 Jike Song           2016-12-08  1597  
9f591ae60e1be02 Gerd Hoffmann       2018-03-21  1598  	return -ENOTTY;
659643f7d814321 Jike Song           2016-12-08  1599  }
659643f7d814321 Jike Song           2016-12-08  1600  

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

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

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

only message in thread, other threads:[~2020-12-29 12:00 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-29 12:00 drivers/gpu/drm/i915/gvt/kvmgt.c:1447 intel_vgpu_ioctl() warn: potential spectre issue 'vdev->region' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.