]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iommu/amd: Fix precedence order in set_dte_passthrough()
authorWeinan Liu <wnliu@google.com>
Thu, 30 Apr 2026 23:28:51 +0000 (23:28 +0000)
committerJoerg Roedel <joerg.roedel@amd.com>
Mon, 4 May 2026 08:26:16 +0000 (10:26 +0200)
Bitwise OR | operator has a higher precedence than the ternary ?:
operatior. It will be incorrectly evaluated as:

new->data[1] |= (FIELD_PREP(...) | dev_data->ats_enabled) ? DTE_FLAG_IOTLB : 0;

Wrap the conditional operation in parentheses to enforce the
correct evaluation order.

Fixes: 93eee2a49c1b ("iommu/amd: Refactor logic to program the host page table in DTE")
Signed-off-by: Weinan Liu <wnliu@google.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/amd/iommu.c

index 157505d96fdd282ba86b69add0118bf92913698c..f78e23f03938d60b3526447dc3fbbdfd321fa3a4 100644 (file)
@@ -2149,7 +2149,8 @@ static void set_dte_passthrough(struct iommu_dev_data *dev_data,
        new->data[0] |= DTE_FLAG_TV | DTE_FLAG_IR | DTE_FLAG_IW;
 
        new->data[1] |= FIELD_PREP(DTE_DOMID_MASK, domain->id) |
-                       (dev_data->ats_enabled) ? DTE_FLAG_IOTLB : 0;
+                       (dev_data->ats_enabled ? DTE_FLAG_IOTLB : 0);
+
 }
 
 static void set_dte_entry(struct amd_iommu *iommu,