| From c22c87c90469bedb4b8e8d36089eadf583e825d6 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 17 Jun 2021 09:08:49 -0700 |
| Subject: perf/arm-cmn: Fix invalid pointer when access dtc object sharing the |
| same IRQ number |
| |
| From: Tuan Phan <tuanphan@os.amperecomputing.com> |
| |
| [ Upstream commit 4e16f283edc289820e9b2d6f617ed8e514ee8396 ] |
| |
| When multiple dtcs share the same IRQ number, the irq_friend which |
| used to refer to dtc object gets calculated incorrect which leads |
| to invalid pointer. |
| |
| Fixes: 0ba64770a2f2 ("perf: Add Arm CMN-600 PMU driver") |
| |
| Signed-off-by: Tuan Phan <tuanphan@os.amperecomputing.com> |
| Reviewed-by: Robin Murphy <robin.murphy@arm.com> |
| Link: https://lore.kernel.org/r/1623946129-3290-1-git-send-email-tuanphan@os.amperecomputing.com |
| Signed-off-by: Will Deacon <will@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/perf/arm-cmn.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/perf/arm-cmn.c b/drivers/perf/arm-cmn.c |
| index 46defb1dcf86..bb019e383988 100644 |
| --- a/drivers/perf/arm-cmn.c |
| +++ b/drivers/perf/arm-cmn.c |
| @@ -1212,7 +1212,7 @@ static int arm_cmn_init_irqs(struct arm_cmn *cmn) |
| irq = cmn->dtc[i].irq; |
| for (j = i; j--; ) { |
| if (cmn->dtc[j].irq == irq) { |
| - cmn->dtc[j].irq_friend = j - i; |
| + cmn->dtc[j].irq_friend = i - j; |
| goto next; |
| } |
| } |
| -- |
| 2.30.2 |
| |