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 <app@codeaurora.org>
This commit is contained in:
Arun Prakash 2021-04-26 15:04:53 +05:30
commit 03c5ed46af

View file

@ -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");
}