diff --git a/include/linux/ali_hotfix.h b/include/linux/ali_hotfix.h new file mode 100644 index 0000000000000000000000000000000000000000..fe5ce91cb749cc45d4cc7d0ac03b2f9227a79cb2 --- /dev/null +++ b/include/linux/ali_hotfix.h @@ -0,0 +1,54 @@ +/* SPDX-License-Identifier: GPL-2.0 + * + * Copyright (c) 2019 Xunlei Pang + */ + +#ifndef _LINUX_ALI_HOTFIX_H +#define _LINUX_ALI_HOTFIX_H + +#include + +/* + * ALI_HOTFIX_RESERVE* - reserve fields for core structures prone to change + * ALI_HOTFIX_USE* - use the reserved field in your hotfix + * ALI_HOTFIX_REPLACE - replacement of _orig with a union of _orig and _new + */ + +#define _ALI_HOTFIX_REPLACE(_orig, _new) \ + union { \ + _new; \ + struct { \ + _orig; \ + } __UNIQUE_ID(ali_hotfix_hide); \ + } + +#define ALI_HOTFIX_REPLACE(_orig, _new) _ALI_HOTFIX_REPLACE(_orig, _new); + +/* + * We tried to standardize on alikernel reserved names. These wrappers leverage + * those common names making it easier to read and find in the code. + */ +#define _ALI_HOTFIX_RESERVE(n) unsigned long ali_reserved##n +#define _ALI_HOTFIX_RESERVE_P(n) void (*ali_reserved##n)(void) + +#define ALI_HOTFIX_RESERVE(n) _ALI_HOTFIX_RESERVE(n); +#define ALI_HOTFIX_RESERVE_P(n) _ALI_HOTFIX_RESERVE_P(n); + +/* + * Wrappers to replace standard alikernel reserved elements. + */ +#define ALI_HOTFIX_USE(n, _new) \ + ALI_HOTFIX_REPLACE(_ALI_HOTFIX_RESERVE(n), _new) +#define ALI_HOTFIX_USE_P(n, _new) \ + ALI_HOTFIX_REPLACE(_ALI_HOTFIX_RESERVE_P(n), _new) + +/* + * Macros for breaking up a reserved element into two smaller chunks using an + * anonymous struct inside an anonymous union. + */ +#define ALI_HOTFIX_USE2(n, _new1, _new2) \ + ALI_HOTFIX_REPLACE(_ALI_HOTFIX_RESERVE(n), struct{ _new1; _new2; }) +#define ALI_HOTFIX_USE2_P(n, _new1, _new2) \ + ALI_HOTFIX_REPLACE(_ALI_HOTFIX_RESERVE_P(n), struct{ _new1; _new2; }) + +#endif /* _LINUX_ALI_HOTFIX_H */ diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h index 07e02d6df5ad9f24b262fe2d852e21235de8119f..805f15a0c5cf2ec823b841c0571ebc5d92111e74 100644 --- a/include/linux/backing-dev-defs.h +++ b/include/linux/backing-dev-defs.h @@ -162,6 +162,9 @@ struct bdi_writeback { struct rcu_head rcu; }; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; struct backing_dev_info { @@ -205,6 +208,9 @@ struct backing_dev_info { struct dentry *debug_dir; struct dentry *debug_stats; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; enum { diff --git a/include/linux/bio.h b/include/linux/bio.h index 8a6f4c73b25c0135b1917af58052210323221ccd..897e2c4c3de6973274d93a7f7d9abd1d7ba01d69 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -775,6 +775,9 @@ struct bio_set { struct bio_list rescue_list; struct work_struct rescue_work; struct workqueue_struct *rescue_workqueue; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; struct biovec_slab { diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h index ad61a9985e82cf264df5fb47aaf93c4c0b3e4b12..f115d21464a0439b127cc70a7aad76b7c76919bc 100644 --- a/include/linux/blk-cgroup.h +++ b/include/linux/blk-cgroup.h @@ -58,6 +58,11 @@ struct blkcg { struct list_head cgwb_list; refcount_t cgwb_refcnt; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; /* @@ -178,6 +183,9 @@ struct blkcg_policy { blkcg_pol_free_pd_fn *pd_free_fn; blkcg_pol_reset_pd_stats_fn *pd_reset_stats_fn; blkcg_pol_stat_pd_fn *pd_stat_fn; + + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) }; extern struct blkcg blkcg_root; diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 2885dce1ad496368e9f931ebba86ef69b90df05c..75086cb24b36e1a5dfecdd321baea48dc9b5ff05 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -70,6 +70,11 @@ struct blk_mq_hw_ctx { struct dentry *sched_debugfs_dir; #endif + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) + /* Must be the last member - see also blk_mq_hw_ctx_size(). */ struct srcu_struct srcu[0]; }; @@ -90,11 +95,18 @@ struct blk_mq_tag_set { struct mutex tag_list_lock; struct list_head tag_list; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; struct blk_mq_queue_data { struct request *rq; bool last; + + ALI_HOTFIX_RESERVE(1) }; typedef blk_status_t (queue_rq_fn)(struct blk_mq_hw_ctx *, @@ -181,6 +193,9 @@ struct blk_mq_ops { */ void (*show_rq)(struct seq_file *m, struct request *rq); #endif + + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) }; enum { diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h index 4badbaae2a9cdbb8e3728c207d1f22af127e4940..01f8801dd47fc0831f61b2a340c69e9d0811e1dc 100644 --- a/include/linux/blk_types.h +++ b/include/linux/blk_types.h @@ -11,6 +11,8 @@ #include #include +#include + struct bio_set; struct bio; struct bio_integrity_payload; @@ -212,6 +214,9 @@ struct bio { struct bio_set *bi_pool; + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + /* * We can inline a number of vecs at the end of the bio, to avoid * double allocations for a small number of bio_vecs. This member diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index ea647c91c4480411ec9db9f65f8063d5c68ffc8b..41c201496cbc044f60d868f7af7f8438234c9aa9 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -396,6 +396,9 @@ struct queue_limits { unsigned char cluster; unsigned char raid_partial_stripes_expensive; enum blk_zoned_model zoned; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; #ifdef CONFIG_BLK_DEV_ZONED @@ -677,6 +680,11 @@ struct request_queue { #define BLK_MAX_WRITE_HINTS 5 u64 write_hints[BLK_MAX_WRITE_HINTS]; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; #define QUEUE_FLAG_QUEUED 0 /* uses generic tag queueing */ diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index e78086c3c160448415140ced63743785f2033551..15261d74baa4aed19034e6a8938f9beb341ea1b3 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -161,6 +161,9 @@ struct cgroup_subsys_state { struct work_struct destroy_work; struct rcu_work destroy_rwork; + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + /* * PI: the parent css. Placed here for cache proximity to following * fields of the containing structure. @@ -262,6 +265,9 @@ struct css_set { /* For RCU-protected deletion */ struct rcu_head rcu_head; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; struct cgroup_base_stat { @@ -489,6 +495,9 @@ struct cgroup_root { /* IDs for cgroups in this hierarchy */ struct idr cgroup_idr; + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + /* The path to use for release notifications. */ char release_agent_path[PATH_MAX]; @@ -614,6 +623,9 @@ struct cgroup_subsys { void (*release)(struct task_struct *task); void (*bind)(struct cgroup_subsys_state *root_css); + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) + bool early_init:1; /* diff --git a/include/linux/dcache.h b/include/linux/dcache.h index 0880baefd85f8d53a35fcc4430ad986d6fe6705a..4fb637e040b0b3e53bb00d64480b79991e3e3739 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -14,6 +14,8 @@ #include #include +#include + struct path; struct vfsmount; @@ -117,6 +119,9 @@ struct dentry { struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */ struct rcu_head d_rcu; } d_u; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } __randomize_layout; /* diff --git a/include/linux/elevator.h b/include/linux/elevator.h index a2bf4a6b9316daeb9b2df7da7bd90ef1d38b5693..e1e428a8096517cafe0bce31a302b4f3cf52e502 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h @@ -119,6 +119,9 @@ struct elevator_mq_ops { struct request *(*next_request)(struct request_queue *, struct request *); void (*init_icq)(struct io_cq *); void (*exit_icq)(struct io_cq *); + + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) }; #define ELV_NAME_MAX (16) diff --git a/include/linux/fs.h b/include/linux/fs.h index 7e9f6b0a985a07950829df9ddf05807b17290ef1..a99b5c228530ce81aec25591749c0f2fd1a40cb0 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -431,6 +431,9 @@ struct address_space { struct list_head private_list; /* for use by the address_space */ void *private_data; /* ditto */ errseq_t wb_err; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } __attribute__((aligned(sizeof(long)))) __randomize_layout; /* * On most architectures that alignment is already the case; but @@ -475,6 +478,9 @@ struct block_device { int bd_fsfreeze_count; /* Mutex for freeze */ struct mutex bd_fsfreeze_mutex; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } __randomize_layout; /* @@ -694,6 +700,9 @@ struct inode { #endif void *i_private; /* fs or device private pointer */ + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } __randomize_layout; static inline unsigned int i_blocksize(const struct inode *node) diff --git a/include/linux/genhd.h b/include/linux/genhd.h index ebc5408aca67f17166b518e08a8c9ed693276388..75ccb2848c11a14df31c54053ecba97fa8ecbb5a 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h @@ -131,6 +131,9 @@ struct hd_struct { #endif struct percpu_ref ref; struct rcu_work rcu_work; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; #define GENHD_FL_REMOVABLE 1 @@ -212,6 +215,9 @@ struct gendisk { int node_id; struct badblocks *bb; struct lockdep_map lockdep_map; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; static inline struct gendisk *part_to_disk(struct hd_struct *part) diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 1ab07c049466e3e0d9fc7d4a5095572c7fa76ebc..a1e97183bcf9eeb0b1f7ea2ee28d22f92a1cd628 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -329,6 +329,11 @@ struct mem_cgroup { struct idle_page_stats idle_stats[KIDLED_STATS_NR_TYPE]; #endif + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) + struct mem_cgroup_per_node *nodeinfo[0]; /* WARNING: nodeinfo must be the last member here */ }; diff --git a/include/linux/mm.h b/include/linux/mm.h index 3adb081f83d5ca1825c989bc1d17156c0f3d9338..bcdb71db6e20b7da599ec8086c981a892c1866d3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -450,6 +450,9 @@ struct vm_operations_struct { */ struct page *(*find_special_page)(struct vm_area_struct *vma, unsigned long addr); + + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) }; static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm) diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 971d01c1c196b7169b67d7922c5215d095a1f82d..a2541a2ca9811de473b16274beeb31128fb9b2fa 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -17,6 +17,8 @@ #include +#include + #ifndef AT_VECTOR_SIZE_ARCH #define AT_VECTOR_SIZE_ARCH 0 #endif @@ -329,6 +331,11 @@ struct vm_area_struct { struct mempolicy *vm_policy; /* NUMA policy for the VMA */ #endif struct vm_userfaultfd_ctx vm_userfaultfd_ctx; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) } __randomize_layout; struct core_thread { @@ -499,6 +506,9 @@ struct mm_struct { #endif } __randomize_layout; + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + /* * The mm_cpumask needs to be at the end of mm_struct, because it * is dynamically sized based on nr_cpu_ids. diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index fe2c6b6243a8d42f14a70939321bc9a65826dedf..46e9ea9fda4dfdf6e90cf032ccda78eec6a6e1dd 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -20,6 +20,8 @@ #include #include +#include + /* Free memory management - zoned buddy allocator. */ #ifndef CONFIG_FORCE_MAX_ZONEORDER #define MAX_ORDER 11 @@ -507,6 +509,9 @@ struct zone { /* Zone statistics */ atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS]; atomic_long_t vm_numa_stat[NR_VM_NUMA_STAT_ITEMS]; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } ____cacheline_internodealigned_in_smp; enum pgdat_flags { @@ -724,6 +729,9 @@ typedef struct pglist_data { /* Per-node vmstats */ struct per_cpu_nodestat __percpu *per_cpu_nodestats; atomic_long_t vm_stat[NR_VM_NODE_STAT_ITEMS]; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } pg_data_t; #define node_present_pages(nid) (NODE_DATA(nid)->node_present_pages) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9dfa0ae173ac2414473ca1f456b3221abd3cd4fd..731268b70556d89d2976726850b18a8e4568b7ea 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -53,6 +53,8 @@ #include #include +#include + struct netpoll_info; struct device; struct phy_device; @@ -1410,6 +1412,9 @@ struct net_device_ops { u32 flags); int (*ndo_xsk_async_xmit)(struct net_device *dev, u32 queue_id); + + ALI_HOTFIX_RESERVE_P(1) + ALI_HOTFIX_RESERVE_P(2) }; /** diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 9077b3ebea08ce07a261598975cf16e691fd6faa..d03b52af90062c140946851fe613594befd6ccc7 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h @@ -8,6 +8,8 @@ #include #include +#include + /* Test a struct->invflags and a boolean for inequality */ #define NF_INVF(ptr, flag, boolean) \ ((boolean) ^ !!((ptr)->invflags & (flag))) @@ -217,6 +219,9 @@ struct xt_target { unsigned short proto; unsigned short family; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; /* Furniture shopping... */ diff --git a/include/linux/sched.h b/include/linux/sched.h index 6b79077123e01a6f0f2c6bbc73d22de4329b2b19..fe40353fa920216f0e26cfe116137f35f742adf2 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -29,6 +29,8 @@ #include #include +#include + /* task_struct member predeclarations (sorted alphabetically): */ struct audit_context; struct backing_dev_info; @@ -440,6 +442,9 @@ struct sched_statistics { u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) #endif }; @@ -478,6 +483,9 @@ struct sched_entity { */ struct sched_avg avg; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; struct sched_rt_entity { @@ -1209,6 +1217,15 @@ struct task_struct { void *security; #endif + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) + ALI_HOTFIX_RESERVE(5) + ALI_HOTFIX_RESERVE(6) + ALI_HOTFIX_RESERVE(7) + ALI_HOTFIX_RESERVE(8) + /* * New fields for task_struct should be added above here, so that * they are included in the randomized portion of task_struct. diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h index 660d78c9af6c82992e7b7ea154ca10abc8e4d067..5889abbcff988cf7474fab9c0fc8f8aebc522b9b 100644 --- a/include/linux/sched/signal.h +++ b/include/linux/sched/signal.h @@ -232,6 +232,9 @@ struct signal_struct { struct mutex cred_guard_mutex; /* guard against foreign influences on * credential calculations * (notably. ptrace) */ + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) } __randomize_layout; /* diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 80c3da1aa8b1b6dc0551194fd5f3b29fddac3842..8519b552ddf82d6f7815072084d8056dc779628c 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -849,6 +849,9 @@ struct sk_buff { __u32 headers_end[0]; /* public: */ + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + /* These elements must be at the end, see alloc_skb() for details. */ sk_buff_data_t tail; sk_buff_data_t end; diff --git a/include/linux/timer.h b/include/linux/timer.h index 7b066fd38248bb48466fa53c0e6462d2af76dc33..19d036f56c7396a37e0889d711304e69ee6beac2 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h @@ -8,6 +8,8 @@ #include #include +#include + struct timer_list { /* * All fields that change during normal runtime grouped to the @@ -21,6 +23,9 @@ struct timer_list { #ifdef CONFIG_LOCKDEP struct lockdep_map lockdep_map; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; #ifdef CONFIG_LOCKDEP diff --git a/include/linux/writeback.h b/include/linux/writeback.h index fdfd04e348f698b3d108228868866072164d31b7..d8d7ecbae9a5ac7906a265f5a23c87335cf22d5b 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -80,6 +80,9 @@ struct writeback_control { size_t wb_lcand_bytes; /* bytes written by last candidate */ size_t wb_tcand_bytes; /* bytes written by this candidate */ #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; static inline int wbc_to_write_flags(struct writeback_control *wbc) diff --git a/include/net/dst.h b/include/net/dst.h index ffc8ee0ea5e5b19afdb507681c322056b176c563..b4e4ab7bf404a98157a5cd9a0b97726c98c1739c 100644 --- a/include/net/dst.h +++ b/include/net/dst.h @@ -88,6 +88,11 @@ struct dst_entry { #ifndef CONFIG_64BIT atomic_t __refcnt; /* 32-bit offset 64 */ #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; struct dst_metrics { diff --git a/include/net/dst_ops.h b/include/net/dst_ops.h index 5ec645f27ee3841f9a4074c94e5dca37bb86fc2e..b248cf555a36644c70b1d1348dd6fb97ccac5356 100644 --- a/include/net/dst_ops.h +++ b/include/net/dst_ops.h @@ -39,6 +39,9 @@ struct dst_ops { struct kmem_cache *kmem_cachep; + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + struct percpu_counter pcpuc_entries ____cacheline_aligned_in_smp; }; diff --git a/include/net/fib_rules.h b/include/net/fib_rules.h index b473df5b95121f3f810d8ffe29f858369f5c8fd5..927e6546ca760a812a652f7181af731a20e5ad83 100644 --- a/include/net/fib_rules.h +++ b/include/net/fib_rules.h @@ -43,6 +43,8 @@ struct fib_rule { struct fib_rule_port_range sport_range; struct fib_rule_port_range dport_range; struct rcu_head rcu; + + ALI_HOTFIX_RESERVE(1) }; struct fib_lookup_arg { diff --git a/include/net/sock.h b/include/net/sock.h index 33661448b2b4c501503244dfa08a0667b15384c0..96491964568581e4a5a7f32acd04df29352f15ae 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -511,6 +511,9 @@ struct sock { struct sock_reuseport __rcu *sk_reuseport_cb; __be32 sk_toa_data[16]; struct rcu_head sk_rcu; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; enum sk_pacing { diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c index 049fc29c995a83ea21409eb3779a71ed4fa4a2f9..b191b6ee336e3e080721f93d1a43d43a8ae5f72d 100644 --- a/kernel/sched/cpuacct.c +++ b/kernel/sched/cpuacct.c @@ -30,6 +30,11 @@ struct cpuacct { /* cpuusage holds pointer to a u64-type object on every CPU */ struct cpuacct_usage __percpu *cpuusage; struct kernel_cpustat __percpu *cpustat; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; static inline struct cpuacct *css_ca(struct cgroup_subsys_state *css) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 5aeb0b954cd963777a4c0d2cdcaa4a2106a61c85..f34af8a20c27fc92c7ba785bab033f5b9cdb07b0 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -392,6 +392,9 @@ struct task_group { #endif struct cfs_bandwidth cfs_bandwidth; + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) }; #ifdef CONFIG_FAIR_GROUP_SCHED @@ -565,6 +568,11 @@ struct cfs_rq { struct list_head throttled_list; #endif /* CONFIG_CFS_BANDWIDTH */ #endif /* CONFIG_FAIR_GROUP_SCHED */ + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; static inline int rt_bandwidth_enabled(void) @@ -915,6 +923,11 @@ struct rq { /* Must be inspected within a rcu lock section */ struct cpuidle_state *idle_state; #endif + + ALI_HOTFIX_RESERVE(1) + ALI_HOTFIX_RESERVE(2) + ALI_HOTFIX_RESERVE(3) + ALI_HOTFIX_RESERVE(4) }; static inline int cpu_of(struct rq *rq)