On Tue, Nov 01, 2022 at 12:45:01PM -0700, Nicolin Chen wrote: > On Tue, Oct 25, 2022 at 03:12:23PM -0300, Jason Gunthorpe wrote: > > > +static int iommufd_vfio_iommu_get_info(struct iommufd_ctx *ictx, > > + void __user *arg) > > > + if (copy_to_user(arg, &info, minsz)) > > + rc = -EFAULT; > > + rc = 0; > > Coverity reports a value overwriting here: > rc gets -EFAULT first then gets overwritten to 0. Indeed, it should be info.cap_offset = sizeof(info); info.argsz = total_cap_size; info.flags |= VFIO_IOMMU_INFO_CAPS; - if (copy_to_user(arg, &info, minsz)) + if (copy_to_user(arg, &info, minsz)) { rc = -EFAULT; + goto out_put; + } rc = 0; Jason