Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] sanitize building of fs/compat_ioctl.c

Now that all these entries in the arch ioctl32.c files are gone [1], we can
build fs/compat_ioctl.c as a normal object and kill tons of cruft. We need a
special do_ioctl32_pointer handler for s390 so the compat_ptr call is done.
This is not needed but harmless on all other architectures. Also remove some
superflous includes in fs/compat_ioctl.c

Tested on ppc64.

[1] parisc still had it's PPP handler left, which is not fully correct
for ppp and besides that ppp uses the generic SIOCPRIV ioctl so it'd
kick in for all netdevice users. We can introduce a proper handler
in one of the next patch series by adding a compat_ioctl method to
struct net_device but for now let's just kill it - parisc doesn't
compile in mainline anyway and I don't want this to block this
patchset.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Matthew Wilcox <willy@debian.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by

Christoph Hellwig and committed by
Linus Torvalds
e6a6d2ef 8262037f

+29 -341
+1 -3
arch/ia64/ia32/Makefile
··· 2 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 6 ia32_support.o ia32_traps.o binfmt_elf32.o ia32_ldt.o 7 - 8 - CFLAGS_ia32_ioctl.o += -Ifs/ 9 7 10 8 # Don't let GCC uses f16-f31 so that save_ia32_fpstate_live() and 11 9 # restore_ia32_fpstate_live() can be sure the live register contain user-level state.
-45
arch/ia64/ia32/ia32_ioctl.c
··· 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);
+1 -2
arch/mips/kernel/Makefile
··· 50 50 obj-$(CONFIG_32BIT) += scall32-o32.o 51 51 obj-$(CONFIG_64BIT) += scall64-64.o 52 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 54 obj-$(CONFIG_MIPS32_N32) += binfmt_elfn32.o scall64-n32.o signal_n32.o 55 55 obj-$(CONFIG_MIPS32_O32) += binfmt_elfo32.o scall64-o32.o ptrace32.o 56 56 ··· 60 60 obj-$(CONFIG_64BIT) += cpu-bugs64.o 61 61 62 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 64 EXTRA_AFLAGS := $(CFLAGS)
-50
arch/mips/kernel/ioctl32.c
··· 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);
+1 -2
arch/parisc/kernel/Makefile
··· 6 6 7 7 AFLAGS_entry.o := -traditional 8 8 AFLAGS_pacache.o := -traditional 9 - CFLAGS_ioctl32.o := -Ifs/ 10 9 11 10 obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \ 12 11 pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ ··· 18 19 obj-$(CONFIG_PA11) += pci-dma.o 19 20 obj-$(CONFIG_PCI) += pci.o 20 21 obj-$(CONFIG_MODULES) += module.o 21 - obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o ioctl32.o signal32.o 22 + obj-$(CONFIG_64BIT) += binfmt_elf32.o sys_parisc32.o signal32.o 22 23 # only supported for PCX-W/U in 64-bit mode at the moment 23 24 obj-$(CONFIG_64BIT) += perf.o perf_asm.o
-41
arch/parisc/kernel/ioctl32.c
··· 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);
+1 -2
arch/powerpc/kernel/Makefile
··· 4 4 5 5 ifeq ($(CONFIG_PPC64),y) 6 6 EXTRA_CFLAGS += -mno-minimal-toc 7 - CFLAGS_ioctl32.o += -Ifs/ 8 7 endif 9 8 ifeq ($(CONFIG_PPC32),y) 10 9 CFLAGS_prom_init.o += -fPIC ··· 15 16 obj-y += vdso32/ 16 17 obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ 17 18 signal_64.o ptrace32.o systbl.o \ 18 - paca.o ioctl32.o cpu_setup_power4.o \ 19 + paca.o cpu_setup_power4.o \ 19 20 firmware.o sysfs.o idle_64.o 20 21 obj-$(CONFIG_PPC64) += vdso64/ 21 22 obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o
-45
arch/powerpc/kernel/ioctl32.c
··· 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);
+1 -2
arch/s390/kernel/Makefile
··· 17 17 obj-$(CONFIG_SMP) += smp.o 18 18 19 19 obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ 20 - compat_ioctl.o compat_wrapper.o \ 21 - compat_exec_domain.o 20 + compat_wrapper.o compat_exec_domain.o 22 21 obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o 23 22 24 23 obj-$(CONFIG_VIRT_TIMER) += vtime.o
-47
arch/s390/kernel/compat_ioctl.c
··· 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);
+1 -3
arch/sparc64/kernel/Makefile
··· 16 16 obj-$(CONFIG_PCI) += ebus.o isa.o pci_common.o pci_iommu.o \ 17 17 pci_psycho.o pci_sabre.o pci_schizo.o 18 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 20 obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o 21 21 obj-$(CONFIG_BINFMT_AOUT32) += binfmt_aout32.o 22 22 obj-$(CONFIG_MODULES) += module.o ··· 40 40 41 41 head.o: head.S ttable.S itlb_base.S dtlb_base.S dtlb_backend.S dtlb_prot.S \ 42 42 etrap.S rtrap.S winfixup.S entry.S 43 - 44 - CFLAGS_ioctl32.o += -Ifs/
-39
arch/sparc64/kernel/ioctl32.c
··· 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);
+1 -3
arch/x86_64/ia32/Makefile
··· 2 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 \ 6 - ia32_signal.o tls32.o \ 5 + obj-$(CONFIG_IA32_EMULATION) := ia32entry.o sys_ia32.o ia32_signal.o tls32.o \ 7 6 ia32_binfmt.o fpu32.o ptrace32.o syscall32.o syscall32_syscall.o 8 7 9 8 sysv-$(CONFIG_SYSVIPC) := ipc32.o ··· 28 29 29 30 AFLAGS_vsyscall-sysenter.o = -m32 30 31 AFLAGS_vsyscall-syscall.o = -m32 31 - CFLAGS_ia32_ioctl.o += -Ifs/
-32
arch/x86_64/ia32/ia32_ioctl.c
··· 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 -
+1 -1
fs/Makefile
··· 14 14 15 15 obj-$(CONFIG_INOTIFY) += inotify.o 16 16 obj-$(CONFIG_EPOLL) += eventpoll.o 17 - obj-$(CONFIG_COMPAT) += compat.o 17 + obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o 18 18 19 19 nfsd-$(CONFIG_NFSD) := nfsctl.o 20 20 obj-y += $(nfsd-y) $(nfsd-m)
+21 -16
fs/compat_ioctl.c
··· 10 10 * ioctls. 11 11 */ 12 12 13 - #ifdef INCLUDES 14 13 #include <linux/config.h> 15 14 #include <linux/types.h> 16 15 #include <linux/compat.h> ··· 80 81 #include <linux/capi.h> 81 82 82 83 #include <scsi/scsi.h> 83 - /* Ugly hack. */ 84 - #undef __KERNEL__ 85 84 #include <scsi/scsi_ioctl.h> 86 - #define __KERNEL__ 87 85 #include <scsi/sg.h> 88 86 89 - #include <asm/types.h> 90 87 #include <asm/uaccess.h> 91 88 #include <linux/ethtool.h> 92 89 #include <linux/mii.h> ··· 90 95 #include <linux/watchdog.h> 91 96 #include <linux/dm-ioctl.h> 92 97 93 - #include <asm/module.h> 94 98 #include <linux/soundcard.h> 95 99 #include <linux/lp.h> 96 100 #include <linux/ppdev.h> ··· 122 128 #include <linux/dvb/frontend.h> 123 129 #include <linux/dvb/video.h> 124 130 125 - #undef INCLUDES 126 - #endif 127 - 128 - #ifdef CODE 129 - 130 131 /* Aiee. Someone does not find a difference between int and long */ 131 132 #define EXT2_IOC32_GETFLAGS _IOR('f', 1, int) 132 133 #define EXT2_IOC32_SETFLAGS _IOW('f', 2, int) ··· 136 147 137 148 #define EXT2_IOC32_GETVERSION _IOR('v', 1, int) 138 149 #define EXT2_IOC32_SETVERSION _IOW('v', 2, int) 150 + 151 + static int do_ioctl32_pointer(unsigned int fd, unsigned int cmd, 152 + unsigned long arg, struct file *f) 153 + { 154 + return sys_ioctl(fd, cmd, (unsigned long)compat_ptr(arg)); 155 + } 139 156 140 157 static int w_long(unsigned int fd, unsigned int cmd, unsigned long arg) 141 158 { ··· 2700 2705 } 2701 2706 #endif 2702 2707 2703 - #undef CODE 2704 - #endif 2708 + #define HANDLE_IOCTL(cmd,handler) \ 2709 + { (cmd), (ioctl_trans_handler_t)(handler) }, 2705 2710 2706 - #ifdef DECLARES 2711 + /* pointer to compatible structure or no argument */ 2712 + #define COMPATIBLE_IOCTL(cmd) \ 2713 + { (cmd), do_ioctl32_pointer }, 2714 + 2715 + /* argument is an unsigned long integer, not a pointer */ 2716 + #define ULONG_IOCTL(cmd) \ 2717 + { (cmd), (ioctl_trans_handler_t)sys_ioctl }, 2718 + 2719 + 2720 + struct ioctl_trans ioctl_start[] = { 2721 + #include <linux/compat_ioctl.h> 2707 2722 HANDLE_IOCTL(MEMREADOOB32, mtd_rw_oob) 2708 2723 HANDLE_IOCTL(MEMWRITEOOB32, mtd_rw_oob) 2709 2724 #ifdef CONFIG_NET ··· 2926 2921 HANDLE_IOCTL(VIDEO_GET_EVENT, do_video_get_event) 2927 2922 HANDLE_IOCTL(VIDEO_STILLPICTURE, do_video_stillpicture) 2928 2923 HANDLE_IOCTL(VIDEO_SET_SPU_PALETTE, do_video_set_spu_palette) 2924 + }; 2929 2925 2930 - #undef DECLARES 2931 - #endif 2926 + int ioctl_table_size = ARRAY_SIZE(ioctl_start);
-8
include/linux/compat_ioctl.h
··· 2 2 * compatible types passed or none at all... Please include 3 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 6 COMPATIBLE_IOCTL(0x4B50) /* KDGHWCLK - not in the kernel, but don't complain */ 15 7 COMPATIBLE_IOCTL(0x4B51) /* KDSHWCLK - not in the kernel, but don't complain */