mirror of
https://github.com/torvalds/linux.git
synced 2026-10-11 12:58:02 +02:00
iommu/tegra241-cmdqv: Require exactly one Stream ID for a vSID
tegra241_vintf_init_vsid() maps a guest vSID to a single physical Stream ID
taken from master->streams[0], and only warns when the device does not have
exactly one stream. A device with several streams gets only its first one
mapped, so a guest vSID invalidation cannot reach the others' ATC and IOTLB
entries; a device with none makes master->streams a ZERO_SIZE_PTR, read out
of bounds.
Reject the mapping with -EOPNOTSUPP if master->num_streams is not one.
Fixes: 4dc0d12474 ("iommu/tegra241-cmdqv: Add user-space use support")
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
4379610c79
commit
fb292bfc9b
|
|
@ -1260,7 +1260,8 @@ static int tegra241_vintf_init_vsid(struct iommufd_vdevice *vdev)
|
|||
if (virt_sid > FIELD_MAX(VINTF_SID_MATCH_VIRT_SID))
|
||||
return -EINVAL;
|
||||
|
||||
WARN_ON_ONCE(master->num_streams != 1);
|
||||
if (master->num_streams != 1)
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
/* Find an empty pair of SID_REPLACE and SID_MATCH */
|
||||
sidx = ida_alloc_max(&vintf->sids, vintf->cmdqv->num_sids_per_vintf - 1,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user