diff options
Diffstat (limited to 'include/linux')
30 files changed, 180 insertions, 124 deletions
diff --git a/include/linux/compat.h b/include/linux/compat.h index f4ebf96f5308..80b17f440ec1 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
| @@ -196,7 +196,7 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
| 196 | #define BITS_TO_COMPAT_LONGS(bits) \ | 196 | #define BITS_TO_COMPAT_LONGS(bits) \ |
| 197 | (((bits)+BITS_PER_COMPAT_LONG-1)/BITS_PER_COMPAT_LONG) | 197 | (((bits)+BITS_PER_COMPAT_LONG-1)/BITS_PER_COMPAT_LONG) |
| 198 | 198 | ||
| 199 | long compat_get_bitmap(unsigned long *mask, compat_ulong_t __user *umask, | 199 | long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask, |
| 200 | unsigned long bitmap_size); | 200 | unsigned long bitmap_size); |
| 201 | long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask, | 201 | long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask, |
| 202 | unsigned long bitmap_size); | 202 | unsigned long bitmap_size); |
| @@ -230,5 +230,9 @@ asmlinkage long compat_sys_adjtimex(struct compat_timex __user *utp); | |||
| 230 | extern int compat_printk(const char *fmt, ...); | 230 | extern int compat_printk(const char *fmt, ...); |
| 231 | extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat); | 231 | extern void sigset_from_compat(sigset_t *set, compat_sigset_t *compat); |
| 232 | 232 | ||
| 233 | asmlinkage long compat_sys_migrate_pages(compat_pid_t pid, | ||
| 234 | compat_ulong_t maxnode, const compat_ulong_t __user *old_nodes, | ||
| 235 | const compat_ulong_t __user *new_nodes); | ||
| 236 | |||
| 233 | #endif /* CONFIG_COMPAT */ | 237 | #endif /* CONFIG_COMPAT */ |
| 234 | #endif /* _LINUX_COMPAT_H */ | 238 | #endif /* _LINUX_COMPAT_H */ |
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 8f2ffa4caabf..6485e9716b36 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
| @@ -245,7 +245,7 @@ int crypto_alg_available(const char *name, u32 flags) | |||
| 245 | __deprecated_for_modules; | 245 | __deprecated_for_modules; |
| 246 | int crypto_has_alg(const char *name, u32 type, u32 mask); | 246 | int crypto_has_alg(const char *name, u32 type, u32 mask); |
| 247 | #else | 247 | #else |
| 248 | static int crypto_alg_available(const char *name, u32 flags); | 248 | static int crypto_alg_available(const char *name, u32 flags) |
| 249 | __deprecated_for_modules; | 249 | __deprecated_for_modules; |
| 250 | static inline int crypto_alg_available(const char *name, u32 flags) | 250 | static inline int crypto_alg_available(const char *name, u32 flags) |
| 251 | { | 251 | { |
diff --git a/include/linux/device.h b/include/linux/device.h index 662e6a10144e..9d4f6a963936 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -393,7 +393,7 @@ extern void device_unregister(struct device * dev); | |||
| 393 | extern void device_initialize(struct device * dev); | 393 | extern void device_initialize(struct device * dev); |
| 394 | extern int __must_check device_add(struct device * dev); | 394 | extern int __must_check device_add(struct device * dev); |
| 395 | extern void device_del(struct device * dev); | 395 | extern void device_del(struct device * dev); |
| 396 | extern int __must_check device_for_each_child(struct device *, void *, | 396 | extern int device_for_each_child(struct device *, void *, |
| 397 | int (*fn)(struct device *, void *)); | 397 | int (*fn)(struct device *, void *)); |
| 398 | extern int device_rename(struct device *dev, char *new_name); | 398 | extern int device_rename(struct device *dev, char *new_name); |
| 399 | 399 | ||
diff --git a/include/linux/htirq.h b/include/linux/htirq.h index 1f15ce279a23..c96ea46737d0 100644 --- a/include/linux/htirq.h +++ b/include/linux/htirq.h | |||
| @@ -1,15 +1,23 @@ | |||
| 1 | #ifndef LINUX_HTIRQ_H | 1 | #ifndef LINUX_HTIRQ_H |
| 2 | #define LINUX_HTIRQ_H | 2 | #define LINUX_HTIRQ_H |
| 3 | 3 | ||
| 4 | struct ht_irq_msg { | ||
| 5 | u32 address_lo; /* low 32 bits of the ht irq message */ | ||
| 6 | u32 address_hi; /* high 32 bits of the it irq message */ | ||
| 7 | }; | ||
| 8 | |||
| 4 | /* Helper functions.. */ | 9 | /* Helper functions.. */ |
| 5 | void write_ht_irq_low(unsigned int irq, u32 data); | 10 | void fetch_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg); |
| 6 | void write_ht_irq_high(unsigned int irq, u32 data); | 11 | void write_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg); |
| 7 | u32 read_ht_irq_low(unsigned int irq); | ||
| 8 | u32 read_ht_irq_high(unsigned int irq); | ||
| 9 | void mask_ht_irq(unsigned int irq); | 12 | void mask_ht_irq(unsigned int irq); |
| 10 | void unmask_ht_irq(unsigned int irq); | 13 | void unmask_ht_irq(unsigned int irq); |
| 11 | 14 | ||
| 12 | /* The arch hook for getting things started */ | 15 | /* The arch hook for getting things started */ |
| 13 | int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev); | 16 | int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev); |
| 14 | 17 | ||
| 18 | /* For drivers of buggy hardware */ | ||
| 19 | typedef void (ht_irq_update_t)(struct pci_dev *dev, int irq, | ||
| 20 | struct ht_irq_msg *msg); | ||
| 21 | int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update); | ||
| 22 | |||
| 15 | #endif /* LINUX_HTIRQ_H */ | 23 | #endif /* LINUX_HTIRQ_H */ |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 5081d27bfa27..ace64e57e17f 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
| @@ -60,8 +60,11 @@ void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr, | |||
| 60 | * If the arch doesn't supply something else, assume that hugepage | 60 | * If the arch doesn't supply something else, assume that hugepage |
| 61 | * size aligned regions are ok without further preparation. | 61 | * size aligned regions are ok without further preparation. |
| 62 | */ | 62 | */ |
| 63 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | 63 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len, |
| 64 | pgoff_t pgoff) | ||
| 64 | { | 65 | { |
| 66 | if (pgoff & (~HPAGE_MASK >> PAGE_SHIFT)) | ||
| 67 | return -EINVAL; | ||
| 65 | if (len & ~HPAGE_MASK) | 68 | if (len & ~HPAGE_MASK) |
| 66 | return -EINVAL; | 69 | return -EINVAL; |
| 67 | if (addr & ~HPAGE_MASK) | 70 | if (addr & ~HPAGE_MASK) |
| @@ -69,7 +72,8 @@ static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | |||
| 69 | return 0; | 72 | return 0; |
| 70 | } | 73 | } |
| 71 | #else | 74 | #else |
| 72 | int prepare_hugepage_range(unsigned long addr, unsigned long len); | 75 | int prepare_hugepage_range(unsigned long addr, unsigned long len, |
| 76 | pgoff_t pgoff); | ||
| 73 | #endif | 77 | #endif |
| 74 | 78 | ||
| 75 | #ifndef ARCH_HAS_SETCLEAR_HUGE_PTE | 79 | #ifndef ARCH_HAS_SETCLEAR_HUGE_PTE |
| @@ -107,7 +111,7 @@ static inline unsigned long hugetlb_total_pages(void) | |||
| 107 | #define hugetlb_report_meminfo(buf) 0 | 111 | #define hugetlb_report_meminfo(buf) 0 |
| 108 | #define hugetlb_report_node_meminfo(n, buf) 0 | 112 | #define hugetlb_report_node_meminfo(n, buf) 0 |
| 109 | #define follow_huge_pmd(mm, addr, pmd, write) NULL | 113 | #define follow_huge_pmd(mm, addr, pmd, write) NULL |
| 110 | #define prepare_hugepage_range(addr, len) (-EINVAL) | 114 | #define prepare_hugepage_range(addr,len,pgoff) (-EINVAL) |
| 111 | #define pmd_huge(x) 0 | 115 | #define pmd_huge(x) 0 |
| 112 | #define is_hugepage_only_range(mm, addr, len) 0 | 116 | #define is_hugepage_only_range(mm, addr, len) 0 |
| 113 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) | 117 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) |
diff --git a/include/linux/in6.h b/include/linux/in6.h index 9be6a4756f0b..f28621f638e0 100644 --- a/include/linux/in6.h +++ b/include/linux/in6.h | |||
| @@ -225,7 +225,7 @@ struct in6_flowlabel_req | |||
| 225 | #endif | 225 | #endif |
| 226 | 226 | ||
| 227 | /* | 227 | /* |
| 228 | * Netfilter | 228 | * Netfilter (1) |
| 229 | * | 229 | * |
| 230 | * Following socket options are used in ip6_tables; | 230 | * Following socket options are used in ip6_tables; |
| 231 | * see include/linux/netfilter_ipv6/ip6_tables.h. | 231 | * see include/linux/netfilter_ipv6/ip6_tables.h. |
| @@ -240,4 +240,14 @@ struct in6_flowlabel_req | |||
| 240 | #define IPV6_RECVTCLASS 66 | 240 | #define IPV6_RECVTCLASS 66 |
| 241 | #define IPV6_TCLASS 67 | 241 | #define IPV6_TCLASS 67 |
| 242 | 242 | ||
| 243 | /* | ||
| 244 | * Netfilter (2) | ||
| 245 | * | ||
| 246 | * Following socket options are used in ip6_tables; | ||
| 247 | * see include/linux/netfilter_ipv6/ip6_tables.h. | ||
| 248 | * | ||
| 249 | * IP6T_SO_GET_REVISION_MATCH 68 | ||
| 250 | * IP6T_SO_GET_REVISION_TARGET 69 | ||
| 251 | */ | ||
| 252 | |||
| 243 | #endif | 253 | #endif |
diff --git a/include/linux/init.h b/include/linux/init.h index e92b1455d7af..5eb5d24b7680 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
| @@ -84,19 +84,37 @@ extern void setup_arch(char **); | |||
| 84 | * by link order. | 84 | * by link order. |
| 85 | * For backwards compatibility, initcall() puts the call in | 85 | * For backwards compatibility, initcall() puts the call in |
| 86 | * the device init subsection. | 86 | * the device init subsection. |
| 87 | * | ||
| 88 | * The `id' arg to __define_initcall() is needed so that multiple initcalls | ||
| 89 | * can point at the same handler without causing duplicate-symbol build errors. | ||
| 87 | */ | 90 | */ |
| 88 | 91 | ||
| 89 | #define __define_initcall(level,fn) \ | 92 | #define __define_initcall(level,fn,id) \ |
| 90 | static initcall_t __initcall_##fn __attribute_used__ \ | 93 | static initcall_t __initcall_##fn##id __attribute_used__ \ |
| 91 | __attribute__((__section__(".initcall" level ".init"))) = fn | 94 | __attribute__((__section__(".initcall" level ".init"))) = fn |
| 92 | 95 | ||
| 93 | #define core_initcall(fn) __define_initcall("1",fn) | 96 | /* |
| 94 | #define postcore_initcall(fn) __define_initcall("2",fn) | 97 | * A "pure" initcall has no dependencies on anything else, and purely |
| 95 | #define arch_initcall(fn) __define_initcall("3",fn) | 98 | * initializes variables that couldn't be statically initialized. |
| 96 | #define subsys_initcall(fn) __define_initcall("4",fn) | 99 | * |
| 97 | #define fs_initcall(fn) __define_initcall("5",fn) | 100 | * This only exists for built-in code, not for modules. |
| 98 | #define device_initcall(fn) __define_initcall("6",fn) | 101 | */ |
| 99 | #define late_initcall(fn) __define_initcall("7",fn) | 102 | #define pure_initcall(fn) __define_initcall("0",fn,1) |
| 103 | |||
| 104 | #define core_initcall(fn) __define_initcall("1",fn,1) | ||
| 105 | #define core_initcall_sync(fn) __define_initcall("1s",fn,1s) | ||
| 106 | #define postcore_initcall(fn) __define_initcall("2",fn,2) | ||
| 107 | #define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s) | ||
| 108 | #define arch_initcall(fn) __define_initcall("3",fn,3) | ||
| 109 | #define arch_initcall_sync(fn) __define_initcall("3s",fn,3s) | ||
| 110 | #define subsys_initcall(fn) __define_initcall("4",fn,4) | ||
| 111 | #define subsys_initcall_sync(fn) __define_initcall("4s",fn,4s) | ||
| 112 | #define fs_initcall(fn) __define_initcall("5",fn,5) | ||
| 113 | #define fs_initcall_sync(fn) __define_initcall("5s",fn,5s) | ||
| 114 | #define device_initcall(fn) __define_initcall("6",fn,6) | ||
| 115 | #define device_initcall_sync(fn) __define_initcall("6s",fn,6s) | ||
| 116 | #define late_initcall(fn) __define_initcall("7",fn,7) | ||
| 117 | #define late_initcall_sync(fn) __define_initcall("7s",fn,7s) | ||
| 100 | 118 | ||
| 101 | #define __initcall(fn) device_initcall(fn) | 119 | #define __initcall(fn) device_initcall(fn) |
| 102 | 120 | ||
diff --git a/include/linux/ipmi_msgdefs.h b/include/linux/ipmi_msgdefs.h index 22f5e2afda4f..4d04d8b58a0a 100644 --- a/include/linux/ipmi_msgdefs.h +++ b/include/linux/ipmi_msgdefs.h | |||
| @@ -75,6 +75,8 @@ | |||
| 75 | #define IPMI_INVALID_COMMAND_ERR 0xc1 | 75 | #define IPMI_INVALID_COMMAND_ERR 0xc1 |
| 76 | #define IPMI_ERR_MSG_TRUNCATED 0xc6 | 76 | #define IPMI_ERR_MSG_TRUNCATED 0xc6 |
| 77 | #define IPMI_LOST_ARBITRATION_ERR 0x81 | 77 | #define IPMI_LOST_ARBITRATION_ERR 0x81 |
| 78 | #define IPMI_BUS_ERR 0x82 | ||
| 79 | #define IPMI_NAK_ON_WRITE_ERR 0x83 | ||
| 78 | #define IPMI_ERR_UNSPECIFIED 0xff | 80 | #define IPMI_ERR_UNSPECIFIED 0xff |
| 79 | 81 | ||
| 80 | #define IPMI_CHANNEL_PROTOCOL_IPMB 1 | 82 | #define IPMI_CHANNEL_PROTOCOL_IPMB 1 |
diff --git a/include/linux/ipx.h b/include/linux/ipx.h index 4f29c60964c4..eb19b4ea84f4 100644 --- a/include/linux/ipx.h +++ b/include/linux/ipx.h | |||
| @@ -7,8 +7,8 @@ | |||
| 7 | 7 | ||
| 8 | struct sockaddr_ipx { | 8 | struct sockaddr_ipx { |
| 9 | sa_family_t sipx_family; | 9 | sa_family_t sipx_family; |
| 10 | __u16 sipx_port; | 10 | __be16 sipx_port; |
| 11 | __u32 sipx_network; | 11 | __be32 sipx_network; |
| 12 | unsigned char sipx_node[IPX_NODE_LEN]; | 12 | unsigned char sipx_node[IPX_NODE_LEN]; |
| 13 | __u8 sipx_type; | 13 | __u8 sipx_type; |
| 14 | unsigned char sipx_zero; /* 16 byte fill */ | 14 | unsigned char sipx_zero; /* 16 byte fill */ |
| @@ -23,13 +23,13 @@ struct sockaddr_ipx { | |||
| 23 | #define IPX_CRTITF 1 | 23 | #define IPX_CRTITF 1 |
| 24 | 24 | ||
| 25 | struct ipx_route_definition { | 25 | struct ipx_route_definition { |
| 26 | __u32 ipx_network; | 26 | __be32 ipx_network; |
| 27 | __u32 ipx_router_network; | 27 | __be32 ipx_router_network; |
| 28 | unsigned char ipx_router_node[IPX_NODE_LEN]; | 28 | unsigned char ipx_router_node[IPX_NODE_LEN]; |
| 29 | }; | 29 | }; |
| 30 | 30 | ||
| 31 | struct ipx_interface_definition { | 31 | struct ipx_interface_definition { |
| 32 | __u32 ipx_network; | 32 | __be32 ipx_network; |
| 33 | unsigned char ipx_device[16]; | 33 | unsigned char ipx_device[16]; |
| 34 | unsigned char ipx_dlink_type; | 34 | unsigned char ipx_dlink_type; |
| 35 | #define IPX_FRAME_NONE 0 | 35 | #define IPX_FRAME_NONE 0 |
| @@ -55,8 +55,8 @@ struct ipx_config_data { | |||
| 55 | */ | 55 | */ |
| 56 | 56 | ||
| 57 | struct ipx_route_def { | 57 | struct ipx_route_def { |
| 58 | __u32 ipx_network; | 58 | __be32 ipx_network; |
| 59 | __u32 ipx_router_network; | 59 | __be32 ipx_router_network; |
| 60 | #define IPX_ROUTE_NO_ROUTER 0 | 60 | #define IPX_ROUTE_NO_ROUTER 0 |
| 61 | unsigned char ipx_router_node[IPX_NODE_LEN]; | 61 | unsigned char ipx_router_node[IPX_NODE_LEN]; |
| 62 | unsigned char ipx_device[16]; | 62 | unsigned char ipx_device[16]; |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 80f39cab470a..24b611147adb 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -171,6 +171,8 @@ __attribute_const__ roundup_pow_of_two(unsigned long x) | |||
| 171 | 171 | ||
| 172 | extern int printk_ratelimit(void); | 172 | extern int printk_ratelimit(void); |
| 173 | extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); | 173 | extern int __printk_ratelimit(int ratelimit_jiffies, int ratelimit_burst); |
| 174 | extern bool printk_timed_ratelimit(unsigned long *caller_jiffies, | ||
| 175 | unsigned int interval_msec); | ||
| 174 | 176 | ||
| 175 | static inline void console_silent(void) | 177 | static inline void console_silent(void) |
| 176 | { | 178 | { |
diff --git a/include/linux/libata.h b/include/linux/libata.h index b03d5a340dc8..abd2debebca2 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -702,7 +702,6 @@ extern int ata_std_prereset(struct ata_port *ap); | |||
| 702 | extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes); | 702 | extern int ata_std_softreset(struct ata_port *ap, unsigned int *classes); |
| 703 | extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class); | 703 | extern int sata_std_hardreset(struct ata_port *ap, unsigned int *class); |
| 704 | extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes); | 704 | extern void ata_std_postreset(struct ata_port *ap, unsigned int *classes); |
| 705 | extern int ata_dev_revalidate(struct ata_device *dev, int post_reset); | ||
| 706 | extern void ata_port_disable(struct ata_port *); | 705 | extern void ata_port_disable(struct ata_port *); |
| 707 | extern void ata_std_ports(struct ata_ioports *ioaddr); | 706 | extern void ata_std_ports(struct ata_ioports *ioaddr); |
| 708 | #ifdef CONFIG_PCI | 707 | #ifdef CONFIG_PCI |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index ed0762b283a9..e06683e2bea3 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -218,13 +218,9 @@ struct zone { | |||
| 218 | * under - it drives the swappiness decision: whether to unmap mapped | 218 | * under - it drives the swappiness decision: whether to unmap mapped |
| 219 | * pages. | 219 | * pages. |
| 220 | * | 220 | * |
| 221 | * temp_priority is used to remember the scanning priority at which | 221 | * Access to both this field is quite racy even on uniprocessor. But |
| 222 | * this zone was successfully refilled to free_pages == pages_high. | ||
| 223 | * | ||
| 224 | * Access to both these fields is quite racy even on uniprocessor. But | ||
| 225 | * it is expected to average out OK. | 222 | * it is expected to average out OK. |
| 226 | */ | 223 | */ |
| 227 | int temp_priority; | ||
| 228 | int prev_priority; | 224 | int prev_priority; |
| 229 | 225 | ||
| 230 | 226 | ||
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index ce6c85815cbd..24a9ef1506b6 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h | |||
| @@ -402,6 +402,8 @@ extern const struct file_operations fat_file_operations; | |||
| 402 | extern struct inode_operations fat_file_inode_operations; | 402 | extern struct inode_operations fat_file_inode_operations; |
| 403 | extern int fat_notify_change(struct dentry * dentry, struct iattr * attr); | 403 | extern int fat_notify_change(struct dentry * dentry, struct iattr * attr); |
| 404 | extern void fat_truncate(struct inode *inode); | 404 | extern void fat_truncate(struct inode *inode); |
| 405 | extern int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, | ||
| 406 | struct kstat *stat); | ||
| 405 | 407 | ||
| 406 | /* fat/inode.c */ | 408 | /* fat/inode.c */ |
| 407 | extern void fat_attach(struct inode *inode, loff_t i_pos); | 409 | extern void fat_attach(struct inode *inode, loff_t i_pos); |
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 70420bbae82b..8b3ef4187219 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
| @@ -355,7 +355,7 @@ struct nand_buffers { | |||
| 355 | * @priv: [OPTIONAL] pointer to private chip date | 355 | * @priv: [OPTIONAL] pointer to private chip date |
| 356 | * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks | 356 | * @errstat: [OPTIONAL] hardware specific function to perform additional error status checks |
| 357 | * (determine if errors are correctable) | 357 | * (determine if errors are correctable) |
| 358 | * @write_page [REPLACEABLE] High-level page write function | 358 | * @write_page: [REPLACEABLE] High-level page write function |
| 359 | */ | 359 | */ |
| 360 | 360 | ||
| 361 | struct nand_chip { | 361 | struct nand_chip { |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 04319a76103a..022edfa97ed9 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
| @@ -96,22 +96,6 @@ struct _xt_align | |||
| 96 | /* Error verdict. */ | 96 | /* Error verdict. */ |
| 97 | #define XT_ERROR_TARGET "ERROR" | 97 | #define XT_ERROR_TARGET "ERROR" |
| 98 | 98 | ||
| 99 | /* | ||
| 100 | * New IP firewall options for [gs]etsockopt at the RAW IP level. | ||
| 101 | * Unlike BSD Linux inherits IP options so you don't have to use a raw | ||
| 102 | * socket for this. Instead we check rights in the calls. */ | ||
| 103 | #define XT_BASE_CTL 64 /* base for firewall socket options */ | ||
| 104 | |||
| 105 | #define XT_SO_SET_REPLACE (XT_BASE_CTL) | ||
| 106 | #define XT_SO_SET_ADD_COUNTERS (XT_BASE_CTL + 1) | ||
| 107 | #define XT_SO_SET_MAX XT_SO_SET_ADD_COUNTERS | ||
| 108 | |||
| 109 | #define XT_SO_GET_INFO (XT_BASE_CTL) | ||
| 110 | #define XT_SO_GET_ENTRIES (XT_BASE_CTL + 1) | ||
| 111 | #define XT_SO_GET_REVISION_MATCH (XT_BASE_CTL + 2) | ||
| 112 | #define XT_SO_GET_REVISION_TARGET (XT_BASE_CTL + 3) | ||
| 113 | #define XT_SO_GET_MAX XT_SO_GET_REVISION_TARGET | ||
| 114 | |||
| 115 | #define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0) | 99 | #define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0) |
| 116 | #define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0) | 100 | #define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0) |
| 117 | 101 | ||
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h index 44e39b61d9e7..0be235418a2f 100644 --- a/include/linux/netfilter_arp/arp_tables.h +++ b/include/linux/netfilter_arp/arp_tables.h | |||
| @@ -112,19 +112,20 @@ struct arpt_entry | |||
| 112 | * New IP firewall options for [gs]etsockopt at the RAW IP level. | 112 | * New IP firewall options for [gs]etsockopt at the RAW IP level. |
| 113 | * Unlike BSD Linux inherits IP options so you don't have to use a raw | 113 | * Unlike BSD Linux inherits IP options so you don't have to use a raw |
| 114 | * socket for this. Instead we check rights in the calls. | 114 | * socket for this. Instead we check rights in the calls. |
| 115 | * | ||
| 116 | * ATTENTION: check linux/in.h before adding new number here. | ||
| 115 | */ | 117 | */ |
| 116 | #define ARPT_CTL_OFFSET 32 | 118 | #define ARPT_BASE_CTL 96 |
| 117 | #define ARPT_BASE_CTL (XT_BASE_CTL+ARPT_CTL_OFFSET) | 119 | |
| 118 | 120 | #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL) | |
| 119 | #define ARPT_SO_SET_REPLACE (XT_SO_SET_REPLACE+ARPT_CTL_OFFSET) | 121 | #define ARPT_SO_SET_ADD_COUNTERS (ARPT_BASE_CTL + 1) |
| 120 | #define ARPT_SO_SET_ADD_COUNTERS (XT_SO_SET_ADD_COUNTERS+ARPT_CTL_OFFSET) | 122 | #define ARPT_SO_SET_MAX ARPT_SO_SET_ADD_COUNTERS |
| 121 | #define ARPT_SO_SET_MAX (XT_SO_SET_MAX+ARPT_CTL_OFFSET) | 123 | |
| 122 | 124 | #define ARPT_SO_GET_INFO (ARPT_BASE_CTL) | |
| 123 | #define ARPT_SO_GET_INFO (XT_SO_GET_INFO+ARPT_CTL_OFFSET) | 125 | #define ARPT_SO_GET_ENTRIES (ARPT_BASE_CTL + 1) |
| 124 | #define ARPT_SO_GET_ENTRIES (XT_SO_GET_ENTRIES+ARPT_CTL_OFFSET) | 126 | /* #define ARPT_SO_GET_REVISION_MATCH (APRT_BASE_CTL + 2) */ |
| 125 | /* #define ARPT_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH */ | 127 | #define ARPT_SO_GET_REVISION_TARGET (ARPT_BASE_CTL + 3) |
| 126 | #define ARPT_SO_GET_REVISION_TARGET (XT_SO_GET_REVISION_TARGET+ARPT_CTL_OFFSET) | 128 | #define ARPT_SO_GET_MAX (ARPT_SO_GET_REVISION_TARGET) |
| 127 | #define ARPT_SO_GET_MAX (XT_SO_GET_REVISION_TARGET+ARPT_CTL_OFFSET) | ||
| 128 | 129 | ||
| 129 | /* CONTINUE verdict for targets */ | 130 | /* CONTINUE verdict for targets */ |
| 130 | #define ARPT_CONTINUE XT_CONTINUE | 131 | #define ARPT_CONTINUE XT_CONTINUE |
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h index a536bbdef145..4f06dad0bde9 100644 --- a/include/linux/netfilter_ipv4/ip_tables.h +++ b/include/linux/netfilter_ipv4/ip_tables.h | |||
| @@ -101,18 +101,21 @@ struct ipt_entry | |||
| 101 | /* | 101 | /* |
| 102 | * New IP firewall options for [gs]etsockopt at the RAW IP level. | 102 | * New IP firewall options for [gs]etsockopt at the RAW IP level. |
| 103 | * Unlike BSD Linux inherits IP options so you don't have to use a raw | 103 | * Unlike BSD Linux inherits IP options so you don't have to use a raw |
| 104 | * socket for this. Instead we check rights in the calls. */ | 104 | * socket for this. Instead we check rights in the calls. |
| 105 | #define IPT_BASE_CTL XT_BASE_CTL | 105 | * |
| 106 | 106 | * ATTENTION: check linux/in.h before adding new number here. | |
| 107 | #define IPT_SO_SET_REPLACE XT_SO_SET_REPLACE | 107 | */ |
| 108 | #define IPT_SO_SET_ADD_COUNTERS XT_SO_SET_ADD_COUNTERS | 108 | #define IPT_BASE_CTL 64 |
| 109 | #define IPT_SO_SET_MAX XT_SO_SET_MAX | 109 | |
| 110 | 110 | #define IPT_SO_SET_REPLACE (IPT_BASE_CTL) | |
| 111 | #define IPT_SO_GET_INFO XT_SO_GET_INFO | 111 | #define IPT_SO_SET_ADD_COUNTERS (IPT_BASE_CTL + 1) |
| 112 | #define IPT_SO_GET_ENTRIES XT_SO_GET_ENTRIES | 112 | #define IPT_SO_SET_MAX IPT_SO_SET_ADD_COUNTERS |
| 113 | #define IPT_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH | 113 | |
| 114 | #define IPT_SO_GET_REVISION_TARGET XT_SO_GET_REVISION_TARGET | 114 | #define IPT_SO_GET_INFO (IPT_BASE_CTL) |
| 115 | #define IPT_SO_GET_MAX XT_SO_GET_REVISION_TARGET | 115 | #define IPT_SO_GET_ENTRIES (IPT_BASE_CTL + 1) |
| 116 | #define IPT_SO_GET_REVISION_MATCH (IPT_BASE_CTL + 2) | ||
| 117 | #define IPT_SO_GET_REVISION_TARGET (IPT_BASE_CTL + 3) | ||
| 118 | #define IPT_SO_GET_MAX IPT_SO_GET_REVISION_TARGET | ||
| 116 | 119 | ||
| 117 | #define IPT_CONTINUE XT_CONTINUE | 120 | #define IPT_CONTINUE XT_CONTINUE |
| 118 | #define IPT_RETURN XT_RETURN | 121 | #define IPT_RETURN XT_RETURN |
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index d7a8e9c0dad0..4aed340401db 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
| @@ -107,18 +107,21 @@ struct ip6t_entry | |||
| 107 | /* | 107 | /* |
| 108 | * New IP firewall options for [gs]etsockopt at the RAW IP level. | 108 | * New IP firewall options for [gs]etsockopt at the RAW IP level. |
| 109 | * Unlike BSD Linux inherits IP options so you don't have to use | 109 | * Unlike BSD Linux inherits IP options so you don't have to use |
| 110 | * a raw socket for this. Instead we check rights in the calls. */ | 110 | * a raw socket for this. Instead we check rights in the calls. |
| 111 | #define IP6T_BASE_CTL XT_BASE_CTL | 111 | * |
| 112 | 112 | * ATTENTION: check linux/in6.h before adding new number here. | |
| 113 | #define IP6T_SO_SET_REPLACE XT_SO_SET_REPLACE | 113 | */ |
| 114 | #define IP6T_SO_SET_ADD_COUNTERS XT_SO_SET_ADD_COUNTERS | 114 | #define IP6T_BASE_CTL 64 |
| 115 | #define IP6T_SO_SET_MAX XT_SO_SET_MAX | 115 | |
| 116 | 116 | #define IP6T_SO_SET_REPLACE (IP6T_BASE_CTL) | |
| 117 | #define IP6T_SO_GET_INFO XT_SO_GET_INFO | 117 | #define IP6T_SO_SET_ADD_COUNTERS (IP6T_BASE_CTL + 1) |
| 118 | #define IP6T_SO_GET_ENTRIES XT_SO_GET_ENTRIES | 118 | #define IP6T_SO_SET_MAX IP6T_SO_SET_ADD_COUNTERS |
| 119 | #define IP6T_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH | 119 | |
| 120 | #define IP6T_SO_GET_REVISION_TARGET XT_SO_GET_REVISION_TARGET | 120 | #define IP6T_SO_GET_INFO (IP6T_BASE_CTL) |
| 121 | #define IP6T_SO_GET_MAX XT_SO_GET_REVISION_TARGET | 121 | #define IP6T_SO_GET_ENTRIES (IP6T_BASE_CTL + 1) |
| 122 | #define IP6T_SO_GET_REVISION_MATCH (IP6T_BASE_CTL + 4) | ||
| 123 | #define IP6T_SO_GET_REVISION_TARGET (IP6T_BASE_CTL + 5) | ||
| 124 | #define IP6T_SO_GET_MAX IP6T_SO_GET_REVISION_TARGET | ||
| 122 | 125 | ||
| 123 | /* CONTINUE verdict for targets */ | 126 | /* CONTINUE verdict for targets */ |
| 124 | #define IP6T_CONTINUE XT_CONTINUE | 127 | #define IP6T_CONTINUE XT_CONTINUE |
diff --git a/include/linux/nfsd/nfsd.h b/include/linux/nfsd/nfsd.h index eb231143d579..edb54c3171b3 100644 --- a/include/linux/nfsd/nfsd.h +++ b/include/linux/nfsd/nfsd.h | |||
| @@ -89,7 +89,7 @@ __be32 nfsd_access(struct svc_rqst *, struct svc_fh *, u32 *, u32 *); | |||
| 89 | __be32 nfsd_create_v3(struct svc_rqst *, struct svc_fh *, | 89 | __be32 nfsd_create_v3(struct svc_rqst *, struct svc_fh *, |
| 90 | char *name, int len, struct iattr *attrs, | 90 | char *name, int len, struct iattr *attrs, |
| 91 | struct svc_fh *res, int createmode, | 91 | struct svc_fh *res, int createmode, |
| 92 | u32 *verifier, int *truncp); | 92 | u32 *verifier, int *truncp, int *created); |
| 93 | __be32 nfsd_commit(struct svc_rqst *, struct svc_fh *, | 93 | __be32 nfsd_commit(struct svc_rqst *, struct svc_fh *, |
| 94 | loff_t, unsigned long); | 94 | loff_t, unsigned long); |
| 95 | #endif /* CONFIG_NFSD_V3 */ | 95 | #endif /* CONFIG_NFSD_V3 */ |
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 64f950925151..c3e255bf8594 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
| @@ -52,19 +52,23 @@ static inline void mapping_set_gfp_mask(struct address_space *m, gfp_t mask) | |||
| 52 | void release_pages(struct page **pages, int nr, int cold); | 52 | void release_pages(struct page **pages, int nr, int cold); |
| 53 | 53 | ||
| 54 | #ifdef CONFIG_NUMA | 54 | #ifdef CONFIG_NUMA |
| 55 | extern struct page *page_cache_alloc(struct address_space *x); | 55 | extern struct page *__page_cache_alloc(gfp_t gfp); |
| 56 | extern struct page *page_cache_alloc_cold(struct address_space *x); | ||
| 57 | #else | 56 | #else |
| 57 | static inline struct page *__page_cache_alloc(gfp_t gfp) | ||
| 58 | { | ||
| 59 | return alloc_pages(gfp, 0); | ||
| 60 | } | ||
| 61 | #endif | ||
| 62 | |||
| 58 | static inline struct page *page_cache_alloc(struct address_space *x) | 63 | static inline struct page *page_cache_alloc(struct address_space *x) |
| 59 | { | 64 | { |
| 60 | return alloc_pages(mapping_gfp_mask(x), 0); | 65 | return __page_cache_alloc(mapping_gfp_mask(x)); |
| 61 | } | 66 | } |
| 62 | 67 | ||
| 63 | static inline struct page *page_cache_alloc_cold(struct address_space *x) | 68 | static inline struct page *page_cache_alloc_cold(struct address_space *x) |
| 64 | { | 69 | { |
| 65 | return alloc_pages(mapping_gfp_mask(x)|__GFP_COLD, 0); | 70 | return __page_cache_alloc(mapping_gfp_mask(x)|__GFP_COLD); |
| 66 | } | 71 | } |
| 67 | #endif | ||
| 68 | 72 | ||
| 69 | typedef int filler_t(void *, struct page *); | 73 | typedef int filler_t(void *, struct page *); |
| 70 | 74 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f3a168f3c9df..fa4e1d799782 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -1213,6 +1213,7 @@ | |||
| 1213 | #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 | 1213 | #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 |
| 1214 | #define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452 | 1214 | #define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452 |
| 1215 | #define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453 | 1215 | #define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453 |
| 1216 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560 | ||
| 1216 | 1217 | ||
| 1217 | #define PCI_VENDOR_ID_IMS 0x10e0 | 1218 | #define PCI_VENDOR_ID_IMS 0x10e0 |
| 1218 | #define PCI_DEVICE_ID_IMS_TT128 0x9128 | 1219 | #define PCI_DEVICE_ID_IMS_TT128 0x9128 |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index c312a12ad2d6..c321316f1bc7 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
| @@ -371,6 +371,7 @@ | |||
| 371 | #define PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ | 371 | #define PCI_EXP_DEVSTA_TRPND 0x20 /* Transactions Pending */ |
| 372 | #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ | 372 | #define PCI_EXP_LNKCAP 12 /* Link Capabilities */ |
| 373 | #define PCI_EXP_LNKCTL 16 /* Link Control */ | 373 | #define PCI_EXP_LNKCTL 16 /* Link Control */ |
| 374 | #define PCI_EXP_LNKCTL_CLKREQ_EN 0x100 /* Enable clkreq */ | ||
| 374 | #define PCI_EXP_LNKSTA 18 /* Link Status */ | 375 | #define PCI_EXP_LNKSTA 18 /* Link Status */ |
| 375 | #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ | 376 | #define PCI_EXP_SLTCAP 20 /* Slot Capabilities */ |
| 376 | #define PCI_EXP_SLTCTL 24 /* Slot Control */ | 377 | #define PCI_EXP_SLTCTL 24 /* Slot Control */ |
diff --git a/include/linux/personality.h b/include/linux/personality.h index bf4cf2080e5c..012cd558189b 100644 --- a/include/linux/personality.h +++ b/include/linux/personality.h | |||
| @@ -114,7 +114,7 @@ struct exec_domain { | |||
| 114 | * Change personality of the currently running process. | 114 | * Change personality of the currently running process. |
| 115 | */ | 115 | */ |
| 116 | #define set_personality(pers) \ | 116 | #define set_personality(pers) \ |
| 117 | ((current->personality == pers) ? 0 : __set_personality(pers)) | 117 | ((current->personality == (pers)) ? 0 : __set_personality(pers)) |
| 118 | 118 | ||
| 119 | #endif /* __KERNEL__ */ | 119 | #endif /* __KERNEL__ */ |
| 120 | 120 | ||
diff --git a/include/linux/pm.h b/include/linux/pm.h index 6b27e07aef19..070394e846d0 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -116,7 +116,9 @@ typedef int __bitwise suspend_disk_method_t; | |||
| 116 | #define PM_DISK_PLATFORM ((__force suspend_disk_method_t) 2) | 116 | #define PM_DISK_PLATFORM ((__force suspend_disk_method_t) 2) |
| 117 | #define PM_DISK_SHUTDOWN ((__force suspend_disk_method_t) 3) | 117 | #define PM_DISK_SHUTDOWN ((__force suspend_disk_method_t) 3) |
| 118 | #define PM_DISK_REBOOT ((__force suspend_disk_method_t) 4) | 118 | #define PM_DISK_REBOOT ((__force suspend_disk_method_t) 4) |
| 119 | #define PM_DISK_MAX ((__force suspend_disk_method_t) 5) | 119 | #define PM_DISK_TEST ((__force suspend_disk_method_t) 5) |
| 120 | #define PM_DISK_TESTPROC ((__force suspend_disk_method_t) 6) | ||
| 121 | #define PM_DISK_MAX ((__force suspend_disk_method_t) 7) | ||
| 120 | 122 | ||
| 121 | struct pm_ops { | 123 | struct pm_ops { |
| 122 | suspend_disk_method_t pm_disk_mode; | 124 | suspend_disk_method_t pm_disk_mode; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 6735c1cf334c..eafe4a7b8237 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -466,7 +466,6 @@ struct signal_struct { | |||
| 466 | struct pacct_struct pacct; /* per-process accounting information */ | 466 | struct pacct_struct pacct; /* per-process accounting information */ |
| 467 | #endif | 467 | #endif |
| 468 | #ifdef CONFIG_TASKSTATS | 468 | #ifdef CONFIG_TASKSTATS |
| 469 | spinlock_t stats_lock; | ||
| 470 | struct taskstats *stats; | 469 | struct taskstats *stats; |
| 471 | #endif | 470 | #endif |
| 472 | }; | 471 | }; |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 1b24bd45e080..d98562f1df76 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
| @@ -6,10 +6,17 @@ | |||
| 6 | **************************************************************** | 6 | **************************************************************** |
| 7 | **************************************************************** | 7 | **************************************************************** |
| 8 | ** | 8 | ** |
| 9 | ** WARNING: | ||
| 9 | ** The values in this file are exported to user space via | 10 | ** The values in this file are exported to user space via |
| 10 | ** the sysctl() binary interface. However this interface | 11 | ** the sysctl() binary interface. Do *NOT* change the |
| 11 | ** is unstable and deprecated and will be removed in the future. | 12 | ** numbering of any existing values here, and do not change |
| 12 | ** For a stable interface use /proc/sys. | 13 | ** any numbers within any one set of values. If you have to |
| 14 | ** have to redefine an existing interface, use a new number for it. | ||
| 15 | ** The kernel will then return -ENOTDIR to any application using | ||
| 16 | ** the old binary interface. | ||
| 17 | ** | ||
| 18 | ** For new interfaces unless you really need a binary number | ||
| 19 | ** please use CTL_UNNUMBERED. | ||
| 13 | ** | 20 | ** |
| 14 | **************************************************************** | 21 | **************************************************************** |
| 15 | **************************************************************** | 22 | **************************************************************** |
| @@ -48,6 +55,7 @@ struct __sysctl_args { | |||
| 48 | #ifdef __KERNEL__ | 55 | #ifdef __KERNEL__ |
| 49 | #define CTL_ANY -1 /* Matches any name */ | 56 | #define CTL_ANY -1 /* Matches any name */ |
| 50 | #define CTL_NONE 0 | 57 | #define CTL_NONE 0 |
| 58 | #define CTL_UNNUMBERED CTL_NONE /* sysctl without a binary number */ | ||
| 51 | #endif | 59 | #endif |
| 52 | 60 | ||
| 53 | enum | 61 | enum |
| @@ -961,8 +969,8 @@ extern ctl_handler sysctl_ms_jiffies; | |||
| 961 | /* | 969 | /* |
| 962 | * Register a set of sysctl names by calling register_sysctl_table | 970 | * Register a set of sysctl names by calling register_sysctl_table |
| 963 | * with an initialised array of ctl_table's. An entry with zero | 971 | * with an initialised array of ctl_table's. An entry with zero |
| 964 | * ctl_name terminates the table. table->de will be set up by the | 972 | * ctl_name and NULL procname terminates the table. table->de will be |
| 965 | * registration and need not be initialised in advance. | 973 | * set up by the registration and need not be initialised in advance. |
| 966 | * | 974 | * |
| 967 | * sysctl names can be mirrored automatically under /proc/sys. The | 975 | * sysctl names can be mirrored automatically under /proc/sys. The |
| 968 | * procname supplied controls /proc naming. | 976 | * procname supplied controls /proc naming. |
| @@ -973,7 +981,10 @@ extern ctl_handler sysctl_ms_jiffies; | |||
| 973 | * Leaf nodes in the sysctl tree will be represented by a single file | 981 | * Leaf nodes in the sysctl tree will be represented by a single file |
| 974 | * under /proc; non-leaf nodes will be represented by directories. A | 982 | * under /proc; non-leaf nodes will be represented by directories. A |
| 975 | * null procname disables /proc mirroring at this node. | 983 | * null procname disables /proc mirroring at this node. |
| 976 | * | 984 | * |
| 985 | * sysctl entries with a zero ctl_name will not be available through | ||
| 986 | * the binary sysctl interface. | ||
| 987 | * | ||
| 977 | * sysctl(2) can automatically manage read and write requests through | 988 | * sysctl(2) can automatically manage read and write requests through |
| 978 | * the sysctl table. The data and maxlen fields of the ctl_table | 989 | * the sysctl table. The data and maxlen fields of the ctl_table |
| 979 | * struct enable minimal validation of the values being written to be | 990 | * struct enable minimal validation of the values being written to be |
diff --git a/include/linux/taskstats_kern.h b/include/linux/taskstats_kern.h index 16894b7edcc8..6562a2050a25 100644 --- a/include/linux/taskstats_kern.h +++ b/include/linux/taskstats_kern.h | |||
| @@ -23,25 +23,26 @@ static inline void taskstats_exit_free(struct taskstats *tidstats) | |||
| 23 | 23 | ||
| 24 | static inline void taskstats_tgid_init(struct signal_struct *sig) | 24 | static inline void taskstats_tgid_init(struct signal_struct *sig) |
| 25 | { | 25 | { |
| 26 | spin_lock_init(&sig->stats_lock); | ||
| 27 | sig->stats = NULL; | 26 | sig->stats = NULL; |
| 28 | } | 27 | } |
| 29 | 28 | ||
| 30 | static inline void taskstats_tgid_alloc(struct signal_struct *sig) | 29 | static inline void taskstats_tgid_alloc(struct task_struct *tsk) |
| 31 | { | 30 | { |
| 31 | struct signal_struct *sig = tsk->signal; | ||
| 32 | struct taskstats *stats; | 32 | struct taskstats *stats; |
| 33 | unsigned long flags; | ||
| 34 | 33 | ||
| 35 | stats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL); | 34 | if (sig->stats != NULL) |
| 36 | if (!stats) | ||
| 37 | return; | 35 | return; |
| 38 | 36 | ||
| 39 | spin_lock_irqsave(&sig->stats_lock, flags); | 37 | /* No problem if kmem_cache_zalloc() fails */ |
| 38 | stats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL); | ||
| 39 | |||
| 40 | spin_lock_irq(&tsk->sighand->siglock); | ||
| 40 | if (!sig->stats) { | 41 | if (!sig->stats) { |
| 41 | sig->stats = stats; | 42 | sig->stats = stats; |
| 42 | stats = NULL; | 43 | stats = NULL; |
| 43 | } | 44 | } |
| 44 | spin_unlock_irqrestore(&sig->stats_lock, flags); | 45 | spin_unlock_irq(&tsk->sighand->siglock); |
| 45 | 46 | ||
| 46 | if (stats) | 47 | if (stats) |
| 47 | kmem_cache_free(taskstats_cache, stats); | 48 | kmem_cache_free(taskstats_cache, stats); |
| @@ -49,23 +50,13 @@ static inline void taskstats_tgid_alloc(struct signal_struct *sig) | |||
| 49 | 50 | ||
| 50 | static inline void taskstats_tgid_free(struct signal_struct *sig) | 51 | static inline void taskstats_tgid_free(struct signal_struct *sig) |
| 51 | { | 52 | { |
| 52 | struct taskstats *stats = NULL; | 53 | if (sig->stats) |
| 53 | unsigned long flags; | 54 | kmem_cache_free(taskstats_cache, sig->stats); |
| 54 | |||
| 55 | spin_lock_irqsave(&sig->stats_lock, flags); | ||
| 56 | if (sig->stats) { | ||
| 57 | stats = sig->stats; | ||
| 58 | sig->stats = NULL; | ||
| 59 | } | ||
| 60 | spin_unlock_irqrestore(&sig->stats_lock, flags); | ||
| 61 | if (stats) | ||
| 62 | kmem_cache_free(taskstats_cache, stats); | ||
| 63 | } | 55 | } |
| 64 | 56 | ||
| 65 | extern void taskstats_exit_alloc(struct taskstats **, unsigned int *); | 57 | extern void taskstats_exit_alloc(struct taskstats **, unsigned int *); |
| 66 | extern void taskstats_exit_send(struct task_struct *, struct taskstats *, int, unsigned int); | 58 | extern void taskstats_exit_send(struct task_struct *, struct taskstats *, int, unsigned int); |
| 67 | extern void taskstats_init_early(void); | 59 | extern void taskstats_init_early(void); |
| 68 | extern void taskstats_tgid_alloc(struct signal_struct *); | ||
| 69 | #else | 60 | #else |
| 70 | static inline void taskstats_exit_alloc(struct taskstats **ptidstats, unsigned int *mycpu) | 61 | static inline void taskstats_exit_alloc(struct taskstats **ptidstats, unsigned int *mycpu) |
| 71 | {} | 62 | {} |
| @@ -77,7 +68,7 @@ static inline void taskstats_exit_send(struct task_struct *tsk, | |||
| 77 | {} | 68 | {} |
| 78 | static inline void taskstats_tgid_init(struct signal_struct *sig) | 69 | static inline void taskstats_tgid_init(struct signal_struct *sig) |
| 79 | {} | 70 | {} |
| 80 | static inline void taskstats_tgid_alloc(struct signal_struct *sig) | 71 | static inline void taskstats_tgid_alloc(struct task_struct *tsk) |
| 81 | {} | 72 | {} |
| 82 | static inline void taskstats_tgid_free(struct signal_struct *sig) | 73 | static inline void taskstats_tgid_free(struct signal_struct *sig) |
| 83 | {} | 74 | {} |
diff --git a/include/linux/ufs_fs.h b/include/linux/ufs_fs.h index 61eef508b041..28967eda9d7b 100644 --- a/include/linux/ufs_fs.h +++ b/include/linux/ufs_fs.h | |||
| @@ -908,7 +908,7 @@ struct ufs_super_block_third { | |||
| 908 | __fs64 fs_csaddr; /* blk addr of cyl grp summary area */ | 908 | __fs64 fs_csaddr; /* blk addr of cyl grp summary area */ |
| 909 | __fs64 fs_pendingblocks;/* blocks in process of being freed */ | 909 | __fs64 fs_pendingblocks;/* blocks in process of being freed */ |
| 910 | __fs32 fs_pendinginodes;/*inodes in process of being freed */ | 910 | __fs32 fs_pendinginodes;/*inodes in process of being freed */ |
| 911 | } fs_u2; | 911 | } __attribute__ ((packed)) fs_u2; |
| 912 | } fs_un1; | 912 | } fs_un1; |
| 913 | union { | 913 | union { |
| 914 | struct { | 914 | struct { |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index ce5f1482e6be..924e502905d4 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
| @@ -23,13 +23,14 @@ struct vm_area_struct; | |||
| 23 | #endif | 23 | #endif |
| 24 | 24 | ||
| 25 | struct vm_struct { | 25 | struct vm_struct { |
| 26 | /* keep next,addr,size together to speedup lookups */ | ||
| 27 | struct vm_struct *next; | ||
| 26 | void *addr; | 28 | void *addr; |
| 27 | unsigned long size; | 29 | unsigned long size; |
| 28 | unsigned long flags; | 30 | unsigned long flags; |
| 29 | struct page **pages; | 31 | struct page **pages; |
| 30 | unsigned int nr_pages; | 32 | unsigned int nr_pages; |
| 31 | unsigned long phys_addr; | 33 | unsigned long phys_addr; |
| 32 | struct vm_struct *next; | ||
| 33 | }; | 34 | }; |
| 34 | 35 | ||
| 35 | /* | 36 | /* |
| @@ -60,7 +61,8 @@ extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags); | |||
| 60 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, | 61 | extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags, |
| 61 | unsigned long start, unsigned long end); | 62 | unsigned long start, unsigned long end); |
| 62 | extern struct vm_struct *get_vm_area_node(unsigned long size, | 63 | extern struct vm_struct *get_vm_area_node(unsigned long size, |
| 63 | unsigned long flags, int node); | 64 | unsigned long flags, int node, |
| 65 | gfp_t gfp_mask); | ||
| 64 | extern struct vm_struct *remove_vm_area(void *addr); | 66 | extern struct vm_struct *remove_vm_area(void *addr); |
| 65 | extern int map_vm_area(struct vm_struct *area, pgprot_t prot, | 67 | extern int map_vm_area(struct vm_struct *area, pgprot_t prot, |
| 66 | struct page ***pages); | 68 | struct page ***pages); |
diff --git a/include/linux/wait.h b/include/linux/wait.h index b3b9048421d8..e820d00e1383 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -79,6 +79,15 @@ struct task_struct; | |||
| 79 | 79 | ||
| 80 | extern void init_waitqueue_head(wait_queue_head_t *q); | 80 | extern void init_waitqueue_head(wait_queue_head_t *q); |
| 81 | 81 | ||
| 82 | #ifdef CONFIG_LOCKDEP | ||
| 83 | # define __WAIT_QUEUE_HEAD_INIT_ONSTACK(name) \ | ||
| 84 | ({ init_waitqueue_head(&name); name; }) | ||
| 85 | # define DECLARE_WAIT_QUEUE_HEAD_ONSTACK(name) \ | ||
| 86 | wait_queue_head_t name = __WAIT_QUEUE_HEAD_INIT_ONSTACK(name) | ||
| 87 | #else | ||
| 88 | # define DECLARE_WAIT_QUEUE_HEAD_ONSTACK(name) DECLARE_WAIT_QUEUE_HEAD(name) | ||
| 89 | #endif | ||
| 90 | |||
| 82 | static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) | 91 | static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) |
| 83 | { | 92 | { |
| 84 | q->flags = 0; | 93 | q->flags = 0; |
