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:
Kairui Song 2023-12-11 10:34:29 +08:00
parent f6ba444c8e
commit e8beb518cf
59 changed files with 369 additions and 1 deletions

View File

@ -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;

View File

@ -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 {

View File

@ -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) \

View File

@ -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)

View File

@ -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[];
}; };

View File

@ -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 {

View File

@ -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;
/* /*

View File

@ -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 {

View File

@ -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

View File

@ -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);

View File

@ -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 {

View File

@ -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)

View File

@ -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);
}; };
/* /*

View File

@ -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[];
}; };

View File

@ -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);
}; };
/* /*

View File

@ -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;
}; };

View File

@ -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);
}; };
/* /*

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -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);

View File

@ -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);
}; };
/** /**

View File

@ -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)

View File

@ -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

View File

@ -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) \

View File

@ -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 {

View File

@ -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)

View File

@ -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);
}; };
/* /*

View File

@ -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 {

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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

View File

@ -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 {

View File

@ -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 {

View File

@ -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)

View File

@ -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 */

View File

@ -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 {

View File

@ -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__ */

View File

@ -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 {

View File

@ -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;
}; };

View File

@ -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 {

View File

@ -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 {

View File

@ -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);
}; };
/** /**

View File

@ -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

View File

@ -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[];
}; };

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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 */

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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);

View File

@ -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);
}; };
/* /*

View File

@ -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);

View File

@ -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)

View File

@ -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)

View File

@ -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)