summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@kernel.bkbits.net>2003-05-29 08:33:37 -0700
committerDavid S. Miller <davem@kernel.bkbits.net>2003-05-29 08:33:37 -0700
commit1f78099a061ff3c652f9fbe5d03f6db74f72b146 (patch)
tree5028ccf356e9e0cde41765def810fe2ac1164f51
parentb6e27b1983b99b216b05e81a1f470f763b1c869f (diff)
parent6196166fad85a2756a504414f479fe8862e8fd4c (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.c6
-rw-r--r--arch/sparc64/kernel/sys_sparc.c6
-rw-r--r--arch/sparc64/kernel/systbls.S6
-rw-r--r--drivers/sbus/char/bbc_envctrl.c6
-rw-r--r--drivers/sbus/char/bbc_i2c.c13
-rw-r--r--drivers/sbus/char/envctrl.c20
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