We need the char/misc fixes in here as well.
Showing the changes to include (32 of 433 files). Show all
Unified · Split
| @@ -1258,6 +1258,7 @@ unsigned long disk_start_io_acct(struct gendisk *disk, unsigned int sectors, · 1257 unmodified lines | |||
| 1258 | void disk_end_io_acct(struct gendisk *disk, unsigned int op, | 1258 | void disk_end_io_acct(struct gendisk *disk, unsigned int op, |
| 1259 | unsigned long start_time); | 1259 | unsigned long start_time); |
| 1260 | 1260 | ||
| 1261 | void bio_start_io_acct_time(struct bio *bio, unsigned long start_time); | ||
| 1261 | unsigned long bio_start_io_acct(struct bio *bio); | 1262 | unsigned long bio_start_io_acct(struct bio *bio); |
| 1262 | void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time, | 1263 | void bio_end_io_acct_remapped(struct bio *bio, unsigned long start_time, |
| 1263 | struct block_device *orig_bdev); | 1264 | struct block_device *orig_bdev); |
| @@ -111,7 +111,7 @@ struct ethtool_link_ext_state_info { · 110 unmodified lines | |||
| 111 | enum ethtool_link_ext_substate_bad_signal_integrity bad_signal_integrity; | 111 | enum ethtool_link_ext_substate_bad_signal_integrity bad_signal_integrity; |
| 112 | enum ethtool_link_ext_substate_cable_issue cable_issue; | 112 | enum ethtool_link_ext_substate_cable_issue cable_issue; |
| 113 | enum ethtool_link_ext_substate_module module; | 113 | enum ethtool_link_ext_substate_module module; |
| 114 | u8 __link_ext_substate; | 114 | u32 __link_ext_substate; |
| 115 | }; | 115 | }; |
| 116 | }; | 116 | }; |
| 117 | 117 | ||
| @@ -224,6 +224,43 @@ static inline void fsnotify_link(struct inode *dir, struct inode *inode, · 223 unmodified lines | |||
| 224 | dir, &new_dentry->d_name, 0); | 224 | dir, &new_dentry->d_name, 0); |
| 225 | } | 225 | } |
| 226 | 226 | ||
| 227 | /* | ||
| 228 | * fsnotify_delete - @dentry was unlinked and unhashed | ||
| 229 | * | ||
| 230 | * Caller must make sure that dentry->d_name is stable. | ||
| 231 | * | ||
| 232 | * Note: unlike fsnotify_unlink(), we have to pass also the unlinked inode | ||
| 233 | * as this may be called after d_delete() and old_dentry may be negative. | ||
| 234 | */ | ||
| 235 | static inline void fsnotify_delete(struct inode *dir, struct inode *inode, | ||
| 236 | struct dentry *dentry) | ||
| 237 | { | ||
| 238 | __u32 mask = FS_DELETE; | ||
| 239 | |||
| 240 | if (S_ISDIR(inode->i_mode)) | ||
| 241 | mask |= FS_ISDIR; | ||
| 242 | |||
| 243 | fsnotify_name(mask, inode, FSNOTIFY_EVENT_INODE, dir, &dentry->d_name, | ||
| 244 | 0); | ||
| 245 | } | ||
| 246 | |||
| 247 | /** | ||
| 248 | * d_delete_notify - delete a dentry and call fsnotify_delete() | ||
| 249 | * @dentry: The dentry to delete | ||
| 250 | * | ||
| 251 | * This helper is used to guaranty that the unlinked inode cannot be found | ||
| 252 | * by lookup of this name after fsnotify_delete() event has been delivered. | ||
| 253 | */ | ||
| 254 | static inline void d_delete_notify(struct inode *dir, struct dentry *dentry) | ||
| 255 | { | ||
| 256 | struct inode *inode = d_inode(dentry); | ||
| 257 | |||
| 258 | ihold(inode); | ||
| 259 | d_delete(dentry); | ||
| 260 | fsnotify_delete(dir, inode, dentry); | ||
| 261 | iput(inode); | ||
| 262 | } | ||
| 263 | |||
| 227 | /* | 264 | /* |
| 228 | * fsnotify_unlink - 'name' was unlinked | 265 | * fsnotify_unlink - 'name' was unlinked |
| 229 | * | 266 | * |
| @@ -231,10 +268,10 @@ static inline void fsnotify_link(struct inode *dir, struct inode *inode, · 1 unmodified line | |||
| 231 | */ | 268 | */ |
| 232 | static inline void fsnotify_unlink(struct inode *dir, struct dentry *dentry) | 269 | static inline void fsnotify_unlink(struct inode *dir, struct dentry *dentry) |
| 233 | { | 270 | { |
| 234 | /* Expected to be called before d_delete() */ | 271 | if (WARN_ON_ONCE(d_is_negative(dentry))) |
| 235 | WARN_ON_ONCE(d_is_negative(dentry)); | 272 | return; |
| 236 | 273 | ||
| 237 | fsnotify_dirent(dir, dentry, FS_DELETE); | 274 | fsnotify_delete(dir, d_inode(dentry), dentry); |
| 238 | } | 275 | } |
| 239 | 276 | ||
| 240 | /* | 277 | /* |
| @@ -258,10 +295,10 @@ static inline void fsnotify_mkdir(struct inode *dir, struct dentry *dentry) · 17 unmodified lines | |||
| 258 | */ | 295 | */ |
| 259 | static inline void fsnotify_rmdir(struct inode *dir, struct dentry *dentry) | 296 | static inline void fsnotify_rmdir(struct inode *dir, struct dentry *dentry) |
| 260 | { | 297 | { |
| 261 | /* Expected to be called before d_delete() */ | 298 | if (WARN_ON_ONCE(d_is_negative(dentry))) |
| 262 | WARN_ON_ONCE(d_is_negative(dentry)); | 299 | return; |
| 263 | 300 | ||
| 264 | fsnotify_dirent(dir, dentry, FS_DELETE | FS_ISDIR); | 301 | fsnotify_delete(dir, d_inode(dentry), dentry); |
| 265 | } | 302 | } |
| 266 | 303 | ||
| 267 | /* | 304 | /* |
| @@ -80,7 +80,7 @@ LSM_HOOK(int, 0, sb_clone_mnt_opts, const struct super_block *oldsb, · 79 unmodified lines | |||
| 80 | unsigned long *set_kern_flags) | 80 | unsigned long *set_kern_flags) |
| 81 | LSM_HOOK(int, 0, move_mount, const struct path *from_path, | 81 | LSM_HOOK(int, 0, move_mount, const struct path *from_path, |
| 82 | const struct path *to_path) | 82 | const struct path *to_path) |
| 83 | LSM_HOOK(int, 0, dentry_init_security, struct dentry *dentry, | 83 | LSM_HOOK(int, -EOPNOTSUPP, dentry_init_security, struct dentry *dentry, |
| 84 | int mode, const struct qstr *name, const char **xattr_name, | 84 | int mode, const struct qstr *name, const char **xattr_name, |
| 85 | void **ctx, u32 *ctxlen) | 85 | void **ctx, u32 *ctxlen) |
| 86 | LSM_HOOK(int, 0, dentry_create_files_as, struct dentry *dentry, int mode, | 86 | LSM_HOOK(int, 0, dentry_create_files_as, struct dentry *dentry, int mode, |
| @@ -1506,11 +1506,18 @@ static inline u8 page_kasan_tag(const struct page *page) · 1505 unmodified lines | |||
| 1506 | 1506 | ||
| 1507 | static inline void page_kasan_tag_set(struct page *page, u8 tag) | 1507 | static inline void page_kasan_tag_set(struct page *page, u8 tag) |
| 1508 | { | 1508 | { |
| 1509 | if (kasan_enabled()) { | 1509 | unsigned long old_flags, flags; |
| 1510 | tag ^= 0xff; | 1510 | |
| 1511 | page->flags &= ~(KASAN_TAG_MASK << KASAN_TAG_PGSHIFT); | 1511 | if (!kasan_enabled()) |
| 1512 | page->flags |= (tag & KASAN_TAG_MASK) << KASAN_TAG_PGSHIFT; | 1512 | return; |
| 1513 | } | 1513 | |
| 1514 | tag ^= 0xff; | ||
| 1515 | old_flags = READ_ONCE(page->flags); | ||
| 1516 | do { | ||
| 1517 | flags = old_flags; | ||
| 1518 | flags &= ~(KASAN_TAG_MASK << KASAN_TAG_PGSHIFT); | ||
| 1519 | flags |= (tag & KASAN_TAG_MASK) << KASAN_TAG_PGSHIFT; | ||
| 1520 | } while (unlikely(!try_cmpxchg(&page->flags, &old_flags, flags))); | ||
| 1514 | } | 1521 | } |
| 1515 | 1522 | ||
| 1516 | static inline void page_kasan_tag_reset(struct page *page) | 1523 | static inline void page_kasan_tag_reset(struct page *page) |
| @@ -261,6 +261,7 @@ static_assert(sizeof(struct page) == sizeof(struct folio)); · 260 unmodified lines | |||
| 261 | static_assert(offsetof(struct page, pg) == offsetof(struct folio, fl)) | 261 | static_assert(offsetof(struct page, pg) == offsetof(struct folio, fl)) |
| 262 | FOLIO_MATCH(flags, flags); | 262 | FOLIO_MATCH(flags, flags); |
| 263 | FOLIO_MATCH(lru, lru); | 263 | FOLIO_MATCH(lru, lru); |
| 264 | FOLIO_MATCH(mapping, mapping); | ||
| 264 | FOLIO_MATCH(compound_head, lru); | 265 | FOLIO_MATCH(compound_head, lru); |
| 265 | FOLIO_MATCH(index, index); | 266 | FOLIO_MATCH(index, index); |
| 266 | FOLIO_MATCH(private, private); | 267 | FOLIO_MATCH(private, private); |
| @@ -2548,6 +2548,7 @@ struct packet_type { · 2547 unmodified lines | |||
| 2548 | struct net_device *); | 2548 | struct net_device *); |
| 2549 | bool (*id_match)(struct packet_type *ptype, | 2549 | bool (*id_match)(struct packet_type *ptype, |
| 2550 | struct sock *sk); | 2550 | struct sock *sk); |
| 2551 | struct net *af_packet_net; | ||
| 2551 | void *af_packet_priv; | 2552 | void *af_packet_priv; |
| 2552 | struct list_head list; | 2553 | struct list_head list; |
| 2553 | }; | 2554 | }; |
| @@ -61,7 +61,9 @@ · 60 unmodified lines | |||
| 61 | struct nfs_access_entry { | 61 | struct nfs_access_entry { |
| 62 | struct rb_node rb_node; | 62 | struct rb_node rb_node; |
| 63 | struct list_head lru; | 63 | struct list_head lru; |
| 64 | const struct cred * cred; | 64 | kuid_t fsuid; |
| 65 | kgid_t fsgid; | ||
| 66 | struct group_info *group_info; | ||
| 65 | __u32 mask; | 67 | __u32 mask; |
| 66 | struct rcu_head rcu_head; | 68 | struct rcu_head rcu_head; |
| 67 | }; | 69 | }; |
| @@ -395,7 +397,7 @@ extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fa · 327 unmodified lines | |||
| 395 | extern int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fattr *fattr); | 397 | extern int nfs_post_op_update_inode_force_wcc_locked(struct inode *inode, struct nfs_fattr *fattr); |
| 396 | extern int nfs_getattr(struct user_namespace *, const struct path *, | 398 | extern int nfs_getattr(struct user_namespace *, const struct path *, |
| 397 | struct kstat *, u32, unsigned int); | 399 | struct kstat *, u32, unsigned int); |
| 398 | extern void nfs_access_add_cache(struct inode *, struct nfs_access_entry *); | 400 | extern void nfs_access_add_cache(struct inode *, struct nfs_access_entry *, const struct cred *); |
| 399 | extern void nfs_access_set_mask(struct nfs_access_entry *, u32); | 401 | extern void nfs_access_set_mask(struct nfs_access_entry *, u32); |
| 400 | extern int nfs_permission(struct user_namespace *, struct inode *, int); | 402 | extern int nfs_permission(struct user_namespace *, struct inode *, int); |
| 401 | extern int nfs_open(struct inode *, struct file *); | 403 | extern int nfs_open(struct inode *, struct file *); |
| @@ -532,8 +534,8 @@ extern int nfs_instantiate(struct dentry *dentry, struct nfs_fh *fh, · 130 unmodified lines | |||
| 532 | struct nfs_fattr *fattr); | 534 | struct nfs_fattr *fattr); |
| 533 | extern int nfs_may_open(struct inode *inode, const struct cred *cred, int openflags); | 535 | extern int nfs_may_open(struct inode *inode, const struct cred *cred, int openflags); |
| 534 | extern void nfs_access_zap_cache(struct inode *inode); | 536 | extern void nfs_access_zap_cache(struct inode *inode); |
| 535 | extern int nfs_access_get_cached(struct inode *inode, const struct cred *cred, struct nfs_access_entry *res, | 537 | extern int nfs_access_get_cached(struct inode *inode, const struct cred *cred, |
| 536 | bool may_block); | 538 | u32 *mask, bool may_block); |
| 537 | 539 | ||
| 538 | /* | 540 | /* |
| 539 | * linux/fs/nfs/symlink.c | 541 | * linux/fs/nfs/symlink.c |
| @@ -266,6 +266,8 @@ struct nfs_server { · 265 unmodified lines | |||
| 266 | #define NFS_CAP_ACLS (1U << 3) | 266 | #define NFS_CAP_ACLS (1U << 3) |
| 267 | #define NFS_CAP_ATOMIC_OPEN (1U << 4) | 267 | #define NFS_CAP_ATOMIC_OPEN (1U << 4) |
| 268 | #define NFS_CAP_LGOPEN (1U << 5) | 268 | #define NFS_CAP_LGOPEN (1U << 5) |
| 269 | #define NFS_CAP_CASE_INSENSITIVE (1U << 6) | ||
| 270 | #define NFS_CAP_CASE_PRESERVING (1U << 7) | ||
| 269 | #define NFS_CAP_POSIX_LOCK (1U << 14) | 271 | #define NFS_CAP_POSIX_LOCK (1U << 14) |
| 270 | #define NFS_CAP_UIDGID_NOMAP (1U << 15) | 272 | #define NFS_CAP_UIDGID_NOMAP (1U << 15) |
| 271 | #define NFS_CAP_STATEID_NFSV41 (1U << 16) | 273 | #define NFS_CAP_STATEID_NFSV41 (1U << 16) |
| @@ -282,5 +284,5 @@ struct nfs_server { · 10 unmodified lines | |||
| 282 | #define NFS_CAP_COPY_NOTIFY (1U << 27) | 284 | #define NFS_CAP_COPY_NOTIFY (1U << 27) |
| 283 | #define NFS_CAP_XATTR (1U << 28) | 285 | #define NFS_CAP_XATTR (1U << 28) |
| 284 | #define NFS_CAP_READ_PLUS (1U << 29) | 286 | #define NFS_CAP_READ_PLUS (1U << 29) |
| 285 | 287 | #define NFS_CAP_FS_LOCATIONS (1U << 30) | |
| 286 | #endif | 288 | #endif |
| @@ -1194,6 +1194,8 @@ struct nfs4_server_caps_res { · 1193 unmodified lines | |||
| 1194 | u32 has_links; | 1194 | u32 has_links; |
| 1195 | u32 has_symlinks; | 1195 | u32 has_symlinks; |
| 1196 | u32 fh_expire_type; | 1196 | u32 fh_expire_type; |
| 1197 | u32 case_insensitive; | ||
| 1198 | u32 case_preserving; | ||
| 1197 | }; | 1199 | }; |
| 1198 | 1200 | ||
| 1199 | #define NFS4_PATHNAME_MAXCOMPONENTS 512 | 1201 | #define NFS4_PATHNAME_MAXCOMPONENTS 512 |
| @@ -1737,7 +1739,7 @@ struct nfs_rpc_ops { · 537 unmodified lines | |||
| 1737 | struct nfs_fh *, struct nfs_fattr *); | 1739 | struct nfs_fh *, struct nfs_fattr *); |
| 1738 | int (*lookupp) (struct inode *, struct nfs_fh *, | 1740 | int (*lookupp) (struct inode *, struct nfs_fh *, |
| 1739 | struct nfs_fattr *); | 1741 | struct nfs_fattr *); |
| 1740 | int (*access) (struct inode *, struct nfs_access_entry *); | 1742 | int (*access) (struct inode *, struct nfs_access_entry *, const struct cred *); |
| 1741 | int (*readlink)(struct inode *, struct page *, unsigned int, | 1743 | int (*readlink)(struct inode *, struct page *, unsigned int, |
| 1742 | unsigned int); | 1744 | unsigned int); |
| 1743 | int (*create) (struct inode *, struct dentry *, | 1745 | int (*create) (struct inode *, struct dentry *, |
| @@ -1795,6 +1797,7 @@ struct nfs_rpc_ops { · 51 unmodified lines | |||
| 1795 | struct nfs_server *(*create_server)(struct fs_context *); | 1797 | struct nfs_server *(*create_server)(struct fs_context *); |
| 1796 | struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *, | 1798 | struct nfs_server *(*clone_server)(struct nfs_server *, struct nfs_fh *, |
| 1797 | struct nfs_fattr *, rpc_authflavor_t); | 1799 | struct nfs_fattr *, rpc_authflavor_t); |
| 1800 | int (*discover_trunking)(struct nfs_server *, struct nfs_fh *); | ||
| 1798 | }; | 1801 | }; |
| 1799 | 1802 | ||
| 1800 | /* | 1803 | /* |
| @@ -693,18 +693,6 @@ struct perf_event { · 692 unmodified lines | |||
| 693 | u64 total_time_running; | 693 | u64 total_time_running; |
| 694 | u64 tstamp; | 694 | u64 tstamp; |
| 695 | 695 | ||
| 696 | /* | ||
| 697 | * timestamp shadows the actual context timing but it can | ||
| 698 | * be safely used in NMI interrupt context. It reflects the | ||
| 699 | * context time as it was when the event was last scheduled in, | ||
| 700 | * or when ctx_sched_in failed to schedule the event because we | ||
| 701 | * run out of PMC. | ||
| 702 | * | ||
| 703 | * ctx_time already accounts for ctx->timestamp. Therefore to | ||
| 704 | * compute ctx_time for a sample, simply add perf_clock(). | ||
| 705 | */ | ||
| 706 | u64 shadow_ctx_time; | ||
| 707 | |||
| 708 | struct perf_event_attr attr; | 696 | struct perf_event_attr attr; |
| 709 | u16 header_size; | 697 | u16 header_size; |
| 710 | u16 id_header_size; | 698 | u16 id_header_size; |
| @@ -852,6 +840,7 @@ struct perf_event_context { · 141 unmodified lines | |||
| 852 | */ | 840 | */ |
| 853 | u64 time; | 841 | u64 time; |
| 854 | u64 timestamp; | 842 | u64 timestamp; |
| 843 | u64 timeoffset; | ||
| 855 | 844 | ||
| 856 | /* | 845 | /* |
| 857 | * These fields let us detect when two contexts have both | 846 | * These fields let us detect when two contexts have both |
| @@ -934,6 +923,8 @@ struct bpf_perf_event_data_kern { · 76 unmodified lines | |||
| 934 | struct perf_cgroup_info { | 923 | struct perf_cgroup_info { |
| 935 | u64 time; | 924 | u64 time; |
| 936 | u64 timestamp; | 925 | u64 timestamp; |
| 926 | u64 timeoffset; | ||
| 927 | int active; | ||
| 937 | }; | 928 | }; |
| 938 | 929 | ||
| 939 | struct perf_cgroup { | 930 | struct perf_cgroup { |
| @@ -86,4 +86,9 @@ extern struct pid_namespace *task_active_pid_ns(struct task_struct *tsk); · 85 unmodified lines | |||
| 86 | void pidhash_init(void); | 86 | void pidhash_init(void); |
| 87 | void pid_idr_init(void); | 87 | void pid_idr_init(void); |
| 88 | 88 | ||
| 89 | static inline bool task_is_in_init_pid_ns(struct task_struct *tsk) | ||
| 90 | { | ||
| 91 | return task_active_pid_ns(tsk) == &init_pid_ns; | ||
| 92 | } | ||
| 93 | |||
| 89 | #endif /* _LINUX_PID_NS_H */ | 94 | #endif /* _LINUX_PID_NS_H */ |
| @@ -25,18 +25,17 @@ void psi_memstall_enter(unsigned long *flags); · 24 unmodified lines | |||
| 25 | void psi_memstall_leave(unsigned long *flags); | 25 | void psi_memstall_leave(unsigned long *flags); |
| 26 | 26 | ||
| 27 | int psi_show(struct seq_file *s, struct psi_group *group, enum psi_res res); | 27 | int psi_show(struct seq_file *s, struct psi_group *group, enum psi_res res); |
| 28 | |||
| 29 | #ifdef CONFIG_CGROUPS | ||
| 30 | int psi_cgroup_alloc(struct cgroup *cgrp); | ||
| 31 | void psi_cgroup_free(struct cgroup *cgrp); | ||
| 32 | void cgroup_move_task(struct task_struct *p, struct css_set *to); | ||
| 33 | |||
| 34 | struct psi_trigger *psi_trigger_create(struct psi_group *group, | 28 | struct psi_trigger *psi_trigger_create(struct psi_group *group, |
| 35 | char *buf, size_t nbytes, enum psi_res res); | 29 | char *buf, size_t nbytes, enum psi_res res); |
| 36 | void psi_trigger_replace(void **trigger_ptr, struct psi_trigger *t); | 30 | void psi_trigger_destroy(struct psi_trigger *t); |
| 37 | 31 | ||
| 38 | __poll_t psi_trigger_poll(void **trigger_ptr, struct file *file, | 32 | __poll_t psi_trigger_poll(void **trigger_ptr, struct file *file, |
| 39 | poll_table *wait); | 33 | poll_table *wait); |
| 34 | |||
| 35 | #ifdef CONFIG_CGROUPS | ||
| 36 | int psi_cgroup_alloc(struct cgroup *cgrp); | ||
| 37 | void psi_cgroup_free(struct cgroup *cgrp); | ||
| 38 | void cgroup_move_task(struct task_struct *p, struct css_set *to); | ||
| 40 | #endif | 39 | #endif |
| 41 | 40 | ||
| 42 | #else /* CONFIG_PSI */ | 41 | #else /* CONFIG_PSI */ |
| @@ -141,9 +141,6 @@ struct psi_trigger { · 140 unmodified lines | |||
| 141 | * events to one per window | 141 | * events to one per window |
| 142 | */ | 142 | */ |
| 143 | u64 last_event_time; | 143 | u64 last_event_time; |
| 144 | |||
| 145 | /* Refcounting to prevent premature destruction */ | ||
| 146 | struct kref refcount; | ||
| 147 | }; | 144 | }; |
| 148 | 145 | ||
| 149 | struct psi_group { | 146 | struct psi_group { |
| @@ -91,7 +91,7 @@ extern bool qid_valid(struct kqid qid); · 90 unmodified lines | |||
| 91 | * | 91 | * |
| 92 | * When there is no mapping defined for the user-namespace, type, | 92 | * When there is no mapping defined for the user-namespace, type, |
| 93 | * qid tuple an invalid kqid is returned. Callers are expected to | 93 | * qid tuple an invalid kqid is returned. Callers are expected to |
| 94 | * test for and handle handle invalid kqids being returned. | 94 | * test for and handle invalid kqids being returned. |
| 95 | * Invalid kqids may be tested for using qid_valid(). | 95 | * Invalid kqids may be tested for using qid_valid(). |
| 96 | */ | 96 | */ |
| 97 | static inline struct kqid make_kqid(struct user_namespace *from, | 97 | static inline struct kqid make_kqid(struct user_namespace *from, |
| @@ -619,10 +619,6 @@ struct sched_dl_entity { · 618 unmodified lines | |||
| 619 | * task has to wait for a replenishment to be performed at the | 619 | * task has to wait for a replenishment to be performed at the |
| 620 | * next firing of dl_timer. | 620 | * next firing of dl_timer. |
| 621 | * | 621 | * |
| 622 | * @dl_boosted tells if we are boosted due to DI. If so we are | ||
| 623 | * outside bandwidth enforcement mechanism (but only until we | ||
| 624 | * exit the critical section); | ||
| 625 | * | ||
| 626 | * @dl_yielded tells if task gave up the CPU before consuming | 622 | * @dl_yielded tells if task gave up the CPU before consuming |
| 627 | * all its available runtime during the last job. | 623 | * all its available runtime during the last job. |
| 628 | * | 624 | * |
| @@ -318,7 +318,7 @@ enum skb_drop_reason { · 317 unmodified lines | |||
| 318 | SKB_DROP_REASON_NO_SOCKET, | 318 | SKB_DROP_REASON_NO_SOCKET, |
| 319 | SKB_DROP_REASON_PKT_TOO_SMALL, | 319 | SKB_DROP_REASON_PKT_TOO_SMALL, |
| 320 | SKB_DROP_REASON_TCP_CSUM, | 320 | SKB_DROP_REASON_TCP_CSUM, |
| 321 | SKB_DROP_REASON_TCP_FILTER, | 321 | SKB_DROP_REASON_SOCKET_FILTER, |
| 322 | SKB_DROP_REASON_UDP_CSUM, | 322 | SKB_DROP_REASON_UDP_CSUM, |
| 323 | SKB_DROP_REASON_MAX, | 323 | SKB_DROP_REASON_MAX, |
| 324 | }; | 324 | }; |
| @@ -430,15 +430,7 @@ struct platform_hibernation_ops { · 429 unmodified lines | |||
| 430 | 430 | ||
| 431 | #ifdef CONFIG_HIBERNATION | 431 | #ifdef CONFIG_HIBERNATION |
| 432 | /* kernel/power/snapshot.c */ | 432 | /* kernel/power/snapshot.c */ |
| 433 | extern void __register_nosave_region(unsigned long b, unsigned long e, int km); | 433 | extern void register_nosave_region(unsigned long b, unsigned long e); |
| 434 | static inline void __init register_nosave_region(unsigned long b, unsigned long e) | ||
| 435 | { | ||
| 436 | __register_nosave_region(b, e, 0); | ||
| 437 | } | ||
| 438 | static inline void __init register_nosave_region_late(unsigned long b, unsigned long e) | ||
| 439 | { | ||
| 440 | __register_nosave_region(b, e, 1); | ||
| 441 | } | ||
| 442 | extern int swsusp_page_is_forbidden(struct page *); | 434 | extern int swsusp_page_is_forbidden(struct page *); |
| 443 | extern void swsusp_set_page_free(struct page *); | 435 | extern void swsusp_set_page_free(struct page *); |
| 444 | extern void swsusp_unset_page_free(struct page *); | 436 | extern void swsusp_unset_page_free(struct page *); |
| @@ -458,7 +450,6 @@ int pfn_is_nosave(unsigned long pfn); · 13 unmodified lines | |||
| 458 | int hibernate_quiet_exec(int (*func)(void *data), void *data); | 450 | int hibernate_quiet_exec(int (*func)(void *data), void *data); |
| 459 | #else /* CONFIG_HIBERNATION */ | 451 | #else /* CONFIG_HIBERNATION */ |
| 460 | static inline void register_nosave_region(unsigned long b, unsigned long e) {} | 452 | static inline void register_nosave_region(unsigned long b, unsigned long e) {} |
| 461 | static inline void register_nosave_region_late(unsigned long b, unsigned long e) {} | ||
| 462 | static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } | 453 | static inline int swsusp_page_is_forbidden(struct page *p) { return 0; } |
| 463 | static inline void swsusp_set_page_free(struct page *p) {} | 454 | static inline void swsusp_set_page_free(struct page *p) {} |
| 464 | static inline void swsusp_unset_page_free(struct page *p) {} | 455 | static inline void swsusp_unset_page_free(struct page *p) {} |
| @@ -265,7 +265,7 @@ static inline struct ctl_table_header *register_sysctl_table(struct ctl_table * · 264 unmodified lines | |||
| 265 | return NULL; | 265 | return NULL; |
| 266 | } | 266 | } |
| 267 | 267 | ||
| 268 | static inline struct sysctl_header *register_sysctl_mount_point(const char *path) | 268 | static inline struct ctl_table_header *register_sysctl_mount_point(const char *path) |
| 269 | { | 269 | { |
| 270 | return NULL; | 270 | return NULL; |
| 271 | } | 271 | } |
| @@ -91,6 +91,12 @@ fwnode_usb_role_switch_get(struct fwnode_handle *node) · 90 unmodified lines | |||
| 91 | 91 | ||
| 92 | static inline void usb_role_switch_put(struct usb_role_switch *sw) { } | 92 | static inline void usb_role_switch_put(struct usb_role_switch *sw) { } |
| 93 | 93 | ||
| 94 | static inline struct usb_role_switch * | ||
| 95 | usb_role_switch_find_by_fwnode(const struct fwnode_handle *fwnode) | ||
| 96 | { | ||
| 97 | return NULL; | ||
| 98 | } | ||
| 99 | |||
| 94 | static inline struct usb_role_switch * | 100 | static inline struct usb_role_switch * |
| 95 | usb_role_switch_register(struct device *parent, | 101 | usb_role_switch_register(struct device *parent, |
| 96 | const struct usb_role_switch_desc *desc) | 102 | const struct usb_role_switch_desc *desc) |
| @@ -6,6 +6,8 @@ · 5 unmodified lines | |||
| 6 | #define RTR_SOLICITATION_INTERVAL (4*HZ) | 6 | #define RTR_SOLICITATION_INTERVAL (4*HZ) |
| 7 | #define RTR_SOLICITATION_MAX_INTERVAL (3600*HZ) /* 1 hour */ | 7 | #define RTR_SOLICITATION_MAX_INTERVAL (3600*HZ) /* 1 hour */ |
| 8 | 8 | ||
| 9 | #define MIN_VALID_LIFETIME (2*3600) /* 2 hours */ | ||
| 10 | |||
| 9 | #define TEMP_VALID_LIFETIME (7*86400) | 11 | #define TEMP_VALID_LIFETIME (7*86400) |
| 10 | #define TEMP_PREFERRED_LIFETIME (86400) | 12 | #define TEMP_PREFERRED_LIFETIME (86400) |
| 11 | #define REGEN_MAX_RETRY (3) | 13 | #define REGEN_MAX_RETRY (3) |
| @@ -346,7 +346,7 @@ static inline bool bond_uses_primary(struct bonding *bond) · 345 unmodified lines | |||
| 346 | 346 | ||
| 347 | static inline struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond) | 347 | static inline struct net_device *bond_option_active_slave_get_rcu(struct bonding *bond) |
| 348 | { | 348 | { |
| 349 | struct slave *slave = rcu_dereference(bond->curr_active_slave); | 349 | struct slave *slave = rcu_dereference_rtnl(bond->curr_active_slave); |
| 350 | 350 | ||
| 351 | return bond_uses_primary(bond) && slave ? slave->dev : NULL; | 351 | return bond_uses_primary(bond) && slave ? slave->dev : NULL; |
| 352 | } | 352 | } |
| @@ -525,19 +525,18 @@ static inline void ip_select_ident_segs(struct net *net, struct sk_buff *skb, · 524 unmodified lines | |||
| 525 | { | 525 | { |
| 526 | struct iphdr *iph = ip_hdr(skb); | 526 | struct iphdr *iph = ip_hdr(skb); |
| 527 | 527 | ||
| 528 | /* We had many attacks based on IPID, use the private | ||
| 529 | * generator as much as we can. | ||
| 530 | */ | ||
| 531 | if (sk && inet_sk(sk)->inet_daddr) { | ||
| 532 | iph->id = htons(inet_sk(sk)->inet_id); | ||
| 533 | inet_sk(sk)->inet_id += segs; | ||
| 534 | return; | ||
| 535 | } | ||
| 528 | if ((iph->frag_off & htons(IP_DF)) && !skb->ignore_df) { | 536 | if ((iph->frag_off & htons(IP_DF)) && !skb->ignore_df) { |
| 529 | /* This is only to work around buggy Windows95/2000 | 537 | iph->id = 0; |
| 530 | * VJ compression implementations. If the ID field | ||
| 531 | * does not change, they drop every other packet in | ||
| 532 | * a TCP stream using header compression. | ||
| 533 | */ | ||
| 534 | if (sk && inet_sk(sk)->inet_daddr) { | ||
| 535 | iph->id = htons(inet_sk(sk)->inet_id); | ||
| 536 | inet_sk(sk)->inet_id += segs; | ||
| 537 | } else { | ||
| 538 | iph->id = 0; | ||
| 539 | } | ||
| 540 | } else { | 538 | } else { |
| 539 | /* Unfortunately we need the big hammer to get a suitable IPID */ | ||
| 541 | __ip_select_ident(net, iph, segs); | 540 | __ip_select_ident(net, iph, segs); |
| 542 | } | 541 | } |
| 543 | } | 542 | } |
| @@ -282,7 +282,7 @@ static inline bool fib6_get_cookie_safe(const struct fib6_info *f6i, · 281 unmodified lines | |||
| 282 | fn = rcu_dereference(f6i->fib6_node); | 282 | fn = rcu_dereference(f6i->fib6_node); |
| 283 | 283 | ||
| 284 | if (fn) { | 284 | if (fn) { |
| 285 | *cookie = fn->fn_sernum; | 285 | *cookie = READ_ONCE(fn->fn_sernum); |
| 286 | /* pairs with smp_wmb() in __fib6_update_sernum_upto_root() */ | 286 | /* pairs with smp_wmb() in __fib6_update_sernum_upto_root() */ |
| 287 | smp_rmb(); | 287 | smp_rmb(); |
| 288 | status = true; | 288 | status = true; |
| @@ -370,7 +370,7 @@ static inline struct neighbour *ip_neigh_gw4(struct net_device *dev, · 369 unmodified lines | |||
| 370 | { | 370 | { |
| 371 | struct neighbour *neigh; | 371 | struct neighbour *neigh; |
| 372 | 372 | ||
| 373 | neigh = __ipv4_neigh_lookup_noref(dev, daddr); | 373 | neigh = __ipv4_neigh_lookup_noref(dev, (__force u32)daddr); |
| 374 | if (unlikely(!neigh)) | 374 | if (unlikely(!neigh)) |
| 375 | neigh = __neigh_create(&arp_tbl, &daddr, dev, false); | 375 | neigh = __neigh_create(&arp_tbl, &daddr, dev, false); |
| 376 | 376 | ||
| @@ -1369,6 +1369,7 @@ static inline bool tcp_checksum_complete(struct sk_buff *skb) · 1368 unmodified lines | |||
| 1369 | 1369 | ||
| 1370 | bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb); | 1370 | bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb); |
| 1371 | 1371 | ||
| 1372 | #ifdef CONFIG_INET | ||
| 1372 | void __sk_defer_free_flush(struct sock *sk); | 1373 | void __sk_defer_free_flush(struct sock *sk); |
| 1373 | 1374 | ||
| 1374 | static inline void sk_defer_free_flush(struct sock *sk) | 1375 | static inline void sk_defer_free_flush(struct sock *sk) |
| @@ -1377,6 +1378,9 @@ static inline void sk_defer_free_flush(struct sock *sk) · 2 unmodified lines | |||
| 1377 | return; | 1378 | return; |
| 1378 | __sk_defer_free_flush(sk); | 1379 | __sk_defer_free_flush(sk); |
| 1379 | } | 1380 | } |
| 1381 | #else | ||
| 1382 | static inline void sk_defer_free_flush(struct sock *sk) {} | ||
| 1383 | #endif | ||
| 1380 | 1384 | ||
| 1381 | int tcp_filter(struct sock *sk, struct sk_buff *skb); | 1385 | int tcp_filter(struct sock *sk, struct sk_buff *skb); |
| 1382 | void tcp_set_state(struct sock *sk, int state); | 1386 | void tcp_set_state(struct sock *sk, int state); |
| @@ -14,7 +14,7 @@ · 13 unmodified lines | |||
| 14 | EM(SKB_DROP_REASON_NO_SOCKET, NO_SOCKET) \ | 14 | EM(SKB_DROP_REASON_NO_SOCKET, NO_SOCKET) \ |
| 15 | EM(SKB_DROP_REASON_PKT_TOO_SMALL, PKT_TOO_SMALL) \ | 15 | EM(SKB_DROP_REASON_PKT_TOO_SMALL, PKT_TOO_SMALL) \ |
| 16 | EM(SKB_DROP_REASON_TCP_CSUM, TCP_CSUM) \ | 16 | EM(SKB_DROP_REASON_TCP_CSUM, TCP_CSUM) \ |
| 17 | EM(SKB_DROP_REASON_TCP_FILTER, TCP_FILTER) \ | 17 | EM(SKB_DROP_REASON_SOCKET_FILTER, SOCKET_FILTER) \ |
| 18 | EM(SKB_DROP_REASON_UDP_CSUM, UDP_CSUM) \ | 18 | EM(SKB_DROP_REASON_UDP_CSUM, UDP_CSUM) \ |
| 19 | EMe(SKB_DROP_REASON_MAX, MAX) | 19 | EMe(SKB_DROP_REASON_MAX, MAX) |
| 20 | 20 | ||
| @@ -794,6 +794,9 @@ RPC_SHOW_SOCKET · 793 unmodified lines | |||
| 794 | 794 | ||
| 795 | RPC_SHOW_SOCK | 795 | RPC_SHOW_SOCK |
| 796 | 796 | ||
| 797 | |||
| 798 | #include <trace/events/net_probe_common.h> | ||
| 799 | |||
| 797 | /* | 800 | /* |
| 798 | * Now redefine the EM() and EMe() macros to map the enums to the strings | 801 | * Now redefine the EM() and EMe() macros to map the enums to the strings |
| 799 | * that will be printed in the output. | 802 | * that will be printed in the output. |
| @@ -816,27 +819,32 @@ DECLARE_EVENT_CLASS(xs_socket_event, · 16 unmodified lines | |||
| 816 | __field(unsigned int, socket_state) | 819 | __field(unsigned int, socket_state) |
| 817 | __field(unsigned int, sock_state) | 820 | __field(unsigned int, sock_state) |
| 818 | __field(unsigned long long, ino) | 821 | __field(unsigned long long, ino) |
| 819 | __string(dstaddr, | 822 | __array(__u8, saddr, sizeof(struct sockaddr_in6)) |
| 820 | xprt->address_strings[RPC_DISPLAY_ADDR]) | 823 | __array(__u8, daddr, sizeof(struct sockaddr_in6)) |
| 821 | __string(dstport, | ||
| 822 | xprt->address_strings[RPC_DISPLAY_PORT]) | ||
| 823 | ), | 824 | ), |
| 824 | 825 | ||
| 825 | TP_fast_assign( | 826 | TP_fast_assign( |
| 826 | struct inode *inode = SOCK_INODE(socket); | 827 | struct inode *inode = SOCK_INODE(socket); |
| 828 | const struct sock *sk = socket->sk; | ||
| 829 | const struct inet_sock *inet = inet_sk(sk); | ||
| 830 | |||
| 831 | memset(__entry->saddr, 0, sizeof(struct sockaddr_in6)); | ||
| 832 | memset(__entry->daddr, 0, sizeof(struct sockaddr_in6)); | ||
| 833 | |||
| 834 | TP_STORE_ADDR_PORTS(__entry, inet, sk); | ||
| 835 | |||
| 827 | __entry->socket_state = socket->state; | 836 | __entry->socket_state = socket->state; |
| 828 | __entry->sock_state = socket->sk->sk_state; | 837 | __entry->sock_state = socket->sk->sk_state; |
| 829 | __entry->ino = (unsigned long long)inode->i_ino; | 838 | __entry->ino = (unsigned long long)inode->i_ino; |
| 830 | __assign_str(dstaddr, | 839 | |
| 831 | xprt->address_strings[RPC_DISPLAY_ADDR]); | ||
| 832 | __assign_str(dstport, | ||
| 833 | xprt->address_strings[RPC_DISPLAY_PORT]); | ||
| 834 | ), | 840 | ), |
| 835 | 841 | ||
| 836 | TP_printk( | 842 | TP_printk( |
| 837 | "socket:[%llu] dstaddr=%s/%s " | 843 | "socket:[%llu] srcaddr=%pISpc dstaddr=%pISpc " |
| 838 | "state=%u (%s) sk_state=%u (%s)", | 844 | "state=%u (%s) sk_state=%u (%s)", |
| 839 | __entry->ino, __get_str(dstaddr), __get_str(dstport), | 845 | __entry->ino, |
| 846 | __entry->saddr, | ||
| 847 | __entry->daddr, | ||
| 840 | __entry->socket_state, | 848 | __entry->socket_state, |
| 841 | rpc_show_socket_state(__entry->socket_state), | 849 | rpc_show_socket_state(__entry->socket_state), |
| 842 | __entry->sock_state, | 850 | __entry->sock_state, |
| @@ -866,29 +874,33 @@ DECLARE_EVENT_CLASS(xs_socket_event_done, · 23 unmodified lines | |||
| 866 | __field(unsigned int, socket_state) | 874 | __field(unsigned int, socket_state) |
| 867 | __field(unsigned int, sock_state) | 875 | __field(unsigned int, sock_state) |
| 868 | __field(unsigned long long, ino) | 876 | __field(unsigned long long, ino) |
| 869 | __string(dstaddr, | 877 | __array(__u8, saddr, sizeof(struct sockaddr_in6)) |
| 870 | xprt->address_strings[RPC_DISPLAY_ADDR]) | 878 | __array(__u8, daddr, sizeof(struct sockaddr_in6)) |
| 871 | __string(dstport, | ||
| 872 | xprt->address_strings[RPC_DISPLAY_PORT]) | ||
| 873 | ), | 879 | ), |
| 874 | 880 | ||
| 875 | TP_fast_assign( | 881 | TP_fast_assign( |
| 876 | struct inode *inode = SOCK_INODE(socket); | 882 | struct inode *inode = SOCK_INODE(socket); |
| 883 | const struct sock *sk = socket->sk; | ||
| 884 | const struct inet_sock *inet = inet_sk(sk); | ||
| 885 | |||
| 886 | memset(__entry->saddr, 0, sizeof(struct sockaddr_in6)); | ||
| 887 | memset(__entry->daddr, 0, sizeof(struct sockaddr_in6)); | ||
| 888 | |||
| 889 | TP_STORE_ADDR_PORTS(__entry, inet, sk); | ||
| 890 | |||
| 877 | __entry->socket_state = socket->state; | 891 | __entry->socket_state = socket->state; |
| 878 | __entry->sock_state = socket->sk->sk_state; | 892 | __entry->sock_state = socket->sk->sk_state; |
| 879 | __entry->ino = (unsigned long long)inode->i_ino; | 893 | __entry->ino = (unsigned long long)inode->i_ino; |
| 880 | __entry->error = error; | 894 | __entry->error = error; |
| 881 | __assign_str(dstaddr, | ||
| 882 | xprt->address_strings[RPC_DISPLAY_ADDR]); | ||
| 883 | __assign_str(dstport, | ||
| 884 | xprt->address_strings[RPC_DISPLAY_PORT]); | ||
| 885 | ), | 895 | ), |
| 886 | 896 | ||
| 887 | TP_printk( | 897 | TP_printk( |
| 888 | "error=%d socket:[%llu] dstaddr=%s/%s " | 898 | "error=%d socket:[%llu] srcaddr=%pISpc dstaddr=%pISpc " |
| 889 | "state=%u (%s) sk_state=%u (%s)", | 899 | "state=%u (%s) sk_state=%u (%s)", |
| 890 | __entry->error, | 900 | __entry->error, |
| 891 | __entry->ino, __get_str(dstaddr), __get_str(dstport), | 901 | __entry->ino, |
| 902 | __entry->saddr, | ||
| 903 | __entry->daddr, | ||
| 892 | __entry->socket_state, | 904 | __entry->socket_state, |
| 893 | rpc_show_socket_state(__entry->socket_state), | 905 | rpc_show_socket_state(__entry->socket_state), |
| 894 | __entry->sock_state, | 906 | __entry->sock_state, |
| @@ -953,7 +965,8 @@ TRACE_EVENT(rpc_socket_nospace, · 58 unmodified lines | |||
| 953 | { BIT(XPRT_REMOVE), "REMOVE" }, \ | 965 | { BIT(XPRT_REMOVE), "REMOVE" }, \ |
| 954 | { BIT(XPRT_CONGESTED), "CONGESTED" }, \ | 966 | { BIT(XPRT_CONGESTED), "CONGESTED" }, \ |
| 955 | { BIT(XPRT_CWND_WAIT), "CWND_WAIT" }, \ | 967 | { BIT(XPRT_CWND_WAIT), "CWND_WAIT" }, \ |
| 956 | { BIT(XPRT_WRITE_SPACE), "WRITE_SPACE" }) | 968 | { BIT(XPRT_WRITE_SPACE), "WRITE_SPACE" }, \ |
| 969 | { BIT(XPRT_SND_IS_COOKIE), "SND_IS_COOKIE" }) | ||
| 957 | 970 | ||
| 958 | DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class, | 971 | DECLARE_EVENT_CLASS(rpc_xprt_lifetime_class, |
| 959 | TP_PROTO( | 972 | TP_PROTO( |
| @@ -1150,8 +1163,11 @@ DECLARE_EVENT_CLASS(xprt_writelock_event, · 190 unmodified lines | |||
| 1150 | __entry->task_id = -1; | 1163 | __entry->task_id = -1; |
| 1151 | __entry->client_id = -1; | 1164 | __entry->client_id = -1; |
| 1152 | } | 1165 | } |
| 1153 | __entry->snd_task_id = xprt->snd_task ? | 1166 | if (xprt->snd_task && |
| 1154 | xprt->snd_task->tk_pid : -1; | 1167 | !test_bit(XPRT_SND_IS_COOKIE, &xprt->state)) |
| 1168 | __entry->snd_task_id = xprt->snd_task->tk_pid; | ||
| 1169 | else | ||
| 1170 | __entry->snd_task_id = -1; | ||
| 1155 | ), | 1171 | ), |
| 1156 | 1172 | ||
| 1157 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER | 1173 | TP_printk(SUNRPC_TRACE_TASK_SPECIFIER |
| @@ -1196,8 +1212,12 @@ DECLARE_EVENT_CLASS(xprt_cong_event, · 38 unmodified lines | |||
| 1196 | __entry->task_id = -1; | 1212 | __entry->task_id = -1; |
| 1197 | __entry->client_id = -1; | 1213 | __entry->client_id = -1; |
| 1198 | } | 1214 | } |
| 1199 | __entry->snd_task_id = xprt->snd_task ? | 1215 | if (xprt->snd_task && |
| 1200 | xprt->snd_task->tk_pid : -1; | 1216 | !test_bit(XPRT_SND_IS_COOKIE, &xprt->state)) |
| 1217 | __entry->snd_task_id = xprt->snd_task->tk_pid; | ||
| 1218 | else | ||
| 1219 | __entry->snd_task_id = -1; | ||
| 1220 | |||
| 1201 | __entry->cong = xprt->cong; | 1221 | __entry->cong = xprt->cong; |
| 1202 | __entry->cwnd = xprt->cwnd; | 1222 | __entry->cwnd = xprt->cwnd; |
| 1203 | __entry->wait = test_bit(XPRT_CWND_WAIT, &xprt->state); | 1223 | __entry->wait = test_bit(XPRT_CWND_WAIT, &xprt->state); |
| @@ -23,8 +23,9 @@ · 22 unmodified lines | |||
| 23 | 23 | ||
| 24 | #undef __get_rel_dynamic_array | 24 | #undef __get_rel_dynamic_array |
| 25 | #define __get_rel_dynamic_array(field) \ | 25 | #define __get_rel_dynamic_array(field) \ |
| 26 | ((void *)(&__entry->__rel_loc_##field) + \ | 26 | ((void *)__entry + \ |
| 27 | sizeof(__entry->__rel_loc_##field) + \ | 27 | offsetof(typeof(*__entry), __rel_loc_##field) + \ |
| 28 | sizeof(__entry->__rel_loc_##field) + \ | ||
| 28 | (__entry->__rel_loc_##field & 0xffff)) | 29 | (__entry->__rel_loc_##field & 0xffff)) |
| 29 | 30 | ||
| 30 | #undef __get_rel_dynamic_array_len | 31 | #undef __get_rel_dynamic_array_len |
| @@ -128,7 +128,7 @@ TRACE_MAKE_SYSTEM_STR(); · 127 unmodified lines | |||
| 128 | struct trace_event_raw_##name { \ | 128 | struct trace_event_raw_##name { \ |
| 129 | struct trace_entry ent; \ | 129 | struct trace_entry ent; \ |
| 130 | tstruct \ | 130 | tstruct \ |
| 131 | char __data[0]; \ | 131 | char __data[]; \ |
| 132 | }; \ | 132 | }; \ |
| 133 | \ | 133 | \ |
| 134 | static struct trace_event_class event_class_##name; | 134 | static struct trace_event_class event_class_##name; |
| @@ -318,9 +318,10 @@ TRACE_MAKE_SYSTEM_STR(); · 183 unmodified lines | |||
| 318 | #define __get_str(field) ((char *)__get_dynamic_array(field)) | 318 | #define __get_str(field) ((char *)__get_dynamic_array(field)) |
| 319 | 319 | ||
| 320 | #undef __get_rel_dynamic_array | 320 | #undef __get_rel_dynamic_array |
| 321 | #define __get_rel_dynamic_array(field) \ | 321 | #define __get_rel_dynamic_array(field) \ |
| 322 | ((void *)(&__entry->__rel_loc_##field) + \ | 322 | ((void *)__entry + \ |
| 323 | sizeof(__entry->__rel_loc_##field) + \ | 323 | offsetof(typeof(*__entry), __rel_loc_##field) + \ |
| 324 | sizeof(__entry->__rel_loc_##field) + \ | ||
| 324 | (__entry->__rel_loc_##field & 0xffff)) | 325 | (__entry->__rel_loc_##field & 0xffff)) |
| 325 | 326 | ||
| 326 | #undef __get_rel_dynamic_array_len | 327 | #undef __get_rel_dynamic_array_len |
| @@ -0,0 +1,35 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
| 2 | |||
| 3 | #ifndef _UAPI_LINUX_CYCLADES_H | ||
| 4 | #define _UAPI_LINUX_CYCLADES_H | ||
| 5 | |||
| 6 | #warning "Support for features provided by this header has been removed" | ||
| 7 | #warning "Please consider updating your code" | ||
| 8 | |||
| 9 | struct cyclades_monitor { | ||
| 10 | unsigned long int_count; | ||
| 11 | unsigned long char_count; | ||
| 12 | unsigned long char_max; | ||
| 13 | unsigned long char_last; | ||
| 14 | }; | ||
| 15 | |||
| 16 | #define CYGETMON 0x435901 | ||
| 17 | #define CYGETTHRESH 0x435902 | ||
| 18 | #define CYSETTHRESH 0x435903 | ||
| 19 | #define CYGETDEFTHRESH 0x435904 | ||
| 20 | #define CYSETDEFTHRESH 0x435905 | ||
| 21 | #define CYGETTIMEOUT 0x435906 | ||
| 22 | #define CYSETTIMEOUT 0x435907 | ||
| 23 | #define CYGETDEFTIMEOUT 0x435908 | ||
| 24 | #define CYSETDEFTIMEOUT 0x435909 | ||
| 25 | #define CYSETRFLOW 0x43590a | ||
| 26 | #define CYGETRFLOW 0x43590b | ||
| 27 | #define CYSETRTSDTR_INV 0x43590c | ||
| 28 | #define CYGETRTSDTR_INV 0x43590d | ||
| 29 | #define CYZSETPOLLCYCLE 0x43590e | ||
| 30 | #define CYZGETPOLLCYCLE 0x43590f | ||
| 31 | #define CYGETCD1400VER 0x435910 | ||
| 32 | #define CYSETWAIT 0x435912 | ||
| 33 | #define CYGETWAIT 0x435913 | ||
| 34 | |||
| 35 | #endif /* _UAPI_LINUX_CYCLADES_H */ | ||
| @@ -1133,6 +1133,7 @@ struct kvm_ppc_resize_hpt { · 1132 unmodified lines | |||
| 1133 | #define KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM 206 | 1133 | #define KVM_CAP_VM_MOVE_ENC_CONTEXT_FROM 206 |
| 1134 | #define KVM_CAP_VM_GPA_BITS 207 | 1134 | #define KVM_CAP_VM_GPA_BITS 207 |
| 1135 | #define KVM_CAP_XSAVE2 208 | 1135 | #define KVM_CAP_XSAVE2 208 |
| 1136 | #define KVM_CAP_SYS_ATTRIBUTES 209 | ||
| 1136 | 1137 | ||
| 1137 | #ifdef KVM_CAP_IRQ_ROUTING | 1138 | #ifdef KVM_CAP_IRQ_ROUTING |
| 1138 | 1139 | ||