diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-16 10:40:48 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-04-16 10:40:48 -0400 |
commit | 3307f19f634dfb134b370c59a778fdb2d574c17b (patch) | |
tree | be7d1431af7741295e729ce25d376294cc7dead3 | |
parent | 5b1d07ed0e5b2707f786957c7a40eb2f399c84a8 (diff) | |
parent | ed247e12fe5da4417602c3c0ce22932fb0f9cac1 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc: remove some pointless conditionals before kfree()
sbus: changed ioctls to unlocked
sparc: asm/atomic.h on 32bit should include asm/system.h for xchg
sparc64: Fix smp_callin() locking.
-rw-r--r-- | arch/sparc/include/asm/atomic_32.h | 2 | ||||
-rw-r--r-- | arch/sparc/kernel/ldc.c | 6 | ||||
-rw-r--r-- | arch/sparc/kernel/smp_64.c | 4 | ||||
-rw-r--r-- | drivers/sbus/char/jsflash.c | 15 | ||||
-rw-r--r-- | drivers/sbus/char/uctrl.c | 7 |
5 files changed, 19 insertions, 15 deletions
diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h index ce465975a6a5..bb91b1248cd1 100644 --- a/arch/sparc/include/asm/atomic_32.h +++ b/arch/sparc/include/asm/atomic_32.h | |||
@@ -15,6 +15,8 @@ | |||
15 | 15 | ||
16 | #ifdef __KERNEL__ | 16 | #ifdef __KERNEL__ |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | |||
18 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
19 | 21 | ||
20 | extern int __atomic_add_return(int, atomic_t *); | 22 | extern int __atomic_add_return(int, atomic_t *); |
diff --git a/arch/sparc/kernel/ldc.c b/arch/sparc/kernel/ldc.c index 6ce5d2598a09..adf5f273868a 100644 --- a/arch/sparc/kernel/ldc.c +++ b/arch/sparc/kernel/ldc.c | |||
@@ -1183,8 +1183,7 @@ out_free_txq: | |||
1183 | free_queue(lp->tx_num_entries, lp->tx_base); | 1183 | free_queue(lp->tx_num_entries, lp->tx_base); |
1184 | 1184 | ||
1185 | out_free_mssbuf: | 1185 | out_free_mssbuf: |
1186 | if (mssbuf) | 1186 | kfree(mssbuf); |
1187 | kfree(mssbuf); | ||
1188 | 1187 | ||
1189 | out_free_iommu: | 1188 | out_free_iommu: |
1190 | ldc_iommu_release(lp); | 1189 | ldc_iommu_release(lp); |
@@ -1217,8 +1216,7 @@ void ldc_free(struct ldc_channel *lp) | |||
1217 | 1216 | ||
1218 | hlist_del(&lp->list); | 1217 | hlist_del(&lp->list); |
1219 | 1218 | ||
1220 | if (lp->mssbuf) | 1219 | kfree(lp->mssbuf); |
1221 | kfree(lp->mssbuf); | ||
1222 | 1220 | ||
1223 | ldc_iommu_release(lp); | 1221 | ldc_iommu_release(lp); |
1224 | 1222 | ||
diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 708e12a26b05..f7642e5a94db 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c | |||
@@ -118,9 +118,9 @@ void __cpuinit smp_callin(void) | |||
118 | while (!cpu_isset(cpuid, smp_commenced_mask)) | 118 | while (!cpu_isset(cpuid, smp_commenced_mask)) |
119 | rmb(); | 119 | rmb(); |
120 | 120 | ||
121 | ipi_call_lock(); | 121 | ipi_call_lock_irq(); |
122 | cpu_set(cpuid, cpu_online_map); | 122 | cpu_set(cpuid, cpu_online_map); |
123 | ipi_call_unlock(); | 123 | ipi_call_unlock_irq(); |
124 | 124 | ||
125 | /* idle thread is expected to have preempt disabled */ | 125 | /* idle thread is expected to have preempt disabled */ |
126 | preempt_disable(); | 126 | preempt_disable(); |
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index e6d1fc8c54f1..a85ad05e8548 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c | |||
@@ -383,18 +383,22 @@ static int jsf_ioctl_program(void __user *arg) | |||
383 | return 0; | 383 | return 0; |
384 | } | 384 | } |
385 | 385 | ||
386 | static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd, | 386 | static long jsf_ioctl(struct file *f, unsigned int cmd, unsigned long arg) |
387 | unsigned long arg) | ||
388 | { | 387 | { |
388 | lock_kernel(); | ||
389 | int error = -ENOTTY; | 389 | int error = -ENOTTY; |
390 | void __user *argp = (void __user *)arg; | 390 | void __user *argp = (void __user *)arg; |
391 | 391 | ||
392 | if (!capable(CAP_SYS_ADMIN)) | 392 | if (!capable(CAP_SYS_ADMIN)) { |
393 | unlock_kernel(); | ||
393 | return -EPERM; | 394 | return -EPERM; |
395 | } | ||
394 | switch (cmd) { | 396 | switch (cmd) { |
395 | case JSFLASH_IDENT: | 397 | case JSFLASH_IDENT: |
396 | if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) | 398 | if (copy_to_user(argp, &jsf0.id, JSFIDSZ)) { |
399 | unlock_kernel(); | ||
397 | return -EFAULT; | 400 | return -EFAULT; |
401 | } | ||
398 | break; | 402 | break; |
399 | case JSFLASH_ERASE: | 403 | case JSFLASH_ERASE: |
400 | error = jsf_ioctl_erase(arg); | 404 | error = jsf_ioctl_erase(arg); |
@@ -404,6 +408,7 @@ static int jsf_ioctl(struct inode *inode, struct file *f, unsigned int cmd, | |||
404 | break; | 408 | break; |
405 | } | 409 | } |
406 | 410 | ||
411 | unlock_kernel(); | ||
407 | return error; | 412 | return error; |
408 | } | 413 | } |
409 | 414 | ||
@@ -439,7 +444,7 @@ static const struct file_operations jsf_fops = { | |||
439 | .llseek = jsf_lseek, | 444 | .llseek = jsf_lseek, |
440 | .read = jsf_read, | 445 | .read = jsf_read, |
441 | .write = jsf_write, | 446 | .write = jsf_write, |
442 | .ioctl = jsf_ioctl, | 447 | .unlocked_ioctl = jsf_ioctl, |
443 | .mmap = jsf_mmap, | 448 | .mmap = jsf_mmap, |
444 | .open = jsf_open, | 449 | .open = jsf_open, |
445 | .release = jsf_release, | 450 | .release = jsf_release, |
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c index 27993c37775d..2c56fd56ec63 100644 --- a/drivers/sbus/char/uctrl.c +++ b/drivers/sbus/char/uctrl.c | |||
@@ -197,9 +197,8 @@ static struct uctrl_driver { | |||
197 | static void uctrl_get_event_status(struct uctrl_driver *); | 197 | static void uctrl_get_event_status(struct uctrl_driver *); |
198 | static void uctrl_get_external_status(struct uctrl_driver *); | 198 | static void uctrl_get_external_status(struct uctrl_driver *); |
199 | 199 | ||
200 | static int | 200 | static long |
201 | uctrl_ioctl(struct inode *inode, struct file *file, | 201 | uctrl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) |
202 | unsigned int cmd, unsigned long arg) | ||
203 | { | 202 | { |
204 | switch (cmd) { | 203 | switch (cmd) { |
205 | default: | 204 | default: |
@@ -226,7 +225,7 @@ static irqreturn_t uctrl_interrupt(int irq, void *dev_id) | |||
226 | static const struct file_operations uctrl_fops = { | 225 | static const struct file_operations uctrl_fops = { |
227 | .owner = THIS_MODULE, | 226 | .owner = THIS_MODULE, |
228 | .llseek = no_llseek, | 227 | .llseek = no_llseek, |
229 | .ioctl = uctrl_ioctl, | 228 | .unlocked_ioctl = uctrl_ioctl, |
230 | .open = uctrl_open, | 229 | .open = uctrl_open, |
231 | }; | 230 | }; |
232 | 231 | ||