diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-03-23 09:50:03 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-03-23 16:20:20 -0400 |
| commit | 80c5520811d3805adcb15c570ea5e2d489fa5d0b (patch) | |
| tree | ae797a7f4af39f80e77526533d06ac23b439f0ab /drivers/firmware/dcdbas.c | |
| parent | b3e3b302cf6dc8d60b67f0e84d1fa5648889c038 (diff) | |
| parent | 8c083f081d0014057901c68a0a3e0f8ca7ac8d23 (diff) | |
Merge branch 'cpus4096' into irq/threaded
Conflicts:
arch/parisc/kernel/irq.c
kernel/irq/handle.c
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/firmware/dcdbas.c')
| -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, | |||
| 244 | */ | 244 | */ |
| 245 | int dcdbas_smi_request(struct smi_cmd *smi_cmd) | 245 | int dcdbas_smi_request(struct smi_cmd *smi_cmd) |
| 246 | { | 246 | { |
| 247 | cpumask_t old_mask; | 247 | cpumask_var_t old_mask; |
| 248 | int ret = 0; | 248 | int ret = 0; |
| 249 | 249 | ||
| 250 | if (smi_cmd->magic != SMI_CMD_MAGIC) { | 250 | if (smi_cmd->magic != SMI_CMD_MAGIC) { |
| @@ -254,8 +254,11 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd) | |||
| 254 | } | 254 | } |
| 255 | 255 | ||
| 256 | /* SMI requires CPU 0 */ | 256 | /* SMI requires CPU 0 */ |
| 257 | old_mask = current->cpus_allowed; | 257 | if (!alloc_cpumask_var(&old_mask, GFP_KERNEL)) |
| 258 | set_cpus_allowed_ptr(current, &cpumask_of_cpu(0)); | 258 | return -ENOMEM; |
| 259 | |||
| 260 | cpumask_copy(old_mask, ¤t->cpus_allowed); | ||
| 261 | set_cpus_allowed_ptr(current, cpumask_of(0)); | ||
| 259 | if (smp_processor_id() != 0) { | 262 | if (smp_processor_id() != 0) { |
| 260 | dev_dbg(&dcdbas_pdev->dev, "%s: failed to get CPU 0\n", | 263 | dev_dbg(&dcdbas_pdev->dev, "%s: failed to get CPU 0\n", |
| 261 | __func__); | 264 | __func__); |
| @@ -275,7 +278,8 @@ int dcdbas_smi_request(struct smi_cmd *smi_cmd) | |||
| 275 | ); | 278 | ); |
| 276 | 279 | ||
| 277 | out: | 280 | out: |
| 278 | set_cpus_allowed_ptr(current, &old_mask); | 281 | set_cpus_allowed_ptr(current, old_mask); |
| 282 | free_cpumask_var(old_mask); | ||
| 279 | return ret; | 283 | return ret; |
| 280 | } | 284 | } |
| 281 | 285 | ||
