From 03c5ed46afc150dd31742a84cbbcd30ac966db39 Mon Sep 17 00:00:00 2001 From: Arun Prakash Date: Mon, 26 Apr 2021 15:04:53 +0530 Subject: [PATCH] rpmsg: glink: Use cpu_mask variable from glink structure Use cpu_mask from glink structure instead of using local variable while setting the cpu affinity as kernel will save cpu_mask address and use later. Saving local variable address may lead to stale pointer access. Change-Id: Icfc3218edc518f3b85447051abd67b15e617ace6 Signed-off-by: Arun Prakash --- drivers/rpmsg/qcom_glink_native.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c index 737b73343cf1..6896019dc5ae 100644 --- a/drivers/rpmsg/qcom_glink_native.c +++ b/drivers/rpmsg/qcom_glink_native.c @@ -164,6 +164,7 @@ struct qcom_glink { bool sent_read_notify; void *ilc; + struct cpumask cpu_mask; }; enum { @@ -2004,17 +2005,16 @@ static int qcom_glink_create_chrdev(struct qcom_glink *glink) static void qcom_glink_set_affinity(struct qcom_glink *glink, u32 *arr, size_t size) { - struct cpumask cpumask; int i; - cpumask_clear(&cpumask); + cpumask_clear(&glink->cpu_mask); for (i = 0; i < size; i++) { if (arr[i] < num_possible_cpus()) - cpumask_set_cpu(arr[i], &cpumask); + cpumask_set_cpu(arr[i], &glink->cpu_mask); } - if (irq_set_affinity_hint(glink->irq, &cpumask)) + if (irq_set_affinity_hint(glink->irq, &glink->cpu_mask)) dev_err(glink->dev, "failed to set irq affinity\n"); - if (set_cpus_allowed_ptr(glink->task, &cpumask)) + if (set_cpus_allowed_ptr(glink->task, &glink->cpu_mask)) dev_err(glink->dev, "failed to set task affinity\n"); }