Showing the changes to include/linux (24 of 682 files). Show all
Unified · Split
| @@ -656,11 +656,11 @@ void bpf_map_put_with_uref(struct bpf_map *map); · 655 unmodified lines | |||
| 656 | void bpf_map_put(struct bpf_map *map); | 656 | void bpf_map_put(struct bpf_map *map); |
| 657 | int bpf_map_charge_memlock(struct bpf_map *map, u32 pages); | 657 | int bpf_map_charge_memlock(struct bpf_map *map, u32 pages); |
| 658 | void bpf_map_uncharge_memlock(struct bpf_map *map, u32 pages); | 658 | void bpf_map_uncharge_memlock(struct bpf_map *map, u32 pages); |
| 659 | int bpf_map_charge_init(struct bpf_map_memory *mem, size_t size); | 659 | int bpf_map_charge_init(struct bpf_map_memory *mem, u64 size); |
| 660 | void bpf_map_charge_finish(struct bpf_map_memory *mem); | 660 | void bpf_map_charge_finish(struct bpf_map_memory *mem); |
| 661 | void bpf_map_charge_move(struct bpf_map_memory *dst, | 661 | void bpf_map_charge_move(struct bpf_map_memory *dst, |
| 662 | struct bpf_map_memory *src); | 662 | struct bpf_map_memory *src); |
| 663 | void *bpf_map_area_alloc(size_t size, int numa_node); | 663 | void *bpf_map_area_alloc(u64 size, int numa_node); |
| 664 | void bpf_map_area_free(void *base); | 664 | void bpf_map_area_free(void *base); |
| 665 | void bpf_map_init_from_attr(struct bpf_map *map, union bpf_attr *attr); | 665 | void bpf_map_init_from_attr(struct bpf_map *map, union bpf_attr *attr); |
| 666 | 666 | ||
| @@ -204,6 +204,12 @@ static inline int ddebug_dyndbg_module_param_cb(char *param, char *val, · 203 unmodified lines | |||
| 204 | do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0) | 204 | do { if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); } while (0) |
| 205 | #define dynamic_dev_dbg(dev, fmt, ...) \ | 205 | #define dynamic_dev_dbg(dev, fmt, ...) \ |
| 206 | do { if (0) dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); } while (0) | 206 | do { if (0) dev_printk(KERN_DEBUG, dev, fmt, ##__VA_ARGS__); } while (0) |
| 207 | #define dynamic_hex_dump(prefix_str, prefix_type, rowsize, \ | ||
| 208 | groupsize, buf, len, ascii) \ | ||
| 209 | do { if (0) \ | ||
| 210 | print_hex_dump(KERN_DEBUG, prefix_str, prefix_type, \ | ||
| 211 | rowsize, groupsize, buf, len, ascii); \ | ||
| 212 | } while (0) | ||
| 207 | #endif | 213 | #endif |
| 208 | 214 | ||
| 209 | #endif | 215 | #endif |
| @@ -1579,9 +1579,22 @@ char *efi_convert_cmdline(efi_system_table_t *sys_table_arg, · 1578 unmodified lines | |||
| 1579 | efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, | 1579 | efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, |
| 1580 | struct efi_boot_memmap *map); | 1580 | struct efi_boot_memmap *map); |
| 1581 | 1581 | ||
| 1582 | efi_status_t efi_low_alloc_above(efi_system_table_t *sys_table_arg, | ||
| 1583 | unsigned long size, unsigned long align, | ||
| 1584 | unsigned long *addr, unsigned long min); | ||
| 1585 | |||
| 1586 | static inline | ||
| 1582 | efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg, | 1587 | efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg, |
| 1583 | unsigned long size, unsigned long align, | 1588 | unsigned long size, unsigned long align, |
| 1584 | unsigned long *addr); | 1589 | unsigned long *addr) |
| 1590 | { | ||
| 1591 | /* | ||
| 1592 | * Don't allocate at 0x0. It will confuse code that | ||
| 1593 | * checks pointers against NULL. Skip the first 8 | ||
| 1594 | * bytes so we start at a nice even number. | ||
| 1595 | */ | ||
| 1596 | return efi_low_alloc_above(sys_table_arg, size, align, addr, 0x8); | ||
| 1597 | } | ||
| 1585 | 1598 | ||
| 1586 | efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, | 1599 | efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, |
| 1587 | unsigned long size, unsigned long align, | 1600 | unsigned long size, unsigned long align, |
| @@ -1592,7 +1605,8 @@ efi_status_t efi_relocate_kernel(efi_system_table_t *sys_table_arg, · 4 unmodified lines | |||
| 1592 | unsigned long image_size, | 1605 | unsigned long image_size, |
| 1593 | unsigned long alloc_size, | 1606 | unsigned long alloc_size, |
| 1594 | unsigned long preferred_addr, | 1607 | unsigned long preferred_addr, |
| 1595 | unsigned long alignment); | 1608 | unsigned long alignment, |
| 1609 | unsigned long min_addr); | ||
| 1596 | 1610 | ||
| 1597 | efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, | 1611 | efi_status_t handle_cmdline_files(efi_system_table_t *sys_table_arg, |
| 1598 | efi_loaded_image_t *image, | 1612 | efi_loaded_image_t *image, |
| @@ -1099,7 +1099,6 @@ static inline void bpf_get_prog_name(const struct bpf_prog *prog, char *sym) · 1098 unmodified lines | |||
| 1099 | 1099 | ||
| 1100 | #endif /* CONFIG_BPF_JIT */ | 1100 | #endif /* CONFIG_BPF_JIT */ |
| 1101 | 1101 | ||
| 1102 | void bpf_prog_kallsyms_del_subprogs(struct bpf_prog *fp); | ||
| 1103 | void bpf_prog_kallsyms_del_all(struct bpf_prog *fp); | 1102 | void bpf_prog_kallsyms_del_all(struct bpf_prog *fp); |
| 1104 | 1103 | ||
| 1105 | #define BPF_ANC BIT(15) | 1104 | #define BPF_ANC BIT(15) |
| @@ -325,6 +325,29 @@ static inline bool gfpflags_allow_blocking(const gfp_t gfp_flags) · 324 unmodified lines | |||
| 325 | return !!(gfp_flags & __GFP_DIRECT_RECLAIM); | 325 | return !!(gfp_flags & __GFP_DIRECT_RECLAIM); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | /** | ||
| 329 | * gfpflags_normal_context - is gfp_flags a normal sleepable context? | ||
| 330 | * @gfp_flags: gfp_flags to test | ||
| 331 | * | ||
| 332 | * Test whether @gfp_flags indicates that the allocation is from the | ||
| 333 | * %current context and allowed to sleep. | ||
| 334 | * | ||
| 335 | * An allocation being allowed to block doesn't mean it owns the %current | ||
| 336 | * context. When direct reclaim path tries to allocate memory, the | ||
| 337 | * allocation context is nested inside whatever %current was doing at the | ||
| 338 | * time of the original allocation. The nested allocation may be allowed | ||
| 339 | * to block but modifying anything %current owns can corrupt the outer | ||
| 340 | * context's expectations. | ||
| 341 | * | ||
| 342 | * %true result from this function indicates that the allocation context | ||
| 343 | * can sleep and use anything that's associated with %current. | ||
| 344 | */ | ||
| 345 | static inline bool gfpflags_normal_context(const gfp_t gfp_flags) | ||
| 346 | { | ||
| 347 | return (gfp_flags & (__GFP_DIRECT_RECLAIM | __GFP_MEMALLOC)) == | ||
| 348 | __GFP_DIRECT_RECLAIM; | ||
| 349 | } | ||
| 350 | |||
| 328 | #ifdef CONFIG_HIGHMEM | 351 | #ifdef CONFIG_HIGHMEM |
| 329 | #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM | 352 | #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM |
| 330 | #else | 353 | #else |
| @@ -185,7 +185,7 @@ static inline void idr_preload_end(void) · 184 unmodified lines | |||
| 185 | * is convenient for a "not found" value. | 185 | * is convenient for a "not found" value. |
| 186 | */ | 186 | */ |
| 187 | #define idr_for_each_entry(idr, entry, id) \ | 187 | #define idr_for_each_entry(idr, entry, id) \ |
| 188 | for (id = 0; ((entry) = idr_get_next(idr, &(id))) != NULL; ++id) | 188 | for (id = 0; ((entry) = idr_get_next(idr, &(id))) != NULL; id += 1U) |
| 189 | 189 | ||
| 190 | /** | 190 | /** |
| 191 | * idr_for_each_entry_ul() - Iterate over an IDR's elements of a given type. | 191 | * idr_for_each_entry_ul() - Iterate over an IDR's elements of a given type. |
| @@ -29,7 +29,6 @@ struct macvlan_dev { · 28 unmodified lines | |||
| 29 | netdev_features_t set_features; | 29 | netdev_features_t set_features; |
| 30 | enum macvlan_mode mode; | 30 | enum macvlan_mode mode; |
| 31 | u16 flags; | 31 | u16 flags; |
| 32 | int nest_level; | ||
| 33 | unsigned int macaddr_count; | 32 | unsigned int macaddr_count; |
| 34 | #ifdef CONFIG_NET_POLL_CONTROLLER | 33 | #ifdef CONFIG_NET_POLL_CONTROLLER |
| 35 | struct netpoll *netpoll; | 34 | struct netpoll *netpoll; |
| @@ -223,6 +223,7 @@ struct team { · 222 unmodified lines | |||
| 223 | atomic_t count_pending; | 223 | atomic_t count_pending; |
| 224 | struct delayed_work dw; | 224 | struct delayed_work dw; |
| 225 | } mcast_rejoin; | 225 | } mcast_rejoin; |
| 226 | struct lock_class_key team_lock_key; | ||
| 226 | long mode_priv[TEAM_MODE_PRIV_LONGS]; | 227 | long mode_priv[TEAM_MODE_PRIV_LONGS]; |
| 227 | }; | 228 | }; |
| 228 | 229 | ||
| @@ -182,7 +182,6 @@ struct vlan_dev_priv { · 181 unmodified lines | |||
| 182 | #ifdef CONFIG_NET_POLL_CONTROLLER | 182 | #ifdef CONFIG_NET_POLL_CONTROLLER |
| 183 | struct netpoll *netpoll; | 183 | struct netpoll *netpoll; |
| 184 | #endif | 184 | #endif |
| 185 | unsigned int nest_level; | ||
| 186 | }; | 185 | }; |
| 187 | 186 | ||
| 188 | static inline struct vlan_dev_priv *vlan_dev_priv(const struct net_device *dev) | 187 | static inline struct vlan_dev_priv *vlan_dev_priv(const struct net_device *dev) |
| @@ -221,11 +220,6 @@ extern void vlan_vids_del_by_dev(struct net_device *dev, · 32 unmodified lines | |||
| 221 | 220 | ||
| 222 | extern bool vlan_uses_dev(const struct net_device *dev); | 221 | extern bool vlan_uses_dev(const struct net_device *dev); |
| 223 | 222 | ||
| 224 | static inline int vlan_get_encap_level(struct net_device *dev) | ||
| 225 | { | ||
| 226 | BUG_ON(!is_vlan_dev(dev)); | ||
| 227 | return vlan_dev_priv(dev)->nest_level; | ||
| 228 | } | ||
| 229 | #else | 223 | #else |
| 230 | static inline struct net_device * | 224 | static inline struct net_device * |
| 231 | __vlan_find_dev_deep_rcu(struct net_device *real_dev, | 225 | __vlan_find_dev_deep_rcu(struct net_device *real_dev, |
| @@ -295,11 +289,6 @@ static inline bool vlan_uses_dev(const struct net_device *dev) · 63 unmodified lines | |||
| 295 | { | 289 | { |
| 296 | return false; | 290 | return false; |
| 297 | } | 291 | } |
| 298 | static inline int vlan_get_encap_level(struct net_device *dev) | ||
| 299 | { | ||
| 300 | BUG(); | ||
| 301 | return 0; | ||
| 302 | } | ||
| 303 | #endif | 292 | #endif |
| 304 | 293 | ||
| 305 | /** | 294 | /** |
| @@ -1545,9 +1545,8 @@ struct mlx5_ifc_extended_dest_format_bits { · 1544 unmodified lines | |||
| 1545 | }; | 1545 | }; |
| 1546 | 1546 | ||
| 1547 | union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits { | 1547 | union mlx5_ifc_dest_format_struct_flow_counter_list_auto_bits { |
| 1548 | struct mlx5_ifc_dest_format_struct_bits dest_format_struct; | 1548 | struct mlx5_ifc_extended_dest_format_bits extended_dest_format; |
| 1549 | struct mlx5_ifc_flow_counter_list_bits flow_counter_list; | 1549 | struct mlx5_ifc_flow_counter_list_bits flow_counter_list; |
| 1550 | u8 reserved_at_0[0x40]; | ||
| 1551 | }; | 1550 | }; |
| 1552 | 1551 | ||
| 1553 | struct mlx5_ifc_fte_match_param_bits { | 1552 | struct mlx5_ifc_fte_match_param_bits { |
| @@ -695,11 +695,6 @@ static inline void *kvcalloc(size_t n, size_t size, gfp_t flags) · 694 unmodified lines | |||
| 695 | 695 | ||
| 696 | extern void kvfree(const void *addr); | 696 | extern void kvfree(const void *addr); |
| 697 | 697 | ||
| 698 | static inline atomic_t *compound_mapcount_ptr(struct page *page) | ||
| 699 | { | ||
| 700 | return &page[1].compound_mapcount; | ||
| 701 | } | ||
| 702 | |||
| 703 | static inline int compound_mapcount(struct page *page) | 698 | static inline int compound_mapcount(struct page *page) |
| 704 | { | 699 | { |
| 705 | VM_BUG_ON_PAGE(!PageCompound(page), page); | 700 | VM_BUG_ON_PAGE(!PageCompound(page), page); |
| @@ -221,6 +221,11 @@ struct page { · 220 unmodified lines | |||
| 221 | #endif | 221 | #endif |
| 222 | } _struct_page_alignment; | 222 | } _struct_page_alignment; |
| 223 | 223 | ||
| 224 | static inline atomic_t *compound_mapcount_ptr(struct page *page) | ||
| 225 | { | ||
| 226 | return &page[1].compound_mapcount; | ||
| 227 | } | ||
| 228 | |||
| 224 | /* | 229 | /* |
| 225 | * Used for sizing the vmemmap region on some architectures | 230 | * Used for sizing the vmemmap region on some architectures |
| 226 | */ | 231 | */ |
| @@ -925,6 +925,7 @@ struct dev_ifalias { · 924 unmodified lines | |||
| 925 | struct devlink; | 925 | struct devlink; |
| 926 | struct tlsdev_ops; | 926 | struct tlsdev_ops; |
| 927 | 927 | ||
| 928 | |||
| 928 | /* | 929 | /* |
| 929 | * This structure defines the management hooks for network devices. | 930 | * This structure defines the management hooks for network devices. |
| 930 | * The following hooks can be defined; unless noted otherwise, they are | 931 | * The following hooks can be defined; unless noted otherwise, they are |
| @@ -1421,7 +1422,6 @@ struct net_device_ops { · 490 unmodified lines | |||
| 1421 | void (*ndo_dfwd_del_station)(struct net_device *pdev, | 1422 | void (*ndo_dfwd_del_station)(struct net_device *pdev, |
| 1422 | void *priv); | 1423 | void *priv); |
| 1423 | 1424 | ||
| 1424 | int (*ndo_get_lock_subclass)(struct net_device *dev); | ||
| 1425 | int (*ndo_set_tx_maxrate)(struct net_device *dev, | 1425 | int (*ndo_set_tx_maxrate)(struct net_device *dev, |
| 1426 | int queue_index, | 1426 | int queue_index, |
| 1427 | u32 maxrate); | 1427 | u32 maxrate); |
| @@ -1649,6 +1649,8 @@ enum netdev_priv_flags { · 221 unmodified lines | |||
| 1649 | * @perm_addr: Permanent hw address | 1649 | * @perm_addr: Permanent hw address |
| 1650 | * @addr_assign_type: Hw address assignment type | 1650 | * @addr_assign_type: Hw address assignment type |
| 1651 | * @addr_len: Hardware address length | 1651 | * @addr_len: Hardware address length |
| 1652 | * @upper_level: Maximum depth level of upper devices. | ||
| 1653 | * @lower_level: Maximum depth level of lower devices. | ||
| 1652 | * @neigh_priv_len: Used in neigh_alloc() | 1654 | * @neigh_priv_len: Used in neigh_alloc() |
| 1653 | * @dev_id: Used to differentiate devices that share | 1655 | * @dev_id: Used to differentiate devices that share |
| 1654 | * the same link layer address | 1656 | * the same link layer address |
| @@ -1758,9 +1760,13 @@ enum netdev_priv_flags { · 103 unmodified lines | |||
| 1758 | * @phydev: Physical device may attach itself | 1760 | * @phydev: Physical device may attach itself |
| 1759 | * for hardware timestamping | 1761 | * for hardware timestamping |
| 1760 | * @sfp_bus: attached &struct sfp_bus structure. | 1762 | * @sfp_bus: attached &struct sfp_bus structure. |
| 1761 | * | 1763 | * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock |
| 1762 | * @qdisc_tx_busylock: lockdep class annotating Qdisc->busylock spinlock | 1764 | spinlock |
| 1763 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount | 1765 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount |
| 1766 | * @qdisc_xmit_lock_key: lockdep class annotating | ||
| 1767 | * netdev_queue->_xmit_lock spinlock | ||
| 1768 | * @addr_list_lock_key: lockdep class annotating | ||
| 1769 | * net_device->addr_list_lock spinlock | ||
| 1764 | * | 1770 | * |
| 1765 | * @proto_down: protocol port state information can be sent to the | 1771 | * @proto_down: protocol port state information can be sent to the |
| 1766 | * switch driver and used to set the phys state of the | 1772 | * switch driver and used to set the phys state of the |
| @@ -1875,6 +1881,8 @@ struct net_device { · 108 unmodified lines | |||
| 1875 | unsigned char perm_addr[MAX_ADDR_LEN]; | 1881 | unsigned char perm_addr[MAX_ADDR_LEN]; |
| 1876 | unsigned char addr_assign_type; | 1882 | unsigned char addr_assign_type; |
| 1877 | unsigned char addr_len; | 1883 | unsigned char addr_len; |
| 1884 | unsigned char upper_level; | ||
| 1885 | unsigned char lower_level; | ||
| 1878 | unsigned short neigh_priv_len; | 1886 | unsigned short neigh_priv_len; |
| 1879 | unsigned short dev_id; | 1887 | unsigned short dev_id; |
| 1880 | unsigned short dev_port; | 1888 | unsigned short dev_port; |
| @@ -2045,8 +2053,10 @@ struct net_device { · 164 unmodified lines | |||
| 2045 | #endif | 2053 | #endif |
| 2046 | struct phy_device *phydev; | 2054 | struct phy_device *phydev; |
| 2047 | struct sfp_bus *sfp_bus; | 2055 | struct sfp_bus *sfp_bus; |
| 2048 | struct lock_class_key *qdisc_tx_busylock; | 2056 | struct lock_class_key qdisc_tx_busylock_key; |
| 2049 | struct lock_class_key *qdisc_running_key; | 2057 | struct lock_class_key qdisc_running_key; |
| 2058 | struct lock_class_key qdisc_xmit_lock_key; | ||
| 2059 | struct lock_class_key addr_list_lock_key; | ||
| 2050 | bool proto_down; | 2060 | bool proto_down; |
| 2051 | unsigned wol_enabled:1; | 2061 | unsigned wol_enabled:1; |
| 2052 | }; | 2062 | }; |
| @@ -2124,23 +2134,6 @@ static inline void netdev_for_each_tx_queue(struct net_device *dev, · 71 unmodified lines | |||
| 2124 | f(dev, &dev->_tx[i], arg); | 2134 | f(dev, &dev->_tx[i], arg); |
| 2125 | } | 2135 | } |
| 2126 | 2136 | ||
| 2127 | #define netdev_lockdep_set_classes(dev) \ | ||
| 2128 | { \ | ||
| 2129 | static struct lock_class_key qdisc_tx_busylock_key; \ | ||
| 2130 | static struct lock_class_key qdisc_running_key; \ | ||
| 2131 | static struct lock_class_key qdisc_xmit_lock_key; \ | ||
| 2132 | static struct lock_class_key dev_addr_list_lock_key; \ | ||
| 2133 | unsigned int i; \ | ||
| 2134 | \ | ||
| 2135 | (dev)->qdisc_tx_busylock = &qdisc_tx_busylock_key; \ | ||
| 2136 | (dev)->qdisc_running_key = &qdisc_running_key; \ | ||
| 2137 | lockdep_set_class(&(dev)->addr_list_lock, \ | ||
| 2138 | &dev_addr_list_lock_key); \ | ||
| 2139 | for (i = 0; i < (dev)->num_tx_queues; i++) \ | ||
| 2140 | lockdep_set_class(&(dev)->_tx[i]._xmit_lock, \ | ||
| 2141 | &qdisc_xmit_lock_key); \ | ||
| 2142 | } | ||
| 2143 | |||
| 2144 | u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb, | 2137 | u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb, |
| 2145 | struct net_device *sb_dev); | 2138 | struct net_device *sb_dev); |
| 2146 | struct netdev_queue *netdev_core_pick_tx(struct net_device *dev, | 2139 | struct netdev_queue *netdev_core_pick_tx(struct net_device *dev, |
| @@ -3139,6 +3132,7 @@ static inline void netif_stop_queue(struct net_device *dev) · 992 unmodified lines | |||
| 3139 | } | 3132 | } |
| 3140 | 3133 | ||
| 3141 | void netif_tx_stop_all_queues(struct net_device *dev); | 3134 | void netif_tx_stop_all_queues(struct net_device *dev); |
| 3135 | void netdev_update_lockdep_key(struct net_device *dev); | ||
| 3142 | 3136 | ||
| 3143 | static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue) | 3137 | static inline bool netif_tx_queue_stopped(const struct netdev_queue *dev_queue) |
| 3144 | { | 3138 | { |
| @@ -4056,16 +4050,6 @@ static inline void netif_addr_lock(struct net_device *dev) · 911 unmodified lines | |||
| 4056 | spin_lock(&dev->addr_list_lock); | 4050 | spin_lock(&dev->addr_list_lock); |
| 4057 | } | 4051 | } |
| 4058 | 4052 | ||
| 4059 | static inline void netif_addr_lock_nested(struct net_device *dev) | ||
| 4060 | { | ||
| 4061 | int subclass = SINGLE_DEPTH_NESTING; | ||
| 4062 | |||
| 4063 | if (dev->netdev_ops->ndo_get_lock_subclass) | ||
| 4064 | subclass = dev->netdev_ops->ndo_get_lock_subclass(dev); | ||
| 4065 | |||
| 4066 | spin_lock_nested(&dev->addr_list_lock, subclass); | ||
| 4067 | } | ||
| 4068 | |||
| 4069 | static inline void netif_addr_lock_bh(struct net_device *dev) | 4053 | static inline void netif_addr_lock_bh(struct net_device *dev) |
| 4070 | { | 4054 | { |
| 4071 | spin_lock_bh(&dev->addr_list_lock); | 4055 | spin_lock_bh(&dev->addr_list_lock); |
| @@ -4329,6 +4313,16 @@ int netdev_master_upper_dev_link(struct net_device *dev, · 257 unmodified lines | |||
| 4329 | struct netlink_ext_ack *extack); | 4313 | struct netlink_ext_ack *extack); |
| 4330 | void netdev_upper_dev_unlink(struct net_device *dev, | 4314 | void netdev_upper_dev_unlink(struct net_device *dev, |
| 4331 | struct net_device *upper_dev); | 4315 | struct net_device *upper_dev); |
| 4316 | int netdev_adjacent_change_prepare(struct net_device *old_dev, | ||
| 4317 | struct net_device *new_dev, | ||
| 4318 | struct net_device *dev, | ||
| 4319 | struct netlink_ext_ack *extack); | ||
| 4320 | void netdev_adjacent_change_commit(struct net_device *old_dev, | ||
| 4321 | struct net_device *new_dev, | ||
| 4322 | struct net_device *dev); | ||
| 4323 | void netdev_adjacent_change_abort(struct net_device *old_dev, | ||
| 4324 | struct net_device *new_dev, | ||
| 4325 | struct net_device *dev); | ||
| 4332 | void netdev_adjacent_rename_links(struct net_device *dev, char *oldname); | 4326 | void netdev_adjacent_rename_links(struct net_device *dev, char *oldname); |
| 4333 | void *netdev_lower_dev_get_private(struct net_device *dev, | 4327 | void *netdev_lower_dev_get_private(struct net_device *dev, |
| 4334 | struct net_device *lower_dev); | 4328 | struct net_device *lower_dev); |
| @@ -4340,7 +4334,6 @@ void netdev_lower_state_changed(struct net_device *lower_dev, · 5 unmodified lines | |||
| 4340 | extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly; | 4334 | extern u8 netdev_rss_key[NETDEV_RSS_KEY_LEN] __read_mostly; |
| 4341 | void netdev_rss_key_fill(void *buffer, size_t len); | 4335 | void netdev_rss_key_fill(void *buffer, size_t len); |
| 4342 | 4336 | ||
| 4343 | int dev_get_nest_level(struct net_device *dev); | ||
| 4344 | int skb_checksum_help(struct sk_buff *skb); | 4337 | int skb_checksum_help(struct sk_buff *skb); |
| 4345 | int skb_crc32c_csum_help(struct sk_buff *skb); | 4338 | int skb_crc32c_csum_help(struct sk_buff *skb); |
| 4346 | int skb_csum_hwoffload_help(struct sk_buff *skb, | 4339 | int skb_csum_hwoffload_help(struct sk_buff *skb, |
| @@ -622,12 +622,28 @@ static inline int PageTransCompound(struct page *page) · 621 unmodified lines | |||
| 622 | * | 622 | * |
| 623 | * Unlike PageTransCompound, this is safe to be called only while | 623 | * Unlike PageTransCompound, this is safe to be called only while |
| 624 | * split_huge_pmd() cannot run from under us, like if protected by the | 624 | * split_huge_pmd() cannot run from under us, like if protected by the |
| 625 | * MMU notifier, otherwise it may result in page->_mapcount < 0 false | 625 | * MMU notifier, otherwise it may result in page->_mapcount check false |
| 626 | * positives. | 626 | * positives. |
| 627 | * | ||
| 628 | * We have to treat page cache THP differently since every subpage of it | ||
| 629 | * would get _mapcount inc'ed once it is PMD mapped. But, it may be PTE | ||
| 630 | * mapped in the current process so comparing subpage's _mapcount to | ||
| 631 | * compound_mapcount to filter out PTE mapped case. | ||
| 627 | */ | 632 | */ |
| 628 | static inline int PageTransCompoundMap(struct page *page) | 633 | static inline int PageTransCompoundMap(struct page *page) |
| 629 | { | 634 | { |
| 630 | return PageTransCompound(page) && atomic_read(&page->_mapcount) < 0; | 635 | struct page *head; |
| 636 | |||
| 637 | if (!PageTransCompound(page)) | ||
| 638 | return 0; | ||
| 639 | |||
| 640 | if (PageAnon(page)) | ||
| 641 | return atomic_read(&page->_mapcount) < 0; | ||
| 642 | |||
| 643 | head = compound_head(page); | ||
| 644 | /* File THP is PMD mapped and not PTE mapped */ | ||
| 645 | return atomic_read(&page->_mapcount) == | ||
| 646 | atomic_read(compound_mapcount_ptr(head)); | ||
| 631 | } | 647 | } |
| 632 | 648 | ||
| 633 | /* | 649 | /* |
| @@ -51,7 +51,10 @@ struct sdma_script_start_addrs { · 50 unmodified lines | |||
| 51 | /* End of v2 array */ | 51 | /* End of v2 array */ |
| 52 | s32 zcanfd_2_mcu_addr; | 52 | s32 zcanfd_2_mcu_addr; |
| 53 | s32 zqspi_2_mcu_addr; | 53 | s32 zqspi_2_mcu_addr; |
| 54 | s32 mcu_2_ecspi_addr; | ||
| 54 | /* End of v3 array */ | 55 | /* End of v3 array */ |
| 56 | s32 mcu_2_zqspi_addr; | ||
| 57 | /* End of v4 array */ | ||
| 55 | }; | 58 | }; |
| 56 | 59 | ||
| 57 | /** | 60 | /** |
| @@ -315,24 +315,6 @@ radix_tree_iter_lookup(const struct radix_tree_root *root, · 314 unmodified lines | |||
| 315 | return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG); | 315 | return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG); |
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | /** | ||
| 319 | * radix_tree_iter_find - find a present entry | ||
| 320 | * @root: radix tree root | ||
| 321 | * @iter: iterator state | ||
| 322 | * @index: start location | ||
| 323 | * | ||
| 324 | * This function returns the slot containing the entry with the lowest index | ||
| 325 | * which is at least @index. If @index is larger than any present entry, this | ||
| 326 | * function returns NULL. The @iter is updated to describe the entry found. | ||
| 327 | */ | ||
| 328 | static inline void __rcu ** | ||
| 329 | radix_tree_iter_find(const struct radix_tree_root *root, | ||
| 330 | struct radix_tree_iter *iter, unsigned long index) | ||
| 331 | { | ||
| 332 | radix_tree_iter_init(iter, index); | ||
| 333 | return radix_tree_next_chunk(root, iter, 0); | ||
| 334 | } | ||
| 335 | |||
| 336 | /** | 318 | /** |
| 337 | * radix_tree_iter_retry - retry this chunk of the iteration | 319 | * radix_tree_iter_retry - retry this chunk of the iteration |
| 338 | * @iter: iterator state | 320 | * @iter: iterator state |
| @@ -7,7 +7,7 @@ · 6 unmodified lines | |||
| 7 | struct reset_controller_dev; | 7 | struct reset_controller_dev; |
| 8 | 8 | ||
| 9 | /** | 9 | /** |
| 10 | * struct reset_control_ops | 10 | * struct reset_control_ops - reset controller driver callbacks |
| 11 | * | 11 | * |
| 12 | * @reset: for self-deasserting resets, does all necessary | 12 | * @reset: for self-deasserting resets, does all necessary |
| 13 | * things to reset the device | 13 | * things to reset the device |
| @@ -33,7 +33,7 @@ struct of_phandle_args; · 19 unmodified lines | |||
| 33 | * @provider: name of the reset controller device controlling this reset line | 33 | * @provider: name of the reset controller device controlling this reset line |
| 34 | * @index: ID of the reset controller in the reset controller device | 34 | * @index: ID of the reset controller in the reset controller device |
| 35 | * @dev_id: name of the device associated with this reset line | 35 | * @dev_id: name of the device associated with this reset line |
| 36 | * @con_id name of the reset line (can be NULL) | 36 | * @con_id: name of the reset line (can be NULL) |
| 37 | */ | 37 | */ |
| 38 | struct reset_control_lookup { | 38 | struct reset_control_lookup { |
| 39 | struct list_head list; | 39 | struct list_head list; |
| @@ -143,7 +143,7 @@ static inline int device_reset_optional(struct device *dev) · 142 unmodified lines | |||
| 143 | * If this function is called more than once for the same reset_control it will | 143 | * If this function is called more than once for the same reset_control it will |
| 144 | * return -EBUSY. | 144 | * return -EBUSY. |
| 145 | * | 145 | * |
| 146 | * See reset_control_get_shared for details on shared references to | 146 | * See reset_control_get_shared() for details on shared references to |
| 147 | * reset-controls. | 147 | * reset-controls. |
| 148 | * | 148 | * |
| 149 | * Use of id names is optional. | 149 | * Use of id names is optional. |
| @@ -105,6 +105,7 @@ enum lockdown_reason { · 104 unmodified lines | |||
| 105 | LOCKDOWN_NONE, | 105 | LOCKDOWN_NONE, |
| 106 | LOCKDOWN_MODULE_SIGNATURE, | 106 | LOCKDOWN_MODULE_SIGNATURE, |
| 107 | LOCKDOWN_DEV_MEM, | 107 | LOCKDOWN_DEV_MEM, |
| 108 | LOCKDOWN_EFI_TEST, | ||
| 108 | LOCKDOWN_KEXEC, | 109 | LOCKDOWN_KEXEC, |
| 109 | LOCKDOWN_HIBERNATION, | 110 | LOCKDOWN_HIBERNATION, |
| 110 | LOCKDOWN_PCI_ACCESS, | 111 | LOCKDOWN_PCI_ACCESS, |
| @@ -1354,7 +1354,8 @@ static inline __u32 skb_get_hash_flowi6(struct sk_buff *skb, const struct flowi6 · 1353 unmodified lines | |||
| 1354 | return skb->hash; | 1354 | return skb->hash; |
| 1355 | } | 1355 | } |
| 1356 | 1356 | ||
| 1357 | __u32 skb_get_hash_perturb(const struct sk_buff *skb, u32 perturb); | 1357 | __u32 skb_get_hash_perturb(const struct sk_buff *skb, |
| 1358 | const siphash_key_t *perturb); | ||
| 1358 | 1359 | ||
| 1359 | static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) | 1360 | static inline __u32 skb_get_hash_raw(const struct sk_buff *skb) |
| 1360 | { | 1361 | { |
| @@ -1494,6 +1495,19 @@ static inline int skb_queue_empty(const struct sk_buff_head *list) · 133 unmodified lines | |||
| 1494 | return list->next == (const struct sk_buff *) list; | 1495 | return list->next == (const struct sk_buff *) list; |
| 1495 | } | 1496 | } |
| 1496 | 1497 | ||
| 1498 | /** | ||
| 1499 | * skb_queue_empty_lockless - check if a queue is empty | ||
| 1500 | * @list: queue head | ||
| 1501 | * | ||
| 1502 | * Returns true if the queue is empty, false otherwise. | ||
| 1503 | * This variant can be used in lockless contexts. | ||
| 1504 | */ | ||
| 1505 | static inline bool skb_queue_empty_lockless(const struct sk_buff_head *list) | ||
| 1506 | { | ||
| 1507 | return READ_ONCE(list->next) == (const struct sk_buff *) list; | ||
| 1508 | } | ||
| 1509 | |||
| 1510 | |||
| 1497 | /** | 1511 | /** |
| 1498 | * skb_queue_is_last - check if skb is the last entry in the queue | 1512 | * skb_queue_is_last - check if skb is the last entry in the queue |
| 1499 | * @list: queue head | 1513 | * @list: queue head |
| @@ -1847,9 +1861,11 @@ static inline void __skb_insert(struct sk_buff *newsk, · 347 unmodified lines | |||
| 1847 | struct sk_buff *prev, struct sk_buff *next, | 1861 | struct sk_buff *prev, struct sk_buff *next, |
| 1848 | struct sk_buff_head *list) | 1862 | struct sk_buff_head *list) |
| 1849 | { | 1863 | { |
| 1850 | newsk->next = next; | 1864 | /* see skb_queue_empty_lockless() for the opposite READ_ONCE() */ |
| 1851 | newsk->prev = prev; | 1865 | WRITE_ONCE(newsk->next, next); |
| 1852 | next->prev = prev->next = newsk; | 1866 | WRITE_ONCE(newsk->prev, prev); |
| 1867 | WRITE_ONCE(next->prev, newsk); | ||
| 1868 | WRITE_ONCE(prev->next, newsk); | ||
| 1853 | list->qlen++; | 1869 | list->qlen++; |
| 1854 | } | 1870 | } |
| 1855 | 1871 | ||
| @@ -1860,11 +1876,11 @@ static inline void __skb_queue_splice(const struct sk_buff_head *list, · 4 unmodified lines | |||
| 1860 | struct sk_buff *first = list->next; | 1876 | struct sk_buff *first = list->next; |
| 1861 | struct sk_buff *last = list->prev; | 1877 | struct sk_buff *last = list->prev; |
| 1862 | 1878 | ||
| 1863 | first->prev = prev; | 1879 | WRITE_ONCE(first->prev, prev); |
| 1864 | prev->next = first; | 1880 | WRITE_ONCE(prev->next, first); |
| 1865 | 1881 | ||
| 1866 | last->next = next; | 1882 | WRITE_ONCE(last->next, next); |
| 1867 | next->prev = last; | 1883 | WRITE_ONCE(next->prev, last); |
| 1868 | } | 1884 | } |
| 1869 | 1885 | ||
| 1870 | /** | 1886 | /** |
| @@ -2005,8 +2021,8 @@ static inline void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list) · 134 unmodified lines | |||
| 2005 | next = skb->next; | 2021 | next = skb->next; |
| 2006 | prev = skb->prev; | 2022 | prev = skb->prev; |
| 2007 | skb->next = skb->prev = NULL; | 2023 | skb->next = skb->prev = NULL; |
| 2008 | next->prev = prev; | 2024 | WRITE_ONCE(next->prev, prev); |
| 2009 | prev->next = next; | 2025 | WRITE_ONCE(prev->next, next); |
| 2010 | } | 2026 | } |
| 2011 | 2027 | ||
| 2012 | /** | 2028 | /** |
| @@ -139,6 +139,11 @@ static inline void sk_msg_apply_bytes(struct sk_psock *psock, u32 bytes) · 138 unmodified lines | |||
| 139 | } | 139 | } |
| 140 | } | 140 | } |
| 141 | 141 | ||
| 142 | static inline u32 sk_msg_iter_dist(u32 start, u32 end) | ||
| 143 | { | ||
| 144 | return end >= start ? end - start : end + (MAX_MSG_FRAGS - start); | ||
| 145 | } | ||
| 146 | |||
| 142 | #define sk_msg_iter_var_prev(var) \ | 147 | #define sk_msg_iter_var_prev(var) \ |
| 143 | do { \ | 148 | do { \ |
| 144 | if (var == 0) \ | 149 | if (var == 0) \ |
| @@ -198,9 +203,7 @@ static inline u32 sk_msg_elem_used(const struct sk_msg *msg) · 53 unmodified lines | |||
| 198 | if (sk_msg_full(msg)) | 203 | if (sk_msg_full(msg)) |
| 199 | return MAX_MSG_FRAGS; | 204 | return MAX_MSG_FRAGS; |
| 200 | 205 | ||
| 201 | return msg->sg.end >= msg->sg.start ? | 206 | return sk_msg_iter_dist(msg->sg.start, msg->sg.end); |
| 202 | msg->sg.end - msg->sg.start : | ||
| 203 | msg->sg.end + (MAX_MSG_FRAGS - msg->sg.start); | ||
| 204 | } | 207 | } |
| 205 | 208 | ||
| 206 | static inline struct scatterlist *sk_msg_elem(struct sk_msg *msg, int which) | 209 | static inline struct scatterlist *sk_msg_elem(struct sk_msg *msg, int which) |
| @@ -263,7 +263,7 @@ struct ucred { · 262 unmodified lines | |||
| 263 | #define PF_MAX AF_MAX | 263 | #define PF_MAX AF_MAX |
| 264 | 264 | ||
| 265 | /* Maximum queue length specifiable by listen. */ | 265 | /* Maximum queue length specifiable by listen. */ |
| 266 | #define SOMAXCONN 128 | 266 | #define SOMAXCONN 4096 |
| 267 | 267 | ||
| 268 | /* Flags we can use with send/ and recv. | 268 | /* Flags we can use with send/ and recv. |
| 269 | Added those for 1003.1g not all are supported yet | 269 | Added those for 1003.1g not all are supported yet |
| @@ -64,6 +64,11 @@ static inline int xprt_setup_backchannel(struct rpc_xprt *xprt, · 63 unmodified lines | |||
| 64 | return 0; | 64 | return 0; |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | static inline void xprt_destroy_backchannel(struct rpc_xprt *xprt, | ||
| 68 | unsigned int max_reqs) | ||
| 69 | { | ||
| 70 | } | ||
| 71 | |||
| 67 | static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) | 72 | static inline bool svc_is_backchannel(const struct svc_rqst *rqstp) |
| 68 | { | 73 | { |
| 69 | return false; | 74 | return false; |
| @@ -48,7 +48,6 @@ struct virtio_vsock_sock { · 47 unmodified lines | |||
| 48 | 48 | ||
| 49 | struct virtio_vsock_pkt { | 49 | struct virtio_vsock_pkt { |
| 50 | struct virtio_vsock_hdr hdr; | 50 | struct virtio_vsock_hdr hdr; |
| 51 | struct work_struct work; | ||
| 52 | struct list_head list; | 51 | struct list_head list; |
| 53 | /* socket refcnt not held, only use for cancellation */ | 52 | /* socket refcnt not held, only use for cancellation */ |
| 54 | struct vsock_sock *vsk; | 53 | struct vsock_sock *vsk; |