diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-10-25 17:39:46 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-10-25 17:39:46 -0400 |
| commit | 0bbc367e21bfeea33230d893be4fa3a3ff9bcb48 (patch) | |
| tree | 50fb335648a22ac519eddb772714ba64a3e6a7ec /include | |
| parent | ae416ba4e94a30486ba2af0afe052579e7114ab8 (diff) | |
| parent | 32b88194f71d6ae7768a29f87fbba454728273ee (diff) | |
Merge 4.3-rc7 into usb-next
We want the USB and other fixes in here as well.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/drm/drm_dp_mst_helper.h | 3 | ||||
| -rw-r--r-- | include/linux/backing-dev-defs.h | 3 | ||||
| -rw-r--r-- | include/linux/backing-dev.h | 69 | ||||
| -rw-r--r-- | include/linux/cma.h | 2 | ||||
| -rw-r--r-- | include/linux/compiler-gcc.h | 13 | ||||
| -rw-r--r-- | include/linux/compiler.h | 66 | ||||
| -rw-r--r-- | include/linux/dma-contiguous.h | 4 | ||||
| -rw-r--r-- | include/linux/memcontrol.h | 8 | ||||
| -rw-r--r-- | include/net/af_unix.h | 2 | ||||
| -rw-r--r-- | include/net/inet_timewait_sock.h | 4 | ||||
| -rw-r--r-- | include/net/sock.h | 8 | ||||
| -rw-r--r-- | include/sound/soc.h | 6 | ||||
| -rw-r--r-- | include/sound/wm8904.h | 2 | ||||
| -rw-r--r-- | include/uapi/asm-generic/signal.h | 2 | ||||
| -rw-r--r-- | include/uapi/linux/openvswitch.h | 36 | ||||
| -rw-r--r-- | include/uapi/linux/rtnetlink.h | 2 |
16 files changed, 118 insertions, 112 deletions
diff --git a/include/drm/drm_dp_mst_helper.h b/include/drm/drm_dp_mst_helper.h index 0f408b002d98..5340099741ae 100644 --- a/include/drm/drm_dp_mst_helper.h +++ b/include/drm/drm_dp_mst_helper.h | |||
| @@ -253,6 +253,7 @@ struct drm_dp_remote_dpcd_write { | |||
| 253 | u8 *bytes; | 253 | u8 *bytes; |
| 254 | }; | 254 | }; |
| 255 | 255 | ||
| 256 | #define DP_REMOTE_I2C_READ_MAX_TRANSACTIONS 4 | ||
| 256 | struct drm_dp_remote_i2c_read { | 257 | struct drm_dp_remote_i2c_read { |
| 257 | u8 num_transactions; | 258 | u8 num_transactions; |
| 258 | u8 port_number; | 259 | u8 port_number; |
| @@ -262,7 +263,7 @@ struct drm_dp_remote_i2c_read { | |||
| 262 | u8 *bytes; | 263 | u8 *bytes; |
| 263 | u8 no_stop_bit; | 264 | u8 no_stop_bit; |
| 264 | u8 i2c_transaction_delay; | 265 | u8 i2c_transaction_delay; |
| 265 | } transactions[4]; | 266 | } transactions[DP_REMOTE_I2C_READ_MAX_TRANSACTIONS]; |
| 266 | u8 read_i2c_device_id; | 267 | u8 read_i2c_device_id; |
| 267 | u8 num_bytes_read; | 268 | u8 num_bytes_read; |
| 268 | }; | 269 | }; |
diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h index a23209b43842..1b4d69f68c33 100644 --- a/include/linux/backing-dev-defs.h +++ b/include/linux/backing-dev-defs.h | |||
| @@ -116,6 +116,8 @@ struct bdi_writeback { | |||
| 116 | struct list_head work_list; | 116 | struct list_head work_list; |
| 117 | struct delayed_work dwork; /* work item used for writeback */ | 117 | struct delayed_work dwork; /* work item used for writeback */ |
| 118 | 118 | ||
| 119 | struct list_head bdi_node; /* anchored at bdi->wb_list */ | ||
| 120 | |||
| 119 | #ifdef CONFIG_CGROUP_WRITEBACK | 121 | #ifdef CONFIG_CGROUP_WRITEBACK |
| 120 | struct percpu_ref refcnt; /* used only for !root wb's */ | 122 | struct percpu_ref refcnt; /* used only for !root wb's */ |
| 121 | struct fprop_local_percpu memcg_completions; | 123 | struct fprop_local_percpu memcg_completions; |
| @@ -150,6 +152,7 @@ struct backing_dev_info { | |||
| 150 | atomic_long_t tot_write_bandwidth; | 152 | atomic_long_t tot_write_bandwidth; |
| 151 | 153 | ||
| 152 | struct bdi_writeback wb; /* the root writeback info for this bdi */ | 154 | struct bdi_writeback wb; /* the root writeback info for this bdi */ |
| 155 | struct list_head wb_list; /* list of all wbs */ | ||
| 153 | #ifdef CONFIG_CGROUP_WRITEBACK | 156 | #ifdef CONFIG_CGROUP_WRITEBACK |
| 154 | struct radix_tree_root cgwb_tree; /* radix tree of active cgroup wbs */ | 157 | struct radix_tree_root cgwb_tree; /* radix tree of active cgroup wbs */ |
| 155 | struct rb_root cgwb_congested_tree; /* their congested states */ | 158 | struct rb_root cgwb_congested_tree; /* their congested states */ |
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index d5eb4ad1c534..c85f74946a8b 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
| @@ -19,13 +19,17 @@ | |||
| 19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
| 20 | 20 | ||
| 21 | int __must_check bdi_init(struct backing_dev_info *bdi); | 21 | int __must_check bdi_init(struct backing_dev_info *bdi); |
| 22 | void bdi_destroy(struct backing_dev_info *bdi); | 22 | void bdi_exit(struct backing_dev_info *bdi); |
| 23 | 23 | ||
| 24 | __printf(3, 4) | 24 | __printf(3, 4) |
| 25 | int bdi_register(struct backing_dev_info *bdi, struct device *parent, | 25 | int bdi_register(struct backing_dev_info *bdi, struct device *parent, |
| 26 | const char *fmt, ...); | 26 | const char *fmt, ...); |
| 27 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); | 27 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); |
| 28 | void bdi_unregister(struct backing_dev_info *bdi); | ||
| 29 | |||
| 28 | int __must_check bdi_setup_and_register(struct backing_dev_info *, char *); | 30 | int __must_check bdi_setup_and_register(struct backing_dev_info *, char *); |
| 31 | void bdi_destroy(struct backing_dev_info *bdi); | ||
| 32 | |||
| 29 | void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, | 33 | void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, |
| 30 | bool range_cyclic, enum wb_reason reason); | 34 | bool range_cyclic, enum wb_reason reason); |
| 31 | void wb_start_background_writeback(struct bdi_writeback *wb); | 35 | void wb_start_background_writeback(struct bdi_writeback *wb); |
| @@ -408,61 +412,6 @@ static inline void unlocked_inode_to_wb_end(struct inode *inode, bool locked) | |||
| 408 | rcu_read_unlock(); | 412 | rcu_read_unlock(); |
| 409 | } | 413 | } |
| 410 | 414 | ||
| 411 | struct wb_iter { | ||
| 412 | int start_memcg_id; | ||
| 413 | struct radix_tree_iter tree_iter; | ||
| 414 | void **slot; | ||
| 415 | }; | ||
| 416 | |||
| 417 | static inline struct bdi_writeback *__wb_iter_next(struct wb_iter *iter, | ||
| 418 | struct backing_dev_info *bdi) | ||
| 419 | { | ||
| 420 | struct radix_tree_iter *titer = &iter->tree_iter; | ||
| 421 | |||
| 422 | WARN_ON_ONCE(!rcu_read_lock_held()); | ||
| 423 | |||
| 424 | if (iter->start_memcg_id >= 0) { | ||
| 425 | iter->slot = radix_tree_iter_init(titer, iter->start_memcg_id); | ||
| 426 | iter->start_memcg_id = -1; | ||
| 427 | } else { | ||
| 428 | iter->slot = radix_tree_next_slot(iter->slot, titer, 0); | ||
| 429 | } | ||
| 430 | |||
| 431 | if (!iter->slot) | ||
| 432 | iter->slot = radix_tree_next_chunk(&bdi->cgwb_tree, titer, 0); | ||
| 433 | if (iter->slot) | ||
| 434 | return *iter->slot; | ||
| 435 | return NULL; | ||
| 436 | } | ||
| 437 | |||
| 438 | static inline struct bdi_writeback *__wb_iter_init(struct wb_iter *iter, | ||
| 439 | struct backing_dev_info *bdi, | ||
| 440 | int start_memcg_id) | ||
| 441 | { | ||
| 442 | iter->start_memcg_id = start_memcg_id; | ||
| 443 | |||
| 444 | if (start_memcg_id) | ||
| 445 | return __wb_iter_next(iter, bdi); | ||
| 446 | else | ||
| 447 | return &bdi->wb; | ||
| 448 | } | ||
| 449 | |||
| 450 | /** | ||
| 451 | * bdi_for_each_wb - walk all wb's of a bdi in ascending memcg ID order | ||
| 452 | * @wb_cur: cursor struct bdi_writeback pointer | ||
| 453 | * @bdi: bdi to walk wb's of | ||
| 454 | * @iter: pointer to struct wb_iter to be used as iteration buffer | ||
| 455 | * @start_memcg_id: memcg ID to start iteration from | ||
| 456 | * | ||
| 457 | * Iterate @wb_cur through the wb's (bdi_writeback's) of @bdi in ascending | ||
| 458 | * memcg ID order starting from @start_memcg_id. @iter is struct wb_iter | ||
| 459 | * to be used as temp storage during iteration. rcu_read_lock() must be | ||
| 460 | * held throughout iteration. | ||
| 461 | */ | ||
| 462 | #define bdi_for_each_wb(wb_cur, bdi, iter, start_memcg_id) \ | ||
| 463 | for ((wb_cur) = __wb_iter_init(iter, bdi, start_memcg_id); \ | ||
| 464 | (wb_cur); (wb_cur) = __wb_iter_next(iter, bdi)) | ||
| 465 | |||
| 466 | #else /* CONFIG_CGROUP_WRITEBACK */ | 415 | #else /* CONFIG_CGROUP_WRITEBACK */ |
| 467 | 416 | ||
| 468 | static inline bool inode_cgwb_enabled(struct inode *inode) | 417 | static inline bool inode_cgwb_enabled(struct inode *inode) |
| @@ -522,14 +471,6 @@ static inline void wb_blkcg_offline(struct blkcg *blkcg) | |||
| 522 | { | 471 | { |
| 523 | } | 472 | } |
| 524 | 473 | ||
| 525 | struct wb_iter { | ||
| 526 | int next_id; | ||
| 527 | }; | ||
| 528 | |||
| 529 | #define bdi_for_each_wb(wb_cur, bdi, iter, start_blkcg_id) \ | ||
| 530 | for ((iter)->next_id = (start_blkcg_id); \ | ||
| 531 | ({ (wb_cur) = !(iter)->next_id++ ? &(bdi)->wb : NULL; }); ) | ||
| 532 | |||
| 533 | static inline int inode_congested(struct inode *inode, int cong_bits) | 474 | static inline int inode_congested(struct inode *inode, int cong_bits) |
| 534 | { | 475 | { |
| 535 | return wb_congested(&inode_to_bdi(inode)->wb, cong_bits); | 476 | return wb_congested(&inode_to_bdi(inode)->wb, cong_bits); |
diff --git a/include/linux/cma.h b/include/linux/cma.h index f7ef093ec49a..29f9e774ab76 100644 --- a/include/linux/cma.h +++ b/include/linux/cma.h | |||
| @@ -26,6 +26,6 @@ extern int __init cma_declare_contiguous(phys_addr_t base, | |||
| 26 | extern int cma_init_reserved_mem(phys_addr_t base, phys_addr_t size, | 26 | extern int cma_init_reserved_mem(phys_addr_t base, phys_addr_t size, |
| 27 | unsigned int order_per_bit, | 27 | unsigned int order_per_bit, |
| 28 | struct cma **res_cma); | 28 | struct cma **res_cma); |
| 29 | extern struct page *cma_alloc(struct cma *cma, unsigned int count, unsigned int align); | 29 | extern struct page *cma_alloc(struct cma *cma, size_t count, unsigned int align); |
| 30 | extern bool cma_release(struct cma *cma, const struct page *pages, unsigned int count); | 30 | extern bool cma_release(struct cma *cma, const struct page *pages, unsigned int count); |
| 31 | #endif | 31 | #endif |
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index dfaa7b3e9ae9..8efb40e61d6e 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h | |||
| @@ -237,12 +237,25 @@ | |||
| 237 | #define KASAN_ABI_VERSION 3 | 237 | #define KASAN_ABI_VERSION 3 |
| 238 | #endif | 238 | #endif |
| 239 | 239 | ||
| 240 | #if GCC_VERSION >= 40902 | ||
| 241 | /* | ||
| 242 | * Tell the compiler that address safety instrumentation (KASAN) | ||
| 243 | * should not be applied to that function. | ||
| 244 | * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 | ||
| 245 | */ | ||
| 246 | #define __no_sanitize_address __attribute__((no_sanitize_address)) | ||
| 247 | #endif | ||
| 248 | |||
| 240 | #endif /* gcc version >= 40000 specific checks */ | 249 | #endif /* gcc version >= 40000 specific checks */ |
| 241 | 250 | ||
| 242 | #if !defined(__noclone) | 251 | #if !defined(__noclone) |
| 243 | #define __noclone /* not needed */ | 252 | #define __noclone /* not needed */ |
| 244 | #endif | 253 | #endif |
| 245 | 254 | ||
| 255 | #if !defined(__no_sanitize_address) | ||
| 256 | #define __no_sanitize_address | ||
| 257 | #endif | ||
| 258 | |||
| 246 | /* | 259 | /* |
| 247 | * A trick to suppress uninitialized variable warning without generating any | 260 | * A trick to suppress uninitialized variable warning without generating any |
| 248 | * code | 261 | * code |
diff --git a/include/linux/compiler.h b/include/linux/compiler.h index c836eb2dc44d..3d7810341b57 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h | |||
| @@ -198,19 +198,45 @@ void ftrace_likely_update(struct ftrace_branch_data *f, int val, int expect); | |||
| 198 | 198 | ||
| 199 | #include <uapi/linux/types.h> | 199 | #include <uapi/linux/types.h> |
| 200 | 200 | ||
| 201 | static __always_inline void __read_once_size(const volatile void *p, void *res, int size) | 201 | #define __READ_ONCE_SIZE \ |
| 202 | ({ \ | ||
| 203 | switch (size) { \ | ||
| 204 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; \ | ||
| 205 | case 2: *(__u16 *)res = *(volatile __u16 *)p; break; \ | ||
| 206 | case 4: *(__u32 *)res = *(volatile __u32 *)p; break; \ | ||
| 207 | case 8: *(__u64 *)res = *(volatile __u64 *)p; break; \ | ||
| 208 | default: \ | ||
| 209 | barrier(); \ | ||
| 210 | __builtin_memcpy((void *)res, (const void *)p, size); \ | ||
| 211 | barrier(); \ | ||
| 212 | } \ | ||
| 213 | }) | ||
| 214 | |||
| 215 | static __always_inline | ||
| 216 | void __read_once_size(const volatile void *p, void *res, int size) | ||
| 202 | { | 217 | { |
| 203 | switch (size) { | 218 | __READ_ONCE_SIZE; |
| 204 | case 1: *(__u8 *)res = *(volatile __u8 *)p; break; | 219 | } |
| 205 | case 2: *(__u16 *)res = *(volatile __u16 *)p; break; | 220 | |
| 206 | case 4: *(__u32 *)res = *(volatile __u32 *)p; break; | 221 | #ifdef CONFIG_KASAN |
| 207 | case 8: *(__u64 *)res = *(volatile __u64 *)p; break; | 222 | /* |
| 208 | default: | 223 | * This function is not 'inline' because __no_sanitize_address confilcts |
| 209 | barrier(); | 224 | * with inlining. Attempt to inline it may cause a build failure. |
| 210 | __builtin_memcpy((void *)res, (const void *)p, size); | 225 | * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368 |
| 211 | barrier(); | 226 | * '__maybe_unused' allows us to avoid defined-but-not-used warnings. |
| 212 | } | 227 | */ |
| 228 | static __no_sanitize_address __maybe_unused | ||
| 229 | void __read_once_size_nocheck(const volatile void *p, void *res, int size) | ||
| 230 | { | ||
| 231 | __READ_ONCE_SIZE; | ||
| 232 | } | ||
| 233 | #else | ||
| 234 | static __always_inline | ||
| 235 | void __read_once_size_nocheck(const volatile void *p, void *res, int size) | ||
| 236 | { | ||
| 237 | __READ_ONCE_SIZE; | ||
| 213 | } | 238 | } |
| 239 | #endif | ||
| 214 | 240 | ||
| 215 | static __always_inline void __write_once_size(volatile void *p, void *res, int size) | 241 | static __always_inline void __write_once_size(volatile void *p, void *res, int size) |
| 216 | { | 242 | { |
| @@ -248,8 +274,22 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s | |||
| 248 | * required ordering. | 274 | * required ordering. |
| 249 | */ | 275 | */ |
| 250 | 276 | ||
| 251 | #define READ_ONCE(x) \ | 277 | #define __READ_ONCE(x, check) \ |
| 252 | ({ union { typeof(x) __val; char __c[1]; } __u; __read_once_size(&(x), __u.__c, sizeof(x)); __u.__val; }) | 278 | ({ \ |
| 279 | union { typeof(x) __val; char __c[1]; } __u; \ | ||
| 280 | if (check) \ | ||
| 281 | __read_once_size(&(x), __u.__c, sizeof(x)); \ | ||
| 282 | else \ | ||
| 283 | __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \ | ||
| 284 | __u.__val; \ | ||
| 285 | }) | ||
| 286 | #define READ_ONCE(x) __READ_ONCE(x, 1) | ||
| 287 | |||
| 288 | /* | ||
| 289 | * Use READ_ONCE_NOCHECK() instead of READ_ONCE() if you need | ||
| 290 | * to hide memory access from KASAN. | ||
| 291 | */ | ||
| 292 | #define READ_ONCE_NOCHECK(x) __READ_ONCE(x, 0) | ||
| 253 | 293 | ||
| 254 | #define WRITE_ONCE(x, val) \ | 294 | #define WRITE_ONCE(x, val) \ |
| 255 | ({ \ | 295 | ({ \ |
diff --git a/include/linux/dma-contiguous.h b/include/linux/dma-contiguous.h index 569bbd039896..fec734df1524 100644 --- a/include/linux/dma-contiguous.h +++ b/include/linux/dma-contiguous.h | |||
| @@ -111,7 +111,7 @@ static inline int dma_declare_contiguous(struct device *dev, phys_addr_t size, | |||
| 111 | return ret; | 111 | return ret; |
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | struct page *dma_alloc_from_contiguous(struct device *dev, int count, | 114 | struct page *dma_alloc_from_contiguous(struct device *dev, size_t count, |
| 115 | unsigned int order); | 115 | unsigned int order); |
| 116 | bool dma_release_from_contiguous(struct device *dev, struct page *pages, | 116 | bool dma_release_from_contiguous(struct device *dev, struct page *pages, |
| 117 | int count); | 117 | int count); |
| @@ -144,7 +144,7 @@ int dma_declare_contiguous(struct device *dev, phys_addr_t size, | |||
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | static inline | 146 | static inline |
| 147 | struct page *dma_alloc_from_contiguous(struct device *dev, int count, | 147 | struct page *dma_alloc_from_contiguous(struct device *dev, size_t count, |
| 148 | unsigned int order) | 148 | unsigned int order) |
| 149 | { | 149 | { |
| 150 | return NULL; | 150 | return NULL; |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 6452ff4c463f..3e3318ddfc0e 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -676,8 +676,9 @@ enum { | |||
| 676 | 676 | ||
| 677 | struct list_head *mem_cgroup_cgwb_list(struct mem_cgroup *memcg); | 677 | struct list_head *mem_cgroup_cgwb_list(struct mem_cgroup *memcg); |
| 678 | struct wb_domain *mem_cgroup_wb_domain(struct bdi_writeback *wb); | 678 | struct wb_domain *mem_cgroup_wb_domain(struct bdi_writeback *wb); |
| 679 | void mem_cgroup_wb_stats(struct bdi_writeback *wb, unsigned long *pavail, | 679 | void mem_cgroup_wb_stats(struct bdi_writeback *wb, unsigned long *pfilepages, |
| 680 | unsigned long *pdirty, unsigned long *pwriteback); | 680 | unsigned long *pheadroom, unsigned long *pdirty, |
| 681 | unsigned long *pwriteback); | ||
| 681 | 682 | ||
| 682 | #else /* CONFIG_CGROUP_WRITEBACK */ | 683 | #else /* CONFIG_CGROUP_WRITEBACK */ |
| 683 | 684 | ||
| @@ -687,7 +688,8 @@ static inline struct wb_domain *mem_cgroup_wb_domain(struct bdi_writeback *wb) | |||
| 687 | } | 688 | } |
| 688 | 689 | ||
| 689 | static inline void mem_cgroup_wb_stats(struct bdi_writeback *wb, | 690 | static inline void mem_cgroup_wb_stats(struct bdi_writeback *wb, |
| 690 | unsigned long *pavail, | 691 | unsigned long *pfilepages, |
| 692 | unsigned long *pheadroom, | ||
| 691 | unsigned long *pdirty, | 693 | unsigned long *pdirty, |
| 692 | unsigned long *pwriteback) | 694 | unsigned long *pwriteback) |
| 693 | { | 695 | { |
diff --git a/include/net/af_unix.h b/include/net/af_unix.h index cb1b9bbda332..b36d837c701e 100644 --- a/include/net/af_unix.h +++ b/include/net/af_unix.h | |||
| @@ -64,7 +64,7 @@ struct unix_sock { | |||
| 64 | struct socket_wq peer_wq; | 64 | struct socket_wq peer_wq; |
| 65 | }; | 65 | }; |
| 66 | 66 | ||
| 67 | static inline struct unix_sock *unix_sk(struct sock *sk) | 67 | static inline struct unix_sock *unix_sk(const struct sock *sk) |
| 68 | { | 68 | { |
| 69 | return (struct unix_sock *)sk; | 69 | return (struct unix_sock *)sk; |
| 70 | } | 70 | } |
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index 186f3a1e1b1f..fc1937698625 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h | |||
| @@ -113,12 +113,12 @@ void __inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk, | |||
| 113 | void __inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo, | 113 | void __inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo, |
| 114 | bool rearm); | 114 | bool rearm); |
| 115 | 115 | ||
| 116 | static void inline inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo) | 116 | static inline void inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo) |
| 117 | { | 117 | { |
| 118 | __inet_twsk_schedule(tw, timeo, false); | 118 | __inet_twsk_schedule(tw, timeo, false); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | static void inline inet_twsk_reschedule(struct inet_timewait_sock *tw, int timeo) | 121 | static inline void inet_twsk_reschedule(struct inet_timewait_sock *tw, int timeo) |
| 122 | { | 122 | { |
| 123 | __inet_twsk_schedule(tw, timeo, true); | 123 | __inet_twsk_schedule(tw, timeo, true); |
| 124 | } | 124 | } |
diff --git a/include/net/sock.h b/include/net/sock.h index 7aa78440559a..e23717013a4e 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -828,6 +828,14 @@ static inline __must_check int sk_add_backlog(struct sock *sk, struct sk_buff *s | |||
| 828 | if (sk_rcvqueues_full(sk, limit)) | 828 | if (sk_rcvqueues_full(sk, limit)) |
| 829 | return -ENOBUFS; | 829 | return -ENOBUFS; |
| 830 | 830 | ||
| 831 | /* | ||
| 832 | * If the skb was allocated from pfmemalloc reserves, only | ||
| 833 | * allow SOCK_MEMALLOC sockets to use it as this socket is | ||
| 834 | * helping free memory | ||
| 835 | */ | ||
| 836 | if (skb_pfmemalloc(skb) && !sock_flag(sk, SOCK_MEMALLOC)) | ||
| 837 | return -ENOMEM; | ||
| 838 | |||
| 831 | __sk_add_backlog(sk, skb); | 839 | __sk_add_backlog(sk, skb); |
| 832 | sk->sk_backlog.len += skb->truesize; | 840 | sk->sk_backlog.len += skb->truesize; |
| 833 | return 0; | 841 | return 0; |
diff --git a/include/sound/soc.h b/include/sound/soc.h index 884e728b09d9..26ede14597da 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h | |||
| @@ -86,7 +86,7 @@ | |||
| 86 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ | 86 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ |
| 87 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ | 87 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ |
| 88 | .tlv.p = (tlv_array),\ | 88 | .tlv.p = (tlv_array),\ |
| 89 | .info = snd_soc_info_volsw, \ | 89 | .info = snd_soc_info_volsw_sx, \ |
| 90 | .get = snd_soc_get_volsw_sx,\ | 90 | .get = snd_soc_get_volsw_sx,\ |
| 91 | .put = snd_soc_put_volsw_sx, \ | 91 | .put = snd_soc_put_volsw_sx, \ |
| 92 | .private_value = (unsigned long)&(struct soc_mixer_control) \ | 92 | .private_value = (unsigned long)&(struct soc_mixer_control) \ |
| @@ -156,7 +156,7 @@ | |||
| 156 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ | 156 | .access = SNDRV_CTL_ELEM_ACCESS_TLV_READ | \ |
| 157 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ | 157 | SNDRV_CTL_ELEM_ACCESS_READWRITE, \ |
| 158 | .tlv.p = (tlv_array), \ | 158 | .tlv.p = (tlv_array), \ |
| 159 | .info = snd_soc_info_volsw, \ | 159 | .info = snd_soc_info_volsw_sx, \ |
| 160 | .get = snd_soc_get_volsw_sx, \ | 160 | .get = snd_soc_get_volsw_sx, \ |
| 161 | .put = snd_soc_put_volsw_sx, \ | 161 | .put = snd_soc_put_volsw_sx, \ |
| 162 | .private_value = (unsigned long)&(struct soc_mixer_control) \ | 162 | .private_value = (unsigned long)&(struct soc_mixer_control) \ |
| @@ -574,6 +574,8 @@ int snd_soc_put_enum_double(struct snd_kcontrol *kcontrol, | |||
| 574 | struct snd_ctl_elem_value *ucontrol); | 574 | struct snd_ctl_elem_value *ucontrol); |
| 575 | int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, | 575 | int snd_soc_info_volsw(struct snd_kcontrol *kcontrol, |
| 576 | struct snd_ctl_elem_info *uinfo); | 576 | struct snd_ctl_elem_info *uinfo); |
| 577 | int snd_soc_info_volsw_sx(struct snd_kcontrol *kcontrol, | ||
| 578 | struct snd_ctl_elem_info *uinfo); | ||
| 577 | #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info | 579 | #define snd_soc_info_bool_ext snd_ctl_boolean_mono_info |
| 578 | int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, | 580 | int snd_soc_get_volsw(struct snd_kcontrol *kcontrol, |
| 579 | struct snd_ctl_elem_value *ucontrol); | 581 | struct snd_ctl_elem_value *ucontrol); |
diff --git a/include/sound/wm8904.h b/include/sound/wm8904.h index 898be3a8db9a..6d8f8fba3341 100644 --- a/include/sound/wm8904.h +++ b/include/sound/wm8904.h | |||
| @@ -119,7 +119,7 @@ | |||
| 119 | #define WM8904_MIC_REGS 2 | 119 | #define WM8904_MIC_REGS 2 |
| 120 | #define WM8904_GPIO_REGS 4 | 120 | #define WM8904_GPIO_REGS 4 |
| 121 | #define WM8904_DRC_REGS 4 | 121 | #define WM8904_DRC_REGS 4 |
| 122 | #define WM8904_EQ_REGS 25 | 122 | #define WM8904_EQ_REGS 24 |
| 123 | 123 | ||
| 124 | /** | 124 | /** |
| 125 | * DRC configurations are specified with a label and a set of register | 125 | * DRC configurations are specified with a label and a set of register |
diff --git a/include/uapi/asm-generic/signal.h b/include/uapi/asm-generic/signal.h index 9df61f1edb0f..3094618d382f 100644 --- a/include/uapi/asm-generic/signal.h +++ b/include/uapi/asm-generic/signal.h | |||
| @@ -80,8 +80,10 @@ | |||
| 80 | * SA_RESTORER 0x04000000 | 80 | * SA_RESTORER 0x04000000 |
| 81 | */ | 81 | */ |
| 82 | 82 | ||
| 83 | #if !defined MINSIGSTKSZ || !defined SIGSTKSZ | ||
| 83 | #define MINSIGSTKSZ 2048 | 84 | #define MINSIGSTKSZ 2048 |
| 84 | #define SIGSTKSZ 8192 | 85 | #define SIGSTKSZ 8192 |
| 86 | #endif | ||
| 85 | 87 | ||
| 86 | #ifndef __ASSEMBLY__ | 88 | #ifndef __ASSEMBLY__ |
| 87 | typedef struct { | 89 | typedef struct { |
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h index 32e07d8cbaf4..036f73bc54cd 100644 --- a/include/uapi/linux/openvswitch.h +++ b/include/uapi/linux/openvswitch.h | |||
| @@ -323,10 +323,10 @@ enum ovs_key_attr { | |||
| 323 | OVS_KEY_ATTR_MPLS, /* array of struct ovs_key_mpls. | 323 | OVS_KEY_ATTR_MPLS, /* array of struct ovs_key_mpls. |
| 324 | * The implementation may restrict | 324 | * The implementation may restrict |
| 325 | * the accepted length of the array. */ | 325 | * the accepted length of the array. */ |
| 326 | OVS_KEY_ATTR_CT_STATE, /* u8 bitmask of OVS_CS_F_* */ | 326 | OVS_KEY_ATTR_CT_STATE, /* u32 bitmask of OVS_CS_F_* */ |
| 327 | OVS_KEY_ATTR_CT_ZONE, /* u16 connection tracking zone. */ | 327 | OVS_KEY_ATTR_CT_ZONE, /* u16 connection tracking zone. */ |
| 328 | OVS_KEY_ATTR_CT_MARK, /* u32 connection tracking mark */ | 328 | OVS_KEY_ATTR_CT_MARK, /* u32 connection tracking mark */ |
| 329 | OVS_KEY_ATTR_CT_LABEL, /* 16-octet connection tracking label */ | 329 | OVS_KEY_ATTR_CT_LABELS, /* 16-octet connection tracking label */ |
| 330 | 330 | ||
| 331 | #ifdef __KERNEL__ | 331 | #ifdef __KERNEL__ |
| 332 | OVS_KEY_ATTR_TUNNEL_INFO, /* struct ip_tunnel_info */ | 332 | OVS_KEY_ATTR_TUNNEL_INFO, /* struct ip_tunnel_info */ |
| @@ -439,9 +439,9 @@ struct ovs_key_nd { | |||
| 439 | __u8 nd_tll[ETH_ALEN]; | 439 | __u8 nd_tll[ETH_ALEN]; |
| 440 | }; | 440 | }; |
| 441 | 441 | ||
| 442 | #define OVS_CT_LABEL_LEN 16 | 442 | #define OVS_CT_LABELS_LEN 16 |
| 443 | struct ovs_key_ct_label { | 443 | struct ovs_key_ct_labels { |
| 444 | __u8 ct_label[OVS_CT_LABEL_LEN]; | 444 | __u8 ct_labels[OVS_CT_LABELS_LEN]; |
| 445 | }; | 445 | }; |
| 446 | 446 | ||
| 447 | /* OVS_KEY_ATTR_CT_STATE flags */ | 447 | /* OVS_KEY_ATTR_CT_STATE flags */ |
| @@ -449,9 +449,9 @@ struct ovs_key_ct_label { | |||
| 449 | #define OVS_CS_F_ESTABLISHED 0x02 /* Part of an existing connection. */ | 449 | #define OVS_CS_F_ESTABLISHED 0x02 /* Part of an existing connection. */ |
| 450 | #define OVS_CS_F_RELATED 0x04 /* Related to an established | 450 | #define OVS_CS_F_RELATED 0x04 /* Related to an established |
| 451 | * connection. */ | 451 | * connection. */ |
| 452 | #define OVS_CS_F_INVALID 0x20 /* Could not track connection. */ | 452 | #define OVS_CS_F_REPLY_DIR 0x08 /* Flow is in the reply direction. */ |
| 453 | #define OVS_CS_F_REPLY_DIR 0x40 /* Flow is in the reply direction. */ | 453 | #define OVS_CS_F_INVALID 0x10 /* Could not track connection. */ |
| 454 | #define OVS_CS_F_TRACKED 0x80 /* Conntrack has occurred. */ | 454 | #define OVS_CS_F_TRACKED 0x20 /* Conntrack has occurred. */ |
| 455 | 455 | ||
| 456 | /** | 456 | /** |
| 457 | * enum ovs_flow_attr - attributes for %OVS_FLOW_* commands. | 457 | * enum ovs_flow_attr - attributes for %OVS_FLOW_* commands. |
| @@ -618,22 +618,24 @@ struct ovs_action_hash { | |||
| 618 | 618 | ||
| 619 | /** | 619 | /** |
| 620 | * enum ovs_ct_attr - Attributes for %OVS_ACTION_ATTR_CT action. | 620 | * enum ovs_ct_attr - Attributes for %OVS_ACTION_ATTR_CT action. |
| 621 | * @OVS_CT_ATTR_FLAGS: u32 connection tracking flags. | 621 | * @OVS_CT_ATTR_COMMIT: If present, commits the connection to the conntrack |
| 622 | * table. This allows future packets for the same connection to be identified | ||
| 623 | * as 'established' or 'related'. | ||
| 622 | * @OVS_CT_ATTR_ZONE: u16 connection tracking zone. | 624 | * @OVS_CT_ATTR_ZONE: u16 connection tracking zone. |
| 623 | * @OVS_CT_ATTR_MARK: u32 value followed by u32 mask. For each bit set in the | 625 | * @OVS_CT_ATTR_MARK: u32 value followed by u32 mask. For each bit set in the |
| 624 | * mask, the corresponding bit in the value is copied to the connection | 626 | * mask, the corresponding bit in the value is copied to the connection |
| 625 | * tracking mark field in the connection. | 627 | * tracking mark field in the connection. |
| 626 | * @OVS_CT_ATTR_LABEL: %OVS_CT_LABEL_LEN value followed by %OVS_CT_LABEL_LEN | 628 | * @OVS_CT_ATTR_LABEL: %OVS_CT_LABELS_LEN value followed by %OVS_CT_LABELS_LEN |
| 627 | * mask. For each bit set in the mask, the corresponding bit in the value is | 629 | * mask. For each bit set in the mask, the corresponding bit in the value is |
| 628 | * copied to the connection tracking label field in the connection. | 630 | * copied to the connection tracking label field in the connection. |
| 629 | * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG. | 631 | * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG. |
| 630 | */ | 632 | */ |
| 631 | enum ovs_ct_attr { | 633 | enum ovs_ct_attr { |
| 632 | OVS_CT_ATTR_UNSPEC, | 634 | OVS_CT_ATTR_UNSPEC, |
| 633 | OVS_CT_ATTR_FLAGS, /* u8 bitmask of OVS_CT_F_*. */ | 635 | OVS_CT_ATTR_COMMIT, /* No argument, commits connection. */ |
| 634 | OVS_CT_ATTR_ZONE, /* u16 zone id. */ | 636 | OVS_CT_ATTR_ZONE, /* u16 zone id. */ |
| 635 | OVS_CT_ATTR_MARK, /* mark to associate with this connection. */ | 637 | OVS_CT_ATTR_MARK, /* mark to associate with this connection. */ |
| 636 | OVS_CT_ATTR_LABEL, /* label to associate with this connection. */ | 638 | OVS_CT_ATTR_LABELS, /* labels to associate with this connection. */ |
| 637 | OVS_CT_ATTR_HELPER, /* netlink helper to assist detection of | 639 | OVS_CT_ATTR_HELPER, /* netlink helper to assist detection of |
| 638 | related connections. */ | 640 | related connections. */ |
| 639 | __OVS_CT_ATTR_MAX | 641 | __OVS_CT_ATTR_MAX |
| @@ -641,14 +643,6 @@ enum ovs_ct_attr { | |||
| 641 | 643 | ||
| 642 | #define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1) | 644 | #define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1) |
| 643 | 645 | ||
| 644 | /* | ||
| 645 | * OVS_CT_ATTR_FLAGS flags - bitmask of %OVS_CT_F_* | ||
| 646 | * @OVS_CT_F_COMMIT: Commits the flow to the conntrack table. This allows | ||
| 647 | * future packets for the same connection to be identified as 'established' | ||
| 648 | * or 'related'. | ||
| 649 | */ | ||
| 650 | #define OVS_CT_F_COMMIT 0x01 | ||
| 651 | |||
| 652 | /** | 646 | /** |
| 653 | * enum ovs_action_attr - Action types. | 647 | * enum ovs_action_attr - Action types. |
| 654 | * | 648 | * |
| @@ -705,7 +699,7 @@ enum ovs_action_attr { | |||
| 705 | * data immediately followed by a mask. | 699 | * data immediately followed by a mask. |
| 706 | * The data must be zero for the unmasked | 700 | * The data must be zero for the unmasked |
| 707 | * bits. */ | 701 | * bits. */ |
| 708 | OVS_ACTION_ATTR_CT, /* One nested OVS_CT_ATTR_* . */ | 702 | OVS_ACTION_ATTR_CT, /* Nested OVS_CT_ATTR_* . */ |
| 709 | 703 | ||
| 710 | __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted | 704 | __OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted |
| 711 | * from userspace. */ | 705 | * from userspace. */ |
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h index 702024769c74..9d8f5d10c1e5 100644 --- a/include/uapi/linux/rtnetlink.h +++ b/include/uapi/linux/rtnetlink.h | |||
| @@ -160,7 +160,7 @@ struct rtattr { | |||
| 160 | 160 | ||
| 161 | /* Macros to handle rtattributes */ | 161 | /* Macros to handle rtattributes */ |
| 162 | 162 | ||
| 163 | #define RTA_ALIGNTO 4 | 163 | #define RTA_ALIGNTO 4U |
| 164 | #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) | 164 | #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) ) |
| 165 | #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \ | 165 | #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) && \ |
| 166 | (rta)->rta_len >= sizeof(struct rtattr) && \ | 166 | (rta)->rta_len >= sizeof(struct rtattr) && \ |
