diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2015-01-28 13:57:39 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-02-09 12:47:42 -0500 |
commit | 4fe7ffb7e17ca6ad9173b8de35f260c9c8fc2f79 (patch) | |
tree | cd4bf3e96e474ae0e2f99e54dc9d6f9343542a92 /kernel | |
parent | fb7e7deb7fc348ae131268d30e391c8184285de6 (diff) |
genirq: Fix null pointer reference in irq_set_affinity_hint()
The recent set_affinity commit by me introduced some null
pointer dereferences on driver unload, because some drivers
call this function with a NULL argument. This fixes the issue
by just checking for null before setting the affinity mask.
Fixes: e2e64a932556 ("genirq: Set initial affinity in irq_set_affinity_hint()")
Reported-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
CC: netdev@vger.kernel.org
Link: http://lkml.kernel.org/r/20150128185739.9689.84588.stgit@jbrandeb-cp2.jf.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/irq/manage.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index f038e586a4b9..196a06fbc122 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -244,7 +244,8 @@ int irq_set_affinity_hint(unsigned int irq, const struct cpumask *m) | |||
244 | desc->affinity_hint = m; | 244 | desc->affinity_hint = m; |
245 | irq_put_desc_unlock(desc, flags); | 245 | irq_put_desc_unlock(desc, flags); |
246 | /* set the initial affinity to prevent every interrupt being on CPU0 */ | 246 | /* set the initial affinity to prevent every interrupt being on CPU0 */ |
247 | __irq_set_affinity(irq, m, false); | 247 | if (m) |
248 | __irq_set_affinity(irq, m, false); | ||
248 | return 0; | 249 | return 0; |
249 | } | 250 | } |
250 | EXPORT_SYMBOL_GPL(irq_set_affinity_hint); | 251 | EXPORT_SYMBOL_GPL(irq_set_affinity_hint); |