We need the USB fixes in here as well.
Showing the changes to include/linux (7 of 291 files). Show all
Unified · Split
| @@ -328,6 +328,7 @@ struct queue_limits { · 327 unmodified lines | ||
| 328 | 328 | unsigned int max_sectors; |
| 329 | 329 | unsigned int max_segment_size; |
| 330 | 330 | unsigned int physical_block_size; |
| 331 | + unsigned int logical_block_size; | |
| 331 | 332 | unsigned int alignment_offset; |
| 332 | 333 | unsigned int io_min; |
| 333 | 334 | unsigned int io_opt; |
| @@ -338,7 +339,6 @@ struct queue_limits { · 4 unmodified lines | ||
| 338 | 339 | unsigned int discard_granularity; |
| 339 | 340 | unsigned int discard_alignment; |
| 340 | 341 | |
| 341 | − unsigned short logical_block_size; | |
| 342 | 342 | unsigned short max_segments; |
| 343 | 343 | unsigned short max_integrity_segments; |
| 344 | 344 | unsigned short max_discard_segments; |
| @@ -1077,7 +1077,7 @@ extern void blk_queue_max_write_same_sectors(struct request_queue *q, · 732 unmodified lines | ||
| 1077 | 1077 | unsigned int max_write_same_sectors); |
| 1078 | 1078 | extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, |
| 1079 | 1079 | unsigned int max_write_same_sectors); |
| 1080 | −extern void blk_queue_logical_block_size(struct request_queue *, unsigned short); | |
| 1080 | +extern void blk_queue_logical_block_size(struct request_queue *, unsigned int); | |
| 1081 | 1081 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); |
| 1082 | 1082 | extern void blk_queue_alignment_offset(struct request_queue *q, |
| 1083 | 1083 | unsigned int alignment); |
| @@ -1291,7 +1291,7 @@ static inline unsigned int queue_max_segment_size(const struct request_queue *q) · 207 unmodified lines | ||
| 1291 | 1291 | return q->limits.max_segment_size; |
| 1292 | 1292 | } |
| 1293 | 1293 | |
| 1294 | −static inline unsigned short queue_logical_block_size(const struct request_queue *q) | |
| 1294 | +static inline unsigned queue_logical_block_size(const struct request_queue *q) | |
| 1295 | 1295 | { |
| 1296 | 1296 | int retval = 512; |
| 1297 | 1297 | |
| @@ -1301,7 +1301,7 @@ static inline unsigned short queue_logical_block_size(const struct request_queue · 3 unmodified lines | ||
| 1301 | 1301 | return retval; |
| 1302 | 1302 | } |
| 1303 | 1303 | |
| 1304 | −static inline unsigned short bdev_logical_block_size(struct block_device *bdev) | |
| 1304 | +static inline unsigned int bdev_logical_block_size(struct block_device *bdev) | |
| 1305 | 1305 | { |
| 1306 | 1306 | return queue_logical_block_size(bdev_get_queue(bdev)); |
| 1307 | 1307 | } |
| @@ -2658,13 +2658,25 @@ static inline bool want_init_on_free(void) · 2657 unmodified lines | ||
| 2658 | 2658 | !page_poisoning_enabled(); |
| 2659 | 2659 | } |
| 2660 | 2660 | |
| 2661 | −#ifdef CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT | |
| 2662 | −DECLARE_STATIC_KEY_TRUE(_debug_pagealloc_enabled); | |
| 2661 | +#ifdef CONFIG_DEBUG_PAGEALLOC | |
| 2662 | +extern void init_debug_pagealloc(void); | |
| 2663 | 2663 | #else |
| 2664 | −DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | |
| 2664 | +static inline void init_debug_pagealloc(void) {} | |
| 2665 | 2665 | #endif |
| 2666 | +extern bool _debug_pagealloc_enabled_early; | |
| 2667 | +DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | |
| 2666 | 2668 | |
| 2667 | 2669 | static inline bool debug_pagealloc_enabled(void) |
| 2670 | +{ | |
| 2671 | + return IS_ENABLED(CONFIG_DEBUG_PAGEALLOC) && | |
| 2672 | + _debug_pagealloc_enabled_early; | |
| 2673 | +} | |
| 2674 | + | |
| 2675 | +/* | |
| 2676 | + * For use in fast paths after init_debug_pagealloc() has run, or when a | |
| 2677 | + * false negative result is not harmful when called too early. | |
| 2678 | + */ | |
| 2679 | +static inline bool debug_pagealloc_enabled_static(void) | |
| 2668 | 2680 | { |
| 2669 | 2681 | if (!IS_ENABLED(CONFIG_DEBUG_PAGEALLOC)) |
| 2670 | 2682 | return false; |
| @@ -215,9 +215,8 @@ enum node_stat_item { · 214 unmodified lines | ||
| 215 | 215 | NR_INACTIVE_FILE, /* " " " " " */ |
| 216 | 216 | NR_ACTIVE_FILE, /* " " " " " */ |
| 217 | 217 | NR_UNEVICTABLE, /* " " " " " */ |
| 218 | − NR_SLAB_RECLAIMABLE, /* Please do not reorder this item */ | |
| 219 | − NR_SLAB_UNRECLAIMABLE, /* and this one without looking at | |
| 220 | − * memcg_flush_percpu_vmstats() first. */ | |
| 218 | + NR_SLAB_RECLAIMABLE, | |
| 219 | + NR_SLAB_UNRECLAIMABLE, | |
| 221 | 220 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ |
| 222 | 221 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ |
| 223 | 222 | WORKINGSET_NODES, |
| @@ -34,7 +34,6 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; · 33 unmodified lines | ||
| 34 | 34 | |
| 35 | 35 | /* internal use only */ |
| 36 | 36 | #define LOOKUP_PARENT 0x0010 |
| 37 | −#define LOOKUP_NO_REVAL 0x0080 | |
| 38 | 37 | #define LOOKUP_JUMPED 0x1000 |
| 39 | 38 | #define LOOKUP_ROOT 0x2000 |
| 40 | 39 | #define LOOKUP_ROOT_GRABBED 0x0008 |
| @@ -1929,11 +1929,11 @@ static inline void rseq_migrate(struct task_struct *t) · 1928 unmodified lines | ||
| 1929 | 1929 | |
| 1930 | 1930 | /* |
| 1931 | 1931 | * If parent process has a registered restartable sequences area, the |
| 1932 | − * child inherits. Only applies when forking a process, not a thread. | |
| 1932 | + * child inherits. Unregister rseq for a clone with CLONE_VM set. | |
| 1933 | 1933 | */ |
| 1934 | 1934 | static inline void rseq_fork(struct task_struct *t, unsigned long clone_flags) |
| 1935 | 1935 | { |
| 1936 | − if (clone_flags & CLONE_THREAD) { | |
| 1936 | + if (clone_flags & CLONE_VM) { | |
| 1937 | 1937 | t->rseq = NULL; |
| 1938 | 1938 | t->rseq_sig = 0; |
| 1939 | 1939 | t->rseq_event_mask = 0; |
| @@ -358,17 +358,22 @@ static inline void sk_psock_update_proto(struct sock *sk, · 357 unmodified lines | ||
| 358 | 358 | static inline void sk_psock_restore_proto(struct sock *sk, |
| 359 | 359 | struct sk_psock *psock) |
| 360 | 360 | { |
| 361 | − sk->sk_write_space = psock->saved_write_space; | |
| 361 | + sk->sk_prot->unhash = psock->saved_unhash; | |
| 362 | 362 | |
| 363 | 363 | if (psock->sk_proto) { |
| 364 | 364 | struct inet_connection_sock *icsk = inet_csk(sk); |
| 365 | 365 | bool has_ulp = !!icsk->icsk_ulp_data; |
| 366 | 366 | |
| 367 | − if (has_ulp) | |
| 368 | − tcp_update_ulp(sk, psock->sk_proto); | |
| 369 | − else | |
| 367 | + if (has_ulp) { | |
| 368 | + tcp_update_ulp(sk, psock->sk_proto, | |
| 369 | + psock->saved_write_space); | |
| 370 | + } else { | |
| 370 | 371 | sk->sk_prot = psock->sk_proto; |
| 372 | + sk->sk_write_space = psock->saved_write_space; | |
| 373 | + } | |
| 371 | 374 | psock->sk_proto = NULL; |
| 375 | + } else { | |
| 376 | + sk->sk_write_space = psock->saved_write_space; | |
| 372 | 377 | } |
| 373 | 378 | } |
| 374 | 379 | |
| @@ -30,7 +30,7 @@ struct tnum tnum_lshift(struct tnum a, u8 shift); · 29 unmodified lines | ||
| 30 | 30 | /* Shift (rsh) a tnum right (by a fixed shift) */ |
| 31 | 31 | struct tnum tnum_rshift(struct tnum a, u8 shift); |
| 32 | 32 | /* Shift (arsh) a tnum right (by a fixed min_shift) */ |
| 33 | −struct tnum tnum_arshift(struct tnum a, u8 min_shift); | |
| 33 | +struct tnum tnum_arshift(struct tnum a, u8 min_shift, u8 insn_bitness); | |
| 34 | 34 | /* Add two tnums, return @a + @b */ |
| 35 | 35 | struct tnum tnum_add(struct tnum a, struct tnum b); |
| 36 | 36 | /* Subtract two tnums, return @a - @b */ |