* [luxis1999-iommufd:iommufd-v5.17-rc6 21/29] drivers/iommu/iommufd/hw_pagetable.c:48:13: warning: Uninitialized variable: hwpt->domain [uninitvar]
@ 2022-04-18 17:31 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-18 17:31 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 6754 bytes --]
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.17-rc6
head: 10674417c235cb4a4caf2202fffb078611441da2
commit: 085c3eb8ff8b6ef7093d9c798b04d5fab76c41ac [21/29] vfio/pci: Add bind_iommufd() support
:::::: branch date: 15 hours ago
:::::: commit date: 4 weeks ago
compiler: sparc-linux-gcc (GCC) 11.2.0
reproduce (cppcheck warning):
# apt-get install cppcheck
git checkout 085c3eb8ff8b6ef7093d9c798b04d5fab76c41ac
cppcheck --quiet --enable=style,performance,portability --template=gcc FILE
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> drivers/iommu/iommufd/hw_pagetable.c:48:13: warning: Uninitialized variable: hwpt->domain [uninitvar]
if (hwpt->domain->ops == dev_iommu_ops(dev)->default_domain_ops) {
^
--
>> drivers/iommu/iommufd/device.c:124:29: warning: Parameter 'group' can be declared with const [constParameter]
struct iommu_group *group)
^
vim +48 drivers/iommu/iommufd/hw_pagetable.c
be2881f40dc8ab Jason Gunthorpe 2021-11-11 24
be2881f40dc8ab Jason Gunthorpe 2021-11-11 25 /*
be2881f40dc8ab Jason Gunthorpe 2021-11-11 26 * When automatically managing the domains we search for a compatible domain in
be2881f40dc8ab Jason Gunthorpe 2021-11-11 27 * the iopt and if one is found use it, otherwise create a new domain.
be2881f40dc8ab Jason Gunthorpe 2021-11-11 28 * Automatic domain selection will never pick a manually created domain.
be2881f40dc8ab Jason Gunthorpe 2021-11-11 29 */
be2881f40dc8ab Jason Gunthorpe 2021-11-11 30 static struct iommufd_hw_pagetable *
be2881f40dc8ab Jason Gunthorpe 2021-11-11 31 iommufd_hw_pagetable_auto_get(struct iommufd_ctx *ictx,
be2881f40dc8ab Jason Gunthorpe 2021-11-11 32 struct iommufd_ioas *ioas, struct device *dev)
be2881f40dc8ab Jason Gunthorpe 2021-11-11 33 {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 34 struct iommufd_hw_pagetable *hwpt;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 35 int rc;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 36
be2881f40dc8ab Jason Gunthorpe 2021-11-11 37 /*
be2881f40dc8ab Jason Gunthorpe 2021-11-11 38 * There is no differentiation when domains are allocated, so any domain
be2881f40dc8ab Jason Gunthorpe 2021-11-11 39 * from the right ops is interchangeable with any other.
be2881f40dc8ab Jason Gunthorpe 2021-11-11 40 */
be2881f40dc8ab Jason Gunthorpe 2021-11-11 41 mutex_lock(&ioas->mutex);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 42 list_for_each_entry (hwpt, &ioas->auto_domains, auto_domains_item) {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 43 /*
be2881f40dc8ab Jason Gunthorpe 2021-11-11 44 * FIXME: We really need an op from the driver to test if a
be2881f40dc8ab Jason Gunthorpe 2021-11-11 45 * device is compatible with a domain. This thing from VFIO
be2881f40dc8ab Jason Gunthorpe 2021-11-11 46 * works sometimes.
be2881f40dc8ab Jason Gunthorpe 2021-11-11 47 */
be2881f40dc8ab Jason Gunthorpe 2021-11-11 @48 if (hwpt->domain->ops == dev_iommu_ops(dev)->default_domain_ops) {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 49 if (refcount_inc_not_zero(&hwpt->obj.users)) {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 50 mutex_unlock(&ioas->mutex);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 51 return hwpt;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 52 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 53 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 54 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 55
be2881f40dc8ab Jason Gunthorpe 2021-11-11 56 hwpt = iommufd_object_alloc(ictx, hwpt, IOMMUFD_OBJ_HW_PAGETABLE);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 57 if (IS_ERR(hwpt)) {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 58 rc = PTR_ERR(hwpt);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 59 goto out_unlock;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 60 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 61
be2881f40dc8ab Jason Gunthorpe 2021-11-11 62 hwpt->domain = iommu_domain_alloc(dev->bus);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 63 if (!hwpt->domain) {
be2881f40dc8ab Jason Gunthorpe 2021-11-11 64 rc = -ENOMEM;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 65 goto out_abort;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 66 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 67
be2881f40dc8ab Jason Gunthorpe 2021-11-11 68 INIT_LIST_HEAD(&hwpt->devices);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 69 mutex_init(&hwpt->devices_lock);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 70 hwpt->ioas = ioas;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 71 /* The calling driver is a user until iommufd_hw_pagetable_put() */
be2881f40dc8ab Jason Gunthorpe 2021-11-11 72 refcount_inc(&ioas->obj.users);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 73
be2881f40dc8ab Jason Gunthorpe 2021-11-11 74 list_add_tail(&hwpt->auto_domains_item, &ioas->auto_domains);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 75 /*
be2881f40dc8ab Jason Gunthorpe 2021-11-11 76 * iommufd_object_finalize() consumes the refcount, get one for the
be2881f40dc8ab Jason Gunthorpe 2021-11-11 77 * caller. This pairs with the first put in
be2881f40dc8ab Jason Gunthorpe 2021-11-11 78 * iommufd_object_destroy_user()
be2881f40dc8ab Jason Gunthorpe 2021-11-11 79 */
be2881f40dc8ab Jason Gunthorpe 2021-11-11 80 refcount_inc(&hwpt->obj.users);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 81 iommufd_object_finalize(ictx, &hwpt->obj);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 82
be2881f40dc8ab Jason Gunthorpe 2021-11-11 83 mutex_unlock(&ioas->mutex);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 84 return hwpt;
be2881f40dc8ab Jason Gunthorpe 2021-11-11 85
be2881f40dc8ab Jason Gunthorpe 2021-11-11 86 out_abort:
be2881f40dc8ab Jason Gunthorpe 2021-11-11 87 iommufd_object_abort(ictx, &hwpt->obj);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 88 out_unlock:
be2881f40dc8ab Jason Gunthorpe 2021-11-11 89 mutex_unlock(&ioas->mutex);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 90 return ERR_PTR(rc);
be2881f40dc8ab Jason Gunthorpe 2021-11-11 91 }
be2881f40dc8ab Jason Gunthorpe 2021-11-11 92
:::::: The code at line 48 was first introduced by commit
:::::: be2881f40dc8ab1549dffa80bdf5f982796a17b9 iommufd: Add a HW pagetable object
:::::: TO: Jason Gunthorpe <jgg@nvidia.com>
:::::: CC: Jason Gunthorpe <jgg@nvidia.com>
--
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-04-18 17:31 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-18 17:31 [luxis1999-iommufd:iommufd-v5.17-rc6 21/29] drivers/iommu/iommufd/hw_pagetable.c:48:13: warning: Uninitialized variable: hwpt->domain [uninitvar] 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.