* [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko
@ 2026-09-24 8:56 Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 1/5] iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs Mostafa Saleh
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh
While running sashiko locally on the pKVM SMMUv3 driver patches, it
reported some pre-existing issues in the SMMUv3 driver (the RB tree
corruption and a missing NULL check) and given that this is not the
first time a pre-existing issue appears in the driver from sashiko,
I went ahead and passed the whole driver to Sashiko which reported a
dozen of other issues(except the last one in this series), I included
fixes for bugs I believe are true or worth fixing (others were mostly
missing NULL checks or bizarre HW/FW configs I don't think are needed).
I also sorted the patches based on severity from the most critical to
the least, so it is easier to apply a prefix if some bugs are too
theoretical
Changes in v2:
v1: https://lore.kernel.org/all/20260828125409.1921538-1-smostafa@google.com/
- Drop patches 2 and 3 as they are fixed by other patches on the list
- Collect Rbs
Mostafa Saleh (5):
iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs
iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits()
iommu/arm-smmu-v3-test: Add missing error checks for inv array
iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify()
iommu/arm-smmu-v3-test: Fix UBSAN error
.../iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 19 ++++++++++++++++---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 6 ++++++
2 files changed, 22 insertions(+), 3 deletions(-)
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/5] iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
@ 2026-09-24 8:56 ` Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 2/5] iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits() Mostafa Saleh
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh,
Jason Gunthorpe
Commit 6fabce53f6b9 ("iommu/arm-smmu-v3: Add a missing dma_wmb() for hitless STE update")
adds a dma_wmb() to arm_smmu_write_entry() to make sure stream tables
and context descriptors are observed first.
However, STE L1 table descriptors are configured directly
via WRITE_ONCE(), where before that they were zeroed with memset()
inside dma_direct_alloc() then written to abort in via memset() also
in arm_smmu_init_initial_stes() without a barrier in both cases which
means that the SMMUv3 can observe the allocated table before the
written descriptors causing it to fetch random data.
Similarly in arm_smmu_write_cd_l1_desc() where the L1 CD is written
after dma_alloc_coherent() with no barriers.
Add dma_wmb() in both cases.
Fixes: 48ec83bcbcf5 ("iommu/arm-smmu: Add initial driver support for ARM SMMUv3 devices")
Reported-by: Sashiko <>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
index 5732f3ba0122..494bbfd2869f 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
@@ -1515,6 +1515,9 @@ static void arm_smmu_write_cd_l1_desc(struct arm_smmu_cdtab_l1 *dst,
{
u64 val = (l2ptr_dma & CTXDESC_L1_DESC_L2PTR_MASK) | CTXDESC_L1_DESC_V;
+ /* Ensure the zero-cleared L2 table is fully visible. */
+ dma_wmb();
+
/* The HW has 64 bit atomicity with stores to the L2 CD table */
WRITE_ONCE(dst->l2ptr, cpu_to_le64(val));
}
@@ -1804,6 +1807,9 @@ static void arm_smmu_write_strtab_l1_desc(struct arm_smmu_strtab_l1 *dst,
val |= FIELD_PREP(STRTAB_L1_DESC_SPAN, STRTAB_SPLIT + 1);
val |= l2ptr_dma & STRTAB_L1_DESC_L2PTR_MASK;
+ /* Ensure the new L2 table is fully visible. */
+ dma_wmb();
+
/* The HW has 64 bit atomicity with stores to the L2 STE table */
WRITE_ONCE(dst->l2ptr, cpu_to_le64(val));
}
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 2/5] iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits()
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 1/5] iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs Mostafa Saleh
@ 2026-09-24 8:56 ` Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 3/5] iommu/arm-smmu-v3-test: Add missing error checks for inv array Mostafa Saleh
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh,
Jason Gunthorpe
arm_smmu_v3_test_debug_print_used_bits() hardcodes arm_smmu_get_ste_used()
instead of using the provided writer->ops->get_used() callback.
This caused Context Descriptors to be incorrectly parsed as STEs.
Fixes: 56e1a4cc2588 ("iommu/arm-smmu-v3: Add unit tests for arm_smmu_write_entry")
Reported-by: Sashiko <>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
index add671363c82..eae08d4d77ec 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
@@ -125,8 +125,8 @@ arm_smmu_v3_test_debug_print_used_bits(struct arm_smmu_entry_writer *writer,
{
__le64 used_bits[NUM_ENTRY_QWORDS] = {};
- arm_smmu_get_ste_used(ste, used_bits);
- pr_debug("STE used bits: ");
+ writer->ops->get_used(ste, used_bits);
+ pr_debug("Entry used bits: ");
print_hex_dump_debug(" ", DUMP_PREFIX_NONE, 16, 8, used_bits,
sizeof(used_bits), false);
}
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 3/5] iommu/arm-smmu-v3-test: Add missing error checks for inv array
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 1/5] iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 2/5] iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits() Mostafa Saleh
@ 2026-09-24 8:56 ` Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 4/5] iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify() Mostafa Saleh
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh
arm_smmu_invs_merge() and arm_smmu_invs_alloc() can return NULL or
errors which are checked by the driver but not the test.
Add KUNIT_ASSERT_NOT_ERR_OR_NULL() after calling them to fail the
test instead of accessing NULL or ERR pointers.
Fixes: 15a2a5645ad7 ("iommu/arm-smmu-v3: Introduce a per-domain arm_smmu_invs array")
Reported-by: Sashiko <>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
index eae08d4d77ec..366dcb2b5554 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
@@ -704,17 +704,20 @@ static void arm_smmu_v3_invs_test(struct kunit *test)
/* New array */
test_a = arm_smmu_invs_alloc(0);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_a);
KUNIT_EXPECT_EQ(test, test_a->num_invs, 0);
/* Test1: merge invs1 (new array) */
test_b = arm_smmu_invs_merge(test_a, &invs1);
kfree(test_a);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_b);
arm_smmu_v3_invs_test_verify(test, test_b, ARRAY_SIZE(results1[0]), 0,
results1[0], results1[1], results1[2]);
/* Test2: merge invs2 (new array) */
test_a = arm_smmu_invs_merge(test_b, &invs2);
kfree(test_b);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_a);
arm_smmu_v3_invs_test_verify(test, test_a, ARRAY_SIZE(results2[0]), 0,
results2[0], results2[1], results2[2]);
@@ -726,6 +729,7 @@ static void arm_smmu_v3_invs_test(struct kunit *test)
/* Test4: merge invs3 (new array) */
test_b = arm_smmu_invs_merge(test_a, &invs3);
kfree(test_a);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_b);
arm_smmu_v3_invs_test_verify(test, test_b, ARRAY_SIZE(results4[0]), 0,
results4[0], results4[1], results4[2]);
@@ -737,6 +741,7 @@ static void arm_smmu_v3_invs_test(struct kunit *test)
/* Test6: purge test_b (new array) */
test_a = arm_smmu_invs_purge(test_b);
kfree(test_b);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_a);
arm_smmu_v3_invs_test_verify(test, test_a, ARRAY_SIZE(results6[0]), 0,
results6[0], results6[1], results6[2]);
@@ -748,12 +753,14 @@ static void arm_smmu_v3_invs_test(struct kunit *test)
/* Test8: merge invs4 (new array) */
test_b = arm_smmu_invs_merge(test_a, &invs4);
kfree(test_a);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_b);
arm_smmu_v3_invs_test_verify(test, test_b, ARRAY_SIZE(results7[0]), 0,
results7[0], results7[1], results7[2]);
/* Test9: merge invs5 (new array) */
test_a = arm_smmu_invs_merge(test_b, &invs5);
kfree(test_b);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_a);
arm_smmu_v3_invs_test_verify(test, test_a, ARRAY_SIZE(results8[0]), 0,
results8[0], results8[1], results8[2]);
@@ -765,6 +772,7 @@ static void arm_smmu_v3_invs_test(struct kunit *test)
/* Test11: purge test_a (new array) */
test_b = arm_smmu_invs_purge(test_a);
kfree(test_a);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, test_b);
arm_smmu_v3_invs_test_verify(test, test_b, ARRAY_SIZE(results10[0]), 0,
results10[0], results10[1], results10[2]);
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 4/5] iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify()
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
` (2 preceding siblings ...)
2026-09-24 8:56 ` [PATCH v2 3/5] iommu/arm-smmu-v3-test: Add missing error checks for inv array Mostafa Saleh
@ 2026-09-24 8:56 ` Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 5/5] iommu/arm-smmu-v3-test: Fix UBSAN error Mostafa Saleh
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh,
Jason Gunthorpe
arm_smmu_v3_invs_test_verify() validates the array bounds using
KUNIT_EXPECT_EQ(), which triggers a failure and continues execution.
If invs->num_invs was smaller than expected, the next loop over
num_invs would blindly read past the end of the invs->inv[] array.
Switch to KUNIT_ASSERT_EQ() to fail and stop the test on bound errors.
Fixes: 15a2a5645ad7 ("iommu/arm-smmu-v3: Introduce a per-domain arm_smmu_invs array")
Reported-by: Sashiko <>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
index 366dcb2b5554..244cf34e5a0b 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
@@ -643,7 +643,7 @@ static void arm_smmu_v3_invs_test_verify(struct kunit *test,
const int *ids, const int *users,
const int *ssids)
{
- KUNIT_EXPECT_EQ(test, invs->num_invs, num_invs);
+ KUNIT_ASSERT_EQ(test, invs->num_invs, num_invs);
KUNIT_EXPECT_EQ(test, invs->num_trashes, num_trashes);
while (num_invs--) {
KUNIT_EXPECT_EQ(test, invs->inv[num_invs].id, ids[num_invs]);
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 5/5] iommu/arm-smmu-v3-test: Fix UBSAN error
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
` (3 preceding siblings ...)
2026-09-24 8:56 ` [PATCH v2 4/5] iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify() Mostafa Saleh
@ 2026-09-24 8:56 ` Mostafa Saleh
2026-09-24 18:34 ` [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Jason Gunthorpe
2026-09-24 18:58 ` Nicolin Chen
6 siblings, 0 replies; 8+ messages in thread
From: Mostafa Saleh @ 2026-09-24 8:56 UTC (permalink / raw)
To: linux-kernel, iommu, linux-arm-kernel
Cc: will, robin.murphy, joro, jgg, nicolinc, praan, Mostafa Saleh,
Jason Gunthorpe
struct arm_smmu_invs marks its flexible array member inv[] with the
__counted_by(max_invs).
arm_smmu_v3_invs_test() uses invs1 to invs5 which has num_invs = 3
but omit max_invs.
This causes the following UBSAN error:
[ 2.333240] UBSAN: array-index-out-of-bounds in drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c:1116:21
[ 2.333604] # arm_smmu_v3_invs_test: lib/ubsan.c:228: array-index-out-of-bounds in drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
[ 2.334129] index 1 is out of range for type 'struct arm_smmu_inv[] __counted_by(max_invs)' (aka 'struct arm_smmu_inv[]')
[ 2.335375] CPU: 6 UID: 0 PID: 155 Comm: kunit_try_catch Tainted: G N 7.2.0-g8dcb331fbb72 #2 PREEMPT
[ 2.335759] Tainted: [N]=TEST
[ 2.335791] Hardware name: linux,dummy-virt (DT)
[ 2.336254] Call trace:
[ 2.336932] show_stack+0x18/0x24 (C)
[ 2.338443] __dump_stack+0x28/0x38
[ 2.338494] dump_stack_lvl+0x54/0x6c
[ 2.338518] dump_stack+0x18/0x24
[ 2.338541] ubsan_epilogue+0x10/0x44
[ 2.338565] __ubsan_handle_out_of_bounds+0xb8/0xbc
[ 2.338834] arm_smmu_invs_merge+0x688/0x8ac
[ 2.338862] arm_smmu_v3_invs_test+0xd4/0x598
[ 2.338890] kunit_try_run_case+0x64/0x160
[ 2.338914] kunit_generic_run_threadfn_adapter+0x28/0x4c
[ 2.338955] kthread+0x10c/0x12c
[ 2.338984] ret_from_fork+0x10/0x20
[ 2.339433] ---[ end trace ]---
Explicitly set max_invs = 3 on the test arrays to match the number of
elements.
Fixes: 15a2a5645ad7 ("iommu/arm-smmu-v3: Introduce a per-domain arm_smmu_invs array")
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Mostafa Saleh <smostafa@google.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
index 244cf34e5a0b..e52a7d95c919 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.c
@@ -654,6 +654,7 @@ static void arm_smmu_v3_invs_test_verify(struct kunit *test,
}
static struct arm_smmu_invs invs1 = {
+ .max_invs = 3,
.num_invs = 3,
.inv = { { .type = INV_TYPE_S2_VMID, .id = 1, },
{ .type = INV_TYPE_S2_VMID_S1_CLEAR, .id = 1, },
@@ -661,6 +662,7 @@ static struct arm_smmu_invs invs1 = {
};
static struct arm_smmu_invs invs2 = {
+ .max_invs = 3,
.num_invs = 3,
.inv = { { .type = INV_TYPE_S2_VMID, .id = 1, }, /* duplicated */
{ .type = INV_TYPE_ATS, .id = 4, },
@@ -668,6 +670,7 @@ static struct arm_smmu_invs invs2 = {
};
static struct arm_smmu_invs invs3 = {
+ .max_invs = 3,
.num_invs = 3,
.inv = { { .type = INV_TYPE_S2_VMID, .id = 1, }, /* duplicated */
{ .type = INV_TYPE_ATS, .id = 5, }, /* recover a trash */
@@ -675,6 +678,7 @@ static struct arm_smmu_invs invs3 = {
};
static struct arm_smmu_invs invs4 = {
+ .max_invs = 3,
.num_invs = 3,
.inv = { { .type = INV_TYPE_ATS, .id = 10, .ssid = 1 },
{ .type = INV_TYPE_ATS, .id = 10, .ssid = 3 },
@@ -682,6 +686,7 @@ static struct arm_smmu_invs invs4 = {
};
static struct arm_smmu_invs invs5 = {
+ .max_invs = 3,
.num_invs = 3,
.inv = { { .type = INV_TYPE_ATS, .id = 10, .ssid = 2 },
{ .type = INV_TYPE_ATS, .id = 10, .ssid = 3 }, /* duplicate */
--
2.56.0.rc1.315.gc6ed9934b7-goog
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
` (4 preceding siblings ...)
2026-09-24 8:56 ` [PATCH v2 5/5] iommu/arm-smmu-v3-test: Fix UBSAN error Mostafa Saleh
@ 2026-09-24 18:34 ` Jason Gunthorpe
2026-09-24 18:58 ` Nicolin Chen
6 siblings, 0 replies; 8+ messages in thread
From: Jason Gunthorpe @ 2026-09-24 18:34 UTC (permalink / raw)
To: Mostafa Saleh
Cc: linux-kernel, iommu, linux-arm-kernel, will, robin.murphy, joro,
jgg, nicolinc, praan
On Thu, 24 Sep 2026 08:56:11 +0000, Mostafa Saleh <smostafa@google.com> wrote:
> iommu/arm-smmu-v3: Fixes reported by Sashiko
>
> While running sashiko locally on the pKVM SMMUv3 driver patches, it
> reported some pre-existing issues in the SMMUv3 driver (the RB tree
> corruption and a missing NULL check) and given that this is not the
> first time a pre-existing issue appears in the driver from sashiko,
> I went ahead and passed the whole driver to Sashiko which reported a
> dozen of other issues(except the last one in this series), I included
> fixes for bugs I believe are true or worth fixing (others were mostly
> missing NULL checks or bizarre HW/FW configs I don't think are needed).
>
> [...]
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
--
Jason
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
` (5 preceding siblings ...)
2026-09-24 18:34 ` [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Jason Gunthorpe
@ 2026-09-24 18:58 ` Nicolin Chen
6 siblings, 0 replies; 8+ messages in thread
From: Nicolin Chen @ 2026-09-24 18:58 UTC (permalink / raw)
To: Mostafa Saleh
Cc: linux-kernel, iommu, linux-arm-kernel, will, robin.murphy, joro,
jgg, praan
On Thu, Sep 24, 2026 at 08:56:11AM +0000, Mostafa Saleh wrote:
> While running sashiko locally on the pKVM SMMUv3 driver patches, it
> reported some pre-existing issues in the SMMUv3 driver (the RB tree
> corruption and a missing NULL check) and given that this is not the
> first time a pre-existing issue appears in the driver from sashiko,
> I went ahead and passed the whole driver to Sashiko which reported a
> dozen of other issues(except the last one in this series), I included
> fixes for bugs I believe are true or worth fixing (others were mostly
> missing NULL checks or bizarre HW/FW configs I don't think are needed).
>
> I also sorted the patches based on severity from the most critical to
> the least, so it is easier to apply a prefix if some bugs are too
> theoretical
>
> Changes in v2:
> v1: https://lore.kernel.org/all/20260828125409.1921538-1-smostafa@google.com/
> - Drop patches 2 and 3 as they are fixed by other patches on the list
> - Collect Rbs
>
> Mostafa Saleh (5):
> iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs
> iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits()
> iommu/arm-smmu-v3-test: Add missing error checks for inv array
> iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify()
> iommu/arm-smmu-v3-test: Fix UBSAN error
Sanity and selftest run okay:
Tested-by: Nicolin Chen <nicolinc@nvidia.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-09-24 18:58 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-24 8:56 [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 1/5] iommu/arm-smmu-v3: Ensure L2 tables are visible before L1 ptrs Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 2/5] iommu/arm-smmu-v3-test: Fix arm_smmu_v3_test_debug_print_used_bits() Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 3/5] iommu/arm-smmu-v3-test: Add missing error checks for inv array Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 4/5] iommu/arm-smmu-v3-test: Fix OOB in arm_smmu_v3_invs_test_verify() Mostafa Saleh
2026-09-24 8:56 ` [PATCH v2 5/5] iommu/arm-smmu-v3-test: Fix UBSAN error Mostafa Saleh
2026-09-24 18:34 ` [PATCH v2 0/5] iommu/arm-smmu-v3: Fixes reported by Sashiko Jason Gunthorpe
2026-09-24 18:58 ` Nicolin Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®