mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 02:36:21 +00:00
padata: Allocate the cpumask for the padata instance
The cpumask of the padata instance was used without allocated. This caused boot crashes if CONFIG_CPUMASK_OFFSTACK is enabled. This patch fixes this by doing proper allocation for this cpumask. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
50beceba7f
commit
7478138782
@ -642,6 +642,9 @@ struct padata_instance *padata_alloc(const struct cpumask *cpumask,
|
||||
if (!pd)
|
||||
goto err_free_inst;
|
||||
|
||||
if (!alloc_cpumask_var(&pinst->cpumask, GFP_KERNEL))
|
||||
goto err_free_pd;
|
||||
|
||||
rcu_assign_pointer(pinst->pd, pd);
|
||||
|
||||
pinst->wq = wq;
|
||||
@ -654,12 +657,14 @@ struct padata_instance *padata_alloc(const struct cpumask *cpumask,
|
||||
pinst->cpu_notifier.priority = 0;
|
||||
err = register_hotcpu_notifier(&pinst->cpu_notifier);
|
||||
if (err)
|
||||
goto err_free_pd;
|
||||
goto err_free_cpumask;
|
||||
|
||||
mutex_init(&pinst->lock);
|
||||
|
||||
return pinst;
|
||||
|
||||
err_free_cpumask:
|
||||
free_cpumask_var(pinst->cpumask);
|
||||
err_free_pd:
|
||||
padata_free_pd(pd);
|
||||
err_free_inst:
|
||||
@ -685,6 +690,7 @@ void padata_free(struct padata_instance *pinst)
|
||||
|
||||
unregister_hotcpu_notifier(&pinst->cpu_notifier);
|
||||
padata_free_pd(pinst->pd);
|
||||
free_cpumask_var(pinst->cpumask);
|
||||
kfree(pinst);
|
||||
}
|
||||
EXPORT_SYMBOL(padata_free);
|
||||
|
Loading…
x
Reference in New Issue
Block a user