diff options
-rw-r--r-- | arch/ia64/ia32/Makefile | 4 | ||||
-rw-r--r-- | arch/ia64/ia32/ia32_ioctl.c | 45 | ||||
-rw-r--r-- | arch/mips/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/mips/kernel/ioctl32.c | 50 | ||||
-rw-r--r-- | arch/parisc/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/parisc/kernel/ioctl32.c | 41 | ||||
-rw-r--r-- | arch/powerpc/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/ioctl32.c | 45 | ||||
-rw-r--r-- | arch/s390/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/s390/kernel/compat_ioctl.c | 47 | ||||
-rw-r--r-- | arch/sparc64/kernel/Makefile | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/ioctl32.c | 39 | ||||
-rw-r--r-- | arch/x86_64/ia32/Makefile | 4 | ||||
-rw-r--r-- | arch/x86_64/ia32/ia32_ioctl.c | 32 | ||||
-rw-r--r-- | fs/Makefile | 2 | ||||
-rw-r--r-- | fs/compat_ioctl.c | 37 | ||||
-rw-r--r-- | include/linux/compat_ioctl.h | 8 |
17 files changed, 29 insertions, 341 deletions
diff --git a/arch/ia64/ia32/Makefile b/arch/ia64/ia32/Makefile index 2ed90da81166..61cb60affd95 100644 --- a/arch/ia64/ia32/Makefile +++ b/arch/ia64/ia32/Makefile | |||
@@ -2,11 +2,9 @@ | |||
2 | # Makefile for the ia32 kernel emulation subsystem. | 2 | # Makefile for the ia32 kernel emulation subsystem. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := ia32_entry.o sys_ia32.o ia32_ioctl.o ia32_signal.o \ | 5 | obj-y := ia32_entry.o sys_ia32.o ia32_signal.o \ |
6 | ia32_support.o ia32_traps.o binfmt_elf32.o ia32_ldt.o | 6 | ia32_support.o ia32_traps.o binfmt_elf32.o ia32_ldt.o |
7 | 7 | ||
8 | CFLAGS_ia32_ioctl.o += -Ifs/ | ||
9 | |||
10 | # Don't let GCC uses f16-f31 so that save_ia32_fpstate_live() and | 8 | # Don't let GCC uses f16-f31 so that save_ia32_fpstate_live() and |
11 | # restore_ia32_fpstate_live() can be sure the live register contain user-level state. | 9 | # restore_ia32_fpstate_live() can be sure the live register contain user-level state. |
12 | CFLAGS_ia32_signal.o += -mfixed-range=f16-f31 | 10 | CFLAGS_ia32_signal.o += -mfixed-range=f16-f31 |
diff --git a/arch/ia64/ia32/ia32_ioctl.c b/arch/ia64/ia32/ia32_ioctl.c deleted file mode 100644 index 88739394f6df..000000000000 --- a/arch/ia64/ia32/ia32_ioctl.c +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | /* | ||
2 | * IA32 Architecture-specific ioctl shim code | ||
3 | * | ||
4 | * Copyright (C) 2000 VA Linux Co | ||
5 | * Copyright (C) 2000 Don Dugger <n0ano@valinux.com> | ||
6 | * Copyright (C) 2001-2003 Hewlett-Packard Co | ||
7 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
8 | */ | ||
9 | |||
10 | #include <linux/signal.h> /* argh, msdos_fs.h isn't self-contained... */ | ||
11 | #include <linux/syscalls.h> | ||
12 | #include "ia32priv.h" | ||
13 | |||
14 | #define INCLUDES | ||
15 | #include "compat_ioctl.c" | ||
16 | |||
17 | #define IOCTL_NR(a) ((a) & ~(_IOC_SIZEMASK << _IOC_SIZESHIFT)) | ||
18 | |||
19 | #define DO_IOCTL(fd, cmd, arg) ({ \ | ||
20 | int _ret; \ | ||
21 | mm_segment_t _old_fs = get_fs(); \ | ||
22 | \ | ||
23 | set_fs(KERNEL_DS); \ | ||
24 | _ret = sys_ioctl(fd, cmd, (unsigned long)arg); \ | ||
25 | set_fs(_old_fs); \ | ||
26 | _ret; \ | ||
27 | }) | ||
28 | |||
29 | #define CODE | ||
30 | #include "compat_ioctl.c" | ||
31 | |||
32 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),sys_ioctl) | ||
33 | #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler), NULL }, | ||
34 | #define IOCTL_TABLE_START \ | ||
35 | struct ioctl_trans ioctl_start[] = { | ||
36 | #define IOCTL_TABLE_END \ | ||
37 | }; | ||
38 | |||
39 | IOCTL_TABLE_START | ||
40 | #define DECLARES | ||
41 | #include "compat_ioctl.c" | ||
42 | #include <linux/compat_ioctl.h> | ||
43 | IOCTL_TABLE_END | ||
44 | |||
45 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index 72f2126ad19d..f36c4f20ee8a 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -50,7 +50,7 @@ obj-$(CONFIG_MIPS_BOARDS_GEN) += irq-msc01.o | |||
50 | obj-$(CONFIG_32BIT) += scall32-o32.o | 50 | obj-$(CONFIG_32BIT) += scall32-o32.o |
51 | obj-$(CONFIG_64BIT) += scall64-64.o | 51 | obj-$(CONFIG_64BIT) += scall64-64.o |
52 | obj-$(CONFIG_BINFMT_IRIX) += binfmt_irix.o | 52 | obj-$(CONFIG_BINFMT_IRIX) += binfmt_irix.o |
53 | obj-$(CONFIG_MIPS32_COMPAT) += ioctl32.o linux32.o signal32.o | 53 | obj-$(CONFIG_MIPS32_COMPAT) += linux32.o signal32.o |
54 | obj-$(CONFIG_MIPS32_N32) += binfmt_elfn32.o scall64-n32.o signal_n32.o | 54 | obj-$(CONFIG_MIPS32_N32) += binfmt_elfn32.o scall64-n32.o signal_n32.o |
55 | obj-$(CONFIG_MIPS32_O32) += binfmt_elfo32.o scall64-o32.o ptrace32.o | 55 | obj-$(CONFIG_MIPS32_O32) += binfmt_elfo32.o scall64-o32.o ptrace32.o |
56 | 56 | ||
@@ -60,6 +60,5 @@ obj-$(CONFIG_PROC_FS) += proc.o | |||
60 | obj-$(CONFIG_64BIT) += cpu-bugs64.o | 60 | obj-$(CONFIG_64BIT) += cpu-bugs64.o |
61 | 61 | ||
62 | CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) | 62 | CFLAGS_cpu-bugs64.o = $(shell if $(CC) $(CFLAGS) -Wa,-mdaddi -c -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-DHAVE_AS_SET_DADDI"; fi) |
63 | CFLAGS_ioctl32.o += -Ifs/ | ||
64 | 63 | ||
65 | EXTRA_AFLAGS := $(CFLAGS) | 64 | EXTRA_AFLAGS := $(CFLAGS) |
diff --git a/arch/mips/kernel/ioctl32.c b/arch/mips/kernel/ioctl32.c deleted file mode 100644 index 9ea1fc748864..000000000000 --- a/arch/mips/kernel/ioctl32.c +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | /* | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Copyright (C) 2000 Silicon Graphics, Inc. | ||
5 | * Written by Ulf Carlsson (ulfc@engr.sgi.com) | ||
6 | * Copyright (C) 2000, 2004 Ralf Baechle | ||
7 | * Copyright (C) 2002, 2003 Maciej W. Rozycki | ||
8 | */ | ||
9 | #define INCLUDES | ||
10 | #include "compat_ioctl.c" | ||
11 | |||
12 | #include <linux/config.h> | ||
13 | #include <linux/types.h> | ||
14 | #include <linux/compat.h> | ||
15 | #include <linux/ioctl32.h> | ||
16 | #include <linux/syscalls.h> | ||
17 | |||
18 | #ifdef CONFIG_SIBYTE_TBPROF | ||
19 | #include <asm/sibyte/trace_prof.h> | ||
20 | #endif | ||
21 | |||
22 | #define A(__x) ((unsigned long)(__x)) | ||
23 | |||
24 | long sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg); | ||
25 | |||
26 | #define CODE | ||
27 | #include "compat_ioctl.c" | ||
28 | |||
29 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),sys_ioctl) | ||
30 | #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler), NULL }, | ||
31 | #define IOCTL_TABLE_START \ | ||
32 | struct ioctl_trans ioctl_start[] = { | ||
33 | #define IOCTL_TABLE_END \ | ||
34 | }; | ||
35 | |||
36 | IOCTL_TABLE_START | ||
37 | |||
38 | #include <linux/compat_ioctl.h> | ||
39 | #define DECLARES | ||
40 | #include "compat_ioctl.c" | ||
41 | |||
42 | /*HANDLE_IOCTL(RTC_IRQP_READ, w_long) | ||
43 | COMPATIBLE_IOCTL(RTC_IRQP_SET) | ||
44 | HANDLE_IOCTL(RTC_EPOCH_READ, w_long) | ||
45 | COMPATIBLE_IOCTL(RTC_EPOCH_SET) | ||
46 | */ | ||
47 | |||
48 | IOCTL_TABLE_END | ||
49 | |||
50 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/parisc/kernel/Makefile b/arch/parisc/kernel/Makefile index 171f9c239f60..27827bc3717e 100644 --- a/arch/parisc/kernel/Makefile +++ b/arch/parisc/kernel/Makefile | |||
@@ -6,7 +6,6 @@ extra-y := init_task.o head.o vmlinux.lds | |||
6 | 6 | ||
7 | AFLAGS_entry.o := -traditional | 7 | AFLAGS_entry.o := -traditional |
8 | AFLAGS_pacache.o := -traditional | 8 | AFLAGS_pacache.o := -traditional |
9 | CFLAGS_ioctl32.o := -Ifs/ | ||
10 | 9 | ||
11 | obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \ | 10 | obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \ |
12 | pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ | 11 | pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ |
@@ -19,6 +18,6 @@ obj-$(CONFIG_SMP) += smp.o | |||
19 | obj-$(CONFIG_PA11) += pci-dma.o | 18 | obj-$(CONFIG_PA11) += pci-dma.o |
20 | obj-$(CONFIG_PCI) += pci.o | 19 | obj-$(CONFIG_PCI) += pci.o |
21 | obj-$(CONFIG_MODULES) += module.o | 20 | obj-$(CONFIG_MODULES) += module.o |
22 | obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o ioctl32.o signal32.o | 21 | obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o signal32.o |
23 | # only supported for PCX-W/U in 64-bit mode at the moment | 22 | # only supported for PCX-W/U in 64-bit mode at the moment |
24 | obj-$(CONFIG_64BIT) += perf.o perf_asm.o | 23 | obj-$(CONFIG_64BIT) += perf.o perf_asm.o |
diff --git a/arch/parisc/kernel/ioctl32.c b/arch/parisc/kernel/ioctl32.c deleted file mode 100644 index 805f31486cf9..000000000000 --- a/arch/parisc/kernel/ioctl32.c +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | /* $Id: ioctl32.c,v 1.5 2002/10/18 00:21:43 varenet Exp $ | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) | ||
5 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | ||
6 | * | ||
7 | * These routines maintain argument size conversion between 32bit and 64bit | ||
8 | * ioctls. | ||
9 | */ | ||
10 | |||
11 | #include <linux/syscalls.h> | ||
12 | |||
13 | #define INCLUDES | ||
14 | #include "compat_ioctl.c" | ||
15 | |||
16 | #include <asm/perf.h> | ||
17 | #include <asm/ioctls.h> | ||
18 | |||
19 | #define CODE | ||
20 | #include "compat_ioctl.c" | ||
21 | |||
22 | #define HANDLE_IOCTL(cmd, handler) { cmd, (ioctl_trans_handler_t)handler, NULL }, | ||
23 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd, sys_ioctl) | ||
24 | |||
25 | #define IOCTL_TABLE_START struct ioctl_trans ioctl_start[] = { | ||
26 | #define IOCTL_TABLE_END }; | ||
27 | |||
28 | IOCTL_TABLE_START | ||
29 | #include <linux/compat_ioctl.h> | ||
30 | |||
31 | #define DECLARES | ||
32 | #include "compat_ioctl.c" | ||
33 | |||
34 | /* And these ioctls need translation */ | ||
35 | HANDLE_IOCTL(SIOCGPPPSTATS, dev_ifsioc) | ||
36 | HANDLE_IOCTL(SIOCGPPPCSTATS, dev_ifsioc) | ||
37 | HANDLE_IOCTL(SIOCGPPPVER, dev_ifsioc) | ||
38 | |||
39 | IOCTL_TABLE_END | ||
40 | |||
41 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 6e03b595b6c8..17ed5018288b 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -4,7 +4,6 @@ | |||
4 | 4 | ||
5 | ifeq ($(CONFIG_PPC64),y) | 5 | ifeq ($(CONFIG_PPC64),y) |
6 | EXTRA_CFLAGS += -mno-minimal-toc | 6 | EXTRA_CFLAGS += -mno-minimal-toc |
7 | CFLAGS_ioctl32.o += -Ifs/ | ||
8 | endif | 7 | endif |
9 | ifeq ($(CONFIG_PPC32),y) | 8 | ifeq ($(CONFIG_PPC32),y) |
10 | CFLAGS_prom_init.o += -fPIC | 9 | CFLAGS_prom_init.o += -fPIC |
@@ -16,7 +15,7 @@ obj-y := semaphore.o cputable.o ptrace.o syscalls.o \ | |||
16 | obj-y += vdso32/ | 15 | obj-y += vdso32/ |
17 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ | 16 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ |
18 | signal_64.o ptrace32.o systbl.o \ | 17 | signal_64.o ptrace32.o systbl.o \ |
19 | paca.o ioctl32.o cpu_setup_power4.o \ | 18 | paca.o cpu_setup_power4.o \ |
20 | firmware.o sysfs.o idle_64.o | 19 | firmware.o sysfs.o idle_64.o |
21 | obj-$(CONFIG_PPC64) += vdso64/ | 20 | obj-$(CONFIG_PPC64) += vdso64/ |
22 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o | 21 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o |
diff --git a/arch/powerpc/kernel/ioctl32.c b/arch/powerpc/kernel/ioctl32.c deleted file mode 100644 index 0fa3d27fef01..000000000000 --- a/arch/powerpc/kernel/ioctl32.c +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | /* | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Based on sparc64 ioctl32.c by: | ||
5 | * | ||
6 | * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) | ||
7 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | ||
8 | * | ||
9 | * ppc64 changes: | ||
10 | * | ||
11 | * Copyright (C) 2000 Ken Aaker (kdaaker@rchland.vnet.ibm.com) | ||
12 | * Copyright (C) 2001 Anton Blanchard (antonb@au.ibm.com) | ||
13 | * | ||
14 | * These routines maintain argument size conversion between 32bit and 64bit | ||
15 | * ioctls. | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or | ||
18 | * modify it under the terms of the GNU General Public License | ||
19 | * as published by the Free Software Foundation; either version | ||
20 | * 2 of the License, or (at your option) any later version. | ||
21 | */ | ||
22 | |||
23 | #define INCLUDES | ||
24 | #include "compat_ioctl.c" | ||
25 | #include <linux/syscalls.h> | ||
26 | |||
27 | #define CODE | ||
28 | #include "compat_ioctl.c" | ||
29 | |||
30 | #define HANDLE_IOCTL(cmd,handler) { cmd, (ioctl_trans_handler_t)handler, NULL }, | ||
31 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd,sys_ioctl) | ||
32 | |||
33 | #define IOCTL_TABLE_START \ | ||
34 | struct ioctl_trans ioctl_start[] = { | ||
35 | #define IOCTL_TABLE_END \ | ||
36 | }; | ||
37 | |||
38 | IOCTL_TABLE_START | ||
39 | #include <linux/compat_ioctl.h> | ||
40 | #define DECLARES | ||
41 | #include "compat_ioctl.c" | ||
42 | |||
43 | IOCTL_TABLE_END | ||
44 | |||
45 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile index 4865e4b49464..9269b5788fac 100644 --- a/arch/s390/kernel/Makefile +++ b/arch/s390/kernel/Makefile | |||
@@ -17,8 +17,7 @@ obj-$(CONFIG_MODULES) += s390_ksyms.o module.o | |||
17 | obj-$(CONFIG_SMP) += smp.o | 17 | obj-$(CONFIG_SMP) += smp.o |
18 | 18 | ||
19 | obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ | 19 | obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ |
20 | compat_ioctl.o compat_wrapper.o \ | 20 | compat_wrapper.o compat_exec_domain.o |
21 | compat_exec_domain.o | ||
22 | obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o | 21 | obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o |
23 | 22 | ||
24 | obj-$(CONFIG_VIRT_TIMER) += vtime.o | 23 | obj-$(CONFIG_VIRT_TIMER) += vtime.o |
diff --git a/arch/s390/kernel/compat_ioctl.c b/arch/s390/kernel/compat_ioctl.c deleted file mode 100644 index d716b1768c99..000000000000 --- a/arch/s390/kernel/compat_ioctl.c +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | /* | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * S390 version | ||
5 | * Copyright (C) 2000-2003 IBM Deutschland Entwicklung GmbH, IBM Corporation | ||
6 | * Author(s): Gerhard Tonn (ton@de.ibm.com) | ||
7 | * Arnd Bergmann (arndb@de.ibm.com) | ||
8 | * | ||
9 | * Original implementation from 32-bit Sparc compat code which is | ||
10 | * Copyright (C) 2000 Silicon Graphics, Inc. | ||
11 | * Written by Ulf Carlsson (ulfc@engr.sgi.com) | ||
12 | */ | ||
13 | |||
14 | #include "compat_linux.h" | ||
15 | #define INCLUDES | ||
16 | #define CODE | ||
17 | #include "../../../fs/compat_ioctl.c" | ||
18 | #include <asm/dasd.h> | ||
19 | #include <asm/cmb.h> | ||
20 | #include <asm/tape390.h> | ||
21 | #include <asm/ccwdev.h> | ||
22 | #include "../../../drivers/s390/char/raw3270.h" | ||
23 | |||
24 | static int do_ioctl32_pointer(unsigned int fd, unsigned int cmd, | ||
25 | unsigned long arg, struct file *f) | ||
26 | { | ||
27 | return sys_ioctl(fd, cmd, (unsigned long)compat_ptr(arg)); | ||
28 | } | ||
29 | |||
30 | static int do_ioctl32_ulong(unsigned int fd, unsigned int cmd, | ||
31 | unsigned long arg, struct file *f) | ||
32 | { | ||
33 | return sys_ioctl(fd, cmd, arg); | ||
34 | } | ||
35 | |||
36 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),(ioctl_trans_handler_t)do_ioctl32_pointer) | ||
37 | #define ULONG_IOCTL(cmd) HANDLE_IOCTL((cmd),(ioctl_trans_handler_t)do_ioctl32_ulong) | ||
38 | #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler), NULL }, | ||
39 | |||
40 | struct ioctl_trans ioctl_start[] = { | ||
41 | /* architecture independent ioctls */ | ||
42 | #include <linux/compat_ioctl.h> | ||
43 | #define DECLARES | ||
44 | #include "../../../fs/compat_ioctl.c" | ||
45 | }; | ||
46 | |||
47 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile index 6f00ab8b9d23..83d67eb18895 100644 --- a/arch/sparc64/kernel/Makefile +++ b/arch/sparc64/kernel/Makefile | |||
@@ -16,7 +16,7 @@ obj-y := process.o setup.o cpu.o idprom.o \ | |||
16 | obj-$(CONFIG_PCI) += ebus.o isa.o pci_common.o pci_iommu.o \ | 16 | obj-$(CONFIG_PCI) += ebus.o isa.o pci_common.o pci_iommu.o \ |
17 | pci_psycho.o pci_sabre.o pci_schizo.o | 17 | pci_psycho.o pci_sabre.o pci_schizo.o |
18 | obj-$(CONFIG_SMP) += smp.o trampoline.o | 18 | obj-$(CONFIG_SMP) += smp.o trampoline.o |
19 | obj-$(CONFIG_SPARC32_COMPAT) += sys32.o sys_sparc32.o signal32.o ioctl32.o | 19 | obj-$(CONFIG_SPARC32_COMPAT) += sys32.o sys_sparc32.o signal32.o |
20 | obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o | 20 | obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o |
21 | obj-$(CONFIG_BINFMT_AOUT32) += binfmt_aout32.o | 21 | obj-$(CONFIG_BINFMT_AOUT32) += binfmt_aout32.o |
22 | obj-$(CONFIG_MODULES) += module.o | 22 | obj-$(CONFIG_MODULES) += module.o |
@@ -40,5 +40,3 @@ endif | |||
40 | 40 | ||
41 | head.o: head.S ttable.S itlb_base.S dtlb_base.S dtlb_backend.S dtlb_prot.S \ | 41 | head.o: head.S ttable.S itlb_base.S dtlb_base.S dtlb_backend.S dtlb_prot.S \ |
42 | etrap.S rtrap.S winfixup.S entry.S | 42 | etrap.S rtrap.S winfixup.S entry.S |
43 | |||
44 | CFLAGS_ioctl32.o += -Ifs/ | ||
diff --git a/arch/sparc64/kernel/ioctl32.c b/arch/sparc64/kernel/ioctl32.c deleted file mode 100644 index 196b208665a2..000000000000 --- a/arch/sparc64/kernel/ioctl32.c +++ /dev/null | |||
@@ -1,39 +0,0 @@ | |||
1 | /* $Id: ioctl32.c,v 1.136 2002/01/14 09:49:52 davem Exp $ | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) | ||
5 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | ||
6 | * Copyright (C) 2003 Pavel Machek (pavel@suse.cz) | ||
7 | * | ||
8 | * These routines maintain argument size conversion between 32bit and 64bit | ||
9 | * ioctls. | ||
10 | */ | ||
11 | |||
12 | #define INCLUDES | ||
13 | #include "compat_ioctl.c" | ||
14 | #include <linux/syscalls.h> | ||
15 | |||
16 | #define CODE | ||
17 | #include "compat_ioctl.c" | ||
18 | |||
19 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),sys_ioctl) | ||
20 | #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler), NULL }, | ||
21 | #define IOCTL_TABLE_START \ | ||
22 | struct ioctl_trans ioctl_start[] = { | ||
23 | #define IOCTL_TABLE_END \ | ||
24 | }; | ||
25 | |||
26 | IOCTL_TABLE_START | ||
27 | #include <linux/compat_ioctl.h> | ||
28 | #define DECLARES | ||
29 | #include "compat_ioctl.c" | ||
30 | #if 0 | ||
31 | HANDLE_IOCTL(RTC32_IRQP_READ, do_rtc_ioctl) | ||
32 | HANDLE_IOCTL(RTC32_IRQP_SET, do_rtc_ioctl) | ||
33 | HANDLE_IOCTL(RTC32_EPOCH_READ, do_rtc_ioctl) | ||
34 | HANDLE_IOCTL(RTC32_EPOCH_SET, do_rtc_ioctl) | ||
35 | #endif | ||
36 | /* take care of sizeof(sizeof()) breakage */ | ||
37 | IOCTL_TABLE_END | ||
38 | |||
39 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/x86_64/ia32/Makefile b/arch/x86_64/ia32/Makefile index f76217d8f579..051608d55920 100644 --- a/arch/x86_64/ia32/Makefile +++ b/arch/x86_64/ia32/Makefile | |||
@@ -2,8 +2,7 @@ | |||
2 | # Makefile for the ia32 kernel emulation subsystem. | 2 | # Makefile for the ia32 kernel emulation subsystem. |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_ioctl.o \ | 5 | obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o tls32.o \ |
6 | ia32_signal.o tls32.o \ | ||
7 | ia32_binfmt.o fpu32.o ptrace32.o syscall32.o syscall32_syscall.o | 6 | ia32_binfmt.o fpu32.o ptrace32.o syscall32.o syscall32_syscall.o |
8 | 7 | ||
9 | sysv-$(CONFIG_SYSVIPC) := ipc32.o | 8 | sysv-$(CONFIG_SYSVIPC) := ipc32.o |
@@ -29,4 +28,3 @@ $(obj)/vsyscall-%.so: $(src)/vsyscall.lds $(obj)/vsyscall-%.o FORCE | |||
29 | 28 | ||
30 | AFLAGS_vsyscall-sysenter.o = -m32 | 29 | AFLAGS_vsyscall-sysenter.o = -m32 |
31 | AFLAGS_vsyscall-syscall.o = -m32 | 30 | AFLAGS_vsyscall-syscall.o = -m32 |
32 | CFLAGS_ia32_ioctl.o += -Ifs/ | ||
diff --git a/arch/x86_64/ia32/ia32_ioctl.c b/arch/x86_64/ia32/ia32_ioctl.c deleted file mode 100644 index e11cc5699352..000000000000 --- a/arch/x86_64/ia32/ia32_ioctl.c +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | /* $Id: ia32_ioctl.c,v 1.25 2002/10/11 07:17:06 ak Exp $ | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) | ||
5 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | ||
6 | * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs | ||
7 | * | ||
8 | * These routines maintain argument size conversion between 32bit and 64bit | ||
9 | * ioctls. | ||
10 | */ | ||
11 | |||
12 | #define INCLUDES | ||
13 | #include <linux/syscalls.h> | ||
14 | #include "compat_ioctl.c" | ||
15 | #include <asm/ia32.h> | ||
16 | |||
17 | #define CODE | ||
18 | #include "compat_ioctl.c" | ||
19 | |||
20 | |||
21 | #define HANDLE_IOCTL(cmd,handler) { (cmd), (ioctl_trans_handler_t)(handler) }, | ||
22 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd,sys_ioctl) | ||
23 | |||
24 | struct ioctl_trans ioctl_start[] = { | ||
25 | #include <linux/compat_ioctl.h> | ||
26 | #define DECLARES | ||
27 | #include "compat_ioctl.c" | ||
28 | /* take care of sizeof(sizeof()) breakage */ | ||
29 | }; | ||
30 | |||
31 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
32 | |||
diff --git a/fs/Makefile b/fs/Makefile index 35e9aec608e4..1db711319c80 100644 --- a/fs/Makefile +++ b/fs/Makefile | |||
@@ -14,7 +14,7 @@ obj-y := open.o read_write.o file_table.o buffer.o bio.o super.o \ | |||
14 | 14 | ||
15 | obj-$(CONFIG_INOTIFY) += inotify.o | 15 | obj-$(CONFIG_INOTIFY) += inotify.o |
16 | obj-$(CONFIG_EPOLL) += eventpoll.o | 16 | obj-$(CONFIG_EPOLL) += eventpoll.o |
17 | obj-$(CONFIG_COMPAT) += compat.o | 17 | obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o |
18 | 18 | ||
19 | nfsd-$(CONFIG_NFSD) := nfsctl.o | 19 | nfsd-$(CONFIG_NFSD) := nfsctl.o |
20 | obj-y += $(nfsd-y) $(nfsd-m) | 20 | obj-y += $(nfsd-y) $(nfsd-m) |
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index b9aeacc11c8f..890bc30fbe20 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c | |||
@@ -10,7 +10,6 @@ | |||
10 | * ioctls. | 10 | * ioctls. |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #ifdef INCLUDES | ||
14 | #include <linux/config.h> | 13 | #include <linux/config.h> |
15 | #include <linux/types.h> | 14 | #include <linux/types.h> |
16 | #include <linux/compat.h> | 15 | #include <linux/compat.h> |
@@ -81,13 +80,9 @@ | |||
81 | #include <linux/capi.h> | 80 | #include <linux/capi.h> |
82 | 81 | ||
83 | #include <scsi/scsi.h> | 82 | #include <scsi/scsi.h> |
84 | /* Ugly hack. */ | ||
85 | #undef __KERNEL__ | ||
86 | #include <scsi/scsi_ioctl.h> | 83 | #include <scsi/scsi_ioctl.h> |
87 | #define __KERNEL__ | ||
88 | #include <scsi/sg.h> | 84 | #include <scsi/sg.h> |
89 | 85 | ||
90 | #include <asm/types.h> | ||
91 | #include <asm/uaccess.h> | 86 | #include <asm/uaccess.h> |
92 | #include <linux/ethtool.h> | 87 | #include <linux/ethtool.h> |
93 | #include <linux/mii.h> | 88 | #include <linux/mii.h> |
@@ -95,7 +90,6 @@ | |||
95 | #include <linux/watchdog.h> | 90 | #include <linux/watchdog.h> |
96 | #include <linux/dm-ioctl.h> | 91 | #include <linux/dm-ioctl.h> |
97 | 92 | ||
98 | #include <asm/module.h> | ||
99 | #include <linux/soundcard.h> | 93 | #include <linux/soundcard.h> |
100 | #include <linux/lp.h> | 94 | #include <linux/lp.h> |
101 | #include <linux/ppdev.h> | 95 | #include <linux/ppdev.h> |
@@ -128,11 +122,6 @@ | |||
128 | #include <linux/dvb/frontend.h> | 122 | #include <linux/dvb/frontend.h> |
129 | #include <linux/dvb/video.h> | 123 | #include <linux/dvb/video.h> |
130 | 124 | ||
131 | #undef INCLUDES | ||
132 | #endif | ||
133 | |||
134 | #ifdef CODE | ||
135 | |||
136 | /* Aiee. Someone does not find a difference between int and long */ | 125 | /* Aiee. Someone does not find a difference between int and long */ |
137 | #define EXT2_IOC32_GETFLAGS _IOR('f', 1, int) | 126 | #define EXT2_IOC32_GETFLAGS _IOR('f', 1, int) |
138 | #define EXT2_IOC32_SETFLAGS _IOW('f', 2, int) | 127 | #define EXT2_IOC32_SETFLAGS _IOW('f', 2, int) |
@@ -148,6 +137,12 @@ | |||
148 | #define EXT2_IOC32_GETVERSION _IOR('v', 1, int) | 137 | #define EXT2_IOC32_GETVERSION _IOR('v', 1, int) |
149 | #define EXT2_IOC32_SETVERSION _IOW('v', 2, int) | 138 | #define EXT2_IOC32_SETVERSION _IOW('v', 2, int) |
150 | 139 | ||
140 | static int do_ioctl32_pointer(unsigned int fd, unsigned int cmd, | ||
141 | unsigned long arg, struct file *f) | ||
142 | { | ||
143 | return sys_ioctl(fd, cmd, (unsigned long)compat_ptr(arg)); | ||
144 | } | ||
145 | |||
151 | static int w_long(unsigned int fd, unsigned int cmd, unsigned long arg) | 146 | static int w_long(unsigned int fd, unsigned int cmd, unsigned long arg) |
152 | { | 147 | { |
153 | mm_segment_t old_fs = get_fs(); | 148 | mm_segment_t old_fs = get_fs(); |
@@ -2705,10 +2700,20 @@ static int do_ncp_setprivatedata(unsigned int fd, unsigned int cmd, unsigned lon | |||
2705 | } | 2700 | } |
2706 | #endif | 2701 | #endif |
2707 | 2702 | ||
2708 | #undef CODE | 2703 | #define HANDLE_IOCTL(cmd,handler) \ |
2709 | #endif | 2704 | { (cmd), (ioctl_trans_handler_t)(handler) }, |
2705 | |||
2706 | /* pointer to compatible structure or no argument */ | ||
2707 | #define COMPATIBLE_IOCTL(cmd) \ | ||
2708 | { (cmd), do_ioctl32_pointer }, | ||
2709 | |||
2710 | /* argument is an unsigned long integer, not a pointer */ | ||
2711 | #define ULONG_IOCTL(cmd) \ | ||
2712 | { (cmd), (ioctl_trans_handler_t)sys_ioctl }, | ||
2710 | 2713 | ||
2711 | #ifdef DECLARES | 2714 | |
2715 | struct ioctl_trans ioctl_start[] = { | ||
2716 | #include <linux/compat_ioctl.h> | ||
2712 | HANDLE_IOCTL(MEMREADOOB32, mtd_rw_oob) | 2717 | HANDLE_IOCTL(MEMREADOOB32, mtd_rw_oob) |
2713 | HANDLE_IOCTL(MEMWRITEOOB32, mtd_rw_oob) | 2718 | HANDLE_IOCTL(MEMWRITEOOB32, mtd_rw_oob) |
2714 | #ifdef CONFIG_NET | 2719 | #ifdef CONFIG_NET |
@@ -2921,6 +2926,6 @@ HANDLE_IOCTL(DMX_GET_EVENT, do_dmx_get_event) | |||
2921 | HANDLE_IOCTL(VIDEO_GET_EVENT, do_video_get_event) | 2926 | HANDLE_IOCTL(VIDEO_GET_EVENT, do_video_get_event) |
2922 | HANDLE_IOCTL(VIDEO_STILLPICTURE, do_video_stillpicture) | 2927 | HANDLE_IOCTL(VIDEO_STILLPICTURE, do_video_stillpicture) |
2923 | HANDLE_IOCTL(VIDEO_SET_SPU_PALETTE, do_video_set_spu_palette) | 2928 | HANDLE_IOCTL(VIDEO_SET_SPU_PALETTE, do_video_set_spu_palette) |
2929 | }; | ||
2924 | 2930 | ||
2925 | #undef DECLARES | 2931 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); |
2926 | #endif | ||
diff --git a/include/linux/compat_ioctl.h b/include/linux/compat_ioctl.h index 339878952f12..8fad50f8e389 100644 --- a/include/linux/compat_ioctl.h +++ b/include/linux/compat_ioctl.h | |||
@@ -2,14 +2,6 @@ | |||
2 | * compatible types passed or none at all... Please include | 2 | * compatible types passed or none at all... Please include |
3 | * only stuff that is compatible on *all architectures*. | 3 | * only stuff that is compatible on *all architectures*. |
4 | */ | 4 | */ |
5 | #ifndef COMPATIBLE_IOCTL /* pointer to compatible structure or no argument */ | ||
6 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL((cmd),(ioctl_trans_handler_t)sys_ioctl) | ||
7 | #endif | ||
8 | |||
9 | #ifndef ULONG_IOCTL /* argument is an unsigned long integer, not a pointer */ | ||
10 | #define ULONG_IOCTL(cmd) HANDLE_IOCTL((cmd),(ioctl_trans_handler_t)sys_ioctl) | ||
11 | #endif | ||
12 | |||
13 | 5 | ||
14 | COMPATIBLE_IOCTL(0x4B50) /* KDGHWCLK - not in the kernel, but don't complain */ | 6 | COMPATIBLE_IOCTL(0x4B50) /* KDGHWCLK - not in the kernel, but don't complain */ |
15 | COMPATIBLE_IOCTL(0x4B51) /* KDSHWCLK - not in the kernel, but don't complain */ | 7 | COMPATIBLE_IOCTL(0x4B51) /* KDSHWCLK - not in the kernel, but don't complain */ |