msm needed rc6, so I just went and merged release (msm has been in drm-next outside of this tree)
Showing the changes to include/linux (28 of 666 files). Show all
Unified · Split
| @@ -160,6 +160,7 @@ static inline void copy_map_value(struct bpf_map *map, void *dst, void *src) · 159 unmodified lines | |||
| 160 | } | 160 | } |
| 161 | void copy_map_value_locked(struct bpf_map *map, void *dst, void *src, | 161 | void copy_map_value_locked(struct bpf_map *map, void *dst, void *src, |
| 162 | bool lock_src); | 162 | bool lock_src); |
| 163 | int bpf_obj_name_cpy(char *dst, const char *src, unsigned int size); | ||
| 163 | 164 | ||
| 164 | struct bpf_offload_dev; | 165 | struct bpf_offload_dev; |
| 165 | struct bpf_offloaded_map; | 166 | struct bpf_offloaded_map; |
| @@ -175,9 +175,10 @@ struct ceph_msg_data { · 174 unmodified lines | |||
| 175 | #endif /* CONFIG_BLOCK */ | 175 | #endif /* CONFIG_BLOCK */ |
| 176 | struct ceph_bvec_iter bvec_pos; | 176 | struct ceph_bvec_iter bvec_pos; |
| 177 | struct { | 177 | struct { |
| 178 | struct page **pages; /* NOT OWNER. */ | 178 | struct page **pages; |
| 179 | size_t length; /* total # bytes */ | 179 | size_t length; /* total # bytes */ |
| 180 | unsigned int alignment; /* first page */ | 180 | unsigned int alignment; /* first page */ |
| 181 | bool own_pages; | ||
| 181 | }; | 182 | }; |
| 182 | struct ceph_pagelist *pagelist; | 183 | struct ceph_pagelist *pagelist; |
| 183 | }; | 184 | }; |
| @@ -356,8 +357,8 @@ extern void ceph_con_keepalive(struct ceph_connection *con); · 172 unmodified lines | |||
| 356 | extern bool ceph_con_keepalive_expired(struct ceph_connection *con, | 357 | extern bool ceph_con_keepalive_expired(struct ceph_connection *con, |
| 357 | unsigned long interval); | 358 | unsigned long interval); |
| 358 | 359 | ||
| 359 | extern void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages, | 360 | void ceph_msg_data_add_pages(struct ceph_msg *msg, struct page **pages, |
| 360 | size_t length, size_t alignment); | 361 | size_t length, size_t alignment, bool own_pages); |
| 361 | extern void ceph_msg_data_add_pagelist(struct ceph_msg *msg, | 362 | extern void ceph_msg_data_add_pagelist(struct ceph_msg *msg, |
| 362 | struct ceph_pagelist *pagelist); | 363 | struct ceph_pagelist *pagelist); |
| 363 | #ifdef CONFIG_BLOCK | 364 | #ifdef CONFIG_BLOCK |
| @@ -37,6 +37,9 @@ int ceph_spg_compare(const struct ceph_spg *lhs, const struct ceph_spg *rhs); · 36 unmodified lines | |||
| 37 | #define CEPH_POOL_FLAG_HASHPSPOOL (1ULL << 0) /* hash pg seed and pool id | 37 | #define CEPH_POOL_FLAG_HASHPSPOOL (1ULL << 0) /* hash pg seed and pool id |
| 38 | together */ | 38 | together */ |
| 39 | #define CEPH_POOL_FLAG_FULL (1ULL << 1) /* pool is full */ | 39 | #define CEPH_POOL_FLAG_FULL (1ULL << 1) /* pool is full */ |
| 40 | #define CEPH_POOL_FLAG_FULL_QUOTA (1ULL << 10) /* pool ran out of quota, | ||
| 41 | will set FULL too */ | ||
| 42 | #define CEPH_POOL_FLAG_NEARFULL (1ULL << 11) /* pool is nearfull */ | ||
| 40 | 43 | ||
| 41 | struct ceph_pg_pool_info { | 44 | struct ceph_pg_pool_info { |
| 42 | struct rb_node node; | 45 | struct rb_node node; |
| @@ -304,5 +307,6 @@ extern struct ceph_pg_pool_info *ceph_pg_pool_by_id(struct ceph_osdmap *map, · 261 unmodified lines | |||
| 304 | 307 | ||
| 305 | extern const char *ceph_pg_pool_name_by_id(struct ceph_osdmap *map, u64 id); | 308 | extern const char *ceph_pg_pool_name_by_id(struct ceph_osdmap *map, u64 id); |
| 306 | extern int ceph_pg_poolid_by_name(struct ceph_osdmap *map, const char *name); | 309 | extern int ceph_pg_poolid_by_name(struct ceph_osdmap *map, const char *name); |
| 310 | u64 ceph_pg_pool_flags(struct ceph_osdmap *map, u64 id); | ||
| 307 | 311 | ||
| 308 | #endif | 312 | #endif |
| @@ -143,8 +143,10 @@ extern const char *ceph_osd_state_name(int s); · 142 unmodified lines | |||
| 143 | /* | 143 | /* |
| 144 | * osd map flag bits | 144 | * osd map flag bits |
| 145 | */ | 145 | */ |
| 146 | #define CEPH_OSDMAP_NEARFULL (1<<0) /* sync writes (near ENOSPC) */ | 146 | #define CEPH_OSDMAP_NEARFULL (1<<0) /* sync writes (near ENOSPC), |
| 147 | #define CEPH_OSDMAP_FULL (1<<1) /* no data writes (ENOSPC) */ | 147 | not set since ~luminous */ |
| 148 | #define CEPH_OSDMAP_FULL (1<<1) /* no data writes (ENOSPC), | ||
| 149 | not set since ~luminous */ | ||
| 148 | #define CEPH_OSDMAP_PAUSERD (1<<2) /* pause all reads */ | 150 | #define CEPH_OSDMAP_PAUSERD (1<<2) /* pause all reads */ |
| 149 | #define CEPH_OSDMAP_PAUSEWR (1<<3) /* pause all writes */ | 151 | #define CEPH_OSDMAP_PAUSEWR (1<<3) /* pause all writes */ |
| 150 | #define CEPH_OSDMAP_PAUSEREC (1<<4) /* pause recovery */ | 152 | #define CEPH_OSDMAP_PAUSEREC (1<<4) /* pause recovery */ |
| @@ -62,6 +62,7 @@ struct css_task_iter { · 61 unmodified lines | |||
| 62 | struct list_head *mg_tasks_head; | 62 | struct list_head *mg_tasks_head; |
| 63 | struct list_head *dying_tasks_head; | 63 | struct list_head *dying_tasks_head; |
| 64 | 64 | ||
| 65 | struct list_head *cur_tasks_head; | ||
| 65 | struct css_set *cur_cset; | 66 | struct css_set *cur_cset; |
| 66 | struct css_set *cur_dcset; | 67 | struct css_set *cur_dcset; |
| 67 | struct task_struct *cur_task; | 68 | struct task_struct *cur_task; |
| @@ -522,9 +522,9 @@ struct clk *clk_register_gate(struct device *dev, const char *name, · 521 unmodified lines | |||
| 522 | * @clk_gate_flags: gate-specific flags for this clock | 522 | * @clk_gate_flags: gate-specific flags for this clock |
| 523 | * @lock: shared register lock for this clock | 523 | * @lock: shared register lock for this clock |
| 524 | */ | 524 | */ |
| 525 | #define clk_hw_register_gate_parent_hw(dev, name, parent_name, flags, reg, \ | 525 | #define clk_hw_register_gate_parent_hw(dev, name, parent_hw, flags, reg, \ |
| 526 | bit_idx, clk_gate_flags, lock) \ | 526 | bit_idx, clk_gate_flags, lock) \ |
| 527 | __clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \ | 527 | __clk_hw_register_gate((dev), NULL, (name), NULL, (parent_hw), \ |
| 528 | NULL, (flags), (reg), (bit_idx), \ | 528 | NULL, (flags), (reg), (bit_idx), \ |
| 529 | (clk_gate_flags), (lock)) | 529 | (clk_gate_flags), (lock)) |
| 530 | /** | 530 | /** |
| @@ -539,10 +539,10 @@ struct clk *clk_register_gate(struct device *dev, const char *name, · 8 unmodified lines | |||
| 539 | * @clk_gate_flags: gate-specific flags for this clock | 539 | * @clk_gate_flags: gate-specific flags for this clock |
| 540 | * @lock: shared register lock for this clock | 540 | * @lock: shared register lock for this clock |
| 541 | */ | 541 | */ |
| 542 | #define clk_hw_register_gate_parent_data(dev, name, parent_name, flags, reg, \ | 542 | #define clk_hw_register_gate_parent_data(dev, name, parent_data, flags, reg, \ |
| 543 | bit_idx, clk_gate_flags, lock) \ | 543 | bit_idx, clk_gate_flags, lock) \ |
| 544 | __clk_hw_register_gate((dev), NULL, (name), (parent_name), NULL, \ | 544 | __clk_hw_register_gate((dev), NULL, (name), NULL, NULL, (parent_data), \ |
| 545 | NULL, (flags), (reg), (bit_idx), \ | 545 | (flags), (reg), (bit_idx), \ |
| 546 | (clk_gate_flags), (lock)) | 546 | (clk_gate_flags), (lock)) |
| 547 | void clk_unregister_gate(struct clk *clk); | 547 | void clk_unregister_gate(struct clk *clk); |
| 548 | void clk_hw_unregister_gate(struct clk_hw *hw); | 548 | void clk_hw_unregister_gate(struct clk_hw *hw); |
| @@ -69,19 +69,23 @@ struct dmar_pci_notify_info { · 68 unmodified lines | |||
| 69 | extern struct rw_semaphore dmar_global_lock; | 69 | extern struct rw_semaphore dmar_global_lock; |
| 70 | extern struct list_head dmar_drhd_units; | 70 | extern struct list_head dmar_drhd_units; |
| 71 | 71 | ||
| 72 | #define for_each_drhd_unit(drhd) \ | 72 | #define for_each_drhd_unit(drhd) \ |
| 73 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) | 73 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \ |
| 74 | dmar_rcu_check()) | ||
| 74 | 75 | ||
| 75 | #define for_each_active_drhd_unit(drhd) \ | 76 | #define for_each_active_drhd_unit(drhd) \ |
| 76 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \ | 77 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \ |
| 78 | dmar_rcu_check()) \ | ||
| 77 | if (drhd->ignored) {} else | 79 | if (drhd->ignored) {} else |
| 78 | 80 | ||
| 79 | #define for_each_active_iommu(i, drhd) \ | 81 | #define for_each_active_iommu(i, drhd) \ |
| 80 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \ | 82 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \ |
| 83 | dmar_rcu_check()) \ | ||
| 81 | if (i=drhd->iommu, drhd->ignored) {} else | 84 | if (i=drhd->iommu, drhd->ignored) {} else |
| 82 | 85 | ||
| 83 | #define for_each_iommu(i, drhd) \ | 86 | #define for_each_iommu(i, drhd) \ |
| 84 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list) \ | 87 | list_for_each_entry_rcu(drhd, &dmar_drhd_units, list, \ |
| 88 | dmar_rcu_check()) \ | ||
| 85 | if (i=drhd->iommu, 0) {} else | 89 | if (i=drhd->iommu, 0) {} else |
| 86 | 90 | ||
| 87 | static inline bool dmar_rcu_check(void) | 91 | static inline bool dmar_rcu_check(void) |
| @@ -28,8 +28,6 @@ int dsa_8021q_rx_switch_id(u16 vid); · 27 unmodified lines | |||
| 28 | 28 | ||
| 29 | int dsa_8021q_rx_source_port(u16 vid); | 29 | int dsa_8021q_rx_source_port(u16 vid); |
| 30 | 30 | ||
| 31 | struct sk_buff *dsa_8021q_remove_header(struct sk_buff *skb); | ||
| 32 | |||
| 33 | #else | 31 | #else |
| 34 | 32 | ||
| 35 | int dsa_port_setup_8021q_tagging(struct dsa_switch *ds, int index, | 33 | int dsa_port_setup_8021q_tagging(struct dsa_switch *ds, int index, |
| @@ -64,11 +62,6 @@ int dsa_8021q_rx_source_port(u16 vid) · 28 unmodified lines | |||
| 64 | return 0; | 62 | return 0; |
| 65 | } | 63 | } |
| 66 | 64 | ||
| 67 | struct sk_buff *dsa_8021q_remove_header(struct sk_buff *skb) | ||
| 68 | { | ||
| 69 | return NULL; | ||
| 70 | } | ||
| 71 | |||
| 72 | #endif /* IS_ENABLED(CONFIG_NET_DSA_TAG_8021Q) */ | 65 | #endif /* IS_ENABLED(CONFIG_NET_DSA_TAG_8021Q) */ |
| 73 | 66 | ||
| 74 | #endif /* _NET_DSA_8021Q_H */ | 67 | #endif /* _NET_DSA_8021Q_H */ |
| @@ -85,6 +85,7 @@ extern int f_dupfd(unsigned int from, struct file *file, unsigned flags); · 84 unmodified lines | |||
| 85 | extern int replace_fd(unsigned fd, struct file *file, unsigned flags); | 85 | extern int replace_fd(unsigned fd, struct file *file, unsigned flags); |
| 86 | extern void set_close_on_exec(unsigned int fd, int flag); | 86 | extern void set_close_on_exec(unsigned int fd, int flag); |
| 87 | extern bool get_close_on_exec(unsigned int fd); | 87 | extern bool get_close_on_exec(unsigned int fd); |
| 88 | extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile); | ||
| 88 | extern int get_unused_fd_flags(unsigned flags); | 89 | extern int get_unused_fd_flags(unsigned flags); |
| 89 | extern void put_unused_fd(unsigned int fd); | 90 | extern void put_unused_fd(unsigned int fd); |
| 90 | 91 | ||
| @@ -698,6 +698,7 @@ struct inode { · 697 unmodified lines | |||
| 698 | struct rcu_head i_rcu; | 698 | struct rcu_head i_rcu; |
| 699 | }; | 699 | }; |
| 700 | atomic64_t i_version; | 700 | atomic64_t i_version; |
| 701 | atomic64_t i_sequence; /* see futex */ | ||
| 701 | atomic_t i_count; | 702 | atomic_t i_count; |
| 702 | atomic_t i_dio_count; | 703 | atomic_t i_dio_count; |
| 703 | atomic_t i_writecount; | 704 | atomic_t i_writecount; |
| @@ -31,23 +31,26 @@ struct task_struct; · 30 unmodified lines | |||
| 31 | 31 | ||
| 32 | union futex_key { | 32 | union futex_key { |
| 33 | struct { | 33 | struct { |
| 34 | u64 i_seq; | ||
| 34 | unsigned long pgoff; | 35 | unsigned long pgoff; |
| 35 | struct inode *inode; | 36 | unsigned int offset; |
| 36 | int offset; | ||
| 37 | } shared; | 37 | } shared; |
| 38 | struct { | 38 | struct { |
| 39 | union { | ||
| 40 | struct mm_struct *mm; | ||
| 41 | u64 __tmp; | ||
| 42 | }; | ||
| 39 | unsigned long address; | 43 | unsigned long address; |
| 40 | struct mm_struct *mm; | 44 | unsigned int offset; |
| 41 | int offset; | ||
| 42 | } private; | 45 | } private; |
| 43 | struct { | 46 | struct { |
| 47 | u64 ptr; | ||
| 44 | unsigned long word; | 48 | unsigned long word; |
| 45 | void *ptr; | 49 | unsigned int offset; |
| 46 | int offset; | ||
| 47 | } both; | 50 | } both; |
| 48 | }; | 51 | }; |
| 49 | 52 | ||
| 50 | #define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = NULL } } | 53 | #define FUTEX_KEY_INIT (union futex_key) { .both = { .ptr = 0ULL } } |
| 51 | 54 | ||
| 52 | #ifdef CONFIG_FUTEX | 55 | #ifdef CONFIG_FUTEX |
| 53 | enum { | 56 | enum { |
| @@ -245,18 +245,6 @@ static inline bool disk_part_scan_enabled(struct gendisk *disk) · 244 unmodified lines | |||
| 245 | !(disk->flags & GENHD_FL_NO_PART_SCAN); | 245 | !(disk->flags & GENHD_FL_NO_PART_SCAN); |
| 246 | } | 246 | } |
| 247 | 247 | ||
| 248 | static inline bool disk_has_partitions(struct gendisk *disk) | ||
| 249 | { | ||
| 250 | bool ret = false; | ||
| 251 | |||
| 252 | rcu_read_lock(); | ||
| 253 | if (rcu_dereference(disk->part_tbl)->len > 1) | ||
| 254 | ret = true; | ||
| 255 | rcu_read_unlock(); | ||
| 256 | |||
| 257 | return ret; | ||
| 258 | } | ||
| 259 | |||
| 260 | static inline dev_t disk_devt(struct gendisk *disk) | 248 | static inline dev_t disk_devt(struct gendisk *disk) |
| 261 | { | 249 | { |
| 262 | return MKDEV(disk->major, disk->first_minor); | 250 | return MKDEV(disk->major, disk->first_minor); |
| @@ -298,6 +286,7 @@ extern void disk_part_iter_exit(struct disk_part_iter *piter); · 35 unmodified lines | |||
| 298 | 286 | ||
| 299 | extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, | 287 | extern struct hd_struct *disk_map_sector_rcu(struct gendisk *disk, |
| 300 | sector_t sector); | 288 | sector_t sector); |
| 289 | bool disk_has_partitions(struct gendisk *disk); | ||
| 301 | 290 | ||
| 302 | /* | 291 | /* |
| 303 | * Macros to operate on percpu disk statistics: | 292 | * Macros to operate on percpu disk statistics: |
| @@ -506,7 +506,7 @@ i2c_register_board_info(int busnum, struct i2c_board_info const *info, · 505 unmodified lines | |||
| 506 | * @smbus_xfer_atomic: same as @smbus_xfer. Yet, only using atomic context | 506 | * @smbus_xfer_atomic: same as @smbus_xfer. Yet, only using atomic context |
| 507 | * so e.g. PMICs can be accessed very late before shutdown. Optional. | 507 | * so e.g. PMICs can be accessed very late before shutdown. Optional. |
| 508 | * @functionality: Return the flags that this algorithm/adapter pair supports | 508 | * @functionality: Return the flags that this algorithm/adapter pair supports |
| 509 | * from the I2C_FUNC_* flags. | 509 | * from the ``I2C_FUNC_*`` flags. |
| 510 | * @reg_slave: Register given client to I2C slave mode of this adapter | 510 | * @reg_slave: Register given client to I2C slave mode of this adapter |
| 511 | * @unreg_slave: Unregister given client from I2C slave mode of this adapter | 511 | * @unreg_slave: Unregister given client from I2C slave mode of this adapter |
| 512 | * | 512 | * |
| @@ -515,7 +515,7 @@ i2c_register_board_info(int busnum, struct i2c_board_info const *info, · 2 unmodified lines | |||
| 515 | * be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 | 515 | * be addressed using the same bus algorithms - i.e. bit-banging or the PCF8584 |
| 516 | * to name two of the most common. | 516 | * to name two of the most common. |
| 517 | * | 517 | * |
| 518 | * The return codes from the @master_xfer{_atomic} fields should indicate the | 518 | * The return codes from the ``master_xfer{_atomic}`` fields should indicate the |
| 519 | * type of error code that occurred during the transfer, as documented in the | 519 | * type of error code that occurred during the transfer, as documented in the |
| 520 | * Kernel Documentation file Documentation/i2c/fault-codes.rst. | 520 | * Kernel Documentation file Documentation/i2c/fault-codes.rst. |
| 521 | */ | 521 | */ |
| @@ -2102,14 +2102,14 @@ ieee80211_he_spr_size(const u8 *he_spr_ie) · 2101 unmodified lines | |||
| 2102 | { | 2102 | { |
| 2103 | struct ieee80211_he_spr *he_spr = (void *)he_spr_ie; | 2103 | struct ieee80211_he_spr *he_spr = (void *)he_spr_ie; |
| 2104 | u8 spr_len = sizeof(struct ieee80211_he_spr); | 2104 | u8 spr_len = sizeof(struct ieee80211_he_spr); |
| 2105 | u32 he_spr_params; | 2105 | u8 he_spr_params; |
| 2106 | 2106 | ||
| 2107 | /* Make sure the input is not NULL */ | 2107 | /* Make sure the input is not NULL */ |
| 2108 | if (!he_spr_ie) | 2108 | if (!he_spr_ie) |
| 2109 | return 0; | 2109 | return 0; |
| 2110 | 2110 | ||
| 2111 | /* Calc required length */ | 2111 | /* Calc required length */ |
| 2112 | he_spr_params = le32_to_cpu(he_spr->he_sr_control); | 2112 | he_spr_params = he_spr->he_sr_control; |
| 2113 | if (he_spr_params & IEEE80211_HE_SPR_NON_SRG_OFFSET_PRESENT) | 2113 | if (he_spr_params & IEEE80211_HE_SPR_NON_SRG_OFFSET_PRESENT) |
| 2114 | spr_len++; | 2114 | spr_len++; |
| 2115 | if (he_spr_params & IEEE80211_HE_SPR_SRG_INFORMATION_PRESENT) | 2115 | if (he_spr_params & IEEE80211_HE_SPR_SRG_INFORMATION_PRESENT) |
| @@ -2,15 +2,10 @@ · 1 unmodified line | |||
| 2 | #ifndef _INET_DIAG_H_ | 2 | #ifndef _INET_DIAG_H_ |
| 3 | #define _INET_DIAG_H_ 1 | 3 | #define _INET_DIAG_H_ 1 |
| 4 | 4 | ||
| 5 | #include <net/netlink.h> | ||
| 5 | #include <uapi/linux/inet_diag.h> | 6 | #include <uapi/linux/inet_diag.h> |
| 6 | 7 | ||
| 7 | struct net; | ||
| 8 | struct sock; | ||
| 9 | struct inet_hashinfo; | 8 | struct inet_hashinfo; |
| 10 | struct nlattr; | ||
| 11 | struct nlmsghdr; | ||
| 12 | struct sk_buff; | ||
| 13 | struct netlink_callback; | ||
| 14 | 9 | ||
| 15 | struct inet_diag_handler { | 10 | struct inet_diag_handler { |
| 16 | void (*dump)(struct sk_buff *skb, | 11 | void (*dump)(struct sk_buff *skb, |
| @@ -62,6 +57,17 @@ int inet_diag_bc_sk(const struct nlattr *_bc, struct sock *sk); · 45 unmodified lines | |||
| 62 | 57 | ||
| 63 | void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk); | 58 | void inet_diag_msg_common_fill(struct inet_diag_msg *r, struct sock *sk); |
| 64 | 59 | ||
| 60 | static inline size_t inet_diag_msg_attrs_size(void) | ||
| 61 | { | ||
| 62 | return nla_total_size(1) /* INET_DIAG_SHUTDOWN */ | ||
| 63 | + nla_total_size(1) /* INET_DIAG_TOS */ | ||
| 64 | #if IS_ENABLED(CONFIG_IPV6) | ||
| 65 | + nla_total_size(1) /* INET_DIAG_TCLASS */ | ||
| 66 | + nla_total_size(1) /* INET_DIAG_SKV6ONLY */ | ||
| 67 | #endif | ||
| 68 | + nla_total_size(4) /* INET_DIAG_MARK */ | ||
| 69 | + nla_total_size(4); /* INET_DIAG_CLASS_ID */ | ||
| 70 | } | ||
| 65 | int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb, | 71 | int inet_diag_msg_attrs_fill(struct sock *sk, struct sk_buff *skb, |
| 66 | struct inet_diag_msg *r, int ext, | 72 | struct inet_diag_msg *r, int ext, |
| 67 | struct user_namespace *user_ns, bool net_admin); | 73 | struct user_namespace *user_ns, bool net_admin); |
| @@ -123,6 +123,8 @@ · 122 unmodified lines | |||
| 123 | 123 | ||
| 124 | #define dmar_readq(a) readq(a) | 124 | #define dmar_readq(a) readq(a) |
| 125 | #define dmar_writeq(a,v) writeq(v,a) | 125 | #define dmar_writeq(a,v) writeq(v,a) |
| 126 | #define dmar_readl(a) readl(a) | ||
| 127 | #define dmar_writel(a, v) writel(v, a) | ||
| 126 | 128 | ||
| 127 | #define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4) | 129 | #define DMAR_VER_MAJOR(v) (((v) & 0xf0) >> 4) |
| 128 | #define DMAR_VER_MINOR(v) ((v) & 0x0f) | 130 | #define DMAR_VER_MINOR(v) ((v) & 0x0f) |
| @@ -695,6 +695,7 @@ static inline unsigned long lruvec_page_state_local(struct lruvec *lruvec, · 694 unmodified lines | |||
| 695 | void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, | 695 | void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, |
| 696 | int val); | 696 | int val); |
| 697 | void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val); | 697 | void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, int val); |
| 698 | void mod_memcg_obj_state(void *p, int idx, int val); | ||
| 698 | 699 | ||
| 699 | static inline void mod_lruvec_state(struct lruvec *lruvec, | 700 | static inline void mod_lruvec_state(struct lruvec *lruvec, |
| 700 | enum node_stat_item idx, int val) | 701 | enum node_stat_item idx, int val) |
| @@ -1123,6 +1124,10 @@ static inline void __mod_lruvec_slab_state(void *p, enum node_stat_item idx, · 422 unmodified lines | |||
| 1123 | __mod_node_page_state(page_pgdat(page), idx, val); | 1124 | __mod_node_page_state(page_pgdat(page), idx, val); |
| 1124 | } | 1125 | } |
| 1125 | 1126 | ||
| 1127 | static inline void mod_memcg_obj_state(void *p, int idx, int val) | ||
| 1128 | { | ||
| 1129 | } | ||
| 1130 | |||
| 1126 | static inline | 1131 | static inline |
| 1127 | unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order, | 1132 | unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order, |
| 1128 | gfp_t gfp_mask, | 1133 | gfp_t gfp_mask, |
| @@ -1427,6 +1432,8 @@ static inline int memcg_cache_id(struct mem_cgroup *memcg) · 298 unmodified lines | |||
| 1427 | return memcg ? memcg->kmemcg_id : -1; | 1432 | return memcg ? memcg->kmemcg_id : -1; |
| 1428 | } | 1433 | } |
| 1429 | 1434 | ||
| 1435 | struct mem_cgroup *mem_cgroup_from_obj(void *p); | ||
| 1436 | |||
| 1430 | #else | 1437 | #else |
| 1431 | 1438 | ||
| 1432 | static inline int memcg_kmem_charge(struct page *page, gfp_t gfp, int order) | 1439 | static inline int memcg_kmem_charge(struct page *page, gfp_t gfp, int order) |
| @@ -1468,6 +1475,11 @@ static inline void memcg_put_cache_ids(void) · 35 unmodified lines | |||
| 1468 | { | 1475 | { |
| 1469 | } | 1476 | } |
| 1470 | 1477 | ||
| 1478 | static inline struct mem_cgroup *mem_cgroup_from_obj(void *p) | ||
| 1479 | { | ||
| 1480 | return NULL; | ||
| 1481 | } | ||
| 1482 | |||
| 1471 | #endif /* CONFIG_MEMCG_KMEM */ | 1483 | #endif /* CONFIG_MEMCG_KMEM */ |
| 1472 | 1484 | ||
| 1473 | #endif /* _LINUX_MEMCONTROL_H */ | 1485 | #endif /* _LINUX_MEMCONTROL_H */ |
| @@ -333,6 +333,7 @@ struct mmc_host { · 332 unmodified lines | |||
| 333 | MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \ | 333 | MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR104 | \ |
| 334 | MMC_CAP_UHS_DDR50) | 334 | MMC_CAP_UHS_DDR50) |
| 335 | #define MMC_CAP_SYNC_RUNTIME_PM (1 << 21) /* Synced runtime PM suspends. */ | 335 | #define MMC_CAP_SYNC_RUNTIME_PM (1 << 21) /* Synced runtime PM suspends. */ |
| 336 | #define MMC_CAP_NEED_RSP_BUSY (1 << 22) /* Commands with R1B can't use R1. */ | ||
| 336 | #define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */ | 337 | #define MMC_CAP_DRIVER_TYPE_A (1 << 23) /* Host supports Driver Type A */ |
| 337 | #define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */ | 338 | #define MMC_CAP_DRIVER_TYPE_C (1 << 24) /* Host supports Driver Type C */ |
| 338 | #define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */ | 339 | #define MMC_CAP_DRIVER_TYPE_D (1 << 25) /* Host supports Driver Type D */ |
| @@ -115,6 +115,19 @@ static inline void nl_set_extack_cookie_u64(struct netlink_ext_ack *extack, · 114 unmodified lines | |||
| 115 | { | 115 | { |
| 116 | u64 __cookie = cookie; | 116 | u64 __cookie = cookie; |
| 117 | 117 | ||
| 118 | if (!extack) | ||
| 119 | return; | ||
| 120 | memcpy(extack->cookie, &__cookie, sizeof(__cookie)); | ||
| 121 | extack->cookie_len = sizeof(__cookie); | ||
| 122 | } | ||
| 123 | |||
| 124 | static inline void nl_set_extack_cookie_u32(struct netlink_ext_ack *extack, | ||
| 125 | u32 cookie) | ||
| 126 | { | ||
| 127 | u32 __cookie = cookie; | ||
| 128 | |||
| 129 | if (!extack) | ||
| 130 | return; | ||
| 118 | memcpy(extack->cookie, &__cookie, sizeof(__cookie)); | 131 | memcpy(extack->cookie, &__cookie, sizeof(__cookie)); |
| 119 | extack->cookie_len = sizeof(__cookie); | 132 | extack->cookie_len = sizeof(__cookie); |
| 120 | } | 133 | } |
| @@ -11,17 +11,17 @@ struct of_device_id; · 10 unmodified lines | |||
| 11 | 11 | ||
| 12 | #if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF) | 12 | #if defined(CONFIG_COMMON_CLK) && defined(CONFIG_OF) |
| 13 | 13 | ||
| 14 | unsigned int of_clk_get_parent_count(struct device_node *np); | 14 | unsigned int of_clk_get_parent_count(const struct device_node *np); |
| 15 | const char *of_clk_get_parent_name(struct device_node *np, int index); | 15 | const char *of_clk_get_parent_name(const struct device_node *np, int index); |
| 16 | void of_clk_init(const struct of_device_id *matches); | 16 | void of_clk_init(const struct of_device_id *matches); |
| 17 | 17 | ||
| 18 | #else /* !CONFIG_COMMON_CLK || !CONFIG_OF */ | 18 | #else /* !CONFIG_COMMON_CLK || !CONFIG_OF */ |
| 19 | 19 | ||
| 20 | static inline unsigned int of_clk_get_parent_count(struct device_node *np) | 20 | static inline unsigned int of_clk_get_parent_count(const struct device_node *np) |
| 21 | { | 21 | { |
| 22 | return 0; | 22 | return 0; |
| 23 | } | 23 | } |
| 24 | static inline const char *of_clk_get_parent_name(struct device_node *np, | 24 | static inline const char *of_clk_get_parent_name(const struct device_node *np, |
| 25 | int index) | 25 | int index) |
| 26 | { | 26 | { |
| 27 | return NULL; | 27 | return NULL; |
| @@ -311,7 +311,7 @@ static inline int TestClearPage##uname(struct page *page) { return 0; } · 310 unmodified lines | |||
| 311 | 311 | ||
| 312 | __PAGEFLAG(Locked, locked, PF_NO_TAIL) | 312 | __PAGEFLAG(Locked, locked, PF_NO_TAIL) |
| 313 | PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) | 313 | PAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) __CLEARPAGEFLAG(Waiters, waiters, PF_ONLY_HEAD) |
| 314 | PAGEFLAG(Error, error, PF_NO_COMPOUND) TESTCLEARFLAG(Error, error, PF_NO_COMPOUND) | 314 | PAGEFLAG(Error, error, PF_NO_TAIL) TESTCLEARFLAG(Error, error, PF_NO_TAIL) |
| 315 | PAGEFLAG(Referenced, referenced, PF_HEAD) | 315 | PAGEFLAG(Referenced, referenced, PF_HEAD) |
| 316 | TESTCLEARFLAG(Referenced, referenced, PF_HEAD) | 316 | TESTCLEARFLAG(Referenced, referenced, PF_HEAD) |
| 317 | __SETPAGEFLAG(Referenced, referenced, PF_HEAD) | 317 | __SETPAGEFLAG(Referenced, referenced, PF_HEAD) |
| @@ -357,6 +357,7 @@ struct macsec_ops; · 356 unmodified lines | |||
| 357 | * is_gigabit_capable: Set to true if PHY supports 1000Mbps | 357 | * is_gigabit_capable: Set to true if PHY supports 1000Mbps |
| 358 | * has_fixups: Set to true if this phy has fixups/quirks. | 358 | * has_fixups: Set to true if this phy has fixups/quirks. |
| 359 | * suspended: Set to true if this phy has been suspended successfully. | 359 | * suspended: Set to true if this phy has been suspended successfully. |
| 360 | * suspended_by_mdio_bus: Set to true if this phy was suspended by MDIO bus. | ||
| 360 | * sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal. | 361 | * sysfs_links: Internal boolean tracking sysfs symbolic links setup/removal. |
| 361 | * loopback_enabled: Set true if this phy has been loopbacked successfully. | 362 | * loopback_enabled: Set true if this phy has been loopbacked successfully. |
| 362 | * state: state of the PHY for management purposes | 363 | * state: state of the PHY for management purposes |
| @@ -396,6 +397,7 @@ struct phy_device { · 33 unmodified lines | |||
| 396 | unsigned is_gigabit_capable:1; | 397 | unsigned is_gigabit_capable:1; |
| 397 | unsigned has_fixups:1; | 398 | unsigned has_fixups:1; |
| 398 | unsigned suspended:1; | 399 | unsigned suspended:1; |
| 400 | unsigned suspended_by_mdio_bus:1; | ||
| 399 | unsigned sysfs_links:1; | 401 | unsigned sysfs_links:1; |
| 400 | unsigned loopback_enabled:1; | 402 | unsigned loopback_enabled:1; |
| 401 | 403 | ||
| @@ -557,6 +559,7 @@ struct phy_driver { · 155 unmodified lines | |||
| 557 | /* | 559 | /* |
| 558 | * Checks if the PHY generated an interrupt. | 560 | * Checks if the PHY generated an interrupt. |
| 559 | * For multi-PHY devices with shared PHY interrupt pin | 561 | * For multi-PHY devices with shared PHY interrupt pin |
| 562 | * Set interrupt bits have to be cleared. | ||
| 560 | */ | 563 | */ |
| 561 | int (*did_interrupt)(struct phy_device *phydev); | 564 | int (*did_interrupt)(struct phy_device *phydev); |
| 562 | 565 | ||
| @@ -24,7 +24,7 @@ struct platform_device { · 23 unmodified lines | |||
| 24 | int id; | 24 | int id; |
| 25 | bool id_auto; | 25 | bool id_auto; |
| 26 | struct device dev; | 26 | struct device dev; |
| 27 | u64 dma_mask; | 27 | u64 platform_dma_mask; |
| 28 | u32 num_resources; | 28 | u32 num_resources; |
| 29 | struct resource *resource; | 29 | struct resource *resource; |
| 30 | 30 | ||
| @@ -972,9 +972,9 @@ static inline int rhashtable_lookup_insert_key( · 971 unmodified lines | |||
| 972 | /** | 972 | /** |
| 973 | * rhashtable_lookup_get_insert_key - lookup and insert object into hash table | 973 | * rhashtable_lookup_get_insert_key - lookup and insert object into hash table |
| 974 | * @ht: hash table | 974 | * @ht: hash table |
| 975 | * @key: key | ||
| 975 | * @obj: pointer to hash head inside object | 976 | * @obj: pointer to hash head inside object |
| 976 | * @params: hash table parameters | 977 | * @params: hash table parameters |
| 977 | * @data: pointer to element data already in hashes | ||
| 978 | * | 978 | * |
| 979 | * Just like rhashtable_lookup_insert_key(), but this function returns the | 979 | * Just like rhashtable_lookup_insert_key(), but this function returns the |
| 980 | * object if it exists, NULL if it does not and the insertion was successful, | 980 | * object if it exists, NULL if it does not and the insertion was successful, |
| @@ -645,8 +645,8 @@ typedef unsigned char *sk_buff_data_t; · 644 unmodified lines | |||
| 645 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware | 645 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware |
| 646 | * @tc_skip_classify: do not classify packet. set by IFB device | 646 | * @tc_skip_classify: do not classify packet. set by IFB device |
| 647 | * @tc_at_ingress: used within tc_classify to distinguish in/egress | 647 | * @tc_at_ingress: used within tc_classify to distinguish in/egress |
| 648 | * @tc_redirected: packet was redirected by a tc action | 648 | * @redirected: packet was redirected by packet classifier |
| 649 | * @tc_from_ingress: if tc_redirected, tc_at_ingress at time of redirect | 649 | * @from_ingress: packet was redirected from the ingress path |
| 650 | * @peeked: this packet has been seen already, so stats have been | 650 | * @peeked: this packet has been seen already, so stats have been |
| 651 | * done for it, don't do them again | 651 | * done for it, don't do them again |
| 652 | * @nf_trace: netfilter packet trace flag | 652 | * @nf_trace: netfilter packet trace flag |
| @@ -848,8 +848,10 @@ struct sk_buff { · 195 unmodified lines | |||
| 848 | #ifdef CONFIG_NET_CLS_ACT | 848 | #ifdef CONFIG_NET_CLS_ACT |
| 849 | __u8 tc_skip_classify:1; | 849 | __u8 tc_skip_classify:1; |
| 850 | __u8 tc_at_ingress:1; | 850 | __u8 tc_at_ingress:1; |
| 851 | __u8 tc_redirected:1; | 851 | #endif |
| 852 | __u8 tc_from_ingress:1; | 852 | #ifdef CONFIG_NET_REDIRECT |
| 853 | __u8 redirected:1; | ||
| 854 | __u8 from_ingress:1; | ||
| 853 | #endif | 855 | #endif |
| 854 | #ifdef CONFIG_TLS_DEVICE | 856 | #ifdef CONFIG_TLS_DEVICE |
| 855 | __u8 decrypted:1; | 857 | __u8 decrypted:1; |
| @@ -4579,5 +4581,31 @@ static inline __wsum lco_csum(struct sk_buff *skb) · 3723 unmodified lines | |||
| 4579 | return csum_partial(l4_hdr, csum_start - l4_hdr, partial); | 4581 | return csum_partial(l4_hdr, csum_start - l4_hdr, partial); |
| 4580 | } | 4582 | } |
| 4581 | 4583 | ||
| 4584 | static inline bool skb_is_redirected(const struct sk_buff *skb) | ||
| 4585 | { | ||
| 4586 | #ifdef CONFIG_NET_REDIRECT | ||
| 4587 | return skb->redirected; | ||
| 4588 | #else | ||
| 4589 | return false; | ||
| 4590 | #endif | ||
| 4591 | } | ||
| 4592 | |||
| 4593 | static inline void skb_set_redirected(struct sk_buff *skb, bool from_ingress) | ||
| 4594 | { | ||
| 4595 | #ifdef CONFIG_NET_REDIRECT | ||
| 4596 | skb->redirected = 1; | ||
| 4597 | skb->from_ingress = from_ingress; | ||
| 4598 | if (skb->from_ingress) | ||
| 4599 | skb->tstamp = 0; | ||
| 4600 | #endif | ||
| 4601 | } | ||
| 4602 | |||
| 4603 | static inline void skb_reset_redirect(struct sk_buff *skb) | ||
| 4604 | { | ||
| 4605 | #ifdef CONFIG_NET_REDIRECT | ||
| 4606 | skb->redirected = 0; | ||
| 4607 | #endif | ||
| 4608 | } | ||
| 4609 | |||
| 4582 | #endif /* __KERNEL__ */ | 4610 | #endif /* __KERNEL__ */ |
| 4583 | #endif /* _LINUX_SKBUFF_H */ | 4611 | #endif /* _LINUX_SKBUFF_H */ |
| @@ -401,7 +401,8 @@ extern int __sys_sendto(int fd, void __user *buff, size_t len, · 400 unmodified lines | |||
| 401 | int addr_len); | 401 | int addr_len); |
| 402 | extern int __sys_accept4_file(struct file *file, unsigned file_flags, | 402 | extern int __sys_accept4_file(struct file *file, unsigned file_flags, |
| 403 | struct sockaddr __user *upeer_sockaddr, | 403 | struct sockaddr __user *upeer_sockaddr, |
| 404 | int __user *upeer_addrlen, int flags); | 404 | int __user *upeer_addrlen, int flags, |
| 405 | unsigned long nofile); | ||
| 405 | extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr, | 406 | extern int __sys_accept4(int fd, struct sockaddr __user *upeer_sockaddr, |
| 406 | int __user *upeer_addrlen, int flags); | 407 | int __user *upeer_addrlen, int flags); |
| 407 | extern int __sys_socket(int family, int type, int protocol); | 408 | extern int __sys_socket(int family, int type, int protocol); |
| @@ -141,8 +141,9 @@ extern int remap_vmalloc_range_partial(struct vm_area_struct *vma, · 140 unmodified lines | |||
| 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); |
| 144 | void vmalloc_sync_all(void); | 144 | void vmalloc_sync_mappings(void); |
| 145 | 145 | void vmalloc_sync_unmappings(void); | |
| 146 | |||
| 146 | /* | 147 | /* |
| 147 | * Lowlevel-APIs (not for driver use!) | 148 | * Lowlevel-APIs (not for driver use!) |
| 148 | */ | 149 | */ |
| @@ -487,6 +487,19 @@ extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task); · 486 unmodified lines | |||
| 487 | * | 487 | * |
| 488 | * We queue the work to the CPU on which it was submitted, but if the CPU dies | 488 | * We queue the work to the CPU on which it was submitted, but if the CPU dies |
| 489 | * it can be processed by another CPU. | 489 | * it can be processed by another CPU. |
| 490 | * | ||
| 491 | * Memory-ordering properties: If it returns %true, guarantees that all stores | ||
| 492 | * preceding the call to queue_work() in the program order will be visible from | ||
| 493 | * the CPU which will execute @work by the time such work executes, e.g., | ||
| 494 | * | ||
| 495 | * { x is initially 0 } | ||
| 496 | * | ||
| 497 | * CPU0 CPU1 | ||
| 498 | * | ||
| 499 | * WRITE_ONCE(x, 1); [ @work is being executed ] | ||
| 500 | * r0 = queue_work(wq, work); r1 = READ_ONCE(x); | ||
| 501 | * | ||
| 502 | * Forbids: r0 == true && r1 == 0 | ||
| 490 | */ | 503 | */ |
| 491 | static inline bool queue_work(struct workqueue_struct *wq, | 504 | static inline bool queue_work(struct workqueue_struct *wq, |
| 492 | struct work_struct *work) | 505 | struct work_struct *work) |
| @@ -546,6 +559,9 @@ static inline bool schedule_work_on(int cpu, struct work_struct *work) · 53 unmodified lines | |||
| 546 | * This puts a job in the kernel-global workqueue if it was not already | 559 | * This puts a job in the kernel-global workqueue if it was not already |
| 547 | * queued and leaves it in the same position on the kernel-global | 560 | * queued and leaves it in the same position on the kernel-global |
| 548 | * workqueue otherwise. | 561 | * workqueue otherwise. |
| 562 | * | ||
| 563 | * Shares the same memory-ordering properties of queue_work(), cf. the | ||
| 564 | * DocBook header of queue_work(). | ||
| 549 | */ | 565 | */ |
| 550 | static inline bool schedule_work(struct work_struct *work) | 566 | static inline bool schedule_work(struct work_struct *work) |
| 551 | { | 567 | { |