Skip to content

Commit

Permalink
padata: Allocate the cpumask for the padata instance
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Steffen Klassert authored and Herbert Xu committed Mar 4, 2010
1 parent 50beceb commit 7478138
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion kernel/padata.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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:
Expand All @@ -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);

0 comments on commit 7478138

Please sign in to comment.