mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace
@ 2026-07-10 12:29 Peiyang He
  2026-07-13  6:11 ` Tian, Kevin
  2026-07-13 16:53 ` Jason Gunthorpe
  0 siblings, 2 replies; 3+ messages in thread
From: Peiyang He @ 2026-07-10 12:29 UTC (permalink / raw)
  To: jgg, kevin.tian
  Cc: joro, will, iommu, robin.murphy, linux-kernel, stable, nicolinc,
	Peiyang He

iommufd_hwpt_replace_device() calls:

	iommufd_auto_response_faults(hwpt, old_handle);

passing the *new* hwpt together with the handle of
the device's *old* domain. This should be a parameter mismatch:

1. Semantically, iommufd_auto_response_faults(x, handle) scans
   x->fault's deliver list and response xarray for groups matching
   "handle". A group is queued under the hwpt that was attached at
   fault-delivery time. old_handle is fetched *before* the domain switch,
   so its group lives on old->fault, not on the new hwpt->fault.

2. Historically, the first argument was "old". The routine was
   introduced by commit b7d8833677ba ("iommufd: Fault-capable hwpt
   attach/detach/replace") as __fault_domain_replace_dev() in
   fault.c, correctly calling iommufd_auto_response_faults(old, curr).
   Commit fb21b1568ada ("iommufd: Make attach_handle generic than
   fault specific") moved this into iommufd_hwpt_replace_device() in
   device.c and swapped it to "hwpt". This should be a refactor regression,
   not an intentional change.

Fix this by passing "old" instead.

Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn>
Fixes: fb21b1568ada ("iommufd: Make attach_handle generic than fault specific")
Cc: stable@vger.kernel.org
Signed-off-by: Peiyang He <peiyang_he@smail.nju.edu.cn>
---
 drivers/iommu/iommufd/device.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/iommufd/device.c b/drivers/iommu/iommufd/device.c
index 170a7005f0bc..2895e5370910 100644
--- a/drivers/iommu/iommufd/device.c
+++ b/drivers/iommu/iommufd/device.c
@@ -589,7 +589,7 @@ static int iommufd_hwpt_replace_device(struct iommufd_device *idev,
 	if (rc)
 		goto out_free_handle;
 
-	iommufd_auto_response_faults(hwpt, old_handle);
+	iommufd_auto_response_faults(old, old_handle);
 	kfree(old_handle);
 
 	return 0;

base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
-- 
2.43.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace
  2026-07-10 12:29 [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace Peiyang He
@ 2026-07-13  6:11 ` Tian, Kevin
  2026-07-13 16:53 ` Jason Gunthorpe
  1 sibling, 0 replies; 3+ messages in thread
From: Tian, Kevin @ 2026-07-13  6:11 UTC (permalink / raw)
  To: Peiyang He, jgg
  Cc: joro, will, iommu, robin.murphy, linux-kernel, stable, nicolinc

> From: Peiyang He <peiyang_he@smail.nju.edu.cn>
> Sent: Friday, July 10, 2026 8:30 PM
>
> iommufd_hwpt_replace_device() calls:
> 
> 	iommufd_auto_response_faults(hwpt, old_handle);
> 
> passing the *new* hwpt together with the handle of
> the device's *old* domain. This should be a parameter mismatch:
> 
> 1. Semantically, iommufd_auto_response_faults(x, handle) scans
>    x->fault's deliver list and response xarray for groups matching
>    "handle". A group is queued under the hwpt that was attached at
>    fault-delivery time. old_handle is fetched *before* the domain switch,
>    so its group lives on old->fault, not on the new hwpt->fault.
> 
> 2. Historically, the first argument was "old". The routine was
>    introduced by commit b7d8833677ba ("iommufd: Fault-capable hwpt
>    attach/detach/replace") as __fault_domain_replace_dev() in
>    fault.c, correctly calling iommufd_auto_response_faults(old, curr).
>    Commit fb21b1568ada ("iommufd: Make attach_handle generic than
>    fault specific") moved this into iommufd_hwpt_replace_device() in
>    device.c and swapped it to "hwpt". This should be a refactor regression,
>    not an intentional change.
> 
> Fix this by passing "old" instead.
> 
> Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn>

ditto not required.

> Fixes: fb21b1568ada ("iommufd: Make attach_handle generic than fault
> specific")
> Cc: stable@vger.kernel.org
> Signed-off-by: Peiyang He <peiyang_he@smail.nju.edu.cn>

Reviewed-by: Kevin Tian <kevin.tian@intel.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace
  2026-07-10 12:29 [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace Peiyang He
  2026-07-13  6:11 ` Tian, Kevin
@ 2026-07-13 16:53 ` Jason Gunthorpe
  1 sibling, 0 replies; 3+ messages in thread
From: Jason Gunthorpe @ 2026-07-13 16:53 UTC (permalink / raw)
  To: Peiyang He
  Cc: kevin.tian, joro, will, iommu, robin.murphy, linux-kernel,
	stable, nicolinc

On Fri, Jul 10, 2026 at 08:29:52PM +0800, Peiyang He wrote:
> iommufd_hwpt_replace_device() calls:
> 
> 	iommufd_auto_response_faults(hwpt, old_handle);
> 
> passing the *new* hwpt together with the handle of
> the device's *old* domain. This should be a parameter mismatch:
> 
> 1. Semantically, iommufd_auto_response_faults(x, handle) scans
>    x->fault's deliver list and response xarray for groups matching
>    "handle". A group is queued under the hwpt that was attached at
>    fault-delivery time. old_handle is fetched *before* the domain switch,
>    so its group lives on old->fault, not on the new hwpt->fault.
> 
> 2. Historically, the first argument was "old". The routine was
>    introduced by commit b7d8833677ba ("iommufd: Fault-capable hwpt
>    attach/detach/replace") as __fault_domain_replace_dev() in
>    fault.c, correctly calling iommufd_auto_response_faults(old, curr).
>    Commit fb21b1568ada ("iommufd: Make attach_handle generic than
>    fault specific") moved this into iommufd_hwpt_replace_device() in
>    device.c and swapped it to "hwpt". This should be a refactor regression,
>    not an intentional change.
> 
> Fix this by passing "old" instead.
> 
> Reported-by: Peiyang He <peiyang_he@smail.nju.edu.cn>
> Fixes: fb21b1568ada ("iommufd: Make attach_handle generic than fault specific")
> Cc: stable@vger.kernel.org
> Signed-off-by: Peiyang He <peiyang_he@smail.nju.edu.cn>
> ---
>  drivers/iommu/iommufd/device.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Applied

Thanks,
Jason

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-13 16:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-10 12:29 [PATCH] iommufd: Fix wrong hwpt passed to iommufd_auto_response_faults on replace Peiyang He
2026-07-13  6:11 ` Tian, Kevin
2026-07-13 16:53 ` Jason Gunthorpe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox