All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.