* 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.