summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/asm-generic/vmlinux.lds.h38
-rw-r--r--include/linux/blkdev.h1
-rw-r--r--include/linux/bsg-lib.h2
-rw-r--r--include/linux/devpts_fs.h10
-rw-r--r--include/linux/fs.h4
-rw-r--r--include/linux/iio/iio.h2
-rw-r--r--include/linux/iio/trigger.h4
-rw-r--r--include/linux/iommu.h12
-rw-r--r--include/linux/memblock.h6
-rw-r--r--include/linux/memcontrol.h10
-rw-r--r--include/linux/net.h2
-rw-r--r--include/linux/nmi.h8
-rw-r--r--include/linux/oom.h22
-rw-r--r--include/linux/pci.h3
-rw-r--r--include/linux/perf_event.h4
-rw-r--r--include/linux/pid.h4
-rw-r--r--include/linux/ptr_ring.h9
-rw-r--r--include/linux/sched.h51
-rw-r--r--include/linux/skb_array.h3
-rw-r--r--include/linux/wait.h37
-rw-r--r--include/net/addrconf.h10
-rw-r--r--include/net/bonding.h5
-rw-r--r--include/net/busy_poll.h12
-rw-r--r--include/net/ip.h4
-rw-r--r--include/net/mac80211.h15
-rw-r--r--include/net/sch_generic.h5
-rw-r--r--include/net/sock.h4
-rw-r--r--include/net/udp.h7
-rw-r--r--include/rdma/ib_verbs.h1
-rw-r--r--include/scsi/scsi_cmnd.h1
-rw-r--r--include/uapi/linux/loop.h3
31 files changed, 225 insertions, 74 deletions
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index da0be9a8d1de..9623d78f8494 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -60,6 +60,22 @@
60#define ALIGN_FUNCTION() . = ALIGN(8) 60#define ALIGN_FUNCTION() . = ALIGN(8)
61 61
62/* 62/*
63 * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections, which
64 * generates .data.identifier sections, which need to be pulled in with
65 * .data. We don't want to pull in .data..other sections, which Linux
66 * has defined. Same for text and bss.
67 */
68#ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
69#define TEXT_MAIN .text .text.[0-9a-zA-Z_]*
70#define DATA_MAIN .data .data.[0-9a-zA-Z_]*
71#define BSS_MAIN .bss .bss.[0-9a-zA-Z_]*
72#else
73#define TEXT_MAIN .text
74#define DATA_MAIN .data
75#define BSS_MAIN .bss
76#endif
77
78/*
63 * Align to a 32 byte boundary equal to the 79 * Align to a 32 byte boundary equal to the
64 * alignment gcc 4.5 uses for a struct 80 * alignment gcc 4.5 uses for a struct
65 */ 81 */
@@ -198,12 +214,9 @@
198 214
199/* 215/*
200 * .data section 216 * .data section
201 * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections generates
202 * .data.identifier which needs to be pulled in with .data, but don't want to
203 * pull in .data..stuff which has its own requirements. Same for bss.
204 */ 217 */
205#define DATA_DATA \ 218#define DATA_DATA \
206 *(.data .data.[0-9a-zA-Z_]*) \ 219 *(DATA_MAIN) \
207 *(.ref.data) \ 220 *(.ref.data) \
208 *(.data..shared_aligned) /* percpu related */ \ 221 *(.data..shared_aligned) /* percpu related */ \
209 MEM_KEEP(init.data) \ 222 MEM_KEEP(init.data) \
@@ -434,16 +447,17 @@
434 VMLINUX_SYMBOL(__security_initcall_end) = .; \ 447 VMLINUX_SYMBOL(__security_initcall_end) = .; \
435 } 448 }
436 449
437/* .text section. Map to function alignment to avoid address changes 450/*
451 * .text section. Map to function alignment to avoid address changes
438 * during second ld run in second ld pass when generating System.map 452 * during second ld run in second ld pass when generating System.map
439 * LD_DEAD_CODE_DATA_ELIMINATION option enables -ffunction-sections generates 453 *
440 * .text.identifier which needs to be pulled in with .text , but some 454 * TEXT_MAIN here will match .text.fixup and .text.unlikely if dead
441 * architectures define .text.foo which is not intended to be pulled in here. 455 * code elimination is enabled, so these sections should be converted
442 * Those enabling LD_DEAD_CODE_DATA_ELIMINATION must ensure they don't have 456 * to use ".." first.
443 * conflicting section names, and must pull in .text.[0-9a-zA-Z_]* */ 457 */
444#define TEXT_TEXT \ 458#define TEXT_TEXT \
445 ALIGN_FUNCTION(); \ 459 ALIGN_FUNCTION(); \
446 *(.text.hot .text .text.fixup .text.unlikely) \ 460 *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \
447 *(.ref.text) \ 461 *(.ref.text) \
448 MEM_KEEP(init.text) \ 462 MEM_KEEP(init.text) \
449 MEM_KEEP(exit.text) \ 463 MEM_KEEP(exit.text) \
@@ -613,7 +627,7 @@
613 BSS_FIRST_SECTIONS \ 627 BSS_FIRST_SECTIONS \
614 *(.bss..page_aligned) \ 628 *(.bss..page_aligned) \
615 *(.dynbss) \ 629 *(.dynbss) \
616 *(.bss .bss.[0-9a-zA-Z_]*) \ 630 *(BSS_MAIN) \
617 *(COMMON) \ 631 *(COMMON) \
618 } 632 }
619 633
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 25f6a0cb27d3..2a5d52fa90f5 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -568,7 +568,6 @@ struct request_queue {
568 568
569#if defined(CONFIG_BLK_DEV_BSG) 569#if defined(CONFIG_BLK_DEV_BSG)
570 bsg_job_fn *bsg_job_fn; 570 bsg_job_fn *bsg_job_fn;
571 int bsg_job_size;
572 struct bsg_class_device bsg_dev; 571 struct bsg_class_device bsg_dev;
573#endif 572#endif
574 573
diff --git a/include/linux/bsg-lib.h b/include/linux/bsg-lib.h
index e34dde2da0ef..637a20cfb237 100644
--- a/include/linux/bsg-lib.h
+++ b/include/linux/bsg-lib.h
@@ -24,6 +24,7 @@
24#define _BLK_BSG_ 24#define _BLK_BSG_
25 25
26#include <linux/blkdev.h> 26#include <linux/blkdev.h>
27#include <scsi/scsi_request.h>
27 28
28struct request; 29struct request;
29struct device; 30struct device;
@@ -37,6 +38,7 @@ struct bsg_buffer {
37}; 38};
38 39
39struct bsg_job { 40struct bsg_job {
41 struct scsi_request sreq;
40 struct device *dev; 42 struct device *dev;
41 struct request *req; 43 struct request *req;
42 44
diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h
index 277ab9af9ac2..100cb4343763 100644
--- a/include/linux/devpts_fs.h
+++ b/include/linux/devpts_fs.h
@@ -19,6 +19,7 @@
19 19
20struct pts_fs_info; 20struct pts_fs_info;
21 21
22struct vfsmount *devpts_mntget(struct file *, struct pts_fs_info *);
22struct pts_fs_info *devpts_acquire(struct file *); 23struct pts_fs_info *devpts_acquire(struct file *);
23void devpts_release(struct pts_fs_info *); 24void devpts_release(struct pts_fs_info *);
24 25
@@ -32,6 +33,15 @@ void *devpts_get_priv(struct dentry *);
32/* unlink */ 33/* unlink */
33void devpts_pty_kill(struct dentry *); 34void devpts_pty_kill(struct dentry *);
34 35
36/* in pty.c */
37int ptm_open_peer(struct file *master, struct tty_struct *tty, int flags);
38
39#else
40static inline int
41ptm_open_peer(struct file *master, struct tty_struct *tty, int flags)
42{
43 return -EIO;
44}
35#endif 45#endif
36 46
37 47
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 64fa15dafbc1..cdb18f358aee 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -907,9 +907,9 @@ static inline struct file *get_file(struct file *f)
907/* Page cache limit. The filesystems should put that into their s_maxbytes 907/* Page cache limit. The filesystems should put that into their s_maxbytes
908 limits, otherwise bad things can happen in VM. */ 908 limits, otherwise bad things can happen in VM. */
909#if BITS_PER_LONG==32 909#if BITS_PER_LONG==32
910#define MAX_LFS_FILESIZE (((loff_t)PAGE_SIZE << (BITS_PER_LONG-1))-1) 910#define MAX_LFS_FILESIZE ((loff_t)ULONG_MAX << PAGE_SHIFT)
911#elif BITS_PER_LONG==64 911#elif BITS_PER_LONG==64
912#define MAX_LFS_FILESIZE ((loff_t)0x7fffffffffffffffLL) 912#define MAX_LFS_FILESIZE ((loff_t)LLONG_MAX)
913#endif 913#endif
914 914
915#define FL_POSIX 1 915#define FL_POSIX 1
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index d68bec297a45..c380daa40c0e 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -535,7 +535,7 @@ struct iio_buffer_setup_ops {
535 * @scan_timestamp: [INTERN] set if any buffers have requested timestamp 535 * @scan_timestamp: [INTERN] set if any buffers have requested timestamp
536 * @scan_index_timestamp:[INTERN] cache of the index to the timestamp 536 * @scan_index_timestamp:[INTERN] cache of the index to the timestamp
537 * @trig: [INTERN] current device trigger (buffer modes) 537 * @trig: [INTERN] current device trigger (buffer modes)
538 * @trig_readonly [INTERN] mark the current trigger immutable 538 * @trig_readonly: [INTERN] mark the current trigger immutable
539 * @pollfunc: [DRIVER] function run on trigger being received 539 * @pollfunc: [DRIVER] function run on trigger being received
540 * @pollfunc_event: [DRIVER] function run on events trigger being received 540 * @pollfunc_event: [DRIVER] function run on events trigger being received
541 * @channels: [DRIVER] channel specification structure table 541 * @channels: [DRIVER] channel specification structure table
diff --git a/include/linux/iio/trigger.h b/include/linux/iio/trigger.h
index ea08302f2d7b..7142d8d6e470 100644
--- a/include/linux/iio/trigger.h
+++ b/include/linux/iio/trigger.h
@@ -144,8 +144,8 @@ void devm_iio_trigger_unregister(struct device *dev,
144/** 144/**
145 * iio_trigger_set_immutable() - set an immutable trigger on destination 145 * iio_trigger_set_immutable() - set an immutable trigger on destination
146 * 146 *
147 * @indio_dev - IIO device structure containing the device 147 * @indio_dev: IIO device structure containing the device
148 * @trig - trigger to assign to device 148 * @trig: trigger to assign to device
149 * 149 *
150 **/ 150 **/
151int iio_trigger_set_immutable(struct iio_dev *indio_dev, struct iio_trigger *trig); 151int iio_trigger_set_immutable(struct iio_dev *indio_dev, struct iio_trigger *trig);
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 2cb54adc4a33..176f7569d874 100644
--- a/include/linux/iommu.h
+++ b/include/linux/iommu.h
@@ -240,7 +240,7 @@ struct iommu_device {
240 struct list_head list; 240 struct list_head list;
241 const struct iommu_ops *ops; 241 const struct iommu_ops *ops;
242 struct fwnode_handle *fwnode; 242 struct fwnode_handle *fwnode;
243 struct device dev; 243 struct device *dev;
244}; 244};
245 245
246int iommu_device_register(struct iommu_device *iommu); 246int iommu_device_register(struct iommu_device *iommu);
@@ -265,6 +265,11 @@ static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
265 iommu->fwnode = fwnode; 265 iommu->fwnode = fwnode;
266} 266}
267 267
268static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
269{
270 return (struct iommu_device *)dev_get_drvdata(dev);
271}
272
268#define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */ 273#define IOMMU_GROUP_NOTIFY_ADD_DEVICE 1 /* Device added */
269#define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */ 274#define IOMMU_GROUP_NOTIFY_DEL_DEVICE 2 /* Pre Device removed */
270#define IOMMU_GROUP_NOTIFY_BIND_DRIVER 3 /* Pre Driver bind */ 275#define IOMMU_GROUP_NOTIFY_BIND_DRIVER 3 /* Pre Driver bind */
@@ -589,6 +594,11 @@ static inline void iommu_device_set_fwnode(struct iommu_device *iommu,
589{ 594{
590} 595}
591 596
597static inline struct iommu_device *dev_to_iommu_device(struct device *dev)
598{
599 return NULL;
600}
601
592static inline void iommu_device_unregister(struct iommu_device *iommu) 602static inline void iommu_device_unregister(struct iommu_device *iommu)
593{ 603{
594} 604}
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 77d427974f57..bae11c7e7bf3 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -61,6 +61,7 @@ extern int memblock_debug;
61#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK 61#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
62#define __init_memblock __meminit 62#define __init_memblock __meminit
63#define __initdata_memblock __meminitdata 63#define __initdata_memblock __meminitdata
64void memblock_discard(void);
64#else 65#else
65#define __init_memblock 66#define __init_memblock
66#define __initdata_memblock 67#define __initdata_memblock
@@ -74,8 +75,6 @@ phys_addr_t memblock_find_in_range_node(phys_addr_t size, phys_addr_t align,
74 int nid, ulong flags); 75 int nid, ulong flags);
75phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end, 76phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
76 phys_addr_t size, phys_addr_t align); 77 phys_addr_t size, phys_addr_t align);
77phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
78phys_addr_t get_allocated_memblock_memory_regions_info(phys_addr_t *addr);
79void memblock_allow_resize(void); 78void memblock_allow_resize(void);
80int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid); 79int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
81int memblock_add(phys_addr_t base, phys_addr_t size); 80int memblock_add(phys_addr_t base, phys_addr_t size);
@@ -110,6 +109,9 @@ void __next_mem_range_rev(u64 *idx, int nid, ulong flags,
110void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start, 109void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start,
111 phys_addr_t *out_end); 110 phys_addr_t *out_end);
112 111
112void __memblock_free_early(phys_addr_t base, phys_addr_t size);
113void __memblock_free_late(phys_addr_t base, phys_addr_t size);
114
113/** 115/**
114 * for_each_mem_range - iterate through memblock areas from type_a and not 116 * for_each_mem_range - iterate through memblock areas from type_a and not
115 * included in type_b. Or just type_a if type_b is NULL. 117 * included in type_b. Or just type_a if type_b is NULL.
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 3914e3dd6168..9b15a4bcfa77 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -484,7 +484,8 @@ bool mem_cgroup_oom_synchronize(bool wait);
484extern int do_swap_account; 484extern int do_swap_account;
485#endif 485#endif
486 486
487void lock_page_memcg(struct page *page); 487struct mem_cgroup *lock_page_memcg(struct page *page);
488void __unlock_page_memcg(struct mem_cgroup *memcg);
488void unlock_page_memcg(struct page *page); 489void unlock_page_memcg(struct page *page);
489 490
490static inline unsigned long memcg_page_state(struct mem_cgroup *memcg, 491static inline unsigned long memcg_page_state(struct mem_cgroup *memcg,
@@ -809,7 +810,12 @@ mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
809{ 810{
810} 811}
811 812
812static inline void lock_page_memcg(struct page *page) 813static inline struct mem_cgroup *lock_page_memcg(struct page *page)
814{
815 return NULL;
816}
817
818static inline void __unlock_page_memcg(struct mem_cgroup *memcg)
813{ 819{
814} 820}
815 821
diff --git a/include/linux/net.h b/include/linux/net.h
index dda2cc939a53..ebeb48c92005 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -37,7 +37,7 @@ struct net;
37 37
38/* Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located 38/* Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located
39 * in sock->flags, but moved into sk->sk_wq->flags to be RCU protected. 39 * in sock->flags, but moved into sk->sk_wq->flags to be RCU protected.
40 * Eventually all flags will be in sk->sk_wq_flags. 40 * Eventually all flags will be in sk->sk_wq->flags.
41 */ 41 */
42#define SOCKWQ_ASYNC_NOSPACE 0 42#define SOCKWQ_ASYNC_NOSPACE 0
43#define SOCKWQ_ASYNC_WAITDATA 1 43#define SOCKWQ_ASYNC_WAITDATA 1
diff --git a/include/linux/nmi.h b/include/linux/nmi.h
index 8aa01fd859fb..a36abe2da13e 100644
--- a/include/linux/nmi.h
+++ b/include/linux/nmi.h
@@ -168,6 +168,14 @@ extern int sysctl_hardlockup_all_cpu_backtrace;
168#define sysctl_softlockup_all_cpu_backtrace 0 168#define sysctl_softlockup_all_cpu_backtrace 0
169#define sysctl_hardlockup_all_cpu_backtrace 0 169#define sysctl_hardlockup_all_cpu_backtrace 0
170#endif 170#endif
171
172#if defined(CONFIG_HARDLOCKUP_CHECK_TIMESTAMP) && \
173 defined(CONFIG_HARDLOCKUP_DETECTOR)
174void watchdog_update_hrtimer_threshold(u64 period);
175#else
176static inline void watchdog_update_hrtimer_threshold(u64 period) { }
177#endif
178
171extern bool is_hardlockup(void); 179extern bool is_hardlockup(void);
172struct ctl_table; 180struct ctl_table;
173extern int proc_watchdog(struct ctl_table *, int , 181extern int proc_watchdog(struct ctl_table *, int ,
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 8a266e2be5a6..76aac4ce39bc 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -6,6 +6,8 @@
6#include <linux/types.h> 6#include <linux/types.h>
7#include <linux/nodemask.h> 7#include <linux/nodemask.h>
8#include <uapi/linux/oom.h> 8#include <uapi/linux/oom.h>
9#include <linux/sched/coredump.h> /* MMF_* */
10#include <linux/mm.h> /* VM_FAULT* */
9 11
10struct zonelist; 12struct zonelist;
11struct notifier_block; 13struct notifier_block;
@@ -63,6 +65,26 @@ static inline bool tsk_is_oom_victim(struct task_struct * tsk)
63 return tsk->signal->oom_mm; 65 return tsk->signal->oom_mm;
64} 66}
65 67
68/*
69 * Checks whether a page fault on the given mm is still reliable.
70 * This is no longer true if the oom reaper started to reap the
71 * address space which is reflected by MMF_UNSTABLE flag set in
72 * the mm. At that moment any !shared mapping would lose the content
73 * and could cause a memory corruption (zero pages instead of the
74 * original content).
75 *
76 * User should call this before establishing a page table entry for
77 * a !shared mapping and under the proper page table lock.
78 *
79 * Return 0 when the PF is safe VM_FAULT_SIGBUS otherwise.
80 */
81static inline int check_stable_address_space(struct mm_struct *mm)
82{
83 if (unlikely(test_bit(MMF_UNSTABLE, &mm->flags)))
84 return VM_FAULT_SIGBUS;
85 return 0;
86}
87
66extern unsigned long oom_badness(struct task_struct *p, 88extern unsigned long oom_badness(struct task_struct *p,
67 struct mem_cgroup *memcg, const nodemask_t *nodemask, 89 struct mem_cgroup *memcg, const nodemask_t *nodemask,
68 unsigned long totalpages); 90 unsigned long totalpages);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index a75c13673852..f958d0732af6 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -188,6 +188,8 @@ enum pci_dev_flags {
188 * the direct_complete optimization. 188 * the direct_complete optimization.
189 */ 189 */
190 PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11), 190 PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11),
191 /* Don't use Relaxed Ordering for TLPs directed at this device */
192 PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 12),
191}; 193};
192 194
193enum pci_irq_reroute_variant { 195enum pci_irq_reroute_variant {
@@ -1126,6 +1128,7 @@ bool pci_check_pme_status(struct pci_dev *dev);
1126void pci_pme_wakeup_bus(struct pci_bus *bus); 1128void pci_pme_wakeup_bus(struct pci_bus *bus);
1127void pci_d3cold_enable(struct pci_dev *dev); 1129void pci_d3cold_enable(struct pci_dev *dev);
1128void pci_d3cold_disable(struct pci_dev *dev); 1130void pci_d3cold_disable(struct pci_dev *dev);
1131bool pcie_relaxed_ordering_enabled(struct pci_dev *dev);
1129 1132
1130/* PCI Virtual Channel */ 1133/* PCI Virtual Channel */
1131int pci_save_vc_state(struct pci_dev *dev); 1134int pci_save_vc_state(struct pci_dev *dev);
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index a3b873fc59e4..b14095bcf4bb 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -310,8 +310,8 @@ struct pmu {
310 * Notification that the event was mapped or unmapped. Called 310 * Notification that the event was mapped or unmapped. Called
311 * in the context of the mapping task. 311 * in the context of the mapping task.
312 */ 312 */
313 void (*event_mapped) (struct perf_event *event); /*optional*/ 313 void (*event_mapped) (struct perf_event *event, struct mm_struct *mm); /* optional */
314 void (*event_unmapped) (struct perf_event *event); /*optional*/ 314 void (*event_unmapped) (struct perf_event *event, struct mm_struct *mm); /* optional */
315 315
316 /* 316 /*
317 * Flags for ->add()/->del()/ ->start()/->stop(). There are 317 * Flags for ->add()/->del()/ ->start()/->stop(). There are
diff --git a/include/linux/pid.h b/include/linux/pid.h
index 4d179316e431..719582744a2e 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -8,7 +8,9 @@ enum pid_type
8 PIDTYPE_PID, 8 PIDTYPE_PID,
9 PIDTYPE_PGID, 9 PIDTYPE_PGID,
10 PIDTYPE_SID, 10 PIDTYPE_SID,
11 PIDTYPE_MAX 11 PIDTYPE_MAX,
12 /* only valid to __task_pid_nr_ns() */
13 __PIDTYPE_TGID
12}; 14};
13 15
14/* 16/*
diff --git a/include/linux/ptr_ring.h b/include/linux/ptr_ring.h
index d8c97ec8a8e6..37b4bb2545b3 100644
--- a/include/linux/ptr_ring.h
+++ b/include/linux/ptr_ring.h
@@ -436,9 +436,9 @@ static inline int ptr_ring_consume_batched_bh(struct ptr_ring *r,
436 __PTR_RING_PEEK_CALL_v; \ 436 __PTR_RING_PEEK_CALL_v; \
437}) 437})
438 438
439static inline void **__ptr_ring_init_queue_alloc(int size, gfp_t gfp) 439static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
440{ 440{
441 return kzalloc(ALIGN(size * sizeof(void *), SMP_CACHE_BYTES), gfp); 441 return kcalloc(size, sizeof(void *), gfp);
442} 442}
443 443
444static inline void __ptr_ring_set_size(struct ptr_ring *r, int size) 444static inline void __ptr_ring_set_size(struct ptr_ring *r, int size)
@@ -582,7 +582,8 @@ static inline int ptr_ring_resize(struct ptr_ring *r, int size, gfp_t gfp,
582 * In particular if you consume ring in interrupt or BH context, you must 582 * In particular if you consume ring in interrupt or BH context, you must
583 * disable interrupts/BH when doing so. 583 * disable interrupts/BH when doing so.
584 */ 584 */
585static inline int ptr_ring_resize_multiple(struct ptr_ring **rings, int nrings, 585static inline int ptr_ring_resize_multiple(struct ptr_ring **rings,
586 unsigned int nrings,
586 int size, 587 int size,
587 gfp_t gfp, void (*destroy)(void *)) 588 gfp_t gfp, void (*destroy)(void *))
588{ 589{
@@ -590,7 +591,7 @@ static inline int ptr_ring_resize_multiple(struct ptr_ring **rings, int nrings,
590 void ***queues; 591 void ***queues;
591 int i; 592 int i;
592 593
593 queues = kmalloc(nrings * sizeof *queues, gfp); 594 queues = kmalloc_array(nrings, sizeof(*queues), gfp);
594 if (!queues) 595 if (!queues)
595 goto noqueues; 596 goto noqueues;
596 597
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 8337e2db0bb2..c05ac5f5aa03 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1163,13 +1163,6 @@ static inline pid_t task_tgid_nr(struct task_struct *tsk)
1163 return tsk->tgid; 1163 return tsk->tgid;
1164} 1164}
1165 1165
1166extern pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
1167
1168static inline pid_t task_tgid_vnr(struct task_struct *tsk)
1169{
1170 return pid_vnr(task_tgid(tsk));
1171}
1172
1173/** 1166/**
1174 * pid_alive - check that a task structure is not stale 1167 * pid_alive - check that a task structure is not stale
1175 * @p: Task structure to be checked. 1168 * @p: Task structure to be checked.
@@ -1185,23 +1178,6 @@ static inline int pid_alive(const struct task_struct *p)
1185 return p->pids[PIDTYPE_PID].pid != NULL; 1178 return p->pids[PIDTYPE_PID].pid != NULL;
1186} 1179}
1187 1180
1188static inline pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns)
1189{
1190 pid_t pid = 0;
1191
1192 rcu_read_lock();
1193 if (pid_alive(tsk))
1194 pid = task_tgid_nr_ns(rcu_dereference(tsk->real_parent), ns);
1195 rcu_read_unlock();
1196
1197 return pid;
1198}
1199
1200static inline pid_t task_ppid_nr(const struct task_struct *tsk)
1201{
1202 return task_ppid_nr_ns(tsk, &init_pid_ns);
1203}
1204
1205static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) 1181static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1206{ 1182{
1207 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns); 1183 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns);
@@ -1223,6 +1199,33 @@ static inline pid_t task_session_vnr(struct task_struct *tsk)
1223 return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL); 1199 return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL);
1224} 1200}
1225 1201
1202static inline pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1203{
1204 return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, ns);
1205}
1206
1207static inline pid_t task_tgid_vnr(struct task_struct *tsk)
1208{
1209 return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, NULL);
1210}
1211
1212static inline pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns)
1213{
1214 pid_t pid = 0;
1215
1216 rcu_read_lock();
1217 if (pid_alive(tsk))
1218 pid = task_tgid_nr_ns(rcu_dereference(tsk->real_parent), ns);
1219 rcu_read_unlock();
1220
1221 return pid;
1222}
1223
1224static inline pid_t task_ppid_nr(const struct task_struct *tsk)
1225{
1226 return task_ppid_nr_ns(tsk, &init_pid_ns);
1227}
1228
1226/* Obsolete, do not use: */ 1229/* Obsolete, do not use: */
1227static inline pid_t task_pgrp_nr(struct task_struct *tsk) 1230static inline pid_t task_pgrp_nr(struct task_struct *tsk)
1228{ 1231{
diff --git a/include/linux/skb_array.h b/include/linux/skb_array.h
index 35226cd4efb0..8621ffdeecbf 100644
--- a/include/linux/skb_array.h
+++ b/include/linux/skb_array.h
@@ -193,7 +193,8 @@ static inline int skb_array_resize(struct skb_array *a, int size, gfp_t gfp)
193} 193}
194 194
195static inline int skb_array_resize_multiple(struct skb_array **rings, 195static inline int skb_array_resize_multiple(struct skb_array **rings,
196 int nrings, int size, gfp_t gfp) 196 int nrings, unsigned int size,
197 gfp_t gfp)
197{ 198{
198 BUILD_BUG_ON(offsetof(struct skb_array, ring)); 199 BUILD_BUG_ON(offsetof(struct skb_array, ring));
199 return ptr_ring_resize_multiple((struct ptr_ring **)rings, 200 return ptr_ring_resize_multiple((struct ptr_ring **)rings,
diff --git a/include/linux/wait.h b/include/linux/wait.h
index 5b74e36c0ca8..dc19880c02f5 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -757,6 +757,43 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);
757 __ret; \ 757 __ret; \
758}) 758})
759 759
760#define __wait_event_killable_timeout(wq_head, condition, timeout) \
761 ___wait_event(wq_head, ___wait_cond_timeout(condition), \
762 TASK_KILLABLE, 0, timeout, \
763 __ret = schedule_timeout(__ret))
764
765/**
766 * wait_event_killable_timeout - sleep until a condition gets true or a timeout elapses
767 * @wq_head: the waitqueue to wait on
768 * @condition: a C expression for the event to wait for
769 * @timeout: timeout, in jiffies
770 *
771 * The process is put to sleep (TASK_KILLABLE) until the
772 * @condition evaluates to true or a kill signal is received.
773 * The @condition is checked each time the waitqueue @wq_head is woken up.
774 *
775 * wake_up() has to be called after changing any variable that could
776 * change the result of the wait condition.
777 *
778 * Returns:
779 * 0 if the @condition evaluated to %false after the @timeout elapsed,
780 * 1 if the @condition evaluated to %true after the @timeout elapsed,
781 * the remaining jiffies (at least 1) if the @condition evaluated
782 * to %true before the @timeout elapsed, or -%ERESTARTSYS if it was
783 * interrupted by a kill signal.
784 *
785 * Only kill signals interrupt this process.
786 */
787#define wait_event_killable_timeout(wq_head, condition, timeout) \
788({ \
789 long __ret = timeout; \
790 might_sleep(); \
791 if (!___wait_cond_timeout(condition)) \
792 __ret = __wait_event_killable_timeout(wq_head, \
793 condition, timeout); \
794 __ret; \
795})
796
760 797
761#define __wait_event_lock_irq(wq_head, condition, lock, cmd) \ 798#define __wait_event_lock_irq(wq_head, condition, lock, cmd) \
762 (void)___wait_event(wq_head, condition, TASK_UNINTERRUPTIBLE, 0, 0, \ 799 (void)___wait_event(wq_head, condition, TASK_UNINTERRUPTIBLE, 0, 0, \
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index 6df79e96a780..f44ff2476758 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -336,6 +336,16 @@ static inline void in6_dev_put(struct inet6_dev *idev)
336 in6_dev_finish_destroy(idev); 336 in6_dev_finish_destroy(idev);
337} 337}
338 338
339static inline void in6_dev_put_clear(struct inet6_dev **pidev)
340{
341 struct inet6_dev *idev = *pidev;
342
343 if (idev) {
344 in6_dev_put(idev);
345 *pidev = NULL;
346 }
347}
348
339static inline void __in6_dev_put(struct inet6_dev *idev) 349static inline void __in6_dev_put(struct inet6_dev *idev)
340{ 350{
341 refcount_dec(&idev->refcnt); 351 refcount_dec(&idev->refcnt);
diff --git a/include/net/bonding.h b/include/net/bonding.h
index b00508d22e0a..b2e68657a216 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -277,6 +277,11 @@ static inline bool bond_is_lb(const struct bonding *bond)
277 BOND_MODE(bond) == BOND_MODE_ALB; 277 BOND_MODE(bond) == BOND_MODE_ALB;
278} 278}
279 279
280static inline bool bond_needs_speed_duplex(const struct bonding *bond)
281{
282 return BOND_MODE(bond) == BOND_MODE_8023AD || bond_is_lb(bond);
283}
284
280static inline bool bond_is_nondyn_tlb(const struct bonding *bond) 285static inline bool bond_is_nondyn_tlb(const struct bonding *bond)
281{ 286{
282 return (BOND_MODE(bond) == BOND_MODE_TLB) && 287 return (BOND_MODE(bond) == BOND_MODE_TLB) &&
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h
index 8ffd434676b7..71c72a939bf8 100644
--- a/include/net/busy_poll.h
+++ b/include/net/busy_poll.h
@@ -29,18 +29,18 @@
29#include <linux/sched/signal.h> 29#include <linux/sched/signal.h>
30#include <net/ip.h> 30#include <net/ip.h>
31 31
32#ifdef CONFIG_NET_RX_BUSY_POLL
33
34struct napi_struct;
35extern unsigned int sysctl_net_busy_read __read_mostly;
36extern unsigned int sysctl_net_busy_poll __read_mostly;
37
38/* 0 - Reserved to indicate value not set 32/* 0 - Reserved to indicate value not set
39 * 1..NR_CPUS - Reserved for sender_cpu 33 * 1..NR_CPUS - Reserved for sender_cpu
40 * NR_CPUS+1..~0 - Region available for NAPI IDs 34 * NR_CPUS+1..~0 - Region available for NAPI IDs
41 */ 35 */
42#define MIN_NAPI_ID ((unsigned int)(NR_CPUS + 1)) 36#define MIN_NAPI_ID ((unsigned int)(NR_CPUS + 1))
43 37
38#ifdef CONFIG_NET_RX_BUSY_POLL
39
40struct napi_struct;
41extern unsigned int sysctl_net_busy_read __read_mostly;
42extern unsigned int sysctl_net_busy_poll __read_mostly;
43
44static inline bool net_busy_loop_on(void) 44static inline bool net_busy_loop_on(void)
45{ 45{
46 return sysctl_net_busy_poll; 46 return sysctl_net_busy_poll;
diff --git a/include/net/ip.h b/include/net/ip.h
index 821cedcc8e73..0cf7f5a65fe6 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -352,7 +352,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,
352 !forwarding) 352 !forwarding)
353 return dst_mtu(dst); 353 return dst_mtu(dst);
354 354
355 return min(dst->dev->mtu, IP_MAX_MTU); 355 return min(READ_ONCE(dst->dev->mtu), IP_MAX_MTU);
356} 356}
357 357
358static inline unsigned int ip_skb_dst_mtu(struct sock *sk, 358static inline unsigned int ip_skb_dst_mtu(struct sock *sk,
@@ -364,7 +364,7 @@ static inline unsigned int ip_skb_dst_mtu(struct sock *sk,
364 return ip_dst_mtu_maybe_forward(skb_dst(skb), forwarding); 364 return ip_dst_mtu_maybe_forward(skb_dst(skb), forwarding);
365 } 365 }
366 366
367 return min(skb_dst(skb)->dev->mtu, IP_MAX_MTU); 367 return min(READ_ONCE(skb_dst(skb)->dev->mtu), IP_MAX_MTU);
368} 368}
369 369
370u32 ip_idents_reserve(u32 hash, int segs); 370u32 ip_idents_reserve(u32 hash, int segs);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index b2b5419467cc..f8149ca192b4 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5499,6 +5499,21 @@ static inline void ieee80211_stop_rx_ba_session_offl(struct ieee80211_vif *vif,
5499 ieee80211_manage_rx_ba_offl(vif, addr, tid + IEEE80211_NUM_TIDS); 5499 ieee80211_manage_rx_ba_offl(vif, addr, tid + IEEE80211_NUM_TIDS);
5500} 5500}
5501 5501
5502/**
5503 * ieee80211_rx_ba_timer_expired - stop a Rx BA session due to timeout
5504 *
5505 * Some device drivers do not offload AddBa/DelBa negotiation, but handle rx
5506 * buffer reording internally, and therefore also handle the session timer.
5507 *
5508 * Trigger the timeout flow, which sends a DelBa.
5509 *
5510 * @vif: &struct ieee80211_vif pointer from the add_interface callback
5511 * @addr: station mac address
5512 * @tid: the rx tid
5513 */
5514void ieee80211_rx_ba_timer_expired(struct ieee80211_vif *vif,
5515 const u8 *addr, unsigned int tid);
5516
5502/* Rate control API */ 5517/* Rate control API */
5503 5518
5504/** 5519/**
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 1c123e2b2415..67f815e5d525 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -806,8 +806,11 @@ static inline struct Qdisc *qdisc_replace(struct Qdisc *sch, struct Qdisc *new,
806 old = *pold; 806 old = *pold;
807 *pold = new; 807 *pold = new;
808 if (old != NULL) { 808 if (old != NULL) {
809 qdisc_tree_reduce_backlog(old, old->q.qlen, old->qstats.backlog); 809 unsigned int qlen = old->q.qlen;
810 unsigned int backlog = old->qstats.backlog;
811
810 qdisc_reset(old); 812 qdisc_reset(old);
813 qdisc_tree_reduce_backlog(old, qlen, backlog);
811 } 814 }
812 sch_tree_unlock(sch); 815 sch_tree_unlock(sch);
813 816
diff --git a/include/net/sock.h b/include/net/sock.h
index 7c0632c7e870..aeeec62992ca 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -507,9 +507,7 @@ int sk_set_peek_off(struct sock *sk, int val);
507static inline int sk_peek_offset(struct sock *sk, int flags) 507static inline int sk_peek_offset(struct sock *sk, int flags)
508{ 508{
509 if (unlikely(flags & MSG_PEEK)) { 509 if (unlikely(flags & MSG_PEEK)) {
510 s32 off = READ_ONCE(sk->sk_peek_off); 510 return READ_ONCE(sk->sk_peek_off);
511 if (off >= 0)
512 return off;
513 } 511 }
514 512
515 return 0; 513 return 0;
diff --git a/include/net/udp.h b/include/net/udp.h
index cc8036987dcb..586de4b811b5 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -366,12 +366,13 @@ static inline bool udp_skb_is_linear(struct sk_buff *skb)
366static inline int copy_linear_skb(struct sk_buff *skb, int len, int off, 366static inline int copy_linear_skb(struct sk_buff *skb, int len, int off,
367 struct iov_iter *to) 367 struct iov_iter *to)
368{ 368{
369 int n, copy = len - off; 369 int n;
370 370
371 n = copy_to_iter(skb->data + off, copy, to); 371 n = copy_to_iter(skb->data + off, len, to);
372 if (n == copy) 372 if (n == len)
373 return 0; 373 return 0;
374 374
375 iov_iter_revert(to, n);
375 return -EFAULT; 376 return -EFAULT;
376} 377}
377 378
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index b5732432bb29..88c32aba32f7 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1683,6 +1683,7 @@ struct ib_qp {
1683 enum ib_qp_type qp_type; 1683 enum ib_qp_type qp_type;
1684 struct ib_rwq_ind_table *rwq_ind_tbl; 1684 struct ib_rwq_ind_table *rwq_ind_tbl;
1685 struct ib_qp_security *qp_sec; 1685 struct ib_qp_security *qp_sec;
1686 u8 port;
1686}; 1687};
1687 1688
1688struct ib_mr { 1689struct ib_mr {
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index a1266d318c85..6af198d8120b 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -57,6 +57,7 @@ struct scsi_pointer {
57/* for scmd->flags */ 57/* for scmd->flags */
58#define SCMD_TAGGED (1 << 0) 58#define SCMD_TAGGED (1 << 0)
59#define SCMD_UNCHECKED_ISA_DMA (1 << 1) 59#define SCMD_UNCHECKED_ISA_DMA (1 << 1)
60#define SCMD_ZONE_WRITE_LOCK (1 << 2)
60 61
61struct scsi_cmnd { 62struct scsi_cmnd {
62 struct scsi_request req; 63 struct scsi_request req;
diff --git a/include/uapi/linux/loop.h b/include/uapi/linux/loop.h
index a3960f98679c..c8125ec1f4f2 100644
--- a/include/uapi/linux/loop.h
+++ b/include/uapi/linux/loop.h
@@ -22,7 +22,6 @@ enum {
22 LO_FLAGS_AUTOCLEAR = 4, 22 LO_FLAGS_AUTOCLEAR = 4,
23 LO_FLAGS_PARTSCAN = 8, 23 LO_FLAGS_PARTSCAN = 8,
24 LO_FLAGS_DIRECT_IO = 16, 24 LO_FLAGS_DIRECT_IO = 16,
25 LO_FLAGS_BLOCKSIZE = 32,
26}; 25};
27 26
28#include <asm/posix_types.h> /* for __kernel_old_dev_t */ 27#include <asm/posix_types.h> /* for __kernel_old_dev_t */
@@ -60,8 +59,6 @@ struct loop_info64 {
60 __u64 lo_init[2]; 59 __u64 lo_init[2];
61}; 60};
62 61
63#define LO_INFO_BLOCKSIZE(l) (l)->lo_init[0]
64
65/* 62/*
66 * Loop filter types 63 * Loop filter types
67 */ 64 */