* [PATCH for-4.8] irq/affinity: use get/put_online_cpus
@ 2016-08-11 14:06 Christoph Hellwig
2016-08-14 16:00 ` Christoph Hellwig
2016-08-22 9:28 ` [tip:irq/urgent] genirq/affinity: Use get/put_online_cpus around cpumask operations tip-bot for Christoph Hellwig
0 siblings, 2 replies; 4+ messages in thread
From: Christoph Hellwig @ 2016-08-11 14:06 UTC (permalink / raw)
To: tglx; +Cc: linux-kernel
Without locking out CPU mask operations we might end up with an inconsistent
view of the cpumask in the function.
Signed-off-by: Christoph Hellwig <hch@lst.de>
---
kernel/irq/affinity.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c
index f689593..32f6cfc 100644
--- a/kernel/irq/affinity.c
+++ b/kernel/irq/affinity.c
@@ -39,6 +39,7 @@ struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
return NULL;
}
+ get_online_cpus();
if (max_vecs >= num_online_cpus()) {
cpumask_copy(affinity_mask, cpu_online_mask);
*nr_vecs = num_online_cpus();
@@ -56,6 +57,7 @@ struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
}
*nr_vecs = vecs;
}
+ put_online_cpus();
return affinity_mask;
}
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH for-4.8] irq/affinity: use get/put_online_cpus
2016-08-11 14:06 [PATCH for-4.8] irq/affinity: use get/put_online_cpus Christoph Hellwig
@ 2016-08-14 16:00 ` Christoph Hellwig
2016-08-22 9:01 ` Thomas Gleixner
2016-08-22 9:28 ` [tip:irq/urgent] genirq/affinity: Use get/put_online_cpus around cpumask operations tip-bot for Christoph Hellwig
1 sibling, 1 reply; 4+ messages in thread
From: Christoph Hellwig @ 2016-08-14 16:00 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: tglx, linux-kernel
Any chance to get a quick review for this and get it off to Linus?
Without this fix the function is unusable in 4.8+ on my test systems
because we seem to always get a inconsistent view of the cpu online
bitmap - something that didn't happen before this merge window oddly
enough.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH for-4.8] irq/affinity: use get/put_online_cpus
2016-08-14 16:00 ` Christoph Hellwig
@ 2016-08-22 9:01 ` Thomas Gleixner
0 siblings, 0 replies; 4+ messages in thread
From: Thomas Gleixner @ 2016-08-22 9:01 UTC (permalink / raw)
To: Christoph Hellwig; +Cc: Christoph Hellwig, linux-kernel
On Sun, 14 Aug 2016, Christoph Hellwig wrote:
> Any chance to get a quick review for this and get it off to Linus?
> Without this fix the function is unusable in 4.8+ on my test systems
> because we seem to always get a inconsistent view of the cpu online
> bitmap - something that didn't happen before this merge window oddly
> enough.
That only happens if you have concurrent cpu hotplug operations, but yes this
needs to be fixed anyway.
Thanks,
tglx
^ permalink raw reply [flat|nested] 4+ messages in thread
* [tip:irq/urgent] genirq/affinity: Use get/put_online_cpus around cpumask operations
2016-08-11 14:06 [PATCH for-4.8] irq/affinity: use get/put_online_cpus Christoph Hellwig
2016-08-14 16:00 ` Christoph Hellwig
@ 2016-08-22 9:28 ` tip-bot for Christoph Hellwig
1 sibling, 0 replies; 4+ messages in thread
From: tip-bot for Christoph Hellwig @ 2016-08-22 9:28 UTC (permalink / raw)
To: linux-tip-commits; +Cc: tglx, linux-kernel, hpa, hch, mingo
Commit-ID: 3ee0ce2a54dff07d09440723594df89bc1a12e79
Gitweb: http://git.kernel.org/tip/3ee0ce2a54dff07d09440723594df89bc1a12e79
Author: Christoph Hellwig <hch@lst.de>
AuthorDate: Thu, 11 Aug 2016 07:06:45 -0700
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Mon, 22 Aug 2016 11:22:44 +0200
genirq/affinity: Use get/put_online_cpus around cpumask operations
Without locking out CPU mask operations we might end up with an inconsistent
view of the cpumask in the function.
Fixes: 5e385a6ef31f: "genirq: Add a helper to spread an affinity mask for MSI/MSI-X vectors"
Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: http://lkml.kernel.org/r/1470924405-25728-1-git-send-email-hch@lst.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
kernel/irq/affinity.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/irq/affinity.c b/kernel/irq/affinity.c
index f689593..32f6cfc 100644
--- a/kernel/irq/affinity.c
+++ b/kernel/irq/affinity.c
@@ -39,6 +39,7 @@ struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
return NULL;
}
+ get_online_cpus();
if (max_vecs >= num_online_cpus()) {
cpumask_copy(affinity_mask, cpu_online_mask);
*nr_vecs = num_online_cpus();
@@ -56,6 +57,7 @@ struct cpumask *irq_create_affinity_mask(unsigned int *nr_vecs)
}
*nr_vecs = vecs;
}
+ put_online_cpus();
return affinity_mask;
}
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-08-22 9:28 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-11 14:06 [PATCH for-4.8] irq/affinity: use get/put_online_cpus Christoph Hellwig
2016-08-14 16:00 ` Christoph Hellwig
2016-08-22 9:01 ` Thomas Gleixner
2016-08-22 9:28 ` [tip:irq/urgent] genirq/affinity: Use get/put_online_cpus around cpumask operations tip-bot for Christoph Hellwig
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.