diff options
| author | Paul Mackerras <paulus@samba.org> | 2006-05-05 01:45:48 -0400 |
|---|---|---|
| committer | Paul Mackerras <paulus@samba.org> | 2006-05-05 01:45:48 -0400 |
| commit | f18fc729cd2d67b76e24206ee3567c1f6983c358 (patch) | |
| tree | 9dbf177222d94213d9dd82d67de6d905e1a2b278 /include | |
| parent | 5a43ee65620d628ba04deecf241b63b2410b97f2 (diff) | |
| parent | d98550e334715b2d9e45f8f0f4e1608720108640 (diff) | |
Merge ../linux-2.6
Diffstat (limited to 'include')
37 files changed, 628 insertions, 127 deletions
diff --git a/include/asm-arm/arch-imx/imx-uart.h b/include/asm-arm/arch-imx/imx-uart.h new file mode 100644 index 0000000000..3a685e1780 --- /dev/null +++ b/include/asm-arm/arch-imx/imx-uart.h | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #ifndef ASMARM_ARCH_UART_H | ||
| 2 | #define ASMARM_ARCH_UART_H | ||
| 3 | |||
| 4 | #define IMXUART_HAVE_RTSCTS (1<<0) | ||
| 5 | |||
| 6 | struct imxuart_platform_data { | ||
| 7 | unsigned int flags; | ||
| 8 | }; | ||
| 9 | |||
| 10 | #endif | ||
diff --git a/include/asm-arm/arch-ixp4xx/io.h b/include/asm-arm/arch-ixp4xx/io.h index 942b622455..b59520e56f 100644 --- a/include/asm-arm/arch-ixp4xx/io.h +++ b/include/asm-arm/arch-ixp4xx/io.h | |||
| @@ -260,6 +260,12 @@ out: | |||
| 260 | 260 | ||
| 261 | #endif | 261 | #endif |
| 262 | 262 | ||
| 263 | #ifndef CONFIG_PCI | ||
| 264 | |||
| 265 | #define __io(v) v | ||
| 266 | |||
| 267 | #else | ||
| 268 | |||
| 263 | /* | 269 | /* |
| 264 | * IXP4xx does not have a transparent cpu -> PCI I/O translation | 270 | * IXP4xx does not have a transparent cpu -> PCI I/O translation |
| 265 | * window. Instead, it has a set of registers that must be tweaked | 271 | * window. Instead, it has a set of registers that must be tweaked |
| @@ -578,6 +584,7 @@ __ixp4xx_iowrite32_rep(void __iomem *addr, const void *vaddr, u32 count) | |||
| 578 | 584 | ||
| 579 | #define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) | 585 | #define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) |
| 580 | #define ioport_unmap(addr) | 586 | #define ioport_unmap(addr) |
| 587 | #endif // !CONFIG_PCI | ||
| 581 | 588 | ||
| 582 | #endif // __ASM_ARM_ARCH_IO_H | 589 | #endif // __ASM_ARM_ARCH_IO_H |
| 583 | 590 | ||
diff --git a/include/asm-arm/arch-ixp4xx/memory.h b/include/asm-arm/arch-ixp4xx/memory.h index ee211d28a3..af9667b57a 100644 --- a/include/asm-arm/arch-ixp4xx/memory.h +++ b/include/asm-arm/arch-ixp4xx/memory.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | */ | 14 | */ |
| 15 | #define PHYS_OFFSET UL(0x00000000) | 15 | #define PHYS_OFFSET UL(0x00000000) |
| 16 | 16 | ||
| 17 | #ifndef __ASSEMBLY__ | 17 | #if !defined(__ASSEMBLY__) && defined(CONFIG_PCI) |
| 18 | 18 | ||
| 19 | void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes); | 19 | void ixp4xx_adjust_zones(int node, unsigned long *size, unsigned long *holes); |
| 20 | 20 | ||
diff --git a/include/asm-arm/unistd.h b/include/asm-arm/unistd.h index ee8dfea549..26f2f4828e 100644 --- a/include/asm-arm/unistd.h +++ b/include/asm-arm/unistd.h | |||
| @@ -410,7 +410,8 @@ type name(void) { \ | |||
| 410 | __asm__ __volatile__ ( \ | 410 | __asm__ __volatile__ ( \ |
| 411 | __syscall(name) \ | 411 | __syscall(name) \ |
| 412 | : "=r" (__res_r0) \ | 412 | : "=r" (__res_r0) \ |
| 413 | : __SYS_REG_LIST() ); \ | 413 | : __SYS_REG_LIST() \ |
| 414 | : "memory" ); \ | ||
| 414 | __res = __res_r0; \ | 415 | __res = __res_r0; \ |
| 415 | __syscall_return(type,__res); \ | 416 | __syscall_return(type,__res); \ |
| 416 | } | 417 | } |
| @@ -424,7 +425,8 @@ type name(type1 arg1) { \ | |||
| 424 | __asm__ __volatile__ ( \ | 425 | __asm__ __volatile__ ( \ |
| 425 | __syscall(name) \ | 426 | __syscall(name) \ |
| 426 | : "=r" (__res_r0) \ | 427 | : "=r" (__res_r0) \ |
| 427 | : __SYS_REG_LIST( "0" (__r0) ) ); \ | 428 | : __SYS_REG_LIST( "0" (__r0) ) \ |
| 429 | : "memory" ); \ | ||
| 428 | __res = __res_r0; \ | 430 | __res = __res_r0; \ |
| 429 | __syscall_return(type,__res); \ | 431 | __syscall_return(type,__res); \ |
| 430 | } | 432 | } |
| @@ -439,7 +441,8 @@ type name(type1 arg1,type2 arg2) { \ | |||
| 439 | __asm__ __volatile__ ( \ | 441 | __asm__ __volatile__ ( \ |
| 440 | __syscall(name) \ | 442 | __syscall(name) \ |
| 441 | : "=r" (__res_r0) \ | 443 | : "=r" (__res_r0) \ |
| 442 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) ); \ | 444 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1) ) \ |
| 445 | : "memory" ); \ | ||
| 443 | __res = __res_r0; \ | 446 | __res = __res_r0; \ |
| 444 | __syscall_return(type,__res); \ | 447 | __syscall_return(type,__res); \ |
| 445 | } | 448 | } |
| @@ -456,7 +459,8 @@ type name(type1 arg1,type2 arg2,type3 arg3) { \ | |||
| 456 | __asm__ __volatile__ ( \ | 459 | __asm__ __volatile__ ( \ |
| 457 | __syscall(name) \ | 460 | __syscall(name) \ |
| 458 | : "=r" (__res_r0) \ | 461 | : "=r" (__res_r0) \ |
| 459 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) ); \ | 462 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2) ) \ |
| 463 | : "memory" ); \ | ||
| 460 | __res = __res_r0; \ | 464 | __res = __res_r0; \ |
| 461 | __syscall_return(type,__res); \ | 465 | __syscall_return(type,__res); \ |
| 462 | } | 466 | } |
| @@ -474,7 +478,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) { \ | |||
| 474 | __asm__ __volatile__ ( \ | 478 | __asm__ __volatile__ ( \ |
| 475 | __syscall(name) \ | 479 | __syscall(name) \ |
| 476 | : "=r" (__res_r0) \ | 480 | : "=r" (__res_r0) \ |
| 477 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) ); \ | 481 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), "r" (__r3) ) \ |
| 482 | : "memory" ); \ | ||
| 478 | __res = __res_r0; \ | 483 | __res = __res_r0; \ |
| 479 | __syscall_return(type,__res); \ | 484 | __syscall_return(type,__res); \ |
| 480 | } | 485 | } |
| @@ -494,7 +499,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) { \ | |||
| 494 | __syscall(name) \ | 499 | __syscall(name) \ |
| 495 | : "=r" (__res_r0) \ | 500 | : "=r" (__res_r0) \ |
| 496 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ | 501 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ |
| 497 | "r" (__r3), "r" (__r4) ) ); \ | 502 | "r" (__r3), "r" (__r4) ) \ |
| 503 | : "memory" ); \ | ||
| 498 | __res = __res_r0; \ | 504 | __res = __res_r0; \ |
| 499 | __syscall_return(type,__res); \ | 505 | __syscall_return(type,__res); \ |
| 500 | } | 506 | } |
| @@ -514,7 +520,8 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5, type6 arg6 | |||
| 514 | __syscall(name) \ | 520 | __syscall(name) \ |
| 515 | : "=r" (__res_r0) \ | 521 | : "=r" (__res_r0) \ |
| 516 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ | 522 | : __SYS_REG_LIST( "0" (__r0), "r" (__r1), "r" (__r2), \ |
| 517 | "r" (__r3), "r" (__r4), "r" (__r5) ) ); \ | 523 | "r" (__r3), "r" (__r4), "r" (__r5) ) \ |
| 524 | : "memory" ); \ | ||
| 518 | __res = __res_r0; \ | 525 | __res = __res_r0; \ |
| 519 | __syscall_return(type,__res); \ | 526 | __syscall_return(type,__res); \ |
| 520 | } | 527 | } |
diff --git a/include/asm-i386/i387.h b/include/asm-i386/i387.h index 7b1f01191e..bc1d6edae1 100644 --- a/include/asm-i386/i387.h +++ b/include/asm-i386/i387.h | |||
| @@ -58,13 +58,13 @@ static inline void __save_init_fpu( struct task_struct *tsk ) | |||
| 58 | alternative_input( | 58 | alternative_input( |
| 59 | "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4, | 59 | "fnsave %[fx] ;fwait;" GENERIC_NOP8 GENERIC_NOP4, |
| 60 | "fxsave %[fx]\n" | 60 | "fxsave %[fx]\n" |
| 61 | "bt $7,%[fsw] ; jc 1f ; fnclex\n1:", | 61 | "bt $7,%[fsw] ; jnc 1f ; fnclex\n1:", |
| 62 | X86_FEATURE_FXSR, | 62 | X86_FEATURE_FXSR, |
| 63 | [fx] "m" (tsk->thread.i387.fxsave), | 63 | [fx] "m" (tsk->thread.i387.fxsave), |
| 64 | [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory"); | 64 | [fsw] "m" (tsk->thread.i387.fxsave.swd) : "memory"); |
| 65 | /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception | 65 | /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception |
| 66 | is pending. Clear the x87 state here by setting it to fixed | 66 | is pending. Clear the x87 state here by setting it to fixed |
| 67 | values. __per_cpu_offset[0] is a random variable that should be in L1 */ | 67 | values. safe_address is a random variable that should be in L1 */ |
| 68 | alternative_input( | 68 | alternative_input( |
| 69 | GENERIC_NOP8 GENERIC_NOP2, | 69 | GENERIC_NOP8 GENERIC_NOP2, |
| 70 | "emms\n\t" /* clear stack tags */ | 70 | "emms\n\t" /* clear stack tags */ |
diff --git a/include/asm-powerpc/spu.h b/include/asm-powerpc/spu.h index f431d8b0b6..7cfcff3ef0 100644 --- a/include/asm-powerpc/spu.h +++ b/include/asm-powerpc/spu.h | |||
| @@ -117,6 +117,7 @@ struct spu { | |||
| 117 | struct list_head list; | 117 | struct list_head list; |
| 118 | struct list_head sched_list; | 118 | struct list_head sched_list; |
| 119 | int number; | 119 | int number; |
| 120 | int nid; | ||
| 120 | u32 isrc; | 121 | u32 isrc; |
| 121 | u32 node; | 122 | u32 node; |
| 122 | u64 flags; | 123 | u64 flags; |
diff --git a/include/asm-powerpc/topology.h b/include/asm-powerpc/topology.h index 1e19cd00af..87362a0554 100644 --- a/include/asm-powerpc/topology.h +++ b/include/asm-powerpc/topology.h | |||
| @@ -4,6 +4,9 @@ | |||
| 4 | 4 | ||
| 5 | #include <linux/config.h> | 5 | #include <linux/config.h> |
| 6 | 6 | ||
| 7 | struct sys_device; | ||
| 8 | struct device_node; | ||
| 9 | |||
| 7 | #ifdef CONFIG_NUMA | 10 | #ifdef CONFIG_NUMA |
| 8 | 11 | ||
| 9 | #include <asm/mmzone.h> | 12 | #include <asm/mmzone.h> |
| @@ -27,6 +30,8 @@ static inline int node_to_first_cpu(int node) | |||
| 27 | return first_cpu(tmp); | 30 | return first_cpu(tmp); |
| 28 | } | 31 | } |
| 29 | 32 | ||
| 33 | int of_node_to_nid(struct device_node *device); | ||
| 34 | |||
| 30 | #define pcibus_to_node(node) (-1) | 35 | #define pcibus_to_node(node) (-1) |
| 31 | #define pcibus_to_cpumask(bus) (cpu_online_map) | 36 | #define pcibus_to_cpumask(bus) (cpu_online_map) |
| 32 | 37 | ||
| @@ -57,10 +62,29 @@ static inline int node_to_first_cpu(int node) | |||
| 57 | 62 | ||
| 58 | extern void __init dump_numa_cpu_topology(void); | 63 | extern void __init dump_numa_cpu_topology(void); |
| 59 | 64 | ||
| 65 | extern int sysfs_add_device_to_node(struct sys_device *dev, int nid); | ||
| 66 | extern void sysfs_remove_device_from_node(struct sys_device *dev, int nid); | ||
| 67 | |||
| 60 | #else | 68 | #else |
| 61 | 69 | ||
| 70 | static inline int of_node_to_nid(struct device_node *device) | ||
| 71 | { | ||
| 72 | return 0; | ||
| 73 | } | ||
| 74 | |||
| 62 | static inline void dump_numa_cpu_topology(void) {} | 75 | static inline void dump_numa_cpu_topology(void) {} |
| 63 | 76 | ||
| 77 | static inline int sysfs_add_device_to_node(struct sys_device *dev, int nid) | ||
| 78 | { | ||
| 79 | return 0; | ||
| 80 | } | ||
| 81 | |||
| 82 | static inline void sysfs_remove_device_from_node(struct sys_device *dev, | ||
| 83 | int nid) | ||
| 84 | { | ||
| 85 | } | ||
| 86 | |||
| 87 | |||
| 64 | #include <asm-generic/topology.h> | 88 | #include <asm-generic/topology.h> |
| 65 | 89 | ||
| 66 | #endif /* CONFIG_NUMA */ | 90 | #endif /* CONFIG_NUMA */ |
diff --git a/include/asm-powerpc/uaccess.h b/include/asm-powerpc/uaccess.h index 3872e924cd..d83fc29c2b 100644 --- a/include/asm-powerpc/uaccess.h +++ b/include/asm-powerpc/uaccess.h | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | #include <linux/sched.h> | 7 | #include <linux/sched.h> |
| 8 | #include <linux/errno.h> | 8 | #include <linux/errno.h> |
| 9 | #include <asm/processor.h> | 9 | #include <asm/processor.h> |
| 10 | #include <asm/page.h> | ||
| 10 | 11 | ||
| 11 | #define VERIFY_READ 0 | 12 | #define VERIFY_READ 0 |
| 12 | #define VERIFY_WRITE 1 | 13 | #define VERIFY_WRITE 1 |
| @@ -179,9 +180,11 @@ do { \ | |||
| 179 | #define __put_user_nocheck(x, ptr, size) \ | 180 | #define __put_user_nocheck(x, ptr, size) \ |
| 180 | ({ \ | 181 | ({ \ |
| 181 | long __pu_err; \ | 182 | long __pu_err; \ |
| 182 | might_sleep(); \ | 183 | __typeof__(*(ptr)) __user *__pu_addr = (ptr); \ |
| 184 | if (!is_kernel_addr((unsigned long)__pu_addr)) \ | ||
| 185 | might_sleep(); \ | ||
| 183 | __chk_user_ptr(ptr); \ | 186 | __chk_user_ptr(ptr); \ |
| 184 | __put_user_size((x), (ptr), (size), __pu_err); \ | 187 | __put_user_size((x), __pu_addr, (size), __pu_err); \ |
| 185 | __pu_err; \ | 188 | __pu_err; \ |
| 186 | }) | 189 | }) |
| 187 | 190 | ||
| @@ -258,9 +261,11 @@ do { \ | |||
| 258 | ({ \ | 261 | ({ \ |
| 259 | long __gu_err; \ | 262 | long __gu_err; \ |
| 260 | unsigned long __gu_val; \ | 263 | unsigned long __gu_val; \ |
| 264 | const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ | ||
| 261 | __chk_user_ptr(ptr); \ | 265 | __chk_user_ptr(ptr); \ |
| 262 | might_sleep(); \ | 266 | if (!is_kernel_addr((unsigned long)__gu_addr)) \ |
| 263 | __get_user_size(__gu_val, (ptr), (size), __gu_err); \ | 267 | might_sleep(); \ |
| 268 | __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ | ||
| 264 | (x) = (__typeof__(*(ptr)))__gu_val; \ | 269 | (x) = (__typeof__(*(ptr)))__gu_val; \ |
| 265 | __gu_err; \ | 270 | __gu_err; \ |
| 266 | }) | 271 | }) |
| @@ -270,9 +275,11 @@ do { \ | |||
| 270 | ({ \ | 275 | ({ \ |
| 271 | long __gu_err; \ | 276 | long __gu_err; \ |
| 272 | long long __gu_val; \ | 277 | long long __gu_val; \ |
| 278 | const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ | ||
| 273 | __chk_user_ptr(ptr); \ | 279 | __chk_user_ptr(ptr); \ |
| 274 | might_sleep(); \ | 280 | if (!is_kernel_addr((unsigned long)__gu_addr)) \ |
| 275 | __get_user_size(__gu_val, (ptr), (size), __gu_err); \ | 281 | might_sleep(); \ |
| 282 | __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ | ||
| 276 | (x) = (__typeof__(*(ptr)))__gu_val; \ | 283 | (x) = (__typeof__(*(ptr)))__gu_val; \ |
| 277 | __gu_err; \ | 284 | __gu_err; \ |
| 278 | }) | 285 | }) |
diff --git a/include/asm-ppc/commproc.h b/include/asm-ppc/commproc.h index 973e609082..31f362966a 100644 --- a/include/asm-ppc/commproc.h +++ b/include/asm-ppc/commproc.h | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #define CPM_CR_INIT_TX ((ushort)0x0002) | 35 | #define CPM_CR_INIT_TX ((ushort)0x0002) |
| 36 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) | 36 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) |
| 37 | #define CPM_CR_STOP_TX ((ushort)0x0004) | 37 | #define CPM_CR_STOP_TX ((ushort)0x0004) |
| 38 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) | ||
| 38 | #define CPM_CR_RESTART_TX ((ushort)0x0006) | 39 | #define CPM_CR_RESTART_TX ((ushort)0x0006) |
| 39 | #define CPM_CR_CLOSE_RX_BD ((ushort)0x0007) | 40 | #define CPM_CR_CLOSE_RX_BD ((ushort)0x0007) |
| 40 | #define CPM_CR_SET_GADDR ((ushort)0x0008) | 41 | #define CPM_CR_SET_GADDR ((ushort)0x0008) |
diff --git a/include/asm-ppc/cpm2.h b/include/asm-ppc/cpm2.h index b638b87ceb..c70344b910 100644 --- a/include/asm-ppc/cpm2.h +++ b/include/asm-ppc/cpm2.h | |||
| @@ -69,7 +69,7 @@ | |||
| 69 | #define CPM_CR_INIT_TX ((ushort)0x0002) | 69 | #define CPM_CR_INIT_TX ((ushort)0x0002) |
| 70 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) | 70 | #define CPM_CR_HUNT_MODE ((ushort)0x0003) |
| 71 | #define CPM_CR_STOP_TX ((ushort)0x0004) | 71 | #define CPM_CR_STOP_TX ((ushort)0x0004) |
| 72 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) | 72 | #define CPM_CR_GRA_STOP_TX ((ushort)0x0005) |
| 73 | #define CPM_CR_RESTART_TX ((ushort)0x0006) | 73 | #define CPM_CR_RESTART_TX ((ushort)0x0006) |
| 74 | #define CPM_CR_SET_GADDR ((ushort)0x0008) | 74 | #define CPM_CR_SET_GADDR ((ushort)0x0008) |
| 75 | #define CPM_CR_START_IDMA ((ushort)0x0009) | 75 | #define CPM_CR_START_IDMA ((ushort)0x0009) |
diff --git a/include/asm-s390/cache.h b/include/asm-s390/cache.h index e20cdd9074..cdf431b061 100644 --- a/include/asm-s390/cache.h +++ b/include/asm-s390/cache.h | |||
| @@ -16,4 +16,6 @@ | |||
| 16 | 16 | ||
| 17 | #define ARCH_KMALLOC_MINALIGN 8 | 17 | #define ARCH_KMALLOC_MINALIGN 8 |
| 18 | 18 | ||
| 19 | #define __read_mostly __attribute__((__section__(".data.read_mostly"))) | ||
| 20 | |||
| 19 | #endif | 21 | #endif |
diff --git a/include/asm-s390/futex.h b/include/asm-s390/futex.h index 6a332a9f09..40c25e166a 100644 --- a/include/asm-s390/futex.h +++ b/include/asm-s390/futex.h | |||
| @@ -1,6 +1,121 @@ | |||
| 1 | #ifndef _ASM_FUTEX_H | 1 | #ifndef _ASM_S390_FUTEX_H |
| 2 | #define _ASM_FUTEX_H | 2 | #define _ASM_S390_FUTEX_H |
| 3 | 3 | ||
| 4 | #include <asm-generic/futex.h> | 4 | #ifdef __KERNEL__ |
| 5 | 5 | ||
| 6 | #endif | 6 | #include <linux/futex.h> |
| 7 | #include <asm/errno.h> | ||
| 8 | #include <asm/uaccess.h> | ||
| 9 | |||
| 10 | #ifndef __s390x__ | ||
| 11 | #define __futex_atomic_fixup \ | ||
| 12 | ".section __ex_table,\"a\"\n" \ | ||
| 13 | " .align 4\n" \ | ||
| 14 | " .long 0b,2b,1b,2b\n" \ | ||
| 15 | ".previous" | ||
| 16 | #else /* __s390x__ */ | ||
| 17 | #define __futex_atomic_fixup \ | ||
| 18 | ".section __ex_table,\"a\"\n" \ | ||
| 19 | " .align 8\n" \ | ||
| 20 | " .quad 0b,2b,1b,2b\n" \ | ||
| 21 | ".previous" | ||
| 22 | #endif /* __s390x__ */ | ||
| 23 | |||
| 24 | #define __futex_atomic_op(insn, ret, oldval, newval, uaddr, oparg) \ | ||
| 25 | asm volatile(" l %1,0(%6)\n" \ | ||
| 26 | "0: " insn \ | ||
| 27 | " cs %1,%2,0(%6)\n" \ | ||
| 28 | "1: jl 0b\n" \ | ||
| 29 | " lhi %0,0\n" \ | ||
| 30 | "2:\n" \ | ||
| 31 | __futex_atomic_fixup \ | ||
| 32 | : "=d" (ret), "=&d" (oldval), "=&d" (newval), \ | ||
| 33 | "=m" (*uaddr) \ | ||
| 34 | : "0" (-EFAULT), "d" (oparg), "a" (uaddr), \ | ||
| 35 | "m" (*uaddr) : "cc" ); | ||
| 36 | |||
| 37 | static inline int futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | ||
| 38 | { | ||
| 39 | int op = (encoded_op >> 28) & 7; | ||
| 40 | int cmp = (encoded_op >> 24) & 15; | ||
| 41 | int oparg = (encoded_op << 8) >> 20; | ||
| 42 | int cmparg = (encoded_op << 20) >> 20; | ||
| 43 | int oldval = 0, newval, ret; | ||
| 44 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
| 45 | oparg = 1 << oparg; | ||
| 46 | |||
| 47 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | ||
| 48 | return -EFAULT; | ||
| 49 | |||
| 50 | inc_preempt_count(); | ||
| 51 | |||
| 52 | switch (op) { | ||
| 53 | case FUTEX_OP_SET: | ||
| 54 | __futex_atomic_op("lr %2,%5\n", | ||
| 55 | ret, oldval, newval, uaddr, oparg); | ||
| 56 | break; | ||
| 57 | case FUTEX_OP_ADD: | ||
| 58 | __futex_atomic_op("lr %2,%1\nar %2,%5\n", | ||
| 59 | ret, oldval, newval, uaddr, oparg); | ||
| 60 | break; | ||
| 61 | case FUTEX_OP_OR: | ||
| 62 | __futex_atomic_op("lr %2,%1\nor %2,%5\n", | ||
| 63 | ret, oldval, newval, uaddr, oparg); | ||
| 64 | break; | ||
| 65 | case FUTEX_OP_ANDN: | ||
| 66 | __futex_atomic_op("lr %2,%1\nnr %2,%5\n", | ||
| 67 | ret, oldval, newval, uaddr, oparg); | ||
| 68 | break; | ||
| 69 | case FUTEX_OP_XOR: | ||
| 70 | __futex_atomic_op("lr %2,%1\nxr %2,%5\n", | ||
| 71 | ret, oldval, newval, uaddr, oparg); | ||
| 72 | break; | ||
| 73 | default: | ||
| 74 | ret = -ENOSYS; | ||
| 75 | } | ||
| 76 | |||
| 77 | dec_preempt_count(); | ||
| 78 | |||
| 79 | if (!ret) { | ||
| 80 | switch (cmp) { | ||
| 81 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
| 82 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
| 83 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
| 84 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
| 85 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
| 86 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
| 87 | default: ret = -ENOSYS; | ||
| 88 | } | ||
| 89 | } | ||
| 90 | return ret; | ||
| 91 | } | ||
| 92 | |||
| 93 | static inline int | ||
| 94 | futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | ||
| 95 | { | ||
| 96 | int ret; | ||
| 97 | |||
| 98 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | ||
| 99 | return -EFAULT; | ||
| 100 | asm volatile(" cs %1,%4,0(%5)\n" | ||
| 101 | "0: lr %0,%1\n" | ||
| 102 | "1:\n" | ||
| 103 | #ifndef __s390x__ | ||
| 104 | ".section __ex_table,\"a\"\n" | ||
| 105 | " .align 4\n" | ||
| 106 | " .long 0b,1b\n" | ||
| 107 | ".previous" | ||
| 108 | #else /* __s390x__ */ | ||
| 109 | ".section __ex_table,\"a\"\n" | ||
| 110 | " .align 8\n" | ||
| 111 | " .quad 0b,1b\n" | ||
| 112 | ".previous" | ||
| 113 | #endif /* __s390x__ */ | ||
| 114 | : "=d" (ret), "+d" (oldval), "=m" (*uaddr) | ||
| 115 | : "0" (-EFAULT), "d" (newval), "a" (uaddr), "m" (*uaddr) | ||
| 116 | : "cc", "memory" ); | ||
| 117 | return oldval; | ||
| 118 | } | ||
| 119 | |||
| 120 | #endif /* __KERNEL__ */ | ||
| 121 | #endif /* _ASM_S390_FUTEX_H */ | ||
diff --git a/include/asm-sparc/unistd.h b/include/asm-sparc/unistd.h index 32a48f623e..f5611a721f 100644 --- a/include/asm-sparc/unistd.h +++ b/include/asm-sparc/unistd.h | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #define __NR_capset 22 /* Linux Specific */ | 41 | #define __NR_capset 22 /* Linux Specific */ |
| 42 | #define __NR_setuid 23 /* Implemented via setreuid in SunOS */ | 42 | #define __NR_setuid 23 /* Implemented via setreuid in SunOS */ |
| 43 | #define __NR_getuid 24 /* Common */ | 43 | #define __NR_getuid 24 /* Common */ |
| 44 | /* #define __NR_time alias 25 ENOSYS under SunOS */ | 44 | #define __NR_vmsplice 25 /* ENOSYS under SunOS */ |
| 45 | #define __NR_ptrace 26 /* Common */ | 45 | #define __NR_ptrace 26 /* Common */ |
| 46 | #define __NR_alarm 27 /* Implemented via setitimer in SunOS */ | 46 | #define __NR_alarm 27 /* Implemented via setitimer in SunOS */ |
| 47 | #define __NR_sigaltstack 28 /* Common */ | 47 | #define __NR_sigaltstack 28 /* Common */ |
diff --git a/include/asm-sparc64/tlbflush.h b/include/asm-sparc64/tlbflush.h index 9ad5d9c51d..e3a7c453b5 100644 --- a/include/asm-sparc64/tlbflush.h +++ b/include/asm-sparc64/tlbflush.h | |||
| @@ -22,8 +22,6 @@ extern void flush_tlb_pending(void); | |||
| 22 | /* Local cpu only. */ | 22 | /* Local cpu only. */ |
| 23 | extern void __flush_tlb_all(void); | 23 | extern void __flush_tlb_all(void); |
| 24 | 24 | ||
| 25 | extern void __flush_tlb_page(unsigned long context, unsigned long page, unsigned long r); | ||
| 26 | |||
| 27 | extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); | 25 | extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); |
| 28 | 26 | ||
| 29 | #ifndef CONFIG_SMP | 27 | #ifndef CONFIG_SMP |
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h index ca80e8aca1..68705748be 100644 --- a/include/asm-sparc64/unistd.h +++ b/include/asm-sparc64/unistd.h | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | #define __NR_capset 22 /* Linux Specific */ | 41 | #define __NR_capset 22 /* Linux Specific */ |
| 42 | #define __NR_setuid 23 /* Implemented via setreuid in SunOS */ | 42 | #define __NR_setuid 23 /* Implemented via setreuid in SunOS */ |
| 43 | #define __NR_getuid 24 /* Common */ | 43 | #define __NR_getuid 24 /* Common */ |
| 44 | /* #define __NR_time alias 25 ENOSYS under SunOS */ | 44 | #define __NR_vmsplice 25 /* ENOSYS under SunOS */ |
| 45 | #define __NR_ptrace 26 /* Common */ | 45 | #define __NR_ptrace 26 /* Common */ |
| 46 | #define __NR_alarm 27 /* Implemented via setitimer in SunOS */ | 46 | #define __NR_alarm 27 /* Implemented via setitimer in SunOS */ |
| 47 | #define __NR_sigaltstack 28 /* Common */ | 47 | #define __NR_sigaltstack 28 /* Common */ |
diff --git a/include/asm-xtensa/signal.h b/include/asm-xtensa/signal.h index 5d6fc9cdf5..a99c9aec64 100644 --- a/include/asm-xtensa/signal.h +++ b/include/asm-xtensa/signal.h | |||
| @@ -118,9 +118,9 @@ typedef struct { | |||
| 118 | * SA_INTERRUPT is also used by the irq handling routines. | 118 | * SA_INTERRUPT is also used by the irq handling routines. |
| 119 | * SA_SHIRQ is for shared interrupt support on PCI and EISA. | 119 | * SA_SHIRQ is for shared interrupt support on PCI and EISA. |
| 120 | */ | 120 | */ |
| 121 | #define SA_PROBE SA_ONESHOT | ||
| 122 | #define SA_SAMPLE_RANDOM SA_RESTART | 121 | #define SA_SAMPLE_RANDOM SA_RESTART |
| 123 | #define SA_SHIRQ 0x04000000 | 122 | #define SA_SHIRQ 0x04000000 |
| 123 | #define SA_PROBEIRQ 0x08000000 | ||
| 124 | #endif | 124 | #endif |
| 125 | 125 | ||
| 126 | #define SIG_BLOCK 0 /* for blocking signals */ | 126 | #define SIG_BLOCK 0 /* for blocking signals */ |
diff --git a/include/linux/audit.h b/include/linux/audit.h index 1c47c59058..b74c148f14 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -83,6 +83,7 @@ | |||
| 83 | #define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */ | 83 | #define AUDIT_CONFIG_CHANGE 1305 /* Audit system configuration change */ |
| 84 | #define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */ | 84 | #define AUDIT_SOCKADDR 1306 /* sockaddr copied as syscall arg */ |
| 85 | #define AUDIT_CWD 1307 /* Current working directory */ | 85 | #define AUDIT_CWD 1307 /* Current working directory */ |
| 86 | #define AUDIT_IPC_SET_PERM 1311 /* IPC new permissions record type */ | ||
| 86 | 87 | ||
| 87 | #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ | 88 | #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */ |
| 88 | #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ | 89 | #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */ |
| @@ -145,6 +146,11 @@ | |||
| 145 | #define AUDIT_PERS 10 | 146 | #define AUDIT_PERS 10 |
| 146 | #define AUDIT_ARCH 11 | 147 | #define AUDIT_ARCH 11 |
| 147 | #define AUDIT_MSGTYPE 12 | 148 | #define AUDIT_MSGTYPE 12 |
| 149 | #define AUDIT_SE_USER 13 /* security label user */ | ||
| 150 | #define AUDIT_SE_ROLE 14 /* security label role */ | ||
| 151 | #define AUDIT_SE_TYPE 15 /* security label type */ | ||
| 152 | #define AUDIT_SE_SEN 16 /* security label sensitivity label */ | ||
| 153 | #define AUDIT_SE_CLR 17 /* security label clearance label */ | ||
| 148 | 154 | ||
| 149 | /* These are ONLY useful when checking | 155 | /* These are ONLY useful when checking |
| 150 | * at syscall exit time (AUDIT_AT_EXIT). */ | 156 | * at syscall exit time (AUDIT_AT_EXIT). */ |
| @@ -287,10 +293,10 @@ struct netlink_skb_parms; | |||
| 287 | /* Public API */ | 293 | /* Public API */ |
| 288 | extern int audit_alloc(struct task_struct *task); | 294 | extern int audit_alloc(struct task_struct *task); |
| 289 | extern void audit_free(struct task_struct *task); | 295 | extern void audit_free(struct task_struct *task); |
| 290 | extern void audit_syscall_entry(struct task_struct *task, int arch, | 296 | extern void audit_syscall_entry(int arch, |
| 291 | int major, unsigned long a0, unsigned long a1, | 297 | int major, unsigned long a0, unsigned long a1, |
| 292 | unsigned long a2, unsigned long a3); | 298 | unsigned long a2, unsigned long a3); |
| 293 | extern void audit_syscall_exit(struct task_struct *task, int failed, long return_code); | 299 | extern void audit_syscall_exit(int failed, long return_code); |
| 294 | extern void audit_getname(const char *name); | 300 | extern void audit_getname(const char *name); |
| 295 | extern void audit_putname(const char *name); | 301 | extern void audit_putname(const char *name); |
| 296 | extern void __audit_inode(const char *name, const struct inode *inode, unsigned flags); | 302 | extern void __audit_inode(const char *name, const struct inode *inode, unsigned flags); |
| @@ -314,7 +320,8 @@ extern void auditsc_get_stamp(struct audit_context *ctx, | |||
| 314 | struct timespec *t, unsigned int *serial); | 320 | struct timespec *t, unsigned int *serial); |
| 315 | extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); | 321 | extern int audit_set_loginuid(struct task_struct *task, uid_t loginuid); |
| 316 | extern uid_t audit_get_loginuid(struct audit_context *ctx); | 322 | extern uid_t audit_get_loginuid(struct audit_context *ctx); |
| 317 | extern int audit_ipc_perms(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp); | 323 | extern int audit_ipc_obj(struct kern_ipc_perm *ipcp); |
| 324 | extern int audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, mode_t mode, struct kern_ipc_perm *ipcp); | ||
| 318 | extern int audit_socketcall(int nargs, unsigned long *args); | 325 | extern int audit_socketcall(int nargs, unsigned long *args); |
| 319 | extern int audit_sockaddr(int len, void *addr); | 326 | extern int audit_sockaddr(int len, void *addr); |
| 320 | extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt); | 327 | extern int audit_avc_path(struct dentry *dentry, struct vfsmount *mnt); |
| @@ -323,8 +330,8 @@ extern int audit_set_macxattr(const char *name); | |||
| 323 | #else | 330 | #else |
| 324 | #define audit_alloc(t) ({ 0; }) | 331 | #define audit_alloc(t) ({ 0; }) |
| 325 | #define audit_free(t) do { ; } while (0) | 332 | #define audit_free(t) do { ; } while (0) |
| 326 | #define audit_syscall_entry(t,ta,a,b,c,d,e) do { ; } while (0) | 333 | #define audit_syscall_entry(ta,a,b,c,d,e) do { ; } while (0) |
| 327 | #define audit_syscall_exit(t,f,r) do { ; } while (0) | 334 | #define audit_syscall_exit(f,r) do { ; } while (0) |
| 328 | #define audit_getname(n) do { ; } while (0) | 335 | #define audit_getname(n) do { ; } while (0) |
| 329 | #define audit_putname(n) do { ; } while (0) | 336 | #define audit_putname(n) do { ; } while (0) |
| 330 | #define __audit_inode(n,i,f) do { ; } while (0) | 337 | #define __audit_inode(n,i,f) do { ; } while (0) |
| @@ -333,7 +340,8 @@ extern int audit_set_macxattr(const char *name); | |||
| 333 | #define audit_inode_child(d,i,p) do { ; } while (0) | 340 | #define audit_inode_child(d,i,p) do { ; } while (0) |
| 334 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) | 341 | #define auditsc_get_stamp(c,t,s) do { BUG(); } while (0) |
| 335 | #define audit_get_loginuid(c) ({ -1; }) | 342 | #define audit_get_loginuid(c) ({ -1; }) |
| 336 | #define audit_ipc_perms(q,u,g,m,i) ({ 0; }) | 343 | #define audit_ipc_obj(i) ({ 0; }) |
| 344 | #define audit_ipc_set_perm(q,u,g,m,i) ({ 0; }) | ||
| 337 | #define audit_socketcall(n,a) ({ 0; }) | 345 | #define audit_socketcall(n,a) ({ 0; }) |
| 338 | #define audit_sockaddr(len, addr) ({ 0; }) | 346 | #define audit_sockaddr(len, addr) ({ 0; }) |
| 339 | #define audit_avc_path(dentry, mnt) ({ 0; }) | 347 | #define audit_avc_path(dentry, mnt) ({ 0; }) |
| @@ -366,7 +374,7 @@ extern void audit_log_d_path(struct audit_buffer *ab, | |||
| 366 | extern int audit_filter_user(struct netlink_skb_parms *cb, int type); | 374 | extern int audit_filter_user(struct netlink_skb_parms *cb, int type); |
| 367 | extern int audit_filter_type(int type); | 375 | extern int audit_filter_type(int type); |
| 368 | extern int audit_receive_filter(int type, int pid, int uid, int seq, | 376 | extern int audit_receive_filter(int type, int pid, int uid, int seq, |
| 369 | void *data, size_t datasz, uid_t loginuid); | 377 | void *data, size_t datasz, uid_t loginuid, u32 sid); |
| 370 | #else | 378 | #else |
| 371 | #define audit_log(c,g,t,f,...) do { ; } while (0) | 379 | #define audit_log(c,g,t,f,...) do { ; } while (0) |
| 372 | #define audit_log_start(c,g,t) ({ NULL; }) | 380 | #define audit_log_start(c,g,t) ({ NULL; }) |
diff --git a/include/linux/fs_uart_pd.h b/include/linux/fs_uart_pd.h new file mode 100644 index 0000000000..f5975126b7 --- /dev/null +++ b/include/linux/fs_uart_pd.h | |||
| @@ -0,0 +1,60 @@ | |||
| 1 | /* | ||
| 2 | * Platform information definitions for the CPM Uart driver. | ||
| 3 | * | ||
| 4 | * 2006 (c) MontaVista Software, Inc. | ||
| 5 | * Vitaly Bordug <vbordug@ru.mvista.com> | ||
| 6 | * | ||
| 7 | * This file is licensed under the terms of the GNU General Public License | ||
| 8 | * version 2. This program is licensed "as is" without any warranty of any | ||
| 9 | * kind, whether express or implied. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef FS_UART_PD_H | ||
| 13 | #define FS_UART_PD_H | ||
| 14 | |||
| 15 | #include <linux/version.h> | ||
| 16 | #include <asm/types.h> | ||
| 17 | |||
| 18 | enum fs_uart_id { | ||
| 19 | fsid_smc1_uart, | ||
| 20 | fsid_smc2_uart, | ||
| 21 | fsid_scc1_uart, | ||
| 22 | fsid_scc2_uart, | ||
| 23 | fsid_scc3_uart, | ||
| 24 | fsid_scc4_uart, | ||
| 25 | fs_uart_nr, | ||
| 26 | }; | ||
| 27 | |||
| 28 | static inline int fs_uart_id_scc2fsid(int id) | ||
| 29 | { | ||
| 30 | return fsid_scc1_uart + id - 1; | ||
| 31 | } | ||
| 32 | |||
| 33 | static inline int fs_uart_id_fsid2scc(int id) | ||
| 34 | { | ||
| 35 | return id - fsid_scc1_uart + 1; | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline int fs_uart_id_smc2fsid(int id) | ||
| 39 | { | ||
| 40 | return fsid_smc1_uart + id - 1; | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline int fs_uart_id_fsid2smc(int id) | ||
| 44 | { | ||
| 45 | return id - fsid_smc1_uart + 1; | ||
| 46 | } | ||
| 47 | |||
| 48 | struct fs_uart_platform_info { | ||
| 49 | void(*init_ioports)(void); | ||
| 50 | /* device specific information */ | ||
| 51 | int fs_no; /* controller index */ | ||
| 52 | u32 uart_clk; | ||
| 53 | u8 tx_num_fifo; | ||
| 54 | u8 tx_buf_size; | ||
| 55 | u8 rx_num_fifo; | ||
| 56 | u8 rx_buf_size; | ||
| 57 | u8 brg; | ||
| 58 | }; | ||
| 59 | |||
| 60 | #endif | ||
diff --git a/include/linux/input.h b/include/linux/input.h index b0e612dda0..50e338d2ff 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -12,8 +12,6 @@ | |||
| 12 | #ifdef __KERNEL__ | 12 | #ifdef __KERNEL__ |
| 13 | #include <linux/time.h> | 13 | #include <linux/time.h> |
| 14 | #include <linux/list.h> | 14 | #include <linux/list.h> |
| 15 | #include <linux/device.h> | ||
| 16 | #include <linux/mod_devicetable.h> | ||
| 17 | #else | 15 | #else |
| 18 | #include <sys/time.h> | 16 | #include <sys/time.h> |
| 19 | #include <sys/ioctl.h> | 17 | #include <sys/ioctl.h> |
| @@ -58,6 +56,8 @@ struct input_absinfo { | |||
| 58 | 56 | ||
| 59 | #define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ | 57 | #define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */ |
| 60 | #define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ | 58 | #define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */ |
| 59 | #define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */ | ||
| 60 | #define EVIOCSREP _IOW('E', 0x03, int[2]) /* set repeat settings */ | ||
| 61 | #define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ | 61 | #define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */ |
| 62 | #define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ | 62 | #define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */ |
| 63 | 63 | ||
| @@ -577,15 +577,15 @@ struct input_absinfo { | |||
| 577 | * Switch events | 577 | * Switch events |
| 578 | */ | 578 | */ |
| 579 | 579 | ||
| 580 | #define SW_0 0x00 | 580 | #define SW_0 0x00 |
| 581 | #define SW_1 0x01 | 581 | #define SW_1 0x01 |
| 582 | #define SW_2 0x02 | 582 | #define SW_2 0x02 |
| 583 | #define SW_3 0x03 | 583 | #define SW_3 0x03 |
| 584 | #define SW_4 0x04 | 584 | #define SW_4 0x04 |
| 585 | #define SW_5 0x05 | 585 | #define SW_5 0x05 |
| 586 | #define SW_6 0x06 | 586 | #define SW_6 0x06 |
| 587 | #define SW_7 0x07 | 587 | #define SW_7 0x07 |
| 588 | #define SW_MAX 0x0f | 588 | #define SW_MAX 0x0f |
| 589 | 589 | ||
| 590 | /* | 590 | /* |
| 591 | * Misc events | 591 | * Misc events |
| @@ -805,52 +805,16 @@ struct ff_effect { | |||
| 805 | 805 | ||
| 806 | #define FF_MAX 0x7f | 806 | #define FF_MAX 0x7f |
| 807 | 807 | ||
| 808 | struct input_device_id { | ||
| 809 | |||
| 810 | kernel_ulong_t flags; | ||
| 811 | |||
| 812 | struct input_id id; | ||
| 813 | |||
| 814 | kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1]; | ||
| 815 | kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1]; | ||
| 816 | kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1]; | ||
| 817 | kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1]; | ||
| 818 | kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1]; | ||
| 819 | kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1]; | ||
| 820 | kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1]; | ||
| 821 | kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1]; | ||
| 822 | kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1]; | ||
| 823 | |||
| 824 | kernel_ulong_t driver_info; | ||
| 825 | }; | ||
| 826 | |||
| 827 | /* | ||
| 828 | * Structure for hotplug & device<->driver matching. | ||
| 829 | */ | ||
| 830 | |||
| 831 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | ||
| 832 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 | ||
| 833 | #define INPUT_DEVICE_ID_MATCH_PRODUCT 4 | ||
| 834 | #define INPUT_DEVICE_ID_MATCH_VERSION 8 | ||
| 835 | |||
| 836 | #define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 | ||
| 837 | #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 | ||
| 838 | #define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 | ||
| 839 | #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 | ||
| 840 | #define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 | ||
| 841 | #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 | ||
| 842 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 | ||
| 843 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 | ||
| 844 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 | ||
| 845 | |||
| 846 | #ifdef __KERNEL__ | 808 | #ifdef __KERNEL__ |
| 847 | 809 | ||
| 848 | /* | 810 | /* |
| 849 | * In-kernel definitions. | 811 | * In-kernel definitions. |
| 850 | */ | 812 | */ |
| 851 | 813 | ||
| 814 | #include <linux/device.h> | ||
| 852 | #include <linux/fs.h> | 815 | #include <linux/fs.h> |
| 853 | #include <linux/timer.h> | 816 | #include <linux/timer.h> |
| 817 | #include <linux/mod_devicetable.h> | ||
| 854 | 818 | ||
| 855 | #define NBITS(x) (((x)/BITS_PER_LONG)+1) | 819 | #define NBITS(x) (((x)/BITS_PER_LONG)+1) |
| 856 | #define BIT(x) (1UL<<((x)%BITS_PER_LONG)) | 820 | #define BIT(x) (1UL<<((x)%BITS_PER_LONG)) |
| @@ -951,9 +915,49 @@ struct input_dev { | |||
| 951 | }; | 915 | }; |
| 952 | #define to_input_dev(d) container_of(d, struct input_dev, cdev) | 916 | #define to_input_dev(d) container_of(d, struct input_dev, cdev) |
| 953 | 917 | ||
| 954 | #define INPUT_DEVICE_ID_MATCH_DEVICE\ | 918 | /* |
| 919 | * Verify that we are in sync with input_device_id mod_devicetable.h #defines | ||
| 920 | */ | ||
| 921 | |||
| 922 | #if EV_MAX != INPUT_DEVICE_ID_EV_MAX | ||
| 923 | #error "EV_MAX and INPUT_DEVICE_ID_EV_MAX do not match" | ||
| 924 | #endif | ||
| 925 | |||
| 926 | #if KEY_MAX != INPUT_DEVICE_ID_KEY_MAX | ||
| 927 | #error "KEY_MAX and INPUT_DEVICE_ID_KEY_MAX do not match" | ||
| 928 | #endif | ||
| 929 | |||
| 930 | #if REL_MAX != INPUT_DEVICE_ID_REL_MAX | ||
| 931 | #error "REL_MAX and INPUT_DEVICE_ID_REL_MAX do not match" | ||
| 932 | #endif | ||
| 933 | |||
| 934 | #if ABS_MAX != INPUT_DEVICE_ID_ABS_MAX | ||
| 935 | #error "ABS_MAX and INPUT_DEVICE_ID_ABS_MAX do not match" | ||
| 936 | #endif | ||
| 937 | |||
| 938 | #if MSC_MAX != INPUT_DEVICE_ID_MSC_MAX | ||
| 939 | #error "MSC_MAX and INPUT_DEVICE_ID_MSC_MAX do not match" | ||
| 940 | #endif | ||
| 941 | |||
| 942 | #if LED_MAX != INPUT_DEVICE_ID_LED_MAX | ||
| 943 | #error "LED_MAX and INPUT_DEVICE_ID_LED_MAX do not match" | ||
| 944 | #endif | ||
| 945 | |||
| 946 | #if SND_MAX != INPUT_DEVICE_ID_SND_MAX | ||
| 947 | #error "SND_MAX and INPUT_DEVICE_ID_SND_MAX do not match" | ||
| 948 | #endif | ||
| 949 | |||
| 950 | #if FF_MAX != INPUT_DEVICE_ID_FF_MAX | ||
| 951 | #error "FF_MAX and INPUT_DEVICE_ID_FF_MAX do not match" | ||
| 952 | #endif | ||
| 953 | |||
| 954 | #if SW_MAX != INPUT_DEVICE_ID_SW_MAX | ||
| 955 | #error "SW_MAX and INPUT_DEVICE_ID_SW_MAX do not match" | ||
| 956 | #endif | ||
| 957 | |||
| 958 | #define INPUT_DEVICE_ID_MATCH_DEVICE \ | ||
| 955 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) | 959 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) |
| 956 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ | 960 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION \ |
| 957 | (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) | 961 | (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) |
| 958 | 962 | ||
| 959 | struct input_handle; | 963 | struct input_handle; |
| @@ -1016,7 +1020,8 @@ static inline void input_put_device(struct input_dev *dev) | |||
| 1016 | 1020 | ||
| 1017 | static inline void input_free_device(struct input_dev *dev) | 1021 | static inline void input_free_device(struct input_dev *dev) |
| 1018 | { | 1022 | { |
| 1019 | input_put_device(dev); | 1023 | if (dev) |
| 1024 | input_put_device(dev); | ||
| 1020 | } | 1025 | } |
| 1021 | 1026 | ||
| 1022 | int input_register_device(struct input_dev *); | 1027 | int input_register_device(struct input_dev *); |
diff --git a/include/linux/list.h b/include/linux/list.h index 67258b47e9..76f0571834 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
| @@ -619,7 +619,7 @@ static inline void hlist_del_rcu(struct hlist_node *n) | |||
| 619 | 619 | ||
| 620 | static inline void hlist_del_init(struct hlist_node *n) | 620 | static inline void hlist_del_init(struct hlist_node *n) |
| 621 | { | 621 | { |
| 622 | if (n->pprev) { | 622 | if (!hlist_unhashed(n)) { |
| 623 | __hlist_del(n); | 623 | __hlist_del(n); |
| 624 | INIT_HLIST_NODE(n); | 624 | INIT_HLIST_NODE(n); |
| 625 | } | 625 | } |
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h index 30dd978c1e..991a37382a 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h | |||
| @@ -28,6 +28,7 @@ struct mmc_csd { | |||
| 28 | unsigned short cmdclass; | 28 | unsigned short cmdclass; |
| 29 | unsigned short tacc_clks; | 29 | unsigned short tacc_clks; |
| 30 | unsigned int tacc_ns; | 30 | unsigned int tacc_ns; |
| 31 | unsigned int r2w_factor; | ||
| 31 | unsigned int max_dtr; | 32 | unsigned int max_dtr; |
| 32 | unsigned int read_blkbits; | 33 | unsigned int read_blkbits; |
| 33 | unsigned int write_blkbits; | 34 | unsigned int write_blkbits; |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 7b08c11ec4..f697770858 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
| @@ -249,4 +249,52 @@ struct i2c_device_id { | |||
| 249 | __u16 id; | 249 | __u16 id; |
| 250 | }; | 250 | }; |
| 251 | 251 | ||
| 252 | /* Input */ | ||
| 253 | #define INPUT_DEVICE_ID_EV_MAX 0x1f | ||
| 254 | #define INPUT_DEVICE_ID_KEY_MAX 0x1ff | ||
| 255 | #define INPUT_DEVICE_ID_REL_MAX 0x0f | ||
| 256 | #define INPUT_DEVICE_ID_ABS_MAX 0x3f | ||
| 257 | #define INPUT_DEVICE_ID_MSC_MAX 0x07 | ||
| 258 | #define INPUT_DEVICE_ID_LED_MAX 0x0f | ||
| 259 | #define INPUT_DEVICE_ID_SND_MAX 0x07 | ||
| 260 | #define INPUT_DEVICE_ID_FF_MAX 0x7f | ||
| 261 | #define INPUT_DEVICE_ID_SW_MAX 0x0f | ||
| 262 | |||
| 263 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | ||
| 264 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 | ||
| 265 | #define INPUT_DEVICE_ID_MATCH_PRODUCT 4 | ||
| 266 | #define INPUT_DEVICE_ID_MATCH_VERSION 8 | ||
| 267 | |||
| 268 | #define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010 | ||
| 269 | #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020 | ||
| 270 | #define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040 | ||
| 271 | #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080 | ||
| 272 | #define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100 | ||
| 273 | #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200 | ||
| 274 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400 | ||
| 275 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800 | ||
| 276 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 | ||
| 277 | |||
| 278 | struct input_device_id { | ||
| 279 | |||
| 280 | kernel_ulong_t flags; | ||
| 281 | |||
| 282 | __u16 bustype; | ||
| 283 | __u16 vendor; | ||
| 284 | __u16 product; | ||
| 285 | __u16 version; | ||
| 286 | |||
| 287 | kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1]; | ||
| 288 | kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1]; | ||
| 289 | kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1]; | ||
| 290 | kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1]; | ||
| 291 | kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1]; | ||
| 292 | kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1]; | ||
| 293 | kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1]; | ||
| 294 | kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1]; | ||
| 295 | kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1]; | ||
| 296 | |||
| 297 | kernel_ulong_t driver_info; | ||
| 298 | }; | ||
| 299 | |||
| 252 | #endif /* LINUX_MOD_DEVICETABLE_H */ | 300 | #endif /* LINUX_MOD_DEVICETABLE_H */ |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 38701454e1..48cc32d83f 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
| @@ -337,6 +337,10 @@ struct compat_xt_entry_match | |||
| 337 | char name[XT_FUNCTION_MAXNAMELEN - 1]; | 337 | char name[XT_FUNCTION_MAXNAMELEN - 1]; |
| 338 | u_int8_t revision; | 338 | u_int8_t revision; |
| 339 | } user; | 339 | } user; |
| 340 | struct { | ||
| 341 | u_int16_t match_size; | ||
| 342 | compat_uptr_t match; | ||
| 343 | } kernel; | ||
| 340 | u_int16_t match_size; | 344 | u_int16_t match_size; |
| 341 | } u; | 345 | } u; |
| 342 | unsigned char data[0]; | 346 | unsigned char data[0]; |
| @@ -350,6 +354,10 @@ struct compat_xt_entry_target | |||
| 350 | char name[XT_FUNCTION_MAXNAMELEN - 1]; | 354 | char name[XT_FUNCTION_MAXNAMELEN - 1]; |
| 351 | u_int8_t revision; | 355 | u_int8_t revision; |
| 352 | } user; | 356 | } user; |
| 357 | struct { | ||
| 358 | u_int16_t target_size; | ||
| 359 | compat_uptr_t target; | ||
| 360 | } kernel; | ||
| 353 | u_int16_t target_size; | 361 | u_int16_t target_size; |
| 354 | } u; | 362 | } u; |
| 355 | unsigned char data[0]; | 363 | unsigned char data[0]; |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h index 0bd828081c..c6e9a0b6d3 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_helper_h323_asn1.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323 | 2 | * ip_conntrack_helper_h323_asn1.h - BER and PER decoding library for H.323 |
| 3 | * conntrack/NAT module. | 3 | * conntrack/NAT module. |
| 4 | * | 4 | * |
| 5 | * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@hotmail.com> | 5 | * Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net> |
| 6 | * | 6 | * |
| 7 | * This source code is licensed under General Public License version 2. | 7 | * This source code is licensed under General Public License version 2. |
| 8 | * | 8 | * |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index f8f3d1c927..87b8a5703e 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
| @@ -143,6 +143,7 @@ struct netlink_skb_parms | |||
| 143 | __u32 dst_group; | 143 | __u32 dst_group; |
| 144 | kernel_cap_t eff_cap; | 144 | kernel_cap_t eff_cap; |
| 145 | __u32 loginuid; /* Login (audit) uid */ | 145 | __u32 loginuid; /* Login (audit) uid */ |
| 146 | __u32 sid; /* SELinux security id */ | ||
| 146 | }; | 147 | }; |
| 147 | 148 | ||
| 148 | #define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb)) | 149 | #define NETLINK_CB(skb) (*(struct netlink_skb_parms*)&((skb)->cb)) |
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index 0008d4bd40..ea4f7cd7bf 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h | |||
| @@ -5,8 +5,9 @@ | |||
| 5 | 5 | ||
| 6 | #define PIPE_BUFFERS (16) | 6 | #define PIPE_BUFFERS (16) |
| 7 | 7 | ||
| 8 | #define PIPE_BUF_FLAG_STOLEN 0x01 | 8 | #define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */ |
| 9 | #define PIPE_BUF_FLAG_LRU 0x02 | 9 | #define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */ |
| 10 | #define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */ | ||
| 10 | 11 | ||
| 11 | struct pipe_buffer { | 12 | struct pipe_buffer { |
| 12 | struct page *page; | 13 | struct page *page; |
| @@ -15,10 +16,23 @@ struct pipe_buffer { | |||
| 15 | unsigned int flags; | 16 | unsigned int flags; |
| 16 | }; | 17 | }; |
| 17 | 18 | ||
| 19 | /* | ||
| 20 | * Note on the nesting of these functions: | ||
| 21 | * | ||
| 22 | * ->pin() | ||
| 23 | * ->steal() | ||
| 24 | * ... | ||
| 25 | * ->map() | ||
| 26 | * ... | ||
| 27 | * ->unmap() | ||
| 28 | * | ||
| 29 | * That is, ->map() must be called on a pinned buffer, same goes for ->steal(). | ||
| 30 | */ | ||
| 18 | struct pipe_buf_operations { | 31 | struct pipe_buf_operations { |
| 19 | int can_merge; | 32 | int can_merge; |
| 20 | void * (*map)(struct file *, struct pipe_inode_info *, struct pipe_buffer *); | 33 | void * (*map)(struct pipe_inode_info *, struct pipe_buffer *, int); |
| 21 | void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *); | 34 | void (*unmap)(struct pipe_inode_info *, struct pipe_buffer *, void *); |
| 35 | int (*pin)(struct pipe_inode_info *, struct pipe_buffer *); | ||
| 22 | void (*release)(struct pipe_inode_info *, struct pipe_buffer *); | 36 | void (*release)(struct pipe_inode_info *, struct pipe_buffer *); |
| 23 | int (*steal)(struct pipe_inode_info *, struct pipe_buffer *); | 37 | int (*steal)(struct pipe_inode_info *, struct pipe_buffer *); |
| 24 | void (*get)(struct pipe_inode_info *, struct pipe_buffer *); | 38 | void (*get)(struct pipe_inode_info *, struct pipe_buffer *); |
| @@ -51,6 +65,13 @@ struct pipe_inode_info * alloc_pipe_info(struct inode * inode); | |||
| 51 | void free_pipe_info(struct inode * inode); | 65 | void free_pipe_info(struct inode * inode); |
| 52 | void __free_pipe_info(struct pipe_inode_info *); | 66 | void __free_pipe_info(struct pipe_inode_info *); |
| 53 | 67 | ||
| 68 | /* Generic pipe buffer ops functions */ | ||
| 69 | void *generic_pipe_buf_map(struct pipe_inode_info *, struct pipe_buffer *, int); | ||
| 70 | void generic_pipe_buf_unmap(struct pipe_inode_info *, struct pipe_buffer *, void *); | ||
| 71 | void generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *); | ||
| 72 | int generic_pipe_buf_pin(struct pipe_inode_info *, struct pipe_buffer *); | ||
| 73 | int generic_pipe_buf_steal(struct pipe_inode_info *, struct pipe_buffer *); | ||
| 74 | |||
| 54 | /* | 75 | /* |
| 55 | * splice is tied to pipes as a transport (at least for now), so we'll just | 76 | * splice is tied to pipes as a transport (at least for now), so we'll just |
| 56 | * add the splice flags here. | 77 | * add the splice flags here. |
| @@ -60,6 +81,7 @@ void __free_pipe_info(struct pipe_inode_info *); | |||
| 60 | /* we may still block on the fd we splice */ | 81 | /* we may still block on the fd we splice */ |
| 61 | /* from/to, of course */ | 82 | /* from/to, of course */ |
| 62 | #define SPLICE_F_MORE (0x04) /* expect more data */ | 83 | #define SPLICE_F_MORE (0x04) /* expect more data */ |
| 84 | #define SPLICE_F_GIFT (0x08) /* pages passed in are a gift */ | ||
| 63 | 85 | ||
| 64 | /* | 86 | /* |
| 65 | * Passed to the actors | 87 | * Passed to the actors |
diff --git a/include/linux/security.h b/include/linux/security.h index aaa0a5cdbf..1bab48f6ae 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -869,11 +869,6 @@ struct swap_info_struct; | |||
| 869 | * @ipcp contains the kernel IPC permission structure | 869 | * @ipcp contains the kernel IPC permission structure |
| 870 | * @flag contains the desired (requested) permission set | 870 | * @flag contains the desired (requested) permission set |
| 871 | * Return 0 if permission is granted. | 871 | * Return 0 if permission is granted. |
| 872 | * @ipc_getsecurity: | ||
| 873 | * Copy the security label associated with the ipc object into | ||
| 874 | * @buffer. @buffer may be NULL to request the size of the buffer | ||
| 875 | * required. @size indicates the size of @buffer in bytes. Return | ||
| 876 | * number of bytes used/required on success. | ||
| 877 | * | 872 | * |
| 878 | * Security hooks for individual messages held in System V IPC message queues | 873 | * Security hooks for individual messages held in System V IPC message queues |
| 879 | * @msg_msg_alloc_security: | 874 | * @msg_msg_alloc_security: |
| @@ -1223,7 +1218,6 @@ struct security_operations { | |||
| 1223 | void (*task_to_inode)(struct task_struct *p, struct inode *inode); | 1218 | void (*task_to_inode)(struct task_struct *p, struct inode *inode); |
| 1224 | 1219 | ||
| 1225 | int (*ipc_permission) (struct kern_ipc_perm * ipcp, short flag); | 1220 | int (*ipc_permission) (struct kern_ipc_perm * ipcp, short flag); |
| 1226 | int (*ipc_getsecurity)(struct kern_ipc_perm *ipcp, void *buffer, size_t size); | ||
| 1227 | 1221 | ||
| 1228 | int (*msg_msg_alloc_security) (struct msg_msg * msg); | 1222 | int (*msg_msg_alloc_security) (struct msg_msg * msg); |
| 1229 | void (*msg_msg_free_security) (struct msg_msg * msg); | 1223 | void (*msg_msg_free_security) (struct msg_msg * msg); |
| @@ -1887,11 +1881,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp, | |||
| 1887 | return security_ops->ipc_permission (ipcp, flag); | 1881 | return security_ops->ipc_permission (ipcp, flag); |
| 1888 | } | 1882 | } |
| 1889 | 1883 | ||
| 1890 | static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size) | ||
| 1891 | { | ||
| 1892 | return security_ops->ipc_getsecurity(ipcp, buffer, size); | ||
| 1893 | } | ||
| 1894 | |||
| 1895 | static inline int security_msg_msg_alloc (struct msg_msg * msg) | 1884 | static inline int security_msg_msg_alloc (struct msg_msg * msg) |
| 1896 | { | 1885 | { |
| 1897 | return security_ops->msg_msg_alloc_security (msg); | 1886 | return security_ops->msg_msg_alloc_security (msg); |
| @@ -2532,11 +2521,6 @@ static inline int security_ipc_permission (struct kern_ipc_perm *ipcp, | |||
| 2532 | return 0; | 2521 | return 0; |
| 2533 | } | 2522 | } |
| 2534 | 2523 | ||
| 2535 | static inline int security_ipc_getsecurity(struct kern_ipc_perm *ipcp, void *buffer, size_t size) | ||
| 2536 | { | ||
| 2537 | return -EOPNOTSUPP; | ||
| 2538 | } | ||
| 2539 | |||
| 2540 | static inline int security_msg_msg_alloc (struct msg_msg * msg) | 2524 | static inline int security_msg_msg_alloc (struct msg_msg * msg) |
| 2541 | { | 2525 | { |
| 2542 | return 0; | 2526 | return 0; |
diff --git a/include/linux/selinux.h b/include/linux/selinux.h new file mode 100644 index 0000000000..4047bcde44 --- /dev/null +++ b/include/linux/selinux.h | |||
| @@ -0,0 +1,177 @@ | |||
| 1 | /* | ||
| 2 | * SELinux services exported to the rest of the kernel. | ||
| 3 | * | ||
| 4 | * Author: James Morris <jmorris@redhat.com> | ||
| 5 | * | ||
| 6 | * Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com> | ||
| 7 | * Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> | ||
| 8 | * Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com> | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or modify | ||
| 11 | * it under the terms of the GNU General Public License version 2, | ||
| 12 | * as published by the Free Software Foundation. | ||
| 13 | */ | ||
| 14 | #ifndef _LINUX_SELINUX_H | ||
| 15 | #define _LINUX_SELINUX_H | ||
| 16 | |||
| 17 | struct selinux_audit_rule; | ||
| 18 | struct audit_context; | ||
| 19 | struct inode; | ||
| 20 | struct kern_ipc_perm; | ||
| 21 | |||
| 22 | #ifdef CONFIG_SECURITY_SELINUX | ||
| 23 | |||
| 24 | /** | ||
| 25 | * selinux_audit_rule_init - alloc/init an selinux audit rule structure. | ||
| 26 | * @field: the field this rule refers to | ||
| 27 | * @op: the operater the rule uses | ||
| 28 | * @rulestr: the text "target" of the rule | ||
| 29 | * @rule: pointer to the new rule structure returned via this | ||
| 30 | * | ||
| 31 | * Returns 0 if successful, -errno if not. On success, the rule structure | ||
| 32 | * will be allocated internally. The caller must free this structure with | ||
| 33 | * selinux_audit_rule_free() after use. | ||
| 34 | */ | ||
| 35 | int selinux_audit_rule_init(u32 field, u32 op, char *rulestr, | ||
| 36 | struct selinux_audit_rule **rule); | ||
| 37 | |||
| 38 | /** | ||
| 39 | * selinux_audit_rule_free - free an selinux audit rule structure. | ||
| 40 | * @rule: pointer to the audit rule to be freed | ||
| 41 | * | ||
| 42 | * This will free all memory associated with the given rule. | ||
| 43 | * If @rule is NULL, no operation is performed. | ||
| 44 | */ | ||
| 45 | void selinux_audit_rule_free(struct selinux_audit_rule *rule); | ||
| 46 | |||
| 47 | /** | ||
| 48 | * selinux_audit_rule_match - determine if a context ID matches a rule. | ||
| 49 | * @ctxid: the context ID to check | ||
| 50 | * @field: the field this rule refers to | ||
| 51 | * @op: the operater the rule uses | ||
| 52 | * @rule: pointer to the audit rule to check against | ||
| 53 | * @actx: the audit context (can be NULL) associated with the check | ||
| 54 | * | ||
| 55 | * Returns 1 if the context id matches the rule, 0 if it does not, and | ||
| 56 | * -errno on failure. | ||
| 57 | */ | ||
| 58 | int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op, | ||
| 59 | struct selinux_audit_rule *rule, | ||
| 60 | struct audit_context *actx); | ||
| 61 | |||
| 62 | /** | ||
| 63 | * selinux_audit_set_callback - set the callback for policy reloads. | ||
| 64 | * @callback: the function to call when the policy is reloaded | ||
| 65 | * | ||
| 66 | * This sets the function callback function that will update the rules | ||
| 67 | * upon policy reloads. This callback should rebuild all existing rules | ||
| 68 | * using selinux_audit_rule_init(). | ||
| 69 | */ | ||
| 70 | void selinux_audit_set_callback(int (*callback)(void)); | ||
| 71 | |||
| 72 | /** | ||
| 73 | * selinux_task_ctxid - determine a context ID for a process. | ||
| 74 | * @tsk: the task object | ||
| 75 | * @ctxid: ID value returned via this | ||
| 76 | * | ||
| 77 | * On return, ctxid will contain an ID for the context. This value | ||
| 78 | * should only be used opaquely. | ||
| 79 | */ | ||
| 80 | void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid); | ||
| 81 | |||
| 82 | /** | ||
| 83 | * selinux_ctxid_to_string - map a security context ID to a string | ||
| 84 | * @ctxid: security context ID to be converted. | ||
| 85 | * @ctx: address of context string to be returned | ||
| 86 | * @ctxlen: length of returned context string. | ||
| 87 | * | ||
| 88 | * Returns 0 if successful, -errno if not. On success, the context | ||
| 89 | * string will be allocated internally, and the caller must call | ||
| 90 | * kfree() on it after use. | ||
| 91 | */ | ||
| 92 | int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen); | ||
| 93 | |||
| 94 | /** | ||
| 95 | * selinux_get_inode_sid - get the inode's security context ID | ||
| 96 | * @inode: inode structure to get the sid from. | ||
| 97 | * @sid: pointer to security context ID to be filled in. | ||
| 98 | * | ||
| 99 | * Returns nothing | ||
| 100 | */ | ||
| 101 | void selinux_get_inode_sid(const struct inode *inode, u32 *sid); | ||
| 102 | |||
| 103 | /** | ||
| 104 | * selinux_get_ipc_sid - get the ipc security context ID | ||
| 105 | * @ipcp: ipc structure to get the sid from. | ||
| 106 | * @sid: pointer to security context ID to be filled in. | ||
| 107 | * | ||
| 108 | * Returns nothing | ||
| 109 | */ | ||
| 110 | void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid); | ||
| 111 | |||
| 112 | /** | ||
| 113 | * selinux_get_task_sid - return the SID of task | ||
| 114 | * @tsk: the task whose SID will be returned | ||
| 115 | * @sid: pointer to security context ID to be filled in. | ||
| 116 | * | ||
| 117 | * Returns nothing | ||
| 118 | */ | ||
| 119 | void selinux_get_task_sid(struct task_struct *tsk, u32 *sid); | ||
| 120 | |||
| 121 | |||
| 122 | #else | ||
| 123 | |||
| 124 | static inline int selinux_audit_rule_init(u32 field, u32 op, | ||
| 125 | char *rulestr, | ||
| 126 | struct selinux_audit_rule **rule) | ||
| 127 | { | ||
| 128 | return -ENOTSUPP; | ||
| 129 | } | ||
| 130 | |||
| 131 | static inline void selinux_audit_rule_free(struct selinux_audit_rule *rule) | ||
| 132 | { | ||
| 133 | return; | ||
| 134 | } | ||
| 135 | |||
| 136 | static inline int selinux_audit_rule_match(u32 ctxid, u32 field, u32 op, | ||
| 137 | struct selinux_audit_rule *rule, | ||
| 138 | struct audit_context *actx) | ||
| 139 | { | ||
| 140 | return 0; | ||
| 141 | } | ||
| 142 | |||
| 143 | static inline void selinux_audit_set_callback(int (*callback)(void)) | ||
| 144 | { | ||
| 145 | return; | ||
| 146 | } | ||
| 147 | |||
| 148 | static inline void selinux_task_ctxid(struct task_struct *tsk, u32 *ctxid) | ||
| 149 | { | ||
| 150 | *ctxid = 0; | ||
| 151 | } | ||
| 152 | |||
| 153 | static inline int selinux_ctxid_to_string(u32 ctxid, char **ctx, u32 *ctxlen) | ||
| 154 | { | ||
| 155 | *ctx = NULL; | ||
| 156 | *ctxlen = 0; | ||
| 157 | return 0; | ||
| 158 | } | ||
| 159 | |||
| 160 | static inline void selinux_get_inode_sid(const struct inode *inode, u32 *sid) | ||
| 161 | { | ||
| 162 | *sid = 0; | ||
| 163 | } | ||
| 164 | |||
| 165 | static inline void selinux_get_ipc_sid(const struct kern_ipc_perm *ipcp, u32 *sid) | ||
| 166 | { | ||
| 167 | *sid = 0; | ||
| 168 | } | ||
| 169 | |||
| 170 | static inline void selinux_get_task_sid(struct task_struct *tsk, u32 *sid) | ||
| 171 | { | ||
| 172 | *sid = 0; | ||
| 173 | } | ||
| 174 | |||
| 175 | #endif /* CONFIG_SECURITY_SELINUX */ | ||
| 176 | |||
| 177 | #endif /* _LINUX_SELINUX_H */ | ||
diff --git a/include/linux/signal.h b/include/linux/signal.h index 162a8fd10b..70739f51a0 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h | |||
| @@ -14,10 +14,12 @@ | |||
| 14 | * | 14 | * |
| 15 | * SA_INTERRUPT is also used by the irq handling routines. | 15 | * SA_INTERRUPT is also used by the irq handling routines. |
| 16 | * SA_SHIRQ is for shared interrupt support on PCI and EISA. | 16 | * SA_SHIRQ is for shared interrupt support on PCI and EISA. |
| 17 | * SA_PROBEIRQ is set by callers when they expect sharing mismatches to occur | ||
| 17 | */ | 18 | */ |
| 18 | #define SA_PROBE SA_ONESHOT | ||
| 19 | #define SA_SAMPLE_RANDOM SA_RESTART | 19 | #define SA_SAMPLE_RANDOM SA_RESTART |
| 20 | #define SA_SHIRQ 0x04000000 | 20 | #define SA_SHIRQ 0x04000000 |
| 21 | #define SA_PROBEIRQ 0x08000000 | ||
| 22 | |||
| 21 | /* | 23 | /* |
| 22 | * As above, these correspond to the IORESOURCE_IRQ_* defines in | 24 | * As above, these correspond to the IORESOURCE_IRQ_* defines in |
| 23 | * linux/ioport.h to select the interrupt line behaviour. When | 25 | * linux/ioport.h to select the interrupt line behaviour. When |
diff --git a/include/linux/spi/ads7846.h b/include/linux/spi/ads7846.h index 72261e0f2a..adb3dafd33 100644 --- a/include/linux/spi/ads7846.h +++ b/include/linux/spi/ads7846.h | |||
| @@ -14,5 +14,12 @@ struct ads7846_platform_data { | |||
| 14 | u16 x_min, x_max; | 14 | u16 x_min, x_max; |
| 15 | u16 y_min, y_max; | 15 | u16 y_min, y_max; |
| 16 | u16 pressure_min, pressure_max; | 16 | u16 pressure_min, pressure_max; |
| 17 | |||
| 18 | u16 debounce_max; /* max number of additional readings | ||
| 19 | * per sample */ | ||
| 20 | u16 debounce_tol; /* tolerance used for filtering */ | ||
| 21 | u16 debounce_rep; /* additional consecutive good readings | ||
| 22 | * required after the first two */ | ||
| 23 | int (*get_pendown_state)(void); | ||
| 17 | }; | 24 | }; |
| 18 | 25 | ||
diff --git a/include/net/ax25.h b/include/net/ax25.h index d052b221db..5bd9974870 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h | |||
| @@ -145,14 +145,14 @@ enum { | |||
| 145 | #define AX25_DEF_CONMODE 2 /* Connected mode allowed */ | 145 | #define AX25_DEF_CONMODE 2 /* Connected mode allowed */ |
| 146 | #define AX25_DEF_WINDOW 2 /* Window=2 */ | 146 | #define AX25_DEF_WINDOW 2 /* Window=2 */ |
| 147 | #define AX25_DEF_EWINDOW 32 /* Module-128 Window=32 */ | 147 | #define AX25_DEF_EWINDOW 32 /* Module-128 Window=32 */ |
| 148 | #define AX25_DEF_T1 (10 * HZ) /* T1=10s */ | 148 | #define AX25_DEF_T1 10000 /* T1=10s */ |
| 149 | #define AX25_DEF_T2 (3 * HZ) /* T2=3s */ | 149 | #define AX25_DEF_T2 3000 /* T2=3s */ |
| 150 | #define AX25_DEF_T3 (300 * HZ) /* T3=300s */ | 150 | #define AX25_DEF_T3 300000 /* T3=300s */ |
| 151 | #define AX25_DEF_N2 10 /* N2=10 */ | 151 | #define AX25_DEF_N2 10 /* N2=10 */ |
| 152 | #define AX25_DEF_IDLE (0 * 60 * HZ) /* Idle=None */ | 152 | #define AX25_DEF_IDLE 0 /* Idle=None */ |
| 153 | #define AX25_DEF_PACLEN 256 /* Paclen=256 */ | 153 | #define AX25_DEF_PACLEN 256 /* Paclen=256 */ |
| 154 | #define AX25_DEF_PROTOCOL AX25_PROTO_STD_SIMPLEX /* Standard AX.25 */ | 154 | #define AX25_DEF_PROTOCOL AX25_PROTO_STD_SIMPLEX /* Standard AX.25 */ |
| 155 | #define AX25_DEF_DS_TIMEOUT (3 * 60 * HZ) /* DAMA timeout 3 minutes */ | 155 | #define AX25_DEF_DS_TIMEOUT 180000 /* DAMA timeout 3 minutes */ |
| 156 | 156 | ||
| 157 | typedef struct ax25_uid_assoc { | 157 | typedef struct ax25_uid_assoc { |
| 158 | struct hlist_node uid_node; | 158 | struct hlist_node uid_node; |
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index 1da294c475..e837f98fdb 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h | |||
| @@ -150,7 +150,7 @@ static inline void inet_twsk_add_bind_node(struct inet_timewait_sock *tw, | |||
| 150 | 150 | ||
| 151 | static inline int inet_twsk_dead_hashed(const struct inet_timewait_sock *tw) | 151 | static inline int inet_twsk_dead_hashed(const struct inet_timewait_sock *tw) |
| 152 | { | 152 | { |
| 153 | return tw->tw_death_node.pprev != NULL; | 153 | return !hlist_unhashed(&tw->tw_death_node); |
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | static inline void inet_twsk_dead_node_init(struct inet_timewait_sock *tw) | 156 | static inline void inet_twsk_dead_node_init(struct inet_timewait_sock *tw) |
diff --git a/include/net/netrom.h b/include/net/netrom.h index a5ee53bce6..e0ca112024 100644 --- a/include/net/netrom.h +++ b/include/net/netrom.h | |||
| @@ -42,11 +42,11 @@ enum { | |||
| 42 | #define NR_COND_PEER_RX_BUSY 0x04 | 42 | #define NR_COND_PEER_RX_BUSY 0x04 |
| 43 | #define NR_COND_OWN_RX_BUSY 0x08 | 43 | #define NR_COND_OWN_RX_BUSY 0x08 |
| 44 | 44 | ||
| 45 | #define NR_DEFAULT_T1 (120 * HZ) /* Outstanding frames - 120 seconds */ | 45 | #define NR_DEFAULT_T1 120000 /* Outstanding frames - 120 seconds */ |
| 46 | #define NR_DEFAULT_T2 (5 * HZ) /* Response delay - 5 seconds */ | 46 | #define NR_DEFAULT_T2 5000 /* Response delay - 5 seconds */ |
| 47 | #define NR_DEFAULT_N2 3 /* Number of Retries - 3 */ | 47 | #define NR_DEFAULT_N2 3 /* Number of Retries - 3 */ |
| 48 | #define NR_DEFAULT_T4 (180 * HZ) /* Busy Delay - 180 seconds */ | 48 | #define NR_DEFAULT_T4 180000 /* Busy Delay - 180 seconds */ |
| 49 | #define NR_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */ | 49 | #define NR_DEFAULT_IDLE 0 /* No Activity Timeout - none */ |
| 50 | #define NR_DEFAULT_WINDOW 4 /* Default Window Size - 4 */ | 50 | #define NR_DEFAULT_WINDOW 4 /* Default Window Size - 4 */ |
| 51 | #define NR_DEFAULT_OBS 6 /* Default Obsolescence Count - 6 */ | 51 | #define NR_DEFAULT_OBS 6 /* Default Obsolescence Count - 6 */ |
| 52 | #define NR_DEFAULT_QUAL 10 /* Default Neighbour Quality - 10 */ | 52 | #define NR_DEFAULT_QUAL 10 /* Default Neighbour Quality - 10 */ |
diff --git a/include/net/rose.h b/include/net/rose.h index 3249b97960..012b09ed24 100644 --- a/include/net/rose.h +++ b/include/net/rose.h | |||
| @@ -49,14 +49,14 @@ enum { | |||
| 49 | ROSE_STATE_5 /* Deferred Call Acceptance */ | 49 | ROSE_STATE_5 /* Deferred Call Acceptance */ |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | #define ROSE_DEFAULT_T0 (180 * HZ) /* Default T10 T20 value */ | 52 | #define ROSE_DEFAULT_T0 180000 /* Default T10 T20 value */ |
| 53 | #define ROSE_DEFAULT_T1 (200 * HZ) /* Default T11 T21 value */ | 53 | #define ROSE_DEFAULT_T1 200000 /* Default T11 T21 value */ |
| 54 | #define ROSE_DEFAULT_T2 (180 * HZ) /* Default T12 T22 value */ | 54 | #define ROSE_DEFAULT_T2 180000 /* Default T12 T22 value */ |
| 55 | #define ROSE_DEFAULT_T3 (180 * HZ) /* Default T13 T23 value */ | 55 | #define ROSE_DEFAULT_T3 180000 /* Default T13 T23 value */ |
| 56 | #define ROSE_DEFAULT_HB (5 * HZ) /* Default Holdback value */ | 56 | #define ROSE_DEFAULT_HB 5000 /* Default Holdback value */ |
| 57 | #define ROSE_DEFAULT_IDLE (0 * 60 * HZ) /* No Activity Timeout - none */ | 57 | #define ROSE_DEFAULT_IDLE 0 /* No Activity Timeout - none */ |
| 58 | #define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */ | 58 | #define ROSE_DEFAULT_ROUTING 1 /* Default routing flag */ |
| 59 | #define ROSE_DEFAULT_FAIL_TIMEOUT (120 * HZ) /* Time until link considered usable */ | 59 | #define ROSE_DEFAULT_FAIL_TIMEOUT 120000 /* Time until link considered usable */ |
| 60 | #define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */ | 60 | #define ROSE_DEFAULT_MAXVC 50 /* Maximum number of VCs per neighbour */ |
| 61 | #define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */ | 61 | #define ROSE_DEFAULT_WINDOW_SIZE 7 /* Default window size */ |
| 62 | 62 | ||
diff --git a/include/net/sock.h b/include/net/sock.h index ff8b0dad7b..c9fad6fb62 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -279,7 +279,7 @@ static inline int sk_unhashed(const struct sock *sk) | |||
| 279 | 279 | ||
| 280 | static inline int sk_hashed(const struct sock *sk) | 280 | static inline int sk_hashed(const struct sock *sk) |
| 281 | { | 281 | { |
| 282 | return sk->sk_node.pprev != NULL; | 282 | return !sk_unhashed(sk); |
| 283 | } | 283 | } |
| 284 | 284 | ||
| 285 | static __inline__ void sk_node_init(struct hlist_node *node) | 285 | static __inline__ void sk_node_init(struct hlist_node *node) |
diff --git a/include/sound/pcm.h b/include/sound/pcm.h index df70e7592a..373425895f 100644 --- a/include/sound/pcm.h +++ b/include/sound/pcm.h | |||
| @@ -374,12 +374,14 @@ struct snd_pcm_substream { | |||
| 374 | /* -- OSS things -- */ | 374 | /* -- OSS things -- */ |
| 375 | struct snd_pcm_oss_substream oss; | 375 | struct snd_pcm_oss_substream oss; |
| 376 | #endif | 376 | #endif |
| 377 | #ifdef CONFIG_SND_VERBOSE_PROCFS | ||
| 377 | struct snd_info_entry *proc_root; | 378 | struct snd_info_entry *proc_root; |
| 378 | struct snd_info_entry *proc_info_entry; | 379 | struct snd_info_entry *proc_info_entry; |
| 379 | struct snd_info_entry *proc_hw_params_entry; | 380 | struct snd_info_entry *proc_hw_params_entry; |
| 380 | struct snd_info_entry *proc_sw_params_entry; | 381 | struct snd_info_entry *proc_sw_params_entry; |
| 381 | struct snd_info_entry *proc_status_entry; | 382 | struct snd_info_entry *proc_status_entry; |
| 382 | struct snd_info_entry *proc_prealloc_entry; | 383 | struct snd_info_entry *proc_prealloc_entry; |
| 384 | #endif | ||
| 383 | /* misc flags */ | 385 | /* misc flags */ |
| 384 | unsigned int no_mmap_ctrl: 1; | 386 | unsigned int no_mmap_ctrl: 1; |
| 385 | unsigned int hw_opened: 1; | 387 | unsigned int hw_opened: 1; |
| @@ -400,12 +402,14 @@ struct snd_pcm_str { | |||
| 400 | struct snd_pcm_oss_stream oss; | 402 | struct snd_pcm_oss_stream oss; |
| 401 | #endif | 403 | #endif |
| 402 | struct snd_pcm_file *files; | 404 | struct snd_pcm_file *files; |
| 405 | #ifdef CONFIG_SND_VERBOSE_PROCFS | ||
| 403 | struct snd_info_entry *proc_root; | 406 | struct snd_info_entry *proc_root; |
| 404 | struct snd_info_entry *proc_info_entry; | 407 | struct snd_info_entry *proc_info_entry; |
| 405 | #ifdef CONFIG_SND_DEBUG | 408 | #ifdef CONFIG_SND_PCM_XRUN_DEBUG |
| 406 | unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */ | 409 | unsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */ |
| 407 | struct snd_info_entry *proc_xrun_debug_entry; | 410 | struct snd_info_entry *proc_xrun_debug_entry; |
| 408 | #endif | 411 | #endif |
| 412 | #endif | ||
| 409 | }; | 413 | }; |
| 410 | 414 | ||
| 411 | struct snd_pcm { | 415 | struct snd_pcm { |
diff --git a/include/sound/pcm_oss.h b/include/sound/pcm_oss.h index 39df2baca1..c854647b6f 100644 --- a/include/sound/pcm_oss.h +++ b/include/sound/pcm_oss.h | |||
| @@ -75,7 +75,9 @@ struct snd_pcm_oss_substream { | |||
| 75 | struct snd_pcm_oss_stream { | 75 | struct snd_pcm_oss_stream { |
| 76 | struct snd_pcm_oss_setup *setup_list; /* setup list */ | 76 | struct snd_pcm_oss_setup *setup_list; /* setup list */ |
| 77 | struct mutex setup_mutex; | 77 | struct mutex setup_mutex; |
| 78 | #ifdef CONFIG_SND_VERBOSE_PROCFS | ||
| 78 | struct snd_info_entry *proc_entry; | 79 | struct snd_info_entry *proc_entry; |
| 80 | #endif | ||
| 79 | }; | 81 | }; |
| 80 | 82 | ||
| 81 | struct snd_pcm_oss { | 83 | struct snd_pcm_oss { |
