kabi: add paddings (part 2)
Port padding from TK4, exclude: - bsg_ops, struct is gone - bsg_class_device, struct is gone - hd_struct, struct is gone - cgroup_cls_state, the new version is massive simplified, kabi adds too much overhead, padding done in cgroup_subsys_state instead Upstream: no Signed-off-by: Kairui Song <kasong@tencent.com>
This commit is contained in:
parent
f6ba444c8e
commit
e8beb518cf
|
@ -114,6 +114,11 @@ struct blkcg {
|
||||||
#ifdef CONFIG_CGROUP_WRITEBACK
|
#ifdef CONFIG_CGROUP_WRITEBACK
|
||||||
struct list_head cgwb_list;
|
struct list_head cgwb_list;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct blkcg *css_to_blkcg(struct cgroup_subsys_state *css)
|
static inline struct blkcg *css_to_blkcg(struct cgroup_subsys_state *css)
|
||||||
|
@ -183,6 +188,9 @@ struct blkcg_policy {
|
||||||
blkcg_pol_free_pd_fn *pd_free_fn;
|
blkcg_pol_free_pd_fn *pd_free_fn;
|
||||||
blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn;
|
blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn;
|
||||||
blkcg_pol_stat_pd_fn *pd_stat_fn;
|
blkcg_pol_stat_pd_fn *pd_stat_fn;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct blkcg blkcg_root;
|
extern struct blkcg blkcg_root;
|
||||||
|
|
|
@ -203,6 +203,11 @@ struct backing_dev_info {
|
||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
struct dentry *debug_dir;
|
struct dentry *debug_dir;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct wb_lock_cookie {
|
struct wb_lock_cookie {
|
||||||
|
|
|
@ -75,6 +75,11 @@ struct block_device {
|
||||||
* path
|
* path
|
||||||
*/
|
*/
|
||||||
struct device bd_device;
|
struct device bd_device;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
#define bdev_whole(_bdev) \
|
#define bdev_whole(_bdev) \
|
||||||
|
|
|
@ -210,6 +210,11 @@ struct gendisk {
|
||||||
* devices that do not have multiple independent access ranges.
|
* devices that do not have multiple independent access ranges.
|
||||||
*/
|
*/
|
||||||
struct blk_independent_access_ranges *ia_ranges;
|
struct blk_independent_access_ranges *ia_ranges;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline bool disk_live(struct gendisk *disk)
|
static inline bool disk_live(struct gendisk *disk)
|
||||||
|
|
|
@ -200,6 +200,11 @@ struct cgroup_subsys_state {
|
||||||
* fields of the containing structure.
|
* fields of the containing structure.
|
||||||
*/
|
*/
|
||||||
struct cgroup_subsys_state *parent;
|
struct cgroup_subsys_state *parent;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -525,6 +530,11 @@ struct cgroup {
|
||||||
struct bpf_local_storage __rcu *bpf_cgrp_storage;
|
struct bpf_local_storage __rcu *bpf_cgrp_storage;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
/* All ancestors including self */
|
/* All ancestors including self */
|
||||||
struct cgroup *ancestors[];
|
struct cgroup *ancestors[];
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,6 +24,9 @@ struct rdma_cgroup {
|
||||||
* that belongs to this cgroup.
|
* that belongs to this cgroup.
|
||||||
*/
|
*/
|
||||||
struct list_head rpools;
|
struct list_head rpools;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rdmacg_device {
|
struct rdmacg_device {
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/lockref.h>
|
#include <linux/lockref.h>
|
||||||
#include <linux/stringhash.h>
|
#include <linux/stringhash.h>
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct path;
|
struct path;
|
||||||
struct file;
|
struct file;
|
||||||
|
@ -111,6 +112,11 @@ struct dentry {
|
||||||
struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */
|
struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */
|
||||||
struct rcu_head d_rcu;
|
struct rcu_head d_rcu;
|
||||||
} d_u;
|
} d_u;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -140,6 +146,11 @@ struct dentry_operations {
|
||||||
struct vfsmount *(*d_automount)(struct path *);
|
struct vfsmount *(*d_automount)(struct path *);
|
||||||
int (*d_manage)(const struct path *, bool);
|
int (*d_manage)(const struct path *, bool);
|
||||||
struct dentry *(*d_real)(struct dentry *, const struct inode *);
|
struct dentry *(*d_real)(struct dentry *, const struct inode *);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} ____cacheline_aligned;
|
} ____cacheline_aligned;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -19,6 +19,8 @@
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <linux/device/bus.h>
|
#include <linux/device/bus.h>
|
||||||
|
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct device;
|
struct device;
|
||||||
struct fwnode_handle;
|
struct fwnode_handle;
|
||||||
|
|
||||||
|
@ -69,6 +71,9 @@ struct class {
|
||||||
void (*get_ownership)(const struct device *dev, kuid_t *uid, kgid_t *gid);
|
void (*get_ownership)(const struct device *dev, kuid_t *uid, kgid_t *gid);
|
||||||
|
|
||||||
const struct dev_pm_ops *pm;
|
const struct dev_pm_ops *pm;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct class_dev_iter {
|
struct class_dev_iter {
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include <linux/pgtable.h>
|
#include <linux/pgtable.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct cma;
|
struct cma;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -82,6 +84,11 @@ struct dma_map_ops {
|
||||||
size_t (*max_mapping_size)(struct device *dev);
|
size_t (*max_mapping_size)(struct device *dev);
|
||||||
size_t (*opt_mapping_size)(void);
|
size_t (*opt_mapping_size)(void);
|
||||||
unsigned long (*get_merge_boundary)(struct device *dev);
|
unsigned long (*get_merge_boundary)(struct device *dev);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_DMA_OPS
|
#ifdef CONFIG_DMA_OPS
|
||||||
|
|
|
@ -912,6 +912,15 @@ struct ethtool_ops {
|
||||||
int (*set_mm)(struct net_device *dev, struct ethtool_mm_cfg *cfg,
|
int (*set_mm)(struct net_device *dev, struct ethtool_mm_cfg *cfg,
|
||||||
struct netlink_ext_ack *extack);
|
struct netlink_ext_ack *extack);
|
||||||
void (*get_mm_stats)(struct net_device *dev, struct ethtool_mm_stats *stats);
|
void (*get_mm_stats)(struct net_device *dev, struct ethtool_mm_stats *stats);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
KABI_RESERVE(5);
|
||||||
|
KABI_RESERVE(6);
|
||||||
|
KABI_RESERVE(7);
|
||||||
|
KABI_RESERVE(8);
|
||||||
};
|
};
|
||||||
|
|
||||||
int ethtool_check_ops(const struct ethtool_ops *ops);
|
int ethtool_check_ops(const struct ethtool_ops *ops);
|
||||||
|
|
|
@ -31,6 +31,9 @@ struct file_lock;
|
||||||
struct file_lock_operations {
|
struct file_lock_operations {
|
||||||
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
|
void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
|
||||||
void (*fl_release_private)(struct file_lock *);
|
void (*fl_release_private)(struct file_lock *);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct lock_manager_operations {
|
struct lock_manager_operations {
|
||||||
|
@ -45,6 +48,9 @@ struct lock_manager_operations {
|
||||||
bool (*lm_breaker_owns_lease)(struct file_lock *);
|
bool (*lm_breaker_owns_lease)(struct file_lock *);
|
||||||
bool (*lm_lock_expirable)(struct file_lock *cfl);
|
bool (*lm_lock_expirable)(struct file_lock *cfl);
|
||||||
void (*lm_expire_lock)(void);
|
void (*lm_expire_lock)(void);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct lock_manager {
|
struct lock_manager {
|
||||||
|
|
|
@ -441,6 +441,9 @@ struct address_space_operations {
|
||||||
sector_t *span);
|
sector_t *span);
|
||||||
void (*swap_deactivate)(struct file *file);
|
void (*swap_deactivate)(struct file *file);
|
||||||
int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter);
|
int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct address_space_operations empty_aops;
|
extern const struct address_space_operations empty_aops;
|
||||||
|
@ -750,6 +753,9 @@ struct inode {
|
||||||
struct fsverity_info *i_verity_info;
|
struct fsverity_info *i_verity_info;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
void *i_private; /* fs or device private pointer */
|
void *i_private; /* fs or device private pointer */
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
|
@ -1897,6 +1903,11 @@ struct file_operations {
|
||||||
int (*uring_cmd)(struct io_uring_cmd *ioucmd, unsigned int issue_flags);
|
int (*uring_cmd)(struct io_uring_cmd *ioucmd, unsigned int issue_flags);
|
||||||
int (*uring_cmd_iopoll)(struct io_uring_cmd *, struct io_comp_batch *,
|
int (*uring_cmd_iopoll)(struct io_uring_cmd *, struct io_comp_batch *,
|
||||||
unsigned int poll_flags);
|
unsigned int poll_flags);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
/* Wrap a directory iterator that needs exclusive inode access */
|
/* Wrap a directory iterator that needs exclusive inode access */
|
||||||
|
@ -1947,6 +1958,11 @@ struct inode_operations {
|
||||||
struct dentry *dentry, struct fileattr *fa);
|
struct dentry *dentry, struct fileattr *fa);
|
||||||
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
|
||||||
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} ____cacheline_aligned;
|
} ____cacheline_aligned;
|
||||||
|
|
||||||
static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
|
static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
|
||||||
|
@ -2329,6 +2345,9 @@ struct file_system_type {
|
||||||
struct lock_class_key i_mutex_key;
|
struct lock_class_key i_mutex_key;
|
||||||
struct lock_class_key invalidate_lock_key;
|
struct lock_class_key invalidate_lock_key;
|
||||||
struct lock_class_key i_mutex_dir_key;
|
struct lock_class_key i_mutex_dir_key;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
|
#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
|
||||||
|
|
|
@ -255,6 +255,11 @@ struct fsnotify_group {
|
||||||
} fanotify_data;
|
} fanotify_data;
|
||||||
#endif /* CONFIG_FANOTIFY */
|
#endif /* CONFIG_FANOTIFY */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -61,6 +61,11 @@ struct hugetlb_cgroup {
|
||||||
/* Handle for "hugetlb.events.local" */
|
/* Handle for "hugetlb.events.local" */
|
||||||
struct cgroup_file events_local_file[HUGE_MAX_HSTATE];
|
struct cgroup_file events_local_file[HUGE_MAX_HSTATE];
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
struct hugetlb_cgroup_per_node *nodeinfo[];
|
struct hugetlb_cgroup_per_node *nodeinfo[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,8 @@
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
#include <linux/minmax.h>
|
#include <linux/minmax.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#include <linux/kabi.h>
|
||||||
/*
|
/*
|
||||||
* Resources are tree-like, allowing
|
* Resources are tree-like, allowing
|
||||||
* nesting etc..
|
* nesting etc..
|
||||||
|
@ -25,6 +27,11 @@ struct resource {
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
unsigned long desc;
|
unsigned long desc;
|
||||||
struct resource *parent, *sibling, *child;
|
struct resource *parent, *sibling, *child;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -83,6 +83,12 @@ struct ipv6_devconf {
|
||||||
__u8 ioam6_enabled;
|
__u8 ioam6_enabled;
|
||||||
__u8 ndisc_evict_nocarrier;
|
__u8 ndisc_evict_nocarrier;
|
||||||
|
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
struct ctl_table_header *sysctl_header;
|
struct ctl_table_header *sysctl_header;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -242,6 +242,10 @@ struct kernfs_syscall_ops {
|
||||||
const char *new_name);
|
const char *new_name);
|
||||||
int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,
|
int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,
|
||||||
struct kernfs_root *root);
|
struct kernfs_root *root);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kernfs_node *kernfs_root_to_node(struct kernfs_root *root);
|
struct kernfs_node *kernfs_root_to_node(struct kernfs_root *root);
|
||||||
|
@ -316,6 +320,9 @@ struct kernfs_ops {
|
||||||
struct poll_table_struct *pt);
|
struct poll_table_struct *pt);
|
||||||
|
|
||||||
int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);
|
int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -79,6 +79,9 @@ struct kobject {
|
||||||
#ifdef CONFIG_DEBUG_KOBJECT_RELEASE
|
#ifdef CONFIG_DEBUG_KOBJECT_RELEASE
|
||||||
struct delayed_work release;
|
struct delayed_work release;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
__printf(2, 3) int kobject_set_name(struct kobject *kobj, const char *name, ...);
|
__printf(2, 3) int kobject_set_name(struct kobject *kobj, const char *name, ...);
|
||||||
|
@ -120,6 +123,8 @@ struct kobj_type {
|
||||||
const struct kobj_ns_type_operations *(*child_ns_type)(const struct kobject *kobj);
|
const struct kobj_ns_type_operations *(*child_ns_type)(const struct kobject *kobj);
|
||||||
const void *(*namespace)(const struct kobject *kobj);
|
const void *(*namespace)(const struct kobject *kobj);
|
||||||
void (*get_ownership)(const struct kobject *kobj, kuid_t *uid, kgid_t *gid);
|
void (*get_ownership)(const struct kobject *kobj, kuid_t *uid, kgid_t *gid);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct kobj_uevent_env {
|
struct kobj_uevent_env {
|
||||||
|
@ -170,6 +175,9 @@ struct kset {
|
||||||
spinlock_t list_lock;
|
spinlock_t list_lock;
|
||||||
struct kobject kobj;
|
struct kobject kobj;
|
||||||
const struct kset_uevent_ops *uevent_ops;
|
const struct kset_uevent_ops *uevent_ops;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
void kset_init(struct kset *kset);
|
void kset_init(struct kset *kset);
|
||||||
|
|
|
@ -324,6 +324,11 @@ struct mem_cgroup {
|
||||||
struct list_head event_list;
|
struct list_head event_list;
|
||||||
spinlock_t event_list_lock;
|
spinlock_t event_list_lock;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
||||||
struct deferred_split deferred_split_queue;
|
struct deferred_split deferred_split_queue;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -139,11 +139,13 @@ struct dev_pagemap {
|
||||||
const struct dev_pagemap_ops *ops;
|
const struct dev_pagemap_ops *ops;
|
||||||
void *owner;
|
void *owner;
|
||||||
int nr_range;
|
int nr_range;
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
KABI_RESERVE(4);
|
KABI_RESERVE(4);
|
||||||
KABI_RESERVE(5);
|
KABI_RESERVE(5);
|
||||||
|
|
||||||
union {
|
union {
|
||||||
struct range range;
|
struct range range;
|
||||||
DECLARE_FLEX_ARRAY(struct range, ranges);
|
DECLARE_FLEX_ARRAY(struct range, ranges);
|
||||||
|
|
|
@ -631,6 +631,7 @@ struct vm_operations_struct {
|
||||||
*/
|
*/
|
||||||
struct page *(*find_special_page)(struct vm_area_struct *vma,
|
struct page *(*find_special_page)(struct vm_area_struct *vma,
|
||||||
unsigned long addr);
|
unsigned long addr);
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
|
|
|
@ -221,6 +221,9 @@ struct mmu_notifier_ops {
|
||||||
*/
|
*/
|
||||||
struct mmu_notifier *(*alloc_notifier)(struct mm_struct *mm);
|
struct mmu_notifier *(*alloc_notifier)(struct mm_struct *mm);
|
||||||
void (*free_notifier)(struct mmu_notifier *subscription);
|
void (*free_notifier)(struct mmu_notifier *subscription);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -240,6 +243,8 @@ struct mmu_notifier {
|
||||||
struct mm_struct *mm;
|
struct mm_struct *mm;
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
unsigned int users;
|
unsigned int users;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -980,6 +980,9 @@ struct zone {
|
||||||
/* Zone statistics */
|
/* Zone statistics */
|
||||||
atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
|
atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
|
||||||
atomic_long_t vm_numa_event[NR_VM_NUMA_EVENT_ITEMS];
|
atomic_long_t vm_numa_event[NR_VM_NUMA_EVENT_ITEMS];
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
} ____cacheline_internodealigned_in_smp;
|
} ____cacheline_internodealigned_in_smp;
|
||||||
|
|
||||||
enum pgdat_flags {
|
enum pgdat_flags {
|
||||||
|
@ -1398,6 +1401,9 @@ typedef struct pglist_data {
|
||||||
#ifdef CONFIG_MEMORY_FAILURE
|
#ifdef CONFIG_MEMORY_FAILURE
|
||||||
struct memory_failure_stats mf_stats;
|
struct memory_failure_stats mf_stats;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
} pg_data_t;
|
} pg_data_t;
|
||||||
|
|
||||||
#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
|
#define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages)
|
||||||
|
|
|
@ -479,6 +479,11 @@ struct module {
|
||||||
/* Section attributes */
|
/* Section attributes */
|
||||||
struct module_sect_attrs *sect_attrs;
|
struct module_sect_attrs *sect_attrs;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
/* Notes attributes */
|
/* Notes attributes */
|
||||||
struct module_notes_attrs *notes_attrs;
|
struct module_notes_attrs *notes_attrs;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -223,6 +223,10 @@ struct proto_ops {
|
||||||
int (*sendmsg_locked)(struct sock *sk, struct msghdr *msg,
|
int (*sendmsg_locked)(struct sock *sk, struct msghdr *msg,
|
||||||
size_t size);
|
size_t size);
|
||||||
int (*set_rcvlowat)(struct sock *sk, int val);
|
int (*set_rcvlowat)(struct sock *sk, int val);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DECLARE_SOCKADDR(type, dst, src) \
|
#define DECLARE_SOCKADDR(type, dst, src) \
|
||||||
|
|
|
@ -319,6 +319,9 @@ struct header_ops {
|
||||||
const unsigned char *haddr);
|
const unsigned char *haddr);
|
||||||
bool (*validate)(const char *ll_header, unsigned int len);
|
bool (*validate)(const char *ll_header, unsigned int len);
|
||||||
__be16 (*parse_protocol)(const struct sk_buff *skb);
|
__be16 (*parse_protocol)(const struct sk_buff *skb);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These flag bits are private to the generic network queueing
|
/* These flag bits are private to the generic network queueing
|
||||||
|
@ -380,6 +383,11 @@ struct napi_struct {
|
||||||
/* control-path-only fields follow */
|
/* control-path-only fields follow */
|
||||||
struct list_head dev_list;
|
struct list_head dev_list;
|
||||||
struct hlist_node napi_hash_node;
|
struct hlist_node napi_hash_node;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -658,6 +666,10 @@ struct netdev_queue {
|
||||||
#ifdef CONFIG_BQL
|
#ifdef CONFIG_BQL
|
||||||
struct dql dql;
|
struct dql dql;
|
||||||
#endif
|
#endif
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} ____cacheline_aligned_in_smp;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
|
||||||
extern int sysctl_fb_tunnels_only_for_init_net;
|
extern int sysctl_fb_tunnels_only_for_init_net;
|
||||||
|
@ -1038,6 +1050,11 @@ struct xfrmdev_ops {
|
||||||
int (*xdo_dev_policy_add) (struct xfrm_policy *x, struct netlink_ext_ack *extack);
|
int (*xdo_dev_policy_add) (struct xfrm_policy *x, struct netlink_ext_ack *extack);
|
||||||
void (*xdo_dev_policy_delete) (struct xfrm_policy *x);
|
void (*xdo_dev_policy_delete) (struct xfrm_policy *x);
|
||||||
void (*xdo_dev_policy_free) (struct xfrm_policy *x);
|
void (*xdo_dev_policy_free) (struct xfrm_policy *x);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1645,6 +1662,11 @@ struct net_device_ops {
|
||||||
int (*ndo_hwtstamp_set)(struct net_device *dev,
|
int (*ndo_hwtstamp_set)(struct net_device *dev,
|
||||||
struct kernel_hwtstamp_config *kernel_config,
|
struct kernel_hwtstamp_config *kernel_config,
|
||||||
struct netlink_ext_ack *extack);
|
struct netlink_ext_ack *extack);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2417,6 +2439,11 @@ struct net_device {
|
||||||
struct rtnl_hw_stats64 *offload_xstats_l3;
|
struct rtnl_hw_stats64 *offload_xstats_l3;
|
||||||
|
|
||||||
struct devlink_port *devlink_port;
|
struct devlink_port *devlink_port;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
#define to_net_dev(d) container_of(d, struct net_device, dev)
|
||||||
|
|
||||||
|
@ -2711,6 +2738,11 @@ struct packet_type {
|
||||||
struct net *af_packet_net;
|
struct net *af_packet_net;
|
||||||
void *af_packet_priv;
|
void *af_packet_priv;
|
||||||
struct list_head list;
|
struct list_head list;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct offload_callbacks {
|
struct offload_callbacks {
|
||||||
|
|
|
@ -45,6 +45,10 @@ struct hotplug_slot_ops {
|
||||||
int (*get_latch_status) (struct hotplug_slot *slot, u8 *value);
|
int (*get_latch_status) (struct hotplug_slot *slot, u8 *value);
|
||||||
int (*get_adapter_status) (struct hotplug_slot *slot, u8 *value);
|
int (*get_adapter_status) (struct hotplug_slot *slot, u8 *value);
|
||||||
int (*reset_slot) (struct hotplug_slot *slot, bool probe);
|
int (*reset_slot) (struct hotplug_slot *slot, bool probe);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -63,6 +67,9 @@ struct hotplug_slot {
|
||||||
struct pci_slot *pci_slot;
|
struct pci_slot *pci_slot;
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
const char *mod_name;
|
const char *mod_name;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline const char *hotplug_slot_name(const struct hotplug_slot *slot)
|
static inline const char *hotplug_slot_name(const struct hotplug_slot *slot)
|
||||||
|
|
|
@ -1045,6 +1045,11 @@ struct perf_cgroup_info {
|
||||||
struct perf_cgroup {
|
struct perf_cgroup {
|
||||||
struct cgroup_subsys_state css;
|
struct cgroup_subsys_state css;
|
||||||
struct perf_cgroup_info __percpu *info;
|
struct perf_cgroup_info __percpu *info;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -306,6 +306,11 @@ struct dquot {
|
||||||
loff_t dq_off; /* Offset of dquot on disk [dq_lock, stable once set] */
|
loff_t dq_off; /* Offset of dquot on disk [dq_lock, stable once set] */
|
||||||
unsigned long dq_flags; /* See DQ_* */
|
unsigned long dq_flags; /* See DQ_* */
|
||||||
struct mem_dqblk dq_dqb; /* Diskquota usage [dq_dqb_lock] */
|
struct mem_dqblk dq_dqb; /* Diskquota usage [dq_dqb_lock] */
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Operations which must be implemented by each quota format */
|
/* Operations which must be implemented by each quota format */
|
||||||
|
@ -318,6 +323,9 @@ struct quota_format_ops {
|
||||||
int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */
|
int (*commit_dqblk)(struct dquot *dquot); /* Write structure for one user */
|
||||||
int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped */
|
int (*release_dqblk)(struct dquot *dquot); /* Called when last reference to dquot is being dropped */
|
||||||
int (*get_next_id)(struct super_block *sb, struct kqid *qid); /* Get next ID with existing structure in the quota file */
|
int (*get_next_id)(struct super_block *sb, struct kqid *qid); /* Get next ID with existing structure in the quota file */
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Operations working with dquots */
|
/* Operations working with dquots */
|
||||||
|
@ -337,6 +345,9 @@ struct dquot_operations {
|
||||||
int (*get_inode_usage) (struct inode *, qsize_t *);
|
int (*get_inode_usage) (struct inode *, qsize_t *);
|
||||||
/* Get next ID with active quota structure */
|
/* Get next ID with active quota structure */
|
||||||
int (*get_next_id) (struct super_block *sb, struct kqid *qid);
|
int (*get_next_id) (struct super_block *sb, struct kqid *qid);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct path;
|
struct path;
|
||||||
|
@ -440,6 +451,9 @@ struct quotactl_ops {
|
||||||
int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
|
int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);
|
||||||
int (*get_state)(struct super_block *, struct qc_state *);
|
int (*get_state)(struct super_block *, struct qc_state *);
|
||||||
int (*rm_xquota)(struct super_block *, unsigned int);
|
int (*rm_xquota)(struct super_block *, unsigned int);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct quota_format_type {
|
struct quota_format_type {
|
||||||
|
|
|
@ -612,6 +612,7 @@ struct sched_rt_entity {
|
||||||
/* rq "owned" by this entity/group: */
|
/* rq "owned" by this entity/group: */
|
||||||
struct rt_rq *my_q;
|
struct rt_rq *my_q;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
@ -687,6 +688,7 @@ struct sched_dl_entity {
|
||||||
*/
|
*/
|
||||||
struct sched_dl_entity *pi_se;
|
struct sched_dl_entity *pi_se;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
|
@ -1558,6 +1560,11 @@ struct task_struct {
|
||||||
*/
|
*/
|
||||||
randomized_struct_fields_end
|
randomized_struct_fields_end
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
/* CPU-specific state of this task: */
|
/* CPU-specific state of this task: */
|
||||||
struct thread_struct thread;
|
struct thread_struct thread;
|
||||||
|
|
||||||
|
|
|
@ -251,6 +251,7 @@ struct signal_struct {
|
||||||
* creation time and not embedded directly into other structure.
|
* creation time and not embedded directly into other structure.
|
||||||
* So it is also safe to extend the size of the structure.
|
* So it is also safe to extend the size of the structure.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
|
|
|
@ -83,6 +83,7 @@ struct stack_trace {
|
||||||
unsigned int nr_entries, max_entries;
|
unsigned int nr_entries, max_entries;
|
||||||
unsigned long *entries;
|
unsigned long *entries;
|
||||||
unsigned int skip; /* input argument: How many entries to skip */
|
unsigned int skip; /* input argument: How many entries to skip */
|
||||||
|
KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void save_stack_trace(struct stack_trace *trace);
|
extern void save_stack_trace(struct stack_trace *trace);
|
||||||
|
|
|
@ -26,6 +26,7 @@ struct timer_list {
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_LOCKDEP
|
#ifdef CONFIG_LOCKDEP
|
||||||
|
|
|
@ -102,6 +102,11 @@ struct user_namespace {
|
||||||
struct ucounts *ucounts;
|
struct ucounts *ucounts;
|
||||||
long ucount_max[UCOUNT_COUNTS];
|
long ucount_max[UCOUNT_COUNTS];
|
||||||
long rlimit_max[UCOUNT_RLIMIT_COUNTS];
|
long rlimit_max[UCOUNT_RLIMIT_COUNTS];
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
struct ucounts {
|
struct ucounts {
|
||||||
|
|
|
@ -102,6 +102,9 @@ struct work_struct {
|
||||||
#ifdef CONFIG_LOCKDEP
|
#ifdef CONFIG_LOCKDEP
|
||||||
struct lockdep_map lockdep_map;
|
struct lockdep_map lockdep_map;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define WORK_DATA_INIT() ATOMIC_LONG_INIT((unsigned long)WORK_STRUCT_NO_POOL)
|
#define WORK_DATA_INIT() ATOMIC_LONG_INIT((unsigned long)WORK_STRUCT_NO_POOL)
|
||||||
|
@ -115,6 +118,8 @@ struct delayed_work {
|
||||||
/* target workqueue and CPU ->timer uses to queue ->work */
|
/* target workqueue and CPU ->timer uses to queue ->work */
|
||||||
struct workqueue_struct *wq;
|
struct workqueue_struct *wq;
|
||||||
int cpu;
|
int cpu;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct rcu_work {
|
struct rcu_work {
|
||||||
|
|
|
@ -89,6 +89,10 @@ struct writeback_control {
|
||||||
size_t wb_lcand_bytes; /* bytes written by last candidate */
|
size_t wb_lcand_bytes; /* bytes written by last candidate */
|
||||||
size_t wb_tcand_bytes; /* bytes written by this candidate */
|
size_t wb_tcand_bytes; /* bytes written by this candidate */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline blk_opf_t wbc_to_write_flags(struct writeback_control *wbc)
|
static inline blk_opf_t wbc_to_write_flags(struct writeback_control *wbc)
|
||||||
|
|
|
@ -241,6 +241,11 @@ typedef struct port {
|
||||||
struct port *next_port_in_aggregator; /* Next port on the linked list of the parent aggregator */
|
struct port *next_port_in_aggregator; /* Next port on the linked list of the parent aggregator */
|
||||||
u32 transaction_id; /* continuous number for identification of Marker PDU's; */
|
u32 transaction_id; /* continuous number for identification of Marker PDU's; */
|
||||||
struct lacpdu lacpdu; /* the lacpdu that will be sent for this port */
|
struct lacpdu lacpdu; /* the lacpdu that will be sent for this port */
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} port_t;
|
} port_t;
|
||||||
|
|
||||||
/* system structure */
|
/* system structure */
|
||||||
|
|
|
@ -151,6 +151,9 @@ struct bond_params {
|
||||||
|
|
||||||
/* 2 bytes of padding : see ether_addr_equal_64bits() */
|
/* 2 bytes of padding : see ether_addr_equal_64bits() */
|
||||||
u8 ad_actor_system[ETH_ALEN + 2];
|
u8 ad_actor_system[ETH_ALEN + 2];
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct slave {
|
struct slave {
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#define __NET_DCBNL_H__
|
#define __NET_DCBNL_H__
|
||||||
|
|
||||||
#include <linux/dcbnl.h>
|
#include <linux/dcbnl.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct net_device;
|
struct net_device;
|
||||||
|
|
||||||
|
@ -131,6 +132,11 @@ struct dcbnl_rtnl_ops {
|
||||||
/* rewrite */
|
/* rewrite */
|
||||||
int (*dcbnl_setrewr)(struct net_device *dev, struct dcb_app *app);
|
int (*dcbnl_setrewr)(struct net_device *dev, struct dcb_app *app);
|
||||||
int (*dcbnl_delrewr)(struct net_device *dev, struct dcb_app *app);
|
int (*dcbnl_delrewr)(struct net_device *dev, struct dcb_app *app);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __NET_DCBNL_H__ */
|
#endif /* __NET_DCBNL_H__ */
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <net/neighbour.h>
|
#include <net/neighbour.h>
|
||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <linux/indirect_call_wrapper.h>
|
#include <linux/indirect_call_wrapper.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct sk_buff;
|
struct sk_buff;
|
||||||
|
|
||||||
|
@ -92,6 +93,9 @@ struct dst_entry {
|
||||||
#ifdef CONFIG_64BIT
|
#ifdef CONFIG_64BIT
|
||||||
struct lwtunnel_state *lwtstate;
|
struct lwtunnel_state *lwtstate;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dst_metrics {
|
struct dst_metrics {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <linux/percpu_counter.h>
|
#include <linux/percpu_counter.h>
|
||||||
#include <linux/cache.h>
|
#include <linux/cache.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct dst_entry;
|
struct dst_entry;
|
||||||
struct kmem_cachep;
|
struct kmem_cachep;
|
||||||
|
@ -40,6 +41,11 @@ struct dst_ops {
|
||||||
|
|
||||||
struct kmem_cache *kmem_cachep;
|
struct kmem_cache *kmem_cachep;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
|
|
||||||
struct percpu_counter pcpuc_entries ____cacheline_aligned_in_smp;
|
struct percpu_counter pcpuc_entries ____cacheline_aligned_in_smp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <net/rtnetlink.h>
|
#include <net/rtnetlink.h>
|
||||||
#include <net/fib_notifier.h>
|
#include <net/fib_notifier.h>
|
||||||
#include <linux/indirect_call_wrapper.h>
|
#include <linux/indirect_call_wrapper.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct fib_kuid_range {
|
struct fib_kuid_range {
|
||||||
kuid_t start;
|
kuid_t start;
|
||||||
|
@ -44,6 +45,11 @@ struct fib_rule {
|
||||||
struct fib_rule_port_range sport_range;
|
struct fib_rule_port_range sport_range;
|
||||||
struct fib_rule_port_range dport_range;
|
struct fib_rule_port_range dport_range;
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct fib_lookup_arg {
|
struct fib_lookup_arg {
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <linux/atomic.h>
|
#include <linux/atomic.h>
|
||||||
#include <linux/container_of.h>
|
#include <linux/container_of.h>
|
||||||
#include <linux/uidgid.h>
|
#include <linux/uidgid.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
struct flow_keys;
|
struct flow_keys;
|
||||||
|
|
||||||
|
@ -42,6 +43,9 @@ struct flowi_common {
|
||||||
kuid_t flowic_uid;
|
kuid_t flowic_uid;
|
||||||
__u32 flowic_multipath_hash;
|
__u32 flowic_multipath_hash;
|
||||||
struct flowi_tunnel flowic_tun_key;
|
struct flowi_tunnel flowic_tun_key;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
union flowi_uli {
|
union flowi_uli {
|
||||||
|
@ -88,6 +92,8 @@ struct flowi4 {
|
||||||
#define fl4_icmp_code uli.icmpt.code
|
#define fl4_icmp_code uli.icmpt.code
|
||||||
#define fl4_mh_type uli.mht.type
|
#define fl4_mh_type uli.mht.type
|
||||||
#define fl4_gre_key uli.gre_key
|
#define fl4_gre_key uli.gre_key
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
} __attribute__((__aligned__(BITS_PER_LONG/8)));
|
} __attribute__((__aligned__(BITS_PER_LONG/8)));
|
||||||
|
|
||||||
static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
|
static inline void flowi4_init_output(struct flowi4 *fl4, int oif,
|
||||||
|
@ -149,6 +155,7 @@ struct flowi6 {
|
||||||
#define fl6_mh_type uli.mht.type
|
#define fl6_mh_type uli.mht.type
|
||||||
#define fl6_gre_key uli.gre_key
|
#define fl6_gre_key uli.gre_key
|
||||||
__u32 mp_hash;
|
__u32 mp_hash;
|
||||||
|
KABI_RESERVE(1);
|
||||||
} __attribute__((__aligned__(BITS_PER_LONG/8)));
|
} __attribute__((__aligned__(BITS_PER_LONG/8)));
|
||||||
|
|
||||||
struct flowi {
|
struct flowi {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <linux/genetlink.h>
|
#include <linux/genetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
#include <net/net_namespace.h>
|
#include <net/net_namespace.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#define GENLMSG_DEFAULT_SIZE (NLMSG_DEFAULT_SIZE - GENL_HDRLEN)
|
#define GENLMSG_DEFAULT_SIZE (NLMSG_DEFAULT_SIZE - GENL_HDRLEN)
|
||||||
|
|
||||||
|
@ -80,6 +81,10 @@ struct genl_family {
|
||||||
const struct genl_small_ops *small_ops;
|
const struct genl_small_ops *small_ops;
|
||||||
const struct genl_split_ops *split_ops;
|
const struct genl_split_ops *split_ops;
|
||||||
const struct genl_multicast_group *mcgrps;
|
const struct genl_multicast_group *mcgrps;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
struct module *module;
|
struct module *module;
|
||||||
|
|
||||||
/* private: internal use only */
|
/* private: internal use only */
|
||||||
|
@ -193,6 +198,10 @@ struct genl_ops {
|
||||||
u8 internal_flags;
|
u8 internal_flags;
|
||||||
u8 flags;
|
u8 flags;
|
||||||
u8 validate;
|
u8 validate;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -43,6 +43,11 @@ struct l3mdev_ops {
|
||||||
/* IPv6 ops */
|
/* IPv6 ops */
|
||||||
struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *dev,
|
struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *dev,
|
||||||
struct flowi6 *fl6);
|
struct flowi6 *fl6);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_NET_L3_MASTER_DEV
|
#ifdef CONFIG_NET_L3_MASTER_DEV
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#define LWTUNNEL_HASH_BITS 7
|
#define LWTUNNEL_HASH_BITS 7
|
||||||
#define LWTUNNEL_HASH_SIZE (1 << LWTUNNEL_HASH_BITS)
|
#define LWTUNNEL_HASH_SIZE (1 << LWTUNNEL_HASH_BITS)
|
||||||
|
@ -33,6 +34,10 @@ struct lwtunnel_state {
|
||||||
int (*orig_output)(struct net *net, struct sock *sk, struct sk_buff *skb);
|
int (*orig_output)(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||||
int (*orig_input)(struct sk_buff *);
|
int (*orig_input)(struct sk_buff *);
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
__u8 data[];
|
__u8 data[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/bitmap.h>
|
#include <linux/bitmap.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/sysctl.h>
|
#include <linux/sysctl.h>
|
||||||
|
@ -162,6 +163,10 @@ struct neighbour {
|
||||||
struct rcu_head rcu;
|
struct rcu_head rcu;
|
||||||
struct net_device *dev;
|
struct net_device *dev;
|
||||||
netdevice_tracker dev_tracker;
|
netdevice_tracker dev_tracker;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
u8 primary_key[];
|
u8 primary_key[];
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <net/netlink.h>
|
#include <net/netlink.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *,
|
typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *,
|
||||||
struct netlink_ext_ack *);
|
struct netlink_ext_ack *);
|
||||||
|
@ -134,6 +135,11 @@ struct rtnl_link_ops {
|
||||||
int (*fill_linkxstats)(struct sk_buff *skb,
|
int (*fill_linkxstats)(struct sk_buff *skb,
|
||||||
const struct net_device *dev,
|
const struct net_device *dev,
|
||||||
int *prividx, int attr);
|
int *prividx, int attr);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
int __rtnl_link_register(struct rtnl_link_ops *ops);
|
int __rtnl_link_register(struct rtnl_link_ops *ops);
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
#include <linux/net_tstamp.h>
|
#include <linux/net_tstamp.h>
|
||||||
#include <net/l3mdev.h>
|
#include <net/l3mdev.h>
|
||||||
#include <uapi/linux/socket.h>
|
#include <uapi/linux/socket.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This structure really needs to be cleaned up.
|
* This structure really needs to be cleaned up.
|
||||||
|
@ -545,6 +546,11 @@ struct sock {
|
||||||
struct rcu_head sk_rcu;
|
struct rcu_head sk_rcu;
|
||||||
netns_tracker ns_tracker;
|
netns_tracker ns_tracker;
|
||||||
struct hlist_node sk_bind2_node;
|
struct hlist_node sk_bind2_node;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum sk_pacing {
|
enum sk_pacing {
|
||||||
|
@ -1367,6 +1373,11 @@ struct proto {
|
||||||
|
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
int (*diag_destroy)(struct sock *sk, int err);
|
int (*diag_destroy)(struct sock *sk, int err);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} __randomize_layout;
|
} __randomize_layout;
|
||||||
|
|
||||||
int proto_register(struct proto *prot, int alloc_slab);
|
int proto_register(struct proto *prot, int alloc_slab);
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <net/ip_fib.h>
|
#include <net/ip_fib.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#define SWITCHDEV_F_NO_RECURSE BIT(0)
|
#define SWITCHDEV_F_NO_RECURSE BIT(0)
|
||||||
#define SWITCHDEV_F_SKIP_EOPNOTSUPP BIT(1)
|
#define SWITCHDEV_F_SKIP_EOPNOTSUPP BIT(1)
|
||||||
|
@ -90,6 +91,11 @@ struct switchdev_obj {
|
||||||
u32 flags;
|
u32 flags;
|
||||||
void *complete_priv;
|
void *complete_priv;
|
||||||
void (*complete)(struct net_device *dev, int err, void *priv);
|
void (*complete)(struct net_device *dev, int err, void *priv);
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* SWITCHDEV_OBJ_ID_PORT_VLAN */
|
/* SWITCHDEV_OBJ_ID_PORT_VLAN */
|
||||||
|
|
|
@ -42,6 +42,7 @@
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#include <net/net_namespace.h>
|
#include <net/net_namespace.h>
|
||||||
#include <net/tcp.h>
|
#include <net/tcp.h>
|
||||||
|
@ -195,6 +196,9 @@ enum tls_context_flags {
|
||||||
struct cipher_context {
|
struct cipher_context {
|
||||||
char *iv;
|
char *iv;
|
||||||
char *rec_seq;
|
char *rec_seq;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
union tls_crypto_context {
|
union tls_crypto_context {
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
#include <linux/filter.h>
|
#include <linux/filter.h>
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/skbuff.h> /* skb_shared_info */
|
#include <linux/skbuff.h> /* skb_shared_info */
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: XDP RX-queue information
|
* DOC: XDP RX-queue information
|
||||||
|
@ -64,6 +65,11 @@ struct xdp_rxq_info {
|
||||||
struct xdp_mem_info mem;
|
struct xdp_mem_info mem;
|
||||||
unsigned int napi_id;
|
unsigned int napi_id;
|
||||||
u32 frag_size;
|
u32 frag_size;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
} ____cacheline_aligned; /* perf critical, avoid false-sharing */
|
} ____cacheline_aligned; /* perf critical, avoid false-sharing */
|
||||||
|
|
||||||
struct xdp_txq_info {
|
struct xdp_txq_info {
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <net/ip6_fib.h>
|
#include <net/ip6_fib.h>
|
||||||
#include <net/flow.h>
|
#include <net/flow.h>
|
||||||
#include <net/gro_cells.h>
|
#include <net/gro_cells.h>
|
||||||
|
#include <linux/kabi.h>
|
||||||
|
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
|
||||||
|
@ -124,6 +125,8 @@ struct xfrm_state_walk {
|
||||||
u8 proto;
|
u8 proto;
|
||||||
u32 seq;
|
u32 seq;
|
||||||
struct xfrm_address_filter *filter;
|
struct xfrm_address_filter *filter;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -150,6 +153,9 @@ struct xfrm_dev_offload {
|
||||||
u8 dir : 2;
|
u8 dir : 2;
|
||||||
u8 type : 2;
|
u8 type : 2;
|
||||||
u8 flags : 2;
|
u8 flags : 2;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct xfrm_mode {
|
struct xfrm_mode {
|
||||||
|
|
|
@ -715,7 +715,6 @@ struct Scsi_Host {
|
||||||
*/
|
*/
|
||||||
struct device *dma_dev;
|
struct device *dma_dev;
|
||||||
|
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
|
|
|
@ -183,6 +183,11 @@ struct cpuset {
|
||||||
|
|
||||||
/* Handle for cpuset.cpus.partition */
|
/* Handle for cpuset.cpus.partition */
|
||||||
struct cgroup_file partition_file;
|
struct cgroup_file partition_file;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -44,6 +44,11 @@ enum freezer_state_flags {
|
||||||
struct freezer {
|
struct freezer {
|
||||||
struct cgroup_subsys_state css;
|
struct cgroup_subsys_state css;
|
||||||
unsigned int state;
|
unsigned int state;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
static DEFINE_MUTEX(freezer_mutex);
|
static DEFINE_MUTEX(freezer_mutex);
|
||||||
|
|
|
@ -54,6 +54,11 @@ struct pids_cgroup {
|
||||||
|
|
||||||
/* Number of times fork failed because limit was hit. */
|
/* Number of times fork failed because limit was hit. */
|
||||||
atomic64_t events_limit;
|
atomic64_t events_limit;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct pids_cgroup *css_pids(struct cgroup_subsys_state *css)
|
static struct pids_cgroup *css_pids(struct cgroup_subsys_state *css)
|
||||||
|
|
|
@ -316,6 +316,7 @@ struct dl_bw {
|
||||||
raw_spinlock_t lock;
|
raw_spinlock_t lock;
|
||||||
u64 bw;
|
u64 bw;
|
||||||
u64 total_bw;
|
u64 total_bw;
|
||||||
|
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
@ -914,6 +915,7 @@ struct root_domain {
|
||||||
KABI_RESERVE(1);
|
KABI_RESERVE(1);
|
||||||
KABI_RESERVE(2);
|
KABI_RESERVE(2);
|
||||||
KABI_RESERVE(3);
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern void init_defrootdomain(void);
|
extern void init_defrootdomain(void);
|
||||||
|
@ -1938,6 +1940,9 @@ struct sched_group {
|
||||||
int asym_prefer_cpu; /* CPU of highest priority in group */
|
int asym_prefer_cpu; /* CPU of highest priority in group */
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The CPUs this group covers.
|
* The CPUs this group covers.
|
||||||
*
|
*
|
||||||
|
@ -2320,6 +2325,9 @@ struct sched_class {
|
||||||
#ifdef CONFIG_SCHED_CORE
|
#ifdef CONFIG_SCHED_CORE
|
||||||
int (*task_is_throttled)(struct task_struct *p, int cpu);
|
int (*task_is_throttled)(struct task_struct *p, int cpu);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
|
static inline void put_prev_task(struct rq *rq, struct task_struct *prev)
|
||||||
|
|
|
@ -44,6 +44,11 @@ struct dev_cgroup {
|
||||||
struct cgroup_subsys_state css;
|
struct cgroup_subsys_state css;
|
||||||
struct list_head exceptions;
|
struct list_head exceptions;
|
||||||
enum devcg_behavior behavior;
|
enum devcg_behavior behavior;
|
||||||
|
|
||||||
|
KABI_RESERVE(1);
|
||||||
|
KABI_RESERVE(2);
|
||||||
|
KABI_RESERVE(3);
|
||||||
|
KABI_RESERVE(4);
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline struct dev_cgroup *css_to_devcgroup(struct cgroup_subsys_state *s)
|
static inline struct dev_cgroup *css_to_devcgroup(struct cgroup_subsys_state *s)
|
||||||
|
|
Loading…
Reference in New Issue