Signed-off-by: Christoph Hellwig <hch@xxxxxx> Index: linux-2.6/arch/mips/kernel/ioctl32.c =================================================================== --- linux-2.6.orig/arch/mips/kernel/ioctl32.c 2005-09-18 13:46:51.000000000 +0200 +++ linux-2.6/arch/mips/kernel/ioctl32.c 2005-09-19 15:14:05.000000000 +0200 @@ -41,12 +41,6 @@ #define DECLARES #include "compat_ioctl.c" -#ifdef CONFIG_SIBYTE_TBPROF -COMPATIBLE_IOCTL(SBPROF_ZBSTART) -COMPATIBLE_IOCTL(SBPROF_ZBSTOP) -COMPATIBLE_IOCTL(SBPROF_ZBWAITFULL) -#endif /* CONFIG_SIBYTE_TBPROF */ - /*HANDLE_IOCTL(RTC_IRQP_READ, w_long) COMPATIBLE_IOCTL(RTC_IRQP_SET) HANDLE_IOCTL(RTC_EPOCH_READ, w_long) Index: linux-2.6/arch/mips/sibyte/sb1250/bcm1250_tbprof.c =================================================================== --- linux-2.6.orig/arch/mips/sibyte/sb1250/bcm1250_tbprof.c 2005-09-18 13:46:52.000000000 +0200 +++ linux-2.6/arch/mips/sibyte/sb1250/bcm1250_tbprof.c 2005-09-19 15:13:53.000000000 +0200 @@ -28,6 +28,7 @@ #include <linux/fs.h> #include <linux/errno.h> #include <linux/reboot.h> +#include <linux/smp_lock.h> #include <asm/uaccess.h> #include <asm/io.h> #include <asm/sibyte/sb1250.h> @@ -333,13 +334,13 @@ return count; } -static int sbprof_tb_ioctl(struct inode *inode, - struct file *filp, - unsigned int command, - unsigned long arg) +static long sbprof_tb_ioctl(struct file *filp, + unsigned int command, + unsigned long arg) { int error = 0; + lock_kernel(); switch (command) { case SBPROF_ZBSTART: error = sbprof_zbprof_start(filp); @@ -355,6 +356,7 @@ error = -EINVAL; break; } + unlock_kernel(); return error; } @@ -364,7 +366,8 @@ .open = sbprof_tb_open, .release = sbprof_tb_release, .read = sbprof_tb_read, - .ioctl = sbprof_tb_ioctl, + .unlocked_ioctl = sbprof_tb_ioctl, + .comapt_ioctl = sbprof_tb_ioctl, .mmap = NULL, };