Linux 5.7-rc6 Conflict in drivers/net/ethernet/mellanox/mlx5/core/steering/dr_send.c resolved by deleting dr_cq_event, matching how netdev resolved it. Required for dependencies in the following patches.
Showing the changes to include/linux (66 of 1441 files). Show all
Unified · Split
| @@ -65,6 +65,7 @@ struct amba_device { · 64 unmodified lines | |||
| 65 | struct device dev; | 65 | struct device dev; |
| 66 | struct resource res; | 66 | struct resource res; |
| 67 | struct clk *pclk; | 67 | struct clk *pclk; |
| 68 | struct device_dma_parameters dma_parms; | ||
| 68 | unsigned int periphid; | 69 | unsigned int periphid; |
| 69 | unsigned int cid; | 70 | unsigned int cid; |
| 70 | struct amba_cs_uci_id uci; | 71 | struct amba_cs_uci_id uci; |
| @@ -54,7 +54,6 @@ enum wb_reason { · 53 unmodified lines | |||
| 54 | WB_REASON_SYNC, | 54 | WB_REASON_SYNC, |
| 55 | WB_REASON_PERIODIC, | 55 | WB_REASON_PERIODIC, |
| 56 | WB_REASON_LAPTOP_TIMER, | 56 | WB_REASON_LAPTOP_TIMER, |
| 57 | WB_REASON_FREE_MORE_MEM, | ||
| 58 | WB_REASON_FS_FREE_SPACE, | 57 | WB_REASON_FS_FREE_SPACE, |
| 59 | /* | 58 | /* |
| 60 | * There is no bdi forker thread any more and works are done | 59 | * There is no bdi forker thread any more and works are done |
| @@ -220,6 +219,7 @@ struct backing_dev_info { · 159 unmodified lines | |||
| 220 | wait_queue_head_t wb_waitq; | 219 | wait_queue_head_t wb_waitq; |
| 221 | 220 | ||
| 222 | struct device *dev; | 221 | struct device *dev; |
| 222 | char dev_name[64]; | ||
| 223 | struct device *owner; | 223 | struct device *owner; |
| 224 | 224 | ||
| 225 | struct timer_list laptop_mode_wb_timer; | 225 | struct timer_list laptop_mode_wb_timer; |
| @@ -505,13 +505,6 @@ static inline int bdi_rw_congested(struct backing_dev_info *bdi) · 504 unmodified lines | |||
| 505 | (1 << WB_async_congested)); | 505 | (1 << WB_async_congested)); |
| 506 | } | 506 | } |
| 507 | 507 | ||
| 508 | extern const char *bdi_unknown_name; | 508 | const char *bdi_dev_name(struct backing_dev_info *bdi); |
| 509 | |||
| 510 | static inline const char *bdi_dev_name(struct backing_dev_info *bdi) | ||
| 511 | { | ||
| 512 | if (!bdi || !bdi->dev) | ||
| 513 | return bdi_unknown_name; | ||
| 514 | return dev_name(bdi->dev); | ||
| 515 | } | ||
| 516 | 509 | ||
| 517 | #endif /* _LINUX_BACKING_DEV_H */ | 510 | #endif /* _LINUX_BACKING_DEV_H */ |
| @@ -319,7 +319,7 @@ struct bio_integrity_payload { · 318 unmodified lines | |||
| 319 | struct work_struct bip_work; /* I/O completion */ | 319 | struct work_struct bip_work; /* I/O completion */ |
| 320 | 320 | ||
| 321 | struct bio_vec *bip_vec; | 321 | struct bio_vec *bip_vec; |
| 322 | struct bio_vec bip_inline_vecs[0];/* embedded bvec array */ | 322 | struct bio_vec bip_inline_vecs[];/* embedded bvec array */ |
| 323 | }; | 323 | }; |
| 324 | 324 | ||
| 325 | #if defined(CONFIG_BLK_DEV_INTEGRITY) | 325 | #if defined(CONFIG_BLK_DEV_INTEGRITY) |
| @@ -173,7 +173,7 @@ struct blk_mq_hw_ctx { · 172 unmodified lines | |||
| 173 | * blocking (BLK_MQ_F_BLOCKING). Must be the last member - see also | 173 | * blocking (BLK_MQ_F_BLOCKING). Must be the last member - see also |
| 174 | * blk_mq_hw_ctx_size(). | 174 | * blk_mq_hw_ctx_size(). |
| 175 | */ | 175 | */ |
| 176 | struct srcu_struct srcu[0]; | 176 | struct srcu_struct srcu[]; |
| 177 | }; | 177 | }; |
| 178 | 178 | ||
| 179 | /** | 179 | /** |
| @@ -198,7 +198,7 @@ struct bio { · 197 unmodified lines | |||
| 198 | * double allocations for a small number of bio_vecs. This member | 198 | * double allocations for a small number of bio_vecs. This member |
| 199 | * MUST obviously be kept at the very end of the bio. | 199 | * MUST obviously be kept at the very end of the bio. |
| 200 | */ | 200 | */ |
| 201 | struct bio_vec bi_inline_vecs[0]; | 201 | struct bio_vec bi_inline_vecs[]; |
| 202 | }; | 202 | }; |
| 203 | 203 | ||
| 204 | #define BIO_RESET_BYTES offsetof(struct bio, bi_max_vecs) | 204 | #define BIO_RESET_BYTES offsetof(struct bio, bi_max_vecs) |
| @@ -245,6 +245,7 @@ · 244 unmodified lines | |||
| 245 | #define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN (1 << 0) | 245 | #define BCM54810_EXP_BROADREACH_LRE_MISC_CTL_EN (1 << 0) |
| 246 | #define BCM54810_SHD_CLK_CTL 0x3 | 246 | #define BCM54810_SHD_CLK_CTL 0x3 |
| 247 | #define BCM54810_SHD_CLK_CTL_GTXCLK_EN (1 << 9) | 247 | #define BCM54810_SHD_CLK_CTL_GTXCLK_EN (1 << 9) |
| 248 | #define BCM54810_SHD_SCR3_TRDDAPD 0x0100 | ||
| 248 | 249 | ||
| 249 | /* BCM54612E Registers */ | 250 | /* BCM54612E Registers */ |
| 250 | #define BCM54612E_EXP_SPARE0 (MII_BCM54XX_EXP_SEL_ETC + 0x34) | 251 | #define BCM54612E_EXP_SPARE0 (MII_BCM54XX_EXP_SEL_ETC + 0x34) |
| @@ -189,6 +189,8 @@ struct buffer_head *__getblk_gfp(struct block_device *bdev, sector_t block, · 188 unmodified lines | |||
| 189 | void __brelse(struct buffer_head *); | 189 | void __brelse(struct buffer_head *); |
| 190 | void __bforget(struct buffer_head *); | 190 | void __bforget(struct buffer_head *); |
| 191 | void __breadahead(struct block_device *, sector_t block, unsigned int size); | 191 | void __breadahead(struct block_device *, sector_t block, unsigned int size); |
| 192 | void __breadahead_gfp(struct block_device *, sector_t block, unsigned int size, | ||
| 193 | gfp_t gfp); | ||
| 192 | struct buffer_head *__bread_gfp(struct block_device *, | 194 | struct buffer_head *__bread_gfp(struct block_device *, |
| 193 | sector_t block, unsigned size, gfp_t gfp); | 195 | sector_t block, unsigned size, gfp_t gfp); |
| 194 | void invalidate_bh_lrus(void); | 196 | void invalidate_bh_lrus(void); |
| @@ -319,6 +321,12 @@ sb_breadahead(struct super_block *sb, sector_t block) · 124 unmodified lines | |||
| 319 | __breadahead(sb->s_bdev, block, sb->s_blocksize); | 321 | __breadahead(sb->s_bdev, block, sb->s_blocksize); |
| 320 | } | 322 | } |
| 321 | 323 | ||
| 324 | static inline void | ||
| 325 | sb_breadahead_unmovable(struct super_block *sb, sector_t block) | ||
| 326 | { | ||
| 327 | __breadahead_gfp(sb->s_bdev, block, sb->s_blocksize, 0); | ||
| 328 | } | ||
| 329 | |||
| 322 | static inline struct buffer_head * | 330 | static inline struct buffer_head * |
| 323 | sb_getblk(struct super_block *sb, sector_t block) | 331 | sb_getblk(struct super_block *sb, sector_t block) |
| 324 | { | 332 | { |
| @@ -189,7 +189,7 @@ struct __packed pucan_rx_msg { · 188 unmodified lines | |||
| 189 | u8 client; | 189 | u8 client; |
| 190 | __le16 flags; | 190 | __le16 flags; |
| 191 | __le32 can_id; | 191 | __le32 can_id; |
| 192 | u8 d[0]; | 192 | u8 d[]; |
| 193 | }; | 193 | }; |
| 194 | 194 | ||
| 195 | /* uCAN error types */ | 195 | /* uCAN error types */ |
| @@ -266,7 +266,7 @@ struct __packed pucan_tx_msg { · 70 unmodified lines | |||
| 266 | u8 client; | 266 | u8 client; |
| 267 | __le16 flags; | 267 | __le16 flags; |
| 268 | __le32 can_id; | 268 | __le32 can_id; |
| 269 | u8 d[0]; | 269 | u8 d[]; |
| 270 | }; | 270 | }; |
| 271 | 271 | ||
| 272 | /* build the cmd opcode_channel field with respect to the correct endianness */ | 272 | /* build the cmd opcode_channel field with respect to the correct endianness */ |
| @@ -356,4 +356,10 @@ static inline void *offset_to_ptr(const int *off) · 355 unmodified lines | |||
| 356 | /* &a[0] degrades to a pointer: a different type from an array */ | 356 | /* &a[0] degrades to a pointer: a different type from an array */ |
| 357 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) | 357 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0])) |
| 358 | 358 | ||
| 359 | /* | ||
| 360 | * This is needed in functions which generate the stack canary, see | ||
| 361 | * arch/x86/kernel/smpboot.c::start_secondary() for an example. | ||
| 362 | */ | ||
| 363 | #define prevent_tail_call_optimization() mb() | ||
| 364 | |||
| 359 | #endif /* __LINUX_COMPILER_H */ | 365 | #endif /* __LINUX_COMPILER_H */ |
| @@ -28,7 +28,7 @@ struct cpu_rmap { · 27 unmodified lines | |||
| 28 | struct { | 28 | struct { |
| 29 | u16 index; | 29 | u16 index; |
| 30 | u16 dist; | 30 | u16 dist; |
| 31 | } near[0]; | 31 | } near[]; |
| 32 | }; | 32 | }; |
| 33 | #define CPU_RMAP_DIST_INF 0xffff | 33 | #define CPU_RMAP_DIST_INF 0xffff |
| 34 | 34 | ||
| @@ -103,8 +103,8 @@ void debugfs_create_u8(const char *name, umode_t mode, struct dentry *parent, · 102 unmodified lines | |||
| 103 | u8 *value); | 103 | u8 *value); |
| 104 | void debugfs_create_u16(const char *name, umode_t mode, struct dentry *parent, | 104 | void debugfs_create_u16(const char *name, umode_t mode, struct dentry *parent, |
| 105 | u16 *value); | 105 | u16 *value); |
| 106 | struct dentry *debugfs_create_u32(const char *name, umode_t mode, | 106 | void debugfs_create_u32(const char *name, umode_t mode, struct dentry *parent, |
| 107 | struct dentry *parent, u32 *value); | 107 | u32 *value); |
| 108 | void debugfs_create_u64(const char *name, umode_t mode, struct dentry *parent, | 108 | void debugfs_create_u64(const char *name, umode_t mode, struct dentry *parent, |
| 109 | u64 *value); | 109 | u64 *value); |
| 110 | struct dentry *debugfs_create_ulong(const char *name, umode_t mode, | 110 | struct dentry *debugfs_create_ulong(const char *name, umode_t mode, |
| @@ -250,12 +250,8 @@ static inline void debugfs_create_u8(const char *name, umode_t mode, · 139 unmodified lines | |||
| 250 | static inline void debugfs_create_u16(const char *name, umode_t mode, | 250 | static inline void debugfs_create_u16(const char *name, umode_t mode, |
| 251 | struct dentry *parent, u16 *value) { } | 251 | struct dentry *parent, u16 *value) { } |
| 252 | 252 | ||
| 253 | static inline struct dentry *debugfs_create_u32(const char *name, umode_t mode, | 253 | static inline void debugfs_create_u32(const char *name, umode_t mode, |
| 254 | struct dentry *parent, | 254 | struct dentry *parent, u32 *value) { } |
| 255 | u32 *value) | ||
| 256 | { | ||
| 257 | return ERR_PTR(-ENODEV); | ||
| 258 | } | ||
| 259 | 255 | ||
| 260 | static inline void debugfs_create_u64(const char *name, umode_t mode, | 256 | static inline void debugfs_create_u64(const char *name, umode_t mode, |
| 261 | struct dentry *parent, u64 *value) { } | 257 | struct dentry *parent, u64 *value) { } |
| @@ -29,7 +29,7 @@ struct pubkey_hdr { · 28 unmodified lines | |||
| 29 | uint32_t timestamp; /* key made, always 0 for now */ | 29 | uint32_t timestamp; /* key made, always 0 for now */ |
| 30 | uint8_t algo; | 30 | uint8_t algo; |
| 31 | uint8_t nmpi; | 31 | uint8_t nmpi; |
| 32 | char mpi[0]; | 32 | char mpi[]; |
| 33 | } __packed; | 33 | } __packed; |
| 34 | 34 | ||
| 35 | struct signature_hdr { | 35 | struct signature_hdr { |
| @@ -39,7 +39,7 @@ struct signature_hdr { · 3 unmodified lines | |||
| 39 | uint8_t hash; | 39 | uint8_t hash; |
| 40 | uint8_t keyid[8]; | 40 | uint8_t keyid[8]; |
| 41 | uint8_t nmpi; | 41 | uint8_t nmpi; |
| 42 | char mpi[0]; | 42 | char mpi[]; |
| 43 | } __packed; | 43 | } __packed; |
| 44 | 44 | ||
| 45 | #if defined(CONFIG_SIGNATURE) || defined(CONFIG_SIGNATURE_MODULE) | 45 | #if defined(CONFIG_SIGNATURE) || defined(CONFIG_SIGNATURE_MODULE) |
| @@ -7,7 +7,7 @@ struct linux_dirent64 { · 6 unmodified lines | |||
| 7 | s64 d_off; | 7 | s64 d_off; |
| 8 | unsigned short d_reclen; | 8 | unsigned short d_reclen; |
| 9 | unsigned char d_type; | 9 | unsigned char d_type; |
| 10 | char d_name[0]; | 10 | char d_name[]; |
| 11 | }; | 11 | }; |
| 12 | 12 | ||
| 13 | #endif | 13 | #endif |
| @@ -329,13 +329,12 @@ struct dma_buf { · 328 unmodified lines | |||
| 329 | 329 | ||
| 330 | /** | 330 | /** |
| 331 | * struct dma_buf_attach_ops - importer operations for an attachment | 331 | * struct dma_buf_attach_ops - importer operations for an attachment |
| 332 | * @move_notify: [optional] notification that the DMA-buf is moving | ||
| 333 | * | 332 | * |
| 334 | * Attachment operations implemented by the importer. | 333 | * Attachment operations implemented by the importer. |
| 335 | */ | 334 | */ |
| 336 | struct dma_buf_attach_ops { | 335 | struct dma_buf_attach_ops { |
| 337 | /** | 336 | /** |
| 338 | * @move_notify | 337 | * @move_notify: [optional] notification that the DMA-buf is moving |
| 339 | * | 338 | * |
| 340 | * If this callback is provided the framework can avoid pinning the | 339 | * If this callback is provided the framework can avoid pinning the |
| 341 | * backing store while mappings exists. | 340 | * backing store while mappings exists. |
| @@ -83,9 +83,9 @@ enum dma_transfer_direction { · 82 unmodified lines | |||
| 83 | /** | 83 | /** |
| 84 | * Interleaved Transfer Request | 84 | * Interleaved Transfer Request |
| 85 | * ---------------------------- | 85 | * ---------------------------- |
| 86 | * A chunk is collection of contiguous bytes to be transfered. | 86 | * A chunk is collection of contiguous bytes to be transferred. |
| 87 | * The gap(in bytes) between two chunks is called inter-chunk-gap(ICG). | 87 | * The gap(in bytes) between two chunks is called inter-chunk-gap(ICG). |
| 88 | * ICGs may or maynot change between chunks. | 88 | * ICGs may or may not change between chunks. |
| 89 | * A FRAME is the smallest series of contiguous {chunk,icg} pairs, | 89 | * A FRAME is the smallest series of contiguous {chunk,icg} pairs, |
| 90 | * that when repeated an integral number of times, specifies the transfer. | 90 | * that when repeated an integral number of times, specifies the transfer. |
| 91 | * A transfer template is specification of a Frame, the number of times | 91 | * A transfer template is specification of a Frame, the number of times |
| @@ -341,13 +341,11 @@ struct dma_chan { · 249 unmodified lines | |||
| 341 | * @chan: driver channel device | 341 | * @chan: driver channel device |
| 342 | * @device: sysfs device | 342 | * @device: sysfs device |
| 343 | * @dev_id: parent dma_device dev_id | 343 | * @dev_id: parent dma_device dev_id |
| 344 | * @idr_ref: reference count to gate release of dma_device dev_id | ||
| 345 | */ | 344 | */ |
| 346 | struct dma_chan_dev { | 345 | struct dma_chan_dev { |
| 347 | struct dma_chan *chan; | 346 | struct dma_chan *chan; |
| 348 | struct device device; | 347 | struct device device; |
| 349 | int dev_id; | 348 | int dev_id; |
| 350 | atomic_t *idr_ref; | ||
| 351 | }; | 349 | }; |
| 352 | 350 | ||
| 353 | /** | 351 | /** |
| @@ -835,6 +833,8 @@ struct dma_device { · 481 unmodified lines | |||
| 835 | int dev_id; | 833 | int dev_id; |
| 836 | struct device *dev; | 834 | struct device *dev; |
| 837 | struct module *owner; | 835 | struct module *owner; |
| 836 | struct ida chan_ida; | ||
| 837 | struct mutex chan_mutex; /* to protect chan_ida */ | ||
| 838 | 838 | ||
| 839 | u32 src_addr_widths; | 839 | u32 src_addr_widths; |
| 840 | u32 dst_addr_widths; | 840 | u32 dst_addr_widths; |
| @@ -1069,7 +1069,7 @@ static inline int dmaengine_terminate_all(struct dma_chan *chan) · 228 unmodified lines | |||
| 1069 | * dmaengine_synchronize() needs to be called before it is safe to free | 1069 | * dmaengine_synchronize() needs to be called before it is safe to free |
| 1070 | * any memory that is accessed by previously submitted descriptors or before | 1070 | * any memory that is accessed by previously submitted descriptors or before |
| 1071 | * freeing any resources accessed from within the completion callback of any | 1071 | * freeing any resources accessed from within the completion callback of any |
| 1072 | * perviously submitted descriptors. | 1072 | * previously submitted descriptors. |
| 1073 | * | 1073 | * |
| 1074 | * This function can be called from atomic context as well as from within a | 1074 | * This function can be called from atomic context as well as from within a |
| 1075 | * complete callback of a descriptor submitted on the same channel. | 1075 | * complete callback of a descriptor submitted on the same channel. |
| @@ -1091,7 +1091,7 @@ static inline int dmaengine_terminate_async(struct dma_chan *chan) · 15 unmodified lines | |||
| 1091 | * | 1091 | * |
| 1092 | * Synchronizes to the DMA channel termination to the current context. When this | 1092 | * Synchronizes to the DMA channel termination to the current context. When this |
| 1093 | * function returns it is guaranteed that all transfers for previously issued | 1093 | * function returns it is guaranteed that all transfers for previously issued |
| 1094 | * descriptors have stopped and and it is safe to free the memory assoicated | 1094 | * descriptors have stopped and it is safe to free the memory associated |
| 1095 | * with them. Furthermore it is guaranteed that all complete callback functions | 1095 | * with them. Furthermore it is guaranteed that all complete callback functions |
| 1096 | * for a previously submitted descriptor have finished running and it is safe to | 1096 | * for a previously submitted descriptor have finished running and it is safe to |
| 1097 | * free resources accessed from within the complete callbacks. | 1097 | * free resources accessed from within the complete callbacks. |
| @@ -101,7 +101,7 @@ struct enclosure_device { · 100 unmodified lines | |||
| 101 | struct device edev; | 101 | struct device edev; |
| 102 | struct enclosure_component_callbacks *cb; | 102 | struct enclosure_component_callbacks *cb; |
| 103 | int components; | 103 | int components; |
| 104 | struct enclosure_component component[0]; | 104 | struct enclosure_component component[]; |
| 105 | }; | 105 | }; |
| 106 | 106 | ||
| 107 | static inline struct enclosure_device * | 107 | static inline struct enclosure_device * |
| @@ -36,7 +36,7 @@ struct em_cap_state { · 35 unmodified lines | |||
| 36 | struct em_perf_domain { | 36 | struct em_perf_domain { |
| 37 | struct em_cap_state *table; | 37 | struct em_cap_state *table; |
| 38 | int nr_cap_states; | 38 | int nr_cap_states; |
| 39 | unsigned long cpus[0]; | 39 | unsigned long cpus[]; |
| 40 | }; | 40 | }; |
| 41 | 41 | ||
| 42 | #ifdef CONFIG_ENERGY_MODEL | 42 | #ifdef CONFIG_ENERGY_MODEL |
| @@ -35,7 +35,7 @@ struct compat_ethtool_rxnfc { · 34 unmodified lines | |||
| 35 | compat_u64 data; | 35 | compat_u64 data; |
| 36 | struct compat_ethtool_rx_flow_spec fs; | 36 | struct compat_ethtool_rx_flow_spec fs; |
| 37 | u32 rule_cnt; | 37 | u32 rule_cnt; |
| 38 | u32 rule_locs[0]; | 38 | u32 rule_locs[]; |
| 39 | }; | 39 | }; |
| 40 | 40 | ||
| 41 | #endif /* CONFIG_COMPAT */ | 41 | #endif /* CONFIG_COMPAT */ |
| @@ -462,7 +462,7 @@ int ethtool_check_ops(const struct ethtool_ops *ops); · 420 unmodified lines | |||
| 462 | 462 | ||
| 463 | struct ethtool_rx_flow_rule { | 463 | struct ethtool_rx_flow_rule { |
| 464 | struct flow_rule *rule; | 464 | struct flow_rule *rule; |
| 465 | unsigned long priv[0]; | 465 | unsigned long priv[]; |
| 466 | }; | 466 | }; |
| 467 | 467 | ||
| 468 | struct ethtool_rx_flow_spec_input { | 468 | struct ethtool_rx_flow_spec_input { |
| @@ -983,7 +983,7 @@ struct file_handle { · 982 unmodified lines | |||
| 983 | __u32 handle_bytes; | 983 | __u32 handle_bytes; |
| 984 | int handle_type; | 984 | int handle_type; |
| 985 | /* file identifier */ | 985 | /* file identifier */ |
| 986 | unsigned char f_handle[0]; | 986 | unsigned char f_handle[]; |
| 987 | }; | 987 | }; |
| 988 | 988 | ||
| 989 | static inline struct file *get_file(struct file *f) | 989 | static inline struct file *get_file(struct file *f) |
| @@ -210,6 +210,29 @@ struct ftrace_ops { · 209 unmodified lines | |||
| 210 | #endif | 210 | #endif |
| 211 | }; | 211 | }; |
| 212 | 212 | ||
| 213 | extern struct ftrace_ops __rcu *ftrace_ops_list; | ||
| 214 | extern struct ftrace_ops ftrace_list_end; | ||
| 215 | |||
| 216 | /* | ||
| 217 | * Traverse the ftrace_global_list, invoking all entries. The reason that we | ||
| 218 | * can use rcu_dereference_raw_check() is that elements removed from this list | ||
| 219 | * are simply leaked, so there is no need to interact with a grace-period | ||
| 220 | * mechanism. The rcu_dereference_raw_check() calls are needed to handle | ||
| 221 | * concurrent insertions into the ftrace_global_list. | ||
| 222 | * | ||
| 223 | * Silly Alpha and silly pointer-speculation compiler optimizations! | ||
| 224 | */ | ||
| 225 | #define do_for_each_ftrace_op(op, list) \ | ||
| 226 | op = rcu_dereference_raw_check(list); \ | ||
| 227 | do | ||
| 228 | |||
| 229 | /* | ||
| 230 | * Optimized for just a single item in the list (as that is the normal case). | ||
| 231 | */ | ||
| 232 | #define while_for_each_ftrace_op(op) \ | ||
| 233 | while (likely(op = rcu_dereference_raw_check((op)->next)) && \ | ||
| 234 | unlikely((op) != &ftrace_list_end)) | ||
| 235 | |||
| 213 | /* | 236 | /* |
| 214 | * Type of the current tracing. | 237 | * Type of the current tracing. |
| 215 | */ | 238 | */ |
| @@ -76,7 +76,7 @@ struct gen_pool_chunk { · 75 unmodified lines | |||
| 76 | void *owner; /* private data to retrieve at alloc time */ | 76 | void *owner; /* private data to retrieve at alloc time */ |
| 77 | unsigned long start_addr; /* start address of memory chunk */ | 77 | unsigned long start_addr; /* start address of memory chunk */ |
| 78 | unsigned long end_addr; /* end address of memory chunk (inclusive) */ | 78 | unsigned long end_addr; /* end address of memory chunk (inclusive) */ |
| 79 | unsigned long bits[0]; /* bitmap for allocating memory chunk */ | 79 | unsigned long bits[]; /* bitmap for allocating memory chunk */ |
| 80 | }; | 80 | }; |
| 81 | 81 | ||
| 82 | /* | 82 | /* |
| @@ -17,9 +17,12 @@ enum host1x_class { · 16 unmodified lines | |||
| 17 | HOST1X_CLASS_GR3D = 0x60, | 17 | HOST1X_CLASS_GR3D = 0x60, |
| 18 | }; | 18 | }; |
| 19 | 19 | ||
| 20 | struct host1x; | ||
| 20 | struct host1x_client; | 21 | struct host1x_client; |
| 21 | struct iommu_group; | 22 | struct iommu_group; |
| 22 | 23 | ||
| 24 | u64 host1x_get_dma_mask(struct host1x *host1x); | ||
| 25 | |||
| 23 | /** | 26 | /** |
| 24 | * struct host1x_client_ops - host1x client operations | 27 | * struct host1x_client_ops - host1x client operations |
| 25 | * @init: host1x client initialization code | 28 | * @init: host1x client initialization code |
| @@ -461,12 +461,6 @@ i2c_new_scanned_device(struct i2c_adapter *adap, · 460 unmodified lines | |||
| 461 | unsigned short const *addr_list, | 461 | unsigned short const *addr_list, |
| 462 | int (*probe)(struct i2c_adapter *adap, unsigned short addr)); | 462 | int (*probe)(struct i2c_adapter *adap, unsigned short addr)); |
| 463 | 463 | ||
| 464 | struct i2c_client * | ||
| 465 | i2c_new_probed_device(struct i2c_adapter *adap, | ||
| 466 | struct i2c_board_info *info, | ||
| 467 | unsigned short const *addr_list, | ||
| 468 | int (*probe)(struct i2c_adapter *adap, unsigned short addr)); | ||
| 469 | |||
| 470 | /* Common custom probe functions */ | 464 | /* Common custom probe functions */ |
| 471 | int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr); | 465 | int i2c_probe_func_quick_read(struct i2c_adapter *adap, unsigned short addr); |
| 472 | 466 | ||
| @@ -38,7 +38,7 @@ struct ip_sf_socklist { · 37 unmodified lines | |||
| 38 | unsigned int sl_max; | 38 | unsigned int sl_max; |
| 39 | unsigned int sl_count; | 39 | unsigned int sl_count; |
| 40 | struct rcu_head rcu; | 40 | struct rcu_head rcu; |
| 41 | __be32 sl_addr[0]; | 41 | __be32 sl_addr[]; |
| 42 | }; | 42 | }; |
| 43 | 43 | ||
| 44 | #define IP_SFLSIZE(count) (sizeof(struct ip_sf_socklist) + \ | 44 | #define IP_SFLSIZE(count) (sizeof(struct ip_sf_socklist) + \ |
| @@ -18,7 +18,7 @@ · 17 unmodified lines | |||
| 18 | struct ihex_binrec { | 18 | struct ihex_binrec { |
| 19 | __be32 addr; | 19 | __be32 addr; |
| 20 | __be16 len; | 20 | __be16 len; |
| 21 | uint8_t data[0]; | 21 | uint8_t data[]; |
| 22 | } __attribute__((packed)); | 22 | } __attribute__((packed)); |
| 23 | 23 | ||
| 24 | static inline uint16_t ihex_binrec_size(const struct ihex_binrec *p) | 24 | static inline uint16_t ihex_binrec_size(const struct ihex_binrec *p) |
| @@ -600,7 +600,7 @@ void iio_device_unregister(struct iio_dev *indio_dev); · 599 unmodified lines | |||
| 600 | * 0 on success, negative error number on failure. | 600 | * 0 on success, negative error number on failure. |
| 601 | */ | 601 | */ |
| 602 | #define devm_iio_device_register(dev, indio_dev) \ | 602 | #define devm_iio_device_register(dev, indio_dev) \ |
| 603 | __devm_iio_device_register((dev), (indio_dev), THIS_MODULE); | 603 | __devm_iio_device_register((dev), (indio_dev), THIS_MODULE) |
| 604 | int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, | 604 | int __devm_iio_device_register(struct device *dev, struct iio_dev *indio_dev, |
| 605 | struct module *this_mod); | 605 | struct module *this_mod); |
| 606 | void devm_iio_device_unregister(struct device *dev, struct iio_dev *indio_dev); | 606 | void devm_iio_device_unregister(struct device *dev, struct iio_dev *indio_dev); |
| @@ -573,8 +573,6 @@ enum { · 572 unmodified lines | |||
| 573 | #define IRQ_DEFAULT_INIT_FLAGS ARCH_IRQ_INIT_FLAGS | 573 | #define IRQ_DEFAULT_INIT_FLAGS ARCH_IRQ_INIT_FLAGS |
| 574 | 574 | ||
| 575 | struct irqaction; | 575 | struct irqaction; |
| 576 | extern int setup_irq(unsigned int irq, struct irqaction *new); | ||
| 577 | extern void remove_irq(unsigned int irq, struct irqaction *act); | ||
| 578 | extern int setup_percpu_irq(unsigned int irq, struct irqaction *new); | 576 | extern int setup_percpu_irq(unsigned int irq, struct irqaction *new); |
| 579 | extern void remove_percpu_irq(unsigned int irq, struct irqaction *act); | 577 | extern void remove_percpu_irq(unsigned int irq, struct irqaction *act); |
| 580 | 578 | ||
| @@ -1043,7 +1041,7 @@ struct irq_chip_generic { · 462 unmodified lines | |||
| 1043 | unsigned long unused; | 1041 | unsigned long unused; |
| 1044 | struct irq_domain *domain; | 1042 | struct irq_domain *domain; |
| 1045 | struct list_head list; | 1043 | struct list_head list; |
| 1046 | struct irq_chip_type chip_types[0]; | 1044 | struct irq_chip_type chip_types[]; |
| 1047 | }; | 1045 | }; |
| 1048 | 1046 | ||
| 1049 | /** | 1047 | /** |
| @@ -1079,7 +1077,7 @@ struct irq_domain_chip_generic { · 29 unmodified lines | |||
| 1079 | unsigned int irq_flags_to_clear; | 1077 | unsigned int irq_flags_to_clear; |
| 1080 | unsigned int irq_flags_to_set; | 1078 | unsigned int irq_flags_to_set; |
| 1081 | enum irq_gc_flags gc_flags; | 1079 | enum irq_gc_flags gc_flags; |
| 1082 | struct irq_chip_generic *gc[0]; | 1080 | struct irq_chip_generic *gc[]; |
| 1083 | }; | 1081 | }; |
| 1084 | 1082 | ||
| 1085 | /* Generic chip callback functions */ | 1083 | /* Generic chip callback functions */ |
| @@ -243,6 +243,7 @@ · 242 unmodified lines | |||
| 243 | 243 | ||
| 244 | #define GICR_TYPER_PLPIS (1U << 0) | 244 | #define GICR_TYPER_PLPIS (1U << 0) |
| 245 | #define GICR_TYPER_VLPIS (1U << 1) | 245 | #define GICR_TYPER_VLPIS (1U << 1) |
| 246 | #define GICR_TYPER_DIRTY (1U << 2) | ||
| 246 | #define GICR_TYPER_DirectLPIS (1U << 3) | 247 | #define GICR_TYPER_DirectLPIS (1U << 3) |
| 247 | #define GICR_TYPER_LAST (1U << 4) | 248 | #define GICR_TYPER_LAST (1U << 4) |
| 248 | #define GICR_TYPER_RVPEID (1U << 7) | 249 | #define GICR_TYPER_RVPEID (1U << 7) |
| @@ -686,6 +687,7 @@ struct rdists { · 437 unmodified lines | |||
| 686 | bool has_vlpis; | 687 | bool has_vlpis; |
| 687 | bool has_rvpeid; | 688 | bool has_rvpeid; |
| 688 | bool has_direct_lpi; | 689 | bool has_direct_lpi; |
| 690 | bool has_vpend_valid_dirty; | ||
| 689 | }; | 691 | }; |
| 690 | 692 | ||
| 691 | struct irq_domain; | 693 | struct irq_domain; |
| @@ -813,8 +813,11 @@ void kvm_flush_remote_tlbs(struct kvm *kvm); · 812 unmodified lines | |||
| 813 | void kvm_reload_remote_mmus(struct kvm *kvm); | 813 | void kvm_reload_remote_mmus(struct kvm *kvm); |
| 814 | 814 | ||
| 815 | bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req, | 815 | bool kvm_make_vcpus_request_mask(struct kvm *kvm, unsigned int req, |
| 816 | struct kvm_vcpu *except, | ||
| 816 | unsigned long *vcpu_bitmap, cpumask_var_t tmp); | 817 | unsigned long *vcpu_bitmap, cpumask_var_t tmp); |
| 817 | bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req); | 818 | bool kvm_make_all_cpus_request(struct kvm *kvm, unsigned int req); |
| 819 | bool kvm_make_all_cpus_request_except(struct kvm *kvm, unsigned int req, | ||
| 820 | struct kvm_vcpu *except); | ||
| 818 | bool kvm_make_cpus_request_mask(struct kvm *kvm, unsigned int req, | 821 | bool kvm_make_cpus_request_mask(struct kvm *kvm, unsigned int req, |
| 819 | unsigned long *vcpu_bitmap); | 822 | unsigned long *vcpu_bitmap); |
| 820 | 823 | ||
| @@ -1048,7 +1051,7 @@ search_memslots(struct kvm_memslots *slots, gfn_t gfn) · 227 unmodified lines | |||
| 1048 | start = slot + 1; | 1051 | start = slot + 1; |
| 1049 | } | 1052 | } |
| 1050 | 1053 | ||
| 1051 | if (gfn >= memslots[start].base_gfn && | 1054 | if (start < slots->used_slots && gfn >= memslots[start].base_gfn && |
| 1052 | gfn < memslots[start].base_gfn + memslots[start].npages) { | 1055 | gfn < memslots[start].base_gfn + memslots[start].npages) { |
| 1053 | atomic_set(&slots->lru_slot, start); | 1056 | atomic_set(&slots->lru_slot, start); |
| 1054 | return &memslots[start]; | 1057 | return &memslots[start]; |
| @@ -34,7 +34,7 @@ struct list_lru_one { · 33 unmodified lines | |||
| 34 | struct list_lru_memcg { | 34 | struct list_lru_memcg { |
| 35 | struct rcu_head rcu; | 35 | struct rcu_head rcu; |
| 36 | /* array of per cgroup lists, indexed by memcg_cache_id */ | 36 | /* array of per cgroup lists, indexed by memcg_cache_id */ |
| 37 | struct list_lru_one *lru[0]; | 37 | struct list_lru_one *lru[]; |
| 38 | }; | 38 | }; |
| 39 | 39 | ||
| 40 | struct list_lru_node { | 40 | struct list_lru_node { |
| @@ -55,7 +55,7 @@ LSM_HOOK(void, LSM_RET_VOID, bprm_committing_creds, struct linux_binprm *bprm) · 54 unmodified lines | |||
| 55 | LSM_HOOK(void, LSM_RET_VOID, bprm_committed_creds, struct linux_binprm *bprm) | 55 | LSM_HOOK(void, LSM_RET_VOID, bprm_committed_creds, struct linux_binprm *bprm) |
| 56 | LSM_HOOK(int, 0, fs_context_dup, struct fs_context *fc, | 56 | LSM_HOOK(int, 0, fs_context_dup, struct fs_context *fc, |
| 57 | struct fs_context *src_sc) | 57 | struct fs_context *src_sc) |
| 58 | LSM_HOOK(int, 0, fs_context_parse_param, struct fs_context *fc, | 58 | LSM_HOOK(int, -ENOPARAM, fs_context_parse_param, struct fs_context *fc, |
| 59 | struct fs_parameter *param) | 59 | struct fs_parameter *param) |
| 60 | LSM_HOOK(int, 0, sb_alloc_security, struct super_block *sb) | 60 | LSM_HOOK(int, 0, sb_alloc_security, struct super_block *sb) |
| 61 | LSM_HOOK(void, LSM_RET_VOID, sb_free_security, struct super_block *sb) | 61 | LSM_HOOK(void, LSM_RET_VOID, sb_free_security, struct super_block *sb) |
| @@ -243,7 +243,7 @@ LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, char *name, · 181 unmodified lines | |||
| 243 | char **value) | 243 | char **value) |
| 244 | LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t size) | 244 | LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t size) |
| 245 | LSM_HOOK(int, 0, ismaclabel, const char *name) | 245 | LSM_HOOK(int, 0, ismaclabel, const char *name) |
| 246 | LSM_HOOK(int, 0, secid_to_secctx, u32 secid, char **secdata, | 246 | LSM_HOOK(int, -EOPNOTSUPP, secid_to_secctx, u32 secid, char **secdata, |
| 247 | u32 *seclen) | 247 | u32 *seclen) |
| 248 | LSM_HOOK(int, 0, secctx_to_secid, const char *secdata, u32 seclen, u32 *secid) | 248 | LSM_HOOK(int, 0, secctx_to_secid, const char *secdata, u32 seclen, u32 *secid) |
| 249 | LSM_HOOK(void, LSM_RET_VOID, release_secctx, char *secdata, u32 seclen) | 249 | LSM_HOOK(void, LSM_RET_VOID, release_secctx, char *secdata, u32 seclen) |
| @@ -106,7 +106,7 @@ struct lruvec_stat { · 105 unmodified lines | |||
| 106 | */ | 106 | */ |
| 107 | struct memcg_shrinker_map { | 107 | struct memcg_shrinker_map { |
| 108 | struct rcu_head rcu; | 108 | struct rcu_head rcu; |
| 109 | unsigned long map[0]; | 109 | unsigned long map[]; |
| 110 | }; | 110 | }; |
| 111 | 111 | ||
| 112 | /* | 112 | /* |
| @@ -148,7 +148,7 @@ struct mem_cgroup_threshold_ary { · 35 unmodified lines | |||
| 148 | /* Size of entries[] */ | 148 | /* Size of entries[] */ |
| 149 | unsigned int size; | 149 | unsigned int size; |
| 150 | /* Array of thresholds */ | 150 | /* Array of thresholds */ |
| 151 | struct mem_cgroup_threshold entries[0]; | 151 | struct mem_cgroup_threshold entries[]; |
| 152 | }; | 152 | }; |
| 153 | 153 | ||
| 154 | struct mem_cgroup_thresholds { | 154 | struct mem_cgroup_thresholds { |
| @@ -783,6 +783,8 @@ static inline void memcg_memory_event(struct mem_cgroup *memcg, · 628 unmodified lines | |||
| 783 | atomic_long_inc(&memcg->memory_events[event]); | 783 | atomic_long_inc(&memcg->memory_events[event]); |
| 784 | cgroup_file_notify(&memcg->events_file); | 784 | cgroup_file_notify(&memcg->events_file); |
| 785 | 785 | ||
| 786 | if (!cgroup_subsys_on_dfl(memory_cgrp_subsys)) | ||
| 787 | break; | ||
| 786 | if (cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_LOCAL_EVENTS) | 788 | if (cgrp_dfl_root.flags & CGRP_ROOT_MEMORY_LOCAL_EVENTS) |
| 787 | break; | 789 | break; |
| 788 | } while ((memcg = parent_mem_cgroup(memcg)) && | 790 | } while ((memcg = parent_mem_cgroup(memcg)) && |
| @@ -53,9 +53,9 @@ enum mhi_callback { · 52 unmodified lines | |||
| 53 | * @MHI_CHAIN: Linked transfer | 53 | * @MHI_CHAIN: Linked transfer |
| 54 | */ | 54 | */ |
| 55 | enum mhi_flags { | 55 | enum mhi_flags { |
| 56 | MHI_EOB, | 56 | MHI_EOB = BIT(0), |
| 57 | MHI_EOT, | 57 | MHI_EOT = BIT(1), |
| 58 | MHI_CHAIN, | 58 | MHI_CHAIN = BIT(2), |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | /** | 61 | /** |
| @@ -335,14 +335,15 @@ struct mhi_controller_config { · 273 unmodified lines | |||
| 335 | * @syserr_worker: System error worker | 335 | * @syserr_worker: System error worker |
| 336 | * @state_event: State change event | 336 | * @state_event: State change event |
| 337 | * @status_cb: CB function to notify power states of the device (required) | 337 | * @status_cb: CB function to notify power states of the device (required) |
| 338 | * @link_status: CB function to query link status of the device (required) | ||
| 339 | * @wake_get: CB function to assert device wake (optional) | 338 | * @wake_get: CB function to assert device wake (optional) |
| 340 | * @wake_put: CB function to de-assert device wake (optional) | 339 | * @wake_put: CB function to de-assert device wake (optional) |
| 341 | * @wake_toggle: CB function to assert and de-assert device wake (optional) | 340 | * @wake_toggle: CB function to assert and de-assert device wake (optional) |
| 342 | * @runtime_get: CB function to controller runtime resume (required) | 341 | * @runtime_get: CB function to controller runtime resume (required) |
| 343 | * @runtimet_put: CB function to decrement pm usage (required) | 342 | * @runtime_put: CB function to decrement pm usage (required) |
| 344 | * @map_single: CB function to create TRE buffer | 343 | * @map_single: CB function to create TRE buffer |
| 345 | * @unmap_single: CB function to destroy TRE buffer | 344 | * @unmap_single: CB function to destroy TRE buffer |
| 345 | * @read_reg: Read a MHI register via the physical link (required) | ||
| 346 | * @write_reg: Write a MHI register via the physical link (required) | ||
| 346 | * @buffer_len: Bounce buffer length | 347 | * @buffer_len: Bounce buffer length |
| 347 | * @bounce_buf: Use of bounce buffer | 348 | * @bounce_buf: Use of bounce buffer |
| 348 | * @fbc_download: MHI host needs to do complete image transfer (optional) | 349 | * @fbc_download: MHI host needs to do complete image transfer (optional) |
| @@ -417,7 +418,6 @@ struct mhi_controller { · 68 unmodified lines | |||
| 417 | 418 | ||
| 418 | void (*status_cb)(struct mhi_controller *mhi_cntrl, | 419 | void (*status_cb)(struct mhi_controller *mhi_cntrl, |
| 419 | enum mhi_callback cb); | 420 | enum mhi_callback cb); |
| 420 | int (*link_status)(struct mhi_controller *mhi_cntrl); | ||
| 421 | void (*wake_get)(struct mhi_controller *mhi_cntrl, bool override); | 421 | void (*wake_get)(struct mhi_controller *mhi_cntrl, bool override); |
| 422 | void (*wake_put)(struct mhi_controller *mhi_cntrl, bool override); | 422 | void (*wake_put)(struct mhi_controller *mhi_cntrl, bool override); |
| 423 | void (*wake_toggle)(struct mhi_controller *mhi_cntrl); | 423 | void (*wake_toggle)(struct mhi_controller *mhi_cntrl); |
| @@ -427,6 +427,10 @@ struct mhi_controller { · 3 unmodified lines | |||
| 427 | struct mhi_buf_info *buf); | 427 | struct mhi_buf_info *buf); |
| 428 | void (*unmap_single)(struct mhi_controller *mhi_cntrl, | 428 | void (*unmap_single)(struct mhi_controller *mhi_cntrl, |
| 429 | struct mhi_buf_info *buf); | 429 | struct mhi_buf_info *buf); |
| 430 | int (*read_reg)(struct mhi_controller *mhi_cntrl, void __iomem *addr, | ||
| 431 | u32 *out); | ||
| 432 | void (*write_reg)(struct mhi_controller *mhi_cntrl, void __iomem *addr, | ||
| 433 | u32 val); | ||
| 430 | 434 | ||
| 431 | size_t buffer_len; | 435 | size_t buffer_len; |
| 432 | bool bounce_buf; | 436 | bool bounce_buf; |
| @@ -1317,11 +1317,13 @@ struct nfs41_impl_id { · 1316 unmodified lines | |||
| 1317 | struct nfstime4 date; | 1317 | struct nfstime4 date; |
| 1318 | }; | 1318 | }; |
| 1319 | 1319 | ||
| 1320 | #define MAX_BIND_CONN_TO_SESSION_RETRIES 3 | ||
| 1320 | struct nfs41_bind_conn_to_session_args { | 1321 | struct nfs41_bind_conn_to_session_args { |
| 1321 | struct nfs_client *client; | 1322 | struct nfs_client *client; |
| 1322 | struct nfs4_sessionid sessionid; | 1323 | struct nfs4_sessionid sessionid; |
| 1323 | u32 dir; | 1324 | u32 dir; |
| 1324 | bool use_conn_in_rdma_mode; | 1325 | bool use_conn_in_rdma_mode; |
| 1326 | int retries; | ||
| 1325 | }; | 1327 | }; |
| 1326 | 1328 | ||
| 1327 | struct nfs41_bind_conn_to_session_res { | 1329 | struct nfs41_bind_conn_to_session_res { |
| @@ -185,6 +185,7 @@ int cros_ec_sensorhub_register_push_data(struct cros_ec_sensorhub *sensorhub, · 184 unmodified lines | |||
| 185 | void cros_ec_sensorhub_unregister_push_data(struct cros_ec_sensorhub *sensorhub, | 185 | void cros_ec_sensorhub_unregister_push_data(struct cros_ec_sensorhub *sensorhub, |
| 186 | u8 sensor_num); | 186 | u8 sensor_num); |
| 187 | 187 | ||
| 188 | int cros_ec_sensorhub_ring_allocate(struct cros_ec_sensorhub *sensorhub); | ||
| 188 | int cros_ec_sensorhub_ring_add(struct cros_ec_sensorhub *sensorhub); | 189 | int cros_ec_sensorhub_ring_add(struct cros_ec_sensorhub *sensorhub); |
| 189 | void cros_ec_sensorhub_ring_remove(void *arg); | 190 | void cros_ec_sensorhub_ring_remove(void *arg); |
| 190 | int cros_ec_sensorhub_ring_fifo_enable(struct cros_ec_sensorhub *sensorhub, | 191 | int cros_ec_sensorhub_ring_fifo_enable(struct cros_ec_sensorhub *sensorhub, |
| @@ -83,7 +83,7 @@ struct wilco_ec_response { · 82 unmodified lines | |||
| 83 | u16 result; | 83 | u16 result; |
| 84 | u16 data_size; | 84 | u16 data_size; |
| 85 | u8 reserved[2]; | 85 | u8 reserved[2]; |
| 86 | u8 data[0]; | 86 | u8 data[]; |
| 87 | } __packed; | 87 | } __packed; |
| 88 | 88 | ||
| 89 | /** | 89 | /** |
| @@ -25,6 +25,7 @@ struct platform_device { · 24 unmodified lines | |||
| 25 | bool id_auto; | 25 | bool id_auto; |
| 26 | struct device dev; | 26 | struct device dev; |
| 27 | u64 platform_dma_mask; | 27 | u64 platform_dma_mask; |
| 28 | struct device_dma_parameters dma_parms; | ||
| 28 | u32 num_resources; | 29 | u32 num_resources; |
| 29 | struct resource *resource; | 30 | struct resource *resource; |
| 30 | 31 | ||
| @@ -220,10 +220,8 @@ struct pnp_card { · 219 unmodified lines | |||
| 220 | #define global_to_pnp_card(n) list_entry(n, struct pnp_card, global_list) | 220 | #define global_to_pnp_card(n) list_entry(n, struct pnp_card, global_list) |
| 221 | #define protocol_to_pnp_card(n) list_entry(n, struct pnp_card, protocol_list) | 221 | #define protocol_to_pnp_card(n) list_entry(n, struct pnp_card, protocol_list) |
| 222 | #define to_pnp_card(n) container_of(n, struct pnp_card, dev) | 222 | #define to_pnp_card(n) container_of(n, struct pnp_card, dev) |
| 223 | #define pnp_for_each_card(card) \ | 223 | #define pnp_for_each_card(card) \ |
| 224 | for((card) = global_to_pnp_card(pnp_cards.next); \ | 224 | list_for_each_entry(card, &pnp_cards, global_list) |
| 225 | (card) != global_to_pnp_card(&pnp_cards); \ | ||
| 226 | (card) = global_to_pnp_card((card)->global_list.next)) | ||
| 227 | 225 | ||
| 228 | struct pnp_card_link { | 226 | struct pnp_card_link { |
| 229 | struct pnp_card *card; | 227 | struct pnp_card *card; |
| @@ -276,14 +274,9 @@ struct pnp_dev { · 46 unmodified lines | |||
| 276 | #define card_to_pnp_dev(n) list_entry(n, struct pnp_dev, card_list) | 274 | #define card_to_pnp_dev(n) list_entry(n, struct pnp_dev, card_list) |
| 277 | #define protocol_to_pnp_dev(n) list_entry(n, struct pnp_dev, protocol_list) | 275 | #define protocol_to_pnp_dev(n) list_entry(n, struct pnp_dev, protocol_list) |
| 278 | #define to_pnp_dev(n) container_of(n, struct pnp_dev, dev) | 276 | #define to_pnp_dev(n) container_of(n, struct pnp_dev, dev) |
| 279 | #define pnp_for_each_dev(dev) \ | 277 | #define pnp_for_each_dev(dev) list_for_each_entry(dev, &pnp_global, global_list) |
| 280 | for((dev) = global_to_pnp_dev(pnp_global.next); \ | 278 | #define card_for_each_dev(card, dev) \ |
| 281 | (dev) != global_to_pnp_dev(&pnp_global); \ | 279 | list_for_each_entry(dev, &(card)->devices, card_list) |
| 282 | (dev) = global_to_pnp_dev((dev)->global_list.next)) | ||
| 283 | #define card_for_each_dev(card,dev) \ | ||
| 284 | for((dev) = card_to_pnp_dev((card)->devices.next); \ | ||
| 285 | (dev) != card_to_pnp_dev(&(card)->devices); \ | ||
| 286 | (dev) = card_to_pnp_dev((dev)->card_list.next)) | ||
| 287 | #define pnp_dev_name(dev) (dev)->name | 280 | #define pnp_dev_name(dev) (dev)->name |
| 288 | 281 | ||
| 289 | static inline void *pnp_get_drvdata(struct pnp_dev *pdev) | 282 | static inline void *pnp_get_drvdata(struct pnp_dev *pdev) |
| @@ -437,14 +430,10 @@ struct pnp_protocol { · 147 unmodified lines | |||
| 437 | }; | 430 | }; |
| 438 | 431 | ||
| 439 | #define to_pnp_protocol(n) list_entry(n, struct pnp_protocol, protocol_list) | 432 | #define to_pnp_protocol(n) list_entry(n, struct pnp_protocol, protocol_list) |
| 440 | #define protocol_for_each_card(protocol,card) \ | 433 | #define protocol_for_each_card(protocol, card) \ |
| 441 | for((card) = protocol_to_pnp_card((protocol)->cards.next); \ | 434 | list_for_each_entry(card, &(protocol)->cards, protocol_list) |
| 442 | (card) != protocol_to_pnp_card(&(protocol)->cards); \ | 435 | #define protocol_for_each_dev(protocol, dev) \ |
| 443 | (card) = protocol_to_pnp_card((card)->protocol_list.next)) | 436 | list_for_each_entry(dev, &(protocol)->devices, protocol_list) |
| 444 | #define protocol_for_each_dev(protocol,dev) \ | ||
| 445 | for((dev) = protocol_to_pnp_dev((protocol)->devices.next); \ | ||
| 446 | (dev) != protocol_to_pnp_dev(&(protocol)->devices); \ | ||
| 447 | (dev) = protocol_to_pnp_dev((dev)->protocol_list.next)) | ||
| 448 | 437 | ||
| 449 | extern struct bus_type pnp_bus_type; | 438 | extern struct bus_type pnp_bus_type; |
| 450 | 439 | ||
| @@ -28,7 +28,7 @@ struct posix_acl { · 27 unmodified lines | |||
| 28 | refcount_t a_refcount; | 28 | refcount_t a_refcount; |
| 29 | struct rcu_head a_rcu; | 29 | struct rcu_head a_rcu; |
| 30 | unsigned int a_count; | 30 | unsigned int a_count; |
| 31 | struct posix_acl_entry a_entries[0]; | 31 | struct posix_acl_entry a_entries[]; |
| 32 | }; | 32 | }; |
| 33 | 33 | ||
| 34 | #define FOREACH_ACL_ENTRY(pa, acl, pe) \ | 34 | #define FOREACH_ACL_ENTRY(pa, acl, pe) \ |
| @@ -105,10 +105,10 @@ struct ptp_system_timestamp { · 104 unmodified lines | |||
| 105 | * parameter func: the desired function to use. | 105 | * parameter func: the desired function to use. |
| 106 | * parameter chan: the function channel index to use. | 106 | * parameter chan: the function channel index to use. |
| 107 | * | 107 | * |
| 108 | * @do_work: Request driver to perform auxiliary (periodic) operations | 108 | * @do_aux_work: Request driver to perform auxiliary (periodic) operations |
| 109 | * Driver should return delay of the next auxiliary work scheduling | 109 | * Driver should return delay of the next auxiliary work |
| 110 | * time (>=0) or negative value in case further scheduling | 110 | * scheduling time (>=0) or negative value in case further |
| 111 | * is not required. | 111 | * scheduling is not required. |
| 112 | * | 112 | * |
| 113 | * Drivers should embed their ptp_clock_info within a private | 113 | * Drivers should embed their ptp_clock_info within a private |
| 114 | * structure, obtaining a reference to it using container_of(). | 114 | * structure, obtaining a reference to it using container_of(). |
| @@ -100,7 +100,7 @@ struct rio_switch { · 99 unmodified lines | |||
| 100 | u32 port_ok; | 100 | u32 port_ok; |
| 101 | struct rio_switch_ops *ops; | 101 | struct rio_switch_ops *ops; |
| 102 | spinlock_t lock; | 102 | spinlock_t lock; |
| 103 | struct rio_dev *nextdev[0]; | 103 | struct rio_dev *nextdev[]; |
| 104 | }; | 104 | }; |
| 105 | 105 | ||
| 106 | /** | 106 | /** |
| @@ -201,7 +201,7 @@ struct rio_dev { · 94 unmodified lines | |||
| 201 | u8 hopcount; | 201 | u8 hopcount; |
| 202 | struct rio_dev *prev; | 202 | struct rio_dev *prev; |
| 203 | atomic_t state; | 203 | atomic_t state; |
| 204 | struct rio_switch rswitch[0]; /* RIO switch info */ | 204 | struct rio_switch rswitch[]; /* RIO switch info */ |
| 205 | }; | 205 | }; |
| 206 | 206 | ||
| 207 | #define rio_dev_g(n) list_entry(n, struct rio_dev, global_list) | 207 | #define rio_dev_g(n) list_entry(n, struct rio_dev, global_list) |
| @@ -54,7 +54,7 @@ struct rs_codec { · 53 unmodified lines | |||
| 54 | */ | 54 | */ |
| 55 | struct rs_control { | 55 | struct rs_control { |
| 56 | struct rs_codec *codec; | 56 | struct rs_codec *codec; |
| 57 | uint16_t buffers[0]; | 57 | uint16_t buffers[]; |
| 58 | }; | 58 | }; |
| 59 | 59 | ||
| 60 | /* General purpose RS codec, 8-bit data width, symbol width 1-15 bit */ | 60 | /* General purpose RS codec, 8-bit data width, symbol width 1-15 bit */ |
| @@ -142,7 +142,7 @@ struct sched_domain { · 141 unmodified lines | |||
| 142 | * by attaching extra space to the end of the structure, | 142 | * by attaching extra space to the end of the structure, |
| 143 | * depending on how many CPUs the kernel has booted up with) | 143 | * depending on how many CPUs the kernel has booted up with) |
| 144 | */ | 144 | */ |
| 145 | unsigned long span[0]; | 145 | unsigned long span[]; |
| 146 | }; | 146 | }; |
| 147 | 147 | ||
| 148 | static inline struct cpumask *sched_domain_span(struct sched_domain *sd) | 148 | static inline struct cpumask *sched_domain_span(struct sched_domain *sd) |
| @@ -4162,7 +4162,7 @@ struct skb_ext { · 4161 unmodified lines | |||
| 4162 | refcount_t refcnt; | 4162 | refcount_t refcnt; |
| 4163 | u8 offset[SKB_EXT_NUM]; /* in chunks of 8 bytes */ | 4163 | u8 offset[SKB_EXT_NUM]; /* in chunks of 8 bytes */ |
| 4164 | u8 chunks; /* same */ | 4164 | u8 chunks; /* same */ |
| 4165 | char data[0] __aligned(8); | 4165 | char data[] __aligned(8); |
| 4166 | }; | 4166 | }; |
| 4167 | 4167 | ||
| 4168 | struct skb_ext *__skb_ext_alloc(void); | 4168 | struct skb_ext *__skb_ext_alloc(void); |
| @@ -187,6 +187,7 @@ static inline void sk_msg_xfer(struct sk_msg *dst, struct sk_msg *src, · 186 unmodified lines | |||
| 187 | dst->sg.data[which] = src->sg.data[which]; | 187 | dst->sg.data[which] = src->sg.data[which]; |
| 188 | dst->sg.data[which].length = size; | 188 | dst->sg.data[which].length = size; |
| 189 | dst->sg.size += size; | 189 | dst->sg.size += size; |
| 190 | src->sg.size -= size; | ||
| 190 | src->sg.data[which].length -= size; | 191 | src->sg.data[which].length -= size; |
| 191 | src->sg.data[which].offset += size; | 192 | src->sg.data[which].offset += size; |
| 192 | } | 193 | } |
| @@ -177,6 +177,8 @@ struct plat_stmmacenet_data { · 176 unmodified lines | |||
| 177 | struct stmmac_rxq_cfg rx_queues_cfg[MTL_MAX_RX_QUEUES]; | 177 | struct stmmac_rxq_cfg rx_queues_cfg[MTL_MAX_RX_QUEUES]; |
| 178 | struct stmmac_txq_cfg tx_queues_cfg[MTL_MAX_TX_QUEUES]; | 178 | struct stmmac_txq_cfg tx_queues_cfg[MTL_MAX_TX_QUEUES]; |
| 179 | void (*fix_mac_speed)(void *priv, unsigned int speed); | 179 | void (*fix_mac_speed)(void *priv, unsigned int speed); |
| 180 | int (*serdes_powerup)(struct net_device *ndev, void *priv); | ||
| 181 | void (*serdes_powerdown)(struct net_device *ndev, void *priv); | ||
| 180 | int (*init)(struct platform_device *pdev, void *priv); | 182 | int (*init)(struct platform_device *pdev, void *priv); |
| 181 | void (*exit)(struct platform_device *pdev, void *priv); | 183 | void (*exit)(struct platform_device *pdev, void *priv); |
| 182 | struct mac_device_info *(*setup)(void *priv); | 184 | struct mac_device_info *(*setup)(void *priv); |
| @@ -71,7 +71,13 @@ struct rpc_clnt { · 70 unmodified lines | |||
| 71 | #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) | 71 | #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) |
| 72 | struct dentry *cl_debugfs; /* debugfs directory */ | 72 | struct dentry *cl_debugfs; /* debugfs directory */ |
| 73 | #endif | 73 | #endif |
| 74 | struct rpc_xprt_iter cl_xpi; | 74 | /* cl_work is only needed after cl_xpi is no longer used, |
| 75 | * and that are of similar size | ||
| 76 | */ | ||
| 77 | union { | ||
| 78 | struct rpc_xprt_iter cl_xpi; | ||
| 79 | struct work_struct cl_work; | ||
| 80 | }; | ||
| 75 | const struct cred *cl_cred; | 81 | const struct cred *cl_cred; |
| 76 | }; | 82 | }; |
| 77 | 83 | ||
| @@ -236,4 +242,9 @@ static inline int rpc_reply_expected(struct rpc_task *task) · 158 unmodified lines | |||
| 236 | (task->tk_msg.rpc_proc->p_decode != NULL); | 242 | (task->tk_msg.rpc_proc->p_decode != NULL); |
| 237 | } | 243 | } |
| 238 | 244 | ||
| 245 | static inline void rpc_task_close_connection(struct rpc_task *task) | ||
| 246 | { | ||
| 247 | if (task->tk_xprt) | ||
| 248 | xprt_force_disconnect(task->tk_xprt); | ||
| 249 | } | ||
| 239 | #endif /* _LINUX_SUNRPC_CLNT_H */ | 250 | #endif /* _LINUX_SUNRPC_CLNT_H */ |
| @@ -21,6 +21,7 @@ · 20 unmodified lines | |||
| 21 | struct gss_ctx { | 21 | struct gss_ctx { |
| 22 | struct gss_api_mech *mech_type; | 22 | struct gss_api_mech *mech_type; |
| 23 | void *internal_ctx_id; | 23 | void *internal_ctx_id; |
| 24 | unsigned int slack, align; | ||
| 24 | }; | 25 | }; |
| 25 | 26 | ||
| 26 | #define GSS_C_NO_BUFFER ((struct xdr_netobj) 0) | 27 | #define GSS_C_NO_BUFFER ((struct xdr_netobj) 0) |
| @@ -66,6 +67,7 @@ u32 gss_wrap( · 39 unmodified lines | |||
| 66 | u32 gss_unwrap( | 67 | u32 gss_unwrap( |
| 67 | struct gss_ctx *ctx_id, | 68 | struct gss_ctx *ctx_id, |
| 68 | int offset, | 69 | int offset, |
| 70 | int len, | ||
| 69 | struct xdr_buf *inbuf); | 71 | struct xdr_buf *inbuf); |
| 70 | u32 gss_delete_sec_context( | 72 | u32 gss_delete_sec_context( |
| 71 | struct gss_ctx **ctx_id); | 73 | struct gss_ctx **ctx_id); |
| @@ -126,6 +128,7 @@ struct gss_api_ops { · 54 unmodified lines | |||
| 126 | u32 (*gss_unwrap)( | 128 | u32 (*gss_unwrap)( |
| 127 | struct gss_ctx *ctx_id, | 129 | struct gss_ctx *ctx_id, |
| 128 | int offset, | 130 | int offset, |
| 131 | int len, | ||
| 129 | struct xdr_buf *buf); | 132 | struct xdr_buf *buf); |
| 130 | void (*gss_delete_sec_context)( | 133 | void (*gss_delete_sec_context)( |
| 131 | void *internal_ctx_id); | 134 | void *internal_ctx_id); |
| @@ -83,7 +83,7 @@ struct gss_krb5_enctype { · 82 unmodified lines | |||
| 83 | u32 (*encrypt_v2) (struct krb5_ctx *kctx, u32 offset, | 83 | u32 (*encrypt_v2) (struct krb5_ctx *kctx, u32 offset, |
| 84 | struct xdr_buf *buf, | 84 | struct xdr_buf *buf, |
| 85 | struct page **pages); /* v2 encryption function */ | 85 | struct page **pages); /* v2 encryption function */ |
| 86 | u32 (*decrypt_v2) (struct krb5_ctx *kctx, u32 offset, | 86 | u32 (*decrypt_v2) (struct krb5_ctx *kctx, u32 offset, u32 len, |
| 87 | struct xdr_buf *buf, u32 *headskip, | 87 | struct xdr_buf *buf, u32 *headskip, |
| 88 | u32 *tailskip); /* v2 decryption function */ | 88 | u32 *tailskip); /* v2 decryption function */ |
| 89 | }; | 89 | }; |
| @@ -255,7 +255,7 @@ gss_wrap_kerberos(struct gss_ctx *ctx_id, int offset, · 165 unmodified lines | |||
| 255 | struct xdr_buf *outbuf, struct page **pages); | 255 | struct xdr_buf *outbuf, struct page **pages); |
| 256 | 256 | ||
| 257 | u32 | 257 | u32 |
| 258 | gss_unwrap_kerberos(struct gss_ctx *ctx_id, int offset, | 258 | gss_unwrap_kerberos(struct gss_ctx *ctx_id, int offset, int len, |
| 259 | struct xdr_buf *buf); | 259 | struct xdr_buf *buf); |
| 260 | 260 | ||
| 261 | 261 | ||
| @@ -312,7 +312,7 @@ gss_krb5_aes_encrypt(struct krb5_ctx *kctx, u32 offset, · 50 unmodified lines | |||
| 312 | struct page **pages); | 312 | struct page **pages); |
| 313 | 313 | ||
| 314 | u32 | 314 | u32 |
| 315 | gss_krb5_aes_decrypt(struct krb5_ctx *kctx, u32 offset, | 315 | gss_krb5_aes_decrypt(struct krb5_ctx *kctx, u32 offset, u32 len, |
| 316 | struct xdr_buf *buf, u32 *plainoffset, | 316 | struct xdr_buf *buf, u32 *plainoffset, |
| 317 | u32 *plainlen); | 317 | u32 *plainlen); |
| 318 | 318 | ||
| @@ -170,6 +170,7 @@ extern bool svc_rdma_post_recvs(struct svcxprt_rdma *rdma); · 169 unmodified lines | |||
| 170 | extern void svc_rdma_recv_ctxt_put(struct svcxprt_rdma *rdma, | 170 | extern void svc_rdma_recv_ctxt_put(struct svcxprt_rdma *rdma, |
| 171 | struct svc_rdma_recv_ctxt *ctxt); | 171 | struct svc_rdma_recv_ctxt *ctxt); |
| 172 | extern void svc_rdma_flush_recv_queues(struct svcxprt_rdma *rdma); | 172 | extern void svc_rdma_flush_recv_queues(struct svcxprt_rdma *rdma); |
| 173 | extern void svc_rdma_release_rqst(struct svc_rqst *rqstp); | ||
| 173 | extern int svc_rdma_recvfrom(struct svc_rqst *); | 174 | extern int svc_rdma_recvfrom(struct svc_rqst *); |
| 174 | 175 | ||
| 175 | /* svc_rdma_rw.c */ | 176 | /* svc_rdma_rw.c */ |
| @@ -184,6 +184,7 @@ xdr_adjust_iovec(struct kvec *iov, __be32 *p) · 183 unmodified lines | |||
| 184 | extern void xdr_shift_buf(struct xdr_buf *, size_t); | 184 | extern void xdr_shift_buf(struct xdr_buf *, size_t); |
| 185 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); | 185 | extern void xdr_buf_from_iov(struct kvec *, struct xdr_buf *); |
| 186 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int); | 186 | extern int xdr_buf_subsegment(struct xdr_buf *, struct xdr_buf *, unsigned int, unsigned int); |
| 187 | extern void xdr_buf_trim(struct xdr_buf *, unsigned int); | ||
| 187 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); | 188 | extern int read_bytes_from_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
| 188 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); | 189 | extern int write_bytes_to_xdr_buf(struct xdr_buf *, unsigned int, void *, unsigned int); |
| 189 | 190 | ||
| @@ -275,7 +275,7 @@ struct swap_info_struct { · 274 unmodified lines | |||
| 275 | */ | 275 | */ |
| 276 | struct work_struct discard_work; /* discard worker */ | 276 | struct work_struct discard_work; /* discard worker */ |
| 277 | struct swap_cluster_list discard_clusters; /* discard clusters list */ | 277 | struct swap_cluster_list discard_clusters; /* discard clusters list */ |
| 278 | struct plist_node avail_lists[0]; /* | 278 | struct plist_node avail_lists[]; /* |
| 279 | * entries in swap_avail_heads, one | 279 | * entries in swap_avail_heads, one |
| 280 | * entry per node. | 280 | * entry per node. |
| 281 | * Must be last as the number of the | 281 | * Must be last as the number of the |
| @@ -78,47 +78,6 @@ struct tcp_sack_block { · 77 unmodified lines | |||
| 78 | #define TCP_SACK_SEEN (1 << 0) /*1 = peer is SACK capable, */ | 78 | #define TCP_SACK_SEEN (1 << 0) /*1 = peer is SACK capable, */ |
| 79 | #define TCP_DSACK_SEEN (1 << 2) /*1 = DSACK was received from peer*/ | 79 | #define TCP_DSACK_SEEN (1 << 2) /*1 = DSACK was received from peer*/ |
| 80 | 80 | ||
| 81 | #if IS_ENABLED(CONFIG_MPTCP) | ||
| 82 | struct mptcp_options_received { | ||
| 83 | u64 sndr_key; | ||
| 84 | u64 rcvr_key; | ||
| 85 | u64 data_ack; | ||
| 86 | u64 data_seq; | ||
| 87 | u32 subflow_seq; | ||
| 88 | u16 data_len; | ||
| 89 | u16 mp_capable : 1, | ||
| 90 | mp_join : 1, | ||
| 91 | dss : 1, | ||
| 92 | add_addr : 1, | ||
| 93 | rm_addr : 1, | ||
| 94 | family : 4, | ||
| 95 | echo : 1, | ||
| 96 | backup : 1; | ||
| 97 | u32 token; | ||
| 98 | u32 nonce; | ||
| 99 | u64 thmac; | ||
| 100 | u8 hmac[20]; | ||
| 101 | u8 join_id; | ||
| 102 | u8 use_map:1, | ||
| 103 | dsn64:1, | ||
| 104 | data_fin:1, | ||
| 105 | use_ack:1, | ||
| 106 | ack64:1, | ||
| 107 | mpc_map:1, | ||
| 108 | __unused:2; | ||
| 109 | u8 addr_id; | ||
| 110 | u8 rm_id; | ||
| 111 | union { | ||
| 112 | struct in_addr addr; | ||
| 113 | #if IS_ENABLED(CONFIG_MPTCP_IPV6) | ||
| 114 | struct in6_addr addr6; | ||
| 115 | #endif | ||
| 116 | }; | ||
| 117 | u64 ahmac; | ||
| 118 | u16 port; | ||
| 119 | }; | ||
| 120 | #endif | ||
| 121 | |||
| 122 | struct tcp_options_received { | 81 | struct tcp_options_received { |
| 123 | /* PAWS/RTTM data */ | 82 | /* PAWS/RTTM data */ |
| 124 | int ts_recent_stamp;/* Time we stored ts_recent (for aging) */ | 83 | int ts_recent_stamp;/* Time we stored ts_recent (for aging) */ |
| @@ -136,9 +95,6 @@ struct tcp_options_received { · 11 unmodified lines | |||
| 136 | u8 num_sacks; /* Number of SACK blocks */ | 95 | u8 num_sacks; /* Number of SACK blocks */ |
| 137 | u16 user_mss; /* mss requested by user in ioctl */ | 96 | u16 user_mss; /* mss requested by user in ioctl */ |
| 138 | u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ | 97 | u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ |
| 139 | #if IS_ENABLED(CONFIG_MPTCP) | ||
| 140 | struct mptcp_options_received mptcp; | ||
| 141 | #endif | ||
| 142 | }; | 98 | }; |
| 143 | 99 | ||
| 144 | static inline void tcp_clear_options(struct tcp_options_received *rx_opt) | 100 | static inline void tcp_clear_options(struct tcp_options_received *rx_opt) |
| @@ -148,13 +104,6 @@ static inline void tcp_clear_options(struct tcp_options_received *rx_opt) · 3 unmodified lines | |||
| 148 | #if IS_ENABLED(CONFIG_SMC) | 104 | #if IS_ENABLED(CONFIG_SMC) |
| 149 | rx_opt->smc_ok = 0; | 105 | rx_opt->smc_ok = 0; |
| 150 | #endif | 106 | #endif |
| 151 | #if IS_ENABLED(CONFIG_MPTCP) | ||
| 152 | rx_opt->mptcp.mp_capable = 0; | ||
| 153 | rx_opt->mptcp.mp_join = 0; | ||
| 154 | rx_opt->mptcp.add_addr = 0; | ||
| 155 | rx_opt->mptcp.rm_addr = 0; | ||
| 156 | rx_opt->mptcp.dss = 0; | ||
| 157 | #endif | ||
| 158 | } | 107 | } |
| 159 | 108 | ||
| 160 | /* This is the max number of SACKS that we'll generate and process. It's safe | 109 | /* This is the max number of SACKS that we'll generate and process. It's safe |
| @@ -295,7 +295,7 @@ struct bts_header { · 294 unmodified lines | |||
| 295 | u32 magic; | 295 | u32 magic; |
| 296 | u32 version; | 296 | u32 version; |
| 297 | u8 future[24]; | 297 | u8 future[24]; |
| 298 | u8 actions[0]; | 298 | u8 actions[]; |
| 299 | } __attribute__ ((packed)); | 299 | } __attribute__ ((packed)); |
| 300 | 300 | ||
| 301 | /** | 301 | /** |
| @@ -305,7 +305,7 @@ struct bts_header { · 3 unmodified lines | |||
| 305 | struct bts_action { | 305 | struct bts_action { |
| 306 | u16 type; | 306 | u16 type; |
| 307 | u16 size; | 307 | u16 size; |
| 308 | u8 data[0]; | 308 | u8 data[]; |
| 309 | } __attribute__ ((packed)); | 309 | } __attribute__ ((packed)); |
| 310 | 310 | ||
| 311 | struct bts_action_send { | 311 | struct bts_action_send { |
| @@ -315,7 +315,7 @@ struct bts_action_send { · 3 unmodified lines | |||
| 315 | struct bts_action_wait { | 315 | struct bts_action_wait { |
| 316 | u32 msec; | 316 | u32 msec; |
| 317 | u32 size; | 317 | u32 size; |
| 318 | u8 data[0]; | 318 | u8 data[]; |
| 319 | } __attribute__ ((packed)); | 319 | } __attribute__ ((packed)); |
| 320 | 320 | ||
| 321 | struct bts_action_delay { | 321 | struct bts_action_delay { |
| @@ -28,7 +28,7 @@ struct tcpa_event { · 27 unmodified lines | |||
| 28 | u32 event_type; | 28 | u32 event_type; |
| 29 | u8 pcr_value[20]; /* SHA1 */ | 29 | u8 pcr_value[20]; /* SHA1 */ |
| 30 | u32 event_size; | 30 | u32 event_size; |
| 31 | u8 event_data[0]; | 31 | u8 event_data[]; |
| 32 | }; | 32 | }; |
| 33 | 33 | ||
| 34 | enum tcpa_event_types { | 34 | enum tcpa_event_types { |
| @@ -55,7 +55,7 @@ enum tcpa_event_types { · 20 unmodified lines | |||
| 55 | struct tcpa_pc_event { | 55 | struct tcpa_pc_event { |
| 56 | u32 event_id; | 56 | u32 event_id; |
| 57 | u32 event_size; | 57 | u32 event_size; |
| 58 | u8 event_data[0]; | 58 | u8 event_data[]; |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | enum tcpa_pc_event_ids { | 61 | enum tcpa_pc_event_ids { |
| @@ -102,7 +102,7 @@ struct tcg_pcr_event { · 40 unmodified lines | |||
| 102 | 102 | ||
| 103 | struct tcg_event_field { | 103 | struct tcg_event_field { |
| 104 | u32 event_size; | 104 | u32 event_size; |
| 105 | u8 event[0]; | 105 | u8 event[]; |
| 106 | } __packed; | 106 | } __packed; |
| 107 | 107 | ||
| 108 | struct tcg_pcr_event2_head { | 108 | struct tcg_pcr_event2_head { |
| @@ -156,8 +156,7 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) · 155 unmodified lines | |||
| 156 | * Note, the proto and args passed in includes "__data" as the first parameter. | 156 | * Note, the proto and args passed in includes "__data" as the first parameter. |
| 157 | * The reason for this is to handle the "void" prototype. If a tracepoint | 157 | * The reason for this is to handle the "void" prototype. If a tracepoint |
| 158 | * has a "void" prototype, then it is invalid to declare a function | 158 | * has a "void" prototype, then it is invalid to declare a function |
| 159 | * as "(void *, void)". The DECLARE_TRACE_NOARGS() will pass in just | 159 | * as "(void *, void)". |
| 160 | * "void *data", where as the DECLARE_TRACE() will pass in "void *data, proto". | ||
| 161 | */ | 160 | */ |
| 162 | #define __DO_TRACE(tp, proto, args, cond, rcuidle) \ | 161 | #define __DO_TRACE(tp, proto, args, cond, rcuidle) \ |
| 163 | do { \ | 162 | do { \ |
| @@ -373,25 +372,6 @@ static inline struct tracepoint *tracepoint_ptr_deref(tracepoint_ptr_t *p) · 209 unmodified lines | |||
| 373 | # define __tracepoint_string | 372 | # define __tracepoint_string |
| 374 | #endif | 373 | #endif |
| 375 | 374 | ||
| 376 | /* | ||
| 377 | * The need for the DECLARE_TRACE_NOARGS() is to handle the prototype | ||
| 378 | * (void). "void" is a special value in a function prototype and can | ||
| 379 | * not be combined with other arguments. Since the DECLARE_TRACE() | ||
| 380 | * macro adds a data element at the beginning of the prototype, | ||
| 381 | * we need a way to differentiate "(void *data, proto)" from | ||
| 382 | * "(void *data, void)". The second prototype is invalid. | ||
| 383 | * | ||
| 384 | * DECLARE_TRACE_NOARGS() passes "void" as the tracepoint prototype | ||
| 385 | * and "void *__data" as the callback prototype. | ||
| 386 | * | ||
| 387 | * DECLARE_TRACE() passes "proto" as the tracepoint protoype and | ||
| 388 | * "void *__data, proto" as the callback prototype. | ||
| 389 | */ | ||
| 390 | #define DECLARE_TRACE_NOARGS(name) \ | ||
| 391 | __DECLARE_TRACE(name, void, , \ | ||
| 392 | cpu_online(raw_smp_processor_id()), \ | ||
| 393 | void *__data, __data) | ||
| 394 | |||
| 395 | #define DECLARE_TRACE(name, proto, args) \ | 375 | #define DECLARE_TRACE(name, proto, args) \ |
| 396 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ | 376 | __DECLARE_TRACE(name, PARAMS(proto), PARAMS(args), \ |
| 397 | cpu_online(raw_smp_processor_id()), \ | 377 | cpu_online(raw_smp_processor_id()), \ |
| @@ -66,7 +66,7 @@ struct tty_buffer { · 65 unmodified lines | |||
| 66 | int read; | 66 | int read; |
| 67 | int flags; | 67 | int flags; |
| 68 | /* Data points here */ | 68 | /* Data points here */ |
| 69 | unsigned long data[0]; | 69 | unsigned long data[]; |
| 70 | }; | 70 | }; |
| 71 | 71 | ||
| 72 | /* Values for .flags field of tty_buffer */ | 72 | /* Values for .flags field of tty_buffer */ |
| @@ -164,7 +164,7 @@ struct vdpa_config_ops { · 163 unmodified lines | |||
| 164 | u64 (*get_vq_state)(struct vdpa_device *vdev, u16 idx); | 164 | u64 (*get_vq_state)(struct vdpa_device *vdev, u16 idx); |
| 165 | 165 | ||
| 166 | /* Device ops */ | 166 | /* Device ops */ |
| 167 | u16 (*get_vq_align)(struct vdpa_device *vdev); | 167 | u32 (*get_vq_align)(struct vdpa_device *vdev); |
| 168 | u64 (*get_features)(struct vdpa_device *vdev); | 168 | u64 (*get_features)(struct vdpa_device *vdev); |
| 169 | int (*set_features)(struct vdpa_device *vdev, u64 features); | 169 | int (*set_features)(struct vdpa_device *vdev, u64 features); |
| 170 | void (*set_config_cb)(struct vdpa_device *vdev, | 170 | void (*set_config_cb)(struct vdpa_device *vdev, |
| @@ -1,5 +1,9 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #ifndef _LINUX_VERMAGIC_H | ||
| 3 | #define _LINUX_VERMAGIC_H | ||
| 4 | |||
| 2 | #include <generated/utsrelease.h> | 5 | #include <generated/utsrelease.h> |
| 6 | #include <asm/vermagic.h> | ||
| 3 | 7 | ||
| 4 | /* Simply sanity version stamp for modules. */ | 8 | /* Simply sanity version stamp for modules. */ |
| 5 | #ifdef CONFIG_SMP | 9 | #ifdef CONFIG_SMP |
| @@ -24,9 +28,6 @@ · 18 unmodified lines | |||
| 24 | #else | 28 | #else |
| 25 | #define MODULE_VERMAGIC_MODVERSIONS "" | 29 | #define MODULE_VERMAGIC_MODVERSIONS "" |
| 26 | #endif | 30 | #endif |
| 27 | #ifndef MODULE_ARCH_VERMAGIC | ||
| 28 | #define MODULE_ARCH_VERMAGIC "" | ||
| 29 | #endif | ||
| 30 | #ifdef RANDSTRUCT_PLUGIN | 31 | #ifdef RANDSTRUCT_PLUGIN |
| 31 | #include <generated/randomize_layout_hash.h> | 32 | #include <generated/randomize_layout_hash.h> |
| 32 | #define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED | 33 | #define MODULE_RANDSTRUCT_PLUGIN "RANDSTRUCT_PLUGIN_" RANDSTRUCT_HASHED_SEED |
| @@ -41,3 +42,4 @@ · 8 unmodified lines | |||
| 41 | MODULE_ARCH_VERMAGIC \ | 42 | MODULE_ARCH_VERMAGIC \ |
| 42 | MODULE_RANDSTRUCT_PLUGIN | 43 | MODULE_RANDSTRUCT_PLUGIN |
| 43 | 44 | ||
| 45 | #endif /* _LINUX_VERMAGIC_H */ | ||
| @@ -9,7 +9,6 @@ · 8 unmodified lines | |||
| 9 | #include <linux/device.h> | 9 | #include <linux/device.h> |
| 10 | #include <linux/mod_devicetable.h> | 10 | #include <linux/mod_devicetable.h> |
| 11 | #include <linux/gfp.h> | 11 | #include <linux/gfp.h> |
| 12 | #include <linux/vringh.h> | ||
| 13 | 12 | ||
| 14 | /** | 13 | /** |
| 15 | * virtqueue - a queue to register buffers for sending or receiving. | 14 | * virtqueue - a queue to register buffers for sending or receiving. |
| @@ -3,6 +3,8 @@ · 2 unmodified lines | |||
| 3 | #define _LINUX_VIRTIO_NET_H | 3 | #define _LINUX_VIRTIO_NET_H |
| 4 | 4 | ||
| 5 | #include <linux/if_vlan.h> | 5 | #include <linux/if_vlan.h> |
| 6 | #include <uapi/linux/tcp.h> | ||
| 7 | #include <uapi/linux/udp.h> | ||
| 6 | #include <uapi/linux/virtio_net.h> | 8 | #include <uapi/linux/virtio_net.h> |
| 7 | 9 | ||
| 8 | static inline int virtio_net_hdr_set_proto(struct sk_buff *skb, | 10 | static inline int virtio_net_hdr_set_proto(struct sk_buff *skb, |
| @@ -28,17 +30,25 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb, · 19 unmodified lines | |||
| 28 | bool little_endian) | 30 | bool little_endian) |
| 29 | { | 31 | { |
| 30 | unsigned int gso_type = 0; | 32 | unsigned int gso_type = 0; |
| 33 | unsigned int thlen = 0; | ||
| 34 | unsigned int ip_proto; | ||
| 31 | 35 | ||
| 32 | if (hdr->gso_type != VIRTIO_NET_HDR_GSO_NONE) { | 36 | if (hdr->gso_type != VIRTIO_NET_HDR_GSO_NONE) { |
| 33 | switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { | 37 | switch (hdr->gso_type & ~VIRTIO_NET_HDR_GSO_ECN) { |
| 34 | case VIRTIO_NET_HDR_GSO_TCPV4: | 38 | case VIRTIO_NET_HDR_GSO_TCPV4: |
| 35 | gso_type = SKB_GSO_TCPV4; | 39 | gso_type = SKB_GSO_TCPV4; |
| 40 | ip_proto = IPPROTO_TCP; | ||
| 41 | thlen = sizeof(struct tcphdr); | ||
| 36 | break; | 42 | break; |
| 37 | case VIRTIO_NET_HDR_GSO_TCPV6: | 43 | case VIRTIO_NET_HDR_GSO_TCPV6: |
| 38 | gso_type = SKB_GSO_TCPV6; | 44 | gso_type = SKB_GSO_TCPV6; |
| 45 | ip_proto = IPPROTO_TCP; | ||
| 46 | thlen = sizeof(struct tcphdr); | ||
| 39 | break; | 47 | break; |
| 40 | case VIRTIO_NET_HDR_GSO_UDP: | 48 | case VIRTIO_NET_HDR_GSO_UDP: |
| 41 | gso_type = SKB_GSO_UDP; | 49 | gso_type = SKB_GSO_UDP; |
| 50 | ip_proto = IPPROTO_UDP; | ||
| 51 | thlen = sizeof(struct udphdr); | ||
| 42 | break; | 52 | break; |
| 43 | default: | 53 | default: |
| 44 | return -EINVAL; | 54 | return -EINVAL; |
| @@ -57,16 +67,22 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb, · 12 unmodified lines | |||
| 57 | 67 | ||
| 58 | if (!skb_partial_csum_set(skb, start, off)) | 68 | if (!skb_partial_csum_set(skb, start, off)) |
| 59 | return -EINVAL; | 69 | return -EINVAL; |
| 70 | |||
| 71 | if (skb_transport_offset(skb) + thlen > skb_headlen(skb)) | ||
| 72 | return -EINVAL; | ||
| 60 | } else { | 73 | } else { |
| 61 | /* gso packets without NEEDS_CSUM do not set transport_offset. | 74 | /* gso packets without NEEDS_CSUM do not set transport_offset. |
| 62 | * probe and drop if does not match one of the above types. | 75 | * probe and drop if does not match one of the above types. |
| 63 | */ | 76 | */ |
| 64 | if (gso_type && skb->network_header) { | 77 | if (gso_type && skb->network_header) { |
| 78 | struct flow_keys_basic keys; | ||
| 79 | |||
| 65 | if (!skb->protocol) | 80 | if (!skb->protocol) |
| 66 | virtio_net_hdr_set_proto(skb, hdr); | 81 | virtio_net_hdr_set_proto(skb, hdr); |
| 67 | retry: | 82 | retry: |
| 68 | skb_probe_transport_header(skb); | 83 | if (!skb_flow_dissect_flow_keys_basic(NULL, skb, &keys, |
| 69 | if (!skb_transport_header_was_set(skb)) { | 84 | NULL, 0, 0, 0, |
| 85 | 0)) { | ||
| 70 | /* UFO does not specify ipv4 or 6: try both */ | 86 | /* UFO does not specify ipv4 or 6: try both */ |
| 71 | if (gso_type & SKB_GSO_UDP && | 87 | if (gso_type & SKB_GSO_UDP && |
| 72 | skb->protocol == htons(ETH_P_IP)) { | 88 | skb->protocol == htons(ETH_P_IP)) { |
| @@ -75,6 +91,12 @@ retry: · 2 unmodified lines | |||
| 75 | } | 91 | } |
| 76 | return -EINVAL; | 92 | return -EINVAL; |
| 77 | } | 93 | } |
| 94 | |||
| 95 | if (keys.control.thoff + thlen > skb_headlen(skb) || | ||
| 96 | keys.basic.ip_proto != ip_proto) | ||
| 97 | return -EINVAL; | ||
| 98 | |||
| 99 | skb_set_transport_header(skb, keys.control.thoff); | ||
| 78 | } | 100 | } |
| 79 | } | 101 | } |
| 80 | 102 | ||
| @@ -48,6 +48,7 @@ struct virtio_vsock_pkt { · 47 unmodified lines | |||
| 48 | u32 len; | 48 | u32 len; |
| 49 | u32 off; | 49 | u32 off; |
| 50 | bool reply; | 50 | bool reply; |
| 51 | bool tap_delivered; | ||
| 51 | }; | 52 | }; |
| 52 | 53 | ||
| 53 | struct virtio_vsock_pkt_info { | 54 | struct virtio_vsock_pkt_info { |
| @@ -137,7 +137,7 @@ extern void vunmap(const void *addr); · 136 unmodified lines | |||
| 137 | 137 | ||
| 138 | extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, | 138 | extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, |
| 139 | unsigned long uaddr, void *kaddr, | 139 | unsigned long uaddr, void *kaddr, |
| 140 | unsigned long size); | 140 | unsigned long pgoff, unsigned long size); |
| 141 | 141 | ||
| 142 | extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, | 142 | extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr, |
| 143 | unsigned long pgoff); | 143 | unsigned long pgoff); |
| @@ -14,8 +14,10 @@ · 13 unmodified lines | |||
| 14 | #include <linux/virtio_byteorder.h> | 14 | #include <linux/virtio_byteorder.h> |
| 15 | #include <linux/uio.h> | 15 | #include <linux/uio.h> |
| 16 | #include <linux/slab.h> | 16 | #include <linux/slab.h> |
| 17 | #if IS_REACHABLE(CONFIG_VHOST_IOTLB) | ||
| 17 | #include <linux/dma-direction.h> | 18 | #include <linux/dma-direction.h> |
| 18 | #include <linux/vhost_iotlb.h> | 19 | #include <linux/vhost_iotlb.h> |
| 20 | #endif | ||
| 19 | #include <asm/barrier.h> | 21 | #include <asm/barrier.h> |
| 20 | 22 | ||
| 21 | /* virtio_ring with information needed for host access. */ | 23 | /* virtio_ring with information needed for host access. */ |
| @@ -254,6 +256,8 @@ static inline __virtio64 cpu_to_vringh64(const struct vringh *vrh, u64 val) · 232 unmodified lines | |||
| 254 | return __cpu_to_virtio64(vringh_is_little_endian(vrh), val); | 256 | return __cpu_to_virtio64(vringh_is_little_endian(vrh), val); |
| 255 | } | 257 | } |
| 256 | 258 | ||
| 259 | #if IS_REACHABLE(CONFIG_VHOST_IOTLB) | ||
| 260 | |||
| 257 | void vringh_set_iotlb(struct vringh *vrh, struct vhost_iotlb *iotlb); | 261 | void vringh_set_iotlb(struct vringh *vrh, struct vhost_iotlb *iotlb); |
| 258 | 262 | ||
| 259 | int vringh_init_iotlb(struct vringh *vrh, u64 features, | 263 | int vringh_init_iotlb(struct vringh *vrh, u64 features, |
| @@ -284,4 +288,6 @@ void vringh_notify_disable_iotlb(struct vringh *vrh); · 24 unmodified lines | |||
| 284 | 288 | ||
| 285 | int vringh_need_notify_iotlb(struct vringh *vrh); | 289 | int vringh_need_notify_iotlb(struct vringh *vrh); |
| 286 | 290 | ||
| 291 | #endif /* CONFIG_VHOST_IOTLB */ | ||
| 292 | |||
| 287 | #endif /* _LINUX_VRINGH_H */ | 293 | #endif /* _LINUX_VRINGH_H */ |
| @@ -73,7 +73,7 @@ struct simple_xattr { · 72 unmodified lines | |||
| 73 | struct list_head list; | 73 | struct list_head list; |
| 74 | char *name; | 74 | char *name; |
| 75 | size_t size; | 75 | size_t size; |
| 76 | char value[0]; | 76 | char value[]; |
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | /* | 79 | /* |