diff options
author | Mike Travis <travis@sgi.com> | 2009-01-10 21:58:10 -0800 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-11 19:13:19 +0100 |
commit | c90e785be2fd9dfaef1f030d0314e44052553736 (patch) | |
tree | 8c858773695fb1c63fdefb70b6a4657edb2be61a /drivers/firmware | |
parent | f9b90566cd46e19f670a1e60a717ff243f060a8a (diff) | |
download | lwn-c90e785be2fd9dfaef1f030d0314e44052553736.tar.gz lwn-c90e785be2fd9dfaef1f030d0314e44052553736.zip |
cpumask: use cpumask_var_t in dcdbas.c
Impact: reduce stack usage.
Replace cpumask_t with cpumask_var_t in drivers/firmware/dcdbas.c.
Signed-off-by: Mike Travis <travis@sgi.com>
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/dcdbas.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/firmware/dcdbas.c b/drivers/firmware/dcdbas.c index 777fba48d2d3..3009e0171e54 100644 --- a/drivers/firmware/dcdbas.c +++ b/drivers/firmware/dcdbas.c @@ -244,7 +244,7 @@ static ssize_t host_control_on_shutdown_store(struct device *dev, */ int dcdbas_smi_request(struct smi_cmd *smi_cmd) { - cpumask_t old_mask; + cpumask_var_t old_mask; int ret = 0; if (smi_cmd->magic != SMI_CMD_MAGIC) { @@ -254,8 +254,11 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd) } /* SMI requires CPU 0 */ - old_mask = current->cpus_allowed; - set_cpus_allowed_ptr(current, &cpumask_of_cpu(0)); + if (!alloc_cpumask_var(&old_mask, GFP_KERNEL)) + return -ENOMEM; + + cpumask_copy(old_mask, ¤t->cpus_allowed); + set_cpus_allowed_ptr(current, cpumask_of(0)); if (smp_processor_id() != 0) { dev_dbg(&dcdbas_pdev->dev, "%s: failed to get CPU 0\n", __func__); @@ -275,7 +278,8 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd) ); out: - set_cpus_allowed_ptr(current, &old_mask); + set_cpus_allowed_ptr(current, old_mask); + free_cpumask_var(old_mask); return ret; } |