diff options
| author | David S. Miller <davem@kernel.bkbits.net> | 2003-05-29 08:33:37 -0700 |
|---|---|---|
| committer | David S. Miller <davem@kernel.bkbits.net> | 2003-05-29 08:33:37 -0700 |
| commit | 1f78099a061ff3c652f9fbe5d03f6db74f72b146 (patch) | |
| tree | 5028ccf356e9e0cde41765def810fe2ac1164f51 | |
| parent | b6e27b1983b99b216b05e81a1f470f763b1c869f (diff) | |
| parent | 6196166fad85a2756a504414f479fe8862e8fd4c (diff) | |
Merge davem@nuts.ninka.net:/home/davem/src/BK/sparc-2.5
into kernel.bkbits.net:/home/davem/sparc-2.5
| -rw-r--r-- | arch/sparc64/kernel/sparc64_ksyms.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/sys_sparc.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/systbls.S | 6 | ||||
| -rw-r--r-- | drivers/sbus/char/bbc_envctrl.c | 6 | ||||
| -rw-r--r-- | drivers/sbus/char/bbc_i2c.c | 13 | ||||
| -rw-r--r-- | drivers/sbus/char/envctrl.c | 20 |
6 files changed, 32 insertions, 25 deletions
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c index 25ffe68c22ce..f2f9c9d0540c 100644 --- a/arch/sparc64/kernel/sparc64_ksyms.c +++ b/arch/sparc64/kernel/sparc64_ksyms.c @@ -94,8 +94,6 @@ extern int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); extern int compat_sys_ioctl(unsigned int fd, unsigned int cmd, u32 arg); extern int (*handle_mathemu)(struct pt_regs *, struct fpustate *); extern long sparc32_open(const char * filename, int flags, int mode); -extern int register_ioctl32_conversion(unsigned int cmd, int (*handler)(unsigned int, unsigned int, unsigned long, struct file *)); -extern int unregister_ioctl32_conversion(unsigned int cmd); extern int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, unsigned long offset, unsigned long size, pgprot_t prot, int space); extern int __ashrdi3(int, int); @@ -234,10 +232,6 @@ EXPORT_SYMBOL(pci_dma_sync_sg); EXPORT_SYMBOL(pci_dma_supported); #endif -/* IOCTL32 emulation hooks. */ -EXPORT_SYMBOL(register_ioctl32_conversion); -EXPORT_SYMBOL(unregister_ioctl32_conversion); - /* I/O device mmaping on Sparc64. */ EXPORT_SYMBOL(io_remap_page_range); diff --git a/arch/sparc64/kernel/sys_sparc.c b/arch/sparc64/kernel/sys_sparc.c index 77a1a8ffb451..5cbee39b42a5 100644 --- a/arch/sparc64/kernel/sys_sparc.c +++ b/arch/sparc64/kernel/sys_sparc.c @@ -442,12 +442,6 @@ done: return err; } -/* only AP+ systems have sys_aplib */ -asmlinkage int sys_aplib(void) -{ - return -ENOSYS; -} - asmlinkage int solaris_syscall(struct pt_regs *regs) { static int count; diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index 703c5e219b97..ce2d74694d53 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S @@ -70,7 +70,7 @@ sys_call_table32: /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep /*250*/ .word sys32_mremap, sys32_sysctl, sys_getsid, sys_fdatasync, sys32_nfsservctl - .word sys_aplib + .word sys_ni_syscall /* Now the 64-bit native Linux syscall table. */ @@ -132,7 +132,7 @@ sys_call_table: /*240*/ .word sys_munlockall, sys_sched_setparam, sys_sched_getparam, sys_sched_setscheduler, sys_sched_getscheduler .word sys_sched_yield, sys_sched_get_priority_max, sys_sched_get_priority_min, sys_sched_rr_get_interval, sys_nanosleep /*250*/ .word sys64_mremap, sys_sysctl, sys_getsid, sys_fdatasync, sys_nfsservctl - .word sys_aplib + .word sys_ni_syscall #if defined(CONFIG_SUNOS_EMUL) || defined(CONFIG_SOLARIS_EMUL) || \ defined(CONFIG_SOLARIS_EMUL_MODULE) @@ -227,6 +227,6 @@ sunos_sys_table: .word sunos_nosys, sunos_nosys, sunos_nosys .word sunos_nosys, sunos_nosys /*250*/ .word sunos_nosys, sunos_nosys, sunos_nosys - .word sunos_nosys, sunos_nosys, sys_aplib + .word sunos_nosys, sunos_nosys, sys_ni_syscall #endif diff --git a/drivers/sbus/char/bbc_envctrl.c b/drivers/sbus/char/bbc_envctrl.c index d0a545010b1e..b718967c1c88 100644 --- a/drivers/sbus/char/bbc_envctrl.c +++ b/drivers/sbus/char/bbc_envctrl.c @@ -571,12 +571,13 @@ static void attach_one_fan(struct linux_ebus_child *echild, int fan_idx) set_fan_speeds(fp); } -void bbc_envctrl_init(void) +int bbc_envctrl_init(void) { struct linux_ebus_child *echild; int temp_index = 0; int fan_index = 0; int devidx = 0; + int err = 0; while ((echild = bbc_i2c_getdev(devidx++)) != NULL) { if (!strcmp(echild->prom_name, "temperature")) @@ -585,7 +586,8 @@ void bbc_envctrl_init(void) attach_one_fan(echild, fan_index++); } if (temp_index != 0 && fan_index != 0) - kernel_thread(kenvctrld, NULL, CLONE_FS | CLONE_FILES); + err = kernel_thread(kenvctrld, NULL, CLONE_FS | CLONE_FILES); + return err; } static void destroy_one_temp(struct bbc_cpu_temperature *tp) diff --git a/drivers/sbus/char/bbc_i2c.c b/drivers/sbus/char/bbc_i2c.c index 87e386927036..a489c544fa68 100644 --- a/drivers/sbus/char/bbc_i2c.c +++ b/drivers/sbus/char/bbc_i2c.c @@ -430,14 +430,15 @@ static int __init bbc_present(void) return 0; } -extern void bbc_envctrl_init(void); +extern int bbc_envctrl_init(void); extern void bbc_envctrl_cleanup(void); +static void bbc_i2c_cleanup(void); static int __init bbc_i2c_init(void) { struct linux_ebus *ebus = NULL; struct linux_ebus_device *edev = NULL; - int index = 0; + int err, index = 0; if (tlb_type != cheetah || !bbc_present()) return -ENODEV; @@ -454,11 +455,13 @@ static int __init bbc_i2c_init(void) if (!index) return -ENODEV; - bbc_envctrl_init(); - return 0; + err = bbc_envctrl_init(); + if (err) + bbc_i2c_cleanup(); + return err; } -static void __exit bbc_i2c_cleanup(void) +static void bbc_i2c_cleanup(void) { struct bbc_i2c_bus *bp = all_bbc_i2c; diff --git a/drivers/sbus/char/envctrl.c b/drivers/sbus/char/envctrl.c index 0fc7f2960fea..ab8641e98b23 100644 --- a/drivers/sbus/char/envctrl.c +++ b/drivers/sbus/char/envctrl.c @@ -1053,7 +1053,7 @@ static int __init envctrl_init(void) struct linux_ebus *ebus = NULL; struct linux_ebus_device *edev = NULL; struct linux_ebus_child *edev_child = NULL; - int i = 0; + int err, i = 0; for_each_ebus(ebus) { for_each_ebusdev(edev, ebus) { @@ -1108,9 +1108,11 @@ done: udelay(200); /* Register the device as a minor miscellaneous device. */ - if (misc_register(&envctrl_dev)) { + err = misc_register(&envctrl_dev); + if (err) { printk("envctrl: Unable to get misc minor %d\n", envctrl_dev.minor); + goto out_iounmap; } /* Note above traversal routine post-incremented 'i' to accommodate @@ -1125,9 +1127,21 @@ done: i2c_childlist[i].addr, (0 == i) ? ("\n") : (" ")); } - kernel_thread(kenvctrld, NULL, CLONE_FS | CLONE_FILES); + err = kernel_thread(kenvctrld, NULL, CLONE_FS | CLONE_FILES); + if (err) + goto out_deregister; return 0; + +out_deregister: + misc_deregister(&envctrl_dev); +out_iounmap: + iounmap(i2c); + for (i = 0; i < ENVCTRL_MAX_CPU * 2; i++) { + if (i2c_childlist[i].tables) + kfree(i2c_childlist[i].tables); + } + return err; #else return -ENODEV; #endif |
