* [luxis1999-iommufd:iommufd-v5.18-rc4-nesting 48/70] drivers/iommu/iommufd/device.c:80:21: sparse: sparse: dubious: !x & y
@ 2022-06-14 0:56 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-06-14 0:56 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7780 bytes --]
::::::
:::::: Manual check reason: "low confidence static check warning: drivers/iommu/iommufd/device.c:80:21: sparse: sparse: dubious: !x & y"
::::::
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
TO: Liu Yi L <yi.l.liu@intel.com>
tree: https://github.com/luxis1999/iommufd iommufd-v5.18-rc4-nesting
head: e642747ca46aa568063964b5b5101e35258ea0d5
commit: d507176b02c1c8113388d7dbac46ac3244453e24 [48/70] iommufd/device: Add iommufd_device_attach_pasid()
:::::: branch date: 17 hours ago
:::::: commit date: 3 weeks ago
config: x86_64-rhel-8.3-kselftests (https://download.01.org/0day-ci/archive/20220614/202206140846.icPRERoE-lkp(a)intel.com/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-30-g92122700-dirty
# https://github.com/luxis1999/iommufd/commit/d507176b02c1c8113388d7dbac46ac3244453e24
git remote add luxis1999-iommufd https://github.com/luxis1999/iommufd
git fetch --no-tags luxis1999-iommufd iommufd-v5.18-rc4-nesting
git checkout d507176b02c1c8113388d7dbac46ac3244453e24
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash drivers/iommu/iommufd/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/iommu/iommufd/device.c:80:21: sparse: sparse: dubious: !x & y
drivers/iommu/iommufd/device.c:109:21: sparse: sparse: dubious: !x & y
vim +80 drivers/iommu/iommufd/device.c
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 41
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 42 /**
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 43 * iommufd_bind_pci_device - Bind a physical device to an iommu fd
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 44 * @fd: iommufd file descriptor.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 45 * @pdev: Pointer to a physical PCI device struct
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 46 * @id: Output ID number to return to userspace for this device
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 47 *
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 48 * A successful bind establishes an ownership over the device and returns
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 49 * struct iommufd_device pointer, otherwise returns error pointer.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 50 *
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 51 * A driver using this API must set driver_managed_dma and must not touch
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 52 * the device until this routine succeeds and establishes ownership.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 53 *
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 54 * Binding a PCI device places the entire RID under iommufd control.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 55 *
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 56 * The caller must undo this with iommufd_unbind_device()
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 57 */
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 58 struct iommufd_device *iommufd_bind_pci_device(int fd, struct pci_dev *pdev,
d507176b02c1c8 Yi Liu 2022-05-13 59 unsigned int flags, u32 *id)
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 60 {
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 61 struct iommufd_device *idev;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 62 struct iommufd_ctx *ictx;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 63 struct iommu_group *group;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 64 int rc;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 65
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 66 ictx = iommufd_fget(fd);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 67 if (!ictx)
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 68 return ERR_PTR(-EINVAL);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 69
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 70 group = iommu_group_get(&pdev->dev);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 71 if (!group) {
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 72 rc = -ENODEV;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 73 goto out_file_put;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 74 }
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 75
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 76 /*
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 77 * FIXME: Use a device-centric iommu api and this won't work with
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 78 * multi-device groups
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 79 */
d507176b02c1c8 Yi Liu 2022-05-13 @80 if ((!flags & IOMMUFD_BIND_FLAGS_BYPASS_DMA_OWNERSHIP)) {
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 81 rc = iommu_group_claim_dma_owner(group, ictx->filp);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 82 if (rc)
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 83 goto out_group_put;
d507176b02c1c8 Yi Liu 2022-05-13 84 }
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 85
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 86 idev = iommufd_object_alloc(ictx, idev, IOMMUFD_OBJ_DEVICE);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 87 if (IS_ERR(idev)) {
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 88 rc = PTR_ERR(idev);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 89 goto out_release_owner;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 90 }
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 91 idev->ictx = ictx;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 92 idev->dev = &pdev->dev;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 93 /* The calling driver is a user until iommufd_unbind_device() */
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 94 refcount_inc(&idev->obj.users);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 95 /* group refcount moves into iommufd_device */
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 96 idev->group = group;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 97
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 98 /*
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 99 * If the caller fails after this success it must call
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 100 * iommufd_unbind_device() which is safe since we hold this refcount.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 101 * This also means the device is a leaf in the graph and no other object
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 102 * can take a reference on it.
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 103 */
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 104 iommufd_object_finalize(ictx, &idev->obj);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 105 *id = idev->obj.id;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 106 return idev;
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 107
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 108 out_release_owner:
d507176b02c1c8 Yi Liu 2022-05-13 109 if ((!flags & IOMMUFD_BIND_FLAGS_BYPASS_DMA_OWNERSHIP))
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 110 iommu_group_release_dma_owner(group);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 111 out_group_put:
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 112 iommu_group_put(group);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 113 out_file_put:
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 114 fput(ictx->filp);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 115 return ERR_PTR(rc);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 116 }
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 117 EXPORT_SYMBOL_GPL(iommufd_bind_pci_device);
a9447b06c53bd3 Jason Gunthorpe 2021-11-11 118
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-06-14 0:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-14 0:56 [luxis1999-iommufd:iommufd-v5.18-rc4-nesting 48/70] drivers/iommu/iommufd/device.c:80:21: sparse: sparse: dubious: !x & y 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.