mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
iommufd: Report unmapped bytes in the error path of iopt_unmap_iova_range
There are callers that read the unmapped bytes even when rc != 0. Thus, do
not forget to report it in the error path too.
Fixes: 8d40205f60 ("iommufd: Add kAPI toward external drivers for kernel access")
Link: https://patch.msgid.link/r/e2b61303bbc008ba1a4e2d7c2a2894749b59fdac.1752126748.git.nicolinc@nvidia.com
Cc: stable@vger.kernel.org
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:
parent
3e2a9811f6
commit
b23e09f999
|
|
@ -743,8 +743,10 @@ static int iopt_unmap_iova_range(struct io_pagetable *iopt, unsigned long start,
|
|||
iommufd_access_notify_unmap(iopt, area_first, length);
|
||||
/* Something is not responding to unmap requests. */
|
||||
tries++;
|
||||
if (WARN_ON(tries > 100))
|
||||
return -EDEADLOCK;
|
||||
if (WARN_ON(tries > 100)) {
|
||||
rc = -EDEADLOCK;
|
||||
goto out_unmapped;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
|
||||
|
|
@ -766,6 +768,7 @@ static int iopt_unmap_iova_range(struct io_pagetable *iopt, unsigned long start,
|
|||
out_unlock_iova:
|
||||
up_write(&iopt->iova_rwsem);
|
||||
up_read(&iopt->domains_rwsem);
|
||||
out_unmapped:
|
||||
if (unmapped)
|
||||
*unmapped = unmapped_bytes;
|
||||
return rc;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user