diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-30 04:13:15 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-07-30 04:13:15 -0400 |
| commit | c88b94a9f43cecdeae4fa3d30cadd9a3f604372f (patch) | |
| tree | 113aea97fed1f08e0b5c9603c43fe1e147b68474 /include | |
| parent | 38c6aa2175c35358d01c29266000d26c78af9e36 (diff) | |
| parent | acb1872577b346bd15ab3a3f8dff780d6cca4b70 (diff) | |
Merge 4.18-rc7 into staging-next
We want the staging changes in here for testing and merge issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
34 files changed, 127 insertions, 52 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index e3147eb74222..ca3f2c2edd85 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h | |||
| @@ -287,6 +287,20 @@ void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues); | |||
| 287 | 287 | ||
| 288 | void blk_mq_quiesce_queue_nowait(struct request_queue *q); | 288 | void blk_mq_quiesce_queue_nowait(struct request_queue *q); |
| 289 | 289 | ||
| 290 | /** | ||
| 291 | * blk_mq_mark_complete() - Set request state to complete | ||
| 292 | * @rq: request to set to complete state | ||
| 293 | * | ||
| 294 | * Returns true if request state was successfully set to complete. If | ||
| 295 | * successful, the caller is responsibile for seeing this request is ended, as | ||
| 296 | * blk_mq_complete_request will not work again. | ||
| 297 | */ | ||
| 298 | static inline bool blk_mq_mark_complete(struct request *rq) | ||
| 299 | { | ||
| 300 | return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) == | ||
| 301 | MQ_RQ_IN_FLIGHT; | ||
| 302 | } | ||
| 303 | |||
| 290 | /* | 304 | /* |
| 291 | * Driver command data is immediately after the request. So subtract request | 305 | * Driver command data is immediately after the request. So subtract request |
| 292 | * size to get back to the original request, add request size to get the PDU. | 306 | * size to get back to the original request, add request size to get the PDU. |
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h index 79795c5fa7c3..d50c2f0a655a 100644 --- a/include/linux/bpf-cgroup.h +++ b/include/linux/bpf-cgroup.h | |||
| @@ -2,6 +2,7 @@ | |||
| 2 | #ifndef _BPF_CGROUP_H | 2 | #ifndef _BPF_CGROUP_H |
| 3 | #define _BPF_CGROUP_H | 3 | #define _BPF_CGROUP_H |
| 4 | 4 | ||
| 5 | #include <linux/errno.h> | ||
| 5 | #include <linux/jump_label.h> | 6 | #include <linux/jump_label.h> |
| 6 | #include <uapi/linux/bpf.h> | 7 | #include <uapi/linux/bpf.h> |
| 7 | 8 | ||
diff --git a/include/linux/bpfilter.h b/include/linux/bpfilter.h index 687b1760bb9f..f02cee0225d4 100644 --- a/include/linux/bpfilter.h +++ b/include/linux/bpfilter.h | |||
| @@ -5,10 +5,10 @@ | |||
| 5 | #include <uapi/linux/bpfilter.h> | 5 | #include <uapi/linux/bpfilter.h> |
| 6 | 6 | ||
| 7 | struct sock; | 7 | struct sock; |
| 8 | int bpfilter_ip_set_sockopt(struct sock *sk, int optname, char *optval, | 8 | int bpfilter_ip_set_sockopt(struct sock *sk, int optname, char __user *optval, |
| 9 | unsigned int optlen); | 9 | unsigned int optlen); |
| 10 | int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char *optval, | 10 | int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char __user *optval, |
| 11 | int *optlen); | 11 | int __user *optlen); |
| 12 | extern int (*bpfilter_process_sockopt)(struct sock *sk, int optname, | 12 | extern int (*bpfilter_process_sockopt)(struct sock *sk, int optname, |
| 13 | char __user *optval, | 13 | char __user *optval, |
| 14 | unsigned int optlen, bool is_set); | 14 | unsigned int optlen, bool is_set); |
diff --git a/include/linux/delayacct.h b/include/linux/delayacct.h index e6c0448ebcc7..31c865d1842e 100644 --- a/include/linux/delayacct.h +++ b/include/linux/delayacct.h | |||
| @@ -124,7 +124,7 @@ static inline void delayacct_blkio_start(void) | |||
| 124 | 124 | ||
| 125 | static inline void delayacct_blkio_end(struct task_struct *p) | 125 | static inline void delayacct_blkio_end(struct task_struct *p) |
| 126 | { | 126 | { |
| 127 | if (current->delays) | 127 | if (p->delays) |
| 128 | __delayacct_blkio_end(p); | 128 | __delayacct_blkio_end(p); |
| 129 | delayacct_clear_flag(DELAYACCT_PF_BLKIO); | 129 | delayacct_clear_flag(DELAYACCT_PF_BLKIO); |
| 130 | } | 130 | } |
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h index 7094718b653b..ffcc7724ca21 100644 --- a/include/linux/eventfd.h +++ b/include/linux/eventfd.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | 11 | ||
| 12 | #include <linux/fcntl.h> | 12 | #include <linux/fcntl.h> |
| 13 | #include <linux/wait.h> | 13 | #include <linux/wait.h> |
| 14 | #include <linux/err.h> | ||
| 14 | 15 | ||
| 15 | /* | 16 | /* |
| 16 | * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining | 17 | * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining |
diff --git a/include/linux/filter.h b/include/linux/filter.h index 300baad62c88..c73dd7396886 100644 --- a/include/linux/filter.h +++ b/include/linux/filter.h | |||
| @@ -765,8 +765,8 @@ static inline bool bpf_dump_raw_ok(void) | |||
| 765 | struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, | 765 | struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, |
| 766 | const struct bpf_insn *patch, u32 len); | 766 | const struct bpf_insn *patch, u32 len); |
| 767 | 767 | ||
| 768 | static inline int __xdp_generic_ok_fwd_dev(struct sk_buff *skb, | 768 | static inline int xdp_ok_fwd_dev(const struct net_device *fwd, |
| 769 | struct net_device *fwd) | 769 | unsigned int pktlen) |
| 770 | { | 770 | { |
| 771 | unsigned int len; | 771 | unsigned int len; |
| 772 | 772 | ||
| @@ -774,7 +774,7 @@ static inline int __xdp_generic_ok_fwd_dev(struct sk_buff *skb, | |||
| 774 | return -ENETDOWN; | 774 | return -ENETDOWN; |
| 775 | 775 | ||
| 776 | len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN; | 776 | len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN; |
| 777 | if (skb->len > len) | 777 | if (pktlen > len) |
| 778 | return -EMSGSIZE; | 778 | return -EMSGSIZE; |
| 779 | 779 | ||
| 780 | return 0; | 780 | return 0; |
diff --git a/include/linux/fs.h b/include/linux/fs.h index d78d146a98da..805bf22898cf 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -2420,6 +2420,7 @@ extern struct file *filp_open(const char *, int, umode_t); | |||
| 2420 | extern struct file *file_open_root(struct dentry *, struct vfsmount *, | 2420 | extern struct file *file_open_root(struct dentry *, struct vfsmount *, |
| 2421 | const char *, int, umode_t); | 2421 | const char *, int, umode_t); |
| 2422 | extern struct file * dentry_open(const struct path *, int, const struct cred *); | 2422 | extern struct file * dentry_open(const struct path *, int, const struct cred *); |
| 2423 | extern struct file *filp_clone_open(struct file *); | ||
| 2423 | extern int filp_close(struct file *, fl_owner_t id); | 2424 | extern int filp_close(struct file *, fl_owner_t id); |
| 2424 | 2425 | ||
| 2425 | extern struct filename *getname_flags(const char __user *, int, int *); | 2426 | extern struct filename *getname_flags(const char __user *, int, int *); |
diff --git a/include/linux/fsl/guts.h b/include/linux/fsl/guts.h index 3efa3b861d44..941b11811f85 100644 --- a/include/linux/fsl/guts.h +++ b/include/linux/fsl/guts.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #define __FSL_GUTS_H__ | 16 | #define __FSL_GUTS_H__ |
| 17 | 17 | ||
| 18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
| 19 | #include <linux/io.h> | ||
| 19 | 20 | ||
| 20 | /** | 21 | /** |
| 21 | * Global Utility Registers. | 22 | * Global Utility Registers. |
diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h index 7843b98e1c6e..c20c7e197d07 100644 --- a/include/linux/if_bridge.h +++ b/include/linux/if_bridge.h | |||
| @@ -105,13 +105,13 @@ static inline bool br_vlan_enabled(const struct net_device *dev) | |||
| 105 | 105 | ||
| 106 | static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid) | 106 | static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid) |
| 107 | { | 107 | { |
| 108 | return -1; | 108 | return -EINVAL; |
| 109 | } | 109 | } |
| 110 | 110 | ||
| 111 | static inline int br_vlan_get_info(const struct net_device *dev, u16 vid, | 111 | static inline int br_vlan_get_info(const struct net_device *dev, u16 vid, |
| 112 | struct bridge_vlan_info *p_vinfo) | 112 | struct bridge_vlan_info *p_vinfo) |
| 113 | { | 113 | { |
| 114 | return -1; | 114 | return -EINVAL; |
| 115 | } | 115 | } |
| 116 | #endif | 116 | #endif |
| 117 | 117 | ||
diff --git a/include/linux/igmp.h b/include/linux/igmp.h index f8231854b5d6..119f53941c12 100644 --- a/include/linux/igmp.h +++ b/include/linux/igmp.h | |||
| @@ -109,6 +109,8 @@ struct ip_mc_list { | |||
| 109 | extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u8 proto); | 109 | extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u8 proto); |
| 110 | extern int igmp_rcv(struct sk_buff *); | 110 | extern int igmp_rcv(struct sk_buff *); |
| 111 | extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr); | 111 | extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr); |
| 112 | extern int ip_mc_join_group_ssm(struct sock *sk, struct ip_mreqn *imr, | ||
| 113 | unsigned int mode); | ||
| 112 | extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr); | 114 | extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr); |
| 113 | extern void ip_mc_drop_socket(struct sock *sk); | 115 | extern void ip_mc_drop_socket(struct sock *sk); |
| 114 | extern int ip_mc_source(int add, int omode, struct sock *sk, | 116 | extern int ip_mc_source(int add, int omode, struct sock *sk, |
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h index 1df940196ab2..ef169d67df92 100644 --- a/include/linux/intel-iommu.h +++ b/include/linux/intel-iommu.h | |||
| @@ -121,6 +121,7 @@ | |||
| 121 | #define ecap_srs(e) ((e >> 31) & 0x1) | 121 | #define ecap_srs(e) ((e >> 31) & 0x1) |
| 122 | #define ecap_ers(e) ((e >> 30) & 0x1) | 122 | #define ecap_ers(e) ((e >> 30) & 0x1) |
| 123 | #define ecap_prs(e) ((e >> 29) & 0x1) | 123 | #define ecap_prs(e) ((e >> 29) & 0x1) |
| 124 | #define ecap_broken_pasid(e) ((e >> 28) & 0x1) | ||
| 124 | #define ecap_dis(e) ((e >> 27) & 0x1) | 125 | #define ecap_dis(e) ((e >> 27) & 0x1) |
| 125 | #define ecap_nest(e) ((e >> 26) & 0x1) | 126 | #define ecap_nest(e) ((e >> 26) & 0x1) |
| 126 | #define ecap_mts(e) ((e >> 25) & 0x1) | 127 | #define ecap_mts(e) ((e >> 25) & 0x1) |
diff --git a/include/linux/marvell_phy.h b/include/linux/marvell_phy.h index 4f5f8c21e283..1eb6f244588d 100644 --- a/include/linux/marvell_phy.h +++ b/include/linux/marvell_phy.h | |||
| @@ -27,6 +27,8 @@ | |||
| 27 | */ | 27 | */ |
| 28 | #define MARVELL_PHY_ID_88E6390 0x01410f90 | 28 | #define MARVELL_PHY_ID_88E6390 0x01410f90 |
| 29 | 29 | ||
| 30 | #define MARVELL_PHY_FAMILY_ID(id) ((id) >> 4) | ||
| 31 | |||
| 30 | /* struct phy_device dev_flags definitions */ | 32 | /* struct phy_device dev_flags definitions */ |
| 31 | #define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001 | 33 | #define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001 |
| 32 | #define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002 | 34 | #define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002 |
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 80cbb7fdce4a..83957920653a 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -358,6 +358,7 @@ struct mlx5_frag_buf_ctrl { | |||
| 358 | struct mlx5_frag_buf frag_buf; | 358 | struct mlx5_frag_buf frag_buf; |
| 359 | u32 sz_m1; | 359 | u32 sz_m1; |
| 360 | u32 frag_sz_m1; | 360 | u32 frag_sz_m1; |
| 361 | u32 strides_offset; | ||
| 361 | u8 log_sz; | 362 | u8 log_sz; |
| 362 | u8 log_stride; | 363 | u8 log_stride; |
| 363 | u8 log_frag_strides; | 364 | u8 log_frag_strides; |
| @@ -983,14 +984,22 @@ static inline u32 mlx5_base_mkey(const u32 key) | |||
| 983 | return key & 0xffffff00u; | 984 | return key & 0xffffff00u; |
| 984 | } | 985 | } |
| 985 | 986 | ||
| 986 | static inline void mlx5_fill_fbc(u8 log_stride, u8 log_sz, | 987 | static inline void mlx5_fill_fbc_offset(u8 log_stride, u8 log_sz, |
| 987 | struct mlx5_frag_buf_ctrl *fbc) | 988 | u32 strides_offset, |
| 989 | struct mlx5_frag_buf_ctrl *fbc) | ||
| 988 | { | 990 | { |
| 989 | fbc->log_stride = log_stride; | 991 | fbc->log_stride = log_stride; |
| 990 | fbc->log_sz = log_sz; | 992 | fbc->log_sz = log_sz; |
| 991 | fbc->sz_m1 = (1 << fbc->log_sz) - 1; | 993 | fbc->sz_m1 = (1 << fbc->log_sz) - 1; |
| 992 | fbc->log_frag_strides = PAGE_SHIFT - fbc->log_stride; | 994 | fbc->log_frag_strides = PAGE_SHIFT - fbc->log_stride; |
| 993 | fbc->frag_sz_m1 = (1 << fbc->log_frag_strides) - 1; | 995 | fbc->frag_sz_m1 = (1 << fbc->log_frag_strides) - 1; |
| 996 | fbc->strides_offset = strides_offset; | ||
| 997 | } | ||
| 998 | |||
| 999 | static inline void mlx5_fill_fbc(u8 log_stride, u8 log_sz, | ||
| 1000 | struct mlx5_frag_buf_ctrl *fbc) | ||
| 1001 | { | ||
| 1002 | mlx5_fill_fbc_offset(log_stride, log_sz, 0, fbc); | ||
| 994 | } | 1003 | } |
| 995 | 1004 | ||
| 996 | static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc, | 1005 | static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc, |
| @@ -1004,7 +1013,10 @@ static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc, | |||
| 1004 | static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc, | 1013 | static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc, |
| 1005 | u32 ix) | 1014 | u32 ix) |
| 1006 | { | 1015 | { |
| 1007 | unsigned int frag = (ix >> fbc->log_frag_strides); | 1016 | unsigned int frag; |
| 1017 | |||
| 1018 | ix += fbc->strides_offset; | ||
| 1019 | frag = ix >> fbc->log_frag_strides; | ||
| 1008 | 1020 | ||
| 1009 | return fbc->frag_buf.frags[frag].buf + | 1021 | return fbc->frag_buf.frags[frag].buf + |
| 1010 | ((fbc->frag_sz_m1 & ix) << fbc->log_stride); | 1022 | ((fbc->frag_sz_m1 & ix) << fbc->log_stride); |
diff --git a/include/linux/mm.h b/include/linux/mm.h index a0fbb9ffe380..7ba6d356d18f 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -155,7 +155,9 @@ extern int overcommit_kbytes_handler(struct ctl_table *, int, void __user *, | |||
| 155 | * mmap() functions). | 155 | * mmap() functions). |
| 156 | */ | 156 | */ |
| 157 | 157 | ||
| 158 | extern struct kmem_cache *vm_area_cachep; | 158 | struct vm_area_struct *vm_area_alloc(struct mm_struct *); |
| 159 | struct vm_area_struct *vm_area_dup(struct vm_area_struct *); | ||
| 160 | void vm_area_free(struct vm_area_struct *); | ||
| 159 | 161 | ||
| 160 | #ifndef CONFIG_MMU | 162 | #ifndef CONFIG_MMU |
| 161 | extern struct rb_root nommu_region_tree; | 163 | extern struct rb_root nommu_region_tree; |
| @@ -450,6 +452,20 @@ struct vm_operations_struct { | |||
| 450 | unsigned long addr); | 452 | unsigned long addr); |
| 451 | }; | 453 | }; |
| 452 | 454 | ||
| 455 | static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) | ||
| 456 | { | ||
| 457 | static const struct vm_operations_struct dummy_vm_ops = {}; | ||
| 458 | |||
| 459 | vma->vm_mm = mm; | ||
| 460 | vma->vm_ops = &dummy_vm_ops; | ||
| 461 | INIT_LIST_HEAD(&vma->anon_vma_chain); | ||
| 462 | } | ||
| 463 | |||
| 464 | static inline void vma_set_anonymous(struct vm_area_struct *vma) | ||
| 465 | { | ||
| 466 | vma->vm_ops = NULL; | ||
| 467 | } | ||
| 468 | |||
| 453 | struct mmu_gather; | 469 | struct mmu_gather; |
| 454 | struct inode; | 470 | struct inode; |
| 455 | 471 | ||
| @@ -2132,7 +2148,7 @@ extern int __meminit __early_pfn_to_nid(unsigned long pfn, | |||
| 2132 | struct mminit_pfnnid_cache *state); | 2148 | struct mminit_pfnnid_cache *state); |
| 2133 | #endif | 2149 | #endif |
| 2134 | 2150 | ||
| 2135 | #ifdef CONFIG_HAVE_MEMBLOCK | 2151 | #if defined(CONFIG_HAVE_MEMBLOCK) && !defined(CONFIG_FLAT_NODE_MEM_MAP) |
| 2136 | void zero_resv_unavail(void); | 2152 | void zero_resv_unavail(void); |
| 2137 | #else | 2153 | #else |
| 2138 | static inline void zero_resv_unavail(void) {} | 2154 | static inline void zero_resv_unavail(void) {} |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 340029b2fb38..abd5d5e17aee 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -1240,6 +1240,8 @@ int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr, | |||
| 1240 | unsigned long pci_address_to_pio(phys_addr_t addr); | 1240 | unsigned long pci_address_to_pio(phys_addr_t addr); |
| 1241 | phys_addr_t pci_pio_to_address(unsigned long pio); | 1241 | phys_addr_t pci_pio_to_address(unsigned long pio); |
| 1242 | int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); | 1242 | int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); |
| 1243 | int devm_pci_remap_iospace(struct device *dev, const struct resource *res, | ||
| 1244 | phys_addr_t phys_addr); | ||
| 1243 | void pci_unmap_iospace(struct resource *res); | 1245 | void pci_unmap_iospace(struct resource *res); |
| 1244 | void __iomem *devm_pci_remap_cfgspace(struct device *dev, | 1246 | void __iomem *devm_pci_remap_cfgspace(struct device *dev, |
| 1245 | resource_size_t offset, | 1247 | resource_size_t offset, |
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h index b72ebdff0b77..003d09ab308d 100644 --- a/include/linux/ring_buffer.h +++ b/include/linux/ring_buffer.h | |||
| @@ -165,6 +165,7 @@ void ring_buffer_record_enable(struct ring_buffer *buffer); | |||
| 165 | void ring_buffer_record_off(struct ring_buffer *buffer); | 165 | void ring_buffer_record_off(struct ring_buffer *buffer); |
| 166 | void ring_buffer_record_on(struct ring_buffer *buffer); | 166 | void ring_buffer_record_on(struct ring_buffer *buffer); |
| 167 | int ring_buffer_record_is_on(struct ring_buffer *buffer); | 167 | int ring_buffer_record_is_on(struct ring_buffer *buffer); |
| 168 | int ring_buffer_record_is_set_on(struct ring_buffer *buffer); | ||
| 168 | void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu); | 169 | void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu); |
| 169 | void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu); | 170 | void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu); |
| 170 | 171 | ||
diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h index 5be31eb7b266..108ede99e533 100644 --- a/include/linux/sched/task.h +++ b/include/linux/sched/task.h | |||
| @@ -75,7 +75,7 @@ extern long _do_fork(unsigned long, unsigned long, unsigned long, int __user *, | |||
| 75 | extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); | 75 | extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); |
| 76 | struct task_struct *fork_idle(int); | 76 | struct task_struct *fork_idle(int); |
| 77 | extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); | 77 | extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); |
| 78 | extern long kernel_wait4(pid_t, int *, int, struct rusage *); | 78 | extern long kernel_wait4(pid_t, int __user *, int, struct rusage *); |
| 79 | 79 | ||
| 80 | extern void free_task(struct task_struct *tsk); | 80 | extern void free_task(struct task_struct *tsk); |
| 81 | 81 | ||
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 164cdedf6012..610a201126ee 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -630,6 +630,7 @@ typedef unsigned char *sk_buff_data_t; | |||
| 630 | * @hash: the packet hash | 630 | * @hash: the packet hash |
| 631 | * @queue_mapping: Queue mapping for multiqueue devices | 631 | * @queue_mapping: Queue mapping for multiqueue devices |
| 632 | * @xmit_more: More SKBs are pending for this queue | 632 | * @xmit_more: More SKBs are pending for this queue |
| 633 | * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves | ||
| 633 | * @ndisc_nodetype: router type (from link layer) | 634 | * @ndisc_nodetype: router type (from link layer) |
| 634 | * @ooo_okay: allow the mapping of a socket to a queue to be changed | 635 | * @ooo_okay: allow the mapping of a socket to a queue to be changed |
| 635 | * @l4_hash: indicate hash is a canonical 4-tuple hash over transport | 636 | * @l4_hash: indicate hash is a canonical 4-tuple hash over transport |
| @@ -735,7 +736,7 @@ struct sk_buff { | |||
| 735 | peeked:1, | 736 | peeked:1, |
| 736 | head_frag:1, | 737 | head_frag:1, |
| 737 | xmit_more:1, | 738 | xmit_more:1, |
| 738 | __unused:1; /* one bit hole */ | 739 | pfmemalloc:1; |
| 739 | 740 | ||
| 740 | /* fields enclosed in headers_start/headers_end are copied | 741 | /* fields enclosed in headers_start/headers_end are copied |
| 741 | * using a single memcpy() in __copy_skb_header() | 742 | * using a single memcpy() in __copy_skb_header() |
| @@ -754,31 +755,30 @@ struct sk_buff { | |||
| 754 | 755 | ||
| 755 | __u8 __pkt_type_offset[0]; | 756 | __u8 __pkt_type_offset[0]; |
| 756 | __u8 pkt_type:3; | 757 | __u8 pkt_type:3; |
| 757 | __u8 pfmemalloc:1; | ||
| 758 | __u8 ignore_df:1; | 758 | __u8 ignore_df:1; |
| 759 | |||
| 760 | __u8 nf_trace:1; | 759 | __u8 nf_trace:1; |
| 761 | __u8 ip_summed:2; | 760 | __u8 ip_summed:2; |
| 762 | __u8 ooo_okay:1; | 761 | __u8 ooo_okay:1; |
| 762 | |||
| 763 | __u8 l4_hash:1; | 763 | __u8 l4_hash:1; |
| 764 | __u8 sw_hash:1; | 764 | __u8 sw_hash:1; |
| 765 | __u8 wifi_acked_valid:1; | 765 | __u8 wifi_acked_valid:1; |
| 766 | __u8 wifi_acked:1; | 766 | __u8 wifi_acked:1; |
| 767 | |||
| 768 | __u8 no_fcs:1; | 767 | __u8 no_fcs:1; |
| 769 | /* Indicates the inner headers are valid in the skbuff. */ | 768 | /* Indicates the inner headers are valid in the skbuff. */ |
| 770 | __u8 encapsulation:1; | 769 | __u8 encapsulation:1; |
| 771 | __u8 encap_hdr_csum:1; | 770 | __u8 encap_hdr_csum:1; |
| 772 | __u8 csum_valid:1; | 771 | __u8 csum_valid:1; |
| 772 | |||
| 773 | __u8 csum_complete_sw:1; | 773 | __u8 csum_complete_sw:1; |
| 774 | __u8 csum_level:2; | 774 | __u8 csum_level:2; |
| 775 | __u8 csum_not_inet:1; | 775 | __u8 csum_not_inet:1; |
| 776 | |||
| 777 | __u8 dst_pending_confirm:1; | 776 | __u8 dst_pending_confirm:1; |
| 778 | #ifdef CONFIG_IPV6_NDISC_NODETYPE | 777 | #ifdef CONFIG_IPV6_NDISC_NODETYPE |
| 779 | __u8 ndisc_nodetype:2; | 778 | __u8 ndisc_nodetype:2; |
| 780 | #endif | 779 | #endif |
| 781 | __u8 ipvs_property:1; | 780 | __u8 ipvs_property:1; |
| 781 | |||
| 782 | __u8 inner_protocol_type:1; | 782 | __u8 inner_protocol_type:1; |
| 783 | __u8 remcsum_offload:1; | 783 | __u8 remcsum_offload:1; |
| 784 | #ifdef CONFIG_NET_SWITCHDEV | 784 | #ifdef CONFIG_NET_SWITCHDEV |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index a368a68cb667..5c1a0933768e 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #ifndef _LINUX_SYSCALLS_H | 11 | #ifndef _LINUX_SYSCALLS_H |
| 12 | #define _LINUX_SYSCALLS_H | 12 | #define _LINUX_SYSCALLS_H |
| 13 | 13 | ||
| 14 | struct __aio_sigset; | ||
| 14 | struct epoll_event; | 15 | struct epoll_event; |
| 15 | struct iattr; | 16 | struct iattr; |
| 16 | struct inode; | 17 | struct inode; |
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 5fbfe61f41c6..1beb3ead0385 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
| @@ -5835,10 +5835,11 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie, | |||
| 5835 | /** | 5835 | /** |
| 5836 | * cfg80211_rx_control_port - notification about a received control port frame | 5836 | * cfg80211_rx_control_port - notification about a received control port frame |
| 5837 | * @dev: The device the frame matched to | 5837 | * @dev: The device the frame matched to |
| 5838 | * @buf: control port frame | 5838 | * @skb: The skbuf with the control port frame. It is assumed that the skbuf |
| 5839 | * @len: length of the frame data | 5839 | * is 802.3 formatted (with 802.3 header). The skb can be non-linear. |
| 5840 | * @addr: The peer from which the frame was received | 5840 | * This function does not take ownership of the skb, so the caller is |
| 5841 | * @proto: frame protocol, typically PAE or Pre-authentication | 5841 | * responsible for any cleanup. The caller must also ensure that |
| 5842 | * skb->protocol is set appropriately. | ||
| 5842 | * @unencrypted: Whether the frame was received unencrypted | 5843 | * @unencrypted: Whether the frame was received unencrypted |
| 5843 | * | 5844 | * |
| 5844 | * This function is used to inform userspace about a received control port | 5845 | * This function is used to inform userspace about a received control port |
| @@ -5851,8 +5852,7 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie, | |||
| 5851 | * Return: %true if the frame was passed to userspace | 5852 | * Return: %true if the frame was passed to userspace |
| 5852 | */ | 5853 | */ |
| 5853 | bool cfg80211_rx_control_port(struct net_device *dev, | 5854 | bool cfg80211_rx_control_port(struct net_device *dev, |
| 5854 | const u8 *buf, size_t len, | 5855 | struct sk_buff *skb, bool unencrypted); |
| 5855 | const u8 *addr, u16 proto, bool unencrypted); | ||
| 5856 | 5856 | ||
| 5857 | /** | 5857 | /** |
| 5858 | * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event | 5858 | * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index 71b9043aa0e7..3d4930528db0 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
| @@ -281,6 +281,11 @@ static inline void fib6_info_hold(struct fib6_info *f6i) | |||
| 281 | atomic_inc(&f6i->fib6_ref); | 281 | atomic_inc(&f6i->fib6_ref); |
| 282 | } | 282 | } |
| 283 | 283 | ||
| 284 | static inline bool fib6_info_hold_safe(struct fib6_info *f6i) | ||
| 285 | { | ||
| 286 | return atomic_inc_not_zero(&f6i->fib6_ref); | ||
| 287 | } | ||
| 288 | |||
| 284 | static inline void fib6_info_release(struct fib6_info *f6i) | 289 | static inline void fib6_info_release(struct fib6_info *f6i) |
| 285 | { | 290 | { |
| 286 | if (f6i && atomic_dec_and_test(&f6i->fib6_ref)) | 291 | if (f6i && atomic_dec_and_test(&f6i->fib6_ref)) |
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 59656fc580df..7b9c82de11cc 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h | |||
| @@ -66,6 +66,12 @@ static inline bool rt6_need_strict(const struct in6_addr *daddr) | |||
| 66 | (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK); | 66 | (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK); |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | static inline bool rt6_qualify_for_ecmp(const struct fib6_info *f6i) | ||
| 70 | { | ||
| 71 | return (f6i->fib6_flags & (RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC)) == | ||
| 72 | RTF_GATEWAY; | ||
| 73 | } | ||
| 74 | |||
| 69 | void ip6_route_input(struct sk_buff *skb); | 75 | void ip6_route_input(struct sk_buff *skb); |
| 70 | struct dst_entry *ip6_route_input_lookup(struct net *net, | 76 | struct dst_entry *ip6_route_input_lookup(struct net *net, |
| 71 | struct net_device *dev, | 77 | struct net_device *dev, |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 16475c269749..8f73be494503 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
| @@ -355,14 +355,7 @@ struct ipv6_txoptions *ipv6_dup_options(struct sock *sk, | |||
| 355 | struct ipv6_txoptions *ipv6_renew_options(struct sock *sk, | 355 | struct ipv6_txoptions *ipv6_renew_options(struct sock *sk, |
| 356 | struct ipv6_txoptions *opt, | 356 | struct ipv6_txoptions *opt, |
| 357 | int newtype, | 357 | int newtype, |
| 358 | struct ipv6_opt_hdr __user *newopt, | 358 | struct ipv6_opt_hdr *newopt); |
| 359 | int newoptlen); | ||
| 360 | struct ipv6_txoptions * | ||
| 361 | ipv6_renew_options_kern(struct sock *sk, | ||
| 362 | struct ipv6_txoptions *opt, | ||
| 363 | int newtype, | ||
| 364 | struct ipv6_opt_hdr *newopt, | ||
| 365 | int newoptlen); | ||
| 366 | struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space, | 359 | struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space, |
| 367 | struct ipv6_txoptions *opt); | 360 | struct ipv6_txoptions *opt); |
| 368 | 361 | ||
| @@ -830,7 +823,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, | |||
| 830 | * to minimize possbility that any useful information to an | 823 | * to minimize possbility that any useful information to an |
| 831 | * attacker is leaked. Only lower 20 bits are relevant. | 824 | * attacker is leaked. Only lower 20 bits are relevant. |
| 832 | */ | 825 | */ |
| 833 | rol32(hash, 16); | 826 | hash = rol32(hash, 16); |
| 834 | 827 | ||
| 835 | flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK; | 828 | flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK; |
| 836 | 829 | ||
| @@ -1107,6 +1100,8 @@ void ipv6_sysctl_unregister(void); | |||
| 1107 | 1100 | ||
| 1108 | int ipv6_sock_mc_join(struct sock *sk, int ifindex, | 1101 | int ipv6_sock_mc_join(struct sock *sk, int ifindex, |
| 1109 | const struct in6_addr *addr); | 1102 | const struct in6_addr *addr); |
| 1103 | int ipv6_sock_mc_join_ssm(struct sock *sk, int ifindex, | ||
| 1104 | const struct in6_addr *addr, unsigned int mode); | ||
| 1110 | int ipv6_sock_mc_drop(struct sock *sk, int ifindex, | 1105 | int ipv6_sock_mc_drop(struct sock *sk, int ifindex, |
| 1111 | const struct in6_addr *addr); | 1106 | const struct in6_addr *addr); |
| 1112 | #endif /* _NET_IPV6_H */ | 1107 | #endif /* _NET_IPV6_H */ |
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 08c005ce56e9..dc417ef0a0c5 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
| @@ -150,6 +150,7 @@ static inline void nft_data_debug(const struct nft_data *data) | |||
| 150 | * @portid: netlink portID of the original message | 150 | * @portid: netlink portID of the original message |
| 151 | * @seq: netlink sequence number | 151 | * @seq: netlink sequence number |
| 152 | * @family: protocol family | 152 | * @family: protocol family |
| 153 | * @level: depth of the chains | ||
| 153 | * @report: notify via unicast netlink message | 154 | * @report: notify via unicast netlink message |
| 154 | */ | 155 | */ |
| 155 | struct nft_ctx { | 156 | struct nft_ctx { |
| @@ -160,6 +161,7 @@ struct nft_ctx { | |||
| 160 | u32 portid; | 161 | u32 portid; |
| 161 | u32 seq; | 162 | u32 seq; |
| 162 | u8 family; | 163 | u8 family; |
| 164 | u8 level; | ||
| 163 | bool report; | 165 | bool report; |
| 164 | }; | 166 | }; |
| 165 | 167 | ||
| @@ -865,7 +867,6 @@ enum nft_chain_flags { | |||
| 865 | * @table: table that this chain belongs to | 867 | * @table: table that this chain belongs to |
| 866 | * @handle: chain handle | 868 | * @handle: chain handle |
| 867 | * @use: number of jump references to this chain | 869 | * @use: number of jump references to this chain |
| 868 | * @level: length of longest path to this chain | ||
| 869 | * @flags: bitmask of enum nft_chain_flags | 870 | * @flags: bitmask of enum nft_chain_flags |
| 870 | * @name: name of the chain | 871 | * @name: name of the chain |
| 871 | */ | 872 | */ |
| @@ -878,7 +879,6 @@ struct nft_chain { | |||
| 878 | struct nft_table *table; | 879 | struct nft_table *table; |
| 879 | u64 handle; | 880 | u64 handle; |
| 880 | u32 use; | 881 | u32 use; |
| 881 | u16 level; | ||
| 882 | u8 flags:6, | 882 | u8 flags:6, |
| 883 | genmask:2; | 883 | genmask:2; |
| 884 | char *name; | 884 | char *name; |
| @@ -1124,7 +1124,6 @@ struct nft_flowtable { | |||
| 1124 | u32 genmask:2, | 1124 | u32 genmask:2, |
| 1125 | use:30; | 1125 | use:30; |
| 1126 | u64 handle; | 1126 | u64 handle; |
| 1127 | char *dev_name[NFT_FLOWTABLE_DEVICE_MAX]; | ||
| 1128 | /* runtime data below here */ | 1127 | /* runtime data below here */ |
| 1129 | struct nf_hook_ops *ops ____cacheline_aligned; | 1128 | struct nf_hook_ops *ops ____cacheline_aligned; |
| 1130 | struct nf_flowtable data; | 1129 | struct nf_flowtable data; |
diff --git a/include/net/netfilter/nf_tables_core.h b/include/net/netfilter/nf_tables_core.h index e0c0c2558ec4..a05134507e7b 100644 --- a/include/net/netfilter/nf_tables_core.h +++ b/include/net/netfilter/nf_tables_core.h | |||
| @@ -65,4 +65,10 @@ extern const struct nft_expr_ops nft_payload_fast_ops; | |||
| 65 | extern struct static_key_false nft_counters_enabled; | 65 | extern struct static_key_false nft_counters_enabled; |
| 66 | extern struct static_key_false nft_trace_enabled; | 66 | extern struct static_key_false nft_trace_enabled; |
| 67 | 67 | ||
| 68 | extern struct nft_set_type nft_set_rhash_type; | ||
| 69 | extern struct nft_set_type nft_set_hash_type; | ||
| 70 | extern struct nft_set_type nft_set_hash_fast_type; | ||
| 71 | extern struct nft_set_type nft_set_rbtree_type; | ||
| 72 | extern struct nft_set_type nft_set_bitmap_type; | ||
| 73 | |||
| 68 | #endif /* _NET_NF_TABLES_CORE_H */ | 74 | #endif /* _NET_NF_TABLES_CORE_H */ |
diff --git a/include/net/netfilter/nf_tproxy.h b/include/net/netfilter/nf_tproxy.h index 9754a50ecde9..4cc64c8446eb 100644 --- a/include/net/netfilter/nf_tproxy.h +++ b/include/net/netfilter/nf_tproxy.h | |||
| @@ -64,7 +64,7 @@ nf_tproxy_handle_time_wait4(struct net *net, struct sk_buff *skb, | |||
| 64 | * belonging to established connections going through that one. | 64 | * belonging to established connections going through that one. |
| 65 | */ | 65 | */ |
| 66 | struct sock * | 66 | struct sock * |
| 67 | nf_tproxy_get_sock_v4(struct net *net, struct sk_buff *skb, void *hp, | 67 | nf_tproxy_get_sock_v4(struct net *net, struct sk_buff *skb, |
| 68 | const u8 protocol, | 68 | const u8 protocol, |
| 69 | const __be32 saddr, const __be32 daddr, | 69 | const __be32 saddr, const __be32 daddr, |
| 70 | const __be16 sport, const __be16 dport, | 70 | const __be16 sport, const __be16 dport, |
| @@ -103,7 +103,7 @@ nf_tproxy_handle_time_wait6(struct sk_buff *skb, int tproto, int thoff, | |||
| 103 | struct sock *sk); | 103 | struct sock *sk); |
| 104 | 104 | ||
| 105 | struct sock * | 105 | struct sock * |
| 106 | nf_tproxy_get_sock_v6(struct net *net, struct sk_buff *skb, int thoff, void *hp, | 106 | nf_tproxy_get_sock_v6(struct net *net, struct sk_buff *skb, int thoff, |
| 107 | const u8 protocol, | 107 | const u8 protocol, |
| 108 | const struct in6_addr *saddr, const struct in6_addr *daddr, | 108 | const struct in6_addr *saddr, const struct in6_addr *daddr, |
| 109 | const __be16 sport, const __be16 dport, | 109 | const __be16 sport, const __be16 dport, |
diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h index 9470fd7e4350..32d2454c0479 100644 --- a/include/net/tc_act/tc_csum.h +++ b/include/net/tc_act/tc_csum.h | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | #include <linux/tc_act/tc_csum.h> | 7 | #include <linux/tc_act/tc_csum.h> |
| 8 | 8 | ||
| 9 | struct tcf_csum_params { | 9 | struct tcf_csum_params { |
| 10 | int action; | ||
| 11 | u32 update_flags; | 10 | u32 update_flags; |
| 12 | struct rcu_head rcu; | 11 | struct rcu_head rcu; |
| 13 | }; | 12 | }; |
diff --git a/include/net/tc_act/tc_tunnel_key.h b/include/net/tc_act/tc_tunnel_key.h index efef0b4b1b2b..46b8c7f1c8d5 100644 --- a/include/net/tc_act/tc_tunnel_key.h +++ b/include/net/tc_act/tc_tunnel_key.h | |||
| @@ -18,7 +18,6 @@ | |||
| 18 | struct tcf_tunnel_key_params { | 18 | struct tcf_tunnel_key_params { |
| 19 | struct rcu_head rcu; | 19 | struct rcu_head rcu; |
| 20 | int tcft_action; | 20 | int tcft_action; |
| 21 | int action; | ||
| 22 | struct metadata_dst *tcft_enc_metadata; | 21 | struct metadata_dst *tcft_enc_metadata; |
| 23 | }; | 22 | }; |
| 24 | 23 | ||
diff --git a/include/net/tcp.h b/include/net/tcp.h index 800582b5dd54..cd3ecda9386a 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -342,6 +342,7 @@ ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos, | |||
| 342 | struct pipe_inode_info *pipe, size_t len, | 342 | struct pipe_inode_info *pipe, size_t len, |
| 343 | unsigned int flags); | 343 | unsigned int flags); |
| 344 | 344 | ||
| 345 | void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks); | ||
| 345 | static inline void tcp_dec_quickack_mode(struct sock *sk, | 346 | static inline void tcp_dec_quickack_mode(struct sock *sk, |
| 346 | const unsigned int pkts) | 347 | const unsigned int pkts) |
| 347 | { | 348 | { |
| @@ -539,6 +540,7 @@ void tcp_send_fin(struct sock *sk); | |||
| 539 | void tcp_send_active_reset(struct sock *sk, gfp_t priority); | 540 | void tcp_send_active_reset(struct sock *sk, gfp_t priority); |
| 540 | int tcp_send_synack(struct sock *); | 541 | int tcp_send_synack(struct sock *); |
| 541 | void tcp_push_one(struct sock *, unsigned int mss_now); | 542 | void tcp_push_one(struct sock *, unsigned int mss_now); |
| 543 | void __tcp_send_ack(struct sock *sk, u32 rcv_nxt); | ||
| 542 | void tcp_send_ack(struct sock *sk); | 544 | void tcp_send_ack(struct sock *sk); |
| 543 | void tcp_send_delayed_ack(struct sock *sk); | 545 | void tcp_send_delayed_ack(struct sock *sk); |
| 544 | void tcp_send_loss_probe(struct sock *sk); | 546 | void tcp_send_loss_probe(struct sock *sk); |
| @@ -828,6 +830,10 @@ struct tcp_skb_cb { | |||
| 828 | 830 | ||
| 829 | #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) | 831 | #define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) |
| 830 | 832 | ||
| 833 | static inline void bpf_compute_data_end_sk_skb(struct sk_buff *skb) | ||
| 834 | { | ||
| 835 | TCP_SKB_CB(skb)->bpf.data_end = skb->data + skb_headlen(skb); | ||
| 836 | } | ||
| 831 | 837 | ||
| 832 | #if IS_ENABLED(CONFIG_IPV6) | 838 | #if IS_ENABLED(CONFIG_IPV6) |
| 833 | /* This is the variant of inet6_iif() that must be used by TCP, | 839 | /* This is the variant of inet6_iif() that must be used by TCP, |
| @@ -835,6 +841,11 @@ struct tcp_skb_cb { | |||
| 835 | */ | 841 | */ |
| 836 | static inline int tcp_v6_iif(const struct sk_buff *skb) | 842 | static inline int tcp_v6_iif(const struct sk_buff *skb) |
| 837 | { | 843 | { |
| 844 | return TCP_SKB_CB(skb)->header.h6.iif; | ||
| 845 | } | ||
| 846 | |||
| 847 | static inline int tcp_v6_iif_l3_slave(const struct sk_buff *skb) | ||
| 848 | { | ||
| 838 | bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags); | 849 | bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags); |
| 839 | 850 | ||
| 840 | return l3_slave ? skb->skb_iif : TCP_SKB_CB(skb)->header.h6.iif; | 851 | return l3_slave ? skb->skb_iif : TCP_SKB_CB(skb)->header.h6.iif; |
| @@ -908,8 +919,6 @@ enum tcp_ca_event { | |||
| 908 | CA_EVENT_LOSS, /* loss timeout */ | 919 | CA_EVENT_LOSS, /* loss timeout */ |
| 909 | CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */ | 920 | CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */ |
| 910 | CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */ | 921 | CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */ |
| 911 | CA_EVENT_DELAYED_ACK, /* Delayed ack is sent */ | ||
| 912 | CA_EVENT_NON_DELAYED_ACK, | ||
| 913 | }; | 922 | }; |
| 914 | 923 | ||
| 915 | /* Information about inbound ACK, passed to cong_ops->in_ack_event() */ | 924 | /* Information about inbound ACK, passed to cong_ops->in_ack_event() */ |
diff --git a/include/net/xdp_sock.h b/include/net/xdp_sock.h index 9fe472f2ac95..7161856bcf9c 100644 --- a/include/net/xdp_sock.h +++ b/include/net/xdp_sock.h | |||
| @@ -60,6 +60,10 @@ struct xdp_sock { | |||
| 60 | bool zc; | 60 | bool zc; |
| 61 | /* Protects multiple processes in the control path */ | 61 | /* Protects multiple processes in the control path */ |
| 62 | struct mutex mutex; | 62 | struct mutex mutex; |
| 63 | /* Mutual exclusion of NAPI TX thread and sendmsg error paths | ||
| 64 | * in the SKB destructor callback. | ||
| 65 | */ | ||
| 66 | spinlock_t tx_completion_lock; | ||
| 63 | u64 rx_dropped; | 67 | u64 rx_dropped; |
| 64 | }; | 68 | }; |
| 65 | 69 | ||
diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h index 3c5038b587ba..d4593a6062ef 100644 --- a/include/uapi/linux/aio_abi.h +++ b/include/uapi/linux/aio_abi.h | |||
| @@ -29,7 +29,6 @@ | |||
| 29 | 29 | ||
| 30 | #include <linux/types.h> | 30 | #include <linux/types.h> |
| 31 | #include <linux/fs.h> | 31 | #include <linux/fs.h> |
| 32 | #include <linux/signal.h> | ||
| 33 | #include <asm/byteorder.h> | 32 | #include <asm/byteorder.h> |
| 34 | 33 | ||
| 35 | typedef __kernel_ulong_t aio_context_t; | 34 | typedef __kernel_ulong_t aio_context_t; |
| @@ -110,10 +109,5 @@ struct iocb { | |||
| 110 | #undef IFBIG | 109 | #undef IFBIG |
| 111 | #undef IFLITTLE | 110 | #undef IFLITTLE |
| 112 | 111 | ||
| 113 | struct __aio_sigset { | ||
| 114 | const sigset_t __user *sigmask; | ||
| 115 | size_t sigsetsize; | ||
| 116 | }; | ||
| 117 | |||
| 118 | #endif /* __LINUX__AIO_ABI_H */ | 112 | #endif /* __LINUX__AIO_ABI_H */ |
| 119 | 113 | ||
diff --git a/include/uapi/linux/btf.h b/include/uapi/linux/btf.h index 0b5ddbe135a4..972265f32871 100644 --- a/include/uapi/linux/btf.h +++ b/include/uapi/linux/btf.h | |||
| @@ -76,7 +76,7 @@ struct btf_type { | |||
| 76 | */ | 76 | */ |
| 77 | #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24) | 77 | #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24) |
| 78 | #define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16) | 78 | #define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16) |
| 79 | #define BTF_INT_BITS(VAL) ((VAL) & 0x0000ffff) | 79 | #define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff) |
| 80 | 80 | ||
| 81 | /* Attributes stored in the BTF_INT_ENCODING */ | 81 | /* Attributes stored in the BTF_INT_ENCODING */ |
| 82 | #define BTF_INT_SIGNED (1 << 0) | 82 | #define BTF_INT_SIGNED (1 << 0) |
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h index 4ca65b56084f..7363f18e65a5 100644 --- a/include/uapi/linux/ethtool.h +++ b/include/uapi/linux/ethtool.h | |||
| @@ -226,7 +226,7 @@ enum tunable_id { | |||
| 226 | ETHTOOL_TX_COPYBREAK, | 226 | ETHTOOL_TX_COPYBREAK, |
| 227 | ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */ | 227 | ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */ |
| 228 | /* | 228 | /* |
| 229 | * Add your fresh new tubale attribute above and remember to update | 229 | * Add your fresh new tunable attribute above and remember to update |
| 230 | * tunable_strings[] in net/core/ethtool.c | 230 | * tunable_strings[] in net/core/ethtool.c |
| 231 | */ | 231 | */ |
| 232 | __ETHTOOL_TUNABLE_COUNT, | 232 | __ETHTOOL_TUNABLE_COUNT, |
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h index 29eb659aa77a..e3f6ed8a7064 100644 --- a/include/uapi/linux/tcp.h +++ b/include/uapi/linux/tcp.h | |||
| @@ -127,6 +127,10 @@ enum { | |||
| 127 | 127 | ||
| 128 | #define TCP_CM_INQ TCP_INQ | 128 | #define TCP_CM_INQ TCP_INQ |
| 129 | 129 | ||
| 130 | #define TCP_REPAIR_ON 1 | ||
| 131 | #define TCP_REPAIR_OFF 0 | ||
| 132 | #define TCP_REPAIR_OFF_NO_WP -1 /* Turn off without window probes */ | ||
| 133 | |||
| 130 | struct tcp_repair_opt { | 134 | struct tcp_repair_opt { |
| 131 | __u32 opt_code; | 135 | __u32 opt_code; |
| 132 | __u32 opt_val; | 136 | __u32 opt_val; |
