From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7F881A35 for ; Mon, 16 May 2022 02:59:25 +0000 (UTC) Received: from kwepemi500013.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4L1kTq4HcwzhZ1g; Mon, 16 May 2022 10:58:39 +0800 (CST) Received: from M910t (10.110.54.157) by kwepemi500013.china.huawei.com (7.221.188.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Mon, 16 May 2022 10:59:10 +0800 Date: Mon, 16 May 2022 10:59:04 +0800 From: Changbin Du To: Nick Desaulniers CC: Changbin Du , Craig Topper , Alex Bradbury , Albert Ou , Palmer Dabbelt , Paul Walmsley , Steven Rostedt , , , , Subject: Re: riscv: llvm-compiler: calling convention violation: temporary register $t2 is used to pass the ninth function parameter Message-ID: <20220516025904.kzwab5babr24ftzw@M910t> References: <20220510065336.hlfjrc25ajed5zj4@M910t> <10BD31AB-C9F3-45FD-9A4A-EF7DC07C94D5@sifive.com> <20220512083007.gdvlaq7ar2tyarza@M910t> <20220513034629.l662gw4mn6bi4zen@M910t> Precedence: bulk X-Mailing-List: llvm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="r23o63ywhp5bfhx5" Content-Disposition: inline In-Reply-To: X-Originating-IP: [10.110.54.157] X-ClientProxiedBy: dggems702-chm.china.huawei.com (10.3.19.179) To kwepemi500013.china.huawei.com (7.221.188.120) X-CFilter-Loop: Reflected --r23o63ywhp5bfhx5 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, May 13, 2022 at 12:39:55PM -0700, Nick Desaulniers wrote: > On Thu, May 12, 2022 at 8:46 PM Changbin Du wrot= e: > > > > On Thu, May 12, 2022 at 07:49:41AM -0700, Craig Topper wrote: > > > Changbin, can you provide a pre-processed source and a command line? = I can > > > reduce it on the llvm side. > > > > > > > hmm, clang can not build the preprocessed source by itself! >=20 > Sorry, I should have provided more info. >=20 > In order to get the preprocessed source, you generally can do: >=20 > $ ARCH=3Driscv make LLVM=3D1 -j$(nproc) defconfig lib/string.i >=20 > replace the final command line parameter with the path to the source > file you care about. >=20 > Then, to get the command line invocation, you can do: >=20 > $ ARCH=3Driscv make LLVM=3D1 -j$(nproc) lib/string.o V=3D1 >=20 > Then you can provide the output of those two commands. > --=20 > Thanks, > ~Nick Desaulniers No problem, I know this tricks. Please check attached file, and build it wi= th: $ /opt/llvm-13.0.0/bin/clang -nostdinc -Qunused-arguments -Wall -Wundef -W= no-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werro= r=3Dimplicit-function-declaration -Werror=3Dimplicit-int -Werror=3Dreturn-t= ype -Wno-format-security -std=3Dgnu11 --target=3Driscv64-linux-gnu -fintegr= ated-as -Werror=3Dunknown-warning-option -Werror=3Dignored-optimization-arg= ument -mabi=3Dlp64 -mno-relax -march=3Drv64imac -mno-save-restore -mcmodel= =3Dmedany -fno-omit-frame-pointer -fno-delete-null-pointer-checks -Wno-fram= e-address -Wno-address-of-packed-member -O2 -Wframe-larger-than=3D2048 -fst= ack-protector-strong -Wno-gnu -Wno-unused-but-set-variable -Wno-unused-cons= t-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-c= lash-protection -fpatchable-function-entry=3D8 -Wdeclaration-after-statemen= t -Wvla -Wno-pointer-sign -Wcast-function-type -fno-strict-overflow -fno-st= ack-check -Werror=3Ddate-time -Werror=3Dincompatible-pointer-types -Wno-ini= tializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -W= no-pointer-to-enum-cast -Wno-tautological-constant-out-of-range-compare -g = -c -o route.o route.i --=20 Cheers, Changbin Du --r23o63ywhp5bfhx5 Content-Type: text/plain; charset="us-ascii" Content-Disposition: attachment; filename="route.i" Content-Transfer-Encoding: quoted-printable # 1 "net/ipv6/route.c"=0D # 1 "" 1=0D # 1 "" 3=0D # 352 "" 3=0D # 1 "" 1=0D # 1 "" 2=0D # 1 "././include/linux/compiler-version.h" 1=0D # 2 "" 2=0D # 1 "././include/linux/kconfig.h" 1=0D =0D =0D =0D =0D # 1 "./include/generated/autoconf.h" 1=0D # 6 "././include/linux/kconfig.h" 2=0D # 3 "" 2=0D # 1 "././include/linux/compiler_types.h" 1=0D # 73 "././include/linux/compiler_types.h"=0D # 1 "./include/linux/compiler_attributes.h" 1=0D # 74 "././include/linux/compiler_types.h" 2=0D # 88 "././include/linux/compiler_types.h"=0D # 1 "./include/linux/compiler-clang.h" 1=0D # 89 "././include/linux/compiler_types.h" 2=0D # 110 "././include/linux/compiler_types.h"=0D struct ftrace_branch_data {=0D const char *func;=0D const char *file;=0D unsigned line;=0D union {=0D struct {=0D unsigned long correct;=0D unsigned long incorrect;=0D };=0D struct {=0D unsigned long miss;=0D unsigned long hit;=0D };=0D unsigned long miss_hit[2];=0D };=0D };=0D =0D struct ftrace_likely_data {=0D struct ftrace_branch_data data;=0D unsigned long constant;=0D };=0D # 4 "" 2=0D # 1 "net/ipv6/route.c" 2=0D # 25 "net/ipv6/route.c"=0D # 1 "./include/linux/capability.h" 1=0D # 16 "./include/linux/capability.h"=0D # 1 "./include/uapi/linux/capability.h" 1=0D # 17 "./include/uapi/linux/capability.h"=0D # 1 "./include/linux/types.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/types.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 1 "./include/uapi/asm-generic/types.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/asm-generic/int-ll64.h" 1=0D # 11 "./include/asm-generic/int-ll64.h"=0D # 1 "./include/uapi/asm-generic/int-ll64.h" 1=0D # 12 "./include/uapi/asm-generic/int-ll64.h"=0D # 1 "./arch/riscv/include/uapi/asm/bitsperlong.h" 1=0D # 12 "./arch/riscv/include/uapi/asm/bitsperlong.h"=0D # 1 "./include/asm-generic/bitsperlong.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/bitsperlong.h" 1=0D # 6 "./include/asm-generic/bitsperlong.h" 2=0D # 13 "./arch/riscv/include/uapi/asm/bitsperlong.h" 2=0D # 13 "./include/uapi/asm-generic/int-ll64.h" 2=0D =0D =0D =0D =0D =0D =0D =0D typedef __signed__ char __s8;=0D typedef unsigned char __u8;=0D =0D typedef __signed__ short __s16;=0D typedef unsigned short __u16;=0D =0D typedef __signed__ int __s32;=0D typedef unsigned int __u32;=0D =0D =0D __extension__ typedef __signed__ long long __s64;=0D __extension__ typedef unsigned long long __u64;=0D # 12 "./include/asm-generic/int-ll64.h" 2=0D =0D =0D =0D =0D typedef __s8 s8;=0D typedef __u8 u8;=0D typedef __s16 s16;=0D typedef __u16 u16;=0D typedef __s32 s32;=0D typedef __u32 u32;=0D typedef __s64 s64;=0D typedef __u64 u64;=0D # 8 "./include/uapi/asm-generic/types.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/types.h" 2=0D # 6 "./include/uapi/linux/types.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/posix_types.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/stddef.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/stddef.h" 1=0D # 6 "./include/linux/stddef.h" 2=0D =0D =0D =0D =0D enum {=0D false =3D 0,=0D true =3D 1=0D };=0D # 6 "./include/uapi/linux/posix_types.h" 2=0D # 25 "./include/uapi/linux/posix_types.h"=0D typedef struct {=0D unsigned long fds_bits[1024 / (8 * sizeof(long))];=0D } __kernel_fd_set;=0D =0D =0D typedef void (*__kernel_sighandler_t)(int);=0D =0D =0D typedef int __kernel_key_t;=0D typedef int __kernel_mqd_t;=0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/posix_types.h" 1=0D # 1 "./include/uapi/asm-generic/posix_types.h" 1=0D # 15 "./include/uapi/asm-generic/posix_types.h"=0D typedef long __kernel_long_t;=0D typedef unsigned long __kernel_ulong_t;=0D =0D =0D =0D typedef __kernel_ulong_t __kernel_ino_t;=0D =0D =0D =0D typedef unsigned int __kernel_mode_t;=0D =0D =0D =0D typedef int __kernel_pid_t;=0D =0D =0D =0D typedef int __kernel_ipc_pid_t;=0D =0D =0D =0D typedef unsigned int __kernel_uid_t;=0D typedef unsigned int __kernel_gid_t;=0D =0D =0D =0D typedef __kernel_long_t __kernel_suseconds_t;=0D =0D =0D =0D typedef int __kernel_daddr_t;=0D =0D =0D =0D typedef unsigned int __kernel_uid32_t;=0D typedef unsigned int __kernel_gid32_t;=0D =0D =0D =0D typedef __kernel_uid_t __kernel_old_uid_t;=0D typedef __kernel_gid_t __kernel_old_gid_t;=0D =0D =0D =0D typedef unsigned int __kernel_old_dev_t;=0D # 72 "./include/uapi/asm-generic/posix_types.h"=0D typedef __kernel_ulong_t __kernel_size_t;=0D typedef __kernel_long_t __kernel_ssize_t;=0D typedef __kernel_long_t __kernel_ptrdiff_t;=0D =0D =0D =0D =0D typedef struct {=0D int val[2];=0D } __kernel_fsid_t;=0D =0D =0D =0D =0D =0D typedef __kernel_long_t __kernel_off_t;=0D typedef long long __kernel_loff_t;=0D typedef __kernel_long_t __kernel_old_time_t;=0D =0D =0D =0D typedef long long __kernel_time64_t;=0D typedef __kernel_long_t __kernel_clock_t;=0D typedef int __kernel_timer_t;=0D typedef int __kernel_clockid_t;=0D typedef char * __kernel_caddr_t;=0D typedef unsigned short __kernel_uid16_t;=0D typedef unsigned short __kernel_gid16_t;=0D # 2 "./arch/riscv/include/generated/uapi/asm/posix_types.h" 2=0D # 37 "./include/uapi/linux/posix_types.h" 2=0D # 15 "./include/uapi/linux/types.h" 2=0D # 29 "./include/uapi/linux/types.h"=0D typedef __u16 __le16;=0D typedef __u16 __be16;=0D typedef __u32 __le32;=0D typedef __u32 __be32;=0D typedef __u64 __le64;=0D typedef __u64 __be64;=0D =0D typedef __u16 __sum16;=0D typedef __u32 __wsum;=0D # 52 "./include/uapi/linux/types.h"=0D typedef unsigned __poll_t;=0D # 7 "./include/linux/types.h" 2=0D =0D =0D =0D =0D =0D =0D typedef u32 __kernel_dev_t;=0D =0D typedef __kernel_fd_set fd_set;=0D typedef __kernel_dev_t dev_t;=0D typedef __kernel_ulong_t ino_t;=0D typedef __kernel_mode_t mode_t;=0D typedef unsigned short umode_t;=0D typedef u32 nlink_t;=0D typedef __kernel_off_t off_t;=0D typedef __kernel_pid_t pid_t;=0D typedef __kernel_daddr_t daddr_t;=0D typedef __kernel_key_t key_t;=0D typedef __kernel_suseconds_t suseconds_t;=0D typedef __kernel_timer_t timer_t;=0D typedef __kernel_clockid_t clockid_t;=0D typedef __kernel_mqd_t mqd_t;=0D =0D typedef _Bool bool;=0D =0D typedef __kernel_uid32_t uid_t;=0D typedef __kernel_gid32_t gid_t;=0D typedef __kernel_uid16_t uid16_t;=0D typedef __kernel_gid16_t gid16_t;=0D =0D typedef unsigned long uintptr_t;=0D # 46 "./include/linux/types.h"=0D typedef __kernel_loff_t loff_t;=0D # 55 "./include/linux/types.h"=0D typedef __kernel_size_t size_t;=0D =0D =0D =0D =0D typedef __kernel_ssize_t ssize_t;=0D =0D =0D =0D =0D typedef __kernel_ptrdiff_t ptrdiff_t;=0D =0D =0D =0D =0D typedef __kernel_clock_t clock_t;=0D =0D =0D =0D =0D typedef __kernel_caddr_t caddr_t;=0D =0D =0D =0D typedef unsigned char u_char;=0D typedef unsigned short u_short;=0D typedef unsigned int u_int;=0D typedef unsigned long u_long;=0D =0D =0D typedef unsigned char unchar;=0D typedef unsigned short ushort;=0D typedef unsigned int uint;=0D typedef unsigned long ulong;=0D =0D =0D =0D =0D typedef u8 u_int8_t;=0D typedef s8 int8_t;=0D typedef u16 u_int16_t;=0D typedef s16 int16_t;=0D typedef u32 u_int32_t;=0D typedef s32 int32_t;=0D =0D =0D =0D typedef u8 uint8_t;=0D typedef u16 uint16_t;=0D typedef u32 uint32_t;=0D =0D =0D typedef u64 uint64_t;=0D typedef u64 u_int64_t;=0D typedef s64 int64_t;=0D # 125 "./include/linux/types.h"=0D typedef u64 sector_t;=0D typedef u64 blkcnt_t;=0D # 143 "./include/linux/types.h"=0D typedef u64 dma_addr_t;=0D =0D =0D =0D =0D typedef unsigned int gfp_t;=0D typedef unsigned int slab_flags_t;=0D typedef unsigned int fmode_t;=0D =0D =0D typedef u64 phys_addr_t;=0D =0D =0D =0D =0D typedef phys_addr_t resource_size_t;=0D =0D =0D =0D =0D =0D typedef unsigned long irq_hw_number_t;=0D =0D typedef struct {=0D int counter;=0D } atomic_t;=0D =0D =0D =0D =0D typedef struct {=0D s64 counter;=0D } atomic64_t;=0D =0D =0D struct list_head {=0D struct list_head *next, *prev;=0D };=0D =0D struct hlist_head {=0D struct hlist_node *first;=0D };=0D =0D struct hlist_node {=0D struct hlist_node *next, **pprev;=0D };=0D =0D struct ustat {=0D __kernel_daddr_t f_tfree;=0D =0D =0D =0D unsigned long f_tinode;=0D =0D char f_fname[6];=0D char f_fpack[6];=0D };=0D # 220 "./include/linux/types.h"=0D struct callback_head {=0D struct callback_head *next;=0D void (*func)(struct callback_head *head);=0D } __attribute__((aligned(sizeof(void *))));=0D =0D =0D typedef void (*rcu_callback_t)(struct callback_head *head);=0D typedef void (*call_rcu_func_t)(struct callback_head *head, rcu_callback_t = func);=0D =0D typedef void (*swap_r_func_t)(void *a, void *b, int size, const void *priv)= ;=0D typedef void (*swap_func_t)(void *a, void *b, int size);=0D =0D typedef int (*cmp_r_func_t)(const void *a, const void *b, const void *priv)= ;=0D typedef int (*cmp_func_t)(const void *a, const void *b);=0D # 18 "./include/uapi/linux/capability.h" 2=0D # 39 "./include/uapi/linux/capability.h"=0D typedef struct __user_cap_header_struct {=0D __u32 version;=0D int pid;=0D } *cap_user_header_t;=0D =0D typedef struct __user_cap_data_struct {=0D __u32 effective;=0D __u32 permitted;=0D __u32 inheritable;=0D } *cap_user_data_t;=0D # 72 "./include/uapi/linux/capability.h"=0D struct vfs_cap_data {=0D __le32 magic_etc;=0D struct {=0D __le32 permitted;=0D __le32 inheritable;=0D } data[2];=0D };=0D =0D =0D =0D =0D struct vfs_ns_cap_data {=0D __le32 magic_etc;=0D struct {=0D __le32 permitted;=0D __le32 inheritable;=0D } data[2];=0D __le32 rootid;=0D };=0D # 17 "./include/linux/capability.h" 2=0D # 1 "./include/linux/uidgid.h" 1=0D # 16 "./include/linux/uidgid.h"=0D # 1 "./include/linux/highuid.h" 1=0D # 35 "./include/linux/highuid.h"=0D extern int overflowuid;=0D extern int overflowgid;=0D =0D extern void __bad_uid(void);=0D extern void __bad_gid(void);=0D # 82 "./include/linux/highuid.h"=0D extern int fs_overflowuid;=0D extern int fs_overflowgid;=0D # 17 "./include/linux/uidgid.h" 2=0D =0D struct user_namespace;=0D extern struct user_namespace init_user_ns;=0D =0D typedef struct {=0D uid_t val;=0D } kuid_t;=0D =0D =0D typedef struct {=0D gid_t val;=0D } kgid_t;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) uid_t __kuid_val(kuid_t uid)= =0D {=0D return uid.val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gid_t __kgid_val(kgid_t gid)= =0D {=0D return gid.val;=0D }=0D # 61 "./include/linux/uidgid.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_eq(kuid_t left, kui= d_t right)=0D {=0D return __kuid_val(left) =3D=3D __kuid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_eq(kgid_t left, kgi= d_t right)=0D {=0D return __kgid_val(left) =3D=3D __kgid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_gt(kuid_t left, kui= d_t right)=0D {=0D return __kuid_val(left) > __kuid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_gt(kgid_t left, kgi= d_t right)=0D {=0D return __kgid_val(left) > __kgid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_gte(kuid_t left, ku= id_t right)=0D {=0D return __kuid_val(left) >=3D __kuid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_gte(kgid_t left, kg= id_t right)=0D {=0D return __kgid_val(left) >=3D __kgid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_lt(kuid_t left, kui= d_t right)=0D {=0D return __kuid_val(left) < __kuid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_lt(kgid_t left, kgi= d_t right)=0D {=0D return __kgid_val(left) < __kgid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_lte(kuid_t left, ku= id_t right)=0D {=0D return __kuid_val(left) <=3D __kuid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_lte(kgid_t left, kg= id_t right)=0D {=0D return __kgid_val(left) <=3D __kgid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uid_valid(kuid_t uid)=0D {=0D return __kuid_val(uid) !=3D (uid_t) -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gid_valid(kgid_t gid)=0D {=0D return __kgid_val(gid) !=3D (gid_t) -1;=0D }=0D =0D =0D =0D extern kuid_t make_kuid(struct user_namespace *from, uid_t uid);=0D extern kgid_t make_kgid(struct user_namespace *from, gid_t gid);=0D =0D extern uid_t from_kuid(struct user_namespace *to, kuid_t uid);=0D extern gid_t from_kgid(struct user_namespace *to, kgid_t gid);=0D extern uid_t from_kuid_munged(struct user_namespace *to, kuid_t uid);=0D extern gid_t from_kgid_munged(struct user_namespace *to, kgid_t gid);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kuid_has_mapping(struct= user_namespace *ns, kuid_t uid)=0D {=0D return from_kuid(ns, uid) !=3D (uid_t) -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kgid_has_mapping(struct= user_namespace *ns, kgid_t gid)=0D {=0D return from_kgid(ns, gid) !=3D (gid_t) -1;=0D }=0D # 18 "./include/linux/capability.h" 2=0D =0D =0D =0D =0D extern int file_caps_enabled;=0D =0D typedef struct kernel_cap_struct {=0D __u32 cap[2];=0D } kernel_cap_t;=0D =0D =0D struct cpu_vfs_cap_data {=0D __u32 magic_etc;=0D kernel_cap_t permitted;=0D kernel_cap_t inheritable;=0D kuid_t rootid;=0D };=0D =0D =0D =0D =0D =0D struct file;=0D struct inode;=0D struct dentry;=0D struct task_struct;=0D struct user_namespace;=0D =0D extern const kernel_cap_t __cap_empty_set;=0D extern const kernel_cap_t __cap_init_eff_set;=0D # 118 "./include/linux/capability.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_combine(con= st kernel_cap_t a,=0D const kernel_cap_t b)=0D {=0D kernel_cap_t dest;=0D do { unsigned __capi; for (__capi =3D 0; __capi < 2; ++__capi) { dest.cap[= __capi] =3D a.cap[__capi] | b.cap[__capi]; } } while (0);=0D return dest;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_intersect(c= onst kernel_cap_t a,=0D const kernel_cap_t b)=0D {=0D kernel_cap_t dest;=0D do { unsigned __capi; for (__capi =3D 0; __capi < 2; ++__capi) { dest.cap[= __capi] =3D a.cap[__capi] & b.cap[__capi]; } } while (0);=0D return dest;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_drop(const = kernel_cap_t a,=0D const kernel_cap_t drop)=0D {=0D kernel_cap_t dest;=0D do { unsigned __capi; for (__capi =3D 0; __capi < 2; ++__capi) { dest.cap[= __capi] =3D a.cap[__capi] &~ drop.cap[__capi]; } } while (0);=0D return dest;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_invert(cons= t kernel_cap_t c)=0D {=0D kernel_cap_t dest;=0D do { unsigned __capi; for (__capi =3D 0; __capi < 2; ++__capi) { dest.cap[= __capi] =3D ~ c.cap[__capi]; } } while (0);=0D return dest;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cap_isclear(const kerne= l_cap_t a)=0D {=0D unsigned __capi;=0D for (__capi =3D 0; __capi < 2; ++__capi) {=0D if (a.cap[__capi] !=3D 0)=0D return false;=0D }=0D return true;=0D }=0D # 166 "./include/linux/capability.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cap_issubset(const kern= el_cap_t a, const kernel_cap_t set)=0D {=0D kernel_cap_t dest;=0D dest =3D cap_drop(a, set);=0D return cap_isclear(dest);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_drop_fs_set= (const kernel_cap_t a)=0D {=0D const kernel_cap_t __cap_fs_set =3D ((kernel_cap_t){{ ((1 << ((0) & 31)) |= (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & = 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } });=0D return cap_drop(a, __cap_fs_set);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_raise_fs_se= t(const kernel_cap_t a,=0D const kernel_cap_t permitted)=0D {=0D const kernel_cap_t __cap_fs_set =3D ((kernel_cap_t){{ ((1 << ((0) & 31)) |= (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & = 31)) | (1 << ((4) & 31))) | (1 << ((9) & 31)), ((1 << ((32) & 31))) } });=0D return cap_combine(a,=0D cap_intersect(permitted, __cap_fs_set));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_drop_nfsd_s= et(const kernel_cap_t a)=0D {=0D const kernel_cap_t __cap_fs_set =3D ((kernel_cap_t){{ ((1 << ((0) & 31)) |= (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) & = 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } });= =0D return cap_drop(a, __cap_fs_set);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kernel_cap_t cap_raise_nfsd_= set(const kernel_cap_t a,=0D const kernel_cap_t permitted)=0D {=0D const kernel_cap_t __cap_nfsd_set =3D ((kernel_cap_t){{ ((1 << ((0) & 31))= | (1 << ((27) & 31)) | (1 << ((1) & 31)) | (1 << ((2) & 31)) | (1 << ((3) = & 31)) | (1 << ((4) & 31))) | (1 << ((24) & 31)), ((1 << ((32) & 31))) } })= ;=0D return cap_combine(a,=0D cap_intersect(permitted, __cap_nfsd_set));=0D }=0D =0D =0D extern bool has_capability(struct task_struct *t, int cap);=0D extern bool has_ns_capability(struct task_struct *t,=0D struct user_namespace *ns, int cap);=0D extern bool has_capability_noaudit(struct task_struct *t, int cap);=0D extern bool has_ns_capability_noaudit(struct task_struct *t,=0D struct user_namespace *ns, int cap);=0D extern bool capable(int cap);=0D extern bool ns_capable(struct user_namespace *ns, int cap);=0D extern bool ns_capable_noaudit(struct user_namespace *ns, int cap);=0D extern bool ns_capable_setid(struct user_namespace *ns, int cap);=0D # 250 "./include/linux/capability.h"=0D bool privileged_wrt_inode_uidgid(struct user_namespace *ns,=0D struct user_namespace *mnt_userns,=0D const struct inode *inode);=0D bool capable_wrt_inode_uidgid(struct user_namespace *mnt_userns,=0D const struct inode *inode, int cap);=0D extern bool file_ns_capable(const struct file *file, struct user_namespace = *ns, int cap);=0D extern bool ptracer_capable(struct task_struct *tsk, struct user_namespace = *ns);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool perfmon_capable(void)=0D {=0D return capable(38) || capable(21);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_capable(void)=0D {=0D return capable(39) || capable(21);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool checkpoint_restore_ns_c= apable(struct user_namespace *ns)=0D {=0D return ns_capable(ns, 40) ||=0D ns_capable(ns, 21);=0D }=0D =0D =0D int get_vfs_caps_from_disk(struct user_namespace *mnt_userns,=0D const struct dentry *dentry,=0D struct cpu_vfs_cap_data *cpu_caps);=0D =0D int cap_convert_nscap(struct user_namespace *mnt_userns, struct dentry *den= try,=0D const void **ivalue, size_t size);=0D # 26 "net/ipv6/route.c" 2=0D # 1 "./include/linux/errno.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/errno.h" 1=0D # 1 "./arch/riscv/include/generated/uapi/asm/errno.h" 1=0D # 1 "./include/uapi/asm-generic/errno.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/errno-base.h" 1=0D # 6 "./include/uapi/asm-generic/errno.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/errno.h" 2=0D # 2 "./include/uapi/linux/errno.h" 2=0D # 6 "./include/linux/errno.h" 2=0D # 27 "net/ipv6/route.c" 2=0D # 1 "./include/linux/export.h" 1=0D # 72 "./include/linux/export.h"=0D struct kernel_symbol {=0D unsigned long value;=0D const char *name;=0D const char *namespace;=0D };=0D # 28 "net/ipv6/route.c" 2=0D =0D # 1 "./include/uapi/linux/times.h" 1=0D =0D =0D =0D =0D =0D =0D struct tms {=0D __kernel_clock_t tms_utime;=0D __kernel_clock_t tms_stime;=0D __kernel_clock_t tms_cutime;=0D __kernel_clock_t tms_cstime;=0D };=0D # 30 "net/ipv6/route.c" 2=0D # 1 "./include/linux/socket.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/socket.h" 1=0D # 1 "./include/uapi/asm-generic/socket.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/sockios.h" 1=0D # 1 "./include/uapi/asm-generic/sockios.h" 1=0D # 2 "./arch/riscv/include/generated/uapi/asm/sockios.h" 2=0D # 7 "./include/uapi/asm-generic/socket.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/socket.h" 2=0D # 7 "./include/linux/socket.h" 2=0D # 1 "./include/uapi/linux/sockios.h" 1=0D # 23 "./include/uapi/linux/sockios.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/sockios.h" 1=0D # 24 "./include/uapi/linux/sockios.h" 2=0D # 8 "./include/linux/socket.h" 2=0D # 1 "./include/linux/uio.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/kernel.h" 1=0D # 14 "./include/linux/kernel.h"=0D # 1 "./include/linux/stdarg.h" 1=0D =0D =0D =0D =0D typedef __builtin_va_list va_list;=0D # 15 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/align.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/const.h" 1=0D =0D =0D =0D # 1 "./include/vdso/const.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/const.h" 1=0D # 6 "./include/vdso/const.h" 2=0D # 5 "./include/linux/const.h" 2=0D # 6 "./include/linux/align.h" 2=0D # 16 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/limits.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/limits.h" 1=0D # 6 "./include/linux/limits.h" 2=0D =0D # 1 "./include/vdso/limits.h" 1=0D # 8 "./include/linux/limits.h" 2=0D # 17 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/linkage.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/stringify.h" 1=0D # 7 "./include/linux/linkage.h" 2=0D =0D # 1 "./arch/riscv/include/asm/linkage.h" 1=0D # 9 "./include/linux/linkage.h" 2=0D # 18 "./include/linux/kernel.h" 2=0D =0D =0D # 1 "./include/linux/compiler.h" 1=0D # 232 "./include/linux/compiler.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *offset_to_ptr(const in= t *off)=0D {=0D return (void *)((unsigned long)off + *off);=0D }=0D # 248 "./include/linux/compiler.h"=0D # 1 "./arch/riscv/include/generated/asm/rwonce.h" 1=0D # 1 "./include/asm-generic/rwonce.h" 1=0D # 26 "./include/asm-generic/rwonce.h"=0D # 1 "./include/linux/kasan-checks.h" 1=0D # 22 "./include/linux/kasan-checks.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __kasan_check_read(cons= t volatile void *p, unsigned int size)=0D {=0D return true;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __kasan_check_write(con= st volatile void *p, unsigned int size)=0D {=0D return true;=0D }=0D # 40 "./include/linux/kasan-checks.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_check_read(const = volatile void *p, unsigned int size)=0D {=0D return true;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_check_write(const= volatile void *p, unsigned int size)=0D {=0D return true;=0D }=0D # 27 "./include/asm-generic/rwonce.h" 2=0D # 1 "./include/linux/kcsan-checks.h" 1=0D # 189 "./include/linux/kcsan-checks.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_check_access(co= nst volatile void *ptr, size_t size,=0D int type) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_mb(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_wmb(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_rmb(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_release(void) {= }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_disable_current(v= oid) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_enable_current(vo= id) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_enable_current_no= warn(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_nestable_atomic_b= egin(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_nestable_atomic_e= nd(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_flat_atomic_begin= (void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_flat_atomic_end(v= oid) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_atomic_next(int n= ) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_set_access_mask(u= nsigned long mask) { }=0D =0D struct kcsan_scoped_access { };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kcsan_scoped_access *= =0D kcsan_begin_scoped_access(const volatile void *ptr, size_t size, int type,= =0D struct kcsan_scoped_access *sa) { return sa; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_end_scoped_access= (struct kcsan_scoped_access *sa) { }=0D # 229 "./include/linux/kcsan-checks.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_check_access(cons= t volatile void *ptr, size_t size,=0D int type) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_enable_current(= void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kcsan_disable_current= (void) { }=0D # 28 "./include/asm-generic/rwonce.h" 2=0D # 64 "./include/asm-generic/rwonce.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D unsigned long __read_once_word_nocheck(const void *addr)=0D {=0D return (*(const volatile typeof( _Generic((*(unsigned long *)addr), char: = (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsi= gned short: (unsigned short)0, signed short: (signed short)0, unsigned int:= (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)= 0, signed long: (signed long)0, unsigned long long: (unsigned long long)0, = signed long long: (signed long long)0, default: (*(unsigned long *)addr))) = *)&(*(unsigned long *)addr));=0D }=0D # 82 "./include/asm-generic/rwonce.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D unsigned long read_word_at_a_time(const void *addr)=0D {=0D kasan_check_read(addr, 1);=0D return *(unsigned long *)addr;=0D }=0D # 2 "./arch/riscv/include/generated/asm/rwonce.h" 2=0D # 249 "./include/linux/compiler.h" 2=0D # 21 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/container_of.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/build_bug.h" 1=0D # 6 "./include/linux/container_of.h" 2=0D # 1 "./include/linux/err.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/errno.h" 1=0D # 9 "./include/linux/err.h" 2=0D # 24 "./include/linux/err.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void * __attribute__((__warn= _unused_result__)) ERR_PTR(long error)=0D {=0D return (void *) error;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long __attribute__((__warn_u= nused_result__)) PTR_ERR( const void *ptr)=0D {=0D return (long) ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) IS_ERR( const void *ptr)=0D {=0D return __builtin_expect(!!((unsigned long)(void *)((unsigned long)ptr) >= =3D (unsigned long)-4095), 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) IS_ERR_OR_NULL( const void *ptr)=0D {=0D return __builtin_expect(!!(!ptr), 0) || __builtin_expect(!!((unsigned long= )(void *)((unsigned long)ptr) >=3D (unsigned long)-4095), 0);=0D }=0D # 51 "./include/linux/err.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void * __attribute__((__warn= _unused_result__)) ERR_CAST( const void *ptr)=0D {=0D =0D return (void *) ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) PTR_ERR_OR_ZERO( const void *ptr)=0D {=0D if (IS_ERR(ptr))=0D return PTR_ERR(ptr);=0D else=0D return 0;=0D }=0D # 7 "./include/linux/container_of.h" 2=0D # 22 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/bitops.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/linux/bitops.h" 2=0D # 1 "./include/linux/bits.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/vdso/bits.h" 1=0D # 7 "./include/linux/bits.h" 2=0D # 7 "./include/linux/bitops.h" 2=0D # 1 "./include/linux/typecheck.h" 1=0D # 8 "./include/linux/bitops.h" 2=0D =0D # 1 "./include/uapi/linux/kernel.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/sysinfo.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct sysinfo {=0D __kernel_long_t uptime;=0D __kernel_ulong_t loads[3];=0D __kernel_ulong_t totalram;=0D __kernel_ulong_t freeram;=0D __kernel_ulong_t sharedram;=0D __kernel_ulong_t bufferram;=0D __kernel_ulong_t totalswap;=0D __kernel_ulong_t freeswap;=0D __u16 procs;=0D __u16 pad;=0D __kernel_ulong_t totalhigh;=0D __kernel_ulong_t freehigh;=0D __u32 mem_unit;=0D char _f[20-2*sizeof(__kernel_ulong_t)-sizeof(__u32)];=0D };=0D # 6 "./include/uapi/linux/kernel.h" 2=0D # 10 "./include/linux/bitops.h" 2=0D # 24 "./include/linux/bitops.h"=0D extern unsigned int __sw_hweight8(unsigned int w);=0D extern unsigned int __sw_hweight16(unsigned int w);=0D extern unsigned int __sw_hweight32(unsigned int w);=0D extern unsigned long __sw_hweight64(__u64 w);=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/bitops.h" 1=0D # 14 "./arch/riscv/include/asm/bitops.h"=0D # 1 "./include/linux/irqflags.h" 1=0D # 16 "./include/linux/irqflags.h"=0D # 1 "./arch/riscv/include/asm/irqflags.h" 1=0D # 10 "./arch/riscv/include/asm/irqflags.h"=0D # 1 "./arch/riscv/include/asm/processor.h" 1=0D # 11 "./arch/riscv/include/asm/processor.h"=0D # 1 "./include/vdso/processor.h" 1=0D # 10 "./include/vdso/processor.h"=0D # 1 "./arch/riscv/include/asm/vdso/processor.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/barrier.h" 1=0D # 72 "./arch/riscv/include/asm/barrier.h"=0D # 1 "./include/asm-generic/barrier.h" 1=0D # 18 "./include/asm-generic/barrier.h"=0D # 1 "./arch/riscv/include/generated/asm/rwonce.h" 1=0D # 19 "./include/asm-generic/barrier.h" 2=0D # 73 "./arch/riscv/include/asm/barrier.h" 2=0D # 8 "./arch/riscv/include/asm/vdso/processor.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_relax(void)=0D {=0D =0D int dummy;=0D =0D __asm__ __volatile__ ("div %0, %0, zero" : "=3Dr" (dummy));=0D =0D __asm__ __volatile__("": : :"memory");=0D }=0D # 11 "./include/vdso/processor.h" 2=0D # 12 "./arch/riscv/include/asm/processor.h" 2=0D =0D # 1 "./arch/riscv/include/asm/ptrace.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/uapi/asm/ptrace.h" 1=0D # 19 "./arch/riscv/include/uapi/asm/ptrace.h"=0D struct user_regs_struct {=0D unsigned long pc;=0D unsigned long ra;=0D unsigned long sp;=0D unsigned long gp;=0D unsigned long tp;=0D unsigned long t0;=0D unsigned long t1;=0D unsigned long t2;=0D unsigned long s0;=0D unsigned long s1;=0D unsigned long a0;=0D unsigned long a1;=0D unsigned long a2;=0D unsigned long a3;=0D unsigned long a4;=0D unsigned long a5;=0D unsigned long a6;=0D unsigned long a7;=0D unsigned long s2;=0D unsigned long s3;=0D unsigned long s4;=0D unsigned long s5;=0D unsigned long s6;=0D unsigned long s7;=0D unsigned long s8;=0D unsigned long s9;=0D unsigned long s10;=0D unsigned long s11;=0D unsigned long t3;=0D unsigned long t4;=0D unsigned long t5;=0D unsigned long t6;=0D };=0D =0D struct __riscv_f_ext_state {=0D __u32 f[32];=0D __u32 fcsr;=0D };=0D =0D struct __riscv_d_ext_state {=0D __u64 f[32];=0D __u32 fcsr;=0D };=0D =0D struct __riscv_q_ext_state {=0D __u64 f[64] __attribute__((aligned(16)));=0D __u32 fcsr;=0D =0D =0D =0D =0D __u32 reserved[3];=0D };=0D =0D union __riscv_fp_state {=0D struct __riscv_f_ext_state f;=0D struct __riscv_d_ext_state d;=0D struct __riscv_q_ext_state q;=0D };=0D # 10 "./arch/riscv/include/asm/ptrace.h" 2=0D # 1 "./arch/riscv/include/asm/csr.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/asm.h" 1=0D # 10 "./arch/riscv/include/asm/csr.h" 2=0D # 11 "./arch/riscv/include/asm/ptrace.h" 2=0D =0D =0D =0D =0D struct pt_regs {=0D unsigned long epc;=0D unsigned long ra;=0D unsigned long sp;=0D unsigned long gp;=0D unsigned long tp;=0D unsigned long t0;=0D unsigned long t1;=0D unsigned long t2;=0D unsigned long s0;=0D unsigned long s1;=0D unsigned long a0;=0D unsigned long a1;=0D unsigned long a2;=0D unsigned long a3;=0D unsigned long a4;=0D unsigned long a5;=0D unsigned long a6;=0D unsigned long a7;=0D unsigned long s2;=0D unsigned long s3;=0D unsigned long s4;=0D unsigned long s5;=0D unsigned long s6;=0D unsigned long s7;=0D unsigned long s8;=0D unsigned long s9;=0D unsigned long s10;=0D unsigned long s11;=0D unsigned long t3;=0D unsigned long t4;=0D unsigned long t5;=0D unsigned long t6;=0D =0D unsigned long status;=0D unsigned long badaddr;=0D unsigned long cause;=0D =0D unsigned long orig_a0;=0D };=0D # 67 "./arch/riscv/include/asm/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long instruction_po= inter(struct pt_regs *regs)=0D {=0D return regs->epc;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void instruction_pointer_set= (struct pt_regs *regs,=0D unsigned long val)=0D {=0D regs->epc =3D val;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long user_stack_poi= nter(struct pt_regs *regs)=0D {=0D return regs->sp;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_stack_pointer_set(= struct pt_regs *regs,=0D unsigned long val)=0D {=0D regs->sp =3D val;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long kernel_stack_p= ointer(struct pt_regs *regs)=0D {=0D return regs->sp;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long frame_pointer(= struct pt_regs *regs)=0D {=0D return regs->s0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void frame_pointer_set(struc= t pt_regs *regs,=0D unsigned long val)=0D {=0D regs->s0 =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long regs_return_va= lue(struct pt_regs *regs)=0D {=0D return regs->a0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void regs_set_return_value(s= truct pt_regs *regs,=0D unsigned long val)=0D {=0D regs->a0 =3D val;=0D }=0D =0D extern int regs_query_register_offset(const char *name);=0D extern unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,=0D unsigned int n);=0D =0D void prepare_ftrace_return(unsigned long *parent, unsigned long self_addr,= =0D unsigned long frame_pointer);=0D int do_syscall_trace_enter(struct pt_regs *regs);=0D void do_syscall_trace_exit(struct pt_regs *regs);=0D # 136 "./arch/riscv/include/asm/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long regs_get_regis= ter(struct pt_regs *regs,=0D unsigned int offset)=0D {=0D if (__builtin_expect(!!(offset > __builtin_offsetof(struct pt_regs, orig_a= 0)), 0))=0D return 0;=0D =0D return *(unsigned long *)((unsigned long)regs + offset);=0D }=0D # 155 "./arch/riscv/include/asm/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long regs_get_kerne= l_argument(struct pt_regs *regs,=0D unsigned int n)=0D {=0D static const int nr_reg_arguments =3D 8;=0D static const unsigned int argument_offs[] =3D {=0D __builtin_offsetof(struct pt_regs, a0),=0D __builtin_offsetof(struct pt_regs, a1),=0D __builtin_offsetof(struct pt_regs, a2),=0D __builtin_offsetof(struct pt_regs, a3),=0D __builtin_offsetof(struct pt_regs, a4),=0D __builtin_offsetof(struct pt_regs, a5),=0D __builtin_offsetof(struct pt_regs, a6),=0D __builtin_offsetof(struct pt_regs, a7),=0D };=0D =0D if (n < nr_reg_arguments)=0D return regs_get_register(regs, argument_offs[n]);=0D return 0;=0D }=0D # 14 "./arch/riscv/include/asm/processor.h" 2=0D # 27 "./arch/riscv/include/asm/processor.h"=0D struct task_struct;=0D struct pt_regs;=0D =0D =0D struct thread_struct {=0D =0D unsigned long ra;=0D unsigned long sp;=0D unsigned long s[12];=0D struct __riscv_d_ext_state fstate;=0D unsigned long bad_cause;=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_thread_struct_whit= elist(unsigned long *offset,=0D unsigned long *size)=0D {=0D *offset =3D __builtin_offsetof(struct thread_struct, fstate);=0D *size =3D sizeof((((struct thread_struct *)0)->fstate));=0D }=0D # 61 "./arch/riscv/include/asm/processor.h"=0D extern void start_thread(struct pt_regs *regs,=0D unsigned long pc, unsigned long sp);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void release_thread(struct t= ask_struct *dead_task)=0D {=0D }=0D =0D extern unsigned long __get_wchan(struct task_struct *p);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wait_for_interrupt(void= )=0D {=0D __asm__ __volatile__ ("wfi");=0D }=0D =0D struct device_node;=0D int riscv_of_processor_hartid(struct device_node *node);=0D int riscv_of_parent_hartid(struct device_node *node);=0D =0D extern void riscv_fill_hwcap(void);=0D extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct= *src);=0D # 11 "./arch/riscv/include/asm/irqflags.h" 2=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long arch_local_sav= e_flags(void)=0D {=0D return ({ register unsigned long __v; __asm__ __volatile__ ("csrr %0, " "0= x100" : "=3Dr" (__v) : : "memory"); __v; });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_local_irq_enable(v= oid)=0D {=0D ({ unsigned long __v =3D (unsigned long)((0x00000002UL)); __asm__ __volati= le__ ("csrs " "0x100" ", %0" : : "rK" (__v) : "memory"); });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_local_irq_disable(= void)=0D {=0D ({ unsigned long __v =3D (unsigned long)((0x00000002UL)); __asm__ __volati= le__ ("csrc " "0x100" ", %0" : : "rK" (__v) : "memory"); });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long arch_local_irq= _save(void)=0D {=0D return ({ unsigned long __v =3D (unsigned long)((0x00000002UL)); __asm__ _= _volatile__ ("csrrc %0, " "0x100" ", %1" : "=3Dr" (__v) : "rK" (__v) : "mem= ory"); __v; });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_irqs_disabled_flags= (unsigned long flags)=0D {=0D return !(flags & (0x00000002UL));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_irqs_disabled(void)= =0D {=0D return arch_irqs_disabled_flags(arch_local_save_flags());=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_local_irq_restore(= unsigned long flags)=0D {=0D ({ unsigned long __v =3D (unsigned long)(flags & (0x00000002UL)); __asm__ = __volatile__ ("csrs " "0x100" ", %0" : : "rK" (__v) : "memory"); });=0D }=0D # 17 "./include/linux/irqflags.h" 2=0D # 1 "./arch/riscv/include/generated/asm/percpu.h" 1=0D # 1 "./include/asm-generic/percpu.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/threads.h" 1=0D # 7 "./include/asm-generic/percpu.h" 2=0D # 1 "./include/linux/percpu-defs.h" 1=0D # 308 "./include/linux/percpu-defs.h"=0D extern void __bad_size_call_parameter(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __this_cpu_preempt_chec= k(const char *op) { }=0D # 8 "./include/asm-generic/percpu.h" 2=0D # 19 "./include/asm-generic/percpu.h"=0D extern unsigned long __per_cpu_offset[32];=0D # 2 "./arch/riscv/include/generated/asm/percpu.h" 2=0D # 18 "./include/linux/irqflags.h" 2=0D # 27 "./include/linux/irqflags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) void lockdep_softirqs_on(u= nsigned long ip) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) void lockdep_softirqs_off(= unsigned long ip) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) void lockdep_hardirqs_on_p= repare(unsigned long ip) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) void lockdep_hardirqs_on(u= nsigned long ip) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) void lockdep_hardirqs_off(= unsigned long ip) { }=0D =0D =0D =0D =0D =0D struct irqtrace_events {=0D unsigned int irq_events;=0D unsigned long hardirq_enable_ip;=0D unsigned long hardirq_disable_ip;=0D unsigned int hardirq_enable_event;=0D unsigned int hardirq_disable_event;=0D unsigned long softirq_disable_ip;=0D unsigned long softirq_enable_ip;=0D unsigned int softirq_disable_event;=0D unsigned int softirq_enable_event;=0D };=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) hardirq= s_enabled;=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) hardirq= _context;=0D =0D extern void trace_hardirqs_on_prepare(void);=0D extern void trace_hardirqs_off_finish(void);=0D extern void trace_hardirqs_on(void);=0D extern void trace_hardirqs_off(void);=0D # 152 "./include/linux/irqflags.h"=0D extern void stop_critical_timings(void);=0D extern void start_critical_timings(void);=0D # 15 "./arch/riscv/include/asm/bitops.h" 2=0D =0D =0D =0D # 1 "./include/asm-generic/bitops/__ffs.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/__ffs.h" 2=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long __ffs(unsigned long word)=0D {=0D int num =3D 0;=0D =0D =0D if ((word & 0xffffffff) =3D=3D 0) {=0D num +=3D 32;=0D word >>=3D 32;=0D }=0D =0D if ((word & 0xffff) =3D=3D 0) {=0D num +=3D 16;=0D word >>=3D 16;=0D }=0D if ((word & 0xff) =3D=3D 0) {=0D num +=3D 8;=0D word >>=3D 8;=0D }=0D if ((word & 0xf) =3D=3D 0) {=0D num +=3D 4;=0D word >>=3D 4;=0D }=0D if ((word & 0x3) =3D=3D 0) {=0D num +=3D 2;=0D word >>=3D 2;=0D }=0D if ((word & 0x1) =3D=3D 0)=0D num +=3D 1;=0D return num;=0D }=0D # 19 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/ffz.h" 1=0D # 20 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/fls.h" 1=0D # 13 "./include/asm-generic/bitops/fls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int fls(unsigned int x)=0D {=0D int r =3D 32;=0D =0D if (!x)=0D return 0;=0D if (!(x & 0xffff0000u)) {=0D x <<=3D 16;=0D r -=3D 16;=0D }=0D if (!(x & 0xff000000u)) {=0D x <<=3D 8;=0D r -=3D 8;=0D }=0D if (!(x & 0xf0000000u)) {=0D x <<=3D 4;=0D r -=3D 4;=0D }=0D if (!(x & 0xc0000000u)) {=0D x <<=3D 2;=0D r -=3D 2;=0D }=0D if (!(x & 0x80000000u)) {=0D x <<=3D 1;=0D r -=3D 1;=0D }=0D return r;=0D }=0D # 21 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/__fls.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/__fls.h" 2=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long __fls(unsigned long word)=0D {=0D int num =3D 64 - 1;=0D =0D =0D if (!(word & (~0ul << 32))) {=0D num -=3D 32;=0D word <<=3D 32;=0D }=0D =0D if (!(word & (~0ul << (64 -16)))) {=0D num -=3D 16;=0D word <<=3D 16;=0D }=0D if (!(word & (~0ul << (64 -8)))) {=0D num -=3D 8;=0D word <<=3D 8;=0D }=0D if (!(word & (~0ul << (64 -4)))) {=0D num -=3D 4;=0D word <<=3D 4;=0D }=0D if (!(word & (~0ul << (64 -2)))) {=0D num -=3D 2;=0D word <<=3D 2;=0D }=0D if (!(word & (~0ul << (64 -1))))=0D num -=3D 1;=0D return num;=0D }=0D # 22 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/fls64.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/fls64.h" 2=0D # 27 "./include/asm-generic/bitops/fls64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int fls64(__u64 x)=0D {=0D if (x =3D=3D 0)=0D return 0;=0D return __fls(x) + 1;=0D }=0D # 23 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/sched.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 7 "./include/asm-generic/bitops/sched.h" 2=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sched_find_first_bit(con= st unsigned long *b)=0D {=0D =0D if (b[0])=0D return __ffs(b[0]);=0D return __ffs(b[1]) + 64;=0D # 30 "./include/asm-generic/bitops/sched.h"=0D }=0D # 24 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/ffs.h" 1=0D # 13 "./include/asm-generic/bitops/ffs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ffs(int x)=0D {=0D int r =3D 1;=0D =0D if (!x)=0D return 0;=0D if (!(x & 0xffff)) {=0D x >>=3D 16;=0D r +=3D 16;=0D }=0D if (!(x & 0xff)) {=0D x >>=3D 8;=0D r +=3D 8;=0D }=0D if (!(x & 0xf)) {=0D x >>=3D 4;=0D r +=3D 4;=0D }=0D if (!(x & 3)) {=0D x >>=3D 2;=0D r +=3D 2;=0D }=0D if (!(x & 1)) {=0D x >>=3D 1;=0D r +=3D 1;=0D }=0D return r;=0D }=0D # 25 "./arch/riscv/include/asm/bitops.h" 2=0D =0D # 1 "./include/asm-generic/bitops/hweight.h" 1=0D =0D =0D =0D =0D # 1 "./include/asm-generic/bitops/arch_hweight.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/arch_hweight.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __arch_hweight3= 2(unsigned int w)=0D {=0D return __sw_hweight32(w);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __arch_hweight1= 6(unsigned int w)=0D {=0D return __sw_hweight16(w);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __arch_hweight8= (unsigned int w)=0D {=0D return __sw_hweight8(w);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __arch_hweight= 64(__u64 w)=0D {=0D return __sw_hweight64(w);=0D }=0D # 6 "./include/asm-generic/bitops/hweight.h" 2=0D # 1 "./include/asm-generic/bitops/const_hweight.h" 1=0D # 7 "./include/asm-generic/bitops/hweight.h" 2=0D # 27 "./arch/riscv/include/asm/bitops.h" 2=0D # 71 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_set_bit(int nr,= volatile unsigned long *addr)=0D {=0D return ({ unsigned long __res, __mask; __mask =3D ((((1UL))) << ((nr) % 64= )); __asm__ __volatile__ ( "amo" "or" ".d" ".aqrl" " %0, %2, %1" : "=3Dr" (= __res), "+A" (addr[((nr) / 64)]) : "r" ((__mask)) : "memory"); ((__res & __= mask) !=3D 0); });=0D }=0D # 83 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_clear_bit(int n= r, volatile unsigned long *addr)=0D {=0D return ({ unsigned long __res, __mask; __mask =3D ((((1UL))) << ((nr) % 64= )); __asm__ __volatile__ ( "amo" "and" ".d" ".aqrl" " %0, %2, %1" : "=3Dr" = (__res), "+A" (addr[((nr) / 64)]) : "r" ((~(__mask))) : "memory"); ((__res = & __mask) !=3D 0); });=0D }=0D # 96 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_change_bit(int = nr, volatile unsigned long *addr)=0D {=0D return ({ unsigned long __res, __mask; __mask =3D ((((1UL))) << ((nr) % 64= )); __asm__ __volatile__ ( "amo" "xor" ".d" ".aqrl" " %0, %2, %1" : "=3Dr" = (__res), "+A" (addr[((nr) / 64)]) : "r" ((__mask)) : "memory"); ((__res & _= _mask) !=3D 0); });=0D }=0D # 113 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_bit(int nr, volatil= e unsigned long *addr)=0D {=0D __asm__ __volatile__ ( "amo" "or" ".d" "" " zero, %1, %0" : "+A" (addr[((n= r) / 64)]) : "r" ((((((1UL))) << ((nr) % 64)))) : "memory");;=0D }=0D # 127 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_bit(int nr, volat= ile unsigned long *addr)=0D {=0D __asm__ __volatile__ ( "amo" "and" ".d" "" " zero, %1, %0" : "+A" (addr[((= nr) / 64)]) : "r" ((~(((((1UL))) << ((nr) % 64))))) : "memory");;=0D }=0D # 141 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void change_bit(int nr, vola= tile unsigned long *addr)=0D {=0D __asm__ __volatile__ ( "amo" "xor" ".d" "" " zero, %1, %0" : "+A" (addr[((= nr) / 64)]) : "r" ((((((1UL))) << ((nr) % 64)))) : "memory");;=0D }=0D # 154 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_set_bit_lock(=0D unsigned long nr, volatile unsigned long *addr)=0D {=0D return ({ unsigned long __res, __mask; __mask =3D ((((1UL))) << ((nr) % 64= )); __asm__ __volatile__ ( "amo" "or" ".d" ".aq" " %0, %2, %1" : "=3Dr" (__= res), "+A" (addr[((nr) / 64)]) : "r" ((__mask)) : "memory"); ((__res & __ma= sk) !=3D 0); });=0D }=0D # 167 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_bit_unlock(=0D unsigned long nr, volatile unsigned long *addr)=0D {=0D __asm__ __volatile__ ( "amo" "and" ".d" ".rl" " zero, %1, %0" : "+A" (addr= [((nr) / 64)]) : "r" ((~(((((1UL))) << ((nr) % 64))))) : "memory");;=0D }=0D # 188 "./arch/riscv/include/asm/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __clear_bit_unlock(=0D unsigned long nr, volatile unsigned long *addr)=0D {=0D clear_bit_unlock(nr, addr);=0D }=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/asm-generic/bitops/non-atomic.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/non-atomic.h" 2=0D # 16 "./include/asm-generic/bitops/non-atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch___set_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D =0D *p |=3D mask;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch___clear_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D =0D *p &=3D ~mask;=0D }=0D # 45 "./include/asm-generic/bitops/non-atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D void arch___change_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D =0D *p ^=3D mask;=0D }=0D # 64 "./include/asm-generic/bitops/non-atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch___test_and_set_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D unsigned long old =3D *p;=0D =0D *p =3D old | mask;=0D return (old & mask) !=3D 0;=0D }=0D # 85 "./include/asm-generic/bitops/non-atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch___test_and_clear_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D unsigned long old =3D *p;=0D =0D *p =3D old & ~mask;=0D return (old & mask) !=3D 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch___test_and_change_bit(unsigned int nr, volatile unsigned long *addr)=0D {=0D unsigned long mask =3D ((((1UL))) << ((nr) % 64));=0D unsigned long *p =3D ((unsigned long *)addr) + ((nr) / 64);=0D unsigned long old =3D *p;=0D =0D *p =3D old ^ mask;=0D return (old & mask) !=3D 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_test_bit(unsigned int nr, const volatile unsigned long *addr)=0D {=0D return 1UL & (addr[((nr) / 64)] >> (nr & (64 -1)));=0D }=0D # 201 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/le.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 6 "./include/asm-generic/bitops/le.h" 2=0D # 1 "./arch/riscv/include/uapi/asm/byteorder.h" 1=0D # 10 "./arch/riscv/include/uapi/asm/byteorder.h"=0D # 1 "./include/linux/byteorder/little_endian.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/byteorder/little_endian.h" 1=0D # 14 "./include/uapi/linux/byteorder/little_endian.h"=0D # 1 "./include/linux/swab.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/swab.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/swab.h" 1=0D # 1 "./include/uapi/asm-generic/swab.h" 1=0D # 2 "./arch/riscv/include/generated/uapi/asm/swab.h" 2=0D # 9 "./include/uapi/linux/swab.h" 2=0D # 48 "./include/uapi/linux/swab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__)) _= _u16 __fswab16(__u16 val)=0D {=0D =0D =0D =0D return ((__u16)( (((__u16)(val) & (__u16)0x00ffU) << 8) | (((__u16)(val) &= (__u16)0xff00U) >> 8)));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__)) _= _u32 __fswab32(__u32 val)=0D {=0D =0D =0D =0D return ((__u32)( (((__u32)(val) & (__u32)0x000000ffUL) << 24) | (((__u32)(= val) & (__u32)0x0000ff00UL) << 8) | (((__u32)(val) & (__u32)0x00ff0000UL) >= > 8) | (((__u32)(val) & (__u32)0xff000000UL) >> 24)));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__)) _= _u64 __fswab64(__u64 val)=0D {=0D =0D =0D =0D =0D =0D =0D =0D return ((__u64)( (((__u64)(val) & (__u64)0x00000000000000ffULL) << 56) | (= ((__u64)(val) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(val) & (__= u64)0x0000000000ff0000ULL) << 24) | (((__u64)(val) & (__u64)0x00000000ff000= 000ULL) << 8) | (((__u64)(val) & (__u64)0x000000ff00000000ULL) >> 8) | (((_= _u64)(val) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(val) & (__u64= )0x00ff000000000000ULL) >> 40) | (((__u64)(val) & (__u64)0xff00000000000000= ULL) >> 56)));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__)) _= _u32 __fswahw32(__u32 val)=0D {=0D =0D =0D =0D return ((__u32)( (((__u32)(val) & (__u32)0x0000ffffUL) << 16) | (((__u32)(= val) & (__u32)0xffff0000UL) >> 16)));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__)) _= _u32 __fswahb32(__u32 val)=0D {=0D =0D =0D =0D return ((__u32)( (((__u32)(val) & (__u32)0x00ff00ffUL) << 8) | (((__u32)(v= al) & (__u32)0xff00ff00UL) >> 8)));=0D =0D }=0D # 136 "./include/uapi/linux/swab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long __swab(const unsigned long y)=0D {=0D =0D return (__builtin_constant_p((__u64)(y)) ? ((__u64)( (((__u64)(y) & (__u64= )0x00000000000000ffULL) << 56) | (((__u64)(y) & (__u64)0x000000000000ff00UL= L) << 40) | (((__u64)(y) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)= (y) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(y) & (__u64)0x000000f= f00000000ULL) >> 8) | (((__u64)(y) & (__u64)0x0000ff0000000000ULL) >> 24) |= (((__u64)(y) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(y) & (__u6= 4)0xff00000000000000ULL) >> 56))) : __fswab64(y));=0D =0D =0D =0D }=0D # 171 "./include/uapi/linux/swab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u16 __swab16p(const __u16 *p)=0D {=0D =0D =0D =0D return (__builtin_constant_p((__u16)(*p)) ? ((__u16)( (((__u16)(*p) & (__u= 16)0x00ffU) << 8) | (((__u16)(*p) & (__u16)0xff00U) >> 8))) : __fswab16(*p)= );=0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u32 __swab32p(const __u32 *p)=0D {=0D =0D =0D =0D return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u= 32)0x000000ffUL) << 24) | (((__u32)(*p) & (__u32)0x0000ff00UL) << 8) | (((_= _u32)(*p) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(*p) & (__u32)0xff000000U= L) >> 24))) : __fswab32(*p));=0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u64 __swab64p(const __u64 *p)=0D {=0D =0D =0D =0D return (__builtin_constant_p((__u64)(*p)) ? ((__u64)( (((__u64)(*p) & (__u= 64)0x00000000000000ffULL) << 56) | (((__u64)(*p) & (__u64)0x000000000000ff0= 0ULL) << 40) | (((__u64)(*p) & (__u64)0x0000000000ff0000ULL) << 24) | (((__= u64)(*p) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(*p) & (__u64)0x0= 00000ff00000000ULL) >> 8) | (((__u64)(*p) & (__u64)0x0000ff0000000000ULL) >= > 24) | (((__u64)(*p) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(*p= ) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(*p));=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 __swahw32p(const __u32= *p)=0D {=0D =0D =0D =0D return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u= 32)0x0000ffffUL) << 16) | (((__u32)(*p) & (__u32)0xffff0000UL) >> 16))) : _= _fswahw32(*p));=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 __swahb32p(const __u32= *p)=0D {=0D =0D =0D =0D return (__builtin_constant_p((__u32)(*p)) ? ((__u32)( (((__u32)(*p) & (__u= 32)0x00ff00ffUL) << 8) | (((__u32)(*p) & (__u32)0xff00ff00UL) >> 8))) : __f= swahb32(*p));=0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __swab16s(__u16 *p)=0D {=0D =0D =0D =0D *p =3D __swab16p(p);=0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __swab32s(__u32 *p)=0D {=0D =0D =0D =0D *p =3D __swab32p(p);=0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __swab64s(__u64 *p)=0D {=0D =0D =0D =0D *p =3D __swab64p(p);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __swahw32s(__u32 *p)=0D {=0D =0D =0D =0D *p =3D __swahw32p(p);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __swahb32s(__u32 *p)=0D {=0D =0D =0D =0D *p =3D __swahb32p(p);=0D =0D }=0D # 6 "./include/linux/swab.h" 2=0D # 15 "./include/uapi/linux/byteorder/little_endian.h" 2=0D # 45 "./include/uapi/linux/byteorder/little_endian.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __le64 __cpu_to_le64p(const __u64 *p)=0D {=0D return ( __le64)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u64 __le64_to_cpup(const __le64 *p)=0D {=0D return ( __u64)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __le32 __cpu_to_le32p(const __u32 *p)=0D {=0D return ( __le32)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u32 __le32_to_cpup(const __le32 *p)=0D {=0D return ( __u32)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __le16 __cpu_to_le16p(const __u16 *p)=0D {=0D return ( __le16)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u16 __le16_to_cpup(const __le16 *p)=0D {=0D return ( __u16)*p;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __be64 __cpu_to_be64p(const __u64 *p)=0D {=0D return ( __be64)__swab64p(p);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u64 __be64_to_cpup(const __be64 *p)=0D {=0D return __swab64p((__u64 *)p);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __be32 __cpu_to_be32p(const __u32 *p)=0D {=0D return ( __be32)__swab32p(p);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u32 __be32_to_cpup(const __be32 *p)=0D {=0D return __swab32p((__u32 *)p);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __be16 __cpu_to_be16p(const __u16 *p)=0D {=0D return ( __be16)__swab16p(p);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __u16 __be16_to_cpup(const __be16 *p)=0D {=0D return __swab16p((__u16 *)p);=0D }=0D # 6 "./include/linux/byteorder/little_endian.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/byteorder/generic.h" 1=0D # 144 "./include/linux/byteorder/generic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void le16_add_cpu(__le16 *va= r, u16 val)=0D {=0D *var =3D (( __le16)(__u16)((( __u16)(__le16)(*var)) + val));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void le32_add_cpu(__le32 *va= r, u32 val)=0D {=0D *var =3D (( __le32)(__u32)((( __u32)(__le32)(*var)) + val));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void le64_add_cpu(__le64 *va= r, u64 val)=0D {=0D *var =3D (( __le64)(__u64)((( __u64)(__le64)(*var)) + val));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void le32_to_cpu_array(u32 *= buf, unsigned int words)=0D {=0D while (words--) {=0D do { (void)(buf); } while (0);=0D buf++;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_to_le32_array(u32 *= buf, unsigned int words)=0D {=0D while (words--) {=0D do { (void)(buf); } while (0);=0D buf++;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void be16_add_cpu(__be16 *va= r, u16 val)=0D {=0D *var =3D (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((_= _u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)= ) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff= 00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val))) ? ((__u16)( (((_= _u16)(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))) ? ((__u16)( (= ((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u1= 6)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*v= ar))) + val)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_constant_p((_= _u16)(( __u16)(__be16)(*var))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)= ) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff= 00U) >> 8))) : __fswab16(( __u16)(__be16)(*var))) + val)) & (__u16)0xff00U)= >> 8))) : __fswab16(((__builtin_constant_p((__u16)(( __u16)(__be16)(*var))= ) ? ((__u16)( (((__u16)(( __u16)(__be16)(*var)) & (__u16)0x00ffU) << 8) | (= ((__u16)(( __u16)(__be16)(*var)) & (__u16)0xff00U) >> 8))) : __fswab16(( __= u16)(__be16)(*var))) + val))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void be32_add_cpu(__be32 *va= r, u32 val)=0D {=0D *var =3D (( __be32)(__builtin_constant_p((__u32)(((__builtin_constant_p((_= _u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)= ) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u3= 2)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff00= 00UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32(( __u32)(__be32)(*var))) + val))) ? ((__u32)( (((__u32)(((= __builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)= (( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)= (__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*= var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (_= _u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + val)) & = (__u32)0x000000ffUL) << 24) | (((__u32)(((__builtin_constant_p((__u32)(( __= u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32= )0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff= 00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8= ) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __f= swab32(( __u32)(__be32)(*var))) + val)) & (__u32)0x0000ff00UL) << 8) | (((_= _u32)(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? ((__u32)( (= ((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | (((__u32)(= ( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(_= _be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(*va= r)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(*var))) + = val)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((__builtin_constant_p((__u3= 2)(( __u32)(__be32)(*var))) ? ((__u32)( (((__u32)(( __u32)(__be32)(*var)) &= (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0= x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x00ff0000U= L) >> 8) | (((__u32)(( __u32)(__be32)(*var)) & (__u32)0xff000000UL) >> 24))= ) : __fswab32(( __u32)(__be32)(*var))) + val)) & (__u32)0xff000000UL) >> 24= ))) : __fswab32(((__builtin_constant_p((__u32)(( __u32)(__be32)(*var))) ? (= (__u32)( (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x000000ffUL) << 24) | = (((__u32)(( __u32)(__be32)(*var)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= ( __u32)(__be32)(*var)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(_= _be32)(*var)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(= *var))) + val))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void be64_add_cpu(__be64 *va= r, u64 val)=0D {=0D *var =3D (( __be64)(__builtin_constant_p((__u64)(((__builtin_constant_p((_= _u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)= ) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)= ) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)= ) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)= ) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var))= & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) = & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) = & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) = & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var)= )) + val))) ? ((__u64)( (((__u64)(((__builtin_constant_p((__u64)(( __u64)(_= _be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000= 00000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000= 000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000= 0000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000= 00000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000= 00ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000f= f0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff0= 00000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff000= 00000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__= u64)0x00000000000000ffULL) << 56) | (((__u64)(((__builtin_constant_p((__u64= )(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & = (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & = (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & = (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & = (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (= __u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (_= _u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (_= _u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (_= _u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) += val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(((__builtin_const= ant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be6= 4)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be6= 4)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be6= 4)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be6= 4)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64= )(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)= (*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)= (*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)= (*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be6= 4)(*var))) + val)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(((__b= uiltin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( = __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( = __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( = __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( = __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( _= _u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __= u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __= u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __= u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( = __u64)(__be64)(*var))) + val)) & (__u64)0x00000000ff000000ULL) << 8) | (((_= _u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (= ((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL) << 56) | (= ((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL) << 40) | (= ((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL) << 24) | (= ((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL) << 8) | ((= (__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((= __u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((= __u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >> 40) | (((= __u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >> 56))) : _= _fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x000000ff00000000ULL) >= > 8) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64)(*var))) ? = ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000000000ffULL)= << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000000000ff00ULL)= << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000000000ff0000ULL)= << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000ff000000ULL)= << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff00000000ULL) = >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000000000ULL) >= > 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000000000ULL) >= > 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000000000ULL) >= > 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0x0000ff00000= 00000ULL) >> 24) | (((__u64)(((__builtin_constant_p((__u64)(( __u64)(__be64= )(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000= 000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000= 0000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000= 00ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00000000= ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x000000ff0= 0000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x0000ff0000= 000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0x00ff000000= 000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)0xff00000000= 000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)) & (__u64)0= x00ff000000000000ULL) >> 40) | (((__u64)(((__builtin_constant_p((__u64)(( _= _u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(*var)) & (__u6= 4)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(*var)) & (__u6= 4)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u6= 4)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u6= 4)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64= )0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)= 0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)= 0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*var)) & (__u64)= 0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(*var))) + val)= ) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(((__builtin_constant= _p((__u64)(( __u64)(__be64)(*var))) ? ((__u64)( (((__u64)(( __u64)(__be64)(= *var)) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64)(= *var)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(( __u64)(__be64)(= *var)) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(= *var)) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)(*= var)) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(( __u64)(__be64)(*v= ar)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(*v= ar)) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(*v= ar)) & (__u64)0xff00000000000000ULL) >> 56))) : __fswab64(( __u64)(__be64)(= *var))) + val))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_to_be32_array(__be3= 2 *dst, const u32 *src, size_t len)=0D {=0D size_t i;=0D =0D for (i =3D 0; i < len; i++)=0D dst[i] =3D (( __be32)(__builtin_constant_p((__u32)((src[i]))) ? ((__u32)(= (((__u32)((src[i])) & (__u32)0x000000ffUL) << 24) | (((__u32)((src[i])) & = (__u32)0x0000ff00UL) << 8) | (((__u32)((src[i])) & (__u32)0x00ff0000UL) >> = 8) | (((__u32)((src[i])) & (__u32)0xff000000UL) >> 24))) : __fswab32((src[i= ]))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void be32_to_cpu_array(u32 *= dst, const __be32 *src, size_t len)=0D {=0D size_t i;=0D =0D for (i =3D 0; i < len; i++)=0D dst[i] =3D (__builtin_constant_p((__u32)(( __u32)(__be32)(src[i]))) ? ((_= _u32)( (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0x000000ffUL) << 24) | = (((__u32)(( __u32)(__be32)(src[i])) & (__u32)0x0000ff00UL) << 8) | (((__u32= )(( __u32)(__be32)(src[i])) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u3= 2)(__be32)(src[i])) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__= be32)(src[i])));=0D }=0D # 12 "./include/linux/byteorder/little_endian.h" 2=0D # 11 "./arch/riscv/include/uapi/asm/byteorder.h" 2=0D # 7 "./include/asm-generic/bitops/le.h" 2=0D # 19 "./include/asm-generic/bitops/le.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_bit_le(int nr, cons= t void *addr)=0D {=0D return arch_test_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_bit_le(int nr, void= *addr)=0D {=0D set_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_bit_le(int nr, vo= id *addr)=0D {=0D clear_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __set_bit_le(int nr, vo= id *addr)=0D {=0D arch___set_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __clear_bit_le(int nr, = void *addr)=0D {=0D arch___clear_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_set_bit_le(int = nr, void *addr)=0D {=0D return test_and_set_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_clear_bit_le(in= t nr, void *addr)=0D {=0D return test_and_clear_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __test_and_set_bit_le(in= t nr, void *addr)=0D {=0D return arch___test_and_set_bit(nr ^ 0, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __test_and_clear_bit_le(= int nr, void *addr)=0D {=0D return arch___test_and_clear_bit(nr ^ 0, addr);=0D }=0D # 202 "./arch/riscv/include/asm/bitops.h" 2=0D # 1 "./include/asm-generic/bitops/ext2-atomic.h" 1=0D # 203 "./arch/riscv/include/asm/bitops.h" 2=0D # 34 "./include/linux/bitops.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_bitmask_order(unsign= ed int count)=0D {=0D int order;=0D =0D order =3D fls(count);=0D return order;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long hweight_long(unsigned long w)=0D {=0D return sizeof(w) =3D=3D 4 ? (__builtin_constant_p(w) ? ((((unsigned int) (= (!!((w) & (1ULL << 0))) + (!!((w) & (1ULL << 1))) + (!!((w) & (1ULL << 2)))= + (!!((w) & (1ULL << 3))) + (!!((w) & (1ULL << 4))) + (!!((w) & (1ULL << 5= ))) + (!!((w) & (1ULL << 6))) + (!!((w) & (1ULL << 7))))) + ((unsigned int)= ((!!(((w) >> 8) & (1ULL << 0))) + (!!(((w) >> 8) & (1ULL << 1))) + (!!(((w= ) >> 8) & (1ULL << 2))) + (!!(((w) >> 8) & (1ULL << 3))) + (!!(((w) >> 8) &= (1ULL << 4))) + (!!(((w) >> 8) & (1ULL << 5))) + (!!(((w) >> 8) & (1ULL <<= 6))) + (!!(((w) >> 8) & (1ULL << 7)))))) + (((unsigned int) ((!!(((w) >> 1= 6) & (1ULL << 0))) + (!!(((w) >> 16) & (1ULL << 1))) + (!!(((w) >> 16) & (1= ULL << 2))) + (!!(((w) >> 16) & (1ULL << 3))) + (!!(((w) >> 16) & (1ULL << = 4))) + (!!(((w) >> 16) & (1ULL << 5))) + (!!(((w) >> 16) & (1ULL << 6))) + = (!!(((w) >> 16) & (1ULL << 7))))) + ((unsigned int) ((!!((((w) >> 16) >> 8)= & (1ULL << 0))) + (!!((((w) >> 16) >> 8) & (1ULL << 1))) + (!!((((w) >> 16= ) >> 8) & (1ULL << 2))) + (!!((((w) >> 16) >> 8) & (1ULL << 3))) + (!!((((w= ) >> 16) >> 8) & (1ULL << 4))) + (!!((((w) >> 16) >> 8) & (1ULL << 5))) + (= !!((((w) >> 16) >> 8) & (1ULL << 6))) + (!!((((w) >> 16) >> 8) & (1ULL << 7= ))))))) : __arch_hweight32(w)) : (__builtin_constant_p((__u64)w) ? (((((uns= igned int) ((!!(((__u64)w) & (1ULL << 0))) + (!!(((__u64)w) & (1ULL << 1)))= + (!!(((__u64)w) & (1ULL << 2))) + (!!(((__u64)w) & (1ULL << 3))) + (!!(((= __u64)w) & (1ULL << 4))) + (!!(((__u64)w) & (1ULL << 5))) + (!!(((__u64)w) = & (1ULL << 6))) + (!!(((__u64)w) & (1ULL << 7))))) + ((unsigned int) ((!!((= ((__u64)w) >> 8) & (1ULL << 0))) + (!!((((__u64)w) >> 8) & (1ULL << 1))) + = (!!((((__u64)w) >> 8) & (1ULL << 2))) + (!!((((__u64)w) >> 8) & (1ULL << 3)= )) + (!!((((__u64)w) >> 8) & (1ULL << 4))) + (!!((((__u64)w) >> 8) & (1ULL = << 5))) + (!!((((__u64)w) >> 8) & (1ULL << 6))) + (!!((((__u64)w) >> 8) & (= 1ULL << 7)))))) + (((unsigned int) ((!!((((__u64)w) >> 16) & (1ULL << 0))) = + (!!((((__u64)w) >> 16) & (1ULL << 1))) + (!!((((__u64)w) >> 16) & (1ULL <= < 2))) + (!!((((__u64)w) >> 16) & (1ULL << 3))) + (!!((((__u64)w) >> 16) & = (1ULL << 4))) + (!!((((__u64)w) >> 16) & (1ULL << 5))) + (!!((((__u64)w) >>= 16) & (1ULL << 6))) + (!!((((__u64)w) >> 16) & (1ULL << 7))))) + ((unsigne= d int) ((!!(((((__u64)w) >> 16) >> 8) & (1ULL << 0))) + (!!(((((__u64)w) >>= 16) >> 8) & (1ULL << 1))) + (!!(((((__u64)w) >> 16) >> 8) & (1ULL << 2))) = + (!!(((((__u64)w) >> 16) >> 8) & (1ULL << 3))) + (!!(((((__u64)w) >> 16) >= > 8) & (1ULL << 4))) + (!!(((((__u64)w) >> 16) >> 8) & (1ULL << 5))) + (!!(= ((((__u64)w) >> 16) >> 8) & (1ULL << 6))) + (!!(((((__u64)w) >> 16) >> 8) &= (1ULL << 7))))))) + ((((unsigned int) ((!!((((__u64)w) >> 32) & (1ULL << 0= ))) + (!!((((__u64)w) >> 32) & (1ULL << 1))) + (!!((((__u64)w) >> 32) & (1U= LL << 2))) + (!!((((__u64)w) >> 32) & (1ULL << 3))) + (!!((((__u64)w) >> 32= ) & (1ULL << 4))) + (!!((((__u64)w) >> 32) & (1ULL << 5))) + (!!((((__u64)w= ) >> 32) & (1ULL << 6))) + (!!((((__u64)w) >> 32) & (1ULL << 7))))) + ((uns= igned int) ((!!(((((__u64)w) >> 32) >> 8) & (1ULL << 0))) + (!!(((((__u64)w= ) >> 32) >> 8) & (1ULL << 1))) + (!!(((((__u64)w) >> 32) >> 8) & (1ULL << 2= ))) + (!!(((((__u64)w) >> 32) >> 8) & (1ULL << 3))) + (!!(((((__u64)w) >> 3= 2) >> 8) & (1ULL << 4))) + (!!(((((__u64)w) >> 32) >> 8) & (1ULL << 5))) + = (!!(((((__u64)w) >> 32) >> 8) & (1ULL << 6))) + (!!(((((__u64)w) >> 32) >> = 8) & (1ULL << 7)))))) + (((unsigned int) ((!!(((((__u64)w) >> 32) >> 16) & = (1ULL << 0))) + (!!(((((__u64)w) >> 32) >> 16) & (1ULL << 1))) + (!!(((((__= u64)w) >> 32) >> 16) & (1ULL << 2))) + (!!(((((__u64)w) >> 32) >> 16) & (1U= LL << 3))) + (!!(((((__u64)w) >> 32) >> 16) & (1ULL << 4))) + (!!(((((__u64= )w) >> 32) >> 16) & (1ULL << 5))) + (!!(((((__u64)w) >> 32) >> 16) & (1ULL = << 6))) + (!!(((((__u64)w) >> 32) >> 16) & (1ULL << 7))))) + ((unsigned int= ) ((!!((((((__u64)w) >> 32) >> 16) >> 8) & (1ULL << 0))) + (!!((((((__u64)w= ) >> 32) >> 16) >> 8) & (1ULL << 1))) + (!!((((((__u64)w) >> 32) >> 16) >> = 8) & (1ULL << 2))) + (!!((((((__u64)w) >> 32) >> 16) >> 8) & (1ULL << 3))) = + (!!((((((__u64)w) >> 32) >> 16) >> 8) & (1ULL << 4))) + (!!((((((__u64)w)= >> 32) >> 16) >> 8) & (1ULL << 5))) + (!!((((((__u64)w) >> 32) >> 16) >> 8= ) & (1ULL << 6))) + (!!((((((__u64)w) >> 32) >> 16) >> 8) & (1ULL << 7)))))= ))) : __arch_hweight64((__u64)w));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u64 rol64(__u64 word, unsi= gned int shift)=0D {=0D return (word << (shift & 63)) | (word >> ((-shift) & 63));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u64 ror64(__u64 word, unsi= gned int shift)=0D {=0D return (word >> (shift & 63)) | (word << ((-shift) & 63));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 rol32(__u32 word, unsi= gned int shift)=0D {=0D return (word << (shift & 31)) | (word >> ((-shift) & 31));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 ror32(__u32 word, unsi= gned int shift)=0D {=0D return (word >> (shift & 31)) | (word << ((-shift) & 31));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u16 rol16(__u16 word, unsi= gned int shift)=0D {=0D return (word << (shift & 15)) | (word >> ((-shift) & 15));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u16 ror16(__u16 word, unsi= gned int shift)=0D {=0D return (word >> (shift & 15)) | (word << ((-shift) & 15));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 rol8(__u8 word, unsigne= d int shift)=0D {=0D return (word << (shift & 7)) | (word >> ((-shift) & 7));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 ror8(__u8 word, unsigne= d int shift)=0D {=0D return (word >> (shift & 7)) | (word << ((-shift) & 7));=0D }=0D # 135 "./include/linux/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __s32 sign_extend32(__u32 value, int index)=0D {=0D __u8 shift =3D 31 - index;=0D return (__s32)(value << shift) >> shift;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __s64 sign_extend64(__u64 value, int index)=0D {=0D __u8 shift =3D 63 - index;=0D return (__s64)(value << shift) >> shift;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned fls_long(unsigned l= ong l)=0D {=0D if (sizeof(l) =3D=3D 4)=0D return fls(l);=0D return fls64(l);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_count_order(unsigned= int count)=0D {=0D if (count =3D=3D 0)=0D return -1;=0D =0D return fls(--count);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_count_order_long(uns= igned long l)=0D {=0D if (l =3D=3D 0UL)=0D return -1;=0D return (int)fls_long(--l);=0D }=0D # 188 "./include/linux/bitops.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __ffs64(u64 wo= rd)=0D {=0D =0D =0D =0D =0D =0D =0D return __ffs((unsigned long)word);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void assign_bit(long nr, volatile unsigned long *addr,=0D bool value)=0D {=0D if (value)=0D set_bit(nr, addr);=0D else=0D clear_bit(nr, addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __assign_bit(long nr, volatile unsigned long *addr,=0D bool value)=0D {=0D if (value)=0D arch___set_bit(nr, addr);=0D else=0D arch___clear_bit(nr, addr);=0D }=0D # 23 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/kstrtox.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D int __attribute__((__warn_unused_result__)) _kstrtoul(const char *s, unsign= ed int base, unsigned long *res);=0D int __attribute__((__warn_unused_result__)) _kstrtol(const char *s, unsigne= d int base, long *res);=0D =0D int __attribute__((__warn_unused_result__)) kstrtoull(const char *s, unsign= ed int base, unsigned long long *res);=0D int __attribute__((__warn_unused_result__)) kstrtoll(const char *s, unsigne= d int base, long long *res);=0D # 30 "./include/linux/kstrtox.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtoul(const char *s, unsigned int base, unsigned long *r= es)=0D {=0D =0D =0D =0D =0D if (sizeof(unsigned long) =3D=3D sizeof(unsigned long long) &&=0D __alignof__(unsigned long) =3D=3D __alignof__(unsigned long long))=0D return kstrtoull(s, base, (unsigned long long *)res);=0D else=0D return _kstrtoul(s, base, res);=0D }=0D # 58 "./include/linux/kstrtox.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtol(const char *s, unsigned int base, long *res)=0D {=0D =0D =0D =0D =0D if (sizeof(long) =3D=3D sizeof(long long) &&=0D __alignof__(long) =3D=3D __alignof__(long long))=0D return kstrtoll(s, base, (long long *)res);=0D else=0D return _kstrtol(s, base, res);=0D }=0D =0D int __attribute__((__warn_unused_result__)) kstrtouint(const char *s, unsig= ned int base, unsigned int *res);=0D int __attribute__((__warn_unused_result__)) kstrtoint(const char *s, unsign= ed int base, int *res);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtou64(const char *s, unsigned int base, u64 *res)=0D {=0D return kstrtoull(s, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtos64(const char *s, unsigned int base, s64 *res)=0D {=0D return kstrtoll(s, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtou32(const char *s, unsigned int base, u32 *res)=0D {=0D return kstrtouint(s, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtos32(const char *s, unsigned int base, s32 *res)=0D {=0D return kstrtoint(s, base, res);=0D }=0D =0D int __attribute__((__warn_unused_result__)) kstrtou16(const char *s, unsign= ed int base, u16 *res);=0D int __attribute__((__warn_unused_result__)) kstrtos16(const char *s, unsign= ed int base, s16 *res);=0D int __attribute__((__warn_unused_result__)) kstrtou8(const char *s, unsigne= d int base, u8 *res);=0D int __attribute__((__warn_unused_result__)) kstrtos8(const char *s, unsigne= d int base, s8 *res);=0D int __attribute__((__warn_unused_result__)) kstrtobool(const char *s, bool = *res);=0D =0D int __attribute__((__warn_unused_result__)) kstrtoull_from_user(const char = *s, size_t count, unsigned int base, unsigned long long *res);=0D int __attribute__((__warn_unused_result__)) kstrtoll_from_user(const char *= s, size_t count, unsigned int base, long long *res);=0D int __attribute__((__warn_unused_result__)) kstrtoul_from_user(const char *= s, size_t count, unsigned int base, unsigned long *res);=0D int __attribute__((__warn_unused_result__)) kstrtol_from_user(const char *s= , size_t count, unsigned int base, long *res);=0D int __attribute__((__warn_unused_result__)) kstrtouint_from_user(const char= *s, size_t count, unsigned int base, unsigned int *res);=0D int __attribute__((__warn_unused_result__)) kstrtoint_from_user(const char = *s, size_t count, unsigned int base, int *res);=0D int __attribute__((__warn_unused_result__)) kstrtou16_from_user(const char = *s, size_t count, unsigned int base, u16 *res);=0D int __attribute__((__warn_unused_result__)) kstrtos16_from_user(const char = *s, size_t count, unsigned int base, s16 *res);=0D int __attribute__((__warn_unused_result__)) kstrtou8_from_user(const char *= s, size_t count, unsigned int base, u8 *res);=0D int __attribute__((__warn_unused_result__)) kstrtos8_from_user(const char *= s, size_t count, unsigned int base, s8 *res);=0D int __attribute__((__warn_unused_result__)) kstrtobool_from_user(const char= *s, size_t count, bool *res);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtou64_from_user(const char *s, size_t count, unsigned i= nt base, u64 *res)=0D {=0D return kstrtoull_from_user(s, count, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtos64_from_user(const char *s, size_t count, unsigned i= nt base, s64 *res)=0D {=0D return kstrtoll_from_user(s, count, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtou32_from_user(const char *s, size_t count, unsigned i= nt base, u32 *res)=0D {=0D return kstrtouint_from_user(s, count, base, res);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kstrtos32_from_user(const char *s, size_t count, unsigned i= nt base, s32 *res)=0D {=0D return kstrtoint_from_user(s, count, base, res);=0D }=0D # 145 "./include/linux/kstrtox.h"=0D extern unsigned long simple_strtoul(const char *,char **,unsigned int);=0D extern long simple_strtol(const char *,char **,unsigned int);=0D extern unsigned long long simple_strtoull(const char *,char **,unsigned int= );=0D extern long long simple_strtoll(const char *,char **,unsigned int);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int strtobool(const char *s,= bool *res)=0D {=0D return kstrtobool(s, res);=0D }=0D # 24 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/log2.h" 1=0D # 21 "./include/linux/log2.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((const))=0D int __ilog2_u32(u32 n)=0D {=0D return fls(n) - 1;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((const))=0D int __ilog2_u64(u64 n)=0D {=0D return fls64(n) - 1;=0D }=0D # 44 "./include/linux/log2.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((const))=0D bool is_power_of_2(unsigned long n)=0D {=0D return (n !=3D 0 && ((n & (n - 1)) =3D=3D 0));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((const))=0D unsigned long __roundup_pow_of_two(unsigned long n)=0D {=0D return 1UL << fls_long(n - 1);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((const))=0D unsigned long __rounddown_pow_of_two(unsigned long n)=0D {=0D return 1UL << (fls_long(n) - 1);=0D }=0D # 198 "./include/linux/log2.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__const__))=0D int __order_base_2(unsigned long n)=0D {=0D return n > 1 ? ( __builtin_constant_p(n - 1) ? ((n - 1) < 2 ? 0 : 63 - __b= uiltin_clzll(n - 1)) : (sizeof(n - 1) <=3D 4) ? __ilog2_u32(n - 1) : __ilog= 2_u64(n - 1) ) + 1 : 0;=0D }=0D # 225 "./include/linux/log2.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((const))=0D int __bits_per(unsigned long n)=0D {=0D if (n < 2)=0D return 1;=0D if (is_power_of_2(n))=0D return ( __builtin_constant_p(n) ? ( ((n) =3D=3D 0 || (n) =3D=3D 1) ? 0 := ( __builtin_constant_p((n) - 1) ? (((n) - 1) < 2 ? 0 : 63 - __builtin_clzl= l((n) - 1)) : (sizeof((n) - 1) <=3D 4) ? __ilog2_u32((n) - 1) : __ilog2_u64= ((n) - 1) ) + 1) : __order_base_2(n) ) + 1;=0D return ( __builtin_constant_p(n) ? ( ((n) =3D=3D 0 || (n) =3D=3D 1) ? 0 : = ( __builtin_constant_p((n) - 1) ? (((n) - 1) < 2 ? 0 : 63 - __builtin_clzll= ((n) - 1)) : (sizeof((n) - 1) <=3D 4) ? __ilog2_u32((n) - 1) : __ilog2_u64(= (n) - 1) ) + 1) : __order_base_2(n) );=0D }=0D # 25 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/math.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/div64.h" 1=0D # 1 "./include/asm-generic/div64.h" 1=0D # 2 "./arch/riscv/include/generated/asm/div64.h" 2=0D # 7 "./include/linux/math.h" 2=0D # 115 "./include/linux/math.h"=0D struct s16_fract { __s16 numerator; __s16 denominator; };=0D struct u16_fract { __u16 numerator; __u16 denominator; };=0D struct s32_fract { __s32 numerator; __s32 denominator; };=0D struct u32_fract { __u32 numerator; __u32 denominator; };=0D # 172 "./include/linux/math.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 reciprocal_scale(u32 val= , u32 ep_ro)=0D {=0D return (u32)(((u64) val * ep_ro) >> 32);=0D }=0D =0D u64 int_pow(u64 base, unsigned int exp);=0D unsigned long int_sqrt(unsigned long);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 int_sqrt64(u64 x)=0D {=0D return (u32)int_sqrt(x);=0D }=0D # 26 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/minmax.h" 1=0D # 27 "./include/linux/kernel.h" 2=0D =0D # 1 "./include/linux/panic.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct pt_regs;=0D =0D extern long (*panic_blink)(int state);=0D __attribute__((__format__(printf, 1, 2)))=0D void panic(const char *fmt, ...) __attribute__((__noreturn__)) __attribute_= _((__cold__));=0D void nmi_panic(struct pt_regs *regs, const char *msg);=0D extern void oops_enter(void);=0D extern void oops_exit(void);=0D extern bool oops_may_print(void);=0D =0D =0D extern unsigned int sysctl_oops_all_cpu_backtrace;=0D =0D =0D =0D =0D extern int panic_timeout;=0D extern unsigned long panic_print;=0D extern int panic_on_oops;=0D extern int panic_on_unrecovered_nmi;=0D extern int panic_on_io_nmi;=0D extern int panic_on_warn;=0D =0D extern unsigned long panic_on_taint;=0D extern bool panic_on_taint_nousertaint;=0D =0D extern int sysctl_panic_on_rcu_stall;=0D extern int sysctl_max_rcu_stall_to_panic;=0D extern int sysctl_panic_on_stackoverflow;=0D =0D extern bool crash_kexec_post_notifiers;=0D =0D =0D =0D =0D =0D =0D extern atomic_t panic_cpu;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_arch_panic_timeout(= int timeout, int arch_default_timeout)=0D {=0D if (panic_timeout =3D=3D arch_default_timeout)=0D panic_timeout =3D timeout;=0D }=0D # 80 "./include/linux/panic.h"=0D struct taint_flag {=0D char c_true;=0D char c_false;=0D bool module;=0D };=0D =0D extern const struct taint_flag taint_flags[18];=0D =0D enum lockdep_ok {=0D LOCKDEP_STILL_OK,=0D LOCKDEP_NOW_UNRELIABLE,=0D };=0D =0D extern const char *print_tainted(void);=0D extern void add_taint(unsigned flag, enum lockdep_ok);=0D extern int test_taint(unsigned flag);=0D extern unsigned long get_taint(void);=0D # 29 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/printk.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/init.h" 1=0D # 116 "./include/linux/init.h"=0D typedef int (*initcall_t)(void);=0D typedef void (*exitcall_t)(void);=0D # 127 "./include/linux/init.h"=0D typedef initcall_t initcall_entry_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) initcall_t initcall_from_ent= ry(initcall_entry_t *entry)=0D {=0D return *entry;=0D }=0D =0D =0D extern initcall_entry_t __con_initcall_start[], __con_initcall_end[];=0D =0D =0D typedef void (*ctor_fn_t)(void);=0D =0D struct file_system_type;=0D =0D =0D extern int do_one_initcall(initcall_t fn);=0D extern char __attribute__((__section__(".init.data"))) boot_command_line[];= =0D extern char *saved_command_line;=0D extern unsigned int reset_devices;=0D =0D =0D void setup_arch(char **);=0D void prepare_namespace(void);=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) init_rootfs(void);=0D extern struct file_system_type rootfs_fs_type;=0D =0D =0D extern bool rodata_enabled;=0D =0D =0D void mark_rodata_ro(void);=0D =0D =0D extern void (*late_time_init)(void);=0D =0D extern bool initcall_debug;=0D # 303 "./include/linux/init.h"=0D struct obs_kernel_param {=0D const char *str;=0D int (*setup_func)(char *);=0D int early;=0D };=0D # 359 "./include/linux/init.h"=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) parse_early_param(void);=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) parse_early_options(char *cmdline);= =0D # 7 "./include/linux/printk.h" 2=0D # 1 "./include/linux/kern_levels.h" 1=0D # 8 "./include/linux/printk.h" 2=0D =0D # 1 "./include/linux/cache.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/cache.h" 1=0D # 7 "./include/linux/cache.h" 2=0D # 10 "./include/linux/printk.h" 2=0D # 1 "./include/linux/ratelimit_types.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/param.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/param.h" 1=0D # 1 "./include/asm-generic/param.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/param.h" 1=0D # 6 "./include/asm-generic/param.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/param.h" 2=0D # 6 "./include/uapi/linux/param.h" 2=0D # 7 "./include/linux/ratelimit_types.h" 2=0D # 1 "./include/linux/spinlock_types_raw.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/spinlock_types.h" 1=0D # 13 "./arch/riscv/include/asm/spinlock_types.h"=0D typedef struct {=0D volatile unsigned int lock;=0D } arch_spinlock_t;=0D =0D =0D =0D typedef struct {=0D volatile unsigned int lock;=0D } arch_rwlock_t;=0D # 8 "./include/linux/spinlock_types_raw.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/lockdep_types.h" 1=0D # 17 "./include/linux/lockdep_types.h"=0D enum lockdep_wait_type {=0D LD_WAIT_INV =3D 0,=0D =0D LD_WAIT_FREE,=0D LD_WAIT_SPIN,=0D =0D =0D =0D =0D LD_WAIT_CONFIG =3D LD_WAIT_SPIN,=0D =0D LD_WAIT_SLEEP,=0D =0D LD_WAIT_MAX,=0D };=0D =0D enum lockdep_lock_type {=0D LD_LOCK_NORMAL =3D 0,=0D LD_LOCK_PERCPU,=0D LD_LOCK_MAX,=0D };=0D # 69 "./include/linux/lockdep_types.h"=0D struct lockdep_subclass_key {=0D char __one_byte;=0D } __attribute__ ((__packed__));=0D =0D =0D struct lock_class_key {=0D union {=0D struct hlist_node hash_entry;=0D struct lockdep_subclass_key subkeys[8UL];=0D };=0D };=0D =0D extern struct lock_class_key __lockdep_no_validate__;=0D =0D struct lock_trace;=0D =0D =0D =0D =0D =0D =0D =0D struct lock_class {=0D =0D =0D =0D struct hlist_node hash_entry;=0D =0D =0D =0D =0D =0D =0D struct list_head lock_entry;=0D =0D =0D =0D =0D =0D =0D struct list_head locks_after, locks_before;=0D =0D const struct lockdep_subclass_key *key;=0D unsigned int subclass;=0D unsigned int dep_gen_id;=0D =0D =0D =0D =0D unsigned long usage_mask;=0D const struct lock_trace *usage_traces[(2*4 + 2)];=0D =0D =0D =0D =0D =0D int name_version;=0D const char *name;=0D =0D u8 wait_type_inner;=0D u8 wait_type_outer;=0D u8 lock_type;=0D =0D =0D =0D =0D =0D =0D } ;=0D # 176 "./include/linux/lockdep_types.h"=0D struct lockdep_map {=0D struct lock_class_key *key;=0D struct lock_class *class_cache[2];=0D const char *name;=0D u8 wait_type_outer;=0D u8 wait_type_inner;=0D u8 lock_type;=0D =0D =0D =0D =0D =0D };=0D =0D struct pin_cookie { unsigned int val; };=0D # 13 "./include/linux/spinlock_types_raw.h" 2=0D =0D typedef struct raw_spinlock {=0D arch_spinlock_t raw_lock;=0D =0D unsigned int magic, owner_cpu;=0D void *owner;=0D =0D =0D struct lockdep_map dep_map;=0D =0D } raw_spinlock_t;=0D # 8 "./include/linux/ratelimit_types.h" 2=0D =0D =0D =0D =0D =0D =0D =0D struct ratelimit_state {=0D raw_spinlock_t lock;=0D =0D int interval;=0D int burst;=0D int printed;=0D int missed;=0D unsigned long begin;=0D unsigned long flags;=0D };=0D # 40 "./include/linux/ratelimit_types.h"=0D extern int ___ratelimit(struct ratelimit_state *rs, const char *func);=0D # 11 "./include/linux/printk.h" 2=0D # 1 "./include/linux/once_lite.h" 1=0D # 12 "./include/linux/printk.h" 2=0D =0D extern const char linux_banner[];=0D extern const char linux_proc_banner[];=0D =0D extern int oops_in_progress;=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int printk_get_level(const c= har *buffer)=0D {=0D if (buffer[0] =3D=3D '\001' && buffer[1]) {=0D switch (buffer[1]) {=0D case '0' ... '7':=0D case 'c':=0D return buffer[1];=0D }=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *printk_skip_leve= l(const char *buffer)=0D {=0D if (printk_get_level(buffer))=0D return buffer + 2;=0D =0D return buffer;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *printk_skip_head= ers(const char *buffer)=0D {=0D while (printk_get_level(buffer))=0D buffer =3D printk_skip_level(buffer);=0D =0D return buffer;=0D }=0D # 66 "./include/linux/printk.h"=0D extern int console_printk[];=0D =0D =0D =0D =0D =0D =0D extern void console_verbose(void);=0D =0D =0D =0D extern char devkmsg_log_str[];=0D struct ctl_table;=0D =0D extern int suppress_printk;=0D =0D struct va_format {=0D const char *fmt;=0D va_list *va;=0D };=0D # 140 "./include/linux/printk.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__format__(pr= intf, 1, 2))) __attribute__((__cold__))=0D void early_printk(const char *s, ...) { }=0D =0D =0D struct dev_printk_info;=0D =0D =0D __attribute__((__format__(printf, 4, 0)))=0D int vprintk_emit(int facility, int level,=0D const struct dev_printk_info *dev_info,=0D const char *fmt, va_list args);=0D =0D __attribute__((__format__(printf, 1, 0)))=0D int vprintk(const char *fmt, va_list args);=0D =0D __attribute__((__format__(printf, 1, 2))) __attribute__((__cold_= _))=0D int _printk(const char *fmt, ...);=0D =0D =0D =0D =0D __attribute__((__format__(printf, 1, 2))) __attribute__((__cold__)) int _pr= intk_deferred(const char *fmt, ...);=0D =0D extern void __printk_safe_enter(void);=0D extern void __printk_safe_exit(void);=0D # 178 "./include/linux/printk.h"=0D extern int __printk_ratelimit(const char *func);=0D =0D extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,=0D unsigned int interval_msec);=0D =0D extern int printk_delay_msec;=0D extern int dmesg_restrict;=0D =0D extern void wake_up_klogd(void);=0D =0D char *log_buf_addr_get(void);=0D u32 log_buf_len_get(void);=0D void log_buf_vmcoreinfo_setup(void);=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) setup_log_buf(int early);=0D __attribute__((__format__(printf, 1, 2))) void dump_stack_set_arch_desc(con= st char *fmt, ...);=0D void dump_stack_print_info(const char *log_lvl);=0D void show_regs_print_info(const char *log_lvl);=0D extern void dump_stack_lvl(const char *log_lvl) __attribute__((__cold__));= =0D extern void dump_stack(void) __attribute__((__cold__));=0D void printk_trigger_flush(void);=0D # 280 "./include/linux/printk.h"=0D extern int __printk_cpu_trylock(void);=0D extern void __printk_wait_on_cpu_lock(void);=0D extern void __printk_cpu_unlock(void);=0D # 320 "./include/linux/printk.h"=0D extern int kptr_restrict;=0D # 339 "./include/linux/printk.h"=0D struct module;=0D # 693 "./include/linux/printk.h"=0D extern const struct file_operations kmsg_fops;=0D =0D enum {=0D DUMP_PREFIX_NONE,=0D DUMP_PREFIX_ADDRESS,=0D DUMP_PREFIX_OFFSET=0D };=0D extern int hex_dump_to_buffer(const void *buf, size_t len, int rowsize,=0D int groupsize, char *linebuf, size_t linebuflen,=0D bool ascii);=0D =0D extern void print_hex_dump(const char *level, const char *prefix_str,=0D int prefix_type, int rowsize, int groupsize,=0D const void *buf, size_t len, bool ascii);=0D # 732 "./include/linux/printk.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void print_hex_dump_debug(co= nst char *prefix_str, int prefix_type,=0D int rowsize, int groupsize,=0D const void *buf, size_t len, bool ascii)=0D {=0D }=0D # 30 "./include/linux/kernel.h" 2=0D =0D # 1 "./include/linux/static_call_types.h" 1=0D # 32 "./include/linux/static_call_types.h"=0D struct static_call_site {=0D s32 addr;=0D s32 key;=0D };=0D # 94 "./include/linux/static_call_types.h"=0D struct static_call_key {=0D void *func;=0D };=0D # 32 "./include/linux/kernel.h" 2=0D # 1 "./include/linux/instruction_pointer.h" 1=0D # 33 "./include/linux/kernel.h" 2=0D # 94 "./include/linux/kernel.h"=0D struct completion;=0D struct user;=0D =0D =0D =0D extern int __cond_resched(void);=0D # 125 "./include/linux/kernel.h"=0D extern void __might_resched(const char *file, int line, unsigned int offset= s);=0D extern void __might_sleep(const char *file, int line);=0D extern void __cant_sleep(const char *file, int line, int preempt_offset);=0D extern void __cant_migrate(const char *file, int line);=0D # 198 "./include/linux/kernel.h"=0D void __might_fault(const char *file, int line);=0D =0D =0D =0D =0D void do_exit(long error_code) __attribute__((__noreturn__));=0D =0D extern int num_to_str(char *buf, int size,=0D unsigned long long num, unsigned int width);=0D =0D =0D =0D extern __attribute__((__format__(printf, 2, 3))) int sprintf(char *buf, con= st char * fmt, ...);=0D extern __attribute__((__format__(printf, 2, 0))) int vsprintf(char *buf, co= nst char *, va_list);=0D extern __attribute__((__format__(printf, 3, 4)))=0D int snprintf(char *buf, size_t size, const char *fmt, ...);=0D extern __attribute__((__format__(printf, 3, 0)))=0D int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);=0D extern __attribute__((__format__(printf, 3, 4)))=0D int scnprintf(char *buf, size_t size, const char *fmt, ...);=0D extern __attribute__((__format__(printf, 3, 0)))=0D int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);=0D extern __attribute__((__format__(printf, 2, 3))) __attribute__((__malloc__)= )=0D char *kasprintf(gfp_t gfp, const char *fmt, ...);=0D extern __attribute__((__format__(printf, 2, 0))) __attribute__((__malloc__)= )=0D char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);=0D extern __attribute__((__format__(printf, 2, 0)))=0D const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);=0D =0D extern __attribute__((__format__(scanf, 2, 3)))=0D int sscanf(const char *, const char *, ...);=0D extern __attribute__((__format__(scanf, 2, 0)))=0D int vsscanf(const char *, const char *, va_list);=0D =0D extern int no_hash_pointers_enable(char *str);=0D =0D extern int get_option(char **str, int *pint);=0D extern char *get_options(const char *str, int nints, int *ints);=0D extern unsigned long long memparse(const char *ptr, char **retptr);=0D extern bool parse_option_str(const char *str, const char *option);=0D extern char *next_arg(char *args, char **param, char **val);=0D =0D extern int core_kernel_text(unsigned long addr);=0D extern int __kernel_text_address(unsigned long addr);=0D extern int kernel_text_address(unsigned long addr);=0D extern int func_ptr_is_kernel_text(void *ptr);=0D =0D extern void bust_spinlocks(int yes);=0D =0D extern int root_mountflags;=0D =0D extern bool early_boot_irqs_disabled;=0D =0D =0D =0D =0D =0D extern enum system_states {=0D SYSTEM_BOOTING,=0D SYSTEM_SCHEDULING,=0D SYSTEM_FREEING_INITMEM,=0D SYSTEM_RUNNING,=0D SYSTEM_HALT,=0D SYSTEM_POWER_OFF,=0D SYSTEM_RESTART,=0D SYSTEM_SUSPEND,=0D } system_state;=0D =0D extern const char hex_asc[];=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char *hex_byte_pack(char *bu= f, u8 byte)=0D {=0D *buf++ =3D hex_asc[((byte) & 0xf0) >> 4];=0D *buf++ =3D hex_asc[((byte) & 0x0f)];=0D return buf;=0D }=0D =0D extern const char hex_asc_upper[];=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char *hex_byte_pack_upper(ch= ar *buf, u8 byte)=0D {=0D *buf++ =3D hex_asc_upper[((byte) & 0xf0) >> 4];=0D *buf++ =3D hex_asc_upper[((byte) & 0x0f)];=0D return buf;=0D }=0D =0D extern int hex_to_bin(unsigned char ch);=0D extern int __attribute__((__warn_unused_result__)) hex2bin(u8 *dst, const c= har *src, size_t count);=0D extern char *bin2hex(char *dst, const void *src, size_t count);=0D =0D bool mac_pton(const char *s, u8 *mac);=0D # 314 "./include/linux/kernel.h"=0D enum ftrace_dump_mode {=0D DUMP_NONE,=0D DUMP_ALL,=0D DUMP_ORIG,=0D };=0D =0D =0D void tracing_on(void);=0D void tracing_off(void);=0D int tracing_is_on(void);=0D void tracing_snapshot(void);=0D void tracing_snapshot_alloc(void);=0D =0D extern void tracing_start(void);=0D extern void tracing_stop(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__format__(pr= intf, 1, 2)))=0D void ____trace_printk_check_format(const char *fmt, ...)=0D {=0D }=0D # 393 "./include/linux/kernel.h"=0D extern __attribute__((__format__(printf, 2, 3)))=0D int __trace_bprintk(unsigned long ip, const char *fmt, ...);=0D =0D extern __attribute__((__format__(printf, 2, 3)))=0D int __trace_printk(unsigned long ip, const char *fmt, ...);=0D # 434 "./include/linux/kernel.h"=0D extern int __trace_bputs(unsigned long ip, const char *str);=0D extern int __trace_puts(unsigned long ip, const char *str, int size);=0D =0D extern void trace_dump_stack(int skip);=0D # 456 "./include/linux/kernel.h"=0D extern __attribute__((__format__(printf, 2, 0))) int=0D __ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap);=0D =0D extern __attribute__((__format__(printf, 2, 0))) int=0D __ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);=0D =0D extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);=0D # 9 "./include/linux/uio.h" 2=0D # 1 "./include/linux/thread_info.h" 1=0D # 13 "./include/linux/thread_info.h"=0D # 1 "./include/linux/bug.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/bug.h" 1=0D # 30 "./arch/riscv/include/asm/bug.h"=0D typedef u32 bug_insn_t;=0D # 83 "./arch/riscv/include/asm/bug.h"=0D # 1 "./include/asm-generic/bug.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/instrumentation.h" 1=0D # 7 "./include/asm-generic/bug.h" 2=0D # 24 "./include/asm-generic/bug.h"=0D struct warn_args;=0D struct pt_regs;=0D =0D void __warn(const char *file, int line, void *caller, unsigned taint,=0D struct pt_regs *regs, struct warn_args *args);=0D =0D =0D =0D =0D struct bug_entry {=0D =0D =0D =0D signed int bug_addr_disp;=0D =0D =0D =0D =0D =0D signed int file_disp;=0D =0D unsigned short line;=0D =0D unsigned short flags;=0D };=0D # 101 "./include/asm-generic/bug.h"=0D extern __attribute__((__format__(printf, 1, 2))) void __warn_printk(const c= har *fmt, ...);=0D # 84 "./arch/riscv/include/asm/bug.h" 2=0D =0D struct pt_regs;=0D struct task_struct;=0D =0D void __show_regs(struct pt_regs *regs);=0D void die(struct pt_regs *regs, const char *str);=0D void do_trap(struct pt_regs *regs, int signo, int code, unsigned long addr)= ;=0D # 6 "./include/linux/bug.h" 2=0D =0D =0D =0D enum bug_trap_type {=0D BUG_TRAP_TYPE_NONE =3D 0,=0D BUG_TRAP_TYPE_WARN =3D 1,=0D BUG_TRAP_TYPE_BUG =3D 2,=0D };=0D =0D struct pt_regs;=0D # 34 "./include/linux/bug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_warning_bug(const str= uct bug_entry *bug)=0D {=0D return bug->flags & (1 << 0);=0D }=0D =0D void bug_get_file_line(struct bug_entry *bug, const char **file,=0D unsigned int *line);=0D =0D struct bug_entry *find_bug(unsigned long bugaddr);=0D =0D enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs)= ;=0D =0D =0D int is_valid_bugaddr(unsigned long addr);=0D =0D void generic_bug_clear_once(void);=0D # 80 "./include/linux/bug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool check_data_corruption(bool v) { return v; }=0D # 14 "./include/linux/thread_info.h" 2=0D # 1 "./include/linux/restart_block.h" 1=0D # 10 "./include/linux/restart_block.h"=0D # 1 "./include/linux/time64.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/math64.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/vdso/math64.h" 1=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32=0D __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)=0D {=0D u32 ret =3D 0;=0D =0D while (dividend >=3D divisor) {=0D =0D =0D asm("" : "+rm"(dividend));=0D =0D dividend -=3D divisor;=0D ret++;=0D }=0D =0D *remainder =3D dividend;=0D =0D return ret;=0D }=0D # 8 "./include/linux/math64.h" 2=0D # 1 "./arch/riscv/include/generated/asm/div64.h" 1=0D # 9 "./include/linux/math64.h" 2=0D # 26 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 div_u64_rem(u64 dividend= , u32 divisor, u32 *remainder)=0D {=0D *remainder =3D dividend % divisor;=0D return dividend / divisor;=0D }=0D # 40 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 div_s64_rem(s64 dividend= , s32 divisor, s32 *remainder)=0D {=0D *remainder =3D dividend % divisor;=0D return dividend / divisor;=0D }=0D # 54 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 div64_u64_rem(u64 divide= nd, u64 divisor, u64 *remainder)=0D {=0D *remainder =3D dividend % divisor;=0D return dividend / divisor;=0D }=0D # 67 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 div64_u64(u64 dividend, = u64 divisor)=0D {=0D return dividend / divisor;=0D }=0D # 79 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 div64_s64(s64 dividend, = s64 divisor)=0D {=0D return dividend / divisor;=0D }=0D # 125 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 div_u64(u64 dividend, u3= 2 divisor)=0D {=0D u32 remainder;=0D return div_u64_rem(dividend, divisor, &remainder);=0D }=0D # 138 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 div_s64(s64 dividend, s3= 2 divisor)=0D {=0D s32 remainder;=0D return div_s64_rem(dividend, divisor, &remainder);=0D }=0D =0D =0D u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 mul_u32_u32(u32 a, u32 b= )=0D {=0D return (u64)a * b;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 mul_u64_u32_shr(u64 a, u= 32 mul, unsigned int shift)=0D {=0D return (u64)(((unsigned __int128)a * mul) >> shift);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 mul_u64_u64_shr(u64 a, u= 64 mul, unsigned int shift)=0D {=0D return (u64)(((unsigned __int128)a * mul) >> shift);=0D }=0D # 239 "./include/linux/math64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 mul_s64_u64_shr(s64 a, u= 64 b, unsigned int shift)=0D {=0D u64 ret;=0D =0D =0D =0D =0D =0D ret =3D mul_u64_u64_shr(__builtin_choose_expr( __builtin_types_compatible_= p(typeof(a), signed long long) || __builtin_types_compatible_p(typeof(a), u= nsigned long long), ({ signed long long __x =3D (a); __x < 0 ? -__x : __x; = }), __builtin_choose_expr( __builtin_types_compatible_p(typeof(a), signed l= ong) || __builtin_types_compatible_p(typeof(a), unsigned long), ({ signed l= ong __x =3D (a); __x < 0 ? -__x : __x; }), __builtin_choose_expr( __builtin= _types_compatible_p(typeof(a), signed int) || __builtin_types_compatible_p(= typeof(a), unsigned int), ({ signed int __x =3D (a); __x < 0 ? -__x : __x; = }), __builtin_choose_expr( __builtin_types_compatible_p(typeof(a), signed s= hort) || __builtin_types_compatible_p(typeof(a), unsigned short), ({ signed= short __x =3D (a); __x < 0 ? -__x : __x; }), __builtin_choose_expr( __buil= tin_types_compatible_p(typeof(a), signed char) || __builtin_types_compatibl= e_p(typeof(a), unsigned char), ({ signed char __x =3D (a); __x < 0 ? -__x := __x; }), __builtin_choose_expr( __builtin_types_compatible_p(typeof(a), ch= ar), (char)({ signed char __x =3D (a); __x<0?-__x:__x; }), ((void)0))))))),= b, shift);=0D =0D if (a < 0)=0D ret =3D -((s64) ret);=0D =0D return ret;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 mul_u64_u32_div(u64 a, u= 32 mul, u32 divisor)=0D {=0D union {=0D u64 ll;=0D struct {=0D =0D =0D =0D u32 low, high;=0D =0D } l;=0D } u, rl, rh;=0D =0D u.ll =3D a;=0D rl.ll =3D mul_u32_u32(u.l.low, mul);=0D rh.ll =3D mul_u32_u32(u.l.high, mul) + rl.l.high;=0D =0D =0D rl.l.high =3D ({ uint32_t __base =3D (divisor); uint32_t __rem; __rem =3D = ((uint64_t)(rh.ll)) % __base; (rh.ll) =3D ((uint64_t)(rh.ll)) / __base; __r= em; });=0D =0D =0D ({ uint32_t __base =3D (divisor); uint32_t __rem; __rem =3D ((uint64_t)(rl= =2Ell)) % __base; (rl.ll) =3D ((uint64_t)(rl.ll)) / __base; __rem; });=0D =0D rl.l.high =3D rh.l.low;=0D return rl.ll;=0D }=0D =0D =0D u64 mul_u64_u64_div_u64(u64 a, u64 mul, u64 div);=0D # 6 "./include/linux/time64.h" 2=0D # 1 "./include/vdso/time64.h" 1=0D # 7 "./include/linux/time64.h" 2=0D =0D typedef __s64 time64_t;=0D typedef __u64 timeu64_t;=0D =0D =0D # 1 "./include/uapi/linux/time.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/time_types.h" 1=0D =0D =0D =0D =0D =0D =0D struct __kernel_timespec {=0D __kernel_time64_t tv_sec;=0D long long tv_nsec;=0D };=0D =0D struct __kernel_itimerspec {=0D struct __kernel_timespec it_interval;=0D struct __kernel_timespec it_value;=0D };=0D # 25 "./include/uapi/linux/time_types.h"=0D struct __kernel_old_timeval {=0D __kernel_long_t tv_sec;=0D __kernel_long_t tv_usec;=0D };=0D =0D =0D struct __kernel_old_timespec {=0D __kernel_old_time_t tv_sec;=0D long tv_nsec;=0D };=0D =0D struct __kernel_old_itimerval {=0D struct __kernel_old_timeval it_interval;=0D struct __kernel_old_timeval it_value;=0D };=0D =0D struct __kernel_sock_timeval {=0D __s64 tv_sec;=0D __s64 tv_usec;=0D };=0D # 7 "./include/uapi/linux/time.h" 2=0D # 33 "./include/uapi/linux/time.h"=0D struct timezone {=0D int tz_minuteswest;=0D int tz_dsttime;=0D };=0D # 12 "./include/linux/time64.h" 2=0D =0D struct timespec64 {=0D time64_t tv_sec;=0D long tv_nsec;=0D };=0D =0D struct itimerspec64 {=0D struct timespec64 it_interval;=0D struct timespec64 it_value;=0D };=0D # 43 "./include/linux/time64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int timespec64_equal(const s= truct timespec64 *a,=0D const struct timespec64 *b)=0D {=0D return (a->tv_sec =3D=3D b->tv_sec) && (a->tv_nsec =3D=3D b->tv_nsec);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int timespec64_compare(const= struct timespec64 *lhs, const struct timespec64 *rhs)=0D {=0D if (lhs->tv_sec < rhs->tv_sec)=0D return -1;=0D if (lhs->tv_sec > rhs->tv_sec)=0D return 1;=0D return lhs->tv_nsec - rhs->tv_nsec;=0D }=0D =0D extern void set_normalized_timespec64(struct timespec64 *ts, time64_t sec, = s64 nsec);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct timespec64 timespec64= _add(struct timespec64 lhs,=0D struct timespec64 rhs)=0D {=0D struct timespec64 ts_delta;=0D set_normalized_timespec64(&ts_delta, lhs.tv_sec + rhs.tv_sec,=0D lhs.tv_nsec + rhs.tv_nsec);=0D return ts_delta;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct timespec64 timespec64= _sub(struct timespec64 lhs,=0D struct timespec64 rhs)=0D {=0D struct timespec64 ts_delta;=0D set_normalized_timespec64(&ts_delta, lhs.tv_sec - rhs.tv_sec,=0D lhs.tv_nsec - rhs.tv_nsec);=0D return ts_delta;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool timespec64_valid(const = struct timespec64 *ts)=0D {=0D =0D if (ts->tv_sec < 0)=0D return false;=0D =0D if ((unsigned long)ts->tv_nsec >=3D 1000000000L)=0D return false;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool timespec64_valid_strict= (const struct timespec64 *ts)=0D {=0D if (!timespec64_valid(ts))=0D return false;=0D =0D if ((unsigned long long)ts->tv_sec >=3D (((s64)~((u64)1 << 63)) / 10000000= 00L))=0D return false;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool timespec64_valid_settod= (const struct timespec64 *ts)=0D {=0D if (!timespec64_valid(ts))=0D return false;=0D =0D if ((unsigned long long)ts->tv_sec >=3D ((((s64)~((u64)1 << 63)) / 1000000= 000L) - (30LL * 365 * 24 *3600)))=0D return false;=0D return true;=0D }=0D # 127 "./include/linux/time64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 timespec64_to_ns(const s= truct timespec64 *ts)=0D {=0D =0D if (ts->tv_sec >=3D (((s64)~((u64)1 << 63)) / 1000000000L))=0D return ((s64)~((u64)1 << 63));=0D =0D if (ts->tv_sec <=3D ((-((s64)~((u64)1 << 63)) - 1) / 1000000000L))=0D return (-((s64)~((u64)1 << 63)) - 1);=0D =0D return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec;=0D }=0D =0D =0D =0D =0D =0D =0D =0D extern struct timespec64 ns_to_timespec64(const s64 nsec);=0D # 155 "./include/linux/time64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void timespec64_add_ns(struct timespec64 *a, u64 ns)=0D {=0D a->tv_sec +=3D __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns);=0D a->tv_nsec =3D ns;=0D }=0D =0D =0D =0D =0D =0D extern struct timespec64 timespec64_add_safe(const struct timespec64 lhs,=0D const struct timespec64 rhs);=0D # 11 "./include/linux/restart_block.h" 2=0D =0D struct timespec;=0D struct old_timespec32;=0D struct pollfd;=0D =0D enum timespec_type {=0D TT_NONE =3D 0,=0D TT_NATIVE =3D 1,=0D TT_COMPAT =3D 2,=0D };=0D =0D =0D =0D =0D struct restart_block {=0D unsigned long arch_data;=0D long (*fn)(struct restart_block *);=0D union {=0D =0D struct {=0D u32 *uaddr;=0D u32 val;=0D u32 flags;=0D u32 bitset;=0D u64 time;=0D u32 *uaddr2;=0D } futex;=0D =0D struct {=0D clockid_t clockid;=0D enum timespec_type type;=0D union {=0D struct __kernel_timespec *rmtp;=0D struct old_timespec32 *compat_rmtp;=0D };=0D u64 expires;=0D } nanosleep;=0D =0D struct {=0D struct pollfd *ufds;=0D int nfds;=0D int has_timeout;=0D unsigned long tv_sec;=0D unsigned long tv_nsec;=0D } poll;=0D };=0D };=0D =0D extern long do_no_restart_syscall(struct restart_block *parm);=0D # 15 "./include/linux/thread_info.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/current.h" 1=0D # 18 "./arch/riscv/include/asm/current.h"=0D struct task_struct;=0D =0D register struct task_struct *riscv_current_is_tp __asm__("tp");=0D # 29 "./arch/riscv/include/asm/current.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct task_struct *get_current(void)=0D {=0D return riscv_current_is_tp;=0D }=0D =0D =0D =0D register unsigned long current_stack_pointer __asm__("sp");=0D # 24 "./include/linux/thread_info.h" 2=0D # 33 "./include/linux/thread_info.h"=0D enum {=0D BAD_STACK =3D -1,=0D NOT_STACK =3D 0,=0D GOOD_FRAME,=0D GOOD_STACK,=0D };=0D # 60 "./include/linux/thread_info.h"=0D # 1 "./arch/riscv/include/asm/thread_info.h" 1=0D # 11 "./arch/riscv/include/asm/thread_info.h"=0D # 1 "./arch/riscv/include/asm/page.h" 1=0D # 12 "./arch/riscv/include/asm/page.h"=0D # 1 "./include/linux/pfn.h" 1=0D # 13 "./include/linux/pfn.h"=0D typedef struct {=0D u64 val;=0D } pfn_t;=0D # 13 "./arch/riscv/include/asm/page.h" 2=0D # 64 "./arch/riscv/include/asm/page.h"=0D typedef struct {=0D unsigned long pgd;=0D } pgd_t;=0D =0D =0D typedef struct {=0D unsigned long pte;=0D } pte_t;=0D =0D typedef struct {=0D unsigned long pgprot;=0D } pgprot_t;=0D =0D typedef struct page *pgtable_t;=0D # 94 "./arch/riscv/include/asm/page.h"=0D extern unsigned long riscv_pfn_base;=0D =0D =0D =0D =0D =0D struct kernel_mapping {=0D unsigned long page_offset;=0D unsigned long virt_addr;=0D uintptr_t phys_addr;=0D uintptr_t size;=0D =0D unsigned long va_pa_offset;=0D =0D unsigned long va_kernel_pa_offset;=0D unsigned long va_kernel_xip_pa_offset;=0D =0D =0D =0D =0D };=0D =0D extern struct kernel_mapping kernel_map;=0D extern phys_addr_t phys_ram_base;=0D # 189 "./arch/riscv/include/asm/page.h"=0D # 1 "./include/asm-generic/memory_model.h" 1=0D # 190 "./arch/riscv/include/asm/page.h" 2=0D # 1 "./include/asm-generic/getorder.h" 1=0D # 29 "./include/asm-generic/getorder.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__const__)) int get_order(unsigned long size)=0D {=0D if (__builtin_constant_p(size)) {=0D if (!size)=0D return 64 - (12);=0D =0D if (size < (1UL << (12)))=0D return 0;=0D =0D return ( __builtin_constant_p((size) - 1) ? (((size) - 1) < 2 ? 0 : 63 - = __builtin_clzll((size) - 1)) : (sizeof((size) - 1) <=3D 4) ? __ilog2_u32((s= ize) - 1) : __ilog2_u64((size) - 1) ) - (12) + 1;=0D }=0D =0D size--;=0D size >>=3D (12);=0D =0D =0D =0D return fls64(size);=0D =0D }=0D # 191 "./arch/riscv/include/asm/page.h" 2=0D # 12 "./arch/riscv/include/asm/thread_info.h" 2=0D # 56 "./arch/riscv/include/asm/thread_info.h"=0D struct thread_info {=0D unsigned long flags;=0D int preempt_count;=0D =0D =0D =0D =0D =0D long kernel_sp;=0D long user_sp;=0D int cpu;=0D };=0D # 61 "./include/linux/thread_info.h" 2=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long set_restart_fn(struct r= estart_block *restart,=0D long (*fn)(struct restart_block *))=0D {=0D restart->fn =3D fn;=0D do { } while (0);=0D return -516;=0D }=0D # 87 "./include/linux/thread_info.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_ti_thread_flag(stru= ct thread_info *ti, int flag)=0D {=0D set_bit(flag, (unsigned long *)&ti->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_ti_thread_flag(st= ruct thread_info *ti, int flag)=0D {=0D clear_bit(flag, (unsigned long *)&ti->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_ti_thread_flag(s= truct thread_info *ti, int flag,=0D bool value)=0D {=0D if (value)=0D set_ti_thread_flag(ti, flag);=0D else=0D clear_ti_thread_flag(ti, flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_set_ti_thread_f= lag(struct thread_info *ti, int flag)=0D {=0D return test_and_set_bit(flag, (unsigned long *)&ti->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_clear_ti_thread= _flag(struct thread_info *ti, int flag)=0D {=0D return test_and_clear_bit(flag, (unsigned long *)&ti->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_ti_thread_flag(stru= ct thread_info *ti, int flag)=0D {=0D return arch_test_bit(flag, (unsigned long *)&ti->flags);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long read_ti_thread_flags(struct thread_info *ti)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_0(void) ; if (!((sizeof(ti->flags) =3D=3D sizeof(char) || sizeof(ti->fl= ags) =3D=3D sizeof(short) || sizeof(ti->flags) =3D=3D sizeof(int) || sizeof= (ti->flags) =3D=3D sizeof(long)) || sizeof(ti->flags) =3D=3D sizeof(long lo= ng))) __compiletime_assert_0(); } while (0); (*(const volatile typeof( _Gen= eric((ti->flags), char: (char)0, unsigned char: (unsigned char)0, signed ch= ar: (signed char)0, unsigned short: (unsigned short)0, signed short: (signe= d short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsign= ed long: (unsigned long)0, signed long: (signed long)0, unsigned long long:= (unsigned long long)0, signed long long: (signed long long)0, default: (ti= ->flags))) *)&(ti->flags)); });=0D }=0D # 183 "./include/linux/thread_info.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_within_stack_frames= (const void * const stack,=0D const void * const stackend,=0D const void *obj, unsigned long len)=0D {=0D return 0;=0D }=0D # 202 "./include/linux/thread_info.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void check_object_size(const= void *ptr, unsigned long n,=0D bool to_user)=0D { }=0D =0D =0D extern void=0D __bad_copy_from(void);=0D extern void=0D __bad_copy_to(void);=0D =0D void __copy_overflow(int size, unsigned long count);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_overflow(int size,= unsigned long count)=0D {=0D if (1)=0D __copy_overflow(size, count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) bool=0D check_copy_size(const void *addr, size_t bytes, bool is_source)=0D {=0D int sz =3D __builtin_object_size(addr, 0);=0D if (__builtin_expect(!!(sz >=3D 0 && sz < bytes), 0)) {=0D if (!__builtin_constant_p(bytes))=0D copy_overflow(sz, bytes);=0D else if (is_source)=0D __bad_copy_from();=0D else=0D __bad_copy_to();=0D return false;=0D }=0D if (({ int __ret_warn_on =3D !!(bytes > ((int)(~0U >> 1))); if (__builtin_= expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\= n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t"= ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/thread_info.h"), "i" (233),= "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); }))=0D return false;=0D check_object_size(addr, bytes, is_source);=0D return true;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_setup_new_exec(voi= d) { }=0D # 10 "./include/linux/uio.h" 2=0D # 1 "./include/linux/mm_types.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/mm_types_task.h" 1=0D # 13 "./include/linux/mm_types_task.h"=0D # 1 "./include/linux/atomic.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/atomic.h" 1=0D # 19 "./arch/riscv/include/asm/atomic.h"=0D # 1 "./arch/riscv/include/asm/cmpxchg.h" 1=0D # 12 "./arch/riscv/include/asm/cmpxchg.h"=0D # 1 "./arch/riscv/include/asm/fence.h" 1=0D # 13 "./arch/riscv/include/asm/cmpxchg.h" 2=0D # 20 "./arch/riscv/include/asm/atomic.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_read(const atomic_t *v)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_1(void) ; if (!((sizeof(v->counter) =3D=3D sizeof(char) || sizeof(v->co= unter) =3D=3D sizeof(short) || sizeof(v->counter) =3D=3D sizeof(int) || siz= eof(v->counter) =3D=3D sizeof(long)) || sizeof(v->counter) =3D=3D sizeof(lo= ng long))) __compiletime_assert_1(); } while (0); (*(const volatile typeof(= _Generic((v->counter), char: (char)0, unsigned char: (unsigned char)0, sig= ned char: (signed char)0, unsigned short: (unsigned short)0, signed short: = (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, = unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long= long: (unsigned long long)0, signed long long: (signed long long)0, defaul= t: (v->counter))) *)&(v->counter)); });=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_set(atomic_t *v, int i)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= (void) ; if (!((sizeof(v->counter) =3D=3D sizeof(char) || sizeof(v->counter= ) =3D=3D sizeof(short) || sizeof(v->counter) =3D=3D sizeof(int) || sizeof(v= ->counter) =3D=3D sizeof(long)) || sizeof(v->counter) =3D=3D sizeof(long lo= ng))) __compiletime_assert_2(); } while (0); do { *(volatile typeof(v->coun= ter) *)&(v->counter) =3D (i); } while (0); } while (0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64 arch_atomic64_read(const atomic64_t *v)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_3(void) ; if (!((sizeof(v->counter) =3D=3D sizeof(char) || sizeof(v->co= unter) =3D=3D sizeof(short) || sizeof(v->counter) =3D=3D sizeof(int) || siz= eof(v->counter) =3D=3D sizeof(long)) || sizeof(v->counter) =3D=3D sizeof(lo= ng long))) __compiletime_assert_3(); } while (0); (*(const volatile typeof(= _Generic((v->counter), char: (char)0, unsigned char: (unsigned char)0, sig= ned char: (signed char)0, unsigned short: (unsigned short)0, signed short: = (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, = unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long= long: (unsigned long long)0, signed long long: (signed long long)0, defaul= t: (v->counter))) *)&(v->counter)); });=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic64_set(atomic64_t *v, s64 i)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= (void) ; if (!((sizeof(v->counter) =3D=3D sizeof(char) || sizeof(v->counter= ) =3D=3D sizeof(short) || sizeof(v->counter) =3D=3D sizeof(int) || sizeof(v= ->counter) =3D=3D sizeof(long)) || sizeof(v->counter) =3D=3D sizeof(long lo= ng))) __compiletime_assert_4(); } while (0); do { *(volatile typeof(v->coun= ter) *)&(v->counter) =3D (i); } while (0); } while (0);=0D }=0D # 74 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_add(int i, atomic_t *v) { __asm__ __volatile__ ( " = amo" "add" "." "w" " zero, %1, %0" : "+A" (v->counter) : "r" (i) : "memory"= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) void arch_atomic64_add(s64 i, atomic64_t *v) { __asm__ __volati= le__ ( " amo" "add" "." "d" " zero, %1, %0" : "+A" (v->counter) : "r" (i) := "memory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_sub(int i, atomic_t *v) { __asm__ __volatile__ ( " = amo" "add" "." "w" " zero, %1, %0" : "+A" (v->counter) : "r" (-i) : "memory= "); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alway= s_inline__)) void arch_atomic64_sub(s64 i, atomic64_t *v) { __asm__ __volat= ile__ ( " amo" "add" "." "d" " zero, %1, %0" : "+A" (v->counter) : "r" (-i)= : "memory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_and(int i, atomic_t *v) { __asm__ __volatile__ ( " = amo" "and" "." "w" " zero, %1, %0" : "+A" (v->counter) : "r" (i) : "memory"= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) void arch_atomic64_and(s64 i, atomic64_t *v) { __asm__ __volati= le__ ( " amo" "and" "." "d" " zero, %1, %0" : "+A" (v->counter) : "r" (i) := "memory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_or(int i, atomic_t *v) { __asm__ __volatile__ ( " a= mo" "or" "." "w" " zero, %1, %0" : "+A" (v->counter) : "r" (i) : "memory");= } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)= ) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_i= nline__)) void arch_atomic64_or(s64 i, atomic64_t *v) { __asm__ __volatile_= _ ( " amo" "or" "." "d" " zero, %1, %0" : "+A" (v->counter) : "r" (i) : "me= mory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void arch_atomic_xor(int i, atomic_t *v) { __asm__ __volatile__ ( " = amo" "xor" "." "w" " zero, %1, %0" : "+A" (v->counter) : "r" (i) : "memory"= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) void arch_atomic64_xor(s64 i, atomic64_t *v) { __asm__ __volati= le__ ( " amo" "xor" "." "d" " zero, %1, %0" : "+A" (v->counter) : "r" (i) := "memory"); }=0D # 138 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_add_relaxed(int i, atomic_t *v) { register int= ret; __asm__ __volatile__ ( " amo" "add" "." "w" " %1, %2, %0" : "+A" (v->= counter), "=3Dr" (ret) : "r" (i) : "memory"); return ret; } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) int arch= _atomic_fetch_add(int i, atomic_t *v) { register int ret; __asm__ __volatil= e__ ( " amo" "add" "." "w" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" = (ret) : "r" (i) : "memory"); return ret; } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) int arch_atomic_add_retur= n_relaxed(int i, atomic_t *v) { return arch_atomic_fetch_add_relaxed(i, v) = + i; } static inline __attribute__((__gnu_inline__)) __attribute__((__unuse= d__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alwa= ys_inline__)) int arch_atomic_add_return(int i, atomic_t *v) { return arch_= atomic_fetch_add(i, v) + i; } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_add_relaxed(s6= 4 i, atomic64_t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "add"= "." "d" " %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) : "memor= y"); return ret; } static inline __attribute__((__gnu_inline__)) __attribut= e__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribu= te__((__always_inline__)) s64 arch_atomic64_fetch_add(s64 i, atomic64_t *v)= { register s64 ret; __asm__ __volatile__ ( " amo" "add" "." "d" ".aqrl %1= , %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) : "memory"); return r= et; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alway= s_inline__)) s64 arch_atomic64_add_return_relaxed(s64 i, atomic64_t *v) { r= eturn arch_atomic64_fetch_add_relaxed(i, v) + i; } static inline __attribut= e__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_= function_entry(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64= _add_return(s64 i, atomic64_t *v) { return arch_atomic64_fetch_add(i, v) + = i; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_sub_relaxed(int i, atomic_t *v) { register int= ret; __asm__ __volatile__ ( " amo" "add" "." "w" " %1, %2, %0" : "+A" (v->= counter), "=3Dr" (ret) : "r" (-i) : "memory"); return ret; } static inline = __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((= patchable_function_entry(0, 0))) __attribute__((__always_inline__)) int arc= h_atomic_fetch_sub(int i, atomic_t *v) { register int ret; __asm__ __volati= le__ ( " amo" "add" "." "w" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr"= (ret) : "r" (-i) : "memory"); return ret; } static inline __attribute__((_= _gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functi= on_entry(0, 0))) __attribute__((__always_inline__)) int arch_atomic_sub_ret= urn_relaxed(int i, atomic_t *v) { return arch_atomic_fetch_sub_relaxed(i, v= ) + -i; } static inline __attribute__((__gnu_inline__)) __attribute__((__un= used__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__a= lways_inline__)) int arch_atomic_sub_return(int i, atomic_t *v) { return ar= ch_atomic_fetch_sub(i, v) + -i; } static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_sub_relaxe= d(s64 i, atomic64_t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "= add" "." "d" " %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (-i) : "= memory"); return ret; } static inline __attribute__((__gnu_inline__)) __att= ribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __at= tribute__((__always_inline__)) s64 arch_atomic64_fetch_sub(s64 i, atomic64_= t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "add" "." "d" ".aqr= l %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (-i) : "memory"); re= turn ret; } static inline __attribute__((__gnu_inline__)) __attribute__((__= unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((_= _always_inline__)) s64 arch_atomic64_sub_return_relaxed(s64 i, atomic64_t *= v) { return arch_atomic64_fetch_sub_relaxed(i, v) + -i; } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) s64 arch_a= tomic64_sub_return(s64 i, atomic64_t *v) { return arch_atomic64_fetch_sub(i= , v) + -i; }=0D # 174 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_and_relaxed(int i, atomic_t *v) { register int= ret; __asm__ __volatile__ ( " amo" "and" "." "w" " %1, %2, %0" : "+A" (v->= counter), "=3Dr" (ret) : "r" (i) : "memory"); return ret; } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) int arch= _atomic_fetch_and(int i, atomic_t *v) { register int ret; __asm__ __volatil= e__ ( " amo" "and" "." "w" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" = (ret) : "r" (i) : "memory"); return ret; } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_a= nd_relaxed(s64 i, atomic64_t *v) { register s64 ret; __asm__ __volatile__ (= " amo" "and" "." "d" " %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r"= (i) : "memory"); return ret; } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_and(s64 i, a= tomic64_t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "and" "." "= d" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) : "memor= y"); return ret; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_or_relaxed(int i, atomic_t *v) { register int = ret; __asm__ __volatile__ ( " amo" "or" "." "w" " %1, %2, %0" : "+A" (v->co= unter), "=3Dr" (ret) : "r" (i) : "memory"); return ret; } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) int arch_a= tomic_fetch_or(int i, atomic_t *v) { register int ret; __asm__ __volatile__= ( " amo" "or" "." "w" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret= ) : "r" (i) : "memory"); return ret; } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_or_re= laxed(s64 i, atomic64_t *v) { register s64 ret; __asm__ __volatile__ ( " am= o" "or" "." "d" " %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) := "memory"); return ret; } static inline __attribute__((__gnu_inline__)) __a= ttribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __= attribute__((__always_inline__)) s64 arch_atomic64_fetch_or(s64 i, atomic64= _t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "or" "." "d" ".aqr= l %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) : "memory"); ret= urn ret; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_xor_relaxed(int i, atomic_t *v) { register int= ret; __asm__ __volatile__ ( " amo" "xor" "." "w" " %1, %2, %0" : "+A" (v->= counter), "=3Dr" (ret) : "r" (i) : "memory"); return ret; } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) int arch= _atomic_fetch_xor(int i, atomic_t *v) { register int ret; __asm__ __volatil= e__ ( " amo" "xor" "." "w" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" = (ret) : "r" (i) : "memory"); return ret; } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_x= or_relaxed(s64 i, atomic64_t *v) { register s64 ret; __asm__ __volatile__ (= " amo" "xor" "." "d" " %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r"= (i) : "memory"); return ret; } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) s64 arch_atomic64_fetch_xor(s64 i, a= tomic64_t *v) { register s64 ret; __asm__ __volatile__ ( " amo" "xor" "." "= d" ".aqrl %1, %2, %0" : "+A" (v->counter), "=3Dr" (ret) : "r" (i) : "memor= y"); return ret; }=0D # 200 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_fetch_add_unless(atomic_t *v, int a, int u)=0D {=0D int prev, rc;=0D =0D __asm__ __volatile__ (=0D "0: lr.w %[p], %[c]\n"=0D " beq %[p], %[u], 1f\n"=0D " add %[rc], %[p], %[a]\n"=0D " sc.w.rl %[rc], %[rc], %[c]\n"=0D " bnez %[rc], 0b\n"=0D " fence rw, rw\n"=0D "1:\n"=0D : [p]"=3D&r" (prev), [rc]"=3D&r" (rc), [c]"+A" (v->counter)=0D : [a]"r" (a), [u]"r" (u)=0D : "memory");=0D return prev;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64 arch_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)=0D {=0D s64 prev;=0D long rc;=0D =0D __asm__ __volatile__ (=0D "0: lr.d %[p], %[c]\n"=0D " beq %[p], %[u], 1f\n"=0D " add %[rc], %[p], %[a]\n"=0D " sc.d.rl %[rc], %[rc], %[c]\n"=0D " bnez %[rc], 0b\n"=0D " fence rw, rw\n"=0D "1:\n"=0D : [p]"=3D&r" (prev), [rc]"=3D&r" (rc), [c]"+A" (v->counter)=0D : [a]"r" (a), [u]"r" (u)=0D : "memory");=0D return prev;=0D }=0D # 299 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_xchg_relaxed(atomic_t *v, int n) { return ({ __typeo= f__(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (n); = __typeof__(*(&(v->counter))) __ret; switch (4) { case 4: __asm__ __volatile= __ ( " amoswap.w %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new= ) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d %0, %2, %1= \n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; defau= lt: do { __attribute__((__noreturn__)) extern void __compiletime_assert_5(v= oid) ; if (!(!(1))) __compiletime_assert_5(); } while (0); } __ret; }); } s= tatic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __= attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inlin= e__)) int arch_atomic_xchg_acquire(atomic_t *v, int n) { return ({ __typeof= __(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (n); _= _typeof__(*(&(v->counter))) __ret; switch (4) { case 4: __asm__ __volatile_= _ ( " amoswap.w %0, %2, %1\n" "\tfence r , rw\n" : "=3Dr" (__ret), "+A" (*_= _ptr) : "r" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( " am= oswap.d %0, %2, %1\n" "\tfence r , rw\n" : "=3Dr" (__ret), "+A" (*__ptr) : = "r" (__new) : "memory"); break; default: do { __attribute__((__noreturn__))= extern void __compiletime_assert_6(void) ; if (!(!(1))) __compiletime_asse= rt_6(); } while (0); } __ret; }); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) int arch_atomic_xchg_release(ato= mic_t *v, int n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&(v->coun= ter)); __typeof__(n) __new =3D (n); __typeof__(*(&(v->counter))) __ret; swi= tch (4) { case 4: __asm__ __volatile__ ( "\tfence rw, w\n" " amoswap.w %0,= %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break= ; case 8: __asm__ __volatile__ ( "\tfence rw, w\n" " amoswap.d %0, %2, %1\= n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; defaul= t: do { __attribute__((__noreturn__)) extern void __compiletime_assert_7(vo= id) ; if (!(!(1))) __compiletime_assert_7(); } while (0); } __ret; }); } st= atic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __a= ttribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline= __)) int arch_atomic_xchg(atomic_t *v, int n) { return ({ __typeof__(&(v->c= ounter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (n); __typeof__= (*(&(v->counter))) __ret; switch (4) { case 4: __asm__ __volatile__ ( " amo= swap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "= memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2, %1= \n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; defau= lt: do { __attribute__((__noreturn__)) extern void __compiletime_assert_8(v= oid) ; if (!(!(1))) __compiletime_assert_8(); } while (0); } __ret; }); } s= tatic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __= attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inlin= e__)) int arch_atomic_cmpxchg_relaxed(atomic_t *v, int o, int n) { return (= { __typeof__(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(*(&(v->co= unter))) __old =3D (o); __typeof__(*(&(v->counter))) __new =3D (n); __typeo= f__(*(&(v->counter))) __ret; register unsigned int __rc; switch (4) { case = 4: __asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0, %z3, 1f\n" " sc.w %= 1, %z4, %2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+= A" (*__ptr) : "rJ" ((long)__old), "rJ" (__new) : "memory"); break; case 8: = __asm__ __volatile__ ( "0: lr.d %0, %2\n" " bne %0, %z3, 1f\n" " sc.d %1, %= z4, %2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (= *__ptr) : "rJ" (__old), "rJ" (__new) : "memory"); break; default: do { __at= tribute__((__noreturn__)) extern void __compiletime_assert_9(void) ; if (!(= !(1))) __compiletime_assert_9(); } while (0); } __ret; }); } static inline = __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((= patchable_function_entry(0, 0))) __attribute__((__always_inline__)) int arc= h_atomic_cmpxchg_acquire(atomic_t *v, int o, int n) { return ({ __typeof__(= &(v->counter)) __ptr =3D (&(v->counter)); __typeof__(*(&(v->counter))) __ol= d =3D (o); __typeof__(*(&(v->counter))) __new =3D (n); __typeof__(*(&(v->co= unter))) __ret; register unsigned int __rc; switch (4) { case 4: __asm__ __= volatile__ ( "0: lr.w %0, %2\n" " bne %0, %z3, 1f\n" " sc.w %1, %z4, %2\n"= " bnez %1, 0b\n" "\tfence r , rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__r= c), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" (__new) : "memory"); break; ca= se 8: __asm__ __volatile__ ( "0: lr.d %0, %2\n" " bne %0, %z3, 1f\n" " sc.d= %1, %z4, %2\n" " bnez %1, 0b\n" "\tfence r , rw\n" "1:\n" : "=3D&r" (__ret= ), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" (__old), "rJ" (__new) : "memory"); = break; default: do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_10(void) ; if (!(!(1))) __compiletime_assert_10(); } while (0); } = __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__((_= _unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((= __always_inline__)) int arch_atomic_cmpxchg_release(atomic_t *v, int o, int= n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&(v->counter)); __type= of__(*(&(v->counter))) __old =3D (o); __typeof__(*(&(v->counter))) __new = =3D (n); __typeof__(*(&(v->counter))) __ret; register unsigned int __rc; sw= itch (4) { case 4: __asm__ __volatile__ ( "\tfence rw, w\n" "0: lr.w %0, %= 2\n" " bne %0, %z3, 1f\n" " sc.w %1, %z4, %2\n" " bnez %1, 0b\n" "1:\n" : = "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" (= __new) : "memory"); break; case 8: __asm__ __volatile__ ( "\tfence rw, w\n= " "0: lr.d %0, %2\n" " bne %0, %z3, 1f\n" " sc.d %1, %z4, %2\n" " bnez %1, = 0b\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" (__old= ), "rJ" (__new) : "memory"); break; default: do { __attribute__((__noreturn= __)) extern void __compiletime_assert_11(void) ; if (!(!(1))) __compiletime= _assert_11(); } while (0); } __ret; }); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int arch_atomic_cmpxchg(at= omic_t *v, int o, int n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&= (v->counter)); __typeof__(*(&(v->counter))) __old =3D (o); __typeof__(*(&(v= ->counter))) __new =3D (n); __typeof__(*(&(v->counter))) __ret; register un= signed int __rc; switch (4) { case 4: __asm__ __volatile__ ( "0: lr.w %0, %= 2\n" " bne %0, %z3, 1f\n" " sc.w.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fenc= e rw, rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" = ((long)__old), "rJ" (__new) : "memory"); break; case 8: __asm__ __volatile_= _ ( "0: lr.d %0, %2\n" " bne %0, %z3, 1f\n" " sc.d.rl %1, %z4, %2\n" " bnez= %1, 0b\n" " fence rw, rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A"= (*__ptr) : "rJ" (__old), "rJ" (__new) : "memory"); break; default: do { __= attribute__((__noreturn__)) extern void __compiletime_assert_12(void) ; if = (!(!(1))) __compiletime_assert_12(); } while (0); } __ret; }); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) s64= arch_atomic64_xchg_relaxed(atomic64_t *v, s64 n) { return ({ __typeof__(&(= v->counter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (n); __type= of__(*(&(v->counter))) __ret; switch (8) { case 4: __asm__ __volatile__ ( "= amoswap.w %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "m= emory"); break; case 8: __asm__ __volatile__ ( " amoswap.d %0, %2, %1\n" : = "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; default: do= { __attribute__((__noreturn__)) extern void __compiletime_assert_13(void) = ; if (!(!(1))) __compiletime_assert_13(); } while (0); } __ret; }); } stati= c inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attr= ibute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)= ) s64 arch_atomic64_xchg_acquire(atomic64_t *v, s64 n) { return ({ __typeof= __(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (n); _= _typeof__(*(&(v->counter))) __ret; switch (8) { case 4: __asm__ __volatile_= _ ( " amoswap.w %0, %2, %1\n" "\tfence r , rw\n" : "=3Dr" (__ret), "+A" (*_= _ptr) : "r" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( " am= oswap.d %0, %2, %1\n" "\tfence r , rw\n" : "=3Dr" (__ret), "+A" (*__ptr) : = "r" (__new) : "memory"); break; default: do { __attribute__((__noreturn__))= extern void __compiletime_assert_14(void) ; if (!(!(1))) __compiletime_ass= ert_14(); } while (0); } __ret; }); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64_xchg_release= (atomic64_t *v, s64 n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&(v= ->counter)); __typeof__(n) __new =3D (n); __typeof__(*(&(v->counter))) __re= t; switch (8) { case 4: __asm__ __volatile__ ( "\tfence rw, w\n" " amoswap= =2Ew %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"= ); break; case 8: __asm__ __volatile__ ( "\tfence rw, w\n" " amoswap.d %0,= %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break= ; default: do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_15(void) ; if (!(!(1))) __compiletime_assert_15(); } while (0); } __ret= ; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) s64 arch_atomic64_xchg(atomic64_t *v, s64 n) { return ({ __t= ypeof__(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(n) __new =3D (= n); __typeof__(*(&(v->counter))) __ret; switch (8) { case 4: __asm__ __vola= tile__ ( " amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "= r" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.a= qrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory")= ; break; default: do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_16(void) ; if (!(!(1))) __compiletime_assert_16(); } while (0); = } __ret; }); } static inline __attribute__((__gnu_inline__)) __attribute__(= (__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__= ((__always_inline__)) s64 arch_atomic64_cmpxchg_relaxed(atomic64_t *v, s64 = o, s64 n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&(v->counter)); = __typeof__(*(&(v->counter))) __old =3D (o); __typeof__(*(&(v->counter))) __= new =3D (n); __typeof__(*(&(v->counter))) __ret; register unsigned int __rc= ; switch (8) { case 4: __asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0,= %z3, 1f\n" " sc.w %1, %z4, %2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret)= , "=3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" (__new) : "memor= y"); break; case 8: __asm__ __volatile__ ( "0: lr.d %0, %2\n" " bne %0, %z3= , 1f\n" " sc.d %1, %z4, %2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret), "= =3D&r" (__rc), "+A" (*__ptr) : "rJ" (__old), "rJ" (__new) : "memory"); brea= k; default: do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_17(void) ; if (!(!(1))) __compiletime_assert_17(); } while (0); } __re= t; }); } static inline __attribute__((__gnu_inline__)) __attribute__((__unu= sed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__al= ways_inline__)) s64 arch_atomic64_cmpxchg_acquire(atomic64_t *v, s64 o, s64= n) { return ({ __typeof__(&(v->counter)) __ptr =3D (&(v->counter)); __type= of__(*(&(v->counter))) __old =3D (o); __typeof__(*(&(v->counter))) __new = =3D (n); __typeof__(*(&(v->counter))) __ret; register unsigned int __rc; sw= itch (8) { case 4: __asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0, %z3= , 1f\n" " sc.w %1, %z4, %2\n" " bnez %1, 0b\n" "\tfence r , rw\n" "1:\n" : = "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" (= __new) : "memory"); break; case 8: __asm__ __volatile__ ( "0: lr.d %0, %2\n= " " bne %0, %z3, 1f\n" " sc.d %1, %z4, %2\n" " bnez %1, 0b\n" "\tfence r , = rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" (__old= ), "rJ" (__new) : "memory"); break; default: do { __attribute__((__noreturn= __)) extern void __compiletime_assert_18(void) ; if (!(!(1))) __compiletime= _assert_18(); } while (0); } __ret; }); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) s64 arch_atomic64_cmpxchg_= release(atomic64_t *v, s64 o, s64 n) { return ({ __typeof__(&(v->counter)) = __ptr =3D (&(v->counter)); __typeof__(*(&(v->counter))) __old =3D (o); __ty= peof__(*(&(v->counter))) __new =3D (n); __typeof__(*(&(v->counter))) __ret;= register unsigned int __rc; switch (8) { case 4: __asm__ __volatile__ ( "\= tfence rw, w\n" "0: lr.w %0, %2\n" " bne %0, %z3, 1f\n" " sc.w %1, %z4, %= 2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__pt= r) : "rJ" ((long)__old), "rJ" (__new) : "memory"); break; case 8: __asm__ _= _volatile__ ( "\tfence rw, w\n" "0: lr.d %0, %2\n" " bne %0, %z3, 1f\n" " = sc.d %1, %z4, %2\n" " bnez %1, 0b\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__r= c), "+A" (*__ptr) : "rJ" (__old), "rJ" (__new) : "memory"); break; default:= do { __attribute__((__noreturn__)) extern void __compiletime_assert_19(voi= d) ; if (!(!(1))) __compiletime_assert_19(); } while (0); } __ret; }); } st= atic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __a= ttribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline= __)) s64 arch_atomic64_cmpxchg(atomic64_t *v, s64 o, s64 n) { return ({ __t= ypeof__(&(v->counter)) __ptr =3D (&(v->counter)); __typeof__(*(&(v->counter= ))) __old =3D (o); __typeof__(*(&(v->counter))) __new =3D (n); __typeof__(*= (&(v->counter))) __ret; register unsigned int __rc; switch (8) { case 4: __= asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0, %z3, 1f\n" " sc.w.rl %1,= %z4, %2\n" " bnez %1, 0b\n" " fence rw, rw\n" "1:\n" : "=3D&r" (__ret), "= =3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" (__new) : "memory")= ; break; case 8: __asm__ __volatile__ ( "0: lr.d %0, %2\n" " bne %0, %z3, 1= f\n" " sc.d.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fence rw, rw\n" "1:\n" : "= =3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" (__old), "rJ" (__new) = : "memory"); break; default: do { __attribute__((__noreturn__)) extern void= __compiletime_assert_20(void) ; if (!(!(1))) __compiletime_assert_20(); } = while (0); } __ret; }); }=0D # 313 "./arch/riscv/include/asm/atomic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int arch_atomic_sub_if_positive(atomic_t *v, int offset)=0D {=0D int prev, rc;=0D =0D __asm__ __volatile__ (=0D "0: lr.w %[p], %[c]\n"=0D " sub %[rc], %[p], %[o]\n"=0D " bltz %[rc], 1f\n"=0D " sc.w.rl %[rc], %[rc], %[c]\n"=0D " bnez %[rc], 0b\n"=0D " fence rw, rw\n"=0D "1:\n"=0D : [p]"=3D&r" (prev), [rc]"=3D&r" (rc), [c]"+A" (v->counter)=0D : [o]"r" (offset)=0D : "memory");=0D return prev - offset;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64 arch_atomic64_sub_if_positive(atomic64_t *v, s64 offset)=0D {=0D s64 prev;=0D long rc;=0D =0D __asm__ __volatile__ (=0D "0: lr.d %[p], %[c]\n"=0D " sub %[rc], %[p], %[o]\n"=0D " bltz %[rc], 1f\n"=0D " sc.d.rl %[rc], %[rc], %[c]\n"=0D " bnez %[rc], 0b\n"=0D " fence rw, rw\n"=0D "1:\n"=0D : [p]"=3D&r" (prev), [rc]"=3D&r" (rc), [c]"+A" (v->counter)=0D : [o]"r" (offset)=0D : "memory");=0D return prev - offset;=0D }=0D # 8 "./include/linux/atomic.h" 2=0D # 80 "./include/linux/atomic.h"=0D # 1 "./include/linux/atomic/atomic-arch-fallback.h" 1=0D # 151 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_read_acquire(const atomic_t *v)=0D {=0D int ret;=0D =0D if ((sizeof(atomic_t) =3D=3D sizeof(char) || sizeof(atomic_t) =3D=3D sizeo= f(short) || sizeof(atomic_t) =3D=3D sizeof(int) || sizeof(atomic_t) =3D=3D = sizeof(long))) {=0D ret =3D ({ typeof(*&(v)->counter) ___p1 =3D ({ do { __attribute__((__nore= turn__)) extern void __compiletime_assert_21(void) ; if (!((sizeof(*&(v)->c= ounter) =3D=3D sizeof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) = || sizeof(*&(v)->counter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D= =3D sizeof(long)) || sizeof(*&(v)->counter) =3D=3D sizeof(long long))) __co= mpiletime_assert_21(); } while (0); (*(const volatile typeof( _Generic((*&(= v)->counter), char: (char)0, unsigned char: (unsigned char)0, signed char: = (signed char)0, unsigned short: (unsigned short)0, signed short: (signed sh= ort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned l= ong: (unsigned long)0, signed long: (signed long)0, unsigned long long: (un= signed long long)0, signed long long: (signed long long)0, default: (*&(v)-= >counter))) *)&(*&(v)->counter)); }); do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_22(void) ; if (!((sizeof(*&(v)->counter) =3D= =3D sizeof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*= &(v)->counter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(l= ong)))) __compiletime_assert_22(); } while (0); __asm__ __volatile__ ("fenc= e " "r" "," "rw" : : : "memory"); ___p1; });=0D } else {=0D ret =3D arch_atomic_read(v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D }=0D =0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_set_release(atomic_t *v, int i)=0D {=0D if ((sizeof(atomic_t) =3D=3D sizeof(char) || sizeof(atomic_t) =3D=3D sizeo= f(short) || sizeof(atomic_t) =3D=3D sizeof(int) || sizeof(atomic_t) =3D=3D = sizeof(long))) {=0D do { do { } while (0); do { do { __attribute__((__noreturn__)) extern voi= d __compiletime_assert_23(void) ; if (!((sizeof(*&(v)->counter) =3D=3D size= of(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*&(v)->co= unter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(long)))) = __compiletime_assert_23(); } while (0); __asm__ __volatile__ ("fence " "rw"= "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_24(void) ; if (!((sizeof(*&(v)->counter) =3D=3D siz= eof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*&(v)->c= ounter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(long)) |= | sizeof(*&(v)->counter) =3D=3D sizeof(long long))) __compiletime_assert_24= (); } while (0); do { *(volatile typeof(*&(v)->counter) *)&(*&(v)->counter)= =3D (i); } while (0); } while (0); } while (0); } while (0);=0D } else {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D arch_atomic_set(v, i);=0D }=0D }=0D # 189 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_add_return_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_add_return_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_add_return_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_add_return_relaxed(i, v);=0D }=0D # 231 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_add_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_fetch_add_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_add_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_fetch_add_relaxed(i, v);=0D }=0D # 273 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_sub_return_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_sub_return_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_sub_return_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_sub_return_relaxed(i, v);=0D }=0D # 315 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_sub_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_fetch_sub_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_sub_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_fetch_sub_relaxed(i, v);=0D }=0D # 351 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_inc(atomic_t *v)=0D {=0D arch_atomic_add(1, v);=0D }=0D # 367 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_inc_return(atomic_t *v)=0D {=0D return arch_atomic_add_return(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_inc_return_acquire(atomic_t *v)=0D {=0D return arch_atomic_add_return_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_inc_return_release(atomic_t *v)=0D {=0D return arch_atomic_add_return_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_inc_return_relaxed(atomic_t *v)=0D {=0D return arch_atomic_add_return_relaxed(1, v);=0D }=0D # 448 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_inc(atomic_t *v)=0D {=0D return arch_atomic_fetch_add(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_inc_acquire(atomic_t *v)=0D {=0D return arch_atomic_fetch_add_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_inc_release(atomic_t *v)=0D {=0D return arch_atomic_fetch_add_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_inc_relaxed(atomic_t *v)=0D {=0D return arch_atomic_fetch_add_relaxed(1, v);=0D }=0D # 522 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_dec(atomic_t *v)=0D {=0D arch_atomic_sub(1, v);=0D }=0D # 538 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_dec_return(atomic_t *v)=0D {=0D return arch_atomic_sub_return(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_dec_return_acquire(atomic_t *v)=0D {=0D return arch_atomic_sub_return_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_dec_return_release(atomic_t *v)=0D {=0D return arch_atomic_sub_return_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_dec_return_relaxed(atomic_t *v)=0D {=0D return arch_atomic_sub_return_relaxed(1, v);=0D }=0D # 619 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_dec(atomic_t *v)=0D {=0D return arch_atomic_fetch_sub(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_dec_acquire(atomic_t *v)=0D {=0D return arch_atomic_fetch_sub_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_dec_release(atomic_t *v)=0D {=0D return arch_atomic_fetch_sub_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_dec_relaxed(atomic_t *v)=0D {=0D return arch_atomic_fetch_sub_relaxed(1, v);=0D }=0D # 699 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_and_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_fetch_and_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_and_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_fetch_and_relaxed(i, v);=0D }=0D # 735 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_andnot(int i, atomic_t *v)=0D {=0D arch_atomic_and(~i, v);=0D }=0D # 751 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_andnot(int i, atomic_t *v)=0D {=0D return arch_atomic_fetch_and(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_andnot_acquire(int i, atomic_t *v)=0D {=0D return arch_atomic_fetch_and_acquire(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_andnot_release(int i, atomic_t *v)=0D {=0D return arch_atomic_fetch_and_release(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_andnot_relaxed(int i, atomic_t *v)=0D {=0D return arch_atomic_fetch_and_relaxed(~i, v);=0D }=0D # 831 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_or_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_fetch_or_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_or_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_fetch_or_relaxed(i, v);=0D }=0D # 873 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_xor_acquire(int i, atomic_t *v)=0D {=0D int ret =3D arch_atomic_fetch_xor_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D arch_atomic_fetch_xor_release(int i, atomic_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic_fetch_xor_relaxed(i, v);=0D }=0D # 1000 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_try_cmpxchg(atomic_t *v, int *old, int new)=0D {=0D int r, o =3D *old;=0D r =3D arch_atomic_cmpxchg(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)=0D {=0D int r, o =3D *old;=0D r =3D arch_atomic_cmpxchg_acquire(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)=0D {=0D int r, o =3D *old;=0D r =3D arch_atomic_cmpxchg_release(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)=0D {=0D int r, o =3D *old;=0D r =3D arch_atomic_cmpxchg_relaxed(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D # 1099 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_sub_and_test(int i, atomic_t *v)=0D {=0D return arch_atomic_sub_return(i, v) =3D=3D 0;=0D }=0D # 1116 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_dec_and_test(atomic_t *v)=0D {=0D return arch_atomic_dec_return(v) =3D=3D 0;=0D }=0D # 1133 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_inc_and_test(atomic_t *v)=0D {=0D return arch_atomic_inc_return(v) =3D=3D 0;=0D }=0D # 1151 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_add_negative(int i, atomic_t *v)=0D {=0D return arch_atomic_add_return(i, v) < 0;=0D }=0D # 1194 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_add_unless(atomic_t *v, int a, int u)=0D {=0D return arch_atomic_fetch_add_unless(v, a, u) !=3D u;=0D }=0D # 1210 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_inc_not_zero(atomic_t *v)=0D {=0D return arch_atomic_add_unless(v, 1, 0);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_inc_unless_negative(atomic_t *v)=0D {=0D int c =3D arch_atomic_read(v);=0D =0D do {=0D if (__builtin_expect(!!(c < 0), 0))=0D return false;=0D } while (!arch_atomic_try_cmpxchg(v, &c, c + 1));=0D =0D return true;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_dec_unless_positive(atomic_t *v)=0D {=0D int c =3D arch_atomic_read(v);=0D =0D do {=0D if (__builtin_expect(!!(c > 0), 0))=0D return false;=0D } while (!arch_atomic_try_cmpxchg(v, &c, c - 1));=0D =0D return true;=0D }=0D # 1272 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_read_acquire(const atomic64_t *v)=0D {=0D s64 ret;=0D =0D if ((sizeof(atomic64_t) =3D=3D sizeof(char) || sizeof(atomic64_t) =3D=3D s= izeof(short) || sizeof(atomic64_t) =3D=3D sizeof(int) || sizeof(atomic64_t)= =3D=3D sizeof(long))) {=0D ret =3D ({ typeof(*&(v)->counter) ___p1 =3D ({ do { __attribute__((__nore= turn__)) extern void __compiletime_assert_25(void) ; if (!((sizeof(*&(v)->c= ounter) =3D=3D sizeof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) = || sizeof(*&(v)->counter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D= =3D sizeof(long)) || sizeof(*&(v)->counter) =3D=3D sizeof(long long))) __co= mpiletime_assert_25(); } while (0); (*(const volatile typeof( _Generic((*&(= v)->counter), char: (char)0, unsigned char: (unsigned char)0, signed char: = (signed char)0, unsigned short: (unsigned short)0, signed short: (signed sh= ort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned l= ong: (unsigned long)0, signed long: (signed long)0, unsigned long long: (un= signed long long)0, signed long long: (signed long long)0, default: (*&(v)-= >counter))) *)&(*&(v)->counter)); }); do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_26(void) ; if (!((sizeof(*&(v)->counter) =3D= =3D sizeof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*= &(v)->counter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(l= ong)))) __compiletime_assert_26(); } while (0); __asm__ __volatile__ ("fenc= e " "r" "," "rw" : : : "memory"); ___p1; });=0D } else {=0D ret =3D arch_atomic64_read(v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D }=0D =0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic64_set_release(atomic64_t *v, s64 i)=0D {=0D if ((sizeof(atomic64_t) =3D=3D sizeof(char) || sizeof(atomic64_t) =3D=3D s= izeof(short) || sizeof(atomic64_t) =3D=3D sizeof(int) || sizeof(atomic64_t)= =3D=3D sizeof(long))) {=0D do { do { } while (0); do { do { __attribute__((__noreturn__)) extern voi= d __compiletime_assert_27(void) ; if (!((sizeof(*&(v)->counter) =3D=3D size= of(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*&(v)->co= unter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(long)))) = __compiletime_assert_27(); } while (0); __asm__ __volatile__ ("fence " "rw"= "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_28(void) ; if (!((sizeof(*&(v)->counter) =3D=3D siz= eof(char) || sizeof(*&(v)->counter) =3D=3D sizeof(short) || sizeof(*&(v)->c= ounter) =3D=3D sizeof(int) || sizeof(*&(v)->counter) =3D=3D sizeof(long)) |= | sizeof(*&(v)->counter) =3D=3D sizeof(long long))) __compiletime_assert_28= (); } while (0); do { *(volatile typeof(*&(v)->counter) *)&(*&(v)->counter)= =3D (i); } while (0); } while (0); } while (0); } while (0);=0D } else {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D arch_atomic64_set(v, i);=0D }=0D }=0D # 1310 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_add_return_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_add_return_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_add_return_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_add_return_relaxed(i, v);=0D }=0D # 1352 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_add_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_fetch_add_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_add_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_fetch_add_relaxed(i, v);=0D }=0D # 1394 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_sub_return_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_sub_return_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_sub_return_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_sub_return_relaxed(i, v);=0D }=0D # 1436 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_fetch_sub_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_sub_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_fetch_sub_relaxed(i, v);=0D }=0D # 1472 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic64_inc(atomic64_t *v)=0D {=0D arch_atomic64_add(1, v);=0D }=0D # 1488 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_inc_return(atomic64_t *v)=0D {=0D return arch_atomic64_add_return(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_inc_return_acquire(atomic64_t *v)=0D {=0D return arch_atomic64_add_return_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_inc_return_release(atomic64_t *v)=0D {=0D return arch_atomic64_add_return_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_inc_return_relaxed(atomic64_t *v)=0D {=0D return arch_atomic64_add_return_relaxed(1, v);=0D }=0D # 1569 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_inc(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_add(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_inc_acquire(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_add_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_inc_release(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_add_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_inc_relaxed(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_add_relaxed(1, v);=0D }=0D # 1643 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic64_dec(atomic64_t *v)=0D {=0D arch_atomic64_sub(1, v);=0D }=0D # 1659 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_dec_return(atomic64_t *v)=0D {=0D return arch_atomic64_sub_return(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_dec_return_acquire(atomic64_t *v)=0D {=0D return arch_atomic64_sub_return_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_dec_return_release(atomic64_t *v)=0D {=0D return arch_atomic64_sub_return_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_dec_return_relaxed(atomic64_t *v)=0D {=0D return arch_atomic64_sub_return_relaxed(1, v);=0D }=0D # 1740 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_dec(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_sub(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_dec_acquire(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_sub_acquire(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_dec_release(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_sub_release(1, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_dec_relaxed(atomic64_t *v)=0D {=0D return arch_atomic64_fetch_sub_relaxed(1, v);=0D }=0D # 1820 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_and_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_fetch_and_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_and_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_fetch_and_relaxed(i, v);=0D }=0D # 1856 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic64_andnot(s64 i, atomic64_t *v)=0D {=0D arch_atomic64_and(~i, v);=0D }=0D # 1872 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_andnot(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_fetch_and(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_fetch_and_acquire(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_andnot_release(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_fetch_and_release(~i, v);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_fetch_and_relaxed(~i, v);=0D }=0D # 1952 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_or_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_fetch_or_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_or_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_fetch_or_relaxed(i, v);=0D }=0D # 1994 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)=0D {=0D s64 ret =3D arch_atomic64_fetch_xor_relaxed(i, v);=0D __asm__ __volatile__("\tfence r , rw\n" "" ::: "memory");=0D return ret;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D arch_atomic64_fetch_xor_release(s64 i, atomic64_t *v)=0D {=0D __asm__ __volatile__("\tfence rw, w\n" "" ::: "memory");;=0D return arch_atomic64_fetch_xor_relaxed(i, v);=0D }=0D # 2121 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)=0D {=0D s64 r, o =3D *old;=0D r =3D arch_atomic64_cmpxchg(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)=0D {=0D s64 r, o =3D *old;=0D r =3D arch_atomic64_cmpxchg(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)=0D {=0D s64 r, o =3D *old;=0D r =3D arch_atomic64_cmpxchg(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)=0D {=0D s64 r, o =3D *old;=0D r =3D arch_atomic64_cmpxchg(v, o, new);=0D if (__builtin_expect(!!(r !=3D o), 0))=0D *old =3D r;=0D return __builtin_expect(!!(r =3D=3D o), 1);=0D }=0D # 2220 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_sub_and_test(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_sub_return(i, v) =3D=3D 0;=0D }=0D # 2237 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_dec_and_test(atomic64_t *v)=0D {=0D return arch_atomic64_dec_return(v) =3D=3D 0;=0D }=0D # 2254 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_inc_and_test(atomic64_t *v)=0D {=0D return arch_atomic64_inc_return(v) =3D=3D 0;=0D }=0D # 2272 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_add_negative(s64 i, atomic64_t *v)=0D {=0D return arch_atomic64_add_return(i, v) < 0;=0D }=0D # 2315 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_add_unless(atomic64_t *v, s64 a, s64 u)=0D {=0D return arch_atomic64_fetch_add_unless(v, a, u) !=3D u;=0D }=0D # 2331 "./include/linux/atomic/atomic-arch-fallback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_inc_not_zero(atomic64_t *v)=0D {=0D return arch_atomic64_add_unless(v, 1, 0);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_inc_unless_negative(atomic64_t *v)=0D {=0D s64 c =3D arch_atomic64_read(v);=0D =0D do {=0D if (__builtin_expect(!!(c < 0), 0))=0D return false;=0D } while (!arch_atomic64_try_cmpxchg(v, &c, c + 1));=0D =0D return true;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic64_dec_unless_positive(atomic64_t *v)=0D {=0D s64 c =3D arch_atomic64_read(v);=0D =0D do {=0D if (__builtin_expect(!!(c > 0), 0))=0D return false;=0D } while (!arch_atomic64_try_cmpxchg(v, &c, c - 1));=0D =0D return true;=0D }=0D # 81 "./include/linux/atomic.h" 2=0D # 1 "./include/linux/atomic/atomic-long.h" 1=0D # 10 "./include/linux/atomic/atomic-long.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 11 "./include/linux/atomic/atomic-long.h" 2=0D =0D =0D typedef atomic64_t atomic_long_t;=0D # 26 "./include/linux/atomic/atomic-long.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_read(const atomic_long_t *v)=0D {=0D return arch_atomic64_read(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_read_acquire(const atomic_long_t *v)=0D {=0D return arch_atomic64_read_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_set(atomic_long_t *v, long i)=0D {=0D arch_atomic64_set(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_set_release(atomic_long_t *v, long i)=0D {=0D arch_atomic64_set_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_add(long i, atomic_long_t *v)=0D {=0D arch_atomic64_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_add_return(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_add_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_add_return_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_add_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_add_return_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_add_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_add_return_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_add_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_add(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_add_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_add_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_add_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_add_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_add_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_sub(long i, atomic_long_t *v)=0D {=0D arch_atomic64_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_sub_return(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_sub_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_sub_return_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_sub_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_sub_return_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_sub_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_sub_return_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_sub_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_sub(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_sub_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_sub_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_sub_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_sub_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_inc(atomic_long_t *v)=0D {=0D arch_atomic64_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_inc_return(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_inc_return_acquire(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_inc_return_release(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_inc_return_relaxed(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_inc(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_inc_acquire(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_inc_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_inc_release(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_inc_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_inc_relaxed(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_inc_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_dec(atomic_long_t *v)=0D {=0D arch_atomic64_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_dec_return(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_dec_return_acquire(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_dec_return_release(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_dec_return_relaxed(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_dec(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_dec_acquire(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_dec_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_dec_release(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_dec_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_dec_relaxed(atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_dec_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_and(long i, atomic_long_t *v)=0D {=0D arch_atomic64_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_and(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_and_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_and_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_and_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_and_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_and_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_andnot(long i, atomic_long_t *v)=0D {=0D arch_atomic64_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_andnot(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_andnot_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_andnot_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_andnot_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_andnot_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_or(long i, atomic_long_t *v)=0D {=0D arch_atomic64_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_or(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_or_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_or_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_or_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_or_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_or_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D arch_atomic_long_xor(long i, atomic_long_t *v)=0D {=0D arch_atomic64_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_xor(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_xor_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_xor_release(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_xor_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_fetch_xor_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_xchg(atomic_long_t *v, long i)=0D {=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_xchg_acquire(atomic_long_t *v, long i)=0D {=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_xchg_release(atomic_long_t *v, long i)=0D {=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_xchg_relaxed(atomic_long_t *v, long i)=0D {=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_cmpxchg(atomic_long_t *v, long old, long new)=0D {=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)=0D {=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)=0D {=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)=0D {=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)=0D {=0D return arch_atomic64_try_cmpxchg(v, (s64 *)old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)= =0D {=0D return arch_atomic64_try_cmpxchg_acquire(v, (s64 *)old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)= =0D {=0D return arch_atomic64_try_cmpxchg_release(v, (s64 *)old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)= =0D {=0D return arch_atomic64_try_cmpxchg_relaxed(v, (s64 *)old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_sub_and_test(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_sub_and_test(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_dec_and_test(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_inc_and_test(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_add_negative(long i, atomic_long_t *v)=0D {=0D return arch_atomic64_add_negative(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)=0D {=0D return arch_atomic64_fetch_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_add_unless(atomic_long_t *v, long a, long u)=0D {=0D return arch_atomic64_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_inc_not_zero(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_not_zero(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_inc_unless_negative(atomic_long_t *v)=0D {=0D return arch_atomic64_inc_unless_negative(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D arch_atomic_long_dec_unless_positive(atomic_long_t *v)=0D {=0D return arch_atomic64_dec_unless_positive(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D arch_atomic_long_dec_if_positive(atomic_long_t *v)=0D {=0D return arch_atomic64_sub_if_positive(v, 1);=0D }=0D # 82 "./include/linux/atomic.h" 2=0D # 1 "./include/linux/atomic/atomic-instrumented.h" 1=0D # 22 "./include/linux/atomic/atomic-instrumented.h"=0D # 1 "./include/linux/instrumented.h" 1=0D # 24 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_read(const volatile void *v, size_t size)=0D {=0D kasan_check_read(v, size);=0D kcsan_check_access(v, size, 0);=0D }=0D # 39 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_write(const volatile void *v, size_t size)=0D {=0D kasan_check_write(v, size);=0D kcsan_check_access(v, size, (1 << 0));=0D }=0D # 54 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_read_write(const volatile void *v, size_t size)=0D {=0D kasan_check_write(v, size);=0D kcsan_check_access(v, size, (1 << 1) | (1 << 0));=0D }=0D # 69 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_atomic_read(const volatile void *v, size_t size)=0D {=0D kasan_check_read(v, size);=0D kcsan_check_access(v, size, (1 << 2));=0D }=0D # 84 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_atomic_write(const volatile void *v, size_t size)=0D {=0D kasan_check_write(v, size);=0D kcsan_check_access(v, size, (1 << 2) | (1 << 0));=0D }=0D # 99 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void instrument_atomic_read_write(const volatile void *v, size_t siz= e)=0D {=0D kasan_check_write(v, size);=0D kcsan_check_access(v, size, (1 << 2) | (1 << 0) | (1 << 1));=0D }=0D # 115 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D instrument_copy_to_user(void *to, const void *from, unsigned long n)=0D {=0D kasan_check_read(from, n);=0D kcsan_check_access(from, n, 0);=0D }=0D # 132 "./include/linux/instrumented.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D instrument_copy_from_user(const void *to, const void *from, unsigned long n= )=0D {=0D kasan_check_write(to, n);=0D kcsan_check_access(to, n, (1 << 0));=0D }=0D # 23 "./include/linux/atomic/atomic-instrumented.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_read(const atomic_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic_read(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_read_acquire(const atomic_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic_read_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_set(atomic_t *v, int i)=0D {=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic_set(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_set_release(atomic_t *v, int i)=0D {=0D do { } while (0);=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic_set_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_add(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_add_return(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_add_return_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_add_return_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_add_return_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_add(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_add_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_add_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_add_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_add_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_add_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_add_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_sub(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_sub_return(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_sub_return_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_sub_return_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_sub_return_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_sub(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_sub_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_sub_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_sub_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_sub_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_sub_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_sub_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_inc(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_inc_return(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_inc_return_acquire(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_inc_return_release(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_inc_return_relaxed(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_inc(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_inc_acquire(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_inc_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_inc_release(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_inc_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_inc_relaxed(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_inc_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_dec(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_dec_return(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_dec_return_acquire(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_dec_return_release(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_dec_return_relaxed(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_dec(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_dec_acquire(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_dec_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_dec_release(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_dec_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_dec_relaxed(atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_dec_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_and(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_and(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_and_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_and_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_and_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_and_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_and_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_and_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_andnot(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_andnot(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_andnot_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_andnot_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_andnot_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_andnot_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_andnot_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_andnot_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_or(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_or(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_or_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_or_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_or_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_or_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_or_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_or_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_xor(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_xor(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_xor_acquire(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_xor_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_xor_release(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_xor_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_xor_relaxed(int i, atomic_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_xor_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_xchg(atomic_t *v, int i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_xchg_acquire(atomic_t *v, int i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_xchg_acquire(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_xchg_release(atomic_t *v, int i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_xchg_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_xchg_relaxed(atomic_t *v, int i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_xchg_relaxed(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_cmpxchg(atomic_t *v, int old, int new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_cmpxchg_acquire(atomic_t *v, int old, int new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_cmpxchg_acquire(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_cmpxchg_release(atomic_t *v, int old, int new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_cmpxchg_release(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_cmpxchg_relaxed(atomic_t *v, int old, int new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_cmpxchg_relaxed(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_try_cmpxchg(atomic_t *v, int *old, int new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_try_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_try_cmpxchg_acquire(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_try_cmpxchg_release(atomic_t *v, int *old, int new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_try_cmpxchg_release(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_try_cmpxchg_relaxed(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_sub_and_test(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_and_test(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_dec_and_test(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_inc_and_test(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_add_negative(int i, atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_negative(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_fetch_add_unless(atomic_t *v, int a, int u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_fetch_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_add_unless(atomic_t *v, int a, int u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_inc_not_zero(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_not_zero(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_inc_unless_negative(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_inc_unless_negative(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_dec_unless_positive(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_dec_unless_positive(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D atomic_dec_if_positive(atomic_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_sub_if_positive(v, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_read(const atomic64_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic64_read(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_read_acquire(const atomic64_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic64_read_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_set(atomic64_t *v, s64 i)=0D {=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic64_set(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_set_release(atomic64_t *v, s64 i)=0D {=0D do { } while (0);=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic64_set_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_add(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_add_return(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_add_return_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_add_return_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_add_return_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_add(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_add_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_add_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_add_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_add_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_add_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_add_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_sub(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_sub_return(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_sub_return_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_sub_return_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_sub_return_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_sub(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_sub_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_sub_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_sub_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_sub_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_sub_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_sub_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_inc(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_inc_return(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_inc_return_acquire(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_inc_return_release(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_inc_return_relaxed(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_inc(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_inc_acquire(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_inc_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_inc_release(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_inc_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_inc_relaxed(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_inc_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_dec(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_dec_return(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_dec_return_acquire(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_dec_return_release(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_dec_return_relaxed(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_dec(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_dec_acquire(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_dec_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_dec_release(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_dec_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_dec_relaxed(atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_dec_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_and(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_and(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_and_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_and_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_and_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_and_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_and_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_and_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_andnot(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_andnot(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_andnot_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_andnot_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_andnot_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_andnot_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_andnot_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_or(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_or(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_or_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_or_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_or_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_or_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_or_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_or_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic64_xor(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic64_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_xor(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_xor_acquire(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_xor_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_xor_release(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_xor_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_xor_relaxed(s64 i, atomic64_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_xor_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_xchg(atomic64_t *v, s64 i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_xchg_acquire(atomic64_t *v, s64 i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_xchg_release(atomic64_t *v, s64 i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_xchg_relaxed(atomic64_t *v, s64 i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic64_try_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic64_try_cmpxchg_acquire(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic64_try_cmpxchg_release(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic64_try_cmpxchg_relaxed(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_sub_and_test(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_and_test(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_dec_and_test(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_inc_and_test(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_add_negative(s64 i, atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_negative(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_fetch_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_add_unless(atomic64_t *v, s64 a, s64 u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_inc_not_zero(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_not_zero(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_inc_unless_negative(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_inc_unless_negative(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic64_dec_unless_positive(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_dec_unless_positive(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) s64=0D atomic64_dec_if_positive(atomic64_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic64_sub_if_positive(v, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_read(const atomic_long_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic_long_read(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_read_acquire(const atomic_long_t *v)=0D {=0D instrument_atomic_read(v, sizeof(*v));=0D return arch_atomic_long_read_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_set(atomic_long_t *v, long i)=0D {=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic_long_set(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_set_release(atomic_long_t *v, long i)=0D {=0D do { } while (0);=0D instrument_atomic_write(v, sizeof(*v));=0D arch_atomic_long_set_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_add(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_add_return(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_add_return_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_add_return_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_add_return_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_add(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_add(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_add_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_add_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_add_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_add_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_add_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_add_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_sub(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_sub_return(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_sub_return(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_sub_return_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_sub_return_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_sub_return_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_sub_return_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_sub_return_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_sub_return_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_sub(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_sub(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_sub_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_sub_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_sub_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_sub_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_sub_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_sub_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_inc(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_inc_return(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_inc_return_acquire(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_inc_return_release(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_inc_return_relaxed(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_inc(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_inc(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_inc_acquire(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_inc_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_inc_release(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_inc_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_inc_relaxed(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_inc_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_dec(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_dec_return(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_return(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_dec_return_acquire(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_return_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_dec_return_release(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_return_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_dec_return_relaxed(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_return_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_dec(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_dec(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_dec_acquire(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_dec_acquire(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_dec_release(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_dec_release(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_dec_relaxed(atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_dec_relaxed(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_and(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_and(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_and(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_and_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_and_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_and_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_and_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_and_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_and_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_andnot(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_andnot(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_andnot(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_andnot_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_andnot_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_andnot_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_andnot_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_andnot_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_andnot_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_or(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_or(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_or(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_or_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_or_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_or_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_or_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_or_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_or_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D atomic_long_xor(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D arch_atomic_long_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_xor(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_xor(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_xor_acquire(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_xor_acquire(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_xor_release(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_xor_release(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_xor_relaxed(long i, atomic_long_t *v)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_xor_relaxed(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_xchg(atomic_long_t *v, long i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_xchg(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_xchg_acquire(atomic_long_t *v, long i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_xchg_acquire(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_xchg_release(atomic_long_t *v, long i)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_xchg_release(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_xchg_relaxed(atomic_long_t *v, long i)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_xchg_relaxed(v, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_cmpxchg(atomic_long_t *v, long old, long new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_cmpxchg_acquire(atomic_long_t *v, long old, long new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_cmpxchg_acquire(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_cmpxchg_release(atomic_long_t *v, long old, long new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_cmpxchg_release(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_cmpxchg_relaxed(atomic_long_t *v, long old, long new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_cmpxchg_relaxed(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_try_cmpxchg(atomic_long_t *v, long *old, long new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_long_try_cmpxchg(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_try_cmpxchg_acquire(atomic_long_t *v, long *old, long new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_long_try_cmpxchg_acquire(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_try_cmpxchg_release(atomic_long_t *v, long *old, long new)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_long_try_cmpxchg_release(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_try_cmpxchg_relaxed(atomic_long_t *v, long *old, long new)=0D {=0D instrument_atomic_read_write(v, sizeof(*v));=0D instrument_atomic_read_write(old, sizeof(*old));=0D return arch_atomic_long_try_cmpxchg_relaxed(v, old, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_sub_and_test(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_sub_and_test(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_dec_and_test(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_inc_and_test(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_and_test(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_add_negative(long i, atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_negative(i, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_fetch_add_unless(atomic_long_t *v, long a, long u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_fetch_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_add_unless(atomic_long_t *v, long a, long u)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_add_unless(v, a, u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_inc_not_zero(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_not_zero(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_inc_unless_negative(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_inc_unless_negative(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D atomic_long_dec_unless_positive(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_unless_positive(v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D atomic_long_dec_if_positive(atomic_long_t *v)=0D {=0D do { } while (0);=0D instrument_atomic_read_write(v, sizeof(*v));=0D return arch_atomic_long_dec_if_positive(v);=0D }=0D # 83 "./include/linux/atomic.h" 2=0D # 14 "./include/linux/mm_types_task.h" 2=0D # 1 "./include/linux/cpumask.h" 1=0D # 12 "./include/linux/cpumask.h"=0D # 1 "./include/linux/bitmap.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/find.h" 1=0D # 11 "./include/linux/find.h"=0D extern unsigned long _find_next_bit(const unsigned long *addr1,=0D const unsigned long *addr2, unsigned long nbits,=0D unsigned long start, unsigned long invert, unsigned long le);=0D extern unsigned long _find_first_bit(const unsigned long *addr, unsigned lo= ng size);=0D extern unsigned long _find_first_and_bit(const unsigned long *addr1,=0D const unsigned long *addr2, unsigned long size);=0D extern unsigned long _find_first_zero_bit(const unsigned long *addr, unsign= ed long size);=0D extern unsigned long _find_last_bit(const unsigned long *addr, unsigned lon= g size);=0D # 30 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_next_bit(const unsigned long *addr, unsigned long size,= =0D unsigned long offset)=0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val;=0D =0D if (__builtin_expect(!!(offset >=3D size), 0))=0D return size;=0D =0D val =3D *addr & ((((int)(sizeof(struct { int:(-!!(__builtin_choose_expr( = (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((offset) > (size - 1)) * = 0l)) : (int *)8))), (offset) > (size - 1), 0))); })))) + (((~(((0UL)))) - (= (((1UL))) << (offset)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)))));=0D return val ? __ffs(val) : size;=0D }=0D =0D return _find_next_bit(addr, ((void *)0), size, offset, 0UL, 0);=0D }=0D # 59 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_next_and_bit(const unsigned long *addr1,=0D const unsigned long *addr2, unsigned long size,=0D unsigned long offset)=0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val;=0D =0D if (__builtin_expect(!!(offset >=3D size), 0))=0D return size;=0D =0D val =3D *addr1 & *addr2 & ((((int)(sizeof(struct { int:(-!!(__builtin_cho= ose_expr( (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((offset) > (siz= e - 1)) * 0l)) : (int *)8))), (offset) > (size - 1), 0))); })))) + (((~(((0= UL)))) - ((((1UL))) << (offset)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)= ))));=0D return val ? __ffs(val) : size;=0D }=0D =0D return _find_next_bit(addr1, addr2, size, offset, 0UL, 0);=0D }=0D # 88 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long s= ize,=0D unsigned long offset)=0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val;=0D =0D if (__builtin_expect(!!(offset >=3D size), 0))=0D return size;=0D =0D val =3D *addr | ~((((int)(sizeof(struct { int:(-!!(__builtin_choose_expr(= (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((offset) > (size - 1)) *= 0l)) : (int *)8))), (offset) > (size - 1), 0))); })))) + (((~(((0UL)))) - = ((((1UL))) << (offset)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)))));=0D return val =3D=3D ~0UL ? size : __ffs(~(val));=0D }=0D =0D return _find_next_bit(addr, ((void *)0), size, offset, ~0UL, 0);=0D }=0D # 115 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_first_bit(const unsigned long *addr, unsigned long size)= =0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val =3D *addr & ((((int)(sizeof(struct { int:(-!!(__builtin= _choose_expr( (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((0) > (size= - 1)) * 0l)) : (int *)8))), (0) > (size - 1), 0))); })))) + (((~(((0UL))))= - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)))));=0D =0D return val ? __ffs(val) : size;=0D }=0D =0D return _find_first_bit(addr, size);=0D }=0D # 138 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_first_and_bit(const unsigned long *addr1,=0D const unsigned long *addr2,=0D unsigned long size)=0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val =3D *addr1 & *addr2 & ((((int)(sizeof(struct { int:(-!!= (__builtin_choose_expr( (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((= 0) > (size - 1)) * 0l)) : (int *)8))), (0) > (size - 1), 0))); })))) + (((~= (((0UL)))) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1))= )));=0D =0D return val ? __ffs(val) : size;=0D }=0D =0D return _find_first_and_bit(addr1, addr2, size);=0D }=0D # 162 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_first_zero_bit(const unsigned long *addr, unsigned long = size)=0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val =3D *addr | ~((((int)(sizeof(struct { int:(-!!(__builti= n_choose_expr( (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((0) > (siz= e - 1)) * 0l)) : (int *)8))), (0) > (size - 1), 0))); })))) + (((~(((0UL)))= ) - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)))));=0D =0D return val =3D=3D ~0UL ? size : __ffs(~(val));=0D }=0D =0D return _find_first_zero_bit(addr, size);=0D }=0D # 183 "./include/linux/find.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long find_last_bit(const unsigned long *addr, unsigned long size)= =0D {=0D if ((__builtin_constant_p(size) && (size) <=3D 64 && (size) > 0)) {=0D unsigned long val =3D *addr & ((((int)(sizeof(struct { int:(-!!(__builtin= _choose_expr( (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((0) > (size= - 1)) * 0l)) : (int *)8))), (0) > (size - 1), 0))); })))) + (((~(((0UL))))= - ((((1UL))) << (0)) + 1) & (~(((0UL))) >> (64 - 1 - (size - 1)))));=0D =0D return val ? __fls(val) : size;=0D }=0D =0D return _find_last_bit(addr, size);=0D }=0D # 206 "./include/linux/find.h"=0D extern unsigned long find_next_clump8(unsigned long *clump,=0D const unsigned long *addr,=0D unsigned long size, unsigned long offset);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long find_next_zero= _bit_le(const void *addr,=0D unsigned long size, unsigned long offset)=0D {=0D return find_next_zero_bit(addr, size, offset);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long find_next_bit_= le(const void *addr,=0D unsigned long size, unsigned long offset)=0D {=0D return find_next_bit(addr, size, offset);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long find_first_zer= o_bit_le(const void *addr,=0D unsigned long size)=0D {=0D return find_first_zero_bit(addr, size);=0D }=0D # 10 "./include/linux/bitmap.h" 2=0D =0D # 1 "./include/linux/string.h" 1=0D # 10 "./include/linux/string.h"=0D # 1 "./include/uapi/linux/string.h" 1=0D # 11 "./include/linux/string.h" 2=0D =0D extern char *strndup_user(const char *, long);=0D extern void *memdup_user(const void *, size_t);=0D extern void *vmemdup_user(const void *, size_t);=0D extern void *memdup_user_nul(const void *, size_t);=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/string.h" 1=0D # 13 "./arch/riscv/include/asm/string.h"=0D extern void *memset(void *, int, size_t);=0D extern void *__memset(void *, int, size_t);=0D =0D extern void *memcpy(void *, const void *, size_t);=0D extern void *__memcpy(void *, const void *, size_t);=0D =0D extern void *memmove(void *, const void *, size_t);=0D extern void *__memmove(void *, const void *, size_t);=0D # 21 "./include/linux/string.h" 2=0D =0D =0D extern char * strcpy(char *,const char *);=0D =0D =0D extern char * strncpy(char *,const char *, __kernel_size_t);=0D =0D =0D size_t strlcpy(char *, const char *, size_t);=0D =0D =0D ssize_t strscpy(char *, const char *, size_t);=0D =0D =0D =0D ssize_t strscpy_pad(char *dest, const char *src, size_t count);=0D =0D =0D extern char * strcat(char *, const char *);=0D =0D =0D extern char * strncat(char *, const char *, __kernel_size_t);=0D =0D =0D extern size_t strlcat(char *, const char *, __kernel_size_t);=0D =0D =0D extern int strcmp(const char *,const char *);=0D =0D =0D extern int strncmp(const char *,const char *,__kernel_size_t);=0D =0D =0D extern int strcasecmp(const char *s1, const char *s2);=0D =0D =0D extern int strncasecmp(const char *s1, const char *s2, size_t n);=0D =0D =0D extern char * strchr(const char *,int);=0D =0D =0D extern char * strchrnul(const char *,int);=0D =0D extern char * strnchrnul(const char *, size_t, int);=0D =0D extern char * strnchr(const char *, size_t, int);=0D =0D =0D extern char * strrchr(const char *,int);=0D =0D extern char * __attribute__((__warn_unused_result__)) skip_spaces(const cha= r *);=0D =0D extern char *strim(char *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) char *strstrip(char *str)=0D {=0D return strim(str);=0D }=0D =0D =0D extern char * strstr(const char *, const char *);=0D =0D =0D extern char * strnstr(const char *, const char *, size_t);=0D =0D =0D extern __kernel_size_t strlen(const char *);=0D =0D =0D extern __kernel_size_t strnlen(const char *,__kernel_size_t);=0D =0D =0D extern char * strpbrk(const char *,const char *);=0D =0D =0D extern char * strsep(char **,const char *);=0D =0D =0D extern __kernel_size_t strspn(const char *,const char *);=0D =0D =0D extern __kernel_size_t strcspn(const char *,const char *);=0D =0D =0D =0D =0D =0D =0D =0D extern void *memset16(uint16_t *, uint16_t, __kernel_size_t);=0D =0D =0D =0D extern void *memset32(uint32_t *, uint32_t, __kernel_size_t);=0D =0D =0D =0D extern void *memset64(uint64_t *, uint64_t, __kernel_size_t);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *memset_l(unsigned long= *p, unsigned long v,=0D __kernel_size_t n)=0D {=0D if (64 =3D=3D 32)=0D return memset32((uint32_t *)p, v, n);=0D else=0D return memset64((uint64_t *)p, v, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *memset_p(void **p, voi= d *v, __kernel_size_t n)=0D {=0D if (64 =3D=3D 32)=0D return memset32((uint32_t *)p, (uintptr_t)v, n);=0D else=0D return memset64((uint64_t *)p, (uintptr_t)v, n);=0D }=0D =0D extern void **__memcat_p(void **a, void **b);=0D # 153 "./include/linux/string.h"=0D extern void * memscan(void *,int,__kernel_size_t);=0D =0D =0D extern int memcmp(const void *,const void *,__kernel_size_t);=0D =0D =0D extern int bcmp(const void *,const void *,__kernel_size_t);=0D =0D =0D extern void * memchr(const void *,int,__kernel_size_t);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_flushcache(void = *dst, const void *src, size_t cnt)=0D {=0D memcpy(dst, src, cnt);=0D }=0D =0D =0D void *memchr_inv(const void *s, int c, size_t n);=0D char *strreplace(char *s, char old, char new);=0D =0D extern void kfree_const(const void *x);=0D =0D extern char *kstrdup(const char *s, gfp_t gfp) __attribute__((__malloc__));= =0D extern const char *kstrdup_const(const char *s, gfp_t gfp);=0D extern char *kstrndup(const char *s, size_t len, gfp_t gfp);=0D extern void *kmemdup(const void *src, size_t len, gfp_t gfp);=0D extern char *kmemdup_nul(const char *s, size_t len, gfp_t gfp);=0D =0D extern char **argv_split(gfp_t gfp, const char *str, int *argcp);=0D extern void argv_free(char **argv);=0D =0D extern bool sysfs_streq(const char *s1, const char *s2);=0D int match_string(const char * const *array, size_t n, const char *string);= =0D int __sysfs_match_string(const char * const *array, size_t n, const char *s= );=0D # 199 "./include/linux/string.h"=0D int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args);= =0D int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf= );=0D int bprintf(u32 *bin_buf, size_t size, const char *fmt, ...) __attribute__(= (__format__(printf, 3, 4)));=0D =0D =0D extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos= ,=0D const void *from, size_t available);=0D =0D int ptr_to_hashval(const void *ptr, unsigned long *hashval_out);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool strstarts(const char *s= tr, const char *prefix)=0D {=0D return strncmp(str, prefix, strlen(prefix)) =3D=3D 0;=0D }=0D =0D size_t memweight(const void *ptr, size_t bytes);=0D # 235 "./include/linux/string.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memzero_explicit(void *= s, size_t count)=0D {=0D memset(s, 0, count);=0D __asm__ __volatile__("": :"r"(s) :"memory");=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *kbasename(const = char *path)=0D {=0D const char *tail =3D strrchr(path, '/');=0D return tail ? tail + 1 : path;=0D }=0D =0D =0D =0D =0D =0D void memcpy_and_pad(void *dest, size_t dest_len, const void *src, size_t co= unt,=0D int pad);=0D # 309 "./include/linux/string.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) size_t str_has_prefix(const char *str, const char *prefix)=0D {=0D size_t len =3D strlen(prefix);=0D return strncmp(str, prefix, len) =3D=3D 0 ? len : 0;=0D }=0D # 12 "./include/linux/bitmap.h" 2=0D =0D =0D struct device;=0D # 119 "./include/linux/bitmap.h"=0D unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags);=0D unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags);=0D unsigned long *bitmap_alloc_node(unsigned int nbits, gfp_t flags, int node)= ;=0D unsigned long *bitmap_zalloc_node(unsigned int nbits, gfp_t flags, int node= );=0D void bitmap_free(const unsigned long *bitmap);=0D =0D =0D unsigned long *devm_bitmap_alloc(struct device *dev,=0D unsigned int nbits, gfp_t flags);=0D unsigned long *devm_bitmap_zalloc(struct device *dev,=0D unsigned int nbits, gfp_t flags);=0D =0D =0D =0D =0D =0D int __bitmap_equal(const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D bool __attribute__((__pure__)) __bitmap_or_equal(const unsigned long *src1,= =0D const unsigned long *src2,=0D const unsigned long *src3,=0D unsigned int nbits);=0D void __bitmap_complement(unsigned long *dst, const unsigned long *src,=0D unsigned int nbits);=0D void __bitmap_shift_right(unsigned long *dst, const unsigned long *src,=0D unsigned int shift, unsigned int nbits);=0D void __bitmap_shift_left(unsigned long *dst, const unsigned long *src,=0D unsigned int shift, unsigned int nbits);=0D void bitmap_cut(unsigned long *dst, const unsigned long *src,=0D unsigned int first, unsigned int cut, unsigned int nbits);=0D int __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D int __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D void __bitmap_replace(unsigned long *dst,=0D const unsigned long *old, const unsigned long *new,=0D const unsigned long *mask, unsigned int nbits);=0D int __bitmap_intersects(const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D int __bitmap_subset(const unsigned long *bitmap1,=0D const unsigned long *bitmap2, unsigned int nbits);=0D int __bitmap_weight(const unsigned long *bitmap, unsigned int nbits);=0D void __bitmap_set(unsigned long *map, unsigned int start, int len);=0D void __bitmap_clear(unsigned long *map, unsigned int start, int len);=0D =0D unsigned long bitmap_find_next_zero_area_off(unsigned long *map,=0D unsigned long size,=0D unsigned long start,=0D unsigned int nr,=0D unsigned long align_mask,=0D unsigned long align_offset);=0D # 187 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D bitmap_find_next_zero_area(unsigned long *map,=0D unsigned long size,=0D unsigned long start,=0D unsigned int nr,=0D unsigned long align_mask)=0D {=0D return bitmap_find_next_zero_area_off(map, size, start, nr,=0D align_mask, 0);=0D }=0D =0D int bitmap_parse(const char *buf, unsigned int buflen,=0D unsigned long *dst, int nbits);=0D int bitmap_parse_user(const char *ubuf, unsigned int ulen,=0D unsigned long *dst, int nbits);=0D int bitmap_parselist(const char *buf, unsigned long *maskp,=0D int nmaskbits);=0D int bitmap_parselist_user(const char *ubuf, unsigned int ulen,=0D unsigned long *dst, int nbits);=0D void bitmap_remap(unsigned long *dst, const unsigned long *src,=0D const unsigned long *old, const unsigned long *new, unsigned int nbits);= =0D int bitmap_bitremap(int oldbit,=0D const unsigned long *old, const unsigned long *new, int bits);=0D void bitmap_onto(unsigned long *dst, const unsigned long *orig,=0D const unsigned long *relmap, unsigned int bits);=0D void bitmap_fold(unsigned long *dst, const unsigned long *orig,=0D unsigned int sz, unsigned int nbits);=0D int bitmap_find_free_region(unsigned long *bitmap, unsigned int bits, int o= rder);=0D void bitmap_release_region(unsigned long *bitmap, unsigned int pos, int ord= er);=0D int bitmap_allocate_region(unsigned long *bitmap, unsigned int pos, int ord= er);=0D =0D =0D =0D =0D =0D =0D unsigned int bitmap_ord_to_pos(const unsigned long *bitmap, unsigned int or= d, unsigned int nbits);=0D int bitmap_print_to_pagebuf(bool list, char *buf,=0D const unsigned long *maskp, int nmaskbits);=0D =0D extern int bitmap_print_bitmask_to_buf(char *buf, const unsigned long *mask= p,=0D int nmaskbits, loff_t off, size_t count);=0D =0D extern int bitmap_print_list_to_buf(char *buf, const unsigned long *maskp,= =0D int nmaskbits, loff_t off, size_t count);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_zero(unsigned lo= ng *dst, unsigned int nbits)=0D {=0D unsigned int len =3D (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long= ) * 8))) * sizeof(unsigned long);=0D memset(dst, 0, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_fill(unsigned lo= ng *dst, unsigned int nbits)=0D {=0D unsigned int len =3D (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long= ) * 8))) * sizeof(unsigned long);=0D memset(dst, 0xff, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_copy(unsigned lo= ng *dst, const unsigned long *src,=0D unsigned int nbits)=0D {=0D unsigned int len =3D (((nbits) + ((sizeof(long) * 8)) - 1) / ((sizeof(long= ) * 8))) * sizeof(unsigned long);=0D memcpy(dst, src, len);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_copy_clear_tail(= unsigned long *dst,=0D const unsigned long *src, unsigned int nbits)=0D {=0D bitmap_copy(dst, src, nbits);=0D if (nbits % 64)=0D dst[nbits / 64] &=3D (~0UL >> (-(nbits) & (64 - 1)));=0D }=0D =0D =0D =0D =0D =0D =0D void bitmap_from_arr32(unsigned long *bitmap, const u32 *buf,=0D unsigned int nbits);=0D void bitmap_to_arr32(u32 *buf, const unsigned long *bitmap,=0D unsigned int nbits);=0D # 284 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bitmap_and(unsigned long= *dst, const unsigned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return (*dst =3D *src1 & *src2 & (~0UL >> (-(nbits) & (64 - 1)))) !=3D 0;= =0D return __bitmap_and(dst, src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_or(unsigned long= *dst, const unsigned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D *src1 | *src2;=0D else=0D __bitmap_or(dst, src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_xor(unsigned lon= g *dst, const unsigned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D *src1 ^ *src2;=0D else=0D __bitmap_xor(dst, src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bitmap_andnot(unsigned l= ong *dst, const unsigned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return (*dst =3D *src1 & ~(*src2) & (~0UL >> (-(nbits) & (64 - 1)))) !=3D= 0;=0D return __bitmap_andnot(dst, src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_complement(unsig= ned long *dst, const unsigned long *src,=0D unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D ~(*src);=0D else=0D __bitmap_complement(dst, src, nbits);=0D }=0D # 334 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bitmap_equal(const unsig= ned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return !((*src1 ^ *src2) & (~0UL >> (-(nbits) & (64 - 1))));=0D if (__builtin_constant_p(nbits & (8 - 1)) &&=0D (((nbits) & ((typeof(nbits))(8) - 1)) =3D=3D 0))=0D return !memcmp(src1, src2, nbits / 8);=0D return __bitmap_equal(src1, src2, nbits);=0D }=0D # 354 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bitmap_or_equal(const u= nsigned long *src1,=0D const unsigned long *src2,=0D const unsigned long *src3,=0D unsigned int nbits)=0D {=0D if (!(__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return __bitmap_or_equal(src1, src2, src3, nbits);=0D =0D return !(((*src1 | *src2) ^ *src3) & (~0UL >> (-(nbits) & (64 - 1))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bitmap_intersects(const = unsigned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return ((*src1 & *src2) & (~0UL >> (-(nbits) & (64 - 1)))) !=3D 0;=0D else=0D return __bitmap_intersects(src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bitmap_subset(const unsi= gned long *src1,=0D const unsigned long *src2, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return ! ((*src1 & ~(*src2)) & (~0UL >> (-(nbits) & (64 - 1))));=0D else=0D return __bitmap_subset(src1, src2, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bitmap_empty(const unsi= gned long *src, unsigned nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return ! (*src & (~0UL >> (-(nbits) & (64 - 1))));=0D =0D return find_first_bit(src, nbits) =3D=3D nbits;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bitmap_full(const unsig= ned long *src, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return ! (~(*src) & (~0UL >> (-(nbits) & (64 - 1))));=0D =0D return find_first_zero_bit(src, nbits) =3D=3D nbits;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int bitmap_weight(const unsigned long *src, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D return hweight_long(*src & (~0UL >> (-(nbits) & (64 - 1))));=0D return __bitmap_weight(src, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void bitmap_set(unsigned long *map, unsigned int start,=0D unsigned int nbits)=0D {=0D if (__builtin_constant_p(nbits) && nbits =3D=3D 1)=0D arch___set_bit(start, map);=0D else if (__builtin_constant_p(start & (8 - 1)) &&=0D (((start) & ((typeof(start))(8) - 1)) =3D=3D 0) &&=0D __builtin_constant_p(nbits & (8 - 1)) &&=0D (((nbits) & ((typeof(nbits))(8) - 1)) =3D=3D 0))=0D memset((char *)map + start / 8, 0xff, nbits / 8);=0D else=0D __bitmap_set(map, start, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void bitmap_clear(unsigned long *map, unsigned int start,=0D unsigned int nbits)=0D {=0D if (__builtin_constant_p(nbits) && nbits =3D=3D 1)=0D arch___clear_bit(start, map);=0D else if (__builtin_constant_p(start & (8 - 1)) &&=0D (((start) & ((typeof(start))(8) - 1)) =3D=3D 0) &&=0D __builtin_constant_p(nbits & (8 - 1)) &&=0D (((nbits) & ((typeof(nbits))(8) - 1)) =3D=3D 0))=0D memset((char *)map + start / 8, 0, nbits / 8);=0D else=0D __bitmap_clear(map, start, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_shift_right(unsi= gned long *dst, const unsigned long *src,=0D unsigned int shift, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D (*src & (~0UL >> (-(nbits) & (64 - 1)))) >> shift;=0D else=0D __bitmap_shift_right(dst, src, shift, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_shift_left(unsig= ned long *dst, const unsigned long *src,=0D unsigned int shift, unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D (*src << shift) & (~0UL >> (-(nbits) & (64 - 1)));=0D else=0D __bitmap_shift_left(dst, src, shift, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_replace(unsigned= long *dst,=0D const unsigned long *old,=0D const unsigned long *new,=0D const unsigned long *mask,=0D unsigned int nbits)=0D {=0D if ((__builtin_constant_p(nbits) && (nbits) <=3D 64 && (nbits) > 0))=0D *dst =3D (*old & ~(*mask)) | (*new & *mask);=0D else=0D __bitmap_replace(dst, old, new, mask, nbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_next_set_region(= unsigned long *bitmap,=0D unsigned int *rs, unsigned int *re,=0D unsigned int end)=0D {=0D *rs =3D find_next_bit(bitmap, end, *rs);=0D *re =3D find_next_zero_bit(bitmap, end, *rs + 1);=0D }=0D # 515 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_from_u64(unsigne= d long *dst, u64 mask)=0D {=0D dst[0] =3D mask & (~0UL);=0D =0D if (sizeof(mask) > sizeof(unsigned long))=0D dst[1] =3D mask >> 32;=0D }=0D # 531 "./include/linux/bitmap.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long bitmap_get_val= ue8(const unsigned long *map,=0D unsigned long start)=0D {=0D const size_t index =3D ((start) / 64);=0D const unsigned long offset =3D start % 64;=0D =0D return (map[index] >> offset) & 0xFF;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bitmap_set_value8(unsig= ned long *map, unsigned long value,=0D unsigned long start)=0D {=0D const size_t index =3D ((start) / 64);=0D const unsigned long offset =3D start % 64;=0D =0D map[index] &=3D ~(0xFFUL << offset);=0D map[index] |=3D value << offset;=0D }=0D # 13 "./include/linux/cpumask.h" 2=0D =0D =0D =0D =0D typedef struct cpumask { unsigned long bits[(((32) + ((sizeof(long) * 8)) -= 1) / ((sizeof(long) * 8)))]; } cpumask_t;=0D # 39 "./include/linux/cpumask.h"=0D extern unsigned int nr_cpu_ids;=0D # 90 "./include/linux/cpumask.h"=0D extern struct cpumask __cpu_possible_mask;=0D extern struct cpumask __cpu_online_mask;=0D extern struct cpumask __cpu_present_mask;=0D extern struct cpumask __cpu_active_mask;=0D extern struct cpumask __cpu_dying_mask;=0D =0D =0D =0D =0D =0D =0D extern atomic_t __num_online_cpus;=0D =0D extern cpumask_t cpus_booted_once_mask;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void cpu_max_bits_warn(unsigned int cpu, unsigned int bits)=0D {=0D =0D ({ int __ret_warn_on =3D !!(cpu >=3D bits); if (__builtin_expect(!!(__ret_= warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection= __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - = 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pops= ection" : : "i" ("include/linux/cpumask.h"), "i" (108), "i" ((1 << 0)|((1 <= < 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builti= n_expect(!!(__ret_warn_on), 0); });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned int cpumask_check(unsigned int cpu)=0D {=0D cpu_max_bits_warn(cpu, ((unsigned int)32));=0D return cpu;=0D }=0D # 204 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_first(c= onst struct cpumask *srcp)=0D {=0D return find_first_bit(((srcp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_first_z= ero(const struct cpumask *srcp)=0D {=0D return find_first_zero_bit(((srcp)->bits), ((unsigned int)32));=0D }=0D # 227 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned int cpumask_first_and(const struct cpumask *srcp1, const struct cp= umask *srcp2)=0D {=0D return find_first_and_bit(((srcp1)->bits), ((srcp2)->bits), ((unsigned int= )32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_last(co= nst struct cpumask *srcp)=0D {=0D return find_last_bit(((srcp)->bits), ((unsigned int)32));=0D }=0D =0D unsigned int __attribute__((__pure__)) cpumask_next(int n, const struct cpu= mask *srcp);=0D # 253 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_next_ze= ro(int n, const struct cpumask *srcp)=0D {=0D =0D if (n !=3D -1)=0D cpumask_check(n);=0D return find_next_zero_bit(((srcp)->bits), ((unsigned int)32), n+1);=0D }=0D =0D int __attribute__((__pure__)) cpumask_next_and(int n, const struct cpumask = *, const struct cpumask *);=0D int __attribute__((__pure__)) cpumask_any_but(const struct cpumask *mask, u= nsigned int cpu);=0D unsigned int cpumask_local_spread(unsigned int i, int node);=0D int cpumask_any_and_distribute(const struct cpumask *src1p,=0D const struct cpumask *src2p);=0D int cpumask_any_distribute(const struct cpumask *srcp);=0D # 292 "./include/linux/cpumask.h"=0D extern int cpumask_next_wrap(int n, const struct cpumask *mask, int start, = bool wrap);=0D # 344 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)=0D {=0D set_bit(cpumask_check(cpu), ((dstp)->bits));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __cpumask_set_cpu(unsigned int cpu, struct cpumask *dstp)=0D {=0D arch___set_bit(cpumask_check(cpu), ((dstp)->bits));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void cpumask_clear_cpu(int cpu, struct cpumask *dstp)=0D {=0D clear_bit(cpumask_check(cpu), ((dstp)->bits));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __cpumask_clear_cpu(int cpu, struct cpumask *dstp)=0D {=0D arch___clear_bit(cpumask_check(cpu), ((dstp)->bits));=0D }=0D # 377 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int cpumask_test_cpu(int cpu, const struct cpumask *cpumask)=0D {=0D return arch_test_bit(cpumask_check(cpu), (((cpumask))->bits));=0D }=0D # 391 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int cpumask_test_and_set_cpu(int cpu, struct cpumask *cpumask)=0D {=0D return test_and_set_bit(cpumask_check(cpu), ((cpumask)->bits));=0D }=0D # 405 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int cpumask_test_and_clear_cpu(int cpu, struct cpumask *cpumask)=0D {=0D return test_and_clear_bit(cpumask_check(cpu), ((cpumask)->bits));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_setall(struct c= pumask *dstp)=0D {=0D bitmap_fill(((dstp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_clear(struct cp= umask *dstp)=0D {=0D bitmap_zero(((dstp)->bits), ((unsigned int)32));=0D }=0D # 436 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_and(struct cpuma= sk *dstp,=0D const struct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D return bitmap_and(((dstp)->bits), ((src1p)->bits),=0D ((src2p)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_or(struct cpuma= sk *dstp, const struct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D bitmap_or(((dstp)->bits), ((src1p)->bits),=0D ((src2p)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_xor(struct cpum= ask *dstp,=0D const struct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D bitmap_xor(((dstp)->bits), ((src1p)->bits),=0D ((src2p)->bits), ((unsigned int)32));=0D }=0D # 479 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_andnot(struct cp= umask *dstp,=0D const struct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D return bitmap_andnot(((dstp)->bits), ((src1p)->bits),=0D ((src2p)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_complement(stru= ct cpumask *dstp,=0D const struct cpumask *srcp)=0D {=0D bitmap_complement(((dstp)->bits), ((srcp)->bits),=0D ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_equal(const str= uct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D return bitmap_equal(((src1p)->bits), ((src2p)->bits),=0D ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_or_equal(const = struct cpumask *src1p,=0D const struct cpumask *src2p,=0D const struct cpumask *src3p)=0D {=0D return bitmap_or_equal(((src1p)->bits), ((src2p)->bits),=0D ((src3p)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_intersects(cons= t struct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D return bitmap_intersects(((src1p)->bits), ((src2p)->bits),=0D ((unsigned int)32));=0D }=0D # 544 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_subset(const str= uct cpumask *src1p,=0D const struct cpumask *src2p)=0D {=0D return bitmap_subset(((src1p)->bits), ((src2p)->bits),=0D ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_empty(const str= uct cpumask *srcp)=0D {=0D return bitmap_empty(((srcp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_full(const stru= ct cpumask *srcp)=0D {=0D return bitmap_full(((srcp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_weight(= const struct cpumask *srcp)=0D {=0D return bitmap_weight(((srcp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_shift_right(str= uct cpumask *dstp,=0D const struct cpumask *srcp, int n)=0D {=0D bitmap_shift_right(((dstp)->bits), ((srcp)->bits), n,=0D ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_shift_left(stru= ct cpumask *dstp,=0D const struct cpumask *srcp, int n)=0D {=0D bitmap_shift_left(((dstp)->bits), ((srcp)->bits), n,=0D ((unsigned int)32));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpumask_copy(struct cpu= mask *dstp,=0D const struct cpumask *srcp)=0D {=0D bitmap_copy(((dstp)->bits), ((srcp)->bits), ((unsigned int)32));=0D }=0D # 646 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_parse_user(const= char *buf, int len,=0D struct cpumask *dstp)=0D {=0D return bitmap_parse_user(buf, len, ((dstp)->bits), ((unsigned int)32));=0D }=0D # 660 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_parselist_user(c= onst char *buf, int len,=0D struct cpumask *dstp)=0D {=0D return bitmap_parselist_user(buf, len, ((dstp)->bits),=0D ((unsigned int)32));=0D }=0D # 674 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpumask_parse(const char= *buf, struct cpumask *dstp)=0D {=0D return bitmap_parse(buf, (~0U), ((dstp)->bits), ((unsigned int)32));=0D }=0D # 686 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpulist_parse(const char= *buf, struct cpumask *dstp)=0D {=0D return bitmap_parselist(buf, ((dstp)->bits), ((unsigned int)32));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int cpumask_size(vo= id)=0D {=0D return (((((unsigned int)32)) + ((sizeof(long) * 8)) - 1) / ((sizeof(long)= * 8))) * sizeof(long);=0D }=0D # 759 "./include/linux/cpumask.h"=0D typedef struct cpumask cpumask_var_t[1];=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool alloc_cpumask_var(cpuma= sk_var_t *mask, gfp_t flags)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool alloc_cpumask_var_node(= cpumask_var_t *mask, gfp_t flags,=0D int node)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zalloc_cpumask_var(cpum= ask_var_t *mask, gfp_t flags)=0D {=0D cpumask_clear(*mask);=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zalloc_cpumask_var_node= (cpumask_var_t *mask, gfp_t flags,=0D int node)=0D {=0D cpumask_clear(*mask);=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void alloc_bootmem_cpumask_v= ar(cpumask_var_t *mask)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void free_cpumask_var(cpumas= k_var_t mask)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void free_bootmem_cpumask_va= r(cpumask_var_t mask)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpumask_available(cpuma= sk_var_t mask)=0D {=0D return true;=0D }=0D =0D =0D =0D =0D extern const unsigned long cpu_all_bits[(((32) + ((sizeof(long) * 8)) - 1) = / ((sizeof(long) * 8)))];=0D # 819 "./include/linux/cpumask.h"=0D void init_cpu_present(const struct cpumask *src);=0D void init_cpu_possible(const struct cpumask *src);=0D void init_cpu_online(const struct cpumask *src);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reset_cpu_possible_mask= (void)=0D {=0D bitmap_zero(((&__cpu_possible_mask)->bits), 32);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D set_cpu_possible(unsigned int cpu, bool possible)=0D {=0D if (possible)=0D cpumask_set_cpu(cpu, &__cpu_possible_mask);=0D else=0D cpumask_clear_cpu(cpu, &__cpu_possible_mask);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D set_cpu_present(unsigned int cpu, bool present)=0D {=0D if (present)=0D cpumask_set_cpu(cpu, &__cpu_present_mask);=0D else=0D cpumask_clear_cpu(cpu, &__cpu_present_mask);=0D }=0D =0D void set_cpu_online(unsigned int cpu, bool online);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D set_cpu_active(unsigned int cpu, bool active)=0D {=0D if (active)=0D cpumask_set_cpu(cpu, &__cpu_active_mask);=0D else=0D cpumask_clear_cpu(cpu, &__cpu_active_mask);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D set_cpu_dying(unsigned int cpu, bool dying)=0D {=0D if (dying)=0D cpumask_set_cpu(cpu, &__cpu_dying_mask);=0D else=0D cpumask_clear_cpu(cpu, &__cpu_dying_mask);=0D }=0D # 880 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __check_is_bitmap(const = unsigned long *bitmap)=0D {=0D return 1;=0D }=0D # 892 "./include/linux/cpumask.h"=0D extern const unsigned long=0D cpu_bit_bitmap[64 +1][(((32) + ((sizeof(long) * 8)) - 1) / ((sizeof(long) = * 8)))];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct cpumask *get_cp= u_mask(unsigned int cpu)=0D {=0D const unsigned long *p =3D cpu_bit_bitmap[1 + cpu % 64];=0D p -=3D cpu / 64;=0D return ((struct cpumask *)(1 ? (p) : (void *)sizeof(__check_is_bitmap(p)))= );=0D }=0D # 911 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int num_online_cpus= (void)=0D {=0D return atomic_read(&__num_online_cpus);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_online(unsigned int= cpu)=0D {=0D return cpumask_test_cpu(cpu, ((const struct cpumask *)&__cpu_online_mask))= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_possible(unsigned i= nt cpu)=0D {=0D return cpumask_test_cpu(cpu, ((const struct cpumask *)&__cpu_possible_mask= ));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_present(unsigned in= t cpu)=0D {=0D return cpumask_test_cpu(cpu, ((const struct cpumask *)&__cpu_present_mask)= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_active(unsigned int= cpu)=0D {=0D return cpumask_test_cpu(cpu, ((const struct cpumask *)&__cpu_active_mask))= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_dying(unsigned int = cpu)=0D {=0D return cpumask_test_cpu(cpu, ((const struct cpumask *)&__cpu_dying_mask));= =0D }=0D # 1005 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t=0D cpumap_print_to_pagebuf(bool list, char *buf, const struct cpumask *mask)=0D {=0D return bitmap_print_to_pagebuf(list, buf, ((mask)->bits),=0D nr_cpu_ids);=0D }=0D # 1028 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t=0D cpumap_print_bitmask_to_buf(char *buf, const struct cpumask *mask,=0D loff_t off, size_t count)=0D {=0D return bitmap_print_bitmask_to_buf(buf, ((mask)->bits),=0D nr_cpu_ids, off, count) - 1;=0D }=0D # 1043 "./include/linux/cpumask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t=0D cpumap_print_list_to_buf(char *buf, const struct cpumask *mask,=0D loff_t off, size_t count)=0D {=0D return bitmap_print_list_to_buf(buf, ((mask)->bits),=0D nr_cpu_ids, off, count) - 1;=0D }=0D # 15 "./include/linux/mm_types_task.h" 2=0D # 34 "./include/linux/mm_types_task.h"=0D struct vmacache {=0D u64 seqnum;=0D struct vm_area_struct *vmas[(1U << 2)];=0D };=0D =0D =0D =0D =0D =0D enum {=0D MM_FILEPAGES,=0D MM_ANONPAGES,=0D MM_SWAPENTS,=0D MM_SHMEMPAGES,=0D NR_MM_COUNTERS=0D };=0D =0D =0D =0D =0D struct task_rss_stat {=0D int events;=0D int count[NR_MM_COUNTERS];=0D };=0D =0D =0D struct mm_rss_stat {=0D atomic_long_t count[NR_MM_COUNTERS];=0D };=0D =0D struct page_frag {=0D struct page *page;=0D =0D __u32 offset;=0D __u32 size;=0D =0D =0D =0D =0D };=0D =0D =0D struct tlbflush_unmap_batch {=0D # 97 "./include/linux/mm_types_task.h"=0D };=0D # 6 "./include/linux/mm_types.h" 2=0D =0D # 1 "./include/linux/auxvec.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/auxvec.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/uapi/asm/auxvec.h" 1=0D # 6 "./include/uapi/linux/auxvec.h" 2=0D # 6 "./include/linux/auxvec.h" 2=0D # 8 "./include/linux/mm_types.h" 2=0D # 1 "./include/linux/kref.h" 1=0D # 16 "./include/linux/kref.h"=0D # 1 "./include/linux/spinlock.h" 1=0D # 55 "./include/linux/spinlock.h"=0D # 1 "./include/linux/preempt.h" 1=0D # 11 "./include/linux/preempt.h"=0D # 1 "./include/linux/list.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/poison.h" 1=0D # 9 "./include/linux/list.h" 2=0D # 35 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INIT_LIST_HEAD(struct l= ist_head *list)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 9(void) ; if (!((sizeof(list->next) =3D=3D sizeof(char) || sizeof(list->nex= t) =3D=3D sizeof(short) || sizeof(list->next) =3D=3D sizeof(int) || sizeof(= list->next) =3D=3D sizeof(long)) || sizeof(list->next) =3D=3D sizeof(long l= ong))) __compiletime_assert_29(); } while (0); do { *(volatile typeof(list-= >next) *)&(list->next) =3D (list); } while (0); } while (0);=0D list->prev =3D list;=0D }=0D =0D =0D extern bool __list_add_valid(struct list_head *new,=0D struct list_head *prev,=0D struct list_head *next);=0D extern bool __list_del_entry_valid(struct list_head *entry);=0D # 65 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_add(struct list_= head *new,=0D struct list_head *prev,=0D struct list_head *next)=0D {=0D if (!__list_add_valid(new, prev, next))=0D return;=0D =0D next->prev =3D new;=0D new->next =3D next;=0D new->prev =3D prev;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 0(void) ; if (!((sizeof(prev->next) =3D=3D sizeof(char) || sizeof(prev->nex= t) =3D=3D sizeof(short) || sizeof(prev->next) =3D=3D sizeof(int) || sizeof(= prev->next) =3D=3D sizeof(long)) || sizeof(prev->next) =3D=3D sizeof(long l= ong))) __compiletime_assert_30(); } while (0); do { *(volatile typeof(prev-= >next) *)&(prev->next) =3D (new); } while (0); } while (0);=0D }=0D # 86 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_add(struct list_he= ad *new, struct list_head *head)=0D {=0D __list_add(new, head, head->next);=0D }=0D # 100 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_add_tail(struct li= st_head *new, struct list_head *head)=0D {=0D __list_add(new, head->prev, head);=0D }=0D # 112 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_del(struct list_= head * prev, struct list_head * next)=0D {=0D next->prev =3D prev;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 1(void) ; if (!((sizeof(prev->next) =3D=3D sizeof(char) || sizeof(prev->nex= t) =3D=3D sizeof(short) || sizeof(prev->next) =3D=3D sizeof(int) || sizeof(= prev->next) =3D=3D sizeof(long)) || sizeof(prev->next) =3D=3D sizeof(long l= ong))) __compiletime_assert_31(); } while (0); do { *(volatile typeof(prev-= >next) *)&(prev->next) =3D (next); } while (0); } while (0);=0D }=0D # 126 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_del_clearprev(st= ruct list_head *entry)=0D {=0D __list_del(entry->prev, entry->next);=0D entry->prev =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_del_entry(struct= list_head *entry)=0D {=0D if (!__list_del_entry_valid(entry))=0D return;=0D =0D __list_del(entry->prev, entry->next);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_del(struct list_he= ad *entry)=0D {=0D __list_del_entry(entry);=0D entry->next =3D ((void *) 0x100 + 0);=0D entry->prev =3D ((void *) 0x122 + 0);=0D }=0D # 160 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_replace(struct lis= t_head *old,=0D struct list_head *new)=0D {=0D new->next =3D old->next;=0D new->next->prev =3D new;=0D new->prev =3D old->prev;=0D new->prev->next =3D new;=0D }=0D # 176 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_replace_init(struc= t list_head *old,=0D struct list_head *new)=0D {=0D list_replace(old, new);=0D INIT_LIST_HEAD(old);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_swap(struct list_h= ead *entry1,=0D struct list_head *entry2)=0D {=0D struct list_head *pos =3D entry2->prev;=0D =0D list_del(entry2);=0D list_replace(entry1, entry2);=0D if (pos =3D=3D entry1)=0D pos =3D entry2;=0D list_add(entry1, pos);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_del_init(struct li= st_head *entry)=0D {=0D __list_del_entry(entry);=0D INIT_LIST_HEAD(entry);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_move(struct list_h= ead *list, struct list_head *head)=0D {=0D __list_del_entry(list);=0D list_add(list, head);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_move_tail(struct l= ist_head *list,=0D struct list_head *head)=0D {=0D __list_del_entry(list);=0D list_add_tail(list, head);=0D }=0D # 242 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_bulk_move_tail(str= uct list_head *head,=0D struct list_head *first,=0D struct list_head *last)=0D {=0D first->prev->next =3D last->next;=0D last->next->prev =3D first->prev;=0D =0D head->prev->next =3D first;=0D first->prev =3D head->prev;=0D =0D last->next =3D head;=0D head->prev =3D last;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_is_first(const stru= ct list_head *list, const struct list_head *head)=0D {=0D return list->prev =3D=3D head;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_is_last(const struc= t list_head *list, const struct list_head *head)=0D {=0D return list->next =3D=3D head;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_is_head(const struc= t list_head *list, const struct list_head *head)=0D {=0D return list =3D=3D head;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_empty(const struct = list_head *head)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_32(void) ; if (!((sizeof(head->next) =3D=3D sizeof(char) || sizeof(head= ->next) =3D=3D sizeof(short) || sizeof(head->next) =3D=3D sizeof(int) || si= zeof(head->next) =3D=3D sizeof(long)) || sizeof(head->next) =3D=3D sizeof(l= ong long))) __compiletime_assert_32(); } while (0); (*(const volatile typeo= f( _Generic((head->next), char: (char)0, unsigned char: (unsigned char)0, s= igned char: (signed char)0, unsigned short: (unsigned short)0, signed short= : (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0= , unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lo= ng long: (unsigned long long)0, signed long long: (signed long long)0, defa= ult: (head->next))) *)&(head->next)); }) =3D=3D head;=0D }=0D # 306 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_del_init_careful(s= truct list_head *entry)=0D {=0D __list_del_entry(entry);=0D entry->prev =3D entry;=0D do { do { } while (0); do { do { __attribute__((__noreturn__)) extern void= __compiletime_assert_33(void) ; if (!((sizeof(*&entry->next) =3D=3D sizeof= (char) || sizeof(*&entry->next) =3D=3D sizeof(short) || sizeof(*&entry->nex= t) =3D=3D sizeof(int) || sizeof(*&entry->next) =3D=3D sizeof(long)))) __com= piletime_assert_33(); } while (0); __asm__ __volatile__ ("fence " "rw" "," = "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern void __= compiletime_assert_34(void) ; if (!((sizeof(*&entry->next) =3D=3D sizeof(ch= ar) || sizeof(*&entry->next) =3D=3D sizeof(short) || sizeof(*&entry->next) = =3D=3D sizeof(int) || sizeof(*&entry->next) =3D=3D sizeof(long)) || sizeof(= *&entry->next) =3D=3D sizeof(long long))) __compiletime_assert_34(); } whil= e (0); do { *(volatile typeof(*&entry->next) *)&(*&entry->next) =3D (entry)= ; } while (0); } while (0); } while (0); } while (0);=0D }=0D # 326 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_empty_careful(const= struct list_head *head)=0D {=0D struct list_head *next =3D ({ typeof(*&head->next) ___p1 =3D ({ do { __att= ribute__((__noreturn__)) extern void __compiletime_assert_35(void) ; if (!(= (sizeof(*&head->next) =3D=3D sizeof(char) || sizeof(*&head->next) =3D=3D si= zeof(short) || sizeof(*&head->next) =3D=3D sizeof(int) || sizeof(*&head->ne= xt) =3D=3D sizeof(long)) || sizeof(*&head->next) =3D=3D sizeof(long long)))= __compiletime_assert_35(); } while (0); (*(const volatile typeof( _Generic= ((*&head->next), char: (char)0, unsigned char: (unsigned char)0, signed cha= r: (signed char)0, unsigned short: (unsigned short)0, signed short: (signed= short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigne= d long: (unsigned long)0, signed long: (signed long)0, unsigned long long: = (unsigned long long)0, signed long long: (signed long long)0, default: (*&h= ead->next))) *)&(*&head->next)); }); do { __attribute__((__noreturn__)) ext= ern void __compiletime_assert_36(void) ; if (!((sizeof(*&head->next) =3D=3D= sizeof(char) || sizeof(*&head->next) =3D=3D sizeof(short) || sizeof(*&head= ->next) =3D=3D sizeof(int) || sizeof(*&head->next) =3D=3D sizeof(long)))) _= _compiletime_assert_36(); } while (0); __asm__ __volatile__ ("fence " "r" "= ," "rw" : : : "memory"); ___p1; });=0D return list_is_head(next, head) && (next =3D=3D head->prev);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_rotate_left(struct= list_head *head)=0D {=0D struct list_head *first;=0D =0D if (!list_empty(head)) {=0D first =3D head->next;=0D list_move_tail(first, head);=0D }=0D }=0D # 353 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_rotate_to_front(st= ruct list_head *list,=0D struct list_head *head)=0D {=0D =0D =0D =0D =0D =0D list_move_tail(head, list);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int list_is_singular(const s= truct list_head *head)=0D {=0D return !list_empty(head) && (head->next =3D=3D head->prev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_cut_position(str= uct list_head *list,=0D struct list_head *head, struct list_head *entry)=0D {=0D struct list_head *new_first =3D entry->next;=0D list->next =3D head->next;=0D list->next->prev =3D list;=0D list->prev =3D entry;=0D entry->next =3D list;=0D head->next =3D new_first;=0D new_first->prev =3D head;=0D }=0D # 399 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_cut_position(struc= t list_head *list,=0D struct list_head *head, struct list_head *entry)=0D {=0D if (list_empty(head))=0D return;=0D if (list_is_singular(head) && !list_is_head(entry, head) && (entry !=3D he= ad->next))=0D return;=0D if (list_is_head(entry, head))=0D INIT_LIST_HEAD(list);=0D else=0D __list_cut_position(list, head, entry);=0D }=0D # 426 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_cut_before(struct = list_head *list,=0D struct list_head *head,=0D struct list_head *entry)=0D {=0D if (head->next =3D=3D entry) {=0D INIT_LIST_HEAD(list);=0D return;=0D }=0D list->next =3D head->next;=0D list->next->prev =3D list;=0D list->prev =3D entry->prev;=0D list->prev->next =3D list;=0D head->next =3D entry;=0D entry->prev =3D head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_splice(const str= uct list_head *list,=0D struct list_head *prev,=0D struct list_head *next)=0D {=0D struct list_head *first =3D list->next;=0D struct list_head *last =3D list->prev;=0D =0D first->prev =3D prev;=0D prev->next =3D first;=0D =0D last->next =3D next;=0D next->prev =3D last;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice(const struc= t list_head *list,=0D struct list_head *head)=0D {=0D if (!list_empty(list))=0D __list_splice(list, head, head->next);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice_tail(struct= list_head *list,=0D struct list_head *head)=0D {=0D if (!list_empty(list))=0D __list_splice(list, head->prev, head);=0D }=0D # 487 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice_init(struct= list_head *list,=0D struct list_head *head)=0D {=0D if (!list_empty(list)) {=0D __list_splice(list, head, head->next);=0D INIT_LIST_HEAD(list);=0D }=0D }=0D # 504 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice_tail_init(s= truct list_head *list,=0D struct list_head *head)=0D {=0D if (!list_empty(list)) {=0D __list_splice(list, head->prev, head);=0D INIT_LIST_HEAD(list);=0D }=0D }=0D # 802 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INIT_HLIST_NODE(struct = hlist_node *h)=0D {=0D h->next =3D ((void *)0);=0D h->pprev =3D ((void *)0);=0D }=0D # 816 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_unhashed(const str= uct hlist_node *h)=0D {=0D return !h->pprev;=0D }=0D # 829 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_unhashed_lockless(= const struct hlist_node *h)=0D {=0D return !({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_37(void) ; if (!((sizeof(h->pprev) =3D=3D sizeof(char) || sizeof(h->pp= rev) =3D=3D sizeof(short) || sizeof(h->pprev) =3D=3D sizeof(int) || sizeof(= h->pprev) =3D=3D sizeof(long)) || sizeof(h->pprev) =3D=3D sizeof(long long)= )) __compiletime_assert_37(); } while (0); (*(const volatile typeof( _Gener= ic((h->pprev), char: (char)0, unsigned char: (unsigned char)0, signed char:= (signed char)0, unsigned short: (unsigned short)0, signed short: (signed s= hort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned = long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (u= nsigned long long)0, signed long long: (signed long long)0, default: (h->pp= rev))) *)&(h->pprev)); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_empty(const struct= hlist_head *h)=0D {=0D return !({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_38(void) ; if (!((sizeof(h->first) =3D=3D sizeof(char) || sizeof(h->fi= rst) =3D=3D sizeof(short) || sizeof(h->first) =3D=3D sizeof(int) || sizeof(= h->first) =3D=3D sizeof(long)) || sizeof(h->first) =3D=3D sizeof(long long)= )) __compiletime_assert_38(); } while (0); (*(const volatile typeof( _Gener= ic((h->first), char: (char)0, unsigned char: (unsigned char)0, signed char:= (signed char)0, unsigned short: (unsigned short)0, signed short: (signed s= hort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned = long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (u= nsigned long long)0, signed long long: (signed long long)0, default: (h->fi= rst))) *)&(h->first)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __hlist_del(struct hlis= t_node *n)=0D {=0D struct hlist_node *next =3D n->next;=0D struct hlist_node **pprev =3D n->pprev;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 9(void) ; if (!((sizeof(*pprev) =3D=3D sizeof(char) || sizeof(*pprev) =3D= =3D sizeof(short) || sizeof(*pprev) =3D=3D sizeof(int) || sizeof(*pprev) = =3D=3D sizeof(long)) || sizeof(*pprev) =3D=3D sizeof(long long))) __compile= time_assert_39(); } while (0); do { *(volatile typeof(*pprev) *)&(*pprev) = =3D (next); } while (0); } while (0);=0D if (next)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 40(void) ; if (!((sizeof(next->pprev) =3D=3D sizeof(char) || sizeof(next->p= prev) =3D=3D sizeof(short) || sizeof(next->pprev) =3D=3D sizeof(int) || siz= eof(next->pprev) =3D=3D sizeof(long)) || sizeof(next->pprev) =3D=3D sizeof(= long long))) __compiletime_assert_40(); } while (0); do { *(volatile typeof= (next->pprev) *)&(next->pprev) =3D (pprev); } while (0); } while (0);=0D }=0D # 860 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_del(struct hlist_= node *n)=0D {=0D __hlist_del(n);=0D n->next =3D ((void *) 0x100 + 0);=0D n->pprev =3D ((void *) 0x122 + 0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_del_init(struct h= list_node *n)=0D {=0D if (!hlist_unhashed(n)) {=0D __hlist_del(n);=0D INIT_HLIST_NODE(n);=0D }=0D }=0D # 889 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_head(struct h= list_node *n, struct hlist_head *h)=0D {=0D struct hlist_node *first =3D h->first;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 1(void) ; if (!((sizeof(n->next) =3D=3D sizeof(char) || sizeof(n->next) =3D= =3D sizeof(short) || sizeof(n->next) =3D=3D sizeof(int) || sizeof(n->next) = =3D=3D sizeof(long)) || sizeof(n->next) =3D=3D sizeof(long long))) __compil= etime_assert_41(); } while (0); do { *(volatile typeof(n->next) *)&(n->next= ) =3D (first); } while (0); } while (0);=0D if (first)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 42(void) ; if (!((sizeof(first->pprev) =3D=3D sizeof(char) || sizeof(first-= >pprev) =3D=3D sizeof(short) || sizeof(first->pprev) =3D=3D sizeof(int) || = sizeof(first->pprev) =3D=3D sizeof(long)) || sizeof(first->pprev) =3D=3D si= zeof(long long))) __compiletime_assert_42(); } while (0); do { *(volatile t= ypeof(first->pprev) *)&(first->pprev) =3D (&n->next); } while (0); } while = (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 3(void) ; if (!((sizeof(h->first) =3D=3D sizeof(char) || sizeof(h->first) = =3D=3D sizeof(short) || sizeof(h->first) =3D=3D sizeof(int) || sizeof(h->fi= rst) =3D=3D sizeof(long)) || sizeof(h->first) =3D=3D sizeof(long long))) __= compiletime_assert_43(); } while (0); do { *(volatile typeof(h->first) *)&(= h->first) =3D (n); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 4(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_44(); } while (0); do { *(volatile typeof(n->pprev) *)&(= n->pprev) =3D (&h->first); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_before(struct= hlist_node *n,=0D struct hlist_node *next)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 5(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_45(); } while (0); do { *(volatile typeof(n->pprev) *)&(= n->pprev) =3D (next->pprev); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 6(void) ; if (!((sizeof(n->next) =3D=3D sizeof(char) || sizeof(n->next) =3D= =3D sizeof(short) || sizeof(n->next) =3D=3D sizeof(int) || sizeof(n->next) = =3D=3D sizeof(long)) || sizeof(n->next) =3D=3D sizeof(long long))) __compil= etime_assert_46(); } while (0); do { *(volatile typeof(n->next) *)&(n->next= ) =3D (next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 7(void) ; if (!((sizeof(next->pprev) =3D=3D sizeof(char) || sizeof(next->pp= rev) =3D=3D sizeof(short) || sizeof(next->pprev) =3D=3D sizeof(int) || size= of(next->pprev) =3D=3D sizeof(long)) || sizeof(next->pprev) =3D=3D sizeof(l= ong long))) __compiletime_assert_47(); } while (0); do { *(volatile typeof(= next->pprev) *)&(next->pprev) =3D (&n->next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 8(void) ; if (!((sizeof(*(n->pprev)) =3D=3D sizeof(char) || sizeof(*(n->ppr= ev)) =3D=3D sizeof(short) || sizeof(*(n->pprev)) =3D=3D sizeof(int) || size= of(*(n->pprev)) =3D=3D sizeof(long)) || sizeof(*(n->pprev)) =3D=3D sizeof(l= ong long))) __compiletime_assert_48(); } while (0); do { *(volatile typeof(= *(n->pprev)) *)&(*(n->pprev)) =3D (n); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_behind(struct= hlist_node *n,=0D struct hlist_node *prev)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 9(void) ; if (!((sizeof(n->next) =3D=3D sizeof(char) || sizeof(n->next) =3D= =3D sizeof(short) || sizeof(n->next) =3D=3D sizeof(int) || sizeof(n->next) = =3D=3D sizeof(long)) || sizeof(n->next) =3D=3D sizeof(long long))) __compil= etime_assert_49(); } while (0); do { *(volatile typeof(n->next) *)&(n->next= ) =3D (prev->next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_5= 0(void) ; if (!((sizeof(prev->next) =3D=3D sizeof(char) || sizeof(prev->nex= t) =3D=3D sizeof(short) || sizeof(prev->next) =3D=3D sizeof(int) || sizeof(= prev->next) =3D=3D sizeof(long)) || sizeof(prev->next) =3D=3D sizeof(long l= ong))) __compiletime_assert_50(); } while (0); do { *(volatile typeof(prev-= >next) *)&(prev->next) =3D (n); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_5= 1(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_51(); } while (0); do { *(volatile typeof(n->pprev) *)&(= n->pprev) =3D (&prev->next); } while (0); } while (0);=0D =0D if (n->next)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 52(void) ; if (!((sizeof(n->next->pprev) =3D=3D sizeof(char) || sizeof(n->n= ext->pprev) =3D=3D sizeof(short) || sizeof(n->next->pprev) =3D=3D sizeof(in= t) || sizeof(n->next->pprev) =3D=3D sizeof(long)) || sizeof(n->next->pprev)= =3D=3D sizeof(long long))) __compiletime_assert_52(); } while (0); do { *(= volatile typeof(n->next->pprev) *)&(n->next->pprev) =3D (&n->next); } while= (0); } while (0);=0D }=0D # 937 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_fake(struct h= list_node *n)=0D {=0D n->pprev =3D &n->next;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hlist_fake(struct hlist= _node *h)=0D {=0D return h->pprev =3D=3D &h->next;=0D }=0D # 959 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D hlist_is_singular_node(struct hlist_node *n, struct hlist_head *h)=0D {=0D return !n->next && n->pprev =3D=3D &h->first;=0D }=0D # 973 "./include/linux/list.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_move_list(struct = hlist_head *old,=0D struct hlist_head *new)=0D {=0D new->first =3D old->first;=0D if (new->first)=0D new->first->pprev =3D &new->first;=0D old->first =3D ((void *)0);=0D }=0D # 12 "./include/linux/preempt.h" 2=0D # 78 "./include/linux/preempt.h"=0D # 1 "./arch/riscv/include/generated/asm/preempt.h" 1=0D # 1 "./include/asm-generic/preempt.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int preempt_count(void)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_53(void) ; if (!((sizeof(((struct thread_info *)get_current())->preempt= _count) =3D=3D sizeof(char) || sizeof(((struct thread_info *)get_current())= ->preempt_count) =3D=3D sizeof(short) || sizeof(((struct thread_info *)get_= current())->preempt_count) =3D=3D sizeof(int) || sizeof(((struct thread_inf= o *)get_current())->preempt_count) =3D=3D sizeof(long)) || sizeof(((struct = thread_info *)get_current())->preempt_count) =3D=3D sizeof(long long))) __c= ompiletime_assert_53(); } while (0); (*(const volatile typeof( _Generic((((= struct thread_info *)get_current())->preempt_count), char: (char)0, unsigne= d char: (unsigned char)0, signed char: (signed char)0, unsigned short: (uns= igned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0= , signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: = (signed long)0, unsigned long long: (unsigned long long)0, signed long long= : (signed long long)0, default: (((struct thread_info *)get_current())->pre= empt_count))) *)&(((struct thread_info *)get_current())->preempt_count)); }= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) volatile int *preempt_count_ptr(void)=0D {=0D return &((struct thread_info *)get_current())->preempt_count;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void preempt_count_set(int pc)=0D {=0D *preempt_count_ptr() =3D pc;=0D }=0D # 35 "./include/asm-generic/preempt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void set_preempt_need_resched(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void clear_preempt_need_resched(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool test_preempt_need_resched(void)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __preempt_count_add(int val)=0D {=0D *preempt_count_ptr() +=3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __preempt_count_sub(int val)=0D {=0D *preempt_count_ptr() -=3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool __preempt_count_dec_and_test(void)=0D {=0D =0D =0D =0D =0D =0D return !--*preempt_count_ptr() && test_ti_thread_flag(((struct thread_info= *)get_current()), 3);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool should_resched(int preempt_offset)=0D {=0D return __builtin_expect(!!(preempt_count() =3D=3D preempt_offset && test_t= i_thread_flag(((struct thread_info *)get_current()), 3)), 0);=0D =0D }=0D # 2 "./arch/riscv/include/generated/asm/preempt.h" 2=0D # 79 "./include/linux/preempt.h" 2=0D # 89 "./include/linux/preempt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned char interrupt_context_level(void)=0D {=0D unsigned long pc =3D preempt_count();=0D unsigned char level =3D 0;=0D =0D level +=3D !!(pc & ((((1UL << (4))-1) << (((0 + 8) + 8) + 4))));=0D level +=3D !!(pc & ((((1UL << (4))-1) << (((0 + 8) + 8) + 4)) | (((1UL << = (4))-1) << ((0 + 8) + 8))));=0D level +=3D !!(pc & ((((1UL << (4))-1) << (((0 + 8) + 8) + 4)) | (((1UL << = (4))-1) << ((0 + 8) + 8)) | (1UL << (0 + 8))));=0D =0D return level;=0D }=0D # 309 "./include/linux/preempt.h"=0D struct preempt_notifier;=0D # 325 "./include/linux/preempt.h"=0D struct preempt_ops {=0D void (*sched_in)(struct preempt_notifier *notifier, int cpu);=0D void (*sched_out)(struct preempt_notifier *notifier,=0D struct task_struct *next);=0D };=0D # 338 "./include/linux/preempt.h"=0D struct preempt_notifier {=0D struct hlist_node link;=0D struct preempt_ops *ops;=0D };=0D =0D void preempt_notifier_inc(void);=0D void preempt_notifier_dec(void);=0D void preempt_notifier_register(struct preempt_notifier *notifier);=0D void preempt_notifier_unregister(struct preempt_notifier *notifier);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void preempt_notifier_init(s= truct preempt_notifier *notifier,=0D struct preempt_ops *ops)=0D {=0D INIT_HLIST_NODE(¬ifier->link);=0D notifier->ops =3D ops;=0D }=0D # 414 "./include/linux/preempt.h"=0D extern void migrate_disable(void);=0D extern void migrate_enable(void);=0D # 56 "./include/linux/spinlock.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/bottom_half.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D extern void __local_bh_disable_ip(unsigned long ip, unsigned int cnt);=0D # 18 "./include/linux/bottom_half.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_bh_disable(void)= =0D {=0D __local_bh_disable_ip(({ __label__ __here; __here: (unsigned long)&&__here= ; }), (2 * (1UL << (0 + 8))));=0D }=0D =0D extern void _local_bh_enable(void);=0D extern void __local_bh_enable_ip(unsigned long ip, unsigned int cnt);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_bh_enable_ip(unsi= gned long ip)=0D {=0D __local_bh_enable_ip(ip, (2 * (1UL << (0 + 8))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_bh_enable(void)=0D {=0D __local_bh_enable_ip(({ __label__ __here; __here: (unsigned long)&&__here;= }), (2 * (1UL << (0 + 8))));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool local_bh_blocked(void) = { return false; }=0D # 62 "./include/linux/spinlock.h" 2=0D # 1 "./include/linux/lockdep.h" 1=0D # 14 "./include/linux/lockdep.h"=0D # 1 "./include/linux/smp.h" 1=0D # 15 "./include/linux/smp.h"=0D # 1 "./include/linux/smp_types.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/llist.h" 1=0D # 56 "./include/linux/llist.h"=0D struct llist_head {=0D struct llist_node *first;=0D };=0D =0D struct llist_node {=0D struct llist_node *next;=0D };=0D # 71 "./include/linux/llist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_llist_head(struct = llist_head *list)=0D {=0D list->first =3D ((void *)0);=0D }=0D # 189 "./include/linux/llist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool llist_empty(const struc= t llist_head *head)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_54(void) ; if (!((sizeof(head->first) =3D=3D sizeof(char) || sizeof(hea= d->first) =3D=3D sizeof(short) || sizeof(head->first) =3D=3D sizeof(int) ||= sizeof(head->first) =3D=3D sizeof(long)) || sizeof(head->first) =3D=3D siz= eof(long long))) __compiletime_assert_54(); } while (0); (*(const volatile = typeof( _Generic((head->first), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (head->first))) *)&(head->first)); }) =3D=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct llist_node *llist_nex= t(struct llist_node *node)=0D {=0D return node->next;=0D }=0D =0D extern bool llist_add_batch(struct llist_node *new_first,=0D struct llist_node *new_last,=0D struct llist_head *head);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __llist_add_batch(struc= t llist_node *new_first,=0D struct llist_node *new_last,=0D struct llist_head *head)=0D {=0D new_last->next =3D head->first;=0D head->first =3D new_first;=0D return new_last->next =3D=3D ((void *)0);=0D }=0D # 219 "./include/linux/llist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool llist_add(struct llist_= node *new, struct llist_head *head)=0D {=0D return llist_add_batch(new, new, head);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __llist_add(struct llis= t_node *new, struct llist_head *head)=0D {=0D return __llist_add_batch(new, new, head);=0D }=0D # 237 "./include/linux/llist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct llist_node *llist_del= _all(struct llist_head *head)=0D {=0D return ({ typeof(&head->first) __ai_ptr =3D (&head->first); do { } while (= 0); instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(_= _ai_ptr)) _x_ =3D (((void *)0)); (__typeof__(*(__ai_ptr))) ({ __typeof__((_= _ai_ptr)) __ptr =3D ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof= __(*((__ai_ptr))) __ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __v= olatile__ ( " amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) = : "r" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.= d.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memor= y"); break; default: do { __attribute__((__noreturn__)) extern void __compi= letime_assert_55(void) ; if (!(!(1))) __compiletime_assert_55(); } while (0= ); } __ret; }); }); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct llist_node *__llist_d= el_all(struct llist_head *head)=0D {=0D struct llist_node *first =3D head->first;=0D =0D head->first =3D ((void *)0);=0D return first;=0D }=0D =0D extern struct llist_node *llist_del_first(struct llist_head *head);=0D =0D struct llist_node *llist_reverse_order(struct llist_node *head);=0D # 6 "./include/linux/smp_types.h" 2=0D =0D enum {=0D CSD_FLAG_LOCK =3D 0x01,=0D =0D IRQ_WORK_PENDING =3D 0x01,=0D IRQ_WORK_BUSY =3D 0x02,=0D IRQ_WORK_LAZY =3D 0x04,=0D IRQ_WORK_HARD_IRQ =3D 0x08,=0D =0D IRQ_WORK_CLAIMED =3D (IRQ_WORK_PENDING | IRQ_WORK_BUSY),=0D =0D CSD_TYPE_ASYNC =3D 0x00,=0D CSD_TYPE_SYNC =3D 0x10,=0D CSD_TYPE_IRQ_WORK =3D 0x20,=0D CSD_TYPE_TTWU =3D 0x30,=0D =0D CSD_FLAG_TYPE_MASK =3D 0xF0,=0D };=0D # 58 "./include/linux/smp_types.h"=0D struct __call_single_node {=0D struct llist_node llist;=0D union {=0D unsigned int u_flags;=0D atomic_t a_flags;=0D };=0D =0D u16 src, dst;=0D =0D };=0D # 16 "./include/linux/smp.h" 2=0D =0D typedef void (*smp_call_func_t)(void *info);=0D typedef bool (*smp_cond_func_t)(int cpu, void *info);=0D =0D =0D =0D =0D struct __call_single_data {=0D struct __call_single_node node;=0D smp_call_func_t func;=0D void *info;=0D };=0D =0D =0D =0D =0D =0D typedef struct __call_single_data call_single_data_t=0D __attribute__((__aligned__(sizeof(struct __call_single_data))));=0D # 45 "./include/linux/smp.h"=0D extern void __smp_call_single_queue(int cpu, struct llist_node *node);=0D =0D =0D extern unsigned int total_cpus;=0D =0D int smp_call_function_single(int cpuid, smp_call_func_t func, void *info,=0D int wait);=0D =0D void on_each_cpu_cond_mask(smp_cond_func_t cond_func, smp_call_func_t func,= =0D void *info, bool wait, const struct cpumask *mask);=0D =0D int smp_call_function_single_async(int cpu, struct __call_single_data *csd)= ;=0D =0D =0D =0D =0D =0D void panic_smp_self_stop(void);=0D void nmi_panic_self_stop(struct pt_regs *regs);=0D void crash_smp_send_stop(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void on_each_cpu(smp_call_fu= nc_t func, void *info, int wait)=0D {=0D on_each_cpu_cond_mask(((void *)0), func, info, wait, ((const struct cpumas= k *)&__cpu_online_mask));=0D }=0D # 90 "./include/linux/smp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void on_each_cpu_mask(const = struct cpumask *mask,=0D smp_call_func_t func, void *info, bool wait)=0D {=0D on_each_cpu_cond_mask(((void *)0), func, info, wait, mask);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void on_each_cpu_cond(smp_co= nd_func_t cond_func,=0D smp_call_func_t func, void *info, bool wait)=0D {=0D on_each_cpu_cond_mask(cond_func, func, info, wait, ((const struct cpumask = *)&__cpu_online_mask));=0D }=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/smp.h" 1=0D # 10 "./arch/riscv/include/asm/smp.h"=0D # 1 "./include/linux/irqreturn.h" 1=0D # 11 "./include/linux/irqreturn.h"=0D enum irqreturn {=0D IRQ_NONE =3D (0 << 0),=0D IRQ_HANDLED =3D (1 << 0),=0D IRQ_WAKE_THREAD =3D (1 << 1),=0D };=0D =0D typedef enum irqreturn irqreturn_t;=0D # 11 "./arch/riscv/include/asm/smp.h" 2=0D =0D =0D =0D =0D struct seq_file;=0D extern unsigned long boot_cpu_hartid;=0D =0D struct riscv_ipi_ops {=0D void (*ipi_inject)(const struct cpumask *target);=0D void (*ipi_clear)(void);=0D };=0D =0D =0D =0D =0D =0D extern unsigned long __cpuid_to_hartid_map[32];=0D =0D =0D =0D void show_ipi_stats(struct seq_file *p, int prec);=0D =0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) setup_smp(void);=0D =0D =0D void handle_IPI(struct pt_regs *regs);=0D =0D =0D void arch_send_call_function_ipi_mask(struct cpumask *mask);=0D =0D =0D void arch_send_call_function_single_ipi(int cpu);=0D =0D int riscv_hartid_to_cpuid(int hartid);=0D =0D =0D void riscv_set_ipi_ops(const struct riscv_ipi_ops *ops);=0D =0D =0D void riscv_clear_ipi(void);=0D =0D =0D void smp_callin(void);=0D # 63 "./arch/riscv/include/asm/smp.h"=0D int __cpu_disable(void);=0D void __cpu_die(unsigned int cpu);=0D # 96 "./arch/riscv/include/asm/smp.h"=0D bool cpu_has_hotplug(unsigned int cpu);=0D # 114 "./include/linux/smp.h" 2=0D # 123 "./include/linux/smp.h"=0D extern void smp_send_stop(void);=0D =0D =0D =0D =0D extern void smp_send_reschedule(int cpu);=0D =0D =0D =0D =0D =0D extern void smp_prepare_cpus(unsigned int max_cpus);=0D =0D =0D =0D =0D extern int __cpu_up(unsigned int cpunum, struct task_struct *tidle);=0D =0D =0D =0D =0D extern void smp_cpus_done(unsigned int max_cpus);=0D =0D =0D =0D =0D void smp_call_function(smp_call_func_t func, void *info, int wait);=0D void smp_call_function_many(const struct cpumask *mask,=0D smp_call_func_t func, void *info, bool wait);=0D =0D int smp_call_function_any(const struct cpumask *mask,=0D smp_call_func_t func, void *info, int wait);=0D =0D void kick_all_cpus_sync(void);=0D void wake_up_all_idle_cpus(void);=0D =0D =0D =0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) call_function_init(void);=0D void generic_smp_call_function_single_interrupt(void);=0D =0D =0D =0D =0D =0D =0D =0D void smp_prepare_boot_cpu(void);=0D =0D extern unsigned int setup_max_cpus;=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) setup_nr_cpu_ids(void);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) smp_init(void);=0D =0D extern int __boot_cpu_id;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_boot_cpu_id(void)=0D {=0D return __boot_cpu_id;=0D }=0D # 274 "./include/linux/smp.h"=0D extern void arch_disable_smp_support(void);=0D =0D extern void arch_thaw_secondary_cpus_begin(void);=0D extern void arch_thaw_secondary_cpus_end(void);=0D =0D void smp_setup_processor_id(void);=0D =0D int smp_call_on_cpu(unsigned int cpu, int (*func)(void *), void *par,=0D bool phys);=0D =0D =0D int smpcfd_prepare_cpu(unsigned int cpu);=0D int smpcfd_dead_cpu(unsigned int cpu);=0D int smpcfd_dying_cpu(unsigned int cpu);=0D # 15 "./include/linux/lockdep.h" 2=0D # 1 "./arch/riscv/include/generated/asm/percpu.h" 1=0D # 16 "./include/linux/lockdep.h" 2=0D =0D struct task_struct;=0D =0D =0D extern int prove_locking;=0D extern int lock_stat;=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/debug_locks.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct task_struct;=0D =0D extern int debug_locks ;=0D extern int debug_locks_silent ;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int __debug_locks_off(void)=0D {=0D return ({ typeof(&debug_locks) __ai_ptr =3D (&debug_locks); do { } while (= 0); instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(_= _ai_ptr)) _x_ =3D (0); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) = __ptr =3D ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai= _ptr))) __ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ = ( " amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__n= ew) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0,= %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break= ; default: do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_56(void) ; if (!(!(1))) __compiletime_assert_56(); } while (0); } __ret= ; }); }); });=0D }=0D =0D =0D =0D =0D extern int debug_locks_off(void);=0D # 51 "./include/linux/debug_locks.h"=0D extern void debug_show_all_locks(void);=0D extern void debug_show_held_locks(struct task_struct *task);=0D extern void debug_check_no_locks_freed(const void *from, unsigned long len)= ;=0D extern void debug_check_no_locks_held(void);=0D # 28 "./include/linux/lockdep.h" 2=0D # 1 "./include/linux/stacktrace.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/errno.h" 1=0D # 7 "./include/linux/stacktrace.h" 2=0D =0D struct task_struct;=0D struct pt_regs;=0D # 21 "./include/linux/stacktrace.h"=0D typedef bool (*stack_trace_consume_fn)(void *cookie, unsigned long addr);=0D # 38 "./include/linux/stacktrace.h"=0D void arch_stack_walk(stack_trace_consume_fn consume_entry, void *cookie,=0D struct task_struct *task, struct pt_regs *regs);=0D # 58 "./include/linux/stacktrace.h"=0D int arch_stack_walk_reliable(stack_trace_consume_fn consume_entry, void *co= okie,=0D struct task_struct *task);=0D =0D void arch_stack_walk_user(stack_trace_consume_fn consume_entry, void *cooki= e,=0D const struct pt_regs *regs);=0D =0D =0D =0D void stack_trace_print(const unsigned long *trace, unsigned int nr_entries,= =0D int spaces);=0D int stack_trace_snprint(char *buf, size_t size, const unsigned long *entrie= s,=0D unsigned int nr_entries, int spaces);=0D unsigned int stack_trace_save(unsigned long *store, unsigned int size,=0D unsigned int skipnr);=0D unsigned int stack_trace_save_tsk(struct task_struct *task,=0D unsigned long *store, unsigned int size,=0D unsigned int skipnr);=0D unsigned int stack_trace_save_regs(struct pt_regs *regs, unsigned long *sto= re,=0D unsigned int size, unsigned int skipnr);=0D unsigned int stack_trace_save_user(unsigned long *store, unsigned int size)= ;=0D unsigned int filter_irq_stacks(unsigned long *entries, unsigned int nr_entr= ies);=0D # 103 "./include/linux/stacktrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int stack_trace_save_tsk_rel= iable(struct task_struct *tsk,=0D unsigned long *store,=0D unsigned int size)=0D {=0D return -38;=0D }=0D # 29 "./include/linux/lockdep.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lockdep_copy_map(struct= lockdep_map *to,=0D struct lockdep_map *from)=0D {=0D int i;=0D =0D *to =3D *from;=0D # 44 "./include/linux/lockdep.h"=0D for (i =3D 0; i < 2; i++)=0D to->class_cache[i] =3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D struct lock_list {=0D struct list_head entry;=0D struct lock_class *class;=0D struct lock_class *links_to;=0D const struct lock_trace *trace;=0D u16 distance;=0D =0D u8 dep;=0D =0D u8 only_xr;=0D =0D =0D =0D =0D =0D struct lock_list *parent;=0D };=0D # 79 "./include/linux/lockdep.h"=0D struct lock_chain {=0D =0D unsigned int irq_context : 2,=0D depth : 6,=0D base : 24;=0D =0D struct hlist_node entry;=0D u64 chain_key;=0D };=0D =0D =0D =0D =0D =0D struct held_lock {=0D # 108 "./include/linux/lockdep.h"=0D u64 prev_chain_key;=0D unsigned long acquire_ip;=0D struct lockdep_map *instance;=0D struct lockdep_map *nest_lock;=0D # 121 "./include/linux/lockdep.h"=0D unsigned int class_idx:13;=0D # 135 "./include/linux/lockdep.h"=0D unsigned int irq_context:2;=0D unsigned int trylock:1;=0D =0D unsigned int read:2;=0D unsigned int check:1;=0D unsigned int hardirqs_off:1;=0D unsigned int references:12;=0D unsigned int pin_count;=0D };=0D =0D =0D =0D =0D extern void lockdep_init(void);=0D extern void lockdep_reset(void);=0D extern void lockdep_reset_lock(struct lockdep_map *lock);=0D extern void lockdep_free_key_range(void *start, unsigned long size);=0D extern void lockdep_sys_exit(void);=0D extern void lockdep_set_selftest_task(struct task_struct *task);=0D =0D extern void lockdep_init_task(struct task_struct *task);=0D # 179 "./include/linux/lockdep.h"=0D extern void lockdep_register_key(struct lock_class_key *key);=0D extern void lockdep_unregister_key(struct lock_class_key *key);=0D =0D =0D =0D =0D =0D =0D =0D extern void lockdep_init_map_type(struct lockdep_map *lock, const char *nam= e,=0D struct lock_class_key *key, int subclass, u8 inner, u8 outer, u8 lock_type= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D lockdep_init_map_waits(struct lockdep_map *lock, const char *name,=0D struct lock_class_key *key, int subclass, u8 inner, u8 outer)=0D {=0D lockdep_init_map_type(lock, name, key, subclass, inner, LD_WAIT_INV, LD_LO= CK_NORMAL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D lockdep_init_map_wait(struct lockdep_map *lock, const char *name,=0D struct lock_class_key *key, int subclass, u8 inner)=0D {=0D lockdep_init_map_waits(lock, name, key, subclass, inner, LD_WAIT_INV);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lockdep_init_map(struct= lockdep_map *lock, const char *name,=0D struct lock_class_key *key, int subclass)=0D {=0D lockdep_init_map_wait(lock, name, key, subclass, LD_WAIT_INV);=0D }=0D # 245 "./include/linux/lockdep.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lockdep_match_key(struct= lockdep_map *lock,=0D struct lock_class_key *key)=0D {=0D return lock->key =3D=3D key;=0D }=0D # 265 "./include/linux/lockdep.h"=0D extern void lock_acquire(struct lockdep_map *lock, unsigned int subclass,=0D int trylock, int read, int check,=0D struct lockdep_map *nest_lock, unsigned long ip);=0D =0D extern void lock_release(struct lockdep_map *lock, unsigned long ip);=0D # 279 "./include/linux/lockdep.h"=0D extern int lock_is_held_type(const struct lockdep_map *lock, int read);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lock_is_held(const struc= t lockdep_map *lock)=0D {=0D return lock_is_held_type(lock, -1);=0D }=0D =0D =0D =0D =0D extern void lock_set_class(struct lockdep_map *lock, const char *name,=0D struct lock_class_key *key, unsigned int subclass,=0D unsigned long ip);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lock_set_subclass(struc= t lockdep_map *lock,=0D unsigned int subclass, unsigned long ip)=0D {=0D lock_set_class(lock, lock->name, lock->key, subclass, ip);=0D }=0D =0D extern void lock_downgrade(struct lockdep_map *lock, unsigned long ip);=0D =0D =0D =0D extern struct pin_cookie lock_pin_lock(struct lockdep_map *lock);=0D extern void lock_repin_lock(struct lockdep_map *lock, struct pin_cookie);=0D extern void lock_unpin_lock(struct lockdep_map *lock, struct pin_cookie);=0D # 428 "./include/linux/lockdep.h"=0D enum xhlock_context_t {=0D XHLOCK_HARD,=0D XHLOCK_SOFT,=0D XHLOCK_CTX_NR,=0D };=0D # 442 "./include/linux/lockdep.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lockdep_invariant_state= (bool force) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lockdep_free_task(struc= t task_struct *task) {}=0D # 487 "./include/linux/lockdep.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void print_irqtrace_events(s= truct task_struct *curr)=0D {=0D }=0D # 500 "./include/linux/lockdep.h"=0D extern bool read_lock_is_recursive(void);=0D # 653 "./include/linux/lockdep.h"=0D void lockdep_rcu_suspicious(const char *file, const int line, const char *s= );=0D # 63 "./include/linux/spinlock.h" 2=0D =0D # 1 "./arch/riscv/include/asm/mmiowb.h" 1=0D # 13 "./arch/riscv/include/asm/mmiowb.h"=0D # 1 "./include/asm-generic/mmiowb.h" 1=0D # 23 "./include/asm-generic/mmiowb.h"=0D # 1 "./include/asm-generic/mmiowb_types.h" 1=0D =0D =0D =0D =0D =0D =0D struct mmiowb_state {=0D u16 nesting_count;=0D u16 mmiowb_pending;=0D };=0D # 24 "./include/asm-generic/mmiowb.h" 2=0D =0D =0D # 1 "./arch/riscv/include/generated/asm/percpu.h" 1=0D # 27 "./include/asm-generic/mmiowb.h" 2=0D =0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct mmiow= b_state) __mmiowb_state;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmiowb_set_pending(void= )=0D {=0D struct mmiowb_state *ms =3D ({ do { const void *__vpp_verify =3D (typeof((= &__mmiowb_state) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&__mmiowb_state)) *)(= &__mmiowb_state)); (typeof((typeof(*(&__mmiowb_state)) *)(&__mmiowb_state))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); });=0D =0D if (__builtin_expect(!!(ms->nesting_count), 1))=0D ms->mmiowb_pending =3D ms->nesting_count;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmiowb_spin_lock(void)= =0D {=0D struct mmiowb_state *ms =3D ({ do { const void *__vpp_verify =3D (typeof((= &__mmiowb_state) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&__mmiowb_state)) *)(= &__mmiowb_state)); (typeof((typeof(*(&__mmiowb_state)) *)(&__mmiowb_state))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); });=0D ms->nesting_count++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmiowb_spin_unlock(void= )=0D {=0D struct mmiowb_state *ms =3D ({ do { const void *__vpp_verify =3D (typeof((= &__mmiowb_state) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&__mmiowb_state)) *)(= &__mmiowb_state)); (typeof((typeof(*(&__mmiowb_state)) *)(&__mmiowb_state))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); });=0D =0D if (__builtin_expect(!!(ms->mmiowb_pending), 0)) {=0D ms->mmiowb_pending =3D 0;=0D __asm__ __volatile__ ("fence o,w" : : : "memory");;=0D }=0D =0D ms->nesting_count--;=0D }=0D # 14 "./arch/riscv/include/asm/mmiowb.h" 2=0D # 65 "./include/linux/spinlock.h" 2=0D # 87 "./include/linux/spinlock.h"=0D # 1 "./include/linux/spinlock_types.h" 1=0D # 17 "./include/linux/spinlock_types.h"=0D typedef struct spinlock {=0D union {=0D struct raw_spinlock rlock;=0D =0D =0D =0D struct {=0D u8 __padding[(__builtin_offsetof(struct raw_spinlock, dep_map))];=0D struct lockdep_map dep_map;=0D };=0D =0D };=0D } spinlock_t;=0D # 74 "./include/linux/spinlock_types.h"=0D # 1 "./include/linux/rwlock_types.h" 1=0D # 25 "./include/linux/rwlock_types.h"=0D typedef struct {=0D arch_rwlock_t raw_lock;=0D =0D unsigned int magic, owner_cpu;=0D void *owner;=0D =0D =0D struct lockdep_map dep_map;=0D =0D } rwlock_t;=0D # 75 "./include/linux/spinlock_types.h" 2=0D # 88 "./include/linux/spinlock.h" 2=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/spinlock.h" 1=0D # 22 "./arch/riscv/include/asm/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_spin_unlock(arch_s= pinlock_t *lock)=0D {=0D do { do { } while (0); do { do { __attribute__((__noreturn__)) extern void= __compiletime_assert_57(void) ; if (!((sizeof(*&lock->lock) =3D=3D sizeof(= char) || sizeof(*&lock->lock) =3D=3D sizeof(short) || sizeof(*&lock->lock) = =3D=3D sizeof(int) || sizeof(*&lock->lock) =3D=3D sizeof(long)))) __compile= time_assert_57(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" = : : : "memory"); do { do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_58(void) ; if (!((sizeof(*&lock->lock) =3D=3D sizeof(char) |= | sizeof(*&lock->lock) =3D=3D sizeof(short) || sizeof(*&lock->lock) =3D=3D = sizeof(int) || sizeof(*&lock->lock) =3D=3D sizeof(long)) || sizeof(*&lock->= lock) =3D=3D sizeof(long long))) __compiletime_assert_58(); } while (0); do= { *(volatile typeof(*&lock->lock) *)&(*&lock->lock) =3D (0); } while (0); = } while (0); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_spin_trylock(arch_s= pinlock_t *lock)=0D {=0D int tmp =3D 1, busy;=0D =0D __asm__ __volatile__ (=0D " amoswap.w %0, %2, %1\n"=0D "\tfence r , rw\n"=0D : "=3Dr" (busy), "+A" (lock->lock)=0D : "r" (tmp)=0D : "memory");=0D =0D return !busy;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_spin_lock(arch_spi= nlock_t *lock)=0D {=0D while (1) {=0D if ((({ do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_59(void) ; if (!((sizeof((lock)->lock) =3D=3D sizeof(char) || sizeof((lo= ck)->lock) =3D=3D sizeof(short) || sizeof((lock)->lock) =3D=3D sizeof(int) = || sizeof((lock)->lock) =3D=3D sizeof(long)) || sizeof((lock)->lock) =3D=3D= sizeof(long long))) __compiletime_assert_59(); } while (0); (*(const volat= ile typeof( _Generic(((lock)->lock), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: ((lock)->lock))) *)&((lock)->lock)); }) !=3D 0))=0D continue;=0D =0D if (arch_spin_trylock(lock))=0D break;=0D }=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_read_lock(arch_rwl= ock_t *lock)=0D {=0D int tmp;=0D =0D __asm__ __volatile__(=0D "1: lr.w %1, %0\n"=0D " bltz %1, 1b\n"=0D " addi %1, %1, 1\n"=0D " sc.w %1, %1, %0\n"=0D " bnez %1, 1b\n"=0D "\tfence r , rw\n"=0D : "+A" (lock->lock), "=3D&r" (tmp)=0D :: "memory");=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_write_lock(arch_rw= lock_t *lock)=0D {=0D int tmp;=0D =0D __asm__ __volatile__(=0D "1: lr.w %1, %0\n"=0D " bnez %1, 1b\n"=0D " li %1, -1\n"=0D " sc.w %1, %1, %0\n"=0D " bnez %1, 1b\n"=0D "\tfence r , rw\n"=0D : "+A" (lock->lock), "=3D&r" (tmp)=0D :: "memory");=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_read_trylock(arch_r= wlock_t *lock)=0D {=0D int busy;=0D =0D __asm__ __volatile__(=0D "1: lr.w %1, %0\n"=0D " bltz %1, 1f\n"=0D " addi %1, %1, 1\n"=0D " sc.w %1, %1, %0\n"=0D " bnez %1, 1b\n"=0D "\tfence r , rw\n"=0D "1:\n"=0D : "+A" (lock->lock), "=3D&r" (busy)=0D :: "memory");=0D =0D return !busy;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_write_trylock(arch_= rwlock_t *lock)=0D {=0D int busy;=0D =0D __asm__ __volatile__(=0D "1: lr.w %1, %0\n"=0D " bnez %1, 1f\n"=0D " li %1, -1\n"=0D " sc.w %1, %1, %0\n"=0D " bnez %1, 1b\n"=0D "\tfence r , rw\n"=0D "1:\n"=0D : "+A" (lock->lock), "=3D&r" (busy)=0D :: "memory");=0D =0D return !busy;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_read_unlock(arch_r= wlock_t *lock)=0D {=0D __asm__ __volatile__(=0D "\tfence rw, w\n"=0D " amoadd.w x0, %1, %0\n"=0D : "+A" (lock->lock)=0D : "r" (-1)=0D : "memory");=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_write_unlock(arch_= rwlock_t *lock)=0D {=0D do { do { } while (0); do { do { __attribute__((__noreturn__)) extern void= __compiletime_assert_60(void) ; if (!((sizeof(*&lock->lock) =3D=3D sizeof(= char) || sizeof(*&lock->lock) =3D=3D sizeof(short) || sizeof(*&lock->lock) = =3D=3D sizeof(int) || sizeof(*&lock->lock) =3D=3D sizeof(long)))) __compile= time_assert_60(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" = : : : "memory"); do { do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_61(void) ; if (!((sizeof(*&lock->lock) =3D=3D sizeof(char) |= | sizeof(*&lock->lock) =3D=3D sizeof(short) || sizeof(*&lock->lock) =3D=3D = sizeof(int) || sizeof(*&lock->lock) =3D=3D sizeof(long)) || sizeof(*&lock->= lock) =3D=3D sizeof(long long))) __compiletime_assert_61(); } while (0); do= { *(volatile typeof(*&lock->lock) *)&(*&lock->lock) =3D (0); } while (0); = } while (0); } while (0); } while (0);=0D }=0D # 94 "./include/linux/spinlock.h" 2=0D =0D =0D =0D =0D =0D extern void __raw_spin_lock_init(raw_spinlock_t *lock, const char *name,= =0D struct lock_class_key *key, short inner);=0D # 178 "./include/linux/spinlock.h"=0D extern void do_raw_spin_lock(raw_spinlock_t *lock) ;=0D extern int do_raw_spin_trylock(raw_spinlock_t *lock);=0D extern void do_raw_spin_unlock(raw_spinlock_t *lock) ;=0D # 303 "./include/linux/spinlock.h"=0D # 1 "./include/linux/rwlock.h" 1=0D # 18 "./include/linux/rwlock.h"=0D extern void __rwlock_init(rwlock_t *lock, const char *name,=0D struct lock_class_key *key);=0D # 32 "./include/linux/rwlock.h"=0D extern void do_raw_read_lock(rwlock_t *lock) ;=0D extern int do_raw_read_trylock(rwlock_t *lock);=0D extern void do_raw_read_unlock(rwlock_t *lock) ;=0D extern void do_raw_write_lock(rwlock_t *lock) ;=0D extern int do_raw_write_trylock(rwlock_t *lock);=0D extern void do_raw_write_unlock(rwlock_t *lock) ;=0D # 304 "./include/linux/spinlock.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/spinlock_api_smp.h" 1=0D # 18 "./include/linux/spinlock_api_smp.h"=0D int in_lock_functions(unsigned long addr);=0D =0D =0D =0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_lock(raw_spin= lock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_lock_nested(r= aw_spinlock_t *lock, int subclass)=0D ;=0D void __attribute__((__section__(".spinlock.text")))=0D _raw_spin_lock_nest_lock(raw_spinlock_t *lock, struct lockdep_map *map)=0D ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_lock_bh(raw_s= pinlock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_lock_irq(raw_= spinlock_t *lock)=0D ;=0D =0D unsigned long __attribute__((__section__(".spinlock.text"))) _raw_spin_lock= _irqsave(raw_spinlock_t *lock)=0D ;=0D unsigned long __attribute__((__section__(".spinlock.text")))=0D _raw_spin_lock_irqsave_nested(raw_spinlock_t *lock, int subclass)=0D ;=0D int __attribute__((__section__(".spinlock.text"))) _raw_spin_trylock(raw_sp= inlock_t *lock);=0D int __attribute__((__section__(".spinlock.text"))) _raw_spin_trylock_bh(raw= _spinlock_t *lock);=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_unlock(raw_sp= inlock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_unlock_bh(raw= _spinlock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_spin_unlock_irq(ra= w_spinlock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text")))=0D _raw_spin_unlock_irqrestore(raw_spinlock_t *lock, unsigned long flags)=0D ;=0D # 86 "./include/linux/spinlock_api_smp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __raw_spin_trylock(raw_s= pinlock_t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D if (do_raw_spin_trylock(lock)) {=0D lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__bu= iltin_return_address(0));=0D return 1;=0D }=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D return 0;=0D }=0D # 104 "./include/linux/spinlock_api_smp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __raw_spin_loc= k_irqsave(raw_spinlock_t *lock)=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_spin_lock(lock);=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_lock_irq(raw= _spinlock_t *lock)=0D {=0D do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_irq_disable(= ); if (!was_disabled) trace_hardirqs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_spin_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_lock_bh(raw_= spinlock_t *lock)=0D {=0D __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1= UL << (0 + 8))) + (1UL << 0)));=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_spin_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_lock(raw_spi= nlock_t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_spin_lock(lock);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_unlock(raw_s= pinlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_spin_unlock(lock);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_unlock_irqre= store(raw_spinlock_t *lock,=0D unsigned long flags)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_spin_unlock(lock);=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_unlock_irq(r= aw_spinlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_spin_unlock(lock);=0D do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_spin_unlock_bh(ra= w_spinlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_spin_unlock(lock);=0D __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1U= L << (0 + 8))) + (1UL << 0)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __raw_spin_trylock_bh(ra= w_spinlock_t *lock)=0D {=0D __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1= UL << (0 + 8))) + (1UL << 0)));=0D if (do_raw_spin_trylock(lock)) {=0D lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__bu= iltin_return_address(0));=0D return 1;=0D }=0D __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1U= L << (0 + 8))) + (1UL << 0)));=0D return 0;=0D }=0D =0D =0D =0D =0D # 1 "./include/linux/rwlock_api_smp.h" 1=0D # 18 "./include/linux/rwlock_api_smp.h"=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_lock(rwlock_t= *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_lock(rwlock_= t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_lock_nested(= rwlock_t *lock, int subclass) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_lock_bh(rwloc= k_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_lock_bh(rwlo= ck_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_lock_irq(rwlo= ck_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_lock_irq(rwl= ock_t *lock) ;=0D unsigned long __attribute__((__section__(".spinlock.text"))) _raw_read_lock= _irqsave(rwlock_t *lock)=0D ;=0D unsigned long __attribute__((__section__(".spinlock.text"))) _raw_write_loc= k_irqsave(rwlock_t *lock)=0D ;=0D int __attribute__((__section__(".spinlock.text"))) _raw_read_trylock(rwlock= _t *lock);=0D int __attribute__((__section__(".spinlock.text"))) _raw_write_trylock(rwloc= k_t *lock);=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_unlock(rwlock= _t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_unlock(rwloc= k_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_unlock_bh(rwl= ock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_unlock_bh(rw= lock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_read_unlock_irq(rw= lock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text"))) _raw_write_unlock_irq(r= wlock_t *lock) ;=0D void __attribute__((__section__(".spinlock.text")))=0D _raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)=0D ;=0D void __attribute__((__section__(".spinlock.text")))=0D _raw_write_unlock_irqrestore(rwlock_t *lock, unsigned long flags)=0D ;=0D # 118 "./include/linux/rwlock_api_smp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __raw_read_trylock(rwloc= k_t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D if (do_raw_read_trylock(lock)) {=0D do { if (read_lock_is_recursive()) lock_acquire(&lock->dep_map, 0, 1, 2, = 1, ((void *)0), (unsigned long)__builtin_return_address(0)); else lock_acqu= ire(&lock->dep_map, 0, 1, 1, 1, ((void *)0), (unsigned long)__builtin_retur= n_address(0)); } while (0);=0D return 1;=0D }=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __raw_write_trylock(rwlo= ck_t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D if (do_raw_write_trylock(lock)) {=0D lock_acquire(&lock->dep_map, 0, 1, 0, 1, ((void *)0), (unsigned long)__bu= iltin_return_address(0));=0D return 1;=0D }=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D return 0;=0D }=0D # 147 "./include/linux/rwlock_api_smp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_lock(rwlock_= t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D do { if (read_lock_is_recursive()) lock_acquire(&lock->dep_map, 0, 0, 2, 1= , ((void *)0), (unsigned long)__builtin_return_address(0)); else lock_acqui= re(&lock->dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__builtin_return= _address(0)); } while (0);=0D do_raw_read_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __raw_read_loc= k_irqsave(rwlock_t *lock)=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D do { if (read_lock_is_recursive()) lock_acquire(&lock->dep_map, 0, 0, 2, 1= , ((void *)0), (unsigned long)__builtin_return_address(0)); else lock_acqui= re(&lock->dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__builtin_return= _address(0)); } while (0);=0D do_raw_read_lock(lock);=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_lock_irq(rwl= ock_t *lock)=0D {=0D do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_irq_disable(= ); if (!was_disabled) trace_hardirqs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D do { if (read_lock_is_recursive()) lock_acquire(&lock->dep_map, 0, 0, 2, 1= , ((void *)0), (unsigned long)__builtin_return_address(0)); else lock_acqui= re(&lock->dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__builtin_return= _address(0)); } while (0);=0D do_raw_read_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_lock_bh(rwlo= ck_t *lock)=0D {=0D __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1= UL << (0 + 8))) + (1UL << 0)));=0D do { if (read_lock_is_recursive()) lock_acquire(&lock->dep_map, 0, 0, 2, 1= , ((void *)0), (unsigned long)__builtin_return_address(0)); else lock_acqui= re(&lock->dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__builtin_return= _address(0)); } while (0);=0D do_raw_read_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __raw_write_lo= ck_irqsave(rwlock_t *lock)=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_write_lock(lock);=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_lock_irq(rw= lock_t *lock)=0D {=0D do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_irq_disable(= ); if (!was_disabled) trace_hardirqs_off(); } while (0);=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_write_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_lock_bh(rwl= ock_t *lock)=0D {=0D __local_bh_disable_ip((unsigned long)__builtin_return_address(0), ((2 * (1= UL << (0 + 8))) + (1UL << 0)));=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_write_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_lock(rwlock= _t *lock)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D do_raw_write_lock(lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_lock_nested= (rwlock_t *lock, int subclass)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D lock_acquire(&lock->dep_map, subclass, 0, 0, 1, ((void *)0), (unsigned lon= g)__builtin_return_address(0));=0D do_raw_write_lock(lock);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_unlock(rwlo= ck_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_write_unlock(lock);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_unlock(rwloc= k_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_read_unlock(lock);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __raw_read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_read_unlock(lock);=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_unlock_irq(r= wlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_read_unlock(lock);=0D do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_read_unlock_bh(rw= lock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_read_unlock(lock);=0D __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1U= L << (0 + 8))) + (1UL << 0)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_unlock_irqr= estore(rwlock_t *lock,=0D unsigned long flags)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_write_unlock(lock);=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_unlock_irq(= rwlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_write_unlock(lock);=0D do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_write_unlock_bh(r= wlock_t *lock)=0D {=0D lock_release(&lock->dep_map, (unsigned long)__builtin_return_address(0));= =0D do_raw_write_unlock(lock);=0D __local_bh_enable_ip((unsigned long)__builtin_return_address(0), ((2 * (1U= L << (0 + 8))) + (1UL << 0)));=0D }=0D # 184 "./include/linux/spinlock_api_smp.h" 2=0D # 311 "./include/linux/spinlock.h" 2=0D # 322 "./include/linux/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) raw_spinlock_t *spinlock_check(spinlock_t *lock)=0D {=0D return &lock->rlock;=0D }=0D # 347 "./include/linux/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_lock(spinlock_t *lock)=0D {=0D _raw_spin_lock(&lock->rlock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_lock_bh(spinlock_t *lock)=0D {=0D _raw_spin_lock_bh(&lock->rlock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int spin_trylock(spinlock_t *lock)=0D {=0D return (_raw_spin_trylock(&lock->rlock));=0D }=0D # 372 "./include/linux/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_lock_irq(spinlock_t *lock)=0D {=0D _raw_spin_lock_irq(&lock->rlock);=0D }=0D # 387 "./include/linux/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_unlock(spinlock_t *lock)=0D {=0D _raw_spin_unlock(&lock->rlock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_unlock_bh(spinlock_t *lock)=0D {=0D _raw_spin_unlock_bh(&lock->rlock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_unlock_irq(spinlock_t *lock)=0D {=0D _raw_spin_unlock_irq(&lock->rlock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)=0D {=0D do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); _raw_spin_unlock_irqrestore(&lock->rlock, flags); } = while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int spin_trylock_bh(spinlock_t *lock)=0D {=0D return (_raw_spin_trylock_bh(&lock->rlock));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int spin_trylock_irq(spinlock_t *lock)=0D {=0D return ({ do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_ir= q_disable(); if (!was_disabled) trace_hardirqs_off(); } while (0); (_raw_sp= in_trylock(&lock->rlock)) ? 1 : ({ do { trace_hardirqs_on(); arch_local_irq= _enable(); } while (0); 0; }); });=0D }=0D # 440 "./include/linux/spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int spin_is_locked(spinlock_t *lock)=0D {=0D return (({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_62(void) ; if (!((sizeof((&(&lock->rlock)->raw_lock)->lock) =3D=3D siz= eof(char) || sizeof((&(&lock->rlock)->raw_lock)->lock) =3D=3D sizeof(short)= || sizeof((&(&lock->rlock)->raw_lock)->lock) =3D=3D sizeof(int) || sizeof(= (&(&lock->rlock)->raw_lock)->lock) =3D=3D sizeof(long)) || sizeof((&(&lock-= >rlock)->raw_lock)->lock) =3D=3D sizeof(long long))) __compiletime_assert_6= 2(); } while (0); (*(const volatile typeof( _Generic(((&(&lock->rlock)->raw= _lock)->lock), char: (char)0, unsigned char: (unsigned char)0, signed char:= (signed char)0, unsigned short: (unsigned short)0, signed short: (signed s= hort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned = long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (u= nsigned long long)0, signed long long: (signed long long)0, default: ((&(&l= ock->rlock)->raw_lock)->lock))) *)&((&(&lock->rlock)->raw_lock)->lock)); })= !=3D 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int spin_is_contended(spinlock_t *lock)=0D {=0D return (((void)(&lock->rlock), 0));=0D }=0D # 469 "./include/linux/spinlock.h"=0D extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);=0D =0D =0D =0D extern int _atomic_dec_and_lock_irqsave(atomic_t *atomic, spinlock_t *lock,= =0D unsigned long *flags);=0D =0D =0D =0D int __alloc_bucket_spinlocks(spinlock_t **locks, unsigned int *lock_mask,=0D size_t max_size, unsigned int cpu_mult,=0D gfp_t gfp, const char *name,=0D struct lock_class_key *key);=0D # 493 "./include/linux/spinlock.h"=0D void free_bucket_spinlocks(spinlock_t *locks);=0D # 17 "./include/linux/kref.h" 2=0D # 1 "./include/linux/refcount.h" 1=0D # 101 "./include/linux/refcount.h"=0D struct mutex;=0D # 111 "./include/linux/refcount.h"=0D typedef struct refcount_struct {=0D atomic_t refs;=0D } refcount_t;=0D =0D =0D =0D =0D =0D enum refcount_saturation_type {=0D REFCOUNT_ADD_NOT_ZERO_OVF,=0D REFCOUNT_ADD_OVF,=0D REFCOUNT_ADD_UAF,=0D REFCOUNT_SUB_UAF,=0D REFCOUNT_DEC_LEAK,=0D };=0D =0D void refcount_warn_saturate(refcount_t *r, enum refcount_saturation_type t)= ;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void refcount_set(refcount_t= *r, int n)=0D {=0D atomic_set(&r->refs, n);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int refcount_read(c= onst refcount_t *r)=0D {=0D return atomic_read(&r->refs);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool __refcount_add_not_zero(int i, refcount_t *r, int *oldp)=0D {=0D int old =3D refcount_read(r);=0D =0D do {=0D if (!old)=0D break;=0D } while (!atomic_try_cmpxchg_relaxed(&r->refs, &old, old + i));=0D =0D if (oldp)=0D *oldp =3D old;=0D =0D if (__builtin_expect(!!(old < 0 || old + i < 0), 0))=0D refcount_warn_saturate(r, REFCOUNT_ADD_NOT_ZERO_OVF);=0D =0D return old;=0D }=0D # 186 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool refcount_add_not_zero(int i, refcount_t *r)=0D {=0D return __refcount_add_not_zero(i, r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __refcount_add(int i, r= efcount_t *r, int *oldp)=0D {=0D int old =3D atomic_fetch_add_relaxed(i, &r->refs);=0D =0D if (oldp)=0D *oldp =3D old;=0D =0D if (__builtin_expect(!!(!old), 0))=0D refcount_warn_saturate(r, REFCOUNT_ADD_UAF);=0D else if (__builtin_expect(!!(old < 0 || old + i < 0), 0))=0D refcount_warn_saturate(r, REFCOUNT_ADD_OVF);=0D }=0D # 220 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void refcount_add(int i, ref= count_t *r)=0D {=0D __refcount_add(i, r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool __refcount_inc_not_zero(refcount_t *r, int *oldp)=0D {=0D return __refcount_add_not_zero(1, r, oldp);=0D }=0D # 243 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool refcount_inc_not_zero(refcount_t *r)=0D {=0D return __refcount_inc_not_zero(r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __refcount_inc(refcount= _t *r, int *oldp)=0D {=0D __refcount_add(1, r, oldp);=0D }=0D # 265 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void refcount_inc(refcount_t= *r)=0D {=0D __refcount_inc(r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool __refcount_sub_and_test(int i, refcount_t *r, int *oldp)=0D {=0D int old =3D atomic_fetch_sub_release(i, &r->refs);=0D =0D if (oldp)=0D *oldp =3D old;=0D =0D if (old =3D=3D i) {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "r" "," "r" : : : "= memory"); } while (0);=0D return true;=0D }=0D =0D if (__builtin_expect(!!(old < 0 || old - i < 0), 0))=0D refcount_warn_saturate(r, REFCOUNT_SUB_UAF);=0D =0D return false;=0D }=0D # 308 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool refcount_sub_and_test(int i, refcount_t *r)=0D {=0D return __refcount_sub_and_test(i, r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool __refcount_dec_and_test(refcount_t *r, int *oldp)=0D {=0D return __refcount_sub_and_test(1, r, oldp);=0D }=0D # 331 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool refcount_dec_and_test(refcount_t *r)=0D {=0D return __refcount_dec_and_test(r, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __refcount_dec(refcount= _t *r, int *oldp)=0D {=0D int old =3D atomic_fetch_sub_release(1, &r->refs);=0D =0D if (oldp)=0D *oldp =3D old;=0D =0D if (__builtin_expect(!!(old <=3D 1), 0))=0D refcount_warn_saturate(r, REFCOUNT_DEC_LEAK);=0D }=0D # 357 "./include/linux/refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void refcount_dec(refcount_t= *r)=0D {=0D __refcount_dec(r, ((void *)0));=0D }=0D =0D extern __attribute__((__warn_unused_result__)) bool refcount_dec_if_one(ref= count_t *r);=0D extern __attribute__((__warn_unused_result__)) bool refcount_dec_not_one(re= fcount_t *r);=0D extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_mutex_= lock(refcount_t *r, struct mutex *lock);=0D extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_lock(r= efcount_t *r, spinlock_t *lock);=0D extern __attribute__((__warn_unused_result__)) bool refcount_dec_and_lock_i= rqsave(refcount_t *r,=0D spinlock_t *lock,=0D unsigned long *flags);=0D # 18 "./include/linux/kref.h" 2=0D =0D struct kref {=0D refcount_t refcount;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kref_init(struct kref *= kref)=0D {=0D refcount_set(&kref->refcount, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int kref_read(const= struct kref *kref)=0D {=0D return refcount_read(&kref->refcount);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kref_get(struct kref *k= ref)=0D {=0D refcount_inc(&kref->refcount);=0D }=0D # 62 "./include/linux/kref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kref_put(struct kref *kr= ef, void (*release)(struct kref *kref))=0D {=0D if (refcount_dec_and_test(&kref->refcount)) {=0D release(kref);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kref_put_mutex(struct kr= ef *kref,=0D void (*release)(struct kref *kref),=0D struct mutex *lock)=0D {=0D if (refcount_dec_and_mutex_lock(&kref->refcount, lock)) {=0D release(kref);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kref_put_lock(struct kre= f *kref,=0D void (*release)(struct kref *kref),=0D spinlock_t *lock)=0D {=0D if (refcount_dec_and_lock(&kref->refcount, lock)) {=0D release(kref);=0D return 1;=0D }=0D return 0;=0D }=0D # 109 "./include/linux/kref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) kref_get_unless_zero(struct kref *kref)=0D {=0D return refcount_inc_not_zero(&kref->refcount);=0D }=0D # 9 "./include/linux/mm_types.h" 2=0D =0D =0D # 1 "./include/linux/rbtree.h" 1=0D # 20 "./include/linux/rbtree.h"=0D # 1 "./include/linux/rbtree_types.h" 1=0D =0D =0D =0D =0D struct rb_node {=0D unsigned long __rb_parent_color;=0D struct rb_node *rb_right;=0D struct rb_node *rb_left;=0D } __attribute__((aligned(sizeof(long))));=0D =0D =0D struct rb_root {=0D struct rb_node *rb_node;=0D };=0D # 26 "./include/linux/rbtree_types.h"=0D struct rb_root_cached {=0D struct rb_root rb_root;=0D struct rb_node *rb_leftmost;=0D };=0D # 21 "./include/linux/rbtree.h" 2=0D =0D =0D =0D # 1 "./include/linux/rcupdate.h" 1=0D # 40 "./include/linux/rcupdate.h"=0D void call_rcu(struct callback_head *head, rcu_callback_t func);=0D void rcu_barrier_tasks(void);=0D void rcu_barrier_tasks_rude(void);=0D void synchronize_rcu(void);=0D # 63 "./include/linux/rcupdate.h"=0D void rcu_read_unlock_strict(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __rcu_read_lock(void)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __rcu_read_unlock(void)= =0D {=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D if (0)=0D rcu_read_unlock_strict();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rcu_preempt_depth(void)= =0D {=0D return 0;=0D }=0D =0D =0D =0D =0D void rcu_init(void);=0D extern int rcu_scheduler_active;=0D void rcu_sched_clock_irq(int user);=0D void rcu_report_dead(unsigned int cpu);=0D void rcutree_migrate_callbacks(int cpu);=0D =0D =0D void rcu_init_tasks_generic(void);=0D =0D =0D =0D =0D =0D void rcu_sysrq_start(void);=0D void rcu_sysrq_end(void);=0D # 110 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_user_enter(void) { = }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_user_exit(void) { }= =0D # 120 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_init_nohz(void) { }= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rcu_nocb_cpu_offload(int= cpu) { return -22; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rcu_nocb_cpu_deoffload(i= nt cpu) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_nocb_flush_deferred= _wakeup(void) { }=0D # 191 "./include/linux/rcupdate.h"=0D void call_rcu_tasks_rude(struct callback_head *head, rcu_callback_t func);= =0D void synchronize_rcu_tasks_rude(void);=0D =0D =0D =0D void exit_tasks_rcu_start(void);=0D void exit_tasks_rcu_finish(void);=0D # 226 "./include/linux/rcupdate.h"=0D # 1 "./include/linux/rcutree.h" 1=0D # 20 "./include/linux/rcutree.h"=0D void rcu_softirq_qs(void);=0D void rcu_note_context_switch(bool preempt);=0D int rcu_needs_cpu(void);=0D void rcu_cpu_stall_reset(void);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_virt_note_context_s= witch(int cpu)=0D {=0D rcu_note_context_switch(false);=0D }=0D =0D void synchronize_rcu_expedited(void);=0D void kvfree_call_rcu(struct callback_head *head, rcu_callback_t func);=0D =0D void rcu_barrier(void);=0D bool rcu_eqs_special_set(int cpu);=0D void rcu_momentary_dyntick_idle(void);=0D void kfree_rcu_scheduler_running(void);=0D bool rcu_gp_might_be_stalled(void);=0D unsigned long get_state_synchronize_rcu(void);=0D unsigned long start_poll_synchronize_rcu(void);=0D bool poll_state_synchronize_rcu(unsigned long oldstate);=0D void cond_synchronize_rcu(unsigned long oldstate);=0D =0D void rcu_idle_enter(void);=0D void rcu_idle_exit(void);=0D void rcu_irq_enter(void);=0D void rcu_irq_exit(void);=0D void rcu_irq_enter_irqson(void);=0D void rcu_irq_exit_irqson(void);=0D bool rcu_is_idle_cpu(int cpu);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_irq_exit_check_pree= mpt(void) { }=0D =0D =0D void exit_rcu(void);=0D =0D void rcu_scheduler_starting(void);=0D extern int rcu_scheduler_active;=0D void rcu_end_inkernel_boot(void);=0D bool rcu_inkernel_boot_has_ended(void);=0D bool rcu_is_watching(void);=0D =0D void rcu_all_qs(void);=0D =0D =0D =0D int rcutree_prepare_cpu(unsigned int cpu);=0D int rcutree_online_cpu(unsigned int cpu);=0D int rcutree_offline_cpu(unsigned int cpu);=0D int rcutree_dead_cpu(unsigned int cpu);=0D int rcutree_dying_cpu(unsigned int cpu);=0D void rcu_cpu_starting(unsigned int cpu);=0D # 227 "./include/linux/rcupdate.h" 2=0D # 247 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_rcu_head(struct ca= llback_head *head) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_rcu_head(struct= callback_head *head) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_rcu_head_on_stack(= struct callback_head *head) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_rcu_head_on_sta= ck(struct callback_head *head) { }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rcu_lockdep_current_cpu= _online(void) { return true; }=0D =0D =0D extern struct lockdep_map rcu_lock_map;=0D extern struct lockdep_map rcu_bh_lock_map;=0D extern struct lockdep_map rcu_sched_lock_map;=0D extern struct lockdep_map rcu_callback_map;=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_lock_acquire(struct= lockdep_map *map)=0D {=0D lock_acquire(map, 0, 0, 2, 0, ((void *)0), ({ __label__ __here; __here: (u= nsigned long)&&__here; }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_lock_release(struct= lockdep_map *map)=0D {=0D lock_release(map, ({ __label__ __here; __here: (unsigned long)&&__here; })= );=0D }=0D =0D int debug_lockdep_rcu_enabled(void);=0D int rcu_read_lock_held(void);=0D int rcu_read_lock_bh_held(void);=0D int rcu_read_lock_sched_held(void);=0D int rcu_read_lock_any_held(void);=0D # 690 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void rcu_read_lock(void)=0D {=0D __rcu_read_lock();=0D (void)0;=0D rcu_lock_acquire(&rcu_lock_map);=0D do { } while (0 && (!rcu_is_watching()));=0D =0D }=0D # 721 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_read_unlock(void)=0D {=0D do { } while (0 && (!rcu_is_watching()));=0D =0D (void)0;=0D __rcu_read_unlock();=0D rcu_lock_release(&rcu_lock_map);=0D }=0D # 744 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_read_lock_bh(void)= =0D {=0D local_bh_disable();=0D (void)0;=0D rcu_lock_acquire(&rcu_bh_lock_map);=0D do { } while (0 && (!rcu_is_watching()));=0D =0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_read_unlock_bh(void= )=0D {=0D do { } while (0 && (!rcu_is_watching()));=0D =0D rcu_lock_release(&rcu_bh_lock_map);=0D (void)0;=0D local_bh_enable();=0D }=0D # 782 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_read_lock_sched(voi= d)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D (void)0;=0D rcu_lock_acquire(&rcu_sched_lock_map);=0D do { } while (0 && (!rcu_is_watching()));=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((patchable_fun= ction_entry(0, 0))) void rcu_read_lock_sched_notrace(void)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D (void)0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_read_unlock_sched(v= oid)=0D {=0D do { } while (0 && (!rcu_is_watching()));=0D =0D rcu_lock_release(&rcu_sched_lock_map);=0D (void)0;=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((patchable_fun= ction_entry(0, 0))) void rcu_read_unlock_sched_notrace(void)=0D {=0D (void)0;=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D # 982 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcu_head_init(struct ca= llback_head *rhp)=0D {=0D rhp->func =3D (rcu_callback_t)~0L;=0D }=0D # 1000 "./include/linux/rcupdate.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D rcu_head_after_call_rcu(struct callback_head *rhp, rcu_callback_t f)=0D {=0D rcu_callback_t func =3D ({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_63(void) ; if (!((sizeof(rhp->func) =3D=3D sizeof(char= ) || sizeof(rhp->func) =3D=3D sizeof(short) || sizeof(rhp->func) =3D=3D siz= eof(int) || sizeof(rhp->func) =3D=3D sizeof(long)) || sizeof(rhp->func) =3D= =3D sizeof(long long))) __compiletime_assert_63(); } while (0); (*(const vo= latile typeof( _Generic((rhp->func), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: (rhp->func))) *)&(rhp->func)); });=0D =0D if (func =3D=3D f)=0D return true;=0D ({ int __ret_warn_on =3D !!(func !=3D (rcu_callback_t)~0L); if (__builtin_= expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\= n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t"= ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/rcupdate.h"), "i" (1007), "= i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } w= hile (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D return false;=0D }=0D =0D =0D extern int rcu_expedited;=0D extern int rcu_normal;=0D # 25 "./include/linux/rbtree.h" 2=0D # 39 "./include/linux/rbtree.h"=0D extern void rb_insert_color(struct rb_node *, struct rb_root *);=0D extern void rb_erase(struct rb_node *, struct rb_root *);=0D =0D =0D =0D extern struct rb_node *rb_next(const struct rb_node *);=0D extern struct rb_node *rb_prev(const struct rb_node *);=0D extern struct rb_node *rb_first(const struct rb_root *);=0D extern struct rb_node *rb_last(const struct rb_root *);=0D =0D =0D extern struct rb_node *rb_first_postorder(const struct rb_root *);=0D extern struct rb_node *rb_next_postorder(const struct rb_node *);=0D =0D =0D extern void rb_replace_node(struct rb_node *victim, struct rb_node *new,=0D struct rb_root *root);=0D extern void rb_replace_node_rcu(struct rb_node *victim, struct rb_node *new= ,=0D struct rb_root *root);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rb_link_node(struct rb_= node *node, struct rb_node *parent,=0D struct rb_node **rb_link)=0D {=0D node->__rb_parent_color =3D (unsigned long)parent;=0D node->rb_left =3D node->rb_right =3D ((void *)0);=0D =0D *rb_link =3D node;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rb_link_node_rcu(struct= rb_node *node, struct rb_node *parent,=0D struct rb_node **rb_link)=0D {=0D node->__rb_parent_color =3D (unsigned long)parent;=0D node->rb_left =3D node->rb_right =3D ((void *)0);=0D =0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(node); ; if (__builtin_constant_p= (node) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute_= _((__noreturn__)) extern void __compiletime_assert_64(void) ; if (!((sizeof= ((*rb_link)) =3D=3D sizeof(char) || sizeof((*rb_link)) =3D=3D sizeof(short)= || sizeof((*rb_link)) =3D=3D sizeof(int) || sizeof((*rb_link)) =3D=3D size= of(long)) || sizeof((*rb_link)) =3D=3D sizeof(long long))) __compiletime_as= sert_64(); } while (0); do { *(volatile typeof((*rb_link)) *)&((*rb_link)) = =3D ((typeof(*rb_link))(_r_a_p__v)); } while (0); } while (0); else do { do= { } while (0); do { do { __attribute__((__noreturn__)) extern void __compi= letime_assert_65(void) ; if (!((sizeof(*&*rb_link) =3D=3D sizeof(char) || s= izeof(*&*rb_link) =3D=3D sizeof(short) || sizeof(*&*rb_link) =3D=3D sizeof(= int) || sizeof(*&*rb_link) =3D=3D sizeof(long)))) __compiletime_assert_65()= ; } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory");= do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_6= 6(void) ; if (!((sizeof(*&*rb_link) =3D=3D sizeof(char) || sizeof(*&*rb_lin= k) =3D=3D sizeof(short) || sizeof(*&*rb_link) =3D=3D sizeof(int) || sizeof(= *&*rb_link) =3D=3D sizeof(long)) || sizeof(*&*rb_link) =3D=3D sizeof(long l= ong))) __compiletime_assert_66(); } while (0); do { *(volatile typeof(*&*rb= _link) *)&(*&*rb_link) =3D ((typeof(*((typeof(*rb_link))_r_a_p__v)) *)((typ= eof(*rb_link))_r_a_p__v)); } while (0); } while (0); } while (0); } while (= 0); } while (0);=0D }=0D # 108 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rb_insert_color_cached(= struct rb_node *node,=0D struct rb_root_cached *root,=0D bool leftmost)=0D {=0D if (leftmost)=0D root->rb_leftmost =3D node;=0D rb_insert_color(node, &root->rb_root);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rb_node *=0D rb_erase_cached(struct rb_node *node, struct rb_root_cached *root)=0D {=0D struct rb_node *leftmost =3D ((void *)0);=0D =0D if (root->rb_leftmost =3D=3D node)=0D leftmost =3D root->rb_leftmost =3D rb_next(node);=0D =0D rb_erase(node, &root->rb_root);=0D =0D return leftmost;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rb_replace_node_cached(= struct rb_node *victim,=0D struct rb_node *new,=0D struct rb_root_cached *root)=0D {=0D if (root->rb_leftmost =3D=3D victim)=0D root->rb_leftmost =3D new;=0D rb_replace_node(victim, new, &root->rb_root);=0D }=0D # 164 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct rb_node *=0D rb_add_cached(struct rb_node *node, struct rb_root_cached *tree,=0D bool (*less)(struct rb_node *, const struct rb_node *))=0D {=0D struct rb_node **link =3D &tree->rb_root.rb_node;=0D struct rb_node *parent =3D ((void *)0);=0D bool leftmost =3D true;=0D =0D while (*link) {=0D parent =3D *link;=0D if (less(node, parent)) {=0D link =3D &parent->rb_left;=0D } else {=0D link =3D &parent->rb_right;=0D leftmost =3D false;=0D }=0D }=0D =0D rb_link_node(node, parent, link);=0D rb_insert_color_cached(node, tree, leftmost);=0D =0D return leftmost ? node : ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D rb_add(struct rb_node *node, struct rb_root *tree,=0D bool (*less)(struct rb_node *, const struct rb_node *))=0D {=0D struct rb_node **link =3D &tree->rb_node;=0D struct rb_node *parent =3D ((void *)0);=0D =0D while (*link) {=0D parent =3D *link;=0D if (less(node, parent))=0D link =3D &parent->rb_left;=0D else=0D link =3D &parent->rb_right;=0D }=0D =0D rb_link_node(node, parent, link);=0D rb_insert_color(node, tree);=0D }=0D # 222 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct rb_node *=0D rb_find_add(struct rb_node *node, struct rb_root *tree,=0D int (*cmp)(struct rb_node *, const struct rb_node *))=0D {=0D struct rb_node **link =3D &tree->rb_node;=0D struct rb_node *parent =3D ((void *)0);=0D int c;=0D =0D while (*link) {=0D parent =3D *link;=0D c =3D cmp(node, parent);=0D =0D if (c < 0)=0D link =3D &parent->rb_left;=0D else if (c > 0)=0D link =3D &parent->rb_right;=0D else=0D return parent;=0D }=0D =0D rb_link_node(node, parent, link);=0D rb_insert_color(node, tree);=0D return ((void *)0);=0D }=0D # 255 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct rb_node *=0D rb_find(const void *key, const struct rb_root *tree,=0D int (*cmp)(const void *key, const struct rb_node *))=0D {=0D struct rb_node *node =3D tree->rb_node;=0D =0D while (node) {=0D int c =3D cmp(key, node);=0D =0D if (c < 0)=0D node =3D node->rb_left;=0D else if (c > 0)=0D node =3D node->rb_right;=0D else=0D return node;=0D }=0D =0D return ((void *)0);=0D }=0D # 283 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct rb_node *=0D rb_find_first(const void *key, const struct rb_root *tree,=0D int (*cmp)(const void *key, const struct rb_node *))=0D {=0D struct rb_node *node =3D tree->rb_node;=0D struct rb_node *match =3D ((void *)0);=0D =0D while (node) {=0D int c =3D cmp(key, node);=0D =0D if (c <=3D 0) {=0D if (!c)=0D match =3D node;=0D node =3D node->rb_left;=0D } else if (c > 0) {=0D node =3D node->rb_right;=0D }=0D }=0D =0D return match;=0D }=0D # 313 "./include/linux/rbtree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct rb_node *=0D rb_next_match(const void *key, struct rb_node *node,=0D int (*cmp)(const void *key, const struct rb_node *))=0D {=0D node =3D rb_next(node);=0D if (node && cmp(key, node))=0D node =3D ((void *)0);=0D return node;=0D }=0D # 12 "./include/linux/mm_types.h" 2=0D # 1 "./include/linux/rwsem.h" 1=0D # 32 "./include/linux/rwsem.h"=0D # 1 "./include/linux/osq_lock.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct optimistic_spin_node {=0D struct optimistic_spin_node *next, *prev;=0D int locked;=0D int cpu;=0D };=0D =0D struct optimistic_spin_queue {=0D =0D =0D =0D =0D atomic_t tail;=0D };=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void osq_lock_init(struct op= timistic_spin_queue *lock)=0D {=0D atomic_set(&lock->tail, (0));=0D }=0D =0D extern bool osq_lock(struct optimistic_spin_queue *lock);=0D extern void osq_unlock(struct optimistic_spin_queue *lock);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool osq_is_locked(struct op= timistic_spin_queue *lock)=0D {=0D return atomic_read(&lock->tail) !=3D (0);=0D }=0D # 33 "./include/linux/rwsem.h" 2=0D # 47 "./include/linux/rwsem.h"=0D struct rw_semaphore {=0D atomic_long_t count;=0D =0D =0D =0D =0D =0D atomic_long_t owner;=0D =0D struct optimistic_spin_queue osq;=0D =0D raw_spinlock_t wait_lock;=0D struct list_head wait_list;=0D =0D =0D =0D =0D struct lockdep_map dep_map;=0D =0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rwsem_is_locked(struct r= w_semaphore *sem)=0D {=0D return atomic_long_read(&sem->count) !=3D 0;=0D }=0D # 103 "./include/linux/rwsem.h"=0D extern void __init_rwsem(struct rw_semaphore *sem, const char *name,=0D struct lock_class_key *key);=0D # 119 "./include/linux/rwsem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rwsem_is_contended(struc= t rw_semaphore *sem)=0D {=0D return !list_empty(&sem->wait_list);=0D }=0D # 174 "./include/linux/rwsem.h"=0D extern void down_read(struct rw_semaphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_read_interruptible(= struct rw_semaphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_read_killable(struc= t rw_semaphore *sem);=0D =0D =0D =0D =0D extern int down_read_trylock(struct rw_semaphore *sem);=0D =0D =0D =0D =0D extern void down_write(struct rw_semaphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_write_killable(stru= ct rw_semaphore *sem);=0D =0D =0D =0D =0D extern int down_write_trylock(struct rw_semaphore *sem);=0D =0D =0D =0D =0D extern void up_read(struct rw_semaphore *sem);=0D =0D =0D =0D =0D extern void up_write(struct rw_semaphore *sem);=0D =0D =0D =0D =0D extern void downgrade_write(struct rw_semaphore *sem);=0D # 223 "./include/linux/rwsem.h"=0D extern void down_read_nested(struct rw_semaphore *sem, int subclass);=0D extern int __attribute__((__warn_unused_result__)) down_read_killable_neste= d(struct rw_semaphore *sem, int subclass);=0D extern void down_write_nested(struct rw_semaphore *sem, int subclass);=0D extern int down_write_killable_nested(struct rw_semaphore *sem, int subclas= s);=0D extern void _down_write_nest_lock(struct rw_semaphore *sem, struct lockdep_= map *nest_lock);=0D # 241 "./include/linux/rwsem.h"=0D extern void down_read_non_owner(struct rw_semaphore *sem);=0D extern void up_read_non_owner(struct rw_semaphore *sem);=0D # 13 "./include/linux/mm_types.h" 2=0D # 1 "./include/linux/completion.h" 1=0D # 12 "./include/linux/completion.h"=0D # 1 "./include/linux/swait.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/wait.h" 1=0D # 12 "./include/linux/wait.h"=0D # 1 "./include/uapi/linux/wait.h" 1=0D # 13 "./include/linux/wait.h" 2=0D =0D typedef struct wait_queue_entry wait_queue_entry_t;=0D =0D typedef int (*wait_queue_func_t)(struct wait_queue_entry *wq_entry, unsigne= d mode, int flags, void *key);=0D int default_wake_function(struct wait_queue_entry *wq_entry, unsigned mode,= int flags, void *key);=0D # 30 "./include/linux/wait.h"=0D struct wait_queue_entry {=0D unsigned int flags;=0D void *private;=0D wait_queue_func_t func;=0D struct list_head entry;=0D };=0D =0D struct wait_queue_head {=0D spinlock_t lock;=0D struct list_head head;=0D };=0D typedef struct wait_queue_head wait_queue_head_t;=0D =0D struct task_struct;=0D # 64 "./include/linux/wait.h"=0D extern void __init_waitqueue_head(struct wait_queue_head *wq_head, const ch= ar *name, struct lock_class_key *);=0D # 82 "./include/linux/wait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_waitqueue_entry(st= ruct wait_queue_entry *wq_entry, struct task_struct *p)=0D {=0D wq_entry->flags =3D 0;=0D wq_entry->private =3D p;=0D wq_entry->func =3D default_wake_function;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D init_waitqueue_func_entry(struct wait_queue_entry *wq_entry, wait_queue_fun= c_t func)=0D {=0D wq_entry->flags =3D 0;=0D wq_entry->private =3D ((void *)0);=0D wq_entry->func =3D func;=0D }=0D # 127 "./include/linux/wait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int waitqueue_active(struct = wait_queue_head *wq_head)=0D {=0D return !list_empty(&wq_head->head);=0D }=0D # 140 "./include/linux/wait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool wq_has_single_sleeper(s= truct wait_queue_head *wq_head)=0D {=0D return list_is_singular(&wq_head->head);=0D }=0D # 153 "./include/linux/wait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool wq_has_sleeper(struct w= ait_queue_head *wq_head)=0D {=0D =0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D return waitqueue_active(wq_head);=0D }=0D =0D extern void add_wait_queue(struct wait_queue_head *wq_head, struct wait_que= ue_entry *wq_entry);=0D extern void add_wait_queue_exclusive(struct wait_queue_head *wq_head, struc= t wait_queue_entry *wq_entry);=0D extern void add_wait_queue_priority(struct wait_queue_head *wq_head, struct= wait_queue_entry *wq_entry);=0D extern void remove_wait_queue(struct wait_queue_head *wq_head, struct wait_= queue_entry *wq_entry);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __add_wait_queue(struct= wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)=0D {=0D struct list_head *head =3D &wq_head->head;=0D struct wait_queue_entry *wq;=0D =0D for (wq =3D ({ void *__mptr =3D (void *)((&wq_head->head)->next); _Static_= assert(__builtin_types_compatible_p(typeof(*((&wq_head->head)->next)), type= of(((typeof(*wq) *)0)->entry)) || __builtin_types_compatible_p(typeof(*((&w= q_head->head)->next)), typeof(void)), "pointer type mismatch in container_o= f()"); ((typeof(*wq) *)(__mptr - __builtin_offsetof(typeof(*wq), entry))); = }); !(&wq->entry =3D=3D (&wq_head->head)); wq =3D ({ void *__mptr =3D (void= *)((wq)->entry.next); _Static_assert(__builtin_types_compatible_p(typeof(*= ((wq)->entry.next)), typeof(((typeof(*(wq)) *)0)->entry)) || __builtin_type= s_compatible_p(typeof(*((wq)->entry.next)), typeof(void)), "pointer type mi= smatch in container_of()"); ((typeof(*(wq)) *)(__mptr - __builtin_offsetof(= typeof(*(wq)), entry))); })) {=0D if (!(wq->flags & 0x20))=0D break;=0D head =3D &wq->entry;=0D }=0D list_add(&wq_entry->entry, head);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __add_wait_queue_exclusive(struct wait_queue_head *wq_head, struct wait_que= ue_entry *wq_entry)=0D {=0D wq_entry->flags |=3D 0x01;=0D __add_wait_queue(wq_head, wq_entry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __add_wait_queue_entry_= tail(struct wait_queue_head *wq_head, struct wait_queue_entry *wq_entry)=0D {=0D list_add_tail(&wq_entry->entry, &wq_head->head);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __add_wait_queue_entry_tail_exclusive(struct wait_queue_head *wq_head, stru= ct wait_queue_entry *wq_entry)=0D {=0D wq_entry->flags |=3D 0x01;=0D __add_wait_queue_entry_tail(wq_head, wq_entry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __remove_wait_queue(struct wait_queue_head *wq_head, struct wait_queue_entr= y *wq_entry)=0D {=0D list_del(&wq_entry->entry);=0D }=0D =0D void __wake_up(struct wait_queue_head *wq_head, unsigned int mode, int nr, = void *key);=0D void __wake_up_locked_key(struct wait_queue_head *wq_head, unsigned int mod= e, void *key);=0D void __wake_up_locked_key_bookmark(struct wait_queue_head *wq_head,=0D unsigned int mode, void *key, wait_queue_entry_t *bookmark);=0D void __wake_up_sync_key(struct wait_queue_head *wq_head, unsigned int mode,= void *key);=0D void __wake_up_locked_sync_key(struct wait_queue_head *wq_head, unsigned in= t mode, void *key);=0D void __wake_up_locked(struct wait_queue_head *wq_head, unsigned int mode, i= nt nr);=0D void __wake_up_sync(struct wait_queue_head *wq_head, unsigned int mode);=0D void __wake_up_pollfree(struct wait_queue_head *wq_head);=0D # 261 "./include/linux/wait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wake_up_pollfree(struct= wait_queue_head *wq_head)=0D {=0D =0D =0D =0D =0D =0D =0D =0D if (waitqueue_active(wq_head))=0D __wake_up_pollfree(wq_head);=0D }=0D # 286 "./include/linux/wait.h"=0D extern void init_wait_entry(struct wait_queue_entry *wq_entry, int flags);= =0D # 770 "./include/linux/wait.h"=0D extern int do_wait_intr(wait_queue_head_t *, wait_queue_entry_t *);=0D extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);=0D # 1164 "./include/linux/wait.h"=0D void prepare_to_wait(struct wait_queue_head *wq_head, struct wait_queue_ent= ry *wq_entry, int state);=0D bool prepare_to_wait_exclusive(struct wait_queue_head *wq_head, struct wait= _queue_entry *wq_entry, int state);=0D long prepare_to_wait_event(struct wait_queue_head *wq_head, struct wait_que= ue_entry *wq_entry, int state);=0D void finish_wait(struct wait_queue_head *wq_head, struct wait_queue_entry *= wq_entry);=0D long wait_woken(struct wait_queue_entry *wq_entry, unsigned mode, long time= out);=0D int woken_wake_function(struct wait_queue_entry *wq_entry, unsigned mode, i= nt sync, void *key);=0D int autoremove_wake_function(struct wait_queue_entry *wq_entry, unsigned mo= de, int sync, void *key);=0D # 1189 "./include/linux/wait.h"=0D typedef int (*task_call_f)(struct task_struct *p, void *arg);=0D extern int task_call_func(struct task_struct *p, task_call_f func, void *ar= g);=0D # 9 "./include/linux/swait.h" 2=0D # 41 "./include/linux/swait.h"=0D struct task_struct;=0D =0D struct swait_queue_head {=0D raw_spinlock_t lock;=0D struct list_head task_list;=0D };=0D =0D struct swait_queue {=0D struct task_struct *task;=0D struct list_head task_list;=0D };=0D # 69 "./include/linux/swait.h"=0D extern void __init_swait_queue_head(struct swait_queue_head *q, const char = *name,=0D struct lock_class_key *key);=0D # 121 "./include/linux/swait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int swait_active(struct swai= t_queue_head *wq)=0D {=0D return !list_empty(&wq->task_list);=0D }=0D # 134 "./include/linux/swait.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool swq_has_sleeper(struct = swait_queue_head *wq)=0D {=0D =0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D return swait_active(wq);=0D }=0D =0D extern void swake_up_one(struct swait_queue_head *q);=0D extern void swake_up_all(struct swait_queue_head *q);=0D extern void swake_up_locked(struct swait_queue_head *q);=0D =0D extern void prepare_to_swait_exclusive(struct swait_queue_head *q, struct s= wait_queue *wait, int state);=0D extern long prepare_to_swait_event(struct swait_queue_head *q, struct swait= _queue *wait, int state);=0D =0D extern void __finish_swait(struct swait_queue_head *q, struct swait_queue *= wait);=0D extern void finish_swait(struct swait_queue_head *q, struct swait_queue *wa= it);=0D # 13 "./include/linux/completion.h" 2=0D # 26 "./include/linux/completion.h"=0D struct completion {=0D unsigned int done;=0D struct swait_queue_head wait;=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void complete_acquire(struct= completion *x) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void complete_release(struct= completion *x) {}=0D # 84 "./include/linux/completion.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_completion(struct = completion *x)=0D {=0D x->done =3D 0;=0D do { static struct lock_class_key __key; __init_swait_queue_head((&x->wait= ), "&x->wait", &__key); } while (0);=0D }=0D # 97 "./include/linux/completion.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reinit_completion(struc= t completion *x)=0D {=0D x->done =3D 0;=0D }=0D =0D extern void wait_for_completion(struct completion *);=0D extern void wait_for_completion_io(struct completion *);=0D extern int wait_for_completion_interruptible(struct completion *x);=0D extern int wait_for_completion_killable(struct completion *x);=0D extern unsigned long wait_for_completion_timeout(struct completion *x,=0D unsigned long timeout);=0D extern unsigned long wait_for_completion_io_timeout(struct completion *x,=0D unsigned long timeout);=0D extern long wait_for_completion_interruptible_timeout(=0D struct completion *x, unsigned long timeout);=0D extern long wait_for_completion_killable_timeout(=0D struct completion *x, unsigned long timeout);=0D extern bool try_wait_for_completion(struct completion *x);=0D extern bool completion_done(struct completion *x);=0D =0D extern void complete(struct completion *);=0D extern void complete_all(struct completion *);=0D # 14 "./include/linux/mm_types.h" 2=0D =0D # 1 "./include/linux/uprobes.h" 1=0D # 19 "./include/linux/uprobes.h"=0D struct vm_area_struct;=0D struct mm_struct;=0D struct inode;=0D struct notifier_block;=0D struct page;=0D =0D =0D =0D =0D =0D =0D enum uprobe_filter_ctx {=0D UPROBE_FILTER_REGISTER,=0D UPROBE_FILTER_UNREGISTER,=0D UPROBE_FILTER_MMAP,=0D };=0D =0D struct uprobe_consumer {=0D int (*handler)(struct uprobe_consumer *self, struct pt_regs *regs);=0D int (*ret_handler)(struct uprobe_consumer *self,=0D unsigned long func,=0D struct pt_regs *regs);=0D bool (*filter)(struct uprobe_consumer *self,=0D enum uprobe_filter_ctx ctx,=0D struct mm_struct *mm);=0D =0D struct uprobe_consumer *next;=0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/asm/uprobes.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/probes.h" 1=0D =0D =0D =0D =0D =0D typedef u32 probe_opcode_t;=0D typedef bool (probes_handler_t) (u32 opcode, unsigned long addr, struct pt_= regs *);=0D =0D =0D struct arch_probe_insn {=0D probe_opcode_t *insn;=0D probes_handler_t *handler;=0D =0D unsigned long restore;=0D };=0D =0D =0D typedef u32 kprobe_opcode_t;=0D struct arch_specific_insn {=0D struct arch_probe_insn api;=0D };=0D # 7 "./arch/riscv/include/asm/uprobes.h" 2=0D # 1 "./arch/riscv/include/asm/patch.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D int patch_text_nosync(void *addr, const void *insns, size_t len);=0D int patch_text(void *addr, u32 insn);=0D # 8 "./arch/riscv/include/asm/uprobes.h" 2=0D # 21 "./arch/riscv/include/asm/uprobes.h"=0D typedef u32 uprobe_opcode_t;=0D =0D struct arch_uprobe_task {=0D unsigned long saved_cause;=0D };=0D =0D struct arch_uprobe {=0D union {=0D u8 insn[8];=0D u8 ixol[8];=0D };=0D struct arch_probe_insn api;=0D unsigned long insn_size;=0D bool simulate;=0D };=0D =0D bool uprobe_breakpoint_handler(struct pt_regs *regs);=0D bool uprobe_single_step_handler(struct pt_regs *regs);=0D # 50 "./include/linux/uprobes.h" 2=0D =0D enum uprobe_task_state {=0D UTASK_RUNNING,=0D UTASK_SSTEP,=0D UTASK_SSTEP_ACK,=0D UTASK_SSTEP_TRAPPED,=0D };=0D =0D =0D =0D =0D struct uprobe_task {=0D enum uprobe_task_state state;=0D =0D union {=0D struct {=0D struct arch_uprobe_task autask;=0D unsigned long vaddr;=0D };=0D =0D struct {=0D struct callback_head dup_xol_work;=0D unsigned long dup_xol_addr;=0D };=0D };=0D =0D struct uprobe *active_uprobe;=0D unsigned long xol_vaddr;=0D =0D struct return_instance *return_instances;=0D unsigned int depth;=0D };=0D =0D struct return_instance {=0D struct uprobe *uprobe;=0D unsigned long func;=0D unsigned long stack;=0D unsigned long orig_ret_vaddr;=0D bool chained;=0D =0D struct return_instance *next;=0D };=0D =0D enum rp_check {=0D RP_CHECK_CALL,=0D RP_CHECK_CHAIN_CALL,=0D RP_CHECK_RET,=0D };=0D =0D struct xol_area;=0D =0D struct uprobes_state {=0D struct xol_area *xol_area;=0D };=0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) uprobes_init(void);=0D extern int set_swbp(struct arch_uprobe *aup, struct mm_struct *mm, unsigned= long vaddr);=0D extern int set_orig_insn(struct arch_uprobe *aup, struct mm_struct *mm, uns= igned long vaddr);=0D extern bool is_swbp_insn(uprobe_opcode_t *insn);=0D extern bool is_trap_insn(uprobe_opcode_t *insn);=0D extern unsigned long uprobe_get_swbp_addr(struct pt_regs *regs);=0D extern unsigned long uprobe_get_trap_addr(struct pt_regs *regs);=0D extern int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struc= t *mm, unsigned long vaddr, uprobe_opcode_t);=0D extern int uprobe_register(struct inode *inode, loff_t offset, struct uprob= e_consumer *uc);=0D extern int uprobe_register_refctr(struct inode *inode, loff_t offset, loff_= t ref_ctr_offset, struct uprobe_consumer *uc);=0D extern int uprobe_apply(struct inode *inode, loff_t offset, struct uprobe_c= onsumer *uc, bool);=0D extern void uprobe_unregister(struct inode *inode, loff_t offset, struct up= robe_consumer *uc);=0D extern int uprobe_mmap(struct vm_area_struct *vma);=0D extern void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, = unsigned long end);=0D extern void uprobe_start_dup_mmap(void);=0D extern void uprobe_end_dup_mmap(void);=0D extern void uprobe_dup_mmap(struct mm_struct *oldmm, struct mm_struct *newm= m);=0D extern void uprobe_free_utask(struct task_struct *t);=0D extern void uprobe_copy_process(struct task_struct *t, unsigned long flags)= ;=0D extern int uprobe_post_sstep_notifier(struct pt_regs *regs);=0D extern int uprobe_pre_sstep_notifier(struct pt_regs *regs);=0D extern void uprobe_notify_resume(struct pt_regs *regs);=0D extern bool uprobe_deny_signal(void);=0D extern bool arch_uprobe_skip_sstep(struct arch_uprobe *aup, struct pt_regs = *regs);=0D extern void uprobe_clear_state(struct mm_struct *mm);=0D extern int arch_uprobe_analyze_insn(struct arch_uprobe *aup, struct mm_stru= ct *mm, unsigned long addr);=0D extern int arch_uprobe_pre_xol(struct arch_uprobe *aup, struct pt_regs *reg= s);=0D extern int arch_uprobe_post_xol(struct arch_uprobe *aup, struct pt_regs *re= gs);=0D extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk);=0D extern int arch_uprobe_exception_notify(struct notifier_block *self, unsign= ed long val, void *data);=0D extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *= regs);=0D extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampo= line_vaddr, struct pt_regs *regs);=0D extern bool arch_uretprobe_is_alive(struct return_instance *ret, enum rp_ch= eck ctx, struct pt_regs *regs);=0D extern bool arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *reg= s);=0D extern void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr,=0D void *src, unsigned long len);=0D # 16 "./include/linux/mm_types.h" 2=0D =0D # 1 "./include/linux/page-flags-layout.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/numa.h" 1=0D # 47 "./include/linux/numa.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int numa_map_to_online_node(= int node)=0D {=0D return (-1);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int memory_add_physaddr_to_n= id(u64 start)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int phys_to_target_node(u64 = start)=0D {=0D return 0;=0D }=0D # 6 "./include/linux/page-flags-layout.h" 2=0D # 1 "./include/generated/bounds.h" 1=0D # 7 "./include/linux/page-flags-layout.h" 2=0D # 30 "./include/linux/page-flags-layout.h"=0D # 1 "./arch/riscv/include/asm/sparsemem.h" 1=0D # 31 "./include/linux/page-flags-layout.h" 2=0D # 18 "./include/linux/mm_types.h" 2=0D # 1 "./include/linux/workqueue.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/timer.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/ktime.h" 1=0D # 24 "./include/linux/ktime.h"=0D # 1 "./include/linux/time.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D extern struct timezone sys_tz;=0D =0D int get_timespec64(struct timespec64 *ts,=0D const struct __kernel_timespec *uts);=0D int put_timespec64(const struct timespec64 *ts,=0D struct __kernel_timespec *uts);=0D int get_itimerspec64(struct itimerspec64 *it,=0D const struct __kernel_itimerspec *uit);=0D int put_itimerspec64(const struct itimerspec64 *it,=0D struct __kernel_itimerspec *uit);=0D =0D extern time64_t mktime64(const unsigned int year, const unsigned int mon,=0D const unsigned int day, const unsigned int hour,=0D const unsigned int min, const unsigned int sec);=0D =0D =0D extern void clear_itimer(void);=0D =0D =0D =0D =0D extern long do_utimes(int dfd, const char *filename, struct timespec64 *tim= es, int flags);=0D =0D =0D =0D =0D =0D struct tm {=0D =0D =0D =0D =0D int tm_sec;=0D =0D int tm_min;=0D =0D int tm_hour;=0D =0D int tm_mday;=0D =0D int tm_mon;=0D =0D long tm_year;=0D =0D int tm_wday;=0D =0D int tm_yday;=0D };=0D =0D void time64_to_tm(time64_t totalsecs, int offset, struct tm *result);=0D =0D =0D # 1 "./include/linux/time32.h" 1=0D # 13 "./include/linux/time32.h"=0D # 1 "./include/linux/timex.h" 1=0D # 56 "./include/linux/timex.h"=0D # 1 "./include/uapi/linux/timex.h" 1=0D # 56 "./include/uapi/linux/timex.h"=0D # 1 "./include/linux/time.h" 1=0D # 57 "./include/uapi/linux/timex.h" 2=0D # 97 "./include/uapi/linux/timex.h"=0D struct __kernel_timex_timeval {=0D __kernel_time64_t tv_sec;=0D long long tv_usec;=0D };=0D =0D struct __kernel_timex {=0D unsigned int modes;=0D int :32;=0D long long offset;=0D long long freq;=0D long long maxerror;=0D long long esterror;=0D int status;=0D int :32;=0D long long constant;=0D long long precision;=0D long long tolerance;=0D =0D =0D struct __kernel_timex_timeval time;=0D long long tick;=0D =0D long long ppsfreq;=0D long long jitter;=0D int shift;=0D int :32;=0D long long stabil;=0D long long jitcnt;=0D long long calcnt;=0D long long errcnt;=0D long long stbcnt;=0D =0D int tai;=0D =0D int :32; int :32; int :32; int :32;=0D int :32; int :32; int :32; int :32;=0D int :32; int :32; int :32;=0D };=0D # 57 "./include/linux/timex.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/timex.h" 1=0D # 11 "./arch/riscv/include/asm/timex.h"=0D typedef unsigned long cycles_t;=0D # 51 "./arch/riscv/include/asm/timex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) cycles_t get_cycles(void)=0D {=0D return ({ register unsigned long __v; __asm__ __volatile__ ("csrr %0, " "0= xc01" : "=3Dr" (__v) : : "memory"); __v; });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 get_cycles_hi(void)=0D {=0D return ({ register unsigned long __v; __asm__ __volatile__ ("csrr %0, " "0= xc81" : "=3Dr" (__v) : : "memory"); __v; });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 get_cycles64(void)=0D {=0D return get_cycles();=0D }=0D # 85 "./arch/riscv/include/asm/timex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int read_current_timer(unsig= ned long *timer_val)=0D {=0D *timer_val =3D get_cycles();=0D return 0;=0D }=0D =0D extern void time_init(void);=0D # 66 "./include/linux/timex.h" 2=0D # 139 "./include/linux/timex.h"=0D extern unsigned long tick_usec;=0D extern unsigned long tick_nsec;=0D # 154 "./include/linux/timex.h"=0D extern int do_adjtimex(struct __kernel_timex *);=0D extern int do_clock_adjtime(const clockid_t which_clock, struct __kernel_ti= mex * ktx);=0D =0D extern void hardpps(const struct timespec64 *, const struct timespec64 *);= =0D =0D int read_current_timer(unsigned long *timer_val);=0D # 14 "./include/linux/time32.h" 2=0D =0D # 1 "./include/vdso/time32.h" 1=0D =0D =0D =0D =0D typedef s32 old_time32_t;=0D =0D struct old_timespec32 {=0D old_time32_t tv_sec;=0D s32 tv_nsec;=0D };=0D =0D struct old_timeval32 {=0D old_time32_t tv_sec;=0D s32 tv_usec;=0D };=0D # 16 "./include/linux/time32.h" 2=0D =0D struct old_itimerspec32 {=0D struct old_timespec32 it_interval;=0D struct old_timespec32 it_value;=0D };=0D =0D struct old_utimbuf32 {=0D old_time32_t actime;=0D old_time32_t modtime;=0D };=0D =0D struct old_timex32 {=0D u32 modes;=0D s32 offset;=0D s32 freq;=0D s32 maxerror;=0D s32 esterror;=0D s32 status;=0D s32 constant;=0D s32 precision;=0D s32 tolerance;=0D struct old_timeval32 time;=0D s32 tick;=0D s32 ppsfreq;=0D s32 jitter;=0D s32 shift;=0D s32 stabil;=0D s32 jitcnt;=0D s32 calcnt;=0D s32 errcnt;=0D s32 stbcnt;=0D s32 tai;=0D =0D s32:32; s32:32; s32:32; s32:32;=0D s32:32; s32:32; s32:32; s32:32;=0D s32:32; s32:32; s32:32;=0D };=0D =0D extern int get_old_timespec32(struct timespec64 *, const void *);=0D extern int put_old_timespec32(const struct timespec64 *, void *);=0D extern int get_old_itimerspec32(struct itimerspec64 *its,=0D const struct old_itimerspec32 *uits);=0D extern int put_old_itimerspec32(const struct itimerspec64 *its,=0D struct old_itimerspec32 *uits);=0D struct __kernel_timex;=0D int get_old_timex32(struct __kernel_timex *, const struct old_timex32 *);=0D int put_old_timex32(struct old_timex32 *, const struct __kernel_timex *);=0D =0D =0D =0D =0D =0D =0D =0D extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec);=0D # 61 "./include/linux/time.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool itimerspec64_valid(cons= t struct itimerspec64 *its)=0D {=0D if (!timespec64_valid(&(its->it_interval)) ||=0D !timespec64_valid(&(its->it_value)))=0D return false;=0D =0D return true;=0D }=0D # 100 "./include/linux/time.h"=0D # 1 "./include/vdso/time.h" 1=0D =0D =0D =0D =0D =0D =0D struct timens_offset {=0D s64 sec;=0D u64 nsec;=0D };=0D # 101 "./include/linux/time.h" 2=0D # 25 "./include/linux/ktime.h" 2=0D # 1 "./include/linux/jiffies.h" 1=0D # 12 "./include/linux/jiffies.h"=0D # 1 "./include/vdso/jiffies.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/param.h" 1=0D # 6 "./include/vdso/jiffies.h" 2=0D # 13 "./include/linux/jiffies.h" 2=0D # 1 "./arch/riscv/include/generated/uapi/asm/param.h" 1=0D # 14 "./include/linux/jiffies.h" 2=0D # 1 "./include/generated/timeconst.h" 1=0D # 15 "./include/linux/jiffies.h" 2=0D # 62 "./include/linux/jiffies.h"=0D extern int register_refined_jiffies(long clock_tick_rate);=0D # 79 "./include/linux/jiffies.h"=0D extern u64 __attribute__((__aligned__((1 << 6)), __section__(".data..cachel= ine_aligned"))) jiffies_64;=0D extern unsigned long volatile __attribute__((__aligned__((1 << 6)), __secti= on__(".data..cacheline_aligned"))) jiffies;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 get_jiffies_64(void)=0D {=0D return (u64)jiffies;=0D }=0D # 189 "./include/linux/jiffies.h"=0D extern unsigned long preset_lpj;=0D # 290 "./include/linux/jiffies.h"=0D extern unsigned int jiffies_to_msecs(const unsigned long j);=0D extern unsigned int jiffies_to_usecs(const unsigned long j);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 jiffies_to_nsecs(const u= nsigned long j)=0D {=0D return (u64)jiffies_to_usecs(j) * 1000L;=0D }=0D =0D extern u64 jiffies64_to_nsecs(u64 j);=0D extern u64 jiffies64_to_msecs(u64 j);=0D =0D extern unsigned long __msecs_to_jiffies(const unsigned int m);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _msecs_to_jiff= ies(const unsigned int m)=0D {=0D return (m + (1000L / 100) - 1) / (1000L / 100);=0D }=0D # 363 "./include/linux/jiffies.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long msecs_to_jiffies(const unsigned int m)=0D {=0D if (__builtin_constant_p(m)) {=0D if ((int)m < 0)=0D return ((((long)(~0UL >> 1)) >> 1)-1);=0D return _msecs_to_jiffies(m);=0D } else {=0D return __msecs_to_jiffies(m);=0D }=0D }=0D =0D extern unsigned long __usecs_to_jiffies(const unsigned int u);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _usecs_to_jiff= ies(const unsigned int u)=0D {=0D return (u + (1000000L / 100) - 1) / (1000000L / 100);=0D }=0D # 410 "./include/linux/jiffies.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long usecs_to_jiffies(const unsigned int u)=0D {=0D if (__builtin_constant_p(u)) {=0D if (u > jiffies_to_usecs(((((long)(~0UL >> 1)) >> 1)-1)))=0D return ((((long)(~0UL >> 1)) >> 1)-1);=0D return _usecs_to_jiffies(u);=0D } else {=0D return __usecs_to_jiffies(u);=0D }=0D }=0D =0D extern unsigned long timespec64_to_jiffies(const struct timespec64 *value);= =0D extern void jiffies_to_timespec64(const unsigned long jiffies,=0D struct timespec64 *value);=0D extern clock_t jiffies_to_clock_t(unsigned long x);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) clock_t jiffies_delta_to_clo= ck_t(long delta)=0D {=0D return jiffies_to_clock_t(__builtin_choose_expr(((!!(sizeof((typeof(0L) *)= 1 =3D=3D (typeof(delta) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void = *)((long)(0L) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((vo= id *)((long)(delta) * 0l)) : (int *)8))))), ((0L) > (delta) ? (0L) : (delta= )), ({ typeof(0L) __UNIQUE_ID___x67 =3D (0L); typeof(delta) __UNIQUE_ID___y= 68 =3D (delta); ((__UNIQUE_ID___x67) > (__UNIQUE_ID___y68) ? (__UNIQUE_ID__= _x67) : (__UNIQUE_ID___y68)); })));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int jiffies_delta_t= o_msecs(long delta)=0D {=0D return jiffies_to_msecs(__builtin_choose_expr(((!!(sizeof((typeof(0L) *)1 = =3D=3D (typeof(delta) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)= ((long)(0L) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void= *)((long)(delta) * 0l)) : (int *)8))))), ((0L) > (delta) ? (0L) : (delta))= , ({ typeof(0L) __UNIQUE_ID___x69 =3D (0L); typeof(delta) __UNIQUE_ID___y70= =3D (delta); ((__UNIQUE_ID___x69) > (__UNIQUE_ID___y70) ? (__UNIQUE_ID___x= 69) : (__UNIQUE_ID___y70)); })));=0D }=0D =0D extern unsigned long clock_t_to_jiffies(unsigned long x);=0D extern u64 jiffies_64_to_clock_t(u64 x);=0D extern u64 nsec_to_clock_t(u64 x);=0D extern u64 nsecs_to_jiffies64(u64 n);=0D extern unsigned long nsecs_to_jiffies(u64 n);=0D # 26 "./include/linux/ktime.h" 2=0D =0D =0D =0D typedef s64 ktime_t;=0D # 38 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_set(const s64 = secs, const unsigned long nsecs)=0D {=0D if (__builtin_expect(!!(secs >=3D (((s64)~((u64)1 << 63)) / 1000000000L)),= 0))=0D return ((s64)~((u64)1 << 63));=0D =0D return secs * 1000000000L + (s64)nsecs;=0D }=0D # 71 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t timespec64_to_ktime(= struct timespec64 ts)=0D {=0D return ktime_set(ts.tv_sec, ts.tv_nsec);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_to_ns(const ktime_= t kt)=0D {=0D return kt;=0D }=0D # 95 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ktime_compare(const ktim= e_t cmp1, const ktime_t cmp2)=0D {=0D if (cmp1 < cmp2)=0D return -1;=0D if (cmp1 > cmp2)=0D return 1;=0D return 0;=0D }=0D # 111 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ktime_after(const ktime= _t cmp1, const ktime_t cmp2)=0D {=0D return ktime_compare(cmp1, cmp2) > 0;=0D }=0D # 123 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ktime_before(const ktim= e_t cmp1, const ktime_t cmp2)=0D {=0D return ktime_compare(cmp1, cmp2) < 0;=0D }=0D # 148 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_divns(const ktime_= t kt, s64 div)=0D {=0D =0D =0D =0D =0D ({ int __ret_warn_on =3D !!(div < 0); if (__builtin_expect(!!(__ret_warn_o= n), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/ktime.h"), "i" (154), "i" ((1 << 0)|(((9) << 8)))= , "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_w= arn_on), 0); });=0D return kt / div;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_to_us(const ktime_= t kt)=0D {=0D return ktime_divns(kt, 1000L);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_to_ms(const ktime_= t kt)=0D {=0D return ktime_divns(kt, 1000000L);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_us_delta(const kti= me_t later, const ktime_t earlier)=0D {=0D return ktime_to_us(((later) - (earlier)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 ktime_ms_delta(const kti= me_t later, const ktime_t earlier)=0D {=0D return ktime_to_ms(((later) - (earlier)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_add_us(const k= time_t kt, const u64 usec)=0D {=0D return ((kt) + (usec * 1000L));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_add_ms(const k= time_t kt, const u64 msec)=0D {=0D return ((kt) + (msec * 1000000L));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_sub_us(const k= time_t kt, const u64 usec)=0D {=0D return ((kt) - (usec * 1000L));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_sub_ms(const k= time_t kt, const u64 msec)=0D {=0D return ((kt) - (msec * 1000000L));=0D }=0D =0D extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs);=0D # 209 "./include/linux/ktime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool ktime_to_timespec64_cond(const ktime_t kt,=0D struct timespec64 *ts)=0D {=0D if (kt) {=0D *ts =3D ns_to_timespec64((kt));=0D return true;=0D } else {=0D return false;=0D }=0D }=0D =0D =0D # 1 "./include/vdso/ktime.h" 1=0D # 221 "./include/linux/ktime.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ns_to_ktime(u64 ns)= =0D {=0D return ns;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ms_to_ktime(u64 ms)= =0D {=0D return ms * 1000000L;=0D }=0D =0D =0D # 1 "./include/linux/timekeeping.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/clocksource_ids.h" 1=0D =0D =0D =0D =0D =0D enum clocksource_ids {=0D CSID_GENERIC =3D 0,=0D CSID_ARM_ARCH_COUNTER,=0D CSID_MAX,=0D };=0D # 7 "./include/linux/timekeeping.h" 2=0D =0D =0D =0D void timekeeping_init(void);=0D extern int timekeeping_suspended;=0D =0D =0D extern void legacy_timer_tick(unsigned long ticks);=0D =0D =0D =0D =0D extern int do_settimeofday64(const struct timespec64 *ts);=0D extern int do_sys_settimeofday64(const struct timespec64 *tv,=0D const struct timezone *tz);=0D # 41 "./include/linux/timekeeping.h"=0D extern void ktime_get_raw_ts64(struct timespec64 *ts);=0D extern void ktime_get_ts64(struct timespec64 *ts);=0D extern void ktime_get_real_ts64(struct timespec64 *tv);=0D extern void ktime_get_coarse_ts64(struct timespec64 *ts);=0D extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);=0D =0D void getboottime64(struct timespec64 *ts);=0D =0D =0D =0D =0D extern time64_t ktime_get_seconds(void);=0D extern time64_t __ktime_get_real_seconds(void);=0D extern time64_t ktime_get_real_seconds(void);=0D =0D =0D =0D =0D =0D enum tk_offsets {=0D TK_OFFS_REAL,=0D TK_OFFS_BOOT,=0D TK_OFFS_TAI,=0D TK_OFFS_MAX,=0D };=0D =0D extern ktime_t ktime_get(void);=0D extern ktime_t ktime_get_with_offset(enum tk_offsets offs);=0D extern ktime_t ktime_get_coarse_with_offset(enum tk_offsets offs);=0D extern ktime_t ktime_mono_to_any(ktime_t tmono, enum tk_offsets offs);=0D extern ktime_t ktime_get_raw(void);=0D extern u32 ktime_get_resolution_ns(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_real(void)= =0D {=0D return ktime_get_with_offset(TK_OFFS_REAL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_coarse_rea= l(void)=0D {=0D return ktime_get_coarse_with_offset(TK_OFFS_REAL);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_boottime(v= oid)=0D {=0D return ktime_get_with_offset(TK_OFFS_BOOT);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_coarse_boo= ttime(void)=0D {=0D return ktime_get_coarse_with_offset(TK_OFFS_BOOT);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_clocktai(v= oid)=0D {=0D return ktime_get_with_offset(TK_OFFS_TAI);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_coarse_clo= cktai(void)=0D {=0D return ktime_get_coarse_with_offset(TK_OFFS_TAI);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_get_coarse(voi= d)=0D {=0D struct timespec64 ts;=0D =0D ktime_get_coarse_ts64(&ts);=0D return timespec64_to_ktime(ts);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_coarse_ns(void= )=0D {=0D return ktime_to_ns(ktime_get_coarse());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_coarse_real_ns= (void)=0D {=0D return ktime_to_ns(ktime_get_coarse_real());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_coarse_boottim= e_ns(void)=0D {=0D return ktime_to_ns(ktime_get_coarse_boottime());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_coarse_clockta= i_ns(void)=0D {=0D return ktime_to_ns(ktime_get_coarse_clocktai());=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t ktime_mono_to_real(k= time_t mono)=0D {=0D return ktime_mono_to_any(mono, TK_OFFS_REAL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_ns(void)=0D {=0D return ktime_to_ns(ktime_get());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_real_ns(void)= =0D {=0D return ktime_to_ns(ktime_get_real());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_boottime_ns(vo= id)=0D {=0D return ktime_to_ns(ktime_get_boottime());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_clocktai_ns(vo= id)=0D {=0D return ktime_to_ns(ktime_get_clocktai());=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ktime_get_raw_ns(void)=0D {=0D return ktime_to_ns(ktime_get_raw());=0D }=0D =0D extern u64 ktime_get_mono_fast_ns(void);=0D extern u64 ktime_get_raw_fast_ns(void);=0D extern u64 ktime_get_boot_fast_ns(void);=0D extern u64 ktime_get_real_fast_ns(void);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ktime_get_boottime_ts64= (struct timespec64 *ts)=0D {=0D *ts =3D ns_to_timespec64((ktime_get_boottime()));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ktime_get_coarse_bootti= me_ts64(struct timespec64 *ts)=0D {=0D *ts =3D ns_to_timespec64((ktime_get_coarse_boottime()));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) time64_t ktime_get_boottime_= seconds(void)=0D {=0D return ktime_divns(ktime_get_coarse_boottime(), 1000000000L);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ktime_get_clocktai_ts64= (struct timespec64 *ts)=0D {=0D *ts =3D ns_to_timespec64((ktime_get_clocktai()));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ktime_get_coarse_clockt= ai_ts64(struct timespec64 *ts)=0D {=0D *ts =3D ns_to_timespec64((ktime_get_coarse_clocktai()));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) time64_t ktime_get_clocktai_= seconds(void)=0D {=0D return ktime_divns(ktime_get_coarse_clocktai(), 1000000000L);=0D }=0D =0D =0D =0D =0D extern bool timekeeping_rtc_skipsuspend(void);=0D extern bool timekeeping_rtc_skipresume(void);=0D =0D extern void timekeeping_inject_sleeptime64(const struct timespec64 *delta);= =0D =0D =0D =0D =0D =0D =0D =0D struct ktime_timestamps {=0D u64 mono;=0D u64 boot;=0D u64 real;=0D };=0D # 246 "./include/linux/timekeeping.h"=0D struct system_time_snapshot {=0D u64 cycles;=0D ktime_t real;=0D ktime_t raw;=0D enum clocksource_ids cs_id;=0D unsigned int clock_was_set_seq;=0D u8 cs_was_changed_seq;=0D };=0D # 262 "./include/linux/timekeeping.h"=0D struct system_device_crosststamp {=0D ktime_t device;=0D ktime_t sys_realtime;=0D ktime_t sys_monoraw;=0D };=0D # 275 "./include/linux/timekeeping.h"=0D struct system_counterval_t {=0D u64 cycles;=0D struct clocksource *cs;=0D };=0D =0D =0D =0D =0D extern int get_device_system_crosststamp(=0D int (*get_time_fn)(ktime_t *device_time,=0D struct system_counterval_t *system_counterval,=0D void *ctx),=0D void *ctx,=0D struct system_time_snapshot *history,=0D struct system_device_crosststamp *xtstamp);=0D =0D =0D =0D =0D extern void ktime_get_snapshot(struct system_time_snapshot *systime_snapsho= t);=0D =0D =0D extern void ktime_get_fast_timestamps(struct ktime_timestamps *snap);=0D =0D =0D =0D =0D extern int persistent_clock_is_local;=0D =0D extern void read_persistent_clock64(struct timespec64 *ts);=0D void read_persistent_wall_and_boot_offset(struct timespec64 *wall_clock,=0D struct timespec64 *boot_offset);=0D # 233 "./include/linux/ktime.h" 2=0D # 7 "./include/linux/timer.h" 2=0D =0D # 1 "./include/linux/debugobjects.h" 1=0D =0D =0D =0D =0D =0D =0D =0D enum debug_obj_state {=0D ODEBUG_STATE_NONE,=0D ODEBUG_STATE_INIT,=0D ODEBUG_STATE_INACTIVE,=0D ODEBUG_STATE_ACTIVE,=0D ODEBUG_STATE_DESTROYED,=0D ODEBUG_STATE_NOTAVAILABLE,=0D ODEBUG_STATE_MAX,=0D };=0D =0D struct debug_obj_descr;=0D # 28 "./include/linux/debugobjects.h"=0D struct debug_obj {=0D struct hlist_node node;=0D enum debug_obj_state state;=0D unsigned int astate;=0D void *object;=0D const struct debug_obj_descr *descr;=0D };=0D # 55 "./include/linux/debugobjects.h"=0D struct debug_obj_descr {=0D const char *name;=0D void *(*debug_hint)(void *addr);=0D bool (*is_static_object)(void *addr);=0D bool (*fixup_init)(void *addr, enum debug_obj_state state);=0D bool (*fixup_activate)(void *addr, enum debug_obj_state state);=0D bool (*fixup_destroy)(void *addr, enum debug_obj_state state);=0D bool (*fixup_free)(void *addr, enum debug_obj_state state);=0D bool (*fixup_assert_init)(void *addr, enum debug_obj_state state);=0D };=0D # 88 "./include/linux/debugobjects.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_init (void *addr, const struct debug_obj_descr *descr) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_init_on_stack(void *addr, const struct debug_obj_descr *descr)= { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D debug_object_activate (void *addr, const struct debug_obj_descr *descr) { r= eturn 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_deactivate(void *addr, const struct debug_obj_descr *descr) { = }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_destroy (void *addr, const struct debug_obj_descr *descr) { }= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_free (void *addr, const struct debug_obj_descr *descr) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_object_assert_init(void *addr, const struct debug_obj_descr *descr) {= }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_objects_early_ini= t(void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_objects_mem_init(= void) { }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D debug_check_no_obj_freed(const void *address, unsigned long size) { }=0D # 9 "./include/linux/timer.h" 2=0D =0D =0D struct timer_list {=0D =0D =0D =0D =0D struct hlist_node entry;=0D unsigned long expires;=0D void (*function)(struct timer_list *);=0D u32 flags;=0D =0D =0D struct lockdep_map lockdep_map;=0D =0D };=0D # 91 "./include/linux/timer.h"=0D void init_timer_key(struct timer_list *timer,=0D void (*func)(struct timer_list *), unsigned int flags,=0D const char *name, struct lock_class_key *key);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_timer_on_stack_key= (struct timer_list *timer,=0D void (*func)(struct timer_list *),=0D unsigned int flags,=0D const char *name,=0D struct lock_class_key *key)=0D {=0D init_timer_key(timer, func, flags, name, key);=0D }=0D # 150 "./include/linux/timer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_timer_on_stack(= struct timer_list *timer) { }=0D # 166 "./include/linux/timer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int timer_pending(const stru= ct timer_list * timer)=0D {=0D return !hlist_unhashed_lockless(&timer->entry);=0D }=0D =0D extern void add_timer_on(struct timer_list *timer, int cpu);=0D extern int del_timer(struct timer_list * timer);=0D extern int mod_timer(struct timer_list *timer, unsigned long expires);=0D extern int mod_timer_pending(struct timer_list *timer, unsigned long expire= s);=0D extern int timer_reduce(struct timer_list *timer, unsigned long expires);=0D =0D =0D =0D =0D =0D =0D =0D extern void add_timer(struct timer_list *timer);=0D =0D extern int try_to_del_timer_sync(struct timer_list *timer);=0D =0D =0D extern int del_timer_sync(struct timer_list *timer);=0D =0D =0D =0D =0D =0D =0D extern void init_timers(void);=0D struct hrtimer;=0D extern enum hrtimer_restart it_real_fn(struct hrtimer *);=0D =0D =0D struct ctl_table;=0D =0D extern unsigned int sysctl_timer_migration;=0D int timer_migration_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D =0D unsigned long __round_jiffies(unsigned long j, int cpu);=0D unsigned long __round_jiffies_relative(unsigned long j, int cpu);=0D unsigned long round_jiffies(unsigned long j);=0D unsigned long round_jiffies_relative(unsigned long j);=0D =0D unsigned long __round_jiffies_up(unsigned long j, int cpu);=0D unsigned long __round_jiffies_up_relative(unsigned long j, int cpu);=0D unsigned long round_jiffies_up(unsigned long j);=0D unsigned long round_jiffies_up_relative(unsigned long j);=0D =0D =0D int timers_prepare_cpu(unsigned int cpu);=0D int timers_dead_cpu(unsigned int cpu);=0D # 10 "./include/linux/workqueue.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D struct workqueue_struct;=0D =0D struct work_struct;=0D typedef void (*work_func_t)(struct work_struct *work);=0D void delayed_work_timer_fn(struct timer_list *t);=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D WORK_STRUCT_PENDING_BIT =3D 0,=0D WORK_STRUCT_INACTIVE_BIT=3D 1,=0D WORK_STRUCT_PWQ_BIT =3D 2,=0D WORK_STRUCT_LINKED_BIT =3D 3,=0D =0D =0D =0D =0D WORK_STRUCT_COLOR_SHIFT =3D 4,=0D =0D =0D WORK_STRUCT_COLOR_BITS =3D 4,=0D =0D WORK_STRUCT_PENDING =3D 1 << WORK_STRUCT_PENDING_BIT,=0D WORK_STRUCT_INACTIVE =3D 1 << WORK_STRUCT_INACTIVE_BIT,=0D WORK_STRUCT_PWQ =3D 1 << WORK_STRUCT_PWQ_BIT,=0D WORK_STRUCT_LINKED =3D 1 << WORK_STRUCT_LINKED_BIT,=0D =0D =0D =0D WORK_STRUCT_STATIC =3D 0,=0D =0D =0D WORK_NR_COLORS =3D (1 << WORK_STRUCT_COLOR_BITS),=0D =0D =0D WORK_CPU_UNBOUND =3D 32,=0D =0D =0D =0D =0D =0D =0D WORK_STRUCT_FLAG_BITS =3D WORK_STRUCT_COLOR_SHIFT +=0D WORK_STRUCT_COLOR_BITS,=0D =0D =0D WORK_OFFQ_FLAG_BASE =3D WORK_STRUCT_COLOR_SHIFT,=0D =0D __WORK_OFFQ_CANCELING =3D WORK_OFFQ_FLAG_BASE,=0D WORK_OFFQ_CANCELING =3D (1 << __WORK_OFFQ_CANCELING),=0D =0D =0D =0D =0D =0D =0D WORK_OFFQ_FLAG_BITS =3D 1,=0D WORK_OFFQ_POOL_SHIFT =3D WORK_OFFQ_FLAG_BASE + WORK_OFFQ_FLAG_BITS,=0D WORK_OFFQ_LEFT =3D 64 - WORK_OFFQ_POOL_SHIFT,=0D WORK_OFFQ_POOL_BITS =3D WORK_OFFQ_LEFT <=3D 31 ? WORK_OFFQ_LEFT : 31,=0D WORK_OFFQ_POOL_NONE =3D (1LU << WORK_OFFQ_POOL_BITS) - 1,=0D =0D =0D WORK_STRUCT_FLAG_MASK =3D (1UL << WORK_STRUCT_FLAG_BITS) - 1,=0D WORK_STRUCT_WQ_DATA_MASK =3D ~WORK_STRUCT_FLAG_MASK,=0D WORK_STRUCT_NO_POOL =3D (unsigned long)WORK_OFFQ_POOL_NONE << WORK_OFFQ_PO= OL_SHIFT,=0D =0D =0D WORK_BUSY_PENDING =3D 1 << 0,=0D WORK_BUSY_RUNNING =3D 1 << 1,=0D =0D =0D WORKER_DESC_LEN =3D 24,=0D };=0D =0D struct work_struct {=0D atomic_long_t data;=0D struct list_head entry;=0D work_func_t func;=0D =0D struct lockdep_map lockdep_map;=0D =0D };=0D =0D =0D =0D =0D =0D struct delayed_work {=0D struct work_struct work;=0D struct timer_list timer;=0D =0D =0D struct workqueue_struct *wq;=0D int cpu;=0D };=0D =0D struct rcu_work {=0D struct work_struct work;=0D struct callback_head rcu;=0D =0D =0D struct workqueue_struct *wq;=0D };=0D =0D =0D =0D =0D =0D =0D struct workqueue_attrs {=0D =0D =0D =0D int nice;=0D =0D =0D =0D =0D cpumask_var_t cpumask;=0D # 150 "./include/linux/workqueue.h"=0D bool no_numa;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct delayed_work *to_dela= yed_work(struct work_struct *work)=0D {=0D return ({ void *__mptr =3D (void *)(work); _Static_assert(__builtin_types_= compatible_p(typeof(*(work)), typeof(((struct delayed_work *)0)->work)) || = __builtin_types_compatible_p(typeof(*(work)), typeof(void)), "pointer type = mismatch in container_of()"); ((struct delayed_work *)(__mptr - __builtin_o= ffsetof(struct delayed_work, work))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rcu_work *to_rcu_work= (struct work_struct *work)=0D {=0D return ({ void *__mptr =3D (void *)(work); _Static_assert(__builtin_types_= compatible_p(typeof(*(work)), typeof(((struct rcu_work *)0)->work)) || __bu= iltin_types_compatible_p(typeof(*(work)), typeof(void)), "pointer type mism= atch in container_of()"); ((struct rcu_work *)(__mptr - __builtin_offsetof(= struct rcu_work, work))); });=0D }=0D =0D struct execute_work {=0D struct work_struct work;=0D };=0D # 210 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __init_work(struct work= _struct *work, int onstack) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_work_on_stack(s= truct work_struct *work) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_delayed_work_on= _stack(struct delayed_work *work) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int work_static(str= uct work_struct *work) { return 0; }=0D # 303 "./include/linux/workqueue.h"=0D enum {=0D WQ_UNBOUND =3D 1 << 1,=0D WQ_FREEZABLE =3D 1 << 2,=0D WQ_MEM_RECLAIM =3D 1 << 3,=0D WQ_HIGHPRI =3D 1 << 4,=0D WQ_CPU_INTENSIVE =3D 1 << 5,=0D WQ_SYSFS =3D 1 << 6,=0D # 336 "./include/linux/workqueue.h"=0D WQ_POWER_EFFICIENT =3D 1 << 7,=0D =0D __WQ_DRAINING =3D 1 << 16,=0D __WQ_ORDERED =3D 1 << 17,=0D __WQ_LEGACY =3D 1 << 18,=0D __WQ_ORDERED_EXPLICIT =3D 1 << 19,=0D =0D WQ_MAX_ACTIVE =3D 512,=0D WQ_MAX_UNBOUND_PER_CPU =3D 4,=0D WQ_DFL_ACTIVE =3D WQ_MAX_ACTIVE / 2,=0D };=0D # 380 "./include/linux/workqueue.h"=0D extern struct workqueue_struct *system_wq;=0D extern struct workqueue_struct *system_highpri_wq;=0D extern struct workqueue_struct *system_long_wq;=0D extern struct workqueue_struct *system_unbound_wq;=0D extern struct workqueue_struct *system_freezable_wq;=0D extern struct workqueue_struct *system_power_efficient_wq;=0D extern struct workqueue_struct *system_freezable_power_efficient_wq;=0D # 402 "./include/linux/workqueue.h"=0D __attribute__((__format__(printf, 1, 4))) struct workqueue_struct *=0D alloc_workqueue(const char *fmt, unsigned int flags, int max_active, ...);= =0D # 430 "./include/linux/workqueue.h"=0D extern void destroy_workqueue(struct workqueue_struct *wq);=0D =0D struct workqueue_attrs *alloc_workqueue_attrs(void);=0D void free_workqueue_attrs(struct workqueue_attrs *attrs);=0D int apply_workqueue_attrs(struct workqueue_struct *wq,=0D const struct workqueue_attrs *attrs);=0D int workqueue_set_unbound_cpumask(cpumask_var_t cpumask);=0D =0D extern bool queue_work_on(int cpu, struct workqueue_struct *wq,=0D struct work_struct *work);=0D extern bool queue_work_node(int node, struct workqueue_struct *wq,=0D struct work_struct *work);=0D extern bool queue_delayed_work_on(int cpu, struct workqueue_struct *wq,=0D struct delayed_work *work, unsigned long delay);=0D extern bool mod_delayed_work_on(int cpu, struct workqueue_struct *wq,=0D struct delayed_work *dwork, unsigned long delay);=0D extern bool queue_rcu_work(struct workqueue_struct *wq, struct rcu_work *rw= ork);=0D =0D extern void flush_workqueue(struct workqueue_struct *wq);=0D extern void drain_workqueue(struct workqueue_struct *wq);=0D =0D extern int schedule_on_each_cpu(work_func_t func);=0D =0D int execute_in_process_context(work_func_t fn, struct execute_work *);=0D =0D extern bool flush_work(struct work_struct *work);=0D extern bool cancel_work_sync(struct work_struct *work);=0D =0D extern bool flush_delayed_work(struct delayed_work *dwork);=0D extern bool cancel_delayed_work(struct delayed_work *dwork);=0D extern bool cancel_delayed_work_sync(struct delayed_work *dwork);=0D =0D extern bool flush_rcu_work(struct rcu_work *rwork);=0D =0D extern void workqueue_set_max_active(struct workqueue_struct *wq,=0D int max_active);=0D extern struct work_struct *current_work(void);=0D extern bool current_is_workqueue_rescuer(void);=0D extern bool workqueue_congested(int cpu, struct workqueue_struct *wq);=0D extern unsigned int work_busy(struct work_struct *work);=0D extern __attribute__((__format__(printf, 1, 2))) void set_worker_desc(const= char *fmt, ...);=0D extern void print_worker_info(const char *log_lvl, struct task_struct *task= );=0D extern void show_all_workqueues(void);=0D extern void show_one_workqueue(struct workqueue_struct *wq);=0D extern void wq_worker_comm(char *buf, size_t size, struct task_struct *task= );=0D # 499 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool queue_work(struct workq= ueue_struct *wq,=0D struct work_struct *work)=0D {=0D return queue_work_on(WORK_CPU_UNBOUND, wq, work);=0D }=0D # 513 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool queue_delayed_work(stru= ct workqueue_struct *wq,=0D struct delayed_work *dwork,=0D unsigned long delay)=0D {=0D return queue_delayed_work_on(WORK_CPU_UNBOUND, wq, dwork, delay);=0D }=0D # 528 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mod_delayed_work(struct= workqueue_struct *wq,=0D struct delayed_work *dwork,=0D unsigned long delay)=0D {=0D return mod_delayed_work_on(WORK_CPU_UNBOUND, wq, dwork, delay);=0D }=0D # 542 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool schedule_work_on(int cp= u, struct work_struct *work)=0D {=0D return queue_work_on(cpu, system_wq, work);=0D }=0D # 561 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool schedule_work(struct wo= rk_struct *work)=0D {=0D return queue_work(system_wq, work);=0D }=0D # 590 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_scheduled_work(vo= id)=0D {=0D flush_workqueue(system_wq);=0D }=0D # 604 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool schedule_delayed_work_o= n(int cpu, struct delayed_work *dwork,=0D unsigned long delay)=0D {=0D return queue_delayed_work_on(cpu, system_wq, dwork, delay);=0D }=0D # 618 "./include/linux/workqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool schedule_delayed_work(s= truct delayed_work *dwork,=0D unsigned long delay)=0D {=0D return queue_delayed_work(system_wq, dwork, delay);=0D }=0D # 634 "./include/linux/workqueue.h"=0D long work_on_cpu(int cpu, long (*fn)(void *), void *arg);=0D long work_on_cpu_safe(int cpu, long (*fn)(void *), void *arg);=0D # 645 "./include/linux/workqueue.h"=0D int workqueue_sysfs_register(struct workqueue_struct *wq);=0D =0D =0D =0D =0D =0D =0D void wq_watchdog_touch(int cpu);=0D =0D =0D =0D =0D =0D int workqueue_prepare_cpu(unsigned int cpu);=0D int workqueue_online_cpu(unsigned int cpu);=0D int workqueue_offline_cpu(unsigned int cpu);=0D =0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) workqueue_init_early(void);=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) workqueue_init(void);=0D # 19 "./include/linux/mm_types.h" 2=0D # 1 "./include/linux/seqlock.h" 1=0D # 19 "./include/linux/seqlock.h"=0D # 1 "./include/linux/mutex.h" 1=0D # 63 "./include/linux/mutex.h"=0D struct mutex {=0D atomic_long_t owner;=0D raw_spinlock_t wait_lock;=0D =0D struct optimistic_spin_queue osq;=0D =0D struct list_head wait_list;=0D =0D void *magic;=0D =0D =0D struct lockdep_map dep_map;=0D =0D };=0D =0D =0D =0D =0D =0D =0D extern void mutex_destroy(struct mutex *lock);=0D # 118 "./include/linux/mutex.h"=0D extern void __mutex_init(struct mutex *lock, const char *name,=0D struct lock_class_key *key);=0D =0D =0D =0D =0D =0D =0D =0D extern bool mutex_is_locked(struct mutex *lock);=0D # 178 "./include/linux/mutex.h"=0D extern void mutex_lock_nested(struct mutex *lock, unsigned int subclass);=0D extern void _mutex_lock_nest_lock(struct mutex *lock, struct lockdep_map *n= est_lock);=0D =0D extern int __attribute__((__warn_unused_result__)) mutex_lock_interruptible= _nested(struct mutex *lock,=0D unsigned int subclass);=0D extern int __attribute__((__warn_unused_result__)) mutex_lock_killable_nest= ed(struct mutex *lock,=0D unsigned int subclass);=0D extern void mutex_lock_io_nested(struct mutex *lock, unsigned int subclass)= ;=0D # 217 "./include/linux/mutex.h"=0D extern int mutex_trylock(struct mutex *lock);=0D extern void mutex_unlock(struct mutex *lock);=0D =0D extern int atomic_dec_and_mutex_lock(atomic_t *cnt, struct mutex *lock);=0D # 20 "./include/linux/seqlock.h" 2=0D # 1 "./include/linux/ww_mutex.h" 1=0D # 21 "./include/linux/ww_mutex.h"=0D # 1 "./include/linux/rtmutex.h" 1=0D # 21 "./include/linux/rtmutex.h"=0D extern int max_lock_depth;=0D =0D struct rt_mutex_base {=0D raw_spinlock_t wait_lock;=0D struct rb_root_cached waiters;=0D struct task_struct *owner;=0D };=0D # 42 "./include/linux/rtmutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt_mutex_base_is_locked= (struct rt_mutex_base *lock)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_71(void) ; if (!((sizeof(lock->owner) =3D=3D sizeof(char) || sizeof(loc= k->owner) =3D=3D sizeof(short) || sizeof(lock->owner) =3D=3D sizeof(int) ||= sizeof(lock->owner) =3D=3D sizeof(long)) || sizeof(lock->owner) =3D=3D siz= eof(long long))) __compiletime_assert_71(); } while (0); (*(const volatile = typeof( _Generic((lock->owner), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (lock->owner))) *)&(lock->owner)); }) !=3D ((void *)0);=0D }=0D =0D extern void rt_mutex_base_init(struct rt_mutex_base *rtb);=0D # 57 "./include/linux/rtmutex.h"=0D struct rt_mutex {=0D struct rt_mutex_base rtmutex;=0D =0D struct lockdep_map dep_map;=0D =0D };=0D =0D struct rt_mutex_waiter;=0D struct hrtimer_sleeper;=0D =0D =0D extern void rt_mutex_debug_task_free(struct task_struct *tsk);=0D # 98 "./include/linux/rtmutex.h"=0D extern void __rt_mutex_init(struct rt_mutex *lock, const char *name, struct= lock_class_key *key);=0D =0D =0D extern void rt_mutex_lock_nested(struct rt_mutex *lock, unsigned int subcla= ss);=0D extern void _rt_mutex_lock_nest_lock(struct rt_mutex *lock, struct lockdep_= map *nest_lock);=0D # 116 "./include/linux/rtmutex.h"=0D extern int rt_mutex_lock_interruptible(struct rt_mutex *lock);=0D extern int rt_mutex_lock_killable(struct rt_mutex *lock);=0D extern int rt_mutex_trylock(struct rt_mutex *lock);=0D =0D extern void rt_mutex_unlock(struct rt_mutex *lock);=0D # 22 "./include/linux/ww_mutex.h" 2=0D # 38 "./include/linux/ww_mutex.h"=0D struct ww_class {=0D atomic_long_t stamp;=0D struct lock_class_key acquire_key;=0D struct lock_class_key mutex_key;=0D const char *acquire_name;=0D const char *mutex_name;=0D unsigned int is_wait_die;=0D };=0D =0D struct ww_mutex {=0D struct mutex base;=0D struct ww_acquire_ctx *ctx;=0D =0D struct ww_class *ww_class;=0D =0D };=0D =0D struct ww_acquire_ctx {=0D struct task_struct *task;=0D unsigned long stamp;=0D unsigned int acquired;=0D unsigned short wounded;=0D unsigned short is_wait_die;=0D =0D unsigned int done_acquire;=0D struct ww_class *ww_class;=0D void *contending_lock;=0D =0D =0D struct lockdep_map dep_map;=0D =0D =0D =0D =0D =0D };=0D # 98 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ww_mutex_init(struct ww= _mutex *lock,=0D struct ww_class *ww_class)=0D {=0D __mutex_init(&lock->base,ww_class->mutex_name,&ww_class->mutex_key);=0D lock->ctx =3D ((void *)0);=0D =0D lock->ww_class =3D ww_class;=0D =0D }=0D # 132 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ww_acquire_init(struct = ww_acquire_ctx *ctx,=0D struct ww_class *ww_class)=0D {=0D ctx->task =3D get_current();=0D ctx->stamp =3D atomic_long_inc_return_relaxed(&ww_class->stamp);=0D ctx->acquired =3D 0;=0D ctx->wounded =3D false;=0D ctx->is_wait_die =3D ww_class->is_wait_die;=0D =0D ctx->ww_class =3D ww_class;=0D ctx->done_acquire =3D 0;=0D ctx->contending_lock =3D ((void *)0);=0D =0D =0D debug_check_no_locks_freed((void *)ctx, sizeof(*ctx));=0D lockdep_init_map(&ctx->dep_map, ww_class->acquire_name,=0D &ww_class->acquire_key, 0);=0D lock_acquire(&ctx->dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long)__buil= tin_return_address(0));=0D =0D =0D =0D =0D =0D }=0D # 168 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ww_acquire_done(struct = ww_acquire_ctx *ctx)=0D {=0D =0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(ctx)->dep= _map) !=3D 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __= volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\= n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" = ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/lin= ux/ww_mutex.h"), "i" (171), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct= bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } w= hile (0);=0D =0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(ctx->done= _acquire), 0)) { do { } while(0); if (debug_locks_off() && !debug_locks_sil= ent) ({ int __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on)= , 0)) do { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s)", "ctx->= done_acquire"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsecti= on __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 = - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".po= psection" : : "i" ("include/linux/ww_mutex.h"), "i" (173), "i" ((1 << 0)|((= 1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { = } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { }= while(0); __ret =3D 1; } __ret; });=0D ctx->done_acquire =3D 1;=0D =0D }=0D # 185 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ww_acquire_fini(struct = ww_acquire_ctx *ctx)=0D {=0D =0D lock_release(&ctx->dep_map, ({ __label__ __here; __here: (unsigned long)&&= __here; }));=0D =0D =0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(ctx->acqu= ired), 0)) { do { } while(0); if (debug_locks_off() && !debug_locks_silent)= ({ int __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)= ) do { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s)", "ctx->acqu= ired"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/ww_mutex.h"), "i" (191), "i" ((1 << 0)|((1 << 3) = | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(= 0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { } while(0= ); __ret =3D 1; } __ret; });=0D if (!0)=0D =0D =0D =0D =0D ctx->done_acquire =3D 1;=0D =0D if (!1)=0D =0D ctx->acquired =3D ~0U;=0D =0D }=0D # 234 "./include/linux/ww_mutex.h"=0D extern int ww_mutex_lock(struct ww_mutex *lock, struct ww_acquire_ctx *ctx)= ;=0D # 266 "./include/linux/ww_mutex.h"=0D extern int __attribute__((__warn_unused_result__)) ww_mutex_lock_interrupti= ble(struct ww_mutex *lock,=0D struct ww_acquire_ctx *ctx);=0D # 292 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D ww_mutex_lock_slow(struct ww_mutex *lock, struct ww_acquire_ctx *ctx)=0D {=0D int ret;=0D =0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(!ctx->con= tending_lock), 0)) { do { } while(0); if (debug_locks_off() && !debug_locks= _silent) ({ int __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn= _on), 0)) do { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s)", "!= ctx->contending_lock"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/ww_mutex.h"), "i" (297), "i" ((1 = << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0= ); do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })= ; do { } while(0); __ret =3D 1; } __ret; });=0D =0D ret =3D ww_mutex_lock(lock, ctx);=0D (void)ret;=0D }=0D # 328 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__))=0D ww_mutex_lock_slow_interruptible(struct ww_mutex *lock,=0D struct ww_acquire_ctx *ctx)=0D {=0D =0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(!ctx->con= tending_lock), 0)) { do { } while(0); if (debug_locks_off() && !debug_locks= _silent) ({ int __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn= _on), 0)) do { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s)", "!= ctx->contending_lock"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/ww_mutex.h"), "i" (333), "i" ((1 = << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0= ); do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })= ; do { } while(0); __ret =3D 1; } __ret; });=0D =0D return ww_mutex_lock_interruptible(lock, ctx);=0D }=0D =0D extern void ww_mutex_unlock(struct ww_mutex *lock);=0D =0D extern int __attribute__((__warn_unused_result__)) ww_mutex_trylock(struct = ww_mutex *lock,=0D struct ww_acquire_ctx *ctx);=0D # 351 "./include/linux/ww_mutex.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ww_mutex_destroy(struct= ww_mutex *lock)=0D {=0D =0D mutex_destroy(&lock->base);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ww_mutex_is_locked(stru= ct ww_mutex *lock)=0D {=0D return mutex_is_locked((&lock->base));=0D }=0D # 21 "./include/linux/seqlock.h" 2=0D # 65 "./include/linux/seqlock.h"=0D typedef struct seqcount {=0D unsigned sequence;=0D =0D struct lockdep_map dep_map;=0D =0D } seqcount_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __seqcount_init(seqcoun= t_t *s, const char *name,=0D struct lock_class_key *key)=0D {=0D =0D =0D =0D lockdep_init_map(&s->dep_map, name, key, 0);=0D s->sequence =3D 0;=0D }=0D # 97 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seqcount_lockdep_reader= _access(const seqcount_t *s)=0D {=0D seqcount_t *l =3D (seqcount_t *)s;=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D lock_acquire(&l->dep_map, 0, 0, 2, 1, ((void *)0), (unsigned long)__builti= n_return_address(0));=0D lock_release(&l->dep_map, (unsigned long)__builtin_return_address(0));=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D }=0D # 254 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) seqcount_t *__seqprop_ptr(se= qcount_t *s)=0D {=0D return s;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned __seqprop_sequence(= const seqcount_t *s)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_72(void) ; if (!((sizeof(s->sequence) =3D=3D sizeof(char) || sizeof(s->= sequence) =3D=3D sizeof(short) || sizeof(s->sequence) =3D=3D sizeof(int) ||= sizeof(s->sequence) =3D=3D sizeof(long)) || sizeof(s->sequence) =3D=3D siz= eof(long long))) __compiletime_assert_72(); } while (0); (*(const volatile = typeof( _Generic((s->sequence), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (s->sequence))) *)&(s->sequence)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __seqprop_preemptible(c= onst seqcount_t *s)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __seqprop_assert(const = seqcount_t *s)=0D {=0D do { } while (0);=0D }=0D =0D =0D =0D typedef struct seqcount_raw_spinlock { seqcount_t seqcount; raw_spinlock_t = *lock; } seqcount_raw_spinlock_t; static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) seqcount_t * __seqprop_raw_spinloc= k_ptr(seqcount_raw_spinlock_t *s) { return &s->seqcount; } static inline __= attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pa= tchable_function_entry(0, 0))) __attribute__((__always_inline__)) unsigned = __seqprop_raw_spinlock_sequence(const seqcount_raw_spinlock_t *s) { unsigne= d seq =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_73(void) ; if (!((sizeof(s->seqcount.sequence) =3D=3D sizeof(char) ||= sizeof(s->seqcount.sequence) =3D=3D sizeof(short) || sizeof(s->seqcount.se= quence) =3D=3D sizeof(int) || sizeof(s->seqcount.sequence) =3D=3D sizeof(lo= ng)) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long long))) __compileti= me_assert_73(); } while (0); (*(const volatile typeof( _Generic((s->seqcoun= t.sequence), char: (char)0, unsigned char: (unsigned char)0, signed char: (= signed char)0, unsigned short: (unsigned short)0, signed short: (signed sho= rt)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lo= ng: (unsigned long)0, signed long: (signed long)0, unsigned long long: (uns= igned long long)0, signed long long: (signed long long)0, default: (s->seqc= ount.sequence))) *)&(s->seqcount.sequence)); }); if (!0) return seq; if (fa= lse && __builtin_expect(!!(seq & 1), 0)) { _raw_spin_lock(s->lock); _raw_sp= in_unlock(s->lock); seq =3D ({ do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_74(void) ; if (!((sizeof(s->seqcount.sequence) =3D= =3D sizeof(char) || sizeof(s->seqcount.sequence) =3D=3D sizeof(short) || si= zeof(s->seqcount.sequence) =3D=3D sizeof(int) || sizeof(s->seqcount.sequenc= e) =3D=3D sizeof(long)) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long = long))) __compiletime_assert_74(); } while (0); (*(const volatile typeof( _= Generic((s->seqcount.sequence), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (s->seqcount.sequence))) *)&(s->seqcount.sequence)); }); } retur= n seq; } static inline __attribute__((__gnu_inline__)) __attribute__((__unu= sed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__al= ways_inline__)) bool __seqprop_raw_spinlock_preemptible(const seqcount_raw_= spinlock_t *s) { if (!0) return false; return false; } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) __attribute__((__always_inline__)) void __seqpro= p_raw_spinlock_assert(const seqcount_raw_spinlock_t *s) { do { ({ int __ret= _warn_on =3D !!(debug_locks && !(lock_is_held(&(s->lock)->dep_map) !=3D 0))= ; if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/seqlock.h")= , "i" (276), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); = } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } while (0); }=0D typedef struct seqcount_spinlock { seqcount_t seqcount; spinlock_t *lock; }= seqcount_spinlock_t; static inline __attribute__((__gnu_inline__)) __attri= bute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attr= ibute__((__always_inline__)) seqcount_t * __seqprop_spinlock_ptr(seqcount_s= pinlock_t *s) { return &s->seqcount; } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) __attribute__((__always_inline__)) unsigned __seqprop_spinlock_s= equence(const seqcount_spinlock_t *s) { unsigned seq =3D ({ do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_75(void) ; if (!((size= of(s->seqcount.sequence) =3D=3D sizeof(char) || sizeof(s->seqcount.sequence= ) =3D=3D sizeof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(int) |= | sizeof(s->seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcount.s= equence) =3D=3D sizeof(long long))) __compiletime_assert_75(); } while (0);= (*(const volatile typeof( _Generic((s->seqcount.sequence), char: (char)0, = unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned shor= t: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigne= d int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed= long: (signed long)0, unsigned long long: (unsigned long long)0, signed lo= ng long: (signed long long)0, default: (s->seqcount.sequence))) *)&(s->seqc= ount.sequence)); }); if (!0) return seq; if (0 && __builtin_expect(!!(seq &= 1), 0)) { spin_lock(s->lock); spin_unlock(s->lock); seq =3D ({ do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_76(void) ; if (!((= sizeof(s->seqcount.sequence) =3D=3D sizeof(char) || sizeof(s->seqcount.sequ= ence) =3D=3D sizeof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(in= t) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcou= nt.sequence) =3D=3D sizeof(long long))) __compiletime_assert_76(); } while = (0); (*(const volatile typeof( _Generic((s->seqcount.sequence), char: (char= )0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned = short: (unsigned short)0, signed short: (signed short)0, unsigned int: (uns= igned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, si= gned long: (signed long)0, unsigned long long: (unsigned long long)0, signe= d long long: (signed long long)0, default: (s->seqcount.sequence))) *)&(s->= seqcount.sequence)); }); } return seq; } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) __attribute__((__always_inline__)) bool __seqprop_spinlock_pre= emptible(const seqcount_spinlock_t *s) { if (!0) return 0; return false; } = static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __seqprop_spinlock_assert(const seqcount_spinlock_t *s) { do { = ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(s->lock)->dep_m= ap) !=3D 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __vo= latile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\= t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".= half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux= /seqlock.h"), "i" (277), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bu= g_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } whil= e (0); }=0D typedef struct seqcount_rwlock { seqcount_t seqcount; rwlock_t *lock; } seq= count_rwlock_t; static inline __attribute__((__gnu_inline__)) __attribute__= ((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute_= _((__always_inline__)) seqcount_t * __seqprop_rwlock_ptr(seqcount_rwlock_t = *s) { return &s->seqcount; } static inline __attribute__((__gnu_inline__)) = __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)))= __attribute__((__always_inline__)) unsigned __seqprop_rwlock_sequence(cons= t seqcount_rwlock_t *s) { unsigned seq =3D ({ do { __attribute__((__noretur= n__)) extern void __compiletime_assert_77(void) ; if (!((sizeof(s->seqcount= =2Esequence) =3D=3D sizeof(char) || sizeof(s->seqcount.sequence) =3D=3D siz= eof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(int) || sizeof(s->= seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcount.sequence) =3D= =3D sizeof(long long))) __compiletime_assert_77(); } while (0); (*(const vo= latile typeof( _Generic((s->seqcount.sequence), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: (s->seqcount.sequence))) *)&(s->seqcount.sequenc= e)); }); if (!0) return seq; if (0 && __builtin_expect(!!(seq & 1), 0)) { _= raw_read_lock(s->lock); _raw_read_unlock(s->lock); seq =3D ({ do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_78(void) ; if (!((si= zeof(s->seqcount.sequence) =3D=3D sizeof(char) || sizeof(s->seqcount.sequen= ce) =3D=3D sizeof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(int)= || sizeof(s->seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcount= =2Esequence) =3D=3D sizeof(long long))) __compiletime_assert_78(); } while = (0); (*(const volatile typeof( _Generic((s->seqcount.sequence), char: (char= )0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned = short: (unsigned short)0, signed short: (signed short)0, unsigned int: (uns= igned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, si= gned long: (signed long)0, unsigned long long: (unsigned long long)0, signe= d long long: (signed long long)0, default: (s->seqcount.sequence))) *)&(s->= seqcount.sequence)); }); } return seq; } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) __attribute__((__always_inline__)) bool __seqprop_rwlock_preem= ptible(const seqcount_rwlock_t *s) { if (!0) return 0; return false; } stat= ic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __att= ribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__= )) void __seqprop_rwlock_assert(const seqcount_rwlock_t *s) { do { ({ int _= _ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(s->lock)->dep_map) !=3D= 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/seqlock= =2Eh"), "i" (278), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entr= y))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } while (0);= }=0D typedef struct seqcount_mutex { seqcount_t seqcount; struct mutex *lock; } = seqcount_mutex_t; static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) seqcount_t * __seqprop_mutex_ptr(seqcount_mutex_t = *s) { return &s->seqcount; } static inline __attribute__((__gnu_inline__)) = __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)))= __attribute__((__always_inline__)) unsigned __seqprop_mutex_sequence(const= seqcount_mutex_t *s) { unsigned seq =3D ({ do { __attribute__((__noreturn_= _)) extern void __compiletime_assert_79(void) ; if (!((sizeof(s->seqcount.s= equence) =3D=3D sizeof(char) || sizeof(s->seqcount.sequence) =3D=3D sizeof(= short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(int) || sizeof(s->seqc= ount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcount.sequence) =3D=3D = sizeof(long long))) __compiletime_assert_79(); } while (0); (*(const volati= le typeof( _Generic((s->seqcount.sequence), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: (s->seqcount.sequence))) *)&(s->seqcount.sequence));= }); if (!0) return seq; if (true && __builtin_expect(!!(seq & 1), 0)) { mu= tex_lock_nested(s->lock, 0); mutex_unlock(s->lock); seq =3D ({ do { __attri= bute__((__noreturn__)) extern void __compiletime_assert_80(void) ; if (!((s= izeof(s->seqcount.sequence) =3D=3D sizeof(char) || sizeof(s->seqcount.seque= nce) =3D=3D sizeof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(int= ) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqcoun= t.sequence) =3D=3D sizeof(long long))) __compiletime_assert_80(); } while (= 0); (*(const volatile typeof( _Generic((s->seqcount.sequence), char: (char)= 0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned s= hort: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsi= gned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, sig= ned long: (signed long)0, unsigned long long: (unsigned long long)0, signed= long long: (signed long long)0, default: (s->seqcount.sequence))) *)&(s->s= eqcount.sequence)); }); } return seq; } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) bool __seqprop_mutex_preempt= ible(const seqcount_mutex_t *s) { if (!0) return true; return false; } stat= ic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __att= ribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__= )) void __seqprop_mutex_assert(const seqcount_mutex_t *s) { do { ({ int __r= et_warn_on =3D !!(debug_locks && !(lock_is_held(&(s->lock)->dep_map) !=3D 0= )); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ (= "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word"= " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2= " "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/seqlock.h= "), "i" (279), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry)))= ; } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } while (0); }=0D typedef struct seqcount_ww_mutex { seqcount_t seqcount; struct ww_mutex *lo= ck; } seqcount_ww_mutex_t; static inline __attribute__((__gnu_inline__)) __= attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) _= _attribute__((__always_inline__)) seqcount_t * __seqprop_ww_mutex_ptr(seqco= unt_ww_mutex_t *s) { return &s->seqcount; } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) unsigned __seqprop_ww_mu= tex_sequence(const seqcount_ww_mutex_t *s) { unsigned seq =3D ({ do { __att= ribute__((__noreturn__)) extern void __compiletime_assert_81(void) ; if (!(= (sizeof(s->seqcount.sequence) =3D=3D sizeof(char) || sizeof(s->seqcount.seq= uence) =3D=3D sizeof(short) || sizeof(s->seqcount.sequence) =3D=3D sizeof(i= nt) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long)) || sizeof(s->seqco= unt.sequence) =3D=3D sizeof(long long))) __compiletime_assert_81(); } while= (0); (*(const volatile typeof( _Generic((s->seqcount.sequence), char: (cha= r)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned= short: (unsigned short)0, signed short: (signed short)0, unsigned int: (un= signed int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, s= igned long: (signed long)0, unsigned long long: (unsigned long long)0, sign= ed long long: (signed long long)0, default: (s->seqcount.sequence))) *)&(s-= >seqcount.sequence)); }); if (!0) return seq; if (true && __builtin_expect(= !!(seq & 1), 0)) { ww_mutex_lock(s->lock, ((void *)0)); ww_mutex_unlock(s->= lock); seq =3D ({ do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_82(void) ; if (!((sizeof(s->seqcount.sequence) =3D=3D sizeof(cha= r) || sizeof(s->seqcount.sequence) =3D=3D sizeof(short) || sizeof(s->seqcou= nt.sequence) =3D=3D sizeof(int) || sizeof(s->seqcount.sequence) =3D=3D size= of(long)) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long long))) __comp= iletime_assert_82(); } while (0); (*(const volatile typeof( _Generic((s->se= qcount.sequence), char: (char)0, unsigned char: (unsigned char)0, signed ch= ar: (signed char)0, unsigned short: (unsigned short)0, signed short: (signe= d short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsign= ed long: (unsigned long)0, signed long: (signed long)0, unsigned long long:= (unsigned long long)0, signed long long: (signed long long)0, default: (s-= >seqcount.sequence))) *)&(s->seqcount.sequence)); }); } return seq; } stati= c inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attr= ibute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)= ) bool __seqprop_ww_mutex_preemptible(const seqcount_ww_mutex_t *s) { if (!= 0) return true; return false; } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void __seqprop_ww_mutex_assert(const= seqcount_ww_mutex_t *s) { do { ({ int __ret_warn_on =3D !!(debug_locks && = !(lock_is_held(&(&s->lock->base)->dep_map) !=3D 0)); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/seqlock.h"), "i" (280), "i" ((1 << = 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_e= xpect(!!(__ret_warn_on), 0); }); } while (0); }=0D # 430 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int do___read_seqcount_retry= (const seqcount_t *s, unsigned start)=0D {=0D kcsan_atomic_next(0);=0D return __builtin_expect(!!(({ do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_83(void) ; if (!((sizeof(s->sequence) =3D=3D sizeof= (char) || sizeof(s->sequence) =3D=3D sizeof(short) || sizeof(s->sequence) = =3D=3D sizeof(int) || sizeof(s->sequence) =3D=3D sizeof(long)) || sizeof(s-= >sequence) =3D=3D sizeof(long long))) __compiletime_assert_83(); } while (0= ); (*(const volatile typeof( _Generic((s->sequence), char: (char)0, unsigne= d char: (unsigned char)0, signed char: (signed char)0, unsigned short: (uns= igned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0= , signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: = (signed long)0, unsigned long long: (unsigned long long)0, signed long long= : (signed long long)0, default: (s->sequence))) *)&(s->sequence)); }) !=3D = start), 0);=0D }=0D # 450 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int do_read_seqcount_retry(c= onst seqcount_t *s, unsigned start)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "r" "," "r" : : : "m= emory"); } while (0);=0D return do___read_seqcount_retry(s, start);=0D }=0D # 470 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_raw_write_seqcount_b= egin(seqcount_t *s)=0D {=0D kcsan_nestable_atomic_begin();=0D s->sequence++;=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D }=0D # 491 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_raw_write_seqcount_e= nd(seqcount_t *s)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D s->sequence++;=0D kcsan_nestable_atomic_end();=0D }=0D # 517 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_write_seqcount_begin= _nested(seqcount_t *s, int subclass)=0D {=0D do_raw_write_seqcount_begin(s);=0D lock_acquire(&s->dep_map, subclass, 0, 0, 1, ((void *)0), (unsigned long)_= _builtin_return_address(0));=0D }=0D # 543 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_write_seqcount_begin= (seqcount_t *s)=0D {=0D do_write_seqcount_begin_nested(s, 0);=0D }=0D # 563 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_write_seqcount_end(s= eqcount_t *s)=0D {=0D lock_release(&s->dep_map, (unsigned long)__builtin_return_address(0));=0D do_raw_write_seqcount_end(s);=0D }=0D # 613 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_raw_write_seqcount_b= arrier(seqcount_t *s)=0D {=0D kcsan_nestable_atomic_begin();=0D s->sequence++;=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D s->sequence++;=0D kcsan_nestable_atomic_end();=0D }=0D # 633 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_write_seqcount_inval= idate(seqcount_t *s)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D kcsan_nestable_atomic_begin();=0D s->sequence+=3D2;=0D kcsan_nestable_atomic_end();=0D }=0D # 651 "./include/linux/seqlock.h"=0D typedef struct {=0D seqcount_t seqcount;=0D } seqcount_latch_t;=0D # 680 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned raw_read_seqcount_l= atch(const seqcount_latch_t *s)=0D {=0D =0D =0D =0D =0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_84(void) ; if (!((sizeof(s->seqcount.sequence) =3D=3D sizeof(char) || s= izeof(s->seqcount.sequence) =3D=3D sizeof(short) || sizeof(s->seqcount.sequ= ence) =3D=3D sizeof(int) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long= )) || sizeof(s->seqcount.sequence) =3D=3D sizeof(long long))) __compiletime= _assert_84(); } while (0); (*(const volatile typeof( _Generic((s->seqcount.= sequence), char: (char)0, unsigned char: (unsigned char)0, signed char: (si= gned char)0, unsigned short: (unsigned short)0, signed short: (signed short= )0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long= : (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsig= ned long long)0, signed long long: (signed long long)0, default: (s->seqcou= nt.sequence))) *)&(s->seqcount.sequence)); });=0D }=0D # 696 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D read_seqcount_latch_retry(const seqcount_latch_t *s, unsigned start)=0D {=0D return do_read_seqcount_retry(_Generic(*(&s->seqcount), seqcount_t: __seqp= rop_ptr((void *)(&s->seqcount)), seqcount_raw_spinlock_t: __seqprop_raw_spi= nlock_ptr((void *)((&s->seqcount))), seqcount_spinlock_t: __seqprop_spinloc= k_ptr((void *)((&s->seqcount))), seqcount_rwlock_t: __seqprop_rwlock_ptr((v= oid *)((&s->seqcount))), seqcount_mutex_t: __seqprop_mutex_ptr((void *)((&s= ->seqcount))), seqcount_ww_mutex_t: __seqprop_ww_mutex_ptr((void *)((&s->se= qcount)))), start);=0D }=0D # 783 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void raw_write_seqcount_latc= h(seqcount_latch_t *s)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D s->seqcount.sequence++;=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D }=0D # 800 "./include/linux/seqlock.h"=0D typedef struct {=0D =0D =0D =0D =0D seqcount_spinlock_t seqcount;=0D spinlock_t lock;=0D } seqlock_t;=0D # 838 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned read_seqbegin(const= seqlock_t *sl)=0D {=0D unsigned ret =3D ({ seqcount_lockdep_reader_access(_Generic(*(&sl->seqcoun= t), seqcount_t: __seqprop_ptr((void *)(&sl->seqcount)), seqcount_raw_spinlo= ck_t: __seqprop_raw_spinlock_ptr((void *)((&sl->seqcount))), seqcount_spinl= ock_t: __seqprop_spinlock_ptr((void *)((&sl->seqcount))), seqcount_rwlock_t= : __seqprop_rwlock_ptr((void *)((&sl->seqcount))), seqcount_mutex_t: __seqp= rop_mutex_ptr((void *)((&sl->seqcount))), seqcount_ww_mutex_t: __seqprop_ww= _mutex_ptr((void *)((&sl->seqcount))))); ({ unsigned _seq =3D ({ unsigned _= _seq; while ((__seq =3D _Generic(*(&sl->seqcount), seqcount_t: __seqprop_se= quence((void *)(&sl->seqcount)), seqcount_raw_spinlock_t: __seqprop_raw_spi= nlock_sequence((void *)((&sl->seqcount))), seqcount_spinlock_t: __seqprop_s= pinlock_sequence((void *)((&sl->seqcount))), seqcount_rwlock_t: __seqprop_r= wlock_sequence((void *)((&sl->seqcount))), seqcount_mutex_t: __seqprop_mute= x_sequence((void *)((&sl->seqcount))), seqcount_ww_mutex_t: __seqprop_ww_mu= tex_sequence((void *)((&sl->seqcount))))) & 1) cpu_relax(); kcsan_atomic_ne= xt(1000); __seq; }); do { do { } while (0); __asm__ __volatile__ ("fence " = "r" "," "r" : : : "memory"); } while (0); _seq; }); });=0D =0D kcsan_atomic_next(0);=0D kcsan_flat_atomic_begin();=0D return ret;=0D }=0D # 858 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned read_seqretry(const= seqlock_t *sl, unsigned start)=0D {=0D =0D =0D =0D =0D kcsan_flat_atomic_end();=0D =0D return do_read_seqcount_retry(_Generic(*(&sl->seqcount), seqcount_t: __seq= prop_ptr((void *)(&sl->seqcount)), seqcount_raw_spinlock_t: __seqprop_raw_s= pinlock_ptr((void *)((&sl->seqcount))), seqcount_spinlock_t: __seqprop_spin= lock_ptr((void *)((&sl->seqcount))), seqcount_rwlock_t: __seqprop_rwlock_pt= r((void *)((&sl->seqcount))), seqcount_mutex_t: __seqprop_mutex_ptr((void *= )((&sl->seqcount))), seqcount_ww_mutex_t: __seqprop_ww_mutex_ptr((void *)((= &sl->seqcount)))), start);=0D }=0D # 888 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_seqlock(seqlock_t= *sl)=0D {=0D spin_lock(&sl->lock);=0D do_write_seqcount_begin(&sl->seqcount.seqcount);=0D }=0D # 901 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_sequnlock(seqlock= _t *sl)=0D {=0D do_write_seqcount_end(&sl->seqcount.seqcount);=0D spin_unlock(&sl->lock);=0D }=0D # 914 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_seqlock_bh(seqloc= k_t *sl)=0D {=0D spin_lock_bh(&sl->lock);=0D do_write_seqcount_begin(&sl->seqcount.seqcount);=0D }=0D # 928 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_sequnlock_bh(seql= ock_t *sl)=0D {=0D do_write_seqcount_end(&sl->seqcount.seqcount);=0D spin_unlock_bh(&sl->lock);=0D }=0D # 941 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_seqlock_irq(seqlo= ck_t *sl)=0D {=0D spin_lock_irq(&sl->lock);=0D do_write_seqcount_begin(&sl->seqcount.seqcount);=0D }=0D # 954 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_sequnlock_irq(seq= lock_t *sl)=0D {=0D do_write_seqcount_end(&sl->seqcount.seqcount);=0D spin_unlock_irq(&sl->lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __write_seqloc= k_irqsave(seqlock_t *sl)=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&sl->lock)); } while (0); } while (0);=0D do_write_seqcount_begin(&sl->seqcount.seqcount);=0D return flags;=0D }=0D # 991 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D write_sequnlock_irqrestore(seqlock_t *sl, unsigned long flags)=0D {=0D do_write_seqcount_end(&sl->seqcount.seqcount);=0D spin_unlock_irqrestore(&sl->lock, flags);=0D }=0D # 1014 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_seqlock_excl(seqlo= ck_t *sl)=0D {=0D spin_lock(&sl->lock);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_sequnlock_excl(seq= lock_t *sl)=0D {=0D spin_unlock(&sl->lock);=0D }=0D # 1037 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_seqlock_excl_bh(se= qlock_t *sl)=0D {=0D spin_lock_bh(&sl->lock);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_sequnlock_excl_bh(= seqlock_t *sl)=0D {=0D spin_unlock_bh(&sl->lock);=0D }=0D # 1061 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_seqlock_excl_irq(s= eqlock_t *sl)=0D {=0D spin_lock_irq(&sl->lock);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_sequnlock_excl_irq= (seqlock_t *sl)=0D {=0D spin_unlock_irq(&sl->lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __read_seqlock= _excl_irqsave(seqlock_t *sl)=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&sl->lock)); } while (0); } while (0);=0D return flags;=0D }=0D # 1104 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D read_sequnlock_excl_irqrestore(seqlock_t *sl, unsigned long flags)=0D {=0D spin_unlock_irqrestore(&sl->lock, flags);=0D }=0D # 1141 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void read_seqbegin_or_lock(s= eqlock_t *lock, int *seq)=0D {=0D if (!(*seq & 1))=0D *seq =3D read_seqbegin(lock);=0D else=0D read_seqlock_excl(lock);=0D }=0D # 1156 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int need_seqretry(seqlock_t = *lock, int seq)=0D {=0D return !(seq & 1) && read_seqretry(lock, seq);=0D }=0D # 1169 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void done_seqretry(seqlock_t= *lock, int seq)=0D {=0D if (seq & 1)=0D read_sequnlock_excl(lock);=0D }=0D # 1195 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D read_seqbegin_or_lock_irqsave(seqlock_t *lock, int *seq)=0D {=0D unsigned long flags =3D 0;=0D =0D if (!(*seq & 1))=0D *seq =3D read_seqbegin(lock);=0D else=0D do { flags =3D __read_seqlock_excl_irqsave(lock); } while (0);=0D =0D return flags;=0D }=0D # 1220 "./include/linux/seqlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D done_seqretry_irqrestore(seqlock_t *lock, int seq, unsigned long flags)=0D {=0D if (seq & 1)=0D read_sequnlock_excl_irqrestore(lock, flags);=0D }=0D # 20 "./include/linux/mm_types.h" 2=0D =0D # 1 "./arch/riscv/include/asm/mmu.h" 1=0D # 12 "./arch/riscv/include/asm/mmu.h"=0D typedef struct {=0D =0D =0D =0D atomic_long_t id;=0D =0D void *vdso;=0D =0D =0D cpumask_t icache_stale_mask;=0D =0D } mm_context_t;=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) create_pgd_mapping(pgd_t *pgdp, uint= ptr_t va, phys_addr_t pa,=0D phys_addr_t sz, pgprot_t prot);=0D # 22 "./include/linux/mm_types.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D struct address_space;=0D struct mem_cgroup;=0D # 72 "./include/linux/mm_types.h"=0D struct page {=0D unsigned long flags;=0D =0D =0D =0D =0D =0D =0D =0D union {=0D struct {=0D =0D =0D =0D =0D =0D union {=0D struct list_head lru;=0D =0D struct {=0D =0D void *__filler;=0D =0D unsigned int mlock_count;=0D };=0D };=0D =0D struct address_space *mapping;=0D unsigned long index;=0D =0D =0D =0D =0D =0D =0D unsigned long private;=0D };=0D struct {=0D =0D =0D =0D =0D unsigned long pp_magic;=0D struct page_pool *pp;=0D unsigned long _pp_mapping_pad;=0D unsigned long dma_addr;=0D union {=0D =0D =0D =0D =0D unsigned long dma_addr_upper;=0D =0D =0D =0D =0D atomic_long_t pp_frag_count;=0D };=0D };=0D struct {=0D unsigned long compound_head;=0D =0D =0D unsigned char compound_dtor;=0D unsigned char compound_order;=0D atomic_t compound_mapcount;=0D atomic_t compound_pincount;=0D =0D unsigned int compound_nr;=0D =0D };=0D struct {=0D unsigned long _compound_pad_1;=0D unsigned long _compound_pad_2;=0D =0D struct list_head deferred_list;=0D };=0D struct {=0D unsigned long _pt_pad_1;=0D pgtable_t pmd_huge_pte;=0D unsigned long _pt_pad_2;=0D union {=0D struct mm_struct *pt_mm;=0D atomic_t pt_frag_refcount;=0D };=0D =0D spinlock_t *ptl;=0D =0D =0D =0D };=0D struct {=0D =0D struct dev_pagemap *pgmap;=0D void *zone_device_data;=0D # 177 "./include/linux/mm_types.h"=0D };=0D =0D =0D struct callback_head callback_head;=0D };=0D =0D union {=0D =0D =0D =0D =0D atomic_t _mapcount;=0D =0D =0D =0D =0D =0D =0D =0D unsigned int page_type;=0D };=0D =0D =0D atomic_t _refcount;=0D # 224 "./include/linux/mm_types.h"=0D } ;=0D # 250 "./include/linux/mm_types.h"=0D struct folio {=0D =0D union {=0D struct {=0D =0D unsigned long flags;=0D union {=0D struct list_head lru;=0D struct {=0D void *__filler;=0D unsigned int mlock_count;=0D };=0D };=0D struct address_space *mapping;=0D unsigned long index;=0D void *private;=0D atomic_t _mapcount;=0D atomic_t _refcount;=0D =0D =0D =0D =0D };=0D struct page page;=0D };=0D };=0D =0D _Static_assert(sizeof(struct page) =3D=3D sizeof(struct folio), "sizeof(str= uct page) =3D=3D sizeof(struct folio)");=0D =0D =0D _Static_assert(__builtin_offsetof(struct page, flags) =3D=3D __builtin_offs= etof(struct folio, flags), "offsetof(struct page, flags) =3D=3D offsetof(st= ruct folio, flags)");=0D _Static_assert(__builtin_offsetof(struct page, lru) =3D=3D __builtin_offset= of(struct folio, lru), "offsetof(struct page, lru) =3D=3D offsetof(struct f= olio, lru)");=0D _Static_assert(__builtin_offsetof(struct page, mapping) =3D=3D __builtin_of= fsetof(struct folio, mapping), "offsetof(struct page, mapping) =3D=3D offse= tof(struct folio, mapping)");=0D _Static_assert(__builtin_offsetof(struct page, compound_head) =3D=3D __buil= tin_offsetof(struct folio, lru), "offsetof(struct page, compound_head) =3D= =3D offsetof(struct folio, lru)");=0D _Static_assert(__builtin_offsetof(struct page, index) =3D=3D __builtin_offs= etof(struct folio, index), "offsetof(struct page, index) =3D=3D offsetof(st= ruct folio, index)");=0D _Static_assert(__builtin_offsetof(struct page, private) =3D=3D __builtin_of= fsetof(struct folio, private), "offsetof(struct page, private) =3D=3D offse= tof(struct folio, private)");=0D _Static_assert(__builtin_offsetof(struct page, _mapcount) =3D=3D __builtin_= offsetof(struct folio, _mapcount), "offsetof(struct page, _mapcount) =3D=3D= offsetof(struct folio, _mapcount)");=0D _Static_assert(__builtin_offsetof(struct page, _refcount) =3D=3D __builtin_= offsetof(struct folio, _refcount), "offsetof(struct page, _refcount) =3D=3D= offsetof(struct folio, _refcount)");=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) atomic_t *folio_mapcount_ptr= (struct folio *folio)=0D {=0D struct page *tail =3D &folio->page + 1;=0D return &tail->compound_mapcount;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) atomic_t *compound_mapcount_= ptr(struct page *page)=0D {=0D return &page[1].compound_mapcount;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) atomic_t *compound_pincount_= ptr(struct page *page)=0D {=0D return &page[1].compound_pincount;=0D }=0D # 325 "./include/linux/mm_types.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_private(struct= page *page, unsigned long private)=0D {=0D page->private =3D private;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *folio_get_private(stru= ct folio *folio)=0D {=0D return folio->private;=0D }=0D =0D struct page_frag_cache {=0D void * va;=0D =0D __u16 offset;=0D __u16 size;=0D =0D =0D =0D =0D =0D =0D unsigned int pagecnt_bias;=0D bool pfmemalloc;=0D };=0D =0D typedef unsigned long vm_flags_t;=0D =0D =0D =0D =0D =0D =0D struct vm_region {=0D struct rb_node vm_rb;=0D vm_flags_t vm_flags;=0D unsigned long vm_start;=0D unsigned long vm_end;=0D unsigned long vm_top;=0D unsigned long vm_pgoff;=0D struct file *vm_file;=0D =0D int vm_usage;=0D bool vm_icache_flushed : 1;=0D =0D };=0D # 378 "./include/linux/mm_types.h"=0D struct vm_userfaultfd_ctx {};=0D =0D =0D struct anon_vma_name {=0D struct kref kref;=0D =0D char name[];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct vm_area_struct {=0D =0D =0D unsigned long vm_start;=0D unsigned long vm_end;=0D =0D =0D =0D struct vm_area_struct *vm_next, *vm_prev;=0D =0D struct rb_node vm_rb;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long rb_subtree_gap;=0D =0D =0D =0D struct mm_struct *vm_mm;=0D =0D =0D =0D =0D =0D pgprot_t vm_page_prot;=0D unsigned long vm_flags;=0D # 432 "./include/linux/mm_types.h"=0D union {=0D struct {=0D struct rb_node rb;=0D unsigned long rb_subtree_last;=0D } shared;=0D =0D =0D =0D =0D struct anon_vma_name *anon_name;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct list_head anon_vma_chain;=0D =0D struct anon_vma *anon_vma;=0D =0D =0D const struct vm_operations_struct *vm_ops;=0D =0D =0D unsigned long vm_pgoff;=0D =0D struct file * vm_file;=0D void * vm_private_data;=0D =0D =0D atomic_long_t swap_readahead_info;=0D =0D =0D =0D =0D =0D =0D =0D struct vm_userfaultfd_ctx vm_userfaultfd_ctx;=0D } ;=0D =0D struct kioctx_table;=0D struct mm_struct {=0D struct {=0D struct vm_area_struct *mmap;=0D struct rb_root mm_rb;=0D u64 vmacache_seqnum;=0D =0D unsigned long (*get_unmapped_area) (struct file *filp,=0D unsigned long addr, unsigned long len,=0D unsigned long pgoff, unsigned long flags);=0D =0D unsigned long mmap_base;=0D unsigned long mmap_legacy_base;=0D =0D =0D =0D =0D =0D unsigned long task_size;=0D unsigned long highest_vm_end;=0D pgd_t * pgd;=0D # 504 "./include/linux/mm_types.h"=0D atomic_t membarrier_state;=0D # 516 "./include/linux/mm_types.h"=0D atomic_t mm_users;=0D # 525 "./include/linux/mm_types.h"=0D atomic_t mm_count;=0D =0D =0D atomic_long_t pgtables_bytes;=0D =0D int map_count;=0D =0D spinlock_t page_table_lock;=0D # 547 "./include/linux/mm_types.h"=0D struct rw_semaphore mmap_lock;=0D =0D struct list_head mmlist;=0D =0D =0D =0D =0D =0D =0D unsigned long hiwater_rss;=0D unsigned long hiwater_vm;=0D =0D unsigned long total_vm;=0D unsigned long locked_vm;=0D atomic64_t pinned_vm;=0D unsigned long data_vm;=0D unsigned long exec_vm;=0D unsigned long stack_vm;=0D unsigned long def_flags;=0D =0D =0D =0D =0D =0D =0D seqcount_t write_protect_seq;=0D =0D spinlock_t arg_lock;=0D =0D unsigned long start_code, end_code, start_data, end_data;=0D unsigned long start_brk, brk, start_stack;=0D unsigned long arg_start, arg_end, env_start, env_end;=0D =0D unsigned long saved_auxv[(2*(7 + 20 + 1))];=0D =0D =0D =0D =0D =0D struct mm_rss_stat rss_stat;=0D =0D struct linux_binfmt *binfmt;=0D =0D =0D mm_context_t context;=0D =0D unsigned long flags;=0D =0D =0D spinlock_t ioctx_lock;=0D struct kioctx_table *ioctx_table;=0D # 612 "./include/linux/mm_types.h"=0D struct user_namespace *user_ns;=0D =0D =0D struct file *exe_file;=0D =0D struct mmu_notifier_subscriptions *notifier_subscriptions;=0D # 641 "./include/linux/mm_types.h"=0D atomic_t tlb_flush_pending;=0D =0D =0D =0D =0D struct uprobes_state uprobes_state;=0D =0D =0D =0D =0D =0D =0D struct work_struct async_put_work;=0D =0D =0D =0D =0D } ;=0D =0D =0D =0D =0D =0D unsigned long cpu_bitmap[];=0D };=0D =0D extern struct mm_struct init_mm;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_init_cpumask(struct = mm_struct *mm)=0D {=0D unsigned long cpu_bitmap =3D (unsigned long)mm;=0D =0D cpu_bitmap +=3D __builtin_offsetof(struct mm_struct, cpu_bitmap);=0D cpumask_clear((struct cpumask *)cpu_bitmap);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) cpumask_t *mm_cpumask(struct= mm_struct *mm)=0D {=0D return (struct cpumask *)&mm->cpu_bitmap;=0D }=0D =0D struct mmu_gather;=0D extern void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm);=0D extern void tlb_gather_mmu_fullmm(struct mmu_gather *tlb, struct mm_struct = *mm);=0D extern void tlb_finish_mmu(struct mmu_gather *tlb);=0D =0D struct vm_fault;=0D =0D =0D =0D =0D =0D =0D typedef unsigned int vm_fault_t;=0D # 723 "./include/linux/mm_types.h"=0D enum vm_fault_reason {=0D VM_FAULT_OOM =3D ( vm_fault_t)0x000001,=0D VM_FAULT_SIGBUS =3D ( vm_fault_t)0x000002,=0D VM_FAULT_MAJOR =3D ( vm_fault_t)0x000004,=0D VM_FAULT_WRITE =3D ( vm_fault_t)0x000008,=0D VM_FAULT_HWPOISON =3D ( vm_fault_t)0x000010,=0D VM_FAULT_HWPOISON_LARGE =3D ( vm_fault_t)0x000020,=0D VM_FAULT_SIGSEGV =3D ( vm_fault_t)0x000040,=0D VM_FAULT_NOPAGE =3D ( vm_fault_t)0x000100,=0D VM_FAULT_LOCKED =3D ( vm_fault_t)0x000200,=0D VM_FAULT_RETRY =3D ( vm_fault_t)0x000400,=0D VM_FAULT_FALLBACK =3D ( vm_fault_t)0x000800,=0D VM_FAULT_DONE_COW =3D ( vm_fault_t)0x001000,=0D VM_FAULT_NEEDDSYNC =3D ( vm_fault_t)0x002000,=0D VM_FAULT_HINDEX_MASK =3D ( vm_fault_t)0x0f0000,=0D };=0D # 763 "./include/linux/mm_types.h"=0D struct vm_special_mapping {=0D const char *name;=0D =0D =0D =0D =0D =0D =0D =0D struct page **pages;=0D =0D =0D =0D =0D =0D vm_fault_t (*fault)(const struct vm_special_mapping *sm,=0D struct vm_area_struct *vma,=0D struct vm_fault *vmf);=0D =0D int (*mremap)(const struct vm_special_mapping *sm,=0D struct vm_area_struct *new_vma);=0D };=0D =0D enum tlb_flush_reason {=0D TLB_FLUSH_ON_TASK_SWITCH,=0D TLB_REMOTE_SHOOTDOWN,=0D TLB_LOCAL_SHOOTDOWN,=0D TLB_LOCAL_MM_SHOOTDOWN,=0D TLB_REMOTE_SEND_IPI,=0D NR_TLB_FLUSH_REASONS,=0D };=0D =0D =0D =0D =0D =0D typedef struct {=0D unsigned long val;=0D } swp_entry_t;=0D # 835 "./include/linux/mm_types.h"=0D enum fault_flag {=0D FAULT_FLAG_WRITE =3D 1 << 0,=0D FAULT_FLAG_MKWRITE =3D 1 << 1,=0D FAULT_FLAG_ALLOW_RETRY =3D 1 << 2,=0D FAULT_FLAG_RETRY_NOWAIT =3D 1 << 3,=0D FAULT_FLAG_KILLABLE =3D 1 << 4,=0D FAULT_FLAG_TRIED =3D 1 << 5,=0D FAULT_FLAG_USER =3D 1 << 6,=0D FAULT_FLAG_REMOTE =3D 1 << 7,=0D FAULT_FLAG_INSTRUCTION =3D 1 << 8,=0D FAULT_FLAG_INTERRUPTIBLE =3D 1 << 9,=0D };=0D # 11 "./include/linux/uio.h" 2=0D # 1 "./include/uapi/linux/uio.h" 1=0D # 17 "./include/uapi/linux/uio.h"=0D struct iovec=0D {=0D void *iov_base;=0D __kernel_size_t iov_len;=0D };=0D # 12 "./include/linux/uio.h" 2=0D =0D struct page;=0D struct pipe_inode_info;=0D =0D struct kvec {=0D void *iov_base;=0D size_t iov_len;=0D };=0D =0D enum iter_type {=0D =0D ITER_IOVEC,=0D ITER_KVEC,=0D ITER_BVEC,=0D ITER_PIPE,=0D ITER_XARRAY,=0D ITER_DISCARD,=0D };=0D =0D struct iov_iter_state {=0D size_t iov_offset;=0D size_t count;=0D unsigned long nr_segs;=0D };=0D =0D struct iov_iter {=0D u8 iter_type;=0D bool nofault;=0D bool data_source;=0D size_t iov_offset;=0D size_t count;=0D union {=0D const struct iovec *iov;=0D const struct kvec *kvec;=0D const struct bio_vec *bvec;=0D struct xarray *xarray;=0D struct pipe_inode_info *pipe;=0D };=0D union {=0D unsigned long nr_segs;=0D struct {=0D unsigned int head;=0D unsigned int start_head;=0D };=0D loff_t xarray_start;=0D };=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum iter_type iov_iter_type= (const struct iov_iter *i)=0D {=0D return i->iter_type;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iov_iter_save_state(str= uct iov_iter *iter,=0D struct iov_iter_state *state)=0D {=0D state->iov_offset =3D iter->iov_offset;=0D state->count =3D iter->count;=0D state->nr_segs =3D iter->nr_segs;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iter_is_iovec(const str= uct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_IOVEC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iov_iter_is_kvec(const = struct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_KVEC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iov_iter_is_bvec(const = struct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_BVEC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iov_iter_is_pipe(const = struct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_PIPE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iov_iter_is_discard(con= st struct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_DISCARD;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool iov_iter_is_xarray(cons= t struct iov_iter *i)=0D {=0D return iov_iter_type(i) =3D=3D ITER_XARRAY;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char iov_iter_rw(co= nst struct iov_iter *i)=0D {=0D return i->data_source ? 1 : 0;=0D }=0D # 115 "./include/linux/uio.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t iov_length(const stru= ct iovec *iov, unsigned long nr_segs)=0D {=0D unsigned long seg;=0D size_t ret =3D 0;=0D =0D for (seg =3D 0; seg < nr_segs; seg++)=0D ret +=3D iov[seg].iov_len;=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct iovec iov_iter_iovec(= const struct iov_iter *iter)=0D {=0D return (struct iovec) {=0D .iov_base =3D iter->iov->iov_base + iter->iov_offset,=0D .iov_len =3D __builtin_choose_expr(((!!(sizeof((typeof(iter->count) *)1 = =3D=3D (typeof(iter->iov->iov_len - iter->iov_offset) *)1))) && ((sizeof(in= t) =3D=3D sizeof(*(8 ? ((void *)((long)(iter->count) * 0l)) : (int *)8))) &= & (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(iter->iov->iov_len - it= er->iov_offset) * 0l)) : (int *)8))))), ((iter->count) < (iter->iov->iov_le= n - iter->iov_offset) ? (iter->count) : (iter->iov->iov_len - iter->iov_off= set)), ({ typeof(iter->count) __UNIQUE_ID___x85 =3D (iter->count); typeof(i= ter->iov->iov_len - iter->iov_offset) __UNIQUE_ID___y86 =3D (iter->iov->iov= _len - iter->iov_offset); ((__UNIQUE_ID___x85) < (__UNIQUE_ID___y86) ? (__U= NIQUE_ID___x85) : (__UNIQUE_ID___y86)); })),=0D =0D };=0D }=0D =0D size_t copy_page_from_iter_atomic(struct page *page, unsigned offset,=0D size_t bytes, struct iov_iter *i);=0D void iov_iter_advance(struct iov_iter *i, size_t bytes);=0D void iov_iter_revert(struct iov_iter *i, size_t bytes);=0D size_t fault_in_iov_iter_readable(const struct iov_iter *i, size_t bytes);= =0D size_t fault_in_iov_iter_writeable(const struct iov_iter *i, size_t bytes);= =0D size_t iov_iter_single_seg_count(const struct iov_iter *i);=0D size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes,=0D struct iov_iter *i);=0D size_t copy_page_from_iter(struct page *page, size_t offset, size_t bytes,= =0D struct iov_iter *i);=0D =0D size_t _copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i);=0D size_t _copy_from_iter(void *addr, size_t bytes, struct iov_iter *i);=0D size_t _copy_from_iter_nocache(void *addr, size_t bytes, struct iov_iter *i= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t copy_folio_to_iter(st= ruct folio *folio, size_t offset,=0D size_t bytes, struct iov_iter *i)=0D {=0D return copy_page_to_iter(&folio->page, offset, bytes, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D size_t copy_to_iter(const void *addr, size_t bytes, struct iov_iter *i)=0D {=0D if (__builtin_expect(!!(!check_copy_size(addr, bytes, true)), 0))=0D return 0;=0D else=0D return _copy_to_iter(addr, bytes, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D size_t copy_from_iter(void *addr, size_t bytes, struct iov_iter *i)=0D {=0D if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0))=0D return 0;=0D else=0D return _copy_from_iter(addr, bytes, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D bool copy_from_iter_full(void *addr, size_t bytes, struct iov_iter *i)=0D {=0D size_t copied =3D copy_from_iter(addr, bytes, i);=0D if (__builtin_expect(!!(copied =3D=3D bytes), 1))=0D return true;=0D iov_iter_revert(i, copied);=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D size_t copy_from_iter_nocache(void *addr, size_t bytes, struct iov_iter *i)= =0D {=0D if (__builtin_expect(!!(!check_copy_size(addr, bytes, false)), 0))=0D return 0;=0D else=0D return _copy_from_iter_nocache(addr, bytes, i);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D bool copy_from_iter_full_nocache(void *addr, size_t bytes, struct iov_iter = *i)=0D {=0D size_t copied =3D copy_from_iter_nocache(addr, bytes, i);=0D if (__builtin_expect(!!(copied =3D=3D bytes), 1))=0D return true;=0D iov_iter_revert(i, copied);=0D return false;=0D }=0D # 221 "./include/linux/uio.h"=0D size_t iov_iter_zero(size_t bytes, struct iov_iter *);=0D unsigned long iov_iter_alignment(const struct iov_iter *i);=0D unsigned long iov_iter_gap_alignment(const struct iov_iter *i);=0D void iov_iter_init(struct iov_iter *i, unsigned int direction, const struct= iovec *iov,=0D unsigned long nr_segs, size_t count);=0D void iov_iter_kvec(struct iov_iter *i, unsigned int direction, const struct= kvec *kvec,=0D unsigned long nr_segs, size_t count);=0D void iov_iter_bvec(struct iov_iter *i, unsigned int direction, const struct= bio_vec *bvec,=0D unsigned long nr_segs, size_t count);=0D void iov_iter_pipe(struct iov_iter *i, unsigned int direction, struct pipe_= inode_info *pipe,=0D size_t count);=0D void iov_iter_discard(struct iov_iter *i, unsigned int direction, size_t co= unt);=0D void iov_iter_xarray(struct iov_iter *i, unsigned int direction, struct xar= ray *xarray,=0D loff_t start, size_t count);=0D ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages,=0D size_t maxsize, unsigned maxpages, size_t *start);=0D ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, struct page ***pages,= =0D size_t maxsize, size_t *start);=0D int iov_iter_npages(const struct iov_iter *i, int maxpages);=0D void iov_iter_restore(struct iov_iter *i, struct iov_iter_state *state);=0D =0D const void *dup_iter(struct iov_iter *new, struct iov_iter *old, gfp_t flag= s);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t iov_iter_count(const = struct iov_iter *i)=0D {=0D return i->count;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iov_iter_truncate(struc= t iov_iter *i, u64 count)=0D {=0D =0D =0D =0D =0D =0D =0D if (i->count > count)=0D i->count =3D count;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iov_iter_reexpand(struc= t iov_iter *i, size_t count)=0D {=0D i->count =3D count;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D iov_iter_npages_cap(struct iov_iter *i, int maxpages, size_t max_bytes)=0D {=0D size_t shorted =3D 0;=0D int npages;=0D =0D if (iov_iter_count(i) > max_bytes) {=0D shorted =3D iov_iter_count(i) - max_bytes;=0D iov_iter_truncate(i, max_bytes);=0D }=0D npages =3D iov_iter_npages(i, ((int)(~0U >> 1)));=0D if (shorted)=0D iov_iter_reexpand(i, iov_iter_count(i) + shorted);=0D =0D return npages;=0D }=0D =0D struct csum_state {=0D __wsum csum;=0D size_t off;=0D };=0D =0D size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csstate,= struct iov_iter *i);=0D size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, stru= ct iov_iter *i);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__))=0D bool csum_and_copy_from_iter_full(void *addr, size_t bytes,=0D __wsum *csum, struct iov_iter *i)=0D {=0D size_t copied =3D csum_and_copy_from_iter(addr, bytes, csum, i);=0D if (__builtin_expect(!!(copied =3D=3D bytes), 1))=0D return true;=0D iov_iter_revert(i, copied);=0D return false;=0D }=0D size_t hash_and_copy_to_iter(const void *addr, size_t bytes, void *hashp,=0D struct iov_iter *i);=0D =0D struct iovec *iovec_from_user(const struct iovec *uvector,=0D unsigned long nr_segs, unsigned long fast_segs,=0D struct iovec *fast_iov, bool compat);=0D ssize_t import_iovec(int type, const struct iovec *uvec,=0D unsigned nr_segs, unsigned fast_segs, struct iovec **iovp,=0D struct iov_iter *i);=0D ssize_t __import_iovec(int type, const struct iovec *uvec,=0D unsigned nr_segs, unsigned fast_segs, struct iovec **iovp,=0D struct iov_iter *i, bool compat);=0D int import_single_range(int type, void *buf, size_t len,=0D struct iovec *iov, struct iov_iter *i);=0D # 9 "./include/linux/socket.h" 2=0D =0D =0D # 1 "./include/uapi/linux/socket.h" 1=0D # 10 "./include/uapi/linux/socket.h"=0D typedef unsigned short __kernel_sa_family_t;=0D =0D =0D =0D =0D =0D struct __kernel_sockaddr_storage {=0D union {=0D struct {=0D __kernel_sa_family_t ss_family;=0D =0D char __data[128 - sizeof(unsigned short)];=0D =0D =0D };=0D void *__align;=0D };=0D };=0D # 12 "./include/linux/socket.h" 2=0D =0D struct file;=0D struct pid;=0D struct cred;=0D struct socket;=0D =0D =0D =0D =0D =0D struct seq_file;=0D extern void socket_seq_show(struct seq_file *seq);=0D =0D =0D typedef __kernel_sa_family_t sa_family_t;=0D =0D =0D =0D =0D =0D struct sockaddr {=0D sa_family_t sa_family;=0D char sa_data[14];=0D };=0D =0D struct linger {=0D int l_onoff;=0D int l_linger;=0D };=0D # 50 "./include/linux/socket.h"=0D struct msghdr {=0D void *msg_name;=0D int msg_namelen;=0D struct iov_iter msg_iter;=0D =0D =0D =0D =0D =0D =0D union {=0D void *msg_control;=0D void *msg_control_user;=0D };=0D bool msg_control_is_user : 1;=0D __kernel_size_t msg_controllen;=0D unsigned int msg_flags;=0D struct kiocb *msg_iocb;=0D };=0D =0D struct user_msghdr {=0D void *msg_name;=0D int msg_namelen;=0D struct iovec *msg_iov;=0D __kernel_size_t msg_iovlen;=0D void *msg_control;=0D __kernel_size_t msg_controllen;=0D unsigned int msg_flags;=0D };=0D =0D =0D struct mmsghdr {=0D struct user_msghdr msg_hdr;=0D unsigned int msg_len;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct cmsghdr {=0D __kernel_size_t cmsg_len;=0D int cmsg_level;=0D int cmsg_type;=0D };=0D # 141 "./include/linux/socket.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cmsghdr * __cmsg_nxth= dr(void *__ctl, __kernel_size_t __size,=0D struct cmsghdr *__cmsg)=0D {=0D struct cmsghdr * __ptr;=0D =0D __ptr =3D (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_= len)+sizeof(long)-1) & ~(sizeof(long)-1) ));=0D if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)=0D return (struct cmsghdr *)0;=0D =0D return __ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cmsghdr * cmsg_nxthdr= (struct msghdr *__msg, struct cmsghdr *__cmsg)=0D {=0D return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t msg_data_left(struct = msghdr *msg)=0D {=0D return iov_iter_count(&msg->msg_iter);=0D }=0D =0D =0D =0D =0D =0D =0D =0D struct ucred {=0D __u32 pid;=0D __u32 uid;=0D __u32 gid;=0D };=0D # 374 "./include/linux/socket.h"=0D extern int move_addr_to_kernel(void *uaddr, int ulen, struct __kernel_socka= ddr_storage *kaddr);=0D extern int put_cmsg(struct msghdr*, int level, int type, int len, void *dat= a);=0D =0D struct timespec64;=0D struct __kernel_timespec;=0D struct old_timespec32;=0D =0D struct scm_timestamping_internal {=0D struct timespec64 ts[3];=0D };=0D =0D extern void put_cmsg_scm_timestamping64(struct msghdr *msg, struct scm_time= stamping_internal *tss);=0D extern void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timest= amping_internal *tss);=0D =0D =0D =0D =0D extern long __sys_recvmsg(int fd, struct user_msghdr *msg,=0D unsigned int flags, bool forbid_cmsg_compat);=0D extern long __sys_sendmsg(int fd, struct user_msghdr *msg,=0D unsigned int flags, bool forbid_cmsg_compat);=0D extern int __sys_recvmmsg(int fd, struct mmsghdr *mmsg,=0D unsigned int vlen, unsigned int flags,=0D struct __kernel_timespec *timeout,=0D struct old_timespec32 *timeout32);=0D extern int __sys_sendmmsg(int fd, struct mmsghdr *mmsg,=0D unsigned int vlen, unsigned int flags,=0D bool forbid_cmsg_compat);=0D extern long __sys_sendmsg_sock(struct socket *sock, struct msghdr *msg,=0D unsigned int flags);=0D extern long __sys_recvmsg_sock(struct socket *sock, struct msghdr *msg,=0D struct user_msghdr *umsg,=0D struct sockaddr *uaddr,=0D unsigned int flags);=0D extern int sendmsg_copy_msghdr(struct msghdr *msg,=0D struct user_msghdr *umsg, unsigned flags,=0D struct iovec **iov);=0D extern int recvmsg_copy_msghdr(struct msghdr *msg,=0D struct user_msghdr *umsg, unsigned flags,=0D struct sockaddr **uaddr,=0D struct iovec **iov);=0D extern int __copy_msghdr_from_user(struct msghdr *kmsg,=0D struct user_msghdr *umsg,=0D struct sockaddr **save_addr,=0D struct iovec **uiov, size_t *nsegs);=0D =0D =0D extern int __sys_recvfrom(int fd, void *ubuf, size_t size,=0D unsigned int flags, struct sockaddr *addr,=0D int *addr_len);=0D extern int __sys_sendto(int fd, void *buff, size_t len,=0D unsigned int flags, struct sockaddr *addr,=0D int addr_len);=0D extern int __sys_accept4_file(struct file *file, unsigned file_flags,=0D struct sockaddr *upeer_sockaddr,=0D int *upeer_addrlen, int flags,=0D unsigned long nofile);=0D extern struct file *do_accept(struct file *file, unsigned file_flags,=0D struct sockaddr *upeer_sockaddr,=0D int *upeer_addrlen, int flags);=0D extern int __sys_accept4(int fd, struct sockaddr *upeer_sockaddr,=0D int *upeer_addrlen, int flags);=0D extern int __sys_socket(int family, int type, int protocol);=0D extern int __sys_bind(int fd, struct sockaddr *umyaddr, int addrlen);=0D extern int __sys_connect_file(struct file *file, struct __kernel_sockaddr_s= torage *addr,=0D int addrlen, int file_flags);=0D extern int __sys_connect(int fd, struct sockaddr *uservaddr,=0D int addrlen);=0D extern int __sys_listen(int fd, int backlog);=0D extern int __sys_getsockname(int fd, struct sockaddr *usockaddr,=0D int *usockaddr_len);=0D extern int __sys_getpeername(int fd, struct sockaddr *usockaddr,=0D int *usockaddr_len);=0D extern int __sys_socketpair(int family, int type, int protocol,=0D int *usockvec);=0D extern int __sys_shutdown_sock(struct socket *sock, int how);=0D extern int __sys_shutdown(int fd, int how);=0D # 31 "net/ipv6/route.c" 2=0D =0D # 1 "./include/linux/net.h" 1=0D # 18 "./include/linux/net.h"=0D # 1 "./include/linux/random.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/once.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/jump_label.h" 1=0D # 79 "./include/linux/jump_label.h"=0D extern bool static_key_initialized;=0D =0D =0D =0D =0D =0D struct static_key {=0D atomic_t enabled;=0D # 107 "./include/linux/jump_label.h"=0D };=0D # 191 "./include/linux/jump_label.h"=0D enum jump_label_type {=0D JUMP_LABEL_NOP =3D 0,=0D JUMP_LABEL_JMP,=0D };=0D =0D struct module;=0D # 259 "./include/linux/jump_label.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int static_key_count(struct = static_key *key)=0D {=0D return atomic_read(&key->enabled);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void jump_label_init(void)=0D {=0D static_key_initialized =3D true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool static_key_false(struct static_key *key)=0D {=0D if (__builtin_expect(!!(static_key_count(key) > 0), 0))=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool static_key_true(struct static_key *key)=0D {=0D if (__builtin_expect(!!(static_key_count(key) > 0), 1))=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_slow_inc(str= uct static_key *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label.h"), "i" (285), "i" ((1 << 0)|((1 << 3) | ((9) << 8)))= , "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (0= ); __builtin_expect(!!(__ret_warn_on), 0); });=0D atomic_inc(&key->enabled);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_slow_dec(str= uct static_key *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label.h"), "i" (291), "i" ((1 << 0)|((1 << 3) | ((9) << 8)))= , "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (0= ); __builtin_expect(!!(__ret_warn_on), 0); });=0D atomic_dec(&key->enabled);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int jump_label_text_reserved= (void *start, void *end)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void jump_label_lock(void) {= }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void jump_label_unlock(void)= {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int jump_label_apply_nops(st= ruct module *mod)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_enable(struc= t static_key *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label.h"), "i" (313), "i" ((1 << 0)|((1 << 3) | ((9) << 8)))= , "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (0= ); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D if (atomic_read(&key->enabled) !=3D 0) {=0D ({ int __ret_warn_on =3D !!(atomic_read(&key->enabled) !=3D 1); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/jump_label.h"), "i" (3= 16), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))= ); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D return;=0D }=0D atomic_set(&key->enabled, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_disable(stru= ct static_key *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label.h"), "i" (324), "i" ((1 << 0)|((1 << 3) | ((9) << 8)))= , "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (0= ); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D if (atomic_read(&key->enabled) !=3D 1) {=0D ({ int __ret_warn_on =3D !!(atomic_read(&key->enabled) !=3D 0); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/jump_label.h"), "i" (3= 27), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))= ); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D return;=0D }=0D atomic_set(&key->enabled, 0);=0D }=0D # 353 "./include/linux/jump_label.h"=0D struct static_key_true {=0D struct static_key key;=0D };=0D =0D struct static_key_false {=0D struct static_key key;=0D };=0D # 407 "./include/linux/jump_label.h"=0D extern bool ____wrong_branch_error(void);=0D # 7 "./include/linux/once.h" 2=0D =0D bool __do_once_start(bool *done, unsigned long *flags);=0D void __do_once_done(bool *done, struct static_key_true *once_key,=0D unsigned long *flags, struct module *mod);=0D # 10 "./include/linux/random.h" 2=0D =0D # 1 "./include/uapi/linux/random.h" 1=0D # 12 "./include/uapi/linux/random.h"=0D # 1 "./include/uapi/linux/ioctl.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/ioctl.h" 1=0D # 1 "./include/asm-generic/ioctl.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/ioctl.h" 1=0D # 6 "./include/asm-generic/ioctl.h" 2=0D =0D =0D =0D =0D =0D extern unsigned int __invalid_size_argument_for_IOC;=0D # 2 "./arch/riscv/include/generated/uapi/asm/ioctl.h" 2=0D # 6 "./include/uapi/linux/ioctl.h" 2=0D # 13 "./include/uapi/linux/random.h" 2=0D # 1 "./include/linux/irqnr.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/irqnr.h" 1=0D # 6 "./include/linux/irqnr.h" 2=0D =0D =0D extern int nr_irqs;=0D extern struct irq_desc *irq_to_desc(unsigned int irq);=0D unsigned int irq_get_next_irq(unsigned int offset);=0D # 14 "./include/uapi/linux/random.h" 2=0D # 41 "./include/uapi/linux/random.h"=0D struct rand_pool_info {=0D int entropy_count;=0D int buf_size;=0D __u32 buf[0];=0D };=0D # 12 "./include/linux/random.h" 2=0D =0D struct notifier_block;=0D =0D extern void add_device_randomness(const void *, size_t);=0D extern void add_bootloader_randomness(const void *, size_t);=0D # 25 "./include/linux/random.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void add_latent_entropy(void= ) {}=0D =0D =0D extern void add_input_randomness(unsigned int type, unsigned int code,=0D unsigned int value) ;=0D extern void add_interrupt_randomness(int irq) ;=0D extern void add_hwgenerator_randomness(const void *buffer, size_t count,=0D size_t entropy);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_random_vmfork_n= otifier(struct notifier_block *nb) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_random_vmfork= _notifier(struct notifier_block *nb) { return 0; }=0D =0D =0D extern void get_random_bytes(void *buf, size_t nbytes);=0D extern int wait_for_random_bytes(void);=0D extern int __attribute__((__section__(".init.text"))) __attribute__((__cold= __)) __attribute__((__no_sanitize__("cfi"))) rand_initialize(void);=0D extern bool rng_is_initialized(void);=0D extern int register_random_ready_notifier(struct notifier_block *nb);=0D extern int unregister_random_ready_notifier(struct notifier_block *nb);=0D extern size_t __attribute__((__warn_unused_result__)) get_random_bytes_arch= (void *buf, size_t nbytes);=0D =0D =0D extern const struct file_operations random_fops, urandom_fops;=0D =0D =0D u32 get_random_u32(void);=0D u64 get_random_u64(void);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int get_random_int(= void)=0D {=0D return get_random_u32();=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_random_lon= g(void)=0D {=0D =0D return get_random_u64();=0D =0D =0D =0D }=0D # 83 "./include/linux/random.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_random_can= ary(void)=0D {=0D unsigned long val =3D get_random_long();=0D =0D return val & 0xffffffffffffff00UL;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_random_bytes_wait(vo= id *buf, size_t nbytes)=0D {=0D int ret =3D wait_for_random_bytes();=0D get_random_bytes(buf, nbytes);=0D return ret;=0D }=0D # 107 "./include/linux/random.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_random_u32_wait(u32 = *out) { int ret =3D wait_for_random_bytes(); if (__builtin_expect(!!(ret), = 0)) return ret; *out =3D get_random_u32(); return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_random_u64_wait(u64 = *out) { int ret =3D wait_for_random_bytes(); if (__builtin_expect(!!(ret), = 0)) return ret; *out =3D get_random_u64(); return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_random_int_wait(int = *out) { int ret =3D wait_for_random_bytes(); if (__builtin_expect(!!(ret), = 0)) return ret; *out =3D get_random_int(); return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_random_long_wait(lon= g *out) { int ret =3D wait_for_random_bytes(); if (__builtin_expect(!!(ret)= , 0)) return ret; *out =3D get_random_long(); return 0; }=0D =0D =0D unsigned long randomize_page(unsigned long start, unsigned long range);=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/prandom.h" 1=0D # 12 "./include/linux/prandom.h"=0D # 1 "./include/linux/percpu.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/mmdebug.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct page;=0D struct vm_area_struct;=0D struct mm_struct;=0D =0D void dump_page(struct page *page, const char *reason);=0D void dump_vma(const struct vm_area_struct *vma);=0D void dump_mm(const struct mm_struct *mm);=0D # 6 "./include/linux/percpu.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/percpu.h" 1=0D # 13 "./include/linux/percpu.h" 2=0D # 64 "./include/linux/percpu.h"=0D extern void *pcpu_base_addr;=0D extern const unsigned long *pcpu_unit_offsets;=0D =0D struct pcpu_group_info {=0D int nr_units;=0D unsigned long base_offset;=0D unsigned int *cpu_map;=0D =0D };=0D =0D struct pcpu_alloc_info {=0D size_t static_size;=0D size_t reserved_size;=0D size_t dyn_size;=0D size_t unit_size;=0D size_t atom_size;=0D size_t alloc_size;=0D size_t __ai_size;=0D int nr_groups;=0D struct pcpu_group_info groups[];=0D };=0D =0D enum pcpu_fc {=0D PCPU_FC_AUTO,=0D PCPU_FC_EMBED,=0D PCPU_FC_PAGE,=0D =0D PCPU_FC_NR,=0D };=0D extern const char * const pcpu_fc_names[PCPU_FC_NR];=0D =0D extern enum pcpu_fc pcpu_chosen_fc;=0D =0D typedef int (pcpu_fc_cpu_to_node_fn_t)(int cpu);=0D typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to)= ;=0D =0D extern struct pcpu_alloc_info * __attribute__((__section__(".init.text"))) = __attribute__((__cold__)) __attribute__((__no_sanitize__("cfi"))) pcpu_allo= c_alloc_info(int nr_groups,=0D int nr_units);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) pcpu_free_alloc_info(struct p= cpu_alloc_info *ai);=0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) pcpu_setup_first_chunk(const = struct pcpu_alloc_info *ai,=0D void *base_addr);=0D # 120 "./include/linux/percpu.h"=0D extern void *__alloc_reserved_percpu(size_t size, size_t align) __attribute= __((__alloc_size__(1))) __attribute__((__malloc__));=0D extern bool __is_kernel_percpu_address(unsigned long addr, unsigned long *c= an_addr);=0D extern bool is_kernel_percpu_address(unsigned long addr);=0D =0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) setup_per_cpu_areas(void);=0D =0D =0D extern void *__alloc_percpu_gfp(size_t size, size_t align, gfp_t gfp) __att= ribute__((__alloc_size__(1))) __attribute__((__malloc__));=0D extern void *__alloc_percpu(size_t size, size_t align) __attribute__((__all= oc_size__(1))) __attribute__((__malloc__));=0D extern void free_percpu(void *__pdata);=0D extern phys_addr_t per_cpu_ptr_to_phys(void *addr);=0D # 140 "./include/linux/percpu.h"=0D extern unsigned long pcpu_nr_pages(void);=0D # 13 "./include/linux/prandom.h" 2=0D =0D u32 prandom_u32(void);=0D void prandom_bytes(void *buf, size_t nbytes);=0D void prandom_seed(u32 seed);=0D void prandom_reseed_late(void);=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned lon= g) net_rand_noise;=0D # 59 "./include/linux/prandom.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void prandom_u32_add_noise(u= nsigned long a, unsigned long b,=0D unsigned long c, unsigned long d)=0D {=0D =0D =0D =0D =0D a ^=3D ({ typeof(net_rand_noise) pscr_ret__; do { const void *__vpp_verify= =3D (typeof((&(net_rand_noise)) + 0))((void *)0); (void)__vpp_verify; } wh= ile (0); switch(sizeof(net_rand_noise)) { case 1: pscr_ret__ =3D ({ *({ do = { const void *__vpp_verify =3D (typeof((&(net_rand_noise)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsig= ned long) ((typeof(*(&(net_rand_noise))) *)(&(net_rand_noise))); (typeof((t= ypeof(*(&(net_rand_noise))) *)(&(net_rand_noise)))) (__ptr + (((__per_cpu_o= ffset[(((struct thread_info *)get_current())->cpu)])))); }); }); }); break;= case 2: pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&= (net_rand_noise)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ uns= igned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(net_rand_noise))) = *)(&(net_rand_noise))); (typeof((typeof(*(&(net_rand_noise))) *)(&(net_rand= _noise)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current= ())->cpu)])))); }); }); }); break; case 4: pscr_ret__ =3D ({ *({ do { const= void *__vpp_verify =3D (typeof((&(net_rand_noise)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(net_rand_noise))) *)(&(net_rand_noise))); (typeof((typeof(*= (&(net_rand_noise))) *)(&(net_rand_noise)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }); }); break; case 8= : pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(net_ra= nd_noise)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned l= ong __ptr; __ptr =3D (unsigned long) ((typeof(*(&(net_rand_noise))) *)(&(ne= t_rand_noise))); (typeof((typeof(*(&(net_rand_noise))) *)(&(net_rand_noise)= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); }); }); break; default: __bad_size_call_parameter(); break; } = pscr_ret__; });=0D ( a +=3D b, b =3D rol64(b, 13), c +=3D d, d =3D rol64(d, 16), b ^=3D a, a = =3D rol64(a, 32), d ^=3D c, a +=3D d, d =3D rol64(d, 21), c +=3D b, b =3D r= ol64(b, 17), d ^=3D a, b ^=3D c, c =3D rol64(c, 32) );=0D do { do { const void *__vpp_verify =3D (typeof((&(net_rand_noise)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(net_rand_noise)) = { case 1: do { *({ do { const void *__vpp_verify =3D (typeof((&(net_rand_no= ise)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long _= _ptr; __ptr =3D (unsigned long) ((typeof(*(&(net_rand_noise))) *)(&(net_ran= d_noise))); (typeof((typeof(*(&(net_rand_noise))) *)(&(net_rand_noise)))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); }) =3D d; } while (0);break; case 2: do { *({ do { const void *__vp= p_verify =3D (typeof((&(net_rand_noise)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&(net_rand_noise))) *)(&(net_rand_noise))); (typeof((typeof(*(&(net_rand= _noise))) *)(&(net_rand_noise)))) (__ptr + (((__per_cpu_offset[(((struct th= read_info *)get_current())->cpu)])))); }); }) =3D d; } while (0);break; cas= e 4: do { *({ do { const void *__vpp_verify =3D (typeof((&(net_rand_noise))= + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr;= __ptr =3D (unsigned long) ((typeof(*(&(net_rand_noise))) *)(&(net_rand_noi= se))); (typeof((typeof(*(&(net_rand_noise))) *)(&(net_rand_noise)))) (__ptr= + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }= ); }) =3D d; } while (0);break; case 8: do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(net_rand_noise)) + 0))((void *)0); (void)__vpp_verify; }= while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(= net_rand_noise))) *)(&(net_rand_noise))); (typeof((typeof(*(&(net_rand_nois= e))) *)(&(net_rand_noise)))) (__ptr + (((__per_cpu_offset[(((struct thread_= info *)get_current())->cpu)])))); }); }) =3D d; } while (0);break; default:= __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D struct rnd_state {=0D __u32 s1, s2, s3, s4;=0D };=0D =0D u32 prandom_u32_state(struct rnd_state *state);=0D void prandom_bytes_state(struct rnd_state *state, void *buf, size_t nbytes)= ;=0D void prandom_seed_full_state(struct rnd_state *pcpu_state);=0D # 94 "./include/linux/prandom.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 prandom_u32_max(u32 ep_r= o)=0D {=0D return (u32)(((u64) prandom_u32() * ep_ro) >> 32);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __seed(u32 x, u32 m)=0D {=0D return (x < m) ? x + m : x;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void prandom_seed_state(stru= ct rnd_state *state, u64 seed)=0D {=0D u32 i =3D ((seed >> 32) ^ (seed << 10) ^ seed) & 0xffffffffUL;=0D =0D state->s1 =3D __seed(i, 2U);=0D state->s2 =3D __seed(i, 8U);=0D state->s3 =3D __seed(i, 16U);=0D state->s4 =3D __seed(i, 128U);=0D prandom_u32_add_noise((unsigned long)(state), (unsigned long)(i), (unsigne= d long)(0), (unsigned long)(0));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 next_pseudo_random32(u32= seed)=0D {=0D return seed * 1664525 + 1013904223;=0D }=0D # 121 "./include/linux/random.h" 2=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) arch_get_random_long(unsigned long *v)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) arch_get_random_int(unsigned int *v)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) arch_get_random_seed_long(unsigned long *v)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) arch_get_random_seed_int(unsigned int *v)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__sectio= n__(".init.text"))) __attribute__((__cold__)) __attribute__((__no_sanitize_= _("cfi"))) arch_get_random_seed_long_early(unsigned long *v)=0D {=0D ({ int __ret_warn_on =3D !!(system_state !=3D SYSTEM_BOOTING); if (__built= in_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/random.h"), "i" (150), "= i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); _= _builtin_expect(!!(__ret_warn_on), 0); });=0D return arch_get_random_seed_long(v);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__sectio= n__(".init.text"))) __attribute__((__cold__)) __attribute__((__no_sanitize_= _("cfi"))) arch_get_random_long_early(unsigned long *v)=0D {=0D ({ int __ret_warn_on =3D !!(system_state !=3D SYSTEM_BOOTING); if (__built= in_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/random.h"), "i" (158), "= i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); _= _builtin_expect(!!(__ret_warn_on), 0); });=0D return arch_get_random_long(v);=0D }=0D =0D =0D =0D extern int random_prepare_cpu(unsigned int cpu);=0D extern int random_online_cpu(unsigned int cpu);=0D # 19 "./include/linux/net.h" 2=0D =0D # 1 "./include/linux/fcntl.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/stat.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/stat.h" 1=0D # 1 "./include/uapi/asm-generic/stat.h" 1=0D # 24 "./include/uapi/asm-generic/stat.h"=0D struct stat {=0D unsigned long st_dev;=0D unsigned long st_ino;=0D unsigned int st_mode;=0D unsigned int st_nlink;=0D unsigned int st_uid;=0D unsigned int st_gid;=0D unsigned long st_rdev;=0D unsigned long __pad1;=0D long st_size;=0D int st_blksize;=0D int __pad2;=0D long st_blocks;=0D long st_atime;=0D unsigned long st_atime_nsec;=0D long st_mtime;=0D unsigned long st_mtime_nsec;=0D long st_ctime;=0D unsigned long st_ctime_nsec;=0D unsigned int __unused4;=0D unsigned int __unused5;=0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/stat.h" 2=0D # 7 "./include/linux/stat.h" 2=0D # 1 "./include/uapi/linux/stat.h" 1=0D # 56 "./include/uapi/linux/stat.h"=0D struct statx_timestamp {=0D __s64 tv_sec;=0D __u32 tv_nsec;=0D __s32 __reserved;=0D };=0D # 99 "./include/uapi/linux/stat.h"=0D struct statx {=0D =0D __u32 stx_mask;=0D __u32 stx_blksize;=0D __u64 stx_attributes;=0D =0D __u32 stx_nlink;=0D __u32 stx_uid;=0D __u32 stx_gid;=0D __u16 stx_mode;=0D __u16 __spare0[1];=0D =0D __u64 stx_ino;=0D __u64 stx_size;=0D __u64 stx_blocks;=0D __u64 stx_attributes_mask;=0D =0D struct statx_timestamp stx_atime;=0D struct statx_timestamp stx_btime;=0D struct statx_timestamp stx_ctime;=0D struct statx_timestamp stx_mtime;=0D =0D __u32 stx_rdev_major;=0D __u32 stx_rdev_minor;=0D __u32 stx_dev_major;=0D __u32 stx_dev_minor;=0D =0D __u64 stx_mnt_id;=0D __u64 __spare2;=0D =0D __u64 __spare3[12];=0D =0D };=0D # 8 "./include/linux/stat.h" 2=0D # 22 "./include/linux/stat.h"=0D struct kstat {=0D u32 result_mask;=0D umode_t mode;=0D unsigned int nlink;=0D uint32_t blksize;=0D u64 attributes;=0D u64 attributes_mask;=0D # 41 "./include/linux/stat.h"=0D u64 ino;=0D dev_t dev;=0D dev_t rdev;=0D kuid_t uid;=0D kgid_t gid;=0D loff_t size;=0D struct timespec64 atime;=0D struct timespec64 mtime;=0D struct timespec64 ctime;=0D struct timespec64 btime;=0D u64 blocks;=0D u64 mnt_id;=0D };=0D # 6 "./include/linux/fcntl.h" 2=0D # 1 "./include/uapi/linux/fcntl.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/fcntl.h" 1=0D # 1 "./include/uapi/asm-generic/fcntl.h" 1=0D # 156 "./include/uapi/asm-generic/fcntl.h"=0D struct f_owner_ex {=0D int type;=0D __kernel_pid_t pid;=0D };=0D # 200 "./include/uapi/asm-generic/fcntl.h"=0D struct flock {=0D short l_type;=0D short l_whence;=0D __kernel_off_t l_start;=0D __kernel_off_t l_len;=0D __kernel_pid_t l_pid;=0D =0D };=0D =0D =0D =0D =0D =0D =0D =0D struct flock64 {=0D short l_type;=0D short l_whence;=0D __kernel_loff_t l_start;=0D __kernel_loff_t l_len;=0D __kernel_pid_t l_pid;=0D =0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/fcntl.h" 2=0D # 6 "./include/uapi/linux/fcntl.h" 2=0D # 1 "./include/uapi/linux/openat2.h" 1=0D # 19 "./include/uapi/linux/openat2.h"=0D struct open_how {=0D __u64 flags;=0D __u64 mode;=0D __u64 resolve;=0D };=0D # 7 "./include/uapi/linux/fcntl.h" 2=0D # 7 "./include/linux/fcntl.h" 2=0D # 21 "./include/linux/net.h" 2=0D =0D =0D # 1 "./include/linux/fs.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/wait_bit.h" 1=0D # 10 "./include/linux/wait_bit.h"=0D struct wait_bit_key {=0D void *flags;=0D int bit_nr;=0D unsigned long timeout;=0D };=0D =0D struct wait_bit_queue_entry {=0D struct wait_bit_key key;=0D struct wait_queue_entry wq_entry;=0D };=0D =0D =0D =0D =0D typedef int wait_bit_action_f(struct wait_bit_key *key, int mode);=0D =0D void __wake_up_bit(struct wait_queue_head *wq_head, void *word, int bit);=0D int __wait_on_bit(struct wait_queue_head *wq_head, struct wait_bit_queue_en= try *wbq_entry, wait_bit_action_f *action, unsigned int mode);=0D int __wait_on_bit_lock(struct wait_queue_head *wq_head, struct wait_bit_que= ue_entry *wbq_entry, wait_bit_action_f *action, unsigned int mode);=0D void wake_up_bit(void *word, int bit);=0D int out_of_line_wait_on_bit(void *word, int, wait_bit_action_f *action, uns= igned int mode);=0D int out_of_line_wait_on_bit_timeout(void *word, int, wait_bit_action_f *act= ion, unsigned int mode, unsigned long timeout);=0D int out_of_line_wait_on_bit_lock(void *word, int, wait_bit_action_f *action= , unsigned int mode);=0D struct wait_queue_head *bit_waitqueue(void *word, int bit);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) wait_bit_init(void);=0D =0D int wake_bit_function(struct wait_queue_entry *wq_entry, unsigned mode, int= sync, void *key);=0D # 49 "./include/linux/wait_bit.h"=0D extern int bit_wait(struct wait_bit_key *key, int mode);=0D extern int bit_wait_io(struct wait_bit_key *key, int mode);=0D extern int bit_wait_timeout(struct wait_bit_key *key, int mode);=0D extern int bit_wait_io_timeout(struct wait_bit_key *key, int mode);=0D # 70 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit(unsigned long *word, int bit, unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 73); __cond_resched(); } wh= ile (0);=0D if (!arch_test_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit(word, bit,=0D bit_wait,=0D mode);=0D }=0D # 95 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_io(unsigned long *word, int bit, unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 98); __cond_resched(); } wh= ile (0);=0D if (!arch_test_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit(word, bit,=0D bit_wait_io,=0D mode);=0D }=0D # 121 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_timeout(unsigned long *word, int bit, unsigned mode,=0D unsigned long timeout)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 125); __cond_resched(); } w= hile (0);=0D if (!arch_test_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit_timeout(word, bit,=0D bit_wait_timeout,=0D mode, timeout);=0D }=0D # 149 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_action(unsigned long *word, int bit, wait_bit_action_f *action,= =0D unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 153); __cond_resched(); } w= hile (0);=0D if (!arch_test_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit(word, bit, action, mode);=0D }=0D # 178 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_lock(unsigned long *word, int bit, unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 181); __cond_resched(); } w= hile (0);=0D if (!test_and_set_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit_lock(word, bit, bit_wait, mode);=0D }=0D # 202 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_lock_io(unsigned long *word, int bit, unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 205); __cond_resched(); } w= hile (0);=0D if (!test_and_set_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit_lock(word, bit, bit_wait_io, mode);=0D }=0D # 228 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D wait_on_bit_lock_action(unsigned long *word, int bit, wait_bit_action_f *ac= tion,=0D unsigned mode)=0D {=0D do { __might_sleep("include/linux/wait_bit.h", 232); __cond_resched(); } w= hile (0);=0D if (!test_and_set_bit(bit, word))=0D return 0;=0D return out_of_line_wait_on_bit_lock(word, bit, action, mode);=0D }=0D =0D extern void init_wait_var_entry(struct wait_bit_queue_entry *wbq_entry, voi= d *var, int flags);=0D extern void wake_up_var(void *var);=0D extern wait_queue_head_t *__var_waitqueue(void *p);=0D # 330 "./include/linux/wait_bit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_and_wake_up_bit(i= nt bit, void *word)=0D {=0D clear_bit_unlock(bit, word);=0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D wake_up_bit(word, bit);=0D }=0D # 7 "./include/linux/fs.h" 2=0D # 1 "./include/linux/kdev_t.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/kdev_t.h" 1=0D # 6 "./include/linux/kdev_t.h" 2=0D # 24 "./include/linux/kdev_t.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool old_valid_dev(dev_t dev)=0D {=0D return ((unsigned int) ((dev) >> 20)) < 256 && ((unsigned int) ((dev) & ((= 1U << 20) - 1))) < 256;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u16 old_encode_dev(dev_t dev)=0D {=0D return (((unsigned int) ((dev) >> 20)) << 8) | ((unsigned int) ((dev) & ((= 1U << 20) - 1)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) dev_t old_decode_dev(u16 val)=0D {=0D return ((((val >> 8) & 255) << 20) | (val & 255));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 new_encode_dev(dev_t dev)=0D {=0D unsigned major =3D ((unsigned int) ((dev) >> 20));=0D unsigned minor =3D ((unsigned int) ((dev) & ((1U << 20) - 1)));=0D return (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) dev_t new_decode_dev(u32 dev)=0D {=0D unsigned major =3D (dev & 0xfff00) >> 8;=0D unsigned minor =3D (dev & 0xff) | ((dev >> 12) & 0xfff00);=0D return (((major) << 20) | (minor));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u64 huge_encode_dev(dev_t dev)=0D {=0D return new_encode_dev(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) dev_t huge_decode_dev(u64 dev)=0D {=0D return new_decode_dev(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int sysv_valid_dev(dev_t dev)=0D {=0D return ((unsigned int) ((dev) >> 20)) < (1<<14) && ((unsigned int) ((dev) = & ((1U << 20) - 1))) < (1<<18);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 sysv_encode_dev(dev_t dev)=0D {=0D return ((unsigned int) ((dev) & ((1U << 20) - 1))) | (((unsigned int) ((de= v) >> 20)) << 18);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned sysv_major(u32 dev)=0D {=0D return (dev >> 18) & 0x3fff;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned sysv_minor(u32 dev)=0D {=0D return dev & 0x3ffff;=0D }=0D # 8 "./include/linux/fs.h" 2=0D # 1 "./include/linux/dcache.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/rculist.h" 1=0D # 22 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INIT_LIST_HEAD_RCU(stru= ct list_head *list)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_8= 7(void) ; if (!((sizeof(list->next) =3D=3D sizeof(char) || sizeof(list->nex= t) =3D=3D sizeof(short) || sizeof(list->next) =3D=3D sizeof(int) || sizeof(= list->next) =3D=3D sizeof(long)) || sizeof(list->next) =3D=3D sizeof(long l= ong))) __compiletime_assert_87(); } while (0); do { *(volatile typeof(list-= >next) *)&(list->next) =3D (list); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_8= 8(void) ; if (!((sizeof(list->prev) =3D=3D sizeof(char) || sizeof(list->pre= v) =3D=3D sizeof(short) || sizeof(list->prev) =3D=3D sizeof(int) || sizeof(= list->prev) =3D=3D sizeof(long)) || sizeof(list->prev) =3D=3D sizeof(long l= ong))) __compiletime_assert_88(); } while (0); do { *(volatile typeof(list-= >prev) *)&(list->prev) =3D (list); } while (0); } while (0);=0D }=0D # 76 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_add_rcu(struct l= ist_head *new,=0D struct list_head *prev, struct list_head *next)=0D {=0D if (!__list_add_valid(new, prev, next))=0D return;=0D =0D new->next =3D next;=0D new->prev =3D prev;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(new); ; if (__builtin_constant_p(= new) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_89(void) ; if (!((sizeof((= (*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(char) || sizeof((= (*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(short) || sizeof(= ((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(int) || sizeof((= (*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(long)) || sizeof(= ((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(long long))) __c= ompiletime_assert_89(); } while (0); do { *(volatile typeof(((*((struct lis= t_head **)(&(prev)->next))))) *)&(((*((struct list_head **)(&(prev)->next))= ))) =3D ((typeof((*((struct list_head **)(&(prev)->next)))))(_r_a_p__v)); }= while (0); } while (0); else do { do { } while (0); do { do { __attribute_= _((__noreturn__)) extern void __compiletime_assert_90(void) ; if (!((sizeof= (*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(char) || sizeof= (*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(short) || sizeo= f(*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(int) || sizeof= (*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(long)))) __comp= iletime_assert_90(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "= w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_91(void) ; if (!((sizeof(*&(*((struct list_head **)(&(pre= v)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct list_head **)(&(pre= v)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct list_head **)(&(pr= ev)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct list_head **)(&(pre= v)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct list_head **)(&(pr= ev)->next)))) =3D=3D sizeof(long long))) __compiletime_assert_91(); } while= (0); do { *(volatile typeof(*&(*((struct list_head **)(&(prev)->next)))) *= )&(*&(*((struct list_head **)(&(prev)->next)))) =3D ((typeof(*((typeof((*((= struct list_head **)(&(prev)->next)))))_r_a_p__v)) *)((typeof((*((struct li= st_head **)(&(prev)->next)))))_r_a_p__v)); } while (0); } while (0); } whil= e (0); } while (0); } while (0);=0D next->prev =3D new;=0D }=0D # 104 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_add_rcu(struct lis= t_head *new, struct list_head *head)=0D {=0D __list_add_rcu(new, head, head->next);=0D }=0D # 125 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_add_tail_rcu(struc= t list_head *new,=0D struct list_head *head)=0D {=0D __list_add_rcu(new, head->prev, head);=0D }=0D # 155 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_del_rcu(struct lis= t_head *entry)=0D {=0D __list_del_entry(entry);=0D entry->prev =3D ((void *) 0x122 + 0);=0D }=0D # 181 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_del_init_rcu(stru= ct hlist_node *n)=0D {=0D if (!hlist_unhashed(n)) {=0D __hlist_del(n);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 92(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_92(); } while (0); do { *(volatile typeof(n->pprev) *)&(= n->pprev) =3D (((void *)0)); } while (0); } while (0);=0D }=0D }=0D # 197 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_replace_rcu(struct= list_head *old,=0D struct list_head *new)=0D {=0D new->next =3D old->next;=0D new->prev =3D old->prev;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(new); ; if (__builtin_constant_p(= new) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_93(void) ; if (!((sizeof((= (*((struct list_head **)(&(new->prev)->next))))) =3D=3D sizeof(char) || siz= eof(((*((struct list_head **)(&(new->prev)->next))))) =3D=3D sizeof(short) = || sizeof(((*((struct list_head **)(&(new->prev)->next))))) =3D=3D sizeof(i= nt) || sizeof(((*((struct list_head **)(&(new->prev)->next))))) =3D=3D size= of(long)) || sizeof(((*((struct list_head **)(&(new->prev)->next))))) =3D= =3D sizeof(long long))) __compiletime_assert_93(); } while (0); do { *(vola= tile typeof(((*((struct list_head **)(&(new->prev)->next))))) *)&(((*((stru= ct list_head **)(&(new->prev)->next))))) =3D ((typeof((*((struct list_head = **)(&(new->prev)->next)))))(_r_a_p__v)); } while (0); } while (0); else do = { do { } while (0); do { do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_94(void) ; if (!((sizeof(*&(*((struct list_head **)(&(new= ->prev)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct list_head **)(= &(new->prev)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct list_hea= d **)(&(new->prev)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct list= _head **)(&(new->prev)->next)))) =3D=3D sizeof(long)))) __compiletime_asser= t_94(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "mem= ory"); do { do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_95(void) ; if (!((sizeof(*&(*((struct list_head **)(&(new->prev)->next= )))) =3D=3D sizeof(char) || sizeof(*&(*((struct list_head **)(&(new->prev)-= >next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct list_head **)(&(new->= prev)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct list_head **)(&(n= ew->prev)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct list_head *= *)(&(new->prev)->next)))) =3D=3D sizeof(long long))) __compiletime_assert_9= 5(); } while (0); do { *(volatile typeof(*&(*((struct list_head **)(&(new->= prev)->next)))) *)&(*&(*((struct list_head **)(&(new->prev)->next)))) =3D (= (typeof(*((typeof((*((struct list_head **)(&(new->prev)->next)))))_r_a_p__v= )) *)((typeof((*((struct list_head **)(&(new->prev)->next)))))_r_a_p__v)); = } while (0); } while (0); } while (0); } while (0); } while (0);=0D new->next->prev =3D new;=0D old->prev =3D ((void *) 0x122 + 0);=0D }=0D # 226 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __list_splice_init_rcu(= struct list_head *list,=0D struct list_head *prev,=0D struct list_head *next,=0D void (*sync)(void))=0D {=0D struct list_head *first =3D list->next;=0D struct list_head *last =3D list->prev;=0D =0D =0D =0D =0D =0D =0D =0D INIT_LIST_HEAD_RCU(list);=0D # 249 "./include/linux/rculist.h"=0D sync();=0D __kcsan_check_access(&(*first), sizeof(*first), (1 << 0) | (1 << 3));=0D __kcsan_check_access(&(*last), sizeof(*last), (1 << 0) | (1 << 3));=0D # 261 "./include/linux/rculist.h"=0D last->next =3D next;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(first); ; if (__builtin_constant_= p(first) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_96(void) ; if (!((size= of(((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(char) || size= of(((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(short) || siz= eof(((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(int) || size= of(((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(long)) || siz= eof(((*((struct list_head **)(&(prev)->next))))) =3D=3D sizeof(long long)))= __compiletime_assert_96(); } while (0); do { *(volatile typeof(((*((struct= list_head **)(&(prev)->next))))) *)&(((*((struct list_head **)(&(prev)->ne= xt))))) =3D ((typeof((*((struct list_head **)(&(prev)->next)))))(_r_a_p__v)= ); } while (0); } while (0); else do { do { } while (0); do { do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_97(void) ; if (!((si= zeof(*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(char) || si= zeof(*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(short) || s= izeof(*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(int) || si= zeof(*&(*((struct list_head **)(&(prev)->next)))) =3D=3D sizeof(long)))) __= compiletime_assert_97(); } while (0); __asm__ __volatile__ ("fence " "rw" "= ," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern void= __compiletime_assert_98(void) ; if (!((sizeof(*&(*((struct list_head **)(&= (prev)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct list_head **)(&= (prev)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct list_head **)(= &(prev)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct list_head **)(&= (prev)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct list_head **)(= &(prev)->next)))) =3D=3D sizeof(long long))) __compiletime_assert_98(); } w= hile (0); do { *(volatile typeof(*&(*((struct list_head **)(&(prev)->next))= )) *)&(*&(*((struct list_head **)(&(prev)->next)))) =3D ((typeof(*((typeof(= (*((struct list_head **)(&(prev)->next)))))_r_a_p__v)) *)((typeof((*((struc= t list_head **)(&(prev)->next)))))_r_a_p__v)); } while (0); } while (0); } = while (0); } while (0); } while (0);=0D first->prev =3D prev;=0D next->prev =3D last;=0D }=0D # 274 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice_init_rcu(st= ruct list_head *list,=0D struct list_head *head,=0D void (*sync)(void))=0D {=0D if (!list_empty(list))=0D __list_splice_init_rcu(list, head, head->next, sync);=0D }=0D # 289 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void list_splice_tail_init_r= cu(struct list_head *list,=0D struct list_head *head,=0D void (*sync)(void))=0D {=0D if (!list_empty(list))=0D __list_splice_init_rcu(list, head->prev, head, sync);=0D }=0D # 511 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_del_rcu(struct hl= ist_node *n)=0D {=0D __hlist_del(n);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_9= 9(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_99(); } while (0); do { *(volatile typeof(n->pprev) *)&(= n->pprev) =3D (((void *) 0x122 + 0)); } while (0); } while (0);=0D }=0D # 524 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_replace_rcu(struc= t hlist_node *old,=0D struct hlist_node *new)=0D {=0D struct hlist_node *next =3D old->next;=0D =0D new->next =3D next;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 00(void) ; if (!((sizeof(new->pprev) =3D=3D sizeof(char) || sizeof(new->ppr= ev) =3D=3D sizeof(short) || sizeof(new->pprev) =3D=3D sizeof(int) || sizeof= (new->pprev) =3D=3D sizeof(long)) || sizeof(new->pprev) =3D=3D sizeof(long = long))) __compiletime_assert_100(); } while (0); do { *(volatile typeof(new= ->pprev) *)&(new->pprev) =3D (old->pprev); } while (0); } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(new); ; if (__builtin_constant_p(= new) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_101(void) ; if (!((sizeof(= (*(struct hlist_node **)new->pprev)) =3D=3D sizeof(char) || sizeof((*(struc= t hlist_node **)new->pprev)) =3D=3D sizeof(short) || sizeof((*(struct hlist= _node **)new->pprev)) =3D=3D sizeof(int) || sizeof((*(struct hlist_node **)= new->pprev)) =3D=3D sizeof(long)) || sizeof((*(struct hlist_node **)new->pp= rev)) =3D=3D sizeof(long long))) __compiletime_assert_101(); } while (0); d= o { *(volatile typeof((*(struct hlist_node **)new->pprev)) *)&((*(struct hl= ist_node **)new->pprev)) =3D ((typeof(*(struct hlist_node **)new->pprev))(_= r_a_p__v)); } while (0); } while (0); else do { do { } while (0); do { do {= __attribute__((__noreturn__)) extern void __compiletime_assert_102(void) ;= if (!((sizeof(*&*(struct hlist_node **)new->pprev) =3D=3D sizeof(char) || = sizeof(*&*(struct hlist_node **)new->pprev) =3D=3D sizeof(short) || sizeof(= *&*(struct hlist_node **)new->pprev) =3D=3D sizeof(int) || sizeof(*&*(struc= t hlist_node **)new->pprev) =3D=3D sizeof(long)))) __compiletime_assert_102= (); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory"= ); do { do { __attribute__((__noreturn__)) extern void __compiletime_assert= _103(void) ; if (!((sizeof(*&*(struct hlist_node **)new->pprev) =3D=3D size= of(char) || sizeof(*&*(struct hlist_node **)new->pprev) =3D=3D sizeof(short= ) || sizeof(*&*(struct hlist_node **)new->pprev) =3D=3D sizeof(int) || size= of(*&*(struct hlist_node **)new->pprev) =3D=3D sizeof(long)) || sizeof(*&*(= struct hlist_node **)new->pprev) =3D=3D sizeof(long long))) __compiletime_a= ssert_103(); } while (0); do { *(volatile typeof(*&*(struct hlist_node **)n= ew->pprev) *)&(*&*(struct hlist_node **)new->pprev) =3D ((typeof(*((typeof(= *(struct hlist_node **)new->pprev))_r_a_p__v)) *)((typeof(*(struct hlist_no= de **)new->pprev))_r_a_p__v)); } while (0); } while (0); } while (0); } whi= le (0); } while (0);=0D if (next)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 104(void) ; if (!((sizeof(new->next->pprev) =3D=3D sizeof(char) || sizeof(n= ew->next->pprev) =3D=3D sizeof(short) || sizeof(new->next->pprev) =3D=3D si= zeof(int) || sizeof(new->next->pprev) =3D=3D sizeof(long)) || sizeof(new->n= ext->pprev) =3D=3D sizeof(long long))) __compiletime_assert_104(); } while = (0); do { *(volatile typeof(new->next->pprev) *)&(new->next->pprev) =3D (&n= ew->next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 05(void) ; if (!((sizeof(old->pprev) =3D=3D sizeof(char) || sizeof(old->ppr= ev) =3D=3D sizeof(short) || sizeof(old->pprev) =3D=3D sizeof(int) || sizeof= (old->pprev) =3D=3D sizeof(long)) || sizeof(old->pprev) =3D=3D sizeof(long = long))) __compiletime_assert_105(); } while (0); do { *(volatile typeof(old= ->pprev) *)&(old->pprev) =3D (((void *) 0x122 + 0)); } while (0); } while (= 0);=0D }=0D # 547 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlists_swap_heads_rcu(s= truct hlist_head *left, struct hlist_head *right)=0D {=0D struct hlist_node *node1 =3D left->first;=0D struct hlist_node *node2 =3D right->first;=0D =0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(node2); ; if (__builtin_constant_= p(node2) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_106(void) ; if (!((siz= eof((left->first)) =3D=3D sizeof(char) || sizeof((left->first)) =3D=3D size= of(short) || sizeof((left->first)) =3D=3D sizeof(int) || sizeof((left->firs= t)) =3D=3D sizeof(long)) || sizeof((left->first)) =3D=3D sizeof(long long))= ) __compiletime_assert_106(); } while (0); do { *(volatile typeof((left->fi= rst)) *)&((left->first)) =3D ((typeof(left->first))(_r_a_p__v)); } while (0= ); } while (0); else do { do { } while (0); do { do { __attribute__((__nore= turn__)) extern void __compiletime_assert_107(void) ; if (!((sizeof(*&left-= >first) =3D=3D sizeof(char) || sizeof(*&left->first) =3D=3D sizeof(short) |= | sizeof(*&left->first) =3D=3D sizeof(int) || sizeof(*&left->first) =3D=3D = sizeof(long)))) __compiletime_assert_107(); } while (0); __asm__ __volatile= __ ("fence " "rw" "," "w" : : : "memory"); do { do { __attribute__((__noret= urn__)) extern void __compiletime_assert_108(void) ; if (!((sizeof(*&left->= first) =3D=3D sizeof(char) || sizeof(*&left->first) =3D=3D sizeof(short) ||= sizeof(*&left->first) =3D=3D sizeof(int) || sizeof(*&left->first) =3D=3D s= izeof(long)) || sizeof(*&left->first) =3D=3D sizeof(long long))) __compilet= ime_assert_108(); } while (0); do { *(volatile typeof(*&left->first) *)&(*&= left->first) =3D ((typeof(*((typeof(left->first))_r_a_p__v)) *)((typeof(lef= t->first))_r_a_p__v)); } while (0); } while (0); } while (0); } while (0); = } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(node1); ; if (__builtin_constant_= p(node1) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_109(void) ; if (!((siz= eof((right->first)) =3D=3D sizeof(char) || sizeof((right->first)) =3D=3D si= zeof(short) || sizeof((right->first)) =3D=3D sizeof(int) || sizeof((right->= first)) =3D=3D sizeof(long)) || sizeof((right->first)) =3D=3D sizeof(long l= ong))) __compiletime_assert_109(); } while (0); do { *(volatile typeof((rig= ht->first)) *)&((right->first)) =3D ((typeof(right->first))(_r_a_p__v)); } = while (0); } while (0); else do { do { } while (0); do { do { __attribute__= ((__noreturn__)) extern void __compiletime_assert_110(void) ; if (!((sizeof= (*&right->first) =3D=3D sizeof(char) || sizeof(*&right->first) =3D=3D sizeo= f(short) || sizeof(*&right->first) =3D=3D sizeof(int) || sizeof(*&right->fi= rst) =3D=3D sizeof(long)))) __compiletime_assert_110(); } while (0); __asm_= _ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do { do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_111(void) ; if (!((siz= eof(*&right->first) =3D=3D sizeof(char) || sizeof(*&right->first) =3D=3D si= zeof(short) || sizeof(*&right->first) =3D=3D sizeof(int) || sizeof(*&right-= >first) =3D=3D sizeof(long)) || sizeof(*&right->first) =3D=3D sizeof(long l= ong))) __compiletime_assert_111(); } while (0); do { *(volatile typeof(*&ri= ght->first) *)&(*&right->first) =3D ((typeof(*((typeof(right->first))_r_a_p= __v)) *)((typeof(right->first))_r_a_p__v)); } while (0); } while (0); } whi= le (0); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 12(void) ; if (!((sizeof(node2->pprev) =3D=3D sizeof(char) || sizeof(node2-= >pprev) =3D=3D sizeof(short) || sizeof(node2->pprev) =3D=3D sizeof(int) || = sizeof(node2->pprev) =3D=3D sizeof(long)) || sizeof(node2->pprev) =3D=3D si= zeof(long long))) __compiletime_assert_112(); } while (0); do { *(volatile = typeof(node2->pprev) *)&(node2->pprev) =3D (&left->first); } while (0); } w= hile (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 13(void) ; if (!((sizeof(node1->pprev) =3D=3D sizeof(char) || sizeof(node1-= >pprev) =3D=3D sizeof(short) || sizeof(node1->pprev) =3D=3D sizeof(int) || = sizeof(node1->pprev) =3D=3D sizeof(long)) || sizeof(node1->pprev) =3D=3D si= zeof(long long))) __compiletime_assert_113(); } while (0); do { *(volatile = typeof(node1->pprev) *)&(node1->pprev) =3D (&right->first); } while (0); } = while (0);=0D }=0D # 584 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_head_rcu(stru= ct hlist_node *n,=0D struct hlist_head *h)=0D {=0D struct hlist_node *first =3D h->first;=0D =0D n->next =3D first;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 14(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_114(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (&h->first); } while (0); } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n)= && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_115(void) ; if (!((sizeof(((*(= (struct hlist_node **)(&(h)->first))))) =3D=3D sizeof(char) || sizeof(((*((= struct hlist_node **)(&(h)->first))))) =3D=3D sizeof(short) || sizeof(((*((= struct hlist_node **)(&(h)->first))))) =3D=3D sizeof(int) || sizeof(((*((st= ruct hlist_node **)(&(h)->first))))) =3D=3D sizeof(long)) || sizeof(((*((st= ruct hlist_node **)(&(h)->first))))) =3D=3D sizeof(long long))) __compileti= me_assert_115(); } while (0); do { *(volatile typeof(((*((struct hlist_node= **)(&(h)->first))))) *)&(((*((struct hlist_node **)(&(h)->first))))) =3D (= (typeof((*((struct hlist_node **)(&(h)->first)))))(_r_a_p__v)); } while (0)= ; } while (0); else do { do { } while (0); do { do { __attribute__((__noret= urn__)) extern void __compiletime_assert_116(void) ; if (!((sizeof(*&(*((st= ruct hlist_node **)(&(h)->first)))) =3D=3D sizeof(char) || sizeof(*&(*((str= uct hlist_node **)(&(h)->first)))) =3D=3D sizeof(short) || sizeof(*&(*((str= uct hlist_node **)(&(h)->first)))) =3D=3D sizeof(int) || sizeof(*&(*((struc= t hlist_node **)(&(h)->first)))) =3D=3D sizeof(long)))) __compiletime_asser= t_116(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "me= mory"); do { do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_117(void) ; if (!((sizeof(*&(*((struct hlist_node **)(&(h)->first))))= =3D=3D sizeof(char) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) = =3D=3D sizeof(short) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) = =3D=3D sizeof(int) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) = =3D=3D sizeof(long)) || sizeof(*&(*((struct hlist_node **)(&(h)->first)))) = =3D=3D sizeof(long long))) __compiletime_assert_117(); } while (0); do { *(= volatile typeof(*&(*((struct hlist_node **)(&(h)->first)))) *)&(*&(*((struc= t hlist_node **)(&(h)->first)))) =3D ((typeof(*((typeof((*((struct hlist_no= de **)(&(h)->first)))))_r_a_p__v)) *)((typeof((*((struct hlist_node **)(&(h= )->first)))))_r_a_p__v)); } while (0); } while (0); } while (0); } while (0= ); } while (0);=0D if (first)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 118(void) ; if (!((sizeof(first->pprev) =3D=3D sizeof(char) || sizeof(first= ->pprev) =3D=3D sizeof(short) || sizeof(first->pprev) =3D=3D sizeof(int) ||= sizeof(first->pprev) =3D=3D sizeof(long)) || sizeof(first->pprev) =3D=3D s= izeof(long long))) __compiletime_assert_118(); } while (0); do { *(volatile= typeof(first->pprev) *)&(first->pprev) =3D (&n->next); } while (0); } whil= e (0);=0D }=0D # 615 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_tail_rcu(stru= ct hlist_node *n,=0D struct hlist_head *h)=0D {=0D struct hlist_node *i, *last =3D ((void *)0);=0D =0D =0D for (i =3D h->first; i; i =3D i->next)=0D last =3D i;=0D =0D if (last) {=0D n->next =3D last->next;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 119(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev)= =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->p= prev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) _= _compiletime_assert_119(); } while (0); do { *(volatile typeof(n->pprev) *)= &(n->pprev) =3D (&last->next); } while (0); } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n= ) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__= noreturn__)) extern void __compiletime_assert_120(void) ; if (!((sizeof(((*= ((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(char) || sizeof(((= *((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(short) || sizeof(= ((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(int) || sizeof(= ((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(long)) || sizeo= f(((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(long long))) = __compiletime_assert_120(); } while (0); do { *(volatile typeof(((*((struct= hlist_node **)(&(last)->next))))) *)&(((*((struct hlist_node **)(&(last)->= next))))) =3D ((typeof((*((struct hlist_node **)(&(last)->next)))))(_r_a_p_= _v)); } while (0); } while (0); else do { do { } while (0); do { do { __att= ribute__((__noreturn__)) extern void __compiletime_assert_121(void) ; if (!= ((sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(char) = || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(short= ) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(int= ) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(lon= g)))) __compiletime_assert_121(); } while (0); __asm__ __volatile__ ("fence= " "rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_122(void) ; if (!((sizeof(*&(*((struct hlist= _node **)(&(last)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct hlis= t_node **)(&(last)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct hl= ist_node **)(&(last)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct hl= ist_node **)(&(last)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct = hlist_node **)(&(last)->next)))) =3D=3D sizeof(long long))) __compiletime_a= ssert_122(); } while (0); do { *(volatile typeof(*&(*((struct hlist_node **= )(&(last)->next)))) *)&(*&(*((struct hlist_node **)(&(last)->next)))) =3D (= (typeof(*((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)) *= )((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)); } while = (0); } while (0); } while (0); } while (0); } while (0);=0D } else {=0D hlist_add_head_rcu(n, h);=0D }=0D }=0D # 651 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_before_rcu(st= ruct hlist_node *n,=0D struct hlist_node *next)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 23(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_123(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (next->pprev); } while (0); } while (0);=0D n->next =3D next;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n)= && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_124(void) ; if (!((sizeof(((*(= (struct hlist_node **)((n)->pprev))))) =3D=3D sizeof(char) || sizeof(((*((s= truct hlist_node **)((n)->pprev))))) =3D=3D sizeof(short) || sizeof(((*((st= ruct hlist_node **)((n)->pprev))))) =3D=3D sizeof(int) || sizeof(((*((struc= t hlist_node **)((n)->pprev))))) =3D=3D sizeof(long)) || sizeof(((*((struct= hlist_node **)((n)->pprev))))) =3D=3D sizeof(long long))) __compiletime_as= sert_124(); } while (0); do { *(volatile typeof(((*((struct hlist_node **)(= (n)->pprev))))) *)&(((*((struct hlist_node **)((n)->pprev))))) =3D ((typeof= ((*((struct hlist_node **)((n)->pprev)))))(_r_a_p__v)); } while (0); } whil= e (0); else do { do { } while (0); do { do { __attribute__((__noreturn__)) = extern void __compiletime_assert_125(void) ; if (!((sizeof(*&(*((struct hli= st_node **)((n)->pprev)))) =3D=3D sizeof(char) || sizeof(*&(*((struct hlist= _node **)((n)->pprev)))) =3D=3D sizeof(short) || sizeof(*&(*((struct hlist_= node **)((n)->pprev)))) =3D=3D sizeof(int) || sizeof(*&(*((struct hlist_nod= e **)((n)->pprev)))) =3D=3D sizeof(long)))) __compiletime_assert_125(); } w= hile (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do {= do { __attribute__((__noreturn__)) extern void __compiletime_assert_126(vo= id) ; if (!((sizeof(*&(*((struct hlist_node **)((n)->pprev)))) =3D=3D sizeo= f(char) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) =3D=3D sizeof(= short) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) =3D=3D sizeof(i= nt) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) =3D=3D sizeof(long= )) || sizeof(*&(*((struct hlist_node **)((n)->pprev)))) =3D=3D sizeof(long = long))) __compiletime_assert_126(); } while (0); do { *(volatile typeof(*&(= *((struct hlist_node **)((n)->pprev)))) *)&(*&(*((struct hlist_node **)((n)= ->pprev)))) =3D ((typeof(*((typeof((*((struct hlist_node **)((n)->pprev))))= )_r_a_p__v)) *)((typeof((*((struct hlist_node **)((n)->pprev)))))_r_a_p__v)= ); } while (0); } while (0); } while (0); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 27(void) ; if (!((sizeof(next->pprev) =3D=3D sizeof(char) || sizeof(next->p= prev) =3D=3D sizeof(short) || sizeof(next->pprev) =3D=3D sizeof(int) || siz= eof(next->pprev) =3D=3D sizeof(long)) || sizeof(next->pprev) =3D=3D sizeof(= long long))) __compiletime_assert_127(); } while (0); do { *(volatile typeo= f(next->pprev) *)&(next->pprev) =3D (&n->next); } while (0); } while (0);=0D }=0D # 678 "./include/linux/rculist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_add_behind_rcu(st= ruct hlist_node *n,=0D struct hlist_node *prev)=0D {=0D n->next =3D prev->next;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 28(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_128(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (&prev->next); } while (0); } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n)= && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_129(void) ; if (!((sizeof(((*(= (struct hlist_node **)(&(prev)->next))))) =3D=3D sizeof(char) || sizeof(((*= ((struct hlist_node **)(&(prev)->next))))) =3D=3D sizeof(short) || sizeof((= (*((struct hlist_node **)(&(prev)->next))))) =3D=3D sizeof(int) || sizeof((= (*((struct hlist_node **)(&(prev)->next))))) =3D=3D sizeof(long)) || sizeof= (((*((struct hlist_node **)(&(prev)->next))))) =3D=3D sizeof(long long))) _= _compiletime_assert_129(); } while (0); do { *(volatile typeof(((*((struct = hlist_node **)(&(prev)->next))))) *)&(((*((struct hlist_node **)(&(prev)->n= ext))))) =3D ((typeof((*((struct hlist_node **)(&(prev)->next)))))(_r_a_p__= v)); } while (0); } while (0); else do { do { } while (0); do { do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_130(void) ; if (!(= (sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) =3D=3D sizeof(char) |= | sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) =3D=3D sizeof(short)= || sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) =3D=3D sizeof(int)= || sizeof(*&(*((struct hlist_node **)(&(prev)->next)))) =3D=3D sizeof(long= )))) __compiletime_assert_130(); } while (0); __asm__ __volatile__ ("fence = " "rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) ext= ern void __compiletime_assert_131(void) ; if (!((sizeof(*&(*((struct hlist_= node **)(&(prev)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct hlist= _node **)(&(prev)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct hli= st_node **)(&(prev)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct hli= st_node **)(&(prev)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct h= list_node **)(&(prev)->next)))) =3D=3D sizeof(long long))) __compiletime_as= sert_131(); } while (0); do { *(volatile typeof(*&(*((struct hlist_node **)= (&(prev)->next)))) *)&(*&(*((struct hlist_node **)(&(prev)->next)))) =3D ((= typeof(*((typeof((*((struct hlist_node **)(&(prev)->next)))))_r_a_p__v)) *)= ((typeof((*((struct hlist_node **)(&(prev)->next)))))_r_a_p__v)); } while (= 0); } while (0); } while (0); } while (0); } while (0);=0D if (n->next)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 132(void) ; if (!((sizeof(n->next->pprev) =3D=3D sizeof(char) || sizeof(n->= next->pprev) =3D=3D sizeof(short) || sizeof(n->next->pprev) =3D=3D sizeof(i= nt) || sizeof(n->next->pprev) =3D=3D sizeof(long)) || sizeof(n->next->pprev= ) =3D=3D sizeof(long long))) __compiletime_assert_132(); } while (0); do { = *(volatile typeof(n->next->pprev) *)&(n->next->pprev) =3D (&n->next); } whi= le (0); } while (0);=0D }=0D # 9 "./include/linux/dcache.h" 2=0D # 1 "./include/linux/rculist_bl.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/list_bl.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/bit_spinlock.h" 1=0D # 16 "./include/linux/bit_spinlock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bit_spin_lock(int bitnu= m, unsigned long *addr)=0D {=0D =0D =0D =0D =0D =0D =0D =0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D =0D while (__builtin_expect(!!(test_and_set_bit_lock(bitnum, addr)), 0)) {=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whi= le (0);=0D do {=0D cpu_relax();=0D } while (arch_test_bit(bitnum, addr));=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whi= le (0);=0D }=0D =0D (void)0;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bit_spin_trylock(int bit= num, unsigned long *addr)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D =0D if (__builtin_expect(!!(test_and_set_bit_lock(bitnum, addr)), 0)) {=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whi= le (0);=0D return 0;=0D }=0D =0D (void)0;=0D return 1;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bit_spin_unlock(int bit= num, unsigned long *addr)=0D {=0D =0D do { if (__builtin_expect(!!(!arch_test_bit(bitnum, addr)), 0)) do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/bit_spinlock.h"), "i" (60), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } while (0);=0D =0D =0D clear_bit_unlock(bitnum, addr);=0D =0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D (void)0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __bit_spin_unlock(int b= itnum, unsigned long *addr)=0D {=0D =0D do { if (__builtin_expect(!!(!arch_test_bit(bitnum, addr)), 0)) do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/bit_spinlock.h"), "i" (77), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } while (0);=0D =0D =0D __clear_bit_unlock(bitnum, addr);=0D =0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D (void)0;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bit_spin_is_locked(int b= itnum, unsigned long *addr)=0D {=0D =0D return arch_test_bit(bitnum, addr);=0D =0D =0D =0D =0D =0D }=0D # 7 "./include/linux/list_bl.h" 2=0D # 34 "./include/linux/list_bl.h"=0D struct hlist_bl_head {=0D struct hlist_bl_node *first;=0D };=0D =0D struct hlist_bl_node {=0D struct hlist_bl_node *next, **pprev;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INIT_HLIST_BL_NODE(stru= ct hlist_bl_node *h)=0D {=0D h->next =3D ((void *)0);=0D h->pprev =3D ((void *)0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hlist_bl_unhashed(const= struct hlist_bl_node *h)=0D {=0D return !h->pprev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct hlist_bl_node *hlist_= bl_first(struct hlist_bl_head *h)=0D {=0D return (struct hlist_bl_node *)=0D ((unsigned long)h->first & ~1UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_set_first(stru= ct hlist_bl_head *h,=0D struct hlist_bl_node *n)=0D {=0D do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { __asm_= _ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" = "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n= \t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include= /linux/list_bl.h"), "i" (66), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while= (0);=0D do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) !=3D 1UL), 0)= ) do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/list_bl.h"), "i" (68), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0); } while (0);=0D =0D h->first =3D (struct hlist_bl_node *)((unsigned long)n | 1UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hlist_bl_empty(const st= ruct hlist_bl_head *h)=0D {=0D return !((unsigned long)({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_133(void) ; if (!((sizeof(h->first) =3D=3D sizeof(char= ) || sizeof(h->first) =3D=3D sizeof(short) || sizeof(h->first) =3D=3D sizeo= f(int) || sizeof(h->first) =3D=3D sizeof(long)) || sizeof(h->first) =3D=3D = sizeof(long long))) __compiletime_assert_133(); } while (0); (*(const volat= ile typeof( _Generic((h->first), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: (h->first))) *)&(h->first)); }) & ~1UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_add_head(struc= t hlist_bl_node *n,=0D struct hlist_bl_head *h)=0D {=0D struct hlist_bl_node *first =3D hlist_bl_first(h);=0D =0D n->next =3D first;=0D if (first)=0D first->pprev =3D &n->next;=0D n->pprev =3D &h->first;=0D hlist_bl_set_first(h, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_add_before(str= uct hlist_bl_node *n,=0D struct hlist_bl_node *next)=0D {=0D struct hlist_bl_node **pprev =3D next->pprev;=0D =0D n->pprev =3D pprev;=0D n->next =3D next;=0D next->pprev =3D &n->next;=0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 34(void) ; if (!((sizeof(*pprev) =3D=3D sizeof(char) || sizeof(*pprev) =3D= =3D sizeof(short) || sizeof(*pprev) =3D=3D sizeof(int) || sizeof(*pprev) = =3D=3D sizeof(long)) || sizeof(*pprev) =3D=3D sizeof(long long))) __compile= time_assert_134(); } while (0); do { *(volatile typeof(*pprev) *)&(*pprev) = =3D ((struct hlist_bl_node *) ((uintptr_t)n | ((uintptr_t)*pprev & 1UL))); = } while (0); } while (0);=0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_add_behind(str= uct hlist_bl_node *n,=0D struct hlist_bl_node *prev)=0D {=0D n->next =3D prev->next;=0D n->pprev =3D &prev->next;=0D prev->next =3D n;=0D =0D if (n->next)=0D n->next->pprev =3D &n->next;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __hlist_bl_del(struct h= list_bl_node *n)=0D {=0D struct hlist_bl_node *next =3D n->next;=0D struct hlist_bl_node **pprev =3D n->pprev;=0D =0D do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { __asm_= _ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" = "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n= \t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include= /linux/list_bl.h"), "i" (120), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } whil= e (0);=0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 35(void) ; if (!((sizeof(*pprev) =3D=3D sizeof(char) || sizeof(*pprev) =3D= =3D sizeof(short) || sizeof(*pprev) =3D=3D sizeof(int) || sizeof(*pprev) = =3D=3D sizeof(long)) || sizeof(*pprev) =3D=3D sizeof(long long))) __compile= time_assert_135(); } while (0); do { *(volatile typeof(*pprev) *)&(*pprev) = =3D ((struct hlist_bl_node *) ((unsigned long)next | ((unsigned long)*pprev= & 1UL))); } while (0); } while (0);=0D =0D =0D =0D if (next)=0D next->pprev =3D pprev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_del(struct hli= st_bl_node *n)=0D {=0D __hlist_bl_del(n);=0D n->next =3D ((void *) 0x100 + 0);=0D n->pprev =3D ((void *) 0x122 + 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_del_init(struc= t hlist_bl_node *n)=0D {=0D if (!hlist_bl_unhashed(n)) {=0D __hlist_bl_del(n);=0D INIT_HLIST_BL_NODE(n);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_lock(struct hl= ist_bl_head *b)=0D {=0D bit_spin_lock(0, (unsigned long *)b);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_unlock(struct = hlist_bl_head *b)=0D {=0D __bit_spin_unlock(0, (unsigned long *)b);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hlist_bl_is_locked(stru= ct hlist_bl_head *b)=0D {=0D return bit_spin_is_locked(0, (unsigned long *)b);=0D }=0D # 9 "./include/linux/rculist_bl.h" 2=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_set_first_rcu(= struct hlist_bl_head *h,=0D struct hlist_bl_node *n)=0D {=0D do { if (__builtin_expect(!!((unsigned long)n & 1UL), 0)) do { do { __asm_= _ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" = "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n= \t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include= /linux/rculist_bl.h"), "i" (14), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } wh= ile (0);=0D do { if (__builtin_expect(!!(((unsigned long)h->first & 1UL) !=3D 1UL), 0)= ) do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/rculist_bl.h"), "i" (16), "i" (0), "i" (sizeof(str= uct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0);= } while (0); } while (0);=0D =0D do { uintptr_t _r_a_p__v =3D (uintptr_t)((struct hlist_bl_node *)((unsigne= d long)n | 1UL)); ; if (__builtin_constant_p((struct hlist_bl_node *)((unsi= gned long)n | 1UL)) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do {= __attribute__((__noreturn__)) extern void __compiletime_assert_136(void) ;= if (!((sizeof((h->first)) =3D=3D sizeof(char) || sizeof((h->first)) =3D=3D= sizeof(short) || sizeof((h->first)) =3D=3D sizeof(int) || sizeof((h->first= )) =3D=3D sizeof(long)) || sizeof((h->first)) =3D=3D sizeof(long long))) __= compiletime_assert_136(); } while (0); do { *(volatile typeof((h->first)) *= )&((h->first)) =3D ((typeof(h->first))(_r_a_p__v)); } while (0); } while (0= ); else do { do { } while (0); do { do { __attribute__((__noreturn__)) exte= rn void __compiletime_assert_137(void) ; if (!((sizeof(*&h->first) =3D=3D s= izeof(char) || sizeof(*&h->first) =3D=3D sizeof(short) || sizeof(*&h->first= ) =3D=3D sizeof(int) || sizeof(*&h->first) =3D=3D sizeof(long)))) __compile= time_assert_137(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w"= : : : "memory"); do { do { __attribute__((__noreturn__)) extern void __com= piletime_assert_138(void) ; if (!((sizeof(*&h->first) =3D=3D sizeof(char) |= | sizeof(*&h->first) =3D=3D sizeof(short) || sizeof(*&h->first) =3D=3D size= of(int) || sizeof(*&h->first) =3D=3D sizeof(long)) || sizeof(*&h->first) = =3D=3D sizeof(long long))) __compiletime_assert_138(); } while (0); do { *(= volatile typeof(*&h->first) *)&(*&h->first) =3D ((typeof(*((typeof(h->first= ))_r_a_p__v)) *)((typeof(h->first))_r_a_p__v)); } while (0); } while (0); }= while (0); } while (0); } while (0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct hlist_bl_node *hlist_= bl_first_rcu(struct hlist_bl_head *h)=0D {=0D return (struct hlist_bl_node *)=0D ((unsigned long)({ typeof(*(h->first)) *__UNIQUE_ID_rcu139 =3D (typeof(*(= h->first)) *)({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_140(void) ; if (!((sizeof((h->first)) =3D=3D sizeof(char) || sizeo= f((h->first)) =3D=3D sizeof(short) || sizeof((h->first)) =3D=3D sizeof(int)= || sizeof((h->first)) =3D=3D sizeof(long)) || sizeof((h->first)) =3D=3D si= zeof(long long))) __compiletime_assert_140(); } while (0); (*(const volatil= e typeof( _Generic(((h->first)), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: ((h->first)))) *)&((h->first))); }); do { } while (0 && (!((hli= st_bl_is_locked(h)) || rcu_read_lock_held()))); ; ((typeof(*(h->first)) *)(= __UNIQUE_ID_rcu139)); }) & ~1UL);=0D }=0D # 46 "./include/linux/rculist_bl.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_del_rcu(struct= hlist_bl_node *n)=0D {=0D __hlist_bl_del(n);=0D n->pprev =3D ((void *) 0x122 + 0);=0D }=0D # 71 "./include/linux/rculist_bl.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_bl_add_head_rcu(s= truct hlist_bl_node *n,=0D struct hlist_bl_head *h)=0D {=0D struct hlist_bl_node *first;=0D =0D =0D first =3D hlist_bl_first(h);=0D =0D n->next =3D first;=0D if (first)=0D first->pprev =3D &n->next;=0D n->pprev =3D &h->first;=0D =0D =0D hlist_bl_set_first_rcu(h, n);=0D }=0D # 10 "./include/linux/dcache.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/lockref.h" 1=0D # 25 "./include/linux/lockref.h"=0D struct lockref {=0D union {=0D =0D =0D =0D struct {=0D spinlock_t lock;=0D int count;=0D };=0D };=0D };=0D =0D extern void lockref_get(struct lockref *);=0D extern int lockref_put_return(struct lockref *);=0D extern int lockref_get_not_zero(struct lockref *);=0D extern int lockref_put_not_zero(struct lockref *);=0D extern int lockref_get_or_lock(struct lockref *);=0D extern int lockref_put_or_lock(struct lockref *);=0D =0D extern void lockref_mark_dead(struct lockref *);=0D extern int lockref_get_not_dead(struct lockref *);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __lockref_is_dead(const= struct lockref *l)=0D {=0D return ((int)l->count < 0);=0D }=0D # 15 "./include/linux/dcache.h" 2=0D # 1 "./include/linux/stringhash.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/hash.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 7 "./include/linux/hash.h" 2=0D # 60 "./include/linux/hash.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __hash_32_generic(u32 va= l)=0D {=0D return val * 0x61C88647;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 hash_32(u32 val, unsigne= d int bits)=0D {=0D =0D return __hash_32_generic(val) >> (32 - bits);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 hash_64_generic(u64 val, unsigned int bits)=0D {=0D =0D =0D return val * 0x61C8864680B583EBull >> (64 - bits);=0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 hash_ptr(const void *ptr= , unsigned int bits)=0D {=0D return hash_64_generic((unsigned long)ptr, bits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 hash32_ptr(const void *p= tr)=0D {=0D unsigned long val =3D (unsigned long)ptr;=0D =0D =0D val ^=3D (val >> 32);=0D =0D return (u32)val;=0D }=0D # 8 "./include/linux/stringhash.h" 2=0D # 42 "./include/linux/stringhash.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D partial_name_hash(unsigned long c, unsigned long prevhash)=0D {=0D return (prevhash + (c << 4) + (c >> 4)) * 11;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int end_name_hash(u= nsigned long hash)=0D {=0D return hash_64_generic(hash, 32);=0D }=0D # 66 "./include/linux/stringhash.h"=0D extern unsigned int __attribute__((__pure__)) full_name_hash(const void *sa= lt, const char *, unsigned int);=0D # 77 "./include/linux/stringhash.h"=0D extern u64 __attribute__((__pure__)) hashlen_string(const void *salt, const= char *name);=0D # 16 "./include/linux/dcache.h" 2=0D =0D =0D struct path;=0D struct vfsmount;=0D # 48 "./include/linux/dcache.h"=0D struct qstr {=0D union {=0D struct {=0D u32 hash; u32 len;=0D };=0D u64 hash_len;=0D };=0D const unsigned char *name;=0D };=0D =0D =0D =0D extern const struct qstr empty_name;=0D extern const struct qstr slash_name;=0D extern const struct qstr dotdot_name;=0D # 81 "./include/linux/dcache.h"=0D struct dentry {=0D =0D unsigned int d_flags;=0D seqcount_spinlock_t d_seq;=0D struct hlist_bl_node d_hash;=0D struct dentry *d_parent;=0D struct qstr d_name;=0D struct inode *d_inode;=0D =0D unsigned char d_iname[32];=0D =0D =0D struct lockref d_lockref;=0D const struct dentry_operations *d_op;=0D struct super_block *d_sb;=0D unsigned long d_time;=0D void *d_fsdata;=0D =0D union {=0D struct list_head d_lru;=0D wait_queue_head_t *d_wait;=0D };=0D struct list_head d_child;=0D struct list_head d_subdirs;=0D =0D =0D =0D union {=0D struct hlist_node d_alias;=0D struct hlist_bl_node d_in_lookup_hash;=0D struct callback_head d_rcu;=0D } d_u;=0D } ;=0D =0D =0D =0D =0D =0D =0D =0D enum dentry_d_lock_class=0D {=0D DENTRY_D_LOCK_NORMAL,=0D DENTRY_D_LOCK_NESTED=0D };=0D =0D struct dentry_operations {=0D int (*d_revalidate)(struct dentry *, unsigned int);=0D int (*d_weak_revalidate)(struct dentry *, unsigned int);=0D int (*d_hash)(const struct dentry *, struct qstr *);=0D int (*d_compare)(const struct dentry *,=0D unsigned int, const char *, const struct qstr *);=0D int (*d_delete)(const struct dentry *);=0D int (*d_init)(struct dentry *);=0D void (*d_release)(struct dentry *);=0D void (*d_prune)(struct dentry *);=0D void (*d_iput)(struct dentry *, struct inode *);=0D char *(*d_dname)(struct dentry *, char *, int);=0D struct vfsmount *(*d_automount)(struct path *);=0D int (*d_manage)(const struct path *, bool);=0D struct dentry *(*d_real)(struct dentry *, const struct inode *);=0D } __attribute__((__aligned__((1 << 6))));=0D # 215 "./include/linux/dcache.h"=0D extern seqlock_t rename_lock;=0D =0D =0D =0D =0D extern void d_instantiate(struct dentry *, struct inode *);=0D extern void d_instantiate_new(struct dentry *, struct inode *);=0D extern struct dentry * d_instantiate_unique(struct dentry *, struct inode *= );=0D extern struct dentry * d_instantiate_anon(struct dentry *, struct inode *);= =0D extern void __d_drop(struct dentry *dentry);=0D extern void d_drop(struct dentry *dentry);=0D extern void d_delete(struct dentry *);=0D extern void d_set_d_op(struct dentry *dentry, const struct dentry_operation= s *op);=0D =0D =0D extern struct dentry * d_alloc(struct dentry *, const struct qstr *);=0D extern struct dentry * d_alloc_anon(struct super_block *);=0D extern struct dentry * d_alloc_parallel(struct dentry *, const struct qstr = *,=0D wait_queue_head_t *);=0D extern struct dentry * d_splice_alias(struct inode *, struct dentry *);=0D extern struct dentry * d_add_ci(struct dentry *, struct inode *, struct qst= r *);=0D extern struct dentry * d_exact_alias(struct dentry *, struct inode *);=0D extern struct dentry *d_find_any_alias(struct inode *inode);=0D extern struct dentry * d_obtain_alias(struct inode *);=0D extern struct dentry * d_obtain_root(struct inode *);=0D extern void shrink_dcache_sb(struct super_block *);=0D extern void shrink_dcache_parent(struct dentry *);=0D extern void shrink_dcache_for_umount(struct super_block *);=0D extern void d_invalidate(struct dentry *);=0D =0D =0D extern struct dentry * d_make_root(struct inode *);=0D =0D =0D extern void d_genocide(struct dentry *);=0D =0D extern void d_tmpfile(struct dentry *, struct inode *);=0D =0D extern struct dentry *d_find_alias(struct inode *);=0D extern void d_prune_aliases(struct inode *);=0D =0D extern struct dentry *d_find_alias_rcu(struct inode *);=0D =0D =0D extern int path_has_submounts(const struct path *);=0D =0D =0D =0D =0D extern void d_rehash(struct dentry *);=0D =0D extern void d_add(struct dentry *, struct inode *);=0D =0D =0D extern void d_move(struct dentry *, struct dentry *);=0D extern void d_exchange(struct dentry *, struct dentry *);=0D extern struct dentry *d_ancestor(struct dentry *, struct dentry *);=0D =0D =0D extern struct dentry *d_lookup(const struct dentry *, const struct qstr *);= =0D extern struct dentry *d_hash_and_lookup(struct dentry *, struct qstr *);=0D extern struct dentry *__d_lookup(const struct dentry *, const struct qstr *= );=0D extern struct dentry *__d_lookup_rcu(const struct dentry *parent,=0D const struct qstr *name, unsigned *seq);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned d_count(const struc= t dentry *dentry)=0D {=0D return dentry->d_lockref.count;=0D }=0D =0D =0D =0D =0D extern __attribute__((__format__(printf, 4, 5)))=0D char *dynamic_dname(struct dentry *, char *, int, const char *, ...);=0D =0D extern char *__d_path(const struct path *, const struct path *, char *, int= );=0D extern char *d_absolute_path(const struct path *, char *, int);=0D extern char *d_path(const struct path *, char *, int);=0D extern char *dentry_path_raw(const struct dentry *, char *, int);=0D extern char *dentry_path(const struct dentry *, char *, int);=0D # 307 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *dget_dlock(st= ruct dentry *dentry)=0D {=0D if (dentry)=0D dentry->d_lockref.count++;=0D return dentry;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *dget(struct d= entry *dentry)=0D {=0D if (dentry)=0D lockref_get(&dentry->d_lockref);=0D return dentry;=0D }=0D =0D extern struct dentry *dget_parent(struct dentry *dentry);=0D # 330 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int d_unhashed(const struct = dentry *dentry)=0D {=0D return hlist_bl_unhashed(&dentry->d_hash);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int d_unlinked(const struct = dentry *dentry)=0D {=0D return d_unhashed(dentry) && !((dentry) =3D=3D (dentry)->d_parent);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cant_mount(const struct = dentry *dentry)=0D {=0D return (dentry->d_flags & 0x00000100);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dont_mount(struct dentr= y *dentry)=0D {=0D spin_lock(&dentry->d_lockref.lock);=0D dentry->d_flags |=3D 0x00000100;=0D spin_unlock(&dentry->d_lockref.lock);=0D }=0D =0D extern void __d_lookup_done(struct dentry *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int d_in_lookup(const struct= dentry *dentry)=0D {=0D return dentry->d_flags & 0x10000000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void d_lookup_done(struct de= ntry *dentry)=0D {=0D if (__builtin_expect(!!(d_in_lookup(dentry)), 0)) {=0D spin_lock(&dentry->d_lockref.lock);=0D __d_lookup_done(dentry);=0D spin_unlock(&dentry->d_lockref.lock);=0D }=0D }=0D =0D extern void dput(struct dentry *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_managed(const struct = dentry *dentry)=0D {=0D return dentry->d_flags & (0x00010000|0x00020000|0x00040000);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_mountpoint(const stru= ct dentry *dentry)=0D {=0D return dentry->d_flags & 0x00010000;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned __d_entry_type(cons= t struct dentry *dentry)=0D {=0D return dentry->d_flags & 0x00700000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_miss(const struct = dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00000000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_whiteout(const str= uct dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00100000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_can_lookup(const stru= ct dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00200000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_autodir(const stru= ct dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00300000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_dir(const struct d= entry *dentry)=0D {=0D return d_can_lookup(dentry) || d_is_autodir(dentry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_symlink(const stru= ct dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00600000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_reg(const struct d= entry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00400000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_special(const stru= ct dentry *dentry)=0D {=0D return __d_entry_type(dentry) =3D=3D 0x00500000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_file(const struct = dentry *dentry)=0D {=0D return d_is_reg(dentry) || d_is_special(dentry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_negative(const str= uct dentry *dentry)=0D {=0D =0D return d_is_miss(dentry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_flags_negative(unsign= ed flags)=0D {=0D return (flags & 0x00700000) =3D=3D 0x00000000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_positive(const str= uct dentry *dentry)=0D {=0D return !d_is_negative(dentry);=0D }=0D # 464 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_really_is_negative(co= nst struct dentry *dentry)=0D {=0D return dentry->d_inode =3D=3D ((void *)0);=0D }=0D # 482 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_really_is_positive(co= nst struct dentry *dentry)=0D {=0D return dentry->d_inode !=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int simple_positive(const st= ruct dentry *dentry)=0D {=0D return d_really_is_positive(dentry) && !d_unhashed(dentry);=0D }=0D =0D extern void d_set_fallthru(struct dentry *dentry);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool d_is_fallthru(const str= uct dentry *dentry)=0D {=0D return dentry->d_flags & 0x01000000;=0D }=0D =0D =0D extern int sysctl_vfs_cache_pressure;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long vfs_pressure_r= atio(unsigned long val)=0D {=0D return ( { typeof(val) quot =3D (val) / (100); typeof(val) rem =3D (val) %= (100); (quot * (sysctl_vfs_cache_pressure)) + ((rem * (sysctl_vfs_cache_pr= essure)) / (100)); } );=0D }=0D # 514 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *d_inode(const = struct dentry *dentry)=0D {=0D return dentry->d_inode;=0D }=0D # 526 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *d_inode_rcu(co= nst struct dentry *dentry)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_141(void) ; if (!((sizeof(dentry->d_inode) =3D=3D sizeof(char) || sizeo= f(dentry->d_inode) =3D=3D sizeof(short) || sizeof(dentry->d_inode) =3D=3D s= izeof(int) || sizeof(dentry->d_inode) =3D=3D sizeof(long)) || sizeof(dentry= ->d_inode) =3D=3D sizeof(long long))) __compiletime_assert_141(); } while (= 0); (*(const volatile typeof( _Generic((dentry->d_inode), char: (char)0, un= signed char: (unsigned char)0, signed char: (signed char)0, unsigned short:= (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned = int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed l= ong: (signed long)0, unsigned long long: (unsigned long long)0, signed long= long: (signed long long)0, default: (dentry->d_inode))) *)&(dentry->d_inod= e)); });=0D }=0D # 541 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *d_backing_inod= e(const struct dentry *upper)=0D {=0D struct inode *inode =3D upper->d_inode;=0D =0D return inode;=0D }=0D # 558 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *d_backing_den= try(struct dentry *upper)=0D {=0D return upper;=0D }=0D # 573 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *d_real(struct= dentry *dentry,=0D const struct inode *inode)=0D {=0D if (__builtin_expect(!!(dentry->d_flags & 0x04000000), 0))=0D return dentry->d_op->d_real(dentry, inode);=0D else=0D return dentry;=0D }=0D # 589 "./include/linux/dcache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *d_real_inode(c= onst struct dentry *dentry)=0D {=0D =0D return d_backing_inode(d_real((struct dentry *) dentry, ((void *)0)));=0D }=0D =0D struct name_snapshot {=0D struct qstr name;=0D unsigned char inline_name[32];=0D };=0D void take_dentry_name_snapshot(struct name_snapshot *, struct dentry *);=0D void release_dentry_name_snapshot(struct name_snapshot *);=0D # 9 "./include/linux/fs.h" 2=0D # 1 "./include/linux/path.h" 1=0D =0D =0D =0D =0D struct dentry;=0D struct vfsmount;=0D =0D struct path {=0D struct vfsmount *mnt;=0D struct dentry *dentry;=0D } ;=0D =0D extern void path_get(const struct path *);=0D extern void path_put(const struct path *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int path_equal(const struct = path *path1, const struct path *path2)=0D {=0D return path1->mnt =3D=3D path2->mnt && path1->dentry =3D=3D path2->dentry;= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void path_put_init(struct pa= th *path)=0D {=0D path_put(path);=0D *path =3D (struct path) { };=0D }=0D # 10 "./include/linux/fs.h" 2=0D =0D =0D =0D # 1 "./include/linux/list_lru.h" 1=0D # 12 "./include/linux/list_lru.h"=0D # 1 "./include/linux/nodemask.h" 1=0D # 98 "./include/linux/nodemask.h"=0D typedef struct { unsigned long bits[((((1 << 0)) + ((sizeof(long) * 8)) - 1= ) / ((sizeof(long) * 8)))]; } nodemask_t;=0D extern nodemask_t _unused_nodemask_arg_;=0D # 109 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __nodemask_pr_n= umnodes(const nodemask_t *m)=0D {=0D return m ? (1 << 0) : 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const unsigned long *__nodem= ask_pr_bits(const nodemask_t *m)=0D {=0D return m ? m->bits : ((void *)0);=0D }=0D # 128 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __node_set(int node, volatile nodemask_t *dstp)=0D {=0D set_bit(node, dstp->bits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __node_clear(int node, = volatile nodemask_t *dstp)=0D {=0D clear_bit(node, dstp->bits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_setall(nodemask= _t *dstp, unsigned int nbits)=0D {=0D bitmap_fill(dstp->bits, nbits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_clear(nodemask_= t *dstp, unsigned int nbits)=0D {=0D bitmap_zero(dstp->bits, nbits);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __node_test_and_set(int = node, nodemask_t *addr)=0D {=0D return test_and_set_bit(node, addr->bits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_and(nodemask_t = *dstp, const nodemask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_or(nodemask_t *= dstp, const nodemask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_xor(nodemask_t = *dstp, const nodemask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_andnot(nodemask= _t *dstp, const nodemask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_complement(node= mask_t *dstp,=0D const nodemask_t *srcp, unsigned int nbits)=0D {=0D bitmap_complement(dstp->bits, srcp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_equal(const node= mask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D return bitmap_equal(src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_intersects(const= nodemask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D return bitmap_intersects(src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_subset(const nod= emask_t *src1p,=0D const nodemask_t *src2p, unsigned int nbits)=0D {=0D return bitmap_subset(src1p->bits, src2p->bits, nbits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_empty(const node= mask_t *srcp, unsigned int nbits)=0D {=0D return bitmap_empty(srcp->bits, nbits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_full(const nodem= ask_t *srcp, unsigned int nbits)=0D {=0D return bitmap_full(srcp->bits, nbits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodes_weight(const nod= emask_t *srcp, unsigned int nbits)=0D {=0D return bitmap_weight(srcp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_shift_right(nod= emask_t *dstp,=0D const nodemask_t *srcp, int n, int nbits)=0D {=0D bitmap_shift_right(dstp->bits, srcp->bits, n, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_shift_left(node= mask_t *dstp,=0D const nodemask_t *srcp, int n, int nbits)=0D {=0D bitmap_shift_left(dstp->bits, srcp->bits, n, nbits);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __first_node(const nodem= ask_t *srcp)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 0))) *)1 =3D= =3D (typeof((int)(find_first_bit(srcp->bits, (1 << 0)))) *)1))) && ((sizeof= (int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)((1 << 0))) * 0l)) : (int *= )8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)(find_first= _bit(srcp->bits, (1 << 0)))) * 0l)) : (int *)8))))), (((int)((1 << 0))) < (= (int)(find_first_bit(srcp->bits, (1 << 0)))) ? ((int)((1 << 0))) : ((int)(f= ind_first_bit(srcp->bits, (1 << 0))))), ({ typeof((int)((1 << 0))) __UNIQUE= _ID___x142 =3D ((int)((1 << 0))); typeof((int)(find_first_bit(srcp->bits, (= 1 << 0)))) __UNIQUE_ID___y143 =3D ((int)(find_first_bit(srcp->bits, (1 << 0= )))); ((__UNIQUE_ID___x142) < (__UNIQUE_ID___y143) ? (__UNIQUE_ID___x142) := (__UNIQUE_ID___y143)); }));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __next_node(int n, const= nodemask_t *srcp)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 0))) *)1 =3D= =3D (typeof((int)(find_next_bit(srcp->bits, (1 << 0), n+1))) *)1))) && ((si= zeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)((1 << 0))) * 0l)) : (i= nt *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)(find_n= ext_bit(srcp->bits, (1 << 0), n+1))) * 0l)) : (int *)8))))), (((int)((1 << = 0))) < ((int)(find_next_bit(srcp->bits, (1 << 0), n+1))) ? ((int)((1 << 0))= ) : ((int)(find_next_bit(srcp->bits, (1 << 0), n+1)))), ({ typeof((int)((1 = << 0))) __UNIQUE_ID___x144 =3D ((int)((1 << 0))); typeof((int)(find_next_bi= t(srcp->bits, (1 << 0), n+1))) __UNIQUE_ID___y145 =3D ((int)(find_next_bit(= srcp->bits, (1 << 0), n+1))); ((__UNIQUE_ID___x144) < (__UNIQUE_ID___y145) = ? (__UNIQUE_ID___x144) : (__UNIQUE_ID___y145)); }));=0D }=0D =0D =0D =0D =0D =0D =0D int __next_node_in(int node, const nodemask_t *srcp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_nodemask_of_node(n= odemask_t *mask, int node)=0D {=0D __nodes_clear(&(*mask), (1 << 0));=0D __node_set((node), &(*mask));=0D }=0D # 299 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __first_unset_node(const= nodemask_t *maskp)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)((1 << 0))) *)1 =3D= =3D (typeof((int)(find_first_zero_bit(maskp->bits, (1 << 0)))) *)1))) && ((= sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)((1 << 0))) * 0l)) : = (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)(find= _first_zero_bit(maskp->bits, (1 << 0)))) * 0l)) : (int *)8))))), (((int)((1= << 0))) < ((int)(find_first_zero_bit(maskp->bits, (1 << 0)))) ? ((int)((1 = << 0))) : ((int)(find_first_zero_bit(maskp->bits, (1 << 0))))), ({ typeof((= int)((1 << 0))) __UNIQUE_ID___x146 =3D ((int)((1 << 0))); typeof((int)(find= _first_zero_bit(maskp->bits, (1 << 0)))) __UNIQUE_ID___y147 =3D ((int)(find= _first_zero_bit(maskp->bits, (1 << 0)))); ((__UNIQUE_ID___x146) < (__UNIQUE= _ID___y147) ? (__UNIQUE_ID___x146) : (__UNIQUE_ID___y147)); }));=0D =0D }=0D # 333 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodemask_parse_user(co= nst char *buf, int len,=0D nodemask_t *dstp, int nbits)=0D {=0D return bitmap_parse_user(buf, len, dstp->bits, nbits);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nodelist_parse(const c= har *buf, nodemask_t *dstp, int nbits)=0D {=0D return bitmap_parselist(buf, dstp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __node_remap(int oldbit,= =0D const nodemask_t *oldp, const nodemask_t *newp, int nbits)=0D {=0D return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_remap(nodemask_= t *dstp, const nodemask_t *srcp,=0D const nodemask_t *oldp, const nodemask_t *newp, int nbits)=0D {=0D bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_onto(nodemask_t= *dstp, const nodemask_t *origp,=0D const nodemask_t *relmapp, int nbits)=0D {=0D bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nodes_fold(nodemask_t= *dstp, const nodemask_t *origp,=0D int sz, int nbits)=0D {=0D bitmap_fold(dstp->bits, origp->bits, sz, nbits);=0D }=0D # 391 "./include/linux/nodemask.h"=0D enum node_states {=0D N_POSSIBLE,=0D N_ONLINE,=0D N_NORMAL_MEMORY,=0D =0D =0D =0D N_HIGH_MEMORY =3D N_NORMAL_MEMORY,=0D =0D N_MEMORY,=0D N_CPU,=0D N_GENERIC_INITIATOR,=0D NR_NODE_STATES=0D };=0D =0D =0D =0D =0D =0D =0D extern nodemask_t node_states[NR_NODE_STATES];=0D # 465 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int node_state(int node, enu= m node_states state)=0D {=0D return node =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_set_state(int node= , enum node_states state)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_clear_state(int no= de, enum node_states state)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int num_node_state(enum node= _states state)=0D {=0D return 1;=0D }=0D # 500 "./include/linux/nodemask.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int node_random(const nodema= sk_t *mask)=0D {=0D return 0;=0D }=0D # 532 "./include/linux/nodemask.h"=0D struct nodemask_scratch {=0D nodemask_t mask1;=0D nodemask_t mask2;=0D };=0D # 13 "./include/linux/list_lru.h" 2=0D # 1 "./include/linux/shrinker.h" 1=0D # 12 "./include/linux/shrinker.h"=0D struct shrink_control {=0D gfp_t gfp_mask;=0D =0D =0D int nid;=0D =0D =0D =0D =0D =0D =0D unsigned long nr_to_scan;=0D =0D =0D =0D =0D =0D =0D unsigned long nr_scanned;=0D =0D =0D struct mem_cgroup *memcg;=0D };=0D # 60 "./include/linux/shrinker.h"=0D struct shrinker {=0D unsigned long (*count_objects)(struct shrinker *,=0D struct shrink_control *sc);=0D unsigned long (*scan_objects)(struct shrinker *,=0D struct shrink_control *sc);=0D =0D long batch;=0D int seeks;=0D unsigned flags;=0D =0D =0D struct list_head list;=0D =0D =0D =0D =0D =0D atomic_long_t *nr_deferred;=0D };=0D # 91 "./include/linux/shrinker.h"=0D extern int prealloc_shrinker(struct shrinker *shrinker);=0D extern void register_shrinker_prepared(struct shrinker *shrinker);=0D extern int register_shrinker(struct shrinker *shrinker);=0D extern void unregister_shrinker(struct shrinker *shrinker);=0D extern void free_prealloced_shrinker(struct shrinker *shrinker);=0D extern void synchronize_shrinkers(void);=0D # 14 "./include/linux/list_lru.h" 2=0D # 1 "./include/linux/xarray.h" 1=0D # 15 "./include/linux/xarray.h"=0D # 1 "./include/linux/gfp.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/mmzone.h" 1=0D # 18 "./include/linux/mmzone.h"=0D # 1 "./include/linux/pageblock-flags.h" 1=0D # 18 "./include/linux/pageblock-flags.h"=0D enum pageblock_bits {=0D PB_migrate,=0D PB_migrate_end =3D PB_migrate + 3 - 1,=0D =0D PB_migrate_skip,=0D =0D =0D =0D =0D =0D NR_PAGEBLOCK_BITS=0D };=0D # 58 "./include/linux/pageblock-flags.h"=0D struct page;=0D =0D unsigned long get_pfnblock_flags_mask(const struct page *page,=0D unsigned long pfn,=0D unsigned long mask);=0D =0D void set_pfnblock_flags_mask(struct page *page,=0D unsigned long flags,=0D unsigned long pfn,=0D unsigned long mask);=0D # 19 "./include/linux/mmzone.h" 2=0D =0D =0D =0D # 1 "./include/linux/page-flags.h" 1=0D # 100 "./include/linux/page-flags.h"=0D enum pageflags {=0D PG_locked,=0D PG_referenced,=0D PG_uptodate,=0D PG_dirty,=0D PG_lru,=0D PG_active,=0D PG_workingset,=0D PG_waiters,=0D PG_error,=0D PG_slab,=0D PG_owner_priv_1,=0D PG_arch_1,=0D PG_reserved,=0D PG_private,=0D PG_private_2,=0D PG_writeback,=0D PG_head,=0D PG_mappedtodisk,=0D PG_reclaim,=0D PG_swapbacked,=0D PG_unevictable,=0D =0D PG_mlocked,=0D # 132 "./include/linux/page-flags.h"=0D PG_young,=0D PG_idle,=0D =0D =0D PG_arch_2,=0D =0D =0D =0D =0D __NR_PAGEFLAGS,=0D =0D PG_readahead =3D PG_reclaim,=0D =0D =0D PG_checked =3D PG_owner_priv_1,=0D =0D =0D PG_swapcache =3D PG_owner_priv_1,=0D =0D =0D =0D =0D =0D PG_fscache =3D PG_private_2,=0D =0D =0D =0D PG_pinned =3D PG_owner_priv_1,=0D =0D PG_savepinned =3D PG_dirty,=0D =0D PG_foreign =3D PG_owner_priv_1,=0D =0D PG_xen_remapped =3D PG_owner_priv_1,=0D =0D =0D PG_slob_free =3D PG_private,=0D =0D =0D PG_double_map =3D PG_workingset,=0D # 183 "./include/linux/page-flags.h"=0D PG_isolated =3D PG_reclaim,=0D =0D =0D PG_reported =3D PG_uptodate,=0D };=0D # 245 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct page *page_fixe= d_fake_head(const struct page *page)=0D {=0D return page;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hugetlb_free_vmemmap_en= abled(void)=0D {=0D return false;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int page_is_fake_head(struct page *page)=0D {=0D return page_fixed_fake_head(page) !=3D page;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _compound_head= (const struct page *page)=0D {=0D unsigned long head =3D ({ do { __attribute__((__noreturn__)) extern void _= _compiletime_assert_148(void) ; if (!((sizeof(page->compound_head) =3D=3D s= izeof(char) || sizeof(page->compound_head) =3D=3D sizeof(short) || sizeof(p= age->compound_head) =3D=3D sizeof(int) || sizeof(page->compound_head) =3D= =3D sizeof(long)) || sizeof(page->compound_head) =3D=3D sizeof(long long)))= __compiletime_assert_148(); } while (0); (*(const volatile typeof( _Generi= c((page->compound_head), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: (page->compound_head))) *)&(page->compound_head)); });=0D =0D if (__builtin_expect(!!(head & 1), 0))=0D return head - 1;=0D return (unsigned long)page_fixed_fake_head(page);=0D }=0D # 300 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageTail(struct page *page)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_149(void) ; if (!((sizeof(page->compound_head) =3D=3D sizeof(char) || s= izeof(page->compound_head) =3D=3D sizeof(short) || sizeof(page->compound_he= ad) =3D=3D sizeof(int) || sizeof(page->compound_head) =3D=3D sizeof(long)) = || sizeof(page->compound_head) =3D=3D sizeof(long long))) __compiletime_ass= ert_149(); } while (0); (*(const volatile typeof( _Generic((page->compound_= head), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed= char)0, unsigned short: (unsigned short)0, signed short: (signed short)0, = unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (u= nsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned = long long)0, signed long long: (signed long long)0, default: (page->compoun= d_head))) *)&(page->compound_head)); }) & 1 || page_is_fake_head(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageCompound(struct page *page)=0D {=0D return arch_test_bit(PG_head, &page->flags) ||=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_150(void) ; if (!((sizeof(page->compound_head) =3D=3D sizeof(char) || s= izeof(page->compound_head) =3D=3D sizeof(short) || sizeof(page->compound_he= ad) =3D=3D sizeof(int) || sizeof(page->compound_head) =3D=3D sizeof(long)) = || sizeof(page->compound_head) =3D=3D sizeof(long long))) __compiletime_ass= ert_150(); } while (0); (*(const volatile typeof( _Generic((page->compound_= head), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed= char)0, unsigned short: (unsigned short)0, signed short: (signed short)0, = unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (u= nsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned = long long)0, signed long long: (signed long long)0, default: (page->compoun= d_head))) *)&(page->compound_head)); }) & 1;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int PagePoisoned(const struc= t page *page)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_151(void) ; if (!((sizeof(page->flags) =3D=3D sizeof(char) || sizeof(pa= ge->flags) =3D=3D sizeof(short) || sizeof(page->flags) =3D=3D sizeof(int) |= | sizeof(page->flags) =3D=3D sizeof(long)) || sizeof(page->flags) =3D=3D si= zeof(long long))) __compiletime_assert_151(); } while (0); (*(const volatil= e typeof( _Generic((page->flags), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: (page->flags))) *)&(page->flags)); }) =3D=3D -1l;=0D }=0D =0D =0D void page_init_poison(struct page *page, size_t size);=0D =0D =0D =0D =0D =0D =0D static unsigned long *folio_flags(struct folio *folio, unsigned n)=0D {=0D struct page *page =3D &folio->page;=0D =0D do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BU= G_ON_PAGE(" "PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (329), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0);=0D do { if (__builtin_expect(!!(n > 0 && !arch_test_bit(PG_head, &page->flags= )), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "n > 0 && !arch_test_bit(PG_hea= d, &page->flags)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n"= ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (330), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0);=0D return &page[n].flags;=0D }=0D # 483 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_locked(struct folio *folio) { return arch_test_bit(P= G_locked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) int PageLocked(struct page *page= ) { return arch_test_bit(PG_locked, &({ do { if (__builtin_expect(!!(0 && P= ageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page= )"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection = __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2= b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popse= ction" : : "i" ("include/linux/page-flags.h"), "i" (483), "i" (0), "i" (siz= eof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whi= le (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoi= soned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page= ))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_co= mpound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak= \n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t= " ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b= + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (483),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0); ((typeof(page))_compo= und_head(page)); }); })->flags); } static inline __attribute__((__gnu_inlin= e__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0= , 0))) __attribute__((__always_inline__)) void __folio_set_locked(struct fo= lio *folio) { arch___set_bit(PG_locked, folio_flags(folio, 0)); } static in= line __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribut= e__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) vo= id __SetPageLocked(struct page *page) { arch___set_bit(PG_locked, &({ do { = if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG= _ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (483), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { i= f (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))),= 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "P= agePoisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (483), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); ((typeof(page))_compound_head(page)); }); })->flags); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) voi= d __folio_clear_locked(struct folio *folio) { arch___clear_bit(PG_locked, f= olio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __at= tribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __a= ttribute__((__always_inline__)) void __ClearPageLocked(struct page *page) {= arch___clear_bit(PG_locked, &({ do { if (__builtin_expect(!!(1 && PageTail= (page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")");= do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/page-flags.h"), "i" (483), "i" (0), "i" (sizeof(str= uct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0);= } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned((= (typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_comp= ound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_= head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (483), "i" (0= ), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachab= le(); } while (0); } while (0); } } while (0); ((typeof(page))_compound_hea= d(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_waiters(struct folio *folio) { return arch_test_bit(= PG_waiters, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PageWaiters(struct page *p= age) { return arch_test_bit(PG_waiters, &({ do { if (__builtin_expect(!!(Pa= geTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")")= ; do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/page-flags.h"), "i" (484), "i" (0), "i" (sizeof(st= ruct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0)= ; } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(= page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); d= o { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tab= le,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t"= ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/page-flags.h"), "i" (484), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0); } } while (0); page; }); })->flags); } static inline __attribut= e__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_= function_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_wa= iters(struct folio *folio) { set_bit(PG_waiters, folio_flags(folio, 0)); } = static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void SetPageWaiters(struct page *page) { set_bit(PG_waiters, &({ do = { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON= _PAGE(" "PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (4= 84), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__bui= ltin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (484)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); page; }); })->flags)= ; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__= )) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_= inline__)) void folio_clear_waiters(struct folio *folio) { clear_bit(PG_wai= ters, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void ClearPageWaiters(struct page *p= age) { clear_bit(PG_waiters, &({ do { if (__builtin_expect(!!(PageTail(page= )), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PageTail(page)"")"); do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/page-flags.h"), "i" (484), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/page-flags.h"), "i" (484), "i" (0), "i" (sizeof(struct bug_entry= ))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0);= } } while (0); page; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_error(struct folio *folio) { return arch_test_bit(PG= _error, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) int PageError(struct page *page) {= return arch_test_bit(PG_error, &({ do { if (__builtin_expect(!!(0 && PageT= ail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")= "); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bu= g_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "= \n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsectio= n" : : "i" ("include/linux/page-flags.h"), "i" (485), "i" (0), "i" (sizeof(= struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (= 0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisone= d(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_c= ompound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compou= nd_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" = ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".= word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %= 3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (485), "i"= (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreac= hable(); } while (0); } while (0); } } while (0); ((typeof(page))_compound_= head(page)); }); })->flags); } static inline __attribute__((__gnu_inline__)= ) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)= )) __attribute__((__always_inline__)) void folio_set_error(struct folio *fo= lio) { set_bit(PG_error, folio_flags(folio, 0)); } static inline __attribut= e__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_= function_entry(0, 0))) __attribute__((__always_inline__)) void SetPageError= (struct page *page) { set_bit(PG_error, &({ do { if (__builtin_expect(!!(1 = && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(= page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsect= ion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0= - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".p= opsection" : : "i" ("include/linux/page-flags.h"), "i" (485), "i" (0), "i" = (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); }= while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(Pag= ePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(= page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page)= )_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (4= 85), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_c= ompound_head(page)); }); })->flags); } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) __attribute__((__always_inline__)) void folio_clear_error(struct= folio *folio) { clear_bit(PG_error, folio_flags(folio, 0)); } static inlin= e __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__= ((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void = ClearPageError(struct page *page) { clear_bit(PG_error, &({ do { if (__buil= tin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (485= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dum= p_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisone= d(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile_= _ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wo= rd" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" "= %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-f= lags.h"), "i" (485), "i" (0), "i" (sizeof(struct bug_entry))); } while (0);= do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); (= (typeof(page))_compound_head(page)); }); })->flags); } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) __attribute__((__always_inline__)) bool folio_te= st_clear_error(struct folio *folio) { return test_and_clear_bit(PG_error, f= olio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __at= tribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __a= ttribute__((__always_inline__)) int TestClearPageError(struct page *page) {= return test_and_clear_bit(PG_error, &({ do { if (__builtin_expect(!!(1 && = PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(pag= e)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection= __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - = 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pops= ection" : : "i" ("include/linux/page-flags.h"), "i" (485), "i" (0), "i" (si= zeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } wh= ile (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePo= isoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(pag= e))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_c= ompound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (485)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_comp= ound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_referenced(struct folio *folio) { return arch_test_b= it(PG_referenced, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int PageReferenced(struc= t page *page) { return arch_test_bit(PG_referenced, &({ do { if (__builtin_= expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_p= age(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned((= (typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ (= "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word"= " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2= " "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flag= s.h"), "i" (486), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do= { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((ty= peof(page))_compound_head(page)); })->flags); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_refer= enced(struct folio *folio) { set_bit(PG_referenced, folio_flags(folio, 0));= } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)= ) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_i= nline__)) void SetPageReferenced(struct page *page) { set_bit(PG_referenced= , &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_he= ad(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_= ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { do= { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"a= w\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".hal= f" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" = ("include/linux/page-flags.h"), "i" (486), "i" (0), "i" (sizeof(struct bug_= entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while= (0); } } while (0); ((typeof(page))_compound_head(page)); })->flags); } st= atic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __a= ttribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline= __)) void folio_clear_referenced(struct folio *folio) { clear_bit(PG_refere= nced, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void ClearPageReferenced(struct page= *page) { clear_bit(PG_referenced, &({ do { if (__builtin_expect(!!(PagePoi= soned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page= ))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_co= mpound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak= \n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t= " ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b= + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (486),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0); ((typeof(page))_compo= und_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_referenced(struct folio *folio) { return test= _and_clear_bit(PG_referenced, folio_flags(folio, 0)); } static inline __att= ribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patch= able_function_entry(0, 0))) __attribute__((__always_inline__)) int TestClea= rPageReferenced(struct page *page) { return test_and_clear_bit(PG_reference= d, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_h= ead(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG= _ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { d= o { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"= aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".ha= lf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i"= ("include/linux/page-flags.h"), "i" (487), "i" (0), "i" (sizeof(struct bug= _entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whil= e (0); } } while (0); ((typeof(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_set_referenced(struct folio *folio) { arch___set_bit(P= G_referenced, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) void __SetPageReferenced(str= uct page *page) { arch___set_bit(PG_referenced, &({ do { if (__builtin_expe= ct(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(= ((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typ= eof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:= \n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1= b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\= n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"= ), "i" (488), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ;= __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof= (page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_dirty(struct folio *folio) { return arch_test_bit(PG= _dirty, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) int PageDirty(struct page *page) {= return arch_test_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoison= ed(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_= compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compo= und_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n"= ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (489), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); ((typeof(page))_compou= nd_head(page)); })->flags); } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) void folio_set_dirty(struct folio *fol= io) { set_bit(PG_dirty, folio_flags(folio, 0)); } static inline __attribute= __((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_f= unction_entry(0, 0))) __attribute__((__always_inline__)) void SetPageDirty(= struct page *page) { set_bit(PG_dirty, &({ do { if (__builtin_expect(!!(Pag= ePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(= page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page)= )_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (4= 89), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_c= ompound_head(page)); })->flags); } static inline __attribute__((__gnu_inlin= e__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0= , 0))) __attribute__((__always_inline__)) void folio_clear_dirty(struct fol= io *folio) { clear_bit(PG_dirty, folio_flags(folio, 0)); } static inline __= attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pa= tchable_function_entry(0, 0))) __attribute__((__always_inline__)) void Clea= rPageDirty(struct page *page) { clear_bit(PG_dirty, &({ do { if (__builtin_= expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_p= age(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned((= (typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ (= "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word"= " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2= " "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flag= s.h"), "i" (489), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do= { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((ty= peof(page))_compound_head(page)); })->flags); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) bool folio_test_set_= dirty(struct folio *folio) { return test_and_set_bit(PG_dirty, folio_flags(= folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((= __unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__(= (__always_inline__)) int TestSetPageDirty(struct page *page) { return test_= and_set_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeo= f(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compound_h= ead(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(p= age)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsec= tion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %= 0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".= popsection" : : "i" ("include/linux/page-flags.h"), "i" (489), "i" (0), "i"= (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); = } while (0); } while (0); } } while (0); ((typeof(page))_compound_head(page= )); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) bool folio_test_clear_dirty(struct folio *folio) {= return test_and_clear_bit(PG_dirty, folio_flags(folio, 0)); } static inlin= e __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__= ((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) int T= estClearPageDirty(struct page *page) { return test_and_clear_bit(PG_dirty, = &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head= (page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON= _PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/page-flags.h"), "i" (489), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } } while (0); ((typeof(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_clear_dirty(struct folio *folio) { arch___clear_bit(PG= _dirty, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) void __ClearPageDirty(struct page = *page) { arch___clear_bit(PG_dirty, &({ do { if (__builtin_expect(!!(PagePo= isoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(pag= e))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_c= ompound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (490)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_comp= ound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_lru(struct folio *folio) { return arch_test_bit(PG_l= ru, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) int PageLRU(struct page *page) { retur= n arch_test_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(((typ= eof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compound= _head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head= (page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (491), "i" (0), "= i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable()= ; } while (0); } while (0); } } while (0); ((typeof(page))_compound_head(pa= ge)); })->flags); } static inline __attribute__((__gnu_inline__)) __attribu= te__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attrib= ute__((__always_inline__)) void folio_set_lru(struct folio *folio) { set_bi= t(PG_lru, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) void SetPageLRU(struct page *pag= e) { set_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof= (page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compound_he= ad(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(pa= ge)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsect= ion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0= - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".p= opsection" : : "i" ("include/linux/page-flags.h"), "i" (491), "i" (0), "i" = (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); }= while (0); } while (0); } } while (0); ((typeof(page))_compound_head(page)= ); })->flags); } static inline __attribute__((__gnu_inline__)) __attribute_= _((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute= __((__always_inline__)) void folio_clear_lru(struct folio *folio) { clear_b= it(PG_lru, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inl= ine__)) __attribute__((__unused__)) __attribute__((patchable_function_entry= (0, 0))) __attribute__((__always_inline__)) void ClearPageLRU(struct page *= page) { clear_bit(PG_lru, &({ do { if (__builtin_expect(!!(PagePoisoned(((t= ypeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compou= nd_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_he= ad(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (491), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); ((typeof(page))_compound_head(= page)); })->flags); } static inline __attribute__((__gnu_inline__)) __attri= bute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attr= ibute__((__always_inline__)) void __folio_clear_lru(struct folio *folio) { = arch___clear_bit(PG_lru, folio_flags(folio, 0)); } static inline __attribut= e__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_= function_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageL= RU(struct page *page) { arch___clear_bit(PG_lru, &({ do { if (__builtin_exp= ect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page= (((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((ty= peof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1= :\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " = 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "= \n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h= "), "i" (491), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { = ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeo= f(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_lru(struct folio *folio) { return test_and_cl= ear_bit(PG_lru, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int TestClearPageLRU(struc= t page *page) { return test_and_clear_bit(PG_lru, &({ do { if (__builtin_ex= pect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_pag= e(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((t= ypeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.= h"), "i" (492), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do {= ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((type= of(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_active(struct folio *folio) { return arch_test_bit(P= G_active, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) int PageActive(struct page *page= ) { return arch_test_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePo= isoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(pag= e))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_c= ompound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (493)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_comp= ound_head(page)); })->flags); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void folio_set_active(struct folio *= folio) { set_bit(PG_active, folio_flags(folio, 0)); } static inline __attri= bute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchab= le_function_entry(0, 0))) __attribute__((__always_inline__)) void SetPageAc= tive(struct page *page) { set_bit(PG_active, &({ do { if (__builtin_expect(= !!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((t= ypeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof= (page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\= t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b -= 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t= " ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), = "i" (493), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __= builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(pa= ge))_compound_head(page)); })->flags); } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) __attribute__((__always_inline__)) void folio_clear_active(str= uct folio *folio) { clear_bit(PG_active, folio_flags(folio, 0)); } static i= nline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribu= te__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) v= oid ClearPageActive(struct page *page) { clear_bit(PG_active, &({ do { if (= __builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)= ) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "Page= Poisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __vo= latile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\= t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".= half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux= /page-flags.h"), "i" (493), "i" (0), "i" (sizeof(struct bug_entry))); } whi= le (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while= (0); ((typeof(page))_compound_head(page)); })->flags); } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) void __fol= io_clear_active(struct folio *folio) { arch___clear_bit(PG_active, folio_fl= ags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void __ClearPageActive(struct page *page) { arch__= _clear_bit(PG_active, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeo= f(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compound_h= ead(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(p= age)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsec= tion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %= 0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".= popsection" : : "i" ("include/linux/page-flags.h"), "i" (493), "i" (0), "i"= (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); = } while (0); } while (0); } } while (0); ((typeof(page))_compound_head(page= )); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_active(struct folio *folio) { return test_and= _clear_bit(PG_active, folio_flags(folio, 0)); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) int TestClearPageAct= ive(struct page *page) { return test_and_clear_bit(PG_active, &({ do { if (= __builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)= ) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "Page= Poisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __vo= latile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\= t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".= half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux= /page-flags.h"), "i" (494), "i" (0), "i" (sizeof(struct bug_entry))); } whi= le (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while= (0); ((typeof(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_workingset(struct folio *folio) { return arch_test_b= it(PG_workingset, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int PageWorkingset(struc= t page *page) { return arch_test_bit(PG_workingset, &({ do { if (__builtin_= expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_p= age(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned((= (typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ (= "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word"= " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2= " "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flag= s.h"), "i" (495), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do= { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((ty= peof(page))_compound_head(page)); })->flags); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_worki= ngset(struct folio *folio) { set_bit(PG_workingset, folio_flags(folio, 0));= } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)= ) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_i= nline__)) void SetPageWorkingset(struct page *page) { set_bit(PG_workingset= , &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_he= ad(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_= ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { do= { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"a= w\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".hal= f" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" = ("include/linux/page-flags.h"), "i" (495), "i" (0), "i" (sizeof(struct bug_= entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while= (0); } } while (0); ((typeof(page))_compound_head(page)); })->flags); } st= atic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __a= ttribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline= __)) void folio_clear_workingset(struct folio *folio) { clear_bit(PG_workin= gset, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void ClearPageWorkingset(struct page= *page) { clear_bit(PG_workingset, &({ do { if (__builtin_expect(!!(PagePoi= soned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page= ))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_co= mpound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak= \n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t= " ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b= + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (495),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0); ((typeof(page))_compo= und_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_workingset(struct folio *folio) { return test= _and_clear_bit(PG_workingset, folio_flags(folio, 0)); } static inline __att= ribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patch= able_function_entry(0, 0))) __attribute__((__always_inline__)) int TestClea= rPageWorkingset(struct page *page) { return test_and_clear_bit(PG_workingse= t, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_h= ead(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG= _ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { d= o { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"= aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".ha= lf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i"= ("include/linux/page-flags.h"), "i" (496), "i" (0), "i" (sizeof(struct bug= _entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whil= e (0); } } while (0); ((typeof(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_slab(struct folio *folio) { return arch_test_bit(PG_= slab, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) int PageSlab(struct page *page) { re= turn arch_test_bit(PG_slab, &({ do { if (__builtin_expect(!!(0 && PageTail(= page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(page)"")"); = do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_ta= ble,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t= " ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" := : "i" ("include/linux/page-flags.h"), "i" (497), "i" (0), "i" (sizeof(stru= ct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); = } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((= typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compo= und_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_h= ead(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pu= shsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word= " " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\= t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (497), "i" (0)= , "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachabl= e(); } while (0); } while (0); } } while (0); ((typeof(page))_compound_head= (page)); }); })->flags); } static inline __attribute__((__gnu_inline__)) __= attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) _= _attribute__((__always_inline__)) void __folio_set_slab(struct folio *folio= ) { arch___set_bit(PG_slab, folio_flags(folio, 0)); } static inline __attri= bute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchab= le_function_entry(0, 0))) __attribute__((__always_inline__)) void __SetPage= Slab(struct page *page) { arch___set_bit(PG_slab, &({ do { if (__builtin_ex= pect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 &&= PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" = ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".= word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %= 3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (497), "i"= (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreac= hable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_exp= ect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page= (((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((ty= peof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1= :\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " = 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "= \n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h= "), "i" (497), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { = ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeo= f(page))_compound_head(page)); }); })->flags); } static inline __attribute_= _((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fu= nction_entry(0, 0))) __attribute__((__always_inline__)) void __folio_clear_= slab(struct folio *folio) { arch___clear_bit(PG_slab, folio_flags(folio, 0)= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) void __ClearPageSlab(struct page *page) { arch___clear_bit(PG_s= lab, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page= (page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page-flags.h"), "i" (497), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while = (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_= head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BU= G_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { = do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\= "aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".h= alf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i= " ("include/linux/page-flags.h"), "i" (497), "i" (0), "i" (sizeof(struct bu= g_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whi= le (0); } } while (0); ((typeof(page))_compound_head(page)); }); })->flags)= ; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_slob_free(struct folio *folio) { return arch_test_bi= t(PG_slob_free, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int PageSlobFree(struct pa= ge *page) { return arch_test_bit(PG_slob_free, &({ do { if (__builtin_expec= t(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && Pa= geTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (498), "i" (0= ), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachab= le(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect= (!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((= typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeo= f(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n= \t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b = - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\= t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"),= "i" (498), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; _= _builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(p= age))_compound_head(page)); }); })->flags); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) void __folio_set_slob_= free(struct folio *folio) { arch___set_bit(PG_slob_free, folio_flags(folio,= 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) void __SetPageSlobFree(struct page *page) { arch___set_bit(P= G_slob_free, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { d= ump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/page-flags.h"), "i" (498), "i" (0), "i" (sizeof(struct bug_entry)))= ; } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } = } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_c= ompound_head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page))= , "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"= ); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/page-flags.h"), "i" (498), "i" (0), "i" (sizeof(s= truct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0= ); } while (0); } } while (0); ((typeof(page))_compound_head(page)); }); })= ->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((__= unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((_= _always_inline__)) void __folio_clear_slob_free(struct folio *folio) { arch= ___clear_bit(PG_slob_free, folio_flags(folio, 0)); } static inline __attrib= ute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchabl= e_function_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPag= eSlobFree(struct page *page) { arch___clear_bit(PG_slob_free, &({ do { if (= __builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_= PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (498), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (_= _builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0))= { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PageP= oisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page-flags.h"), "i" (498), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while = (0); ((typeof(page))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_checked(struct folio *folio) { return arch_test_bit(= PG_checked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PageChecked(struct page *p= age) { return arch_test_bit(PG_checked, &({ do { if (__builtin_expect(!!(0 = && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageC= ompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".= pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wo= rd" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\= n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (499), "i" (= 0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreacha= ble(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expec= t(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePois= oned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (499), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); page; }); })->flags); } static= inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attri= bute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__))= void folio_set_checked(struct folio *folio) { set_bit(PG_checked, folio_fl= ags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void SetPageChecked(struct page *page) { set_bit(P= G_checked, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) {= dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/page-flags.h"), "i" (499), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/page-flags.h"), "i" (499), "i" (0), "i" (sizeof(struct bug_entry= ))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0);= } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) void folio_clear_checked(str= uct folio *folio) { clear_bit(PG_checked, folio_flags(folio, 0)); } static = inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attrib= ute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) = void ClearPageChecked(struct page *page) { clear_bit(PG_checked, &({ do { i= f (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_= BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-fl= ags.h"), "i" (499), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); = do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ({= do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "V= M_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( = "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" = " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2"= "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags= =2Eh"), "i" (499), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); d= o { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); pag= e; }); })->flags); }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_pinned(struct folio *folio) { return arch_test_bit(P= G_pinned, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) int PagePinned(struct page *page= ) { return arch_test_bit(PG_pinned, &({ do { if (__builtin_expect(!!(0 && P= ageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageCompo= und(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".push= section __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" = " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t"= ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (502), "i" (0), = "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(= ); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!= (PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned= (page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsec= tion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %= 0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".= popsection" : : "i" ("include/linux/page-flags.h"), "i" (502), "i" (0), "i"= (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); = } while (0); } while (0); } } while (0); page; }); })->flags); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) voi= d folio_set_pinned(struct folio *folio) { set_bit(PG_pinned, folio_flags(fo= lio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__= unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((_= _always_inline__)) void SetPagePinned(struct page *page) { set_bit(PG_pinne= d, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_pa= ge(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/page-flags.h"), "i" (502), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } = while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_= page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __= volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\= n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" = ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/lin= ux/page-flags.h"), "i" (502), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } whi= le (0); page; }); })->flags); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void folio_clear_pinned(struct folio= *folio) { clear_bit(PG_pinned, folio_flags(folio, 0)); } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) void Clear= PagePinned(struct page *page) { clear_bit(PG_pinned, &({ do { if (__builtin= _expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(= " "1 && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" = "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b= " "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" "= =2Eorg 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "= i" (502), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __b= uiltin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (= __builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_P= AGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "= ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b"= "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".= org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" = (502), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __buil= tin_unreachable(); } while (0); } while (0); } } while (0); page; }); })->f= lags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_set_pinned(struct folio *folio) { return test_and_s= et_bit(PG_pinned, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int TestSetPagePinned(st= ruct page *page) { return test_and_set_bit(PG_pinned, &({ do { if (__builti= n_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE= (" "1 && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (503), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (_= _builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PA= GE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "e= break\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" = "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".o= rg 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (= 503), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __built= in_unreachable(); } while (0); } while (0); } } while (0); page; }); })->fl= ags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) bool folio_test_clear_pinned(struct folio *folio) { return t= est_and_clear_bit(PG_pinned, folio_flags(folio, 0)); } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) __attribute__((__always_inline__)) int TestClear= PagePinned(struct page *page) { return test_and_clear_bit(PG_pinned, &({ do= { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, = "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __asm__ __volati= le__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" "= =2Eword" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".ha= lf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/p= age-flags.h"), "i" (503), "i" (0), "i" (sizeof(struct bug_entry))); } while= (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (= 0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(pa= ge, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatil= e__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".= word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half"= " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page= -flags.h"), "i" (503), "i" (0), "i" (sizeof(struct bug_entry))); } while (0= ); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0);= page; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_savepinned(struct folio *folio) { return arch_test_b= it(PG_savepinned, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int PageSavePinned(struc= t page *page) { return arch_test_bit(PG_savepinned, &({ do { if (__builtin_= expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "0 && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "= ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b"= "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".= org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" = (504), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __buil= tin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__b= uiltin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE= (" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebr= eak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\= n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org= 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (50= 4), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin= _unreachable(); } while (0); } while (0); } } while (0); page; }); })->flag= s); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alway= s_inline__)) void folio_set_savepinned(struct folio *folio) { set_bit(PG_sa= vepinned, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) void SetPageSavePinned(struct pa= ge *page) { set_bit(PG_savepinned, &({ do { if (__builtin_expect(!!(1 && Pa= geCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompou= nd(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (504), "i" (0), "= i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable()= ; } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(= PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(= page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsect= ion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0= - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".p= opsection" : : "i" ("include/linux/page-flags.h"), "i" (504), "i" (0), "i" = (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); }= while (0); } while (0); } } while (0); page; }); })->flags); } static inli= ne __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute_= _((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void= folio_clear_savepinned(struct folio *folio) { clear_bit(PG_savepinned, fol= io_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attr= ibute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __att= ribute__((__always_inline__)) void ClearPageSavePinned(struct page *page) {= clear_bit(PG_savepinned, &({ do { if (__builtin_expect(!!(1 && PageCompoun= d(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"= ")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __= bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b"= "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsect= ion" : : "i" ("include/linux/page-flags.h"), "i" (504), "i" (0), "i" (sizeo= f(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while= (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoiso= ned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"= ); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/page-flags.h"), "i" (504), "i" (0), "i" (sizeof(s= truct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0= ); } while (0); } } while (0); page; }); })->flags); };=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_foreign(struct folio *folio) { return arch_test_bit(= PG_foreign, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PageForeign(struct page *p= age) { return arch_test_bit(PG_foreign, &({ do { if (__builtin_expect(!!(0 = && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageC= ompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".= pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wo= rd" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\= n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (505), "i" (= 0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreacha= ble(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expec= t(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePois= oned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (505), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); page; }); })->flags); } static= inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attri= bute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__))= void folio_set_foreign(struct folio *folio) { set_bit(PG_foreign, folio_fl= ags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void SetPageForeign(struct page *page) { set_bit(P= G_foreign, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) {= dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/page-flags.h"), "i" (505), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/page-flags.h"), "i" (505), "i" (0), "i" (sizeof(struct bug_entry= ))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0);= } } while (0); page; }); })->flags); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) void folio_clear_foreign(str= uct folio *folio) { clear_bit(PG_foreign, folio_flags(folio, 0)); } static = inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attrib= ute__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) = void ClearPageForeign(struct page *page) { clear_bit(PG_foreign, &({ do { i= f (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_= BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-fl= ags.h"), "i" (505), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); = do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ({= do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "V= M_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( = "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" = " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2"= "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags= =2Eh"), "i" (505), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); d= o { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); pag= e; }); })->flags); };=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_xen_remapped(struct folio *folio) { return arch_test= _bit(PG_xen_remapped, folio_flags(folio, 0)); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) int PageXenRemapped(= struct page *page) { return arch_test_bit(PG_xen_remapped, &({ do { if (__b= uiltin_expect(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON= _PAGE(" "0 && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:= \n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1= b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\= n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"= ), "i" (506), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ;= __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { = if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_= ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\= t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b -= 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t= " ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), = "i" (506), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __= builtin_unreachable(); } while (0); } while (0); } } while (0); page; }); }= )->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((_= _unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((= __always_inline__)) void folio_set_xen_remapped(struct folio *folio) { set_= bit(PG_xen_remapped, folio_flags(folio, 0)); } static inline __attribute__(= (__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_func= tion_entry(0, 0))) __attribute__((__always_inline__)) void SetPageXenRemapp= ed(struct page *page) { set_bit(PG_xen_remapped, &({ do { if (__builtin_exp= ect(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1= && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebr= eak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\= n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org= 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (50= 6), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin= _unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__buil= tin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" = "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak= \n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t= " ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b= + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (506),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0); page; }); })->flags);= } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)= ) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_i= nline__)) void folio_clear_xen_remapped(struct folio *folio) { clear_bit(PG= _xen_remapped, folio_flags(folio, 0)); } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) __attribute__((__always_inline__)) void ClearPageXenRemapped(s= truct page *page) { clear_bit(PG_xen_remapped, &({ do { if (__builtin_expec= t(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 &= & PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (506)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); ({ do { if (__builti= n_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "P= agePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n= " ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" = ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b += %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (506), "= i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unre= achable(); } while (0); } while (0); } } while (0); page; }); })->flags); }= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_xen_remapped(struct folio *folio) { return te= st_and_clear_bit(PG_xen_remapped, folio_flags(folio, 0)); } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) int Test= ClearPageXenRemapped(struct page *page) { return test_and_clear_bit(PG_xen_= remapped, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { = dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/page-flags.h"), "i" (507), "i" (0), "i" (sizeof(struct bug_ent= ry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0= ); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) = { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/page-flags.h"), "i" (507), "i" (0), "i" (sizeof(struct bug_entry)= )); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); = } } while (0); page; }); })->flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_reserved(struct folio *folio) { return arch_test_bit= (PG_reserved, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) int PageReserved(struct page= *page) { return arch_test_bit(PG_reserved, &({ do { if (__builtin_expect(!= !(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && P= ageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n= " ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" = ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b += %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (509), "= i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unre= achable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_e= xpect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "Page= Poisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" "= =2Epushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (509), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; }); })->flags); = } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_in= line__)) void folio_set_reserved(struct folio *folio) { set_bit(PG_reserved= , folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) _= _attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) = __attribute__((__always_inline__)) void SetPageReserved(struct page *page) = { set_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 && PageCompound(p= age)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"= ); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/page-flags.h"), "i" (509), "i" (0), "i" (sizeof(s= truct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0= ); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned= (page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); = do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_ta= ble,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t= " ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" := : "i" ("include/linux/page-flags.h"), "i" (509), "i" (0), "i" (sizeof(stru= ct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); = } while (0); } } while (0); page; }); })->flags); } static inline __attribu= te__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable= _function_entry(0, 0))) __attribute__((__always_inline__)) void folio_clear= _reserved(struct folio *folio) { clear_bit(PG_reserved, folio_flags(folio, = 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unuse= d__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alwa= ys_inline__)) void ClearPageReserved(struct page *page) { clear_bit(PG_rese= rved, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump= _page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/page-flags.h"), "i" (509), "i" (0), "i" (sizeof(struct bug_entry))= ); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); }= } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { du= mp_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/page-flags.h"), "i" (509), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } = while (0); page; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_clear_reserved(struct folio *folio) { arch___clear_bit= (PG_reserved, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) void __ClearPageReserved(str= uct page *page) { arch___clear_bit(PG_reserved, &({ do { if (__builtin_expe= ct(!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 = && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (510= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "= PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\= n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t"= ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (510), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; }); })->flags); = }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_set_reserved(struct folio *folio) { arch___set_bit(PG_= reserved, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inli= ne__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(= 0, 0))) __attribute__((__always_inline__)) void __SetPageReserved(struct pa= ge *page) { arch___set_bit(PG_reserved, &({ do { if (__builtin_expect(!!(1 = && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageC= ompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".= pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wo= rd" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\= n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (511), "i" (= 0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreacha= ble(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expec= t(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePois= oned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (511), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); page; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_swapbacked(struct folio *folio) { return arch_test_b= it(PG_swapbacked, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int PageSwapBacked(struc= t page *page) { return arch_test_bit(PG_swapbacked, &({ do { if (__builtin_= expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 = && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n= " ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" = ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b += %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (512), "= i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unre= achable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_e= xpect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_pa= ge(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((= typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( = "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" = " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2"= "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags= =2Eh"), "i" (512), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); d= o { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); ((t= ypeof(page))_compound_head(page)); }); })->flags); } static inline __attrib= ute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchabl= e_function_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_= swapbacked(struct folio *folio) { set_bit(PG_swapbacked, folio_flags(folio,= 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) void SetPageSwapBacked(struct page *page) { set_bit(PG_swapb= acked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_pa= ge(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __v= olatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n= \t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" "= =2Ehalf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (512), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compo= und_head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "V= M_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); d= o { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tab= le,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t"= ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/page-flags.h"), "i" (512), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0); } } while (0); ((typeof(page))_compound_head(page)); }); })->fl= ags); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) void folio_clear_swapbacked(struct folio *folio) { clear_bit= (PG_swapbacked, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) void ClearPageSwapBacked(s= truct page *page) { clear_bit(PG_swapbacked, &({ do { if (__builtin_expect(= !!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && Page= Tail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (512), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!= !(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((ty= peof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(= page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t= " "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - = 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t"= ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "= i" (512), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __b= uiltin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(pag= e))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_clear_swapbacked(struct folio *folio) { arch___clear_b= it(PG_swapbacked, folio_flags(folio, 0)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageSwapBack= ed(struct page *page) { arch___clear_bit(PG_swapbacked, &({ do { if (__buil= tin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (513= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dum= p_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisone= d(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile_= _ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wo= rd" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" "= %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-f= lags.h"), "i" (513), "i" (0), "i" (sizeof(struct bug_entry))); } while (0);= do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); (= (typeof(page))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_set_swapbacked(struct folio *folio) { arch___set_bit(P= G_swapbacked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) void __SetPageSwapBacked(str= uct page *page) { arch___set_bit(PG_swapbacked, &({ do { if (__builtin_expe= ct(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && P= ageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".= pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wo= rd" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\= n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (514), "i" (= 0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreacha= ble(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expec= t(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page((= (typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((type= of(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (514), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(= page))_compound_head(page)); }); })->flags); }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_private(struct folio *folio) { return arch_test_bit(= PG_private, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PagePrivate(struct page *p= age) { return arch_test_bit(PG_private, &({ do { if (__builtin_expect(!!(Pa= gePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(pa= ge)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsectio= n __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 -= 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pop= section" : : "i" ("include/linux/page-flags.h"), "i" (521), "i" (0), "i" (s= izeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } w= hile (0); } while (0); } } while (0); page; })->flags); } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) void folio= _set_private(struct folio *folio) { set_bit(PG_private, folio_flags(folio, = 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unuse= d__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alwa= ys_inline__)) void SetPagePrivate(struct page *page) { set_bit(PG_private, = &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page,= "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-fl= ags.h"), "i" (521), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); = do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); pa= ge; })->flags); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void folio_clear_private(struct folio *folio) { cl= ear_bit(PG_private, folio_flags(folio, 0)); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) void ClearPagePrivate(= struct page *page) { clear_bit(PG_private, &({ do { if (__builtin_expect(!!= (PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned= (page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsec= tion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %= 0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".= popsection" : : "i" ("include/linux/page-flags.h"), "i" (521), "i" (0), "i"= (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); = } while (0); } while (0); } } while (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_private_2(struct folio *folio) { return arch_test_bi= t(PG_private_2, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int PagePrivate2(struct pa= ge *page) { return arch_test_bit(PG_private_2, &({ do { if (__builtin_expec= t(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePois= oned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (522), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); page; })->flags); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) voi= d folio_set_private_2(struct folio *folio) { set_bit(PG_private_2, folio_fl= ags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void SetPagePrivate2(struct page *page) { set_bit(= PG_private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { d= ump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm_= _ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" = "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n= \t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include= /linux/page-flags.h"), "i" (522), "i" (0), "i" (sizeof(struct bug_entry)));= } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } }= while (0); page; })->flags); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void folio_clear_private_2(struct fo= lio *folio) { clear_bit(PG_private_2, folio_flags(folio, 0)); } static inli= ne __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute_= _((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void= ClearPagePrivate2(struct page *page) { clear_bit(PG_private_2, &({ do { if= (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON= _PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (522), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0); page; })->fla= gs); } static inline __attribute__((__gnu_inline__)) __attribute__((__unuse= d__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alwa= ys_inline__)) bool folio_test_set_private_2(struct folio *folio) { return t= est_and_set_bit(PG_private_2, folio_flags(folio, 0)); } static inline __att= ribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patch= able_function_entry(0, 0))) __attribute__((__always_inline__)) int TestSetP= agePrivate2(struct page *page) { return test_and_set_bit(PG_private_2, &({ = do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM= _BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.= h"), "i" (522), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do {= ; __builtin_unreachable(); } while (0); } while (0); } } while (0); page; = })->flags); } static inline __attribute__((__gnu_inline__)) __attribute__((= __unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__(= (__always_inline__)) bool folio_test_clear_private_2(struct folio *folio) {= return test_and_clear_bit(PG_private_2, folio_flags(folio, 0)); } static i= nline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribu= te__((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) i= nt TestClearPagePrivate2(struct page *page) { return test_and_clear_bit(PG_= private_2, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump= _page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (522), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_owner_priv_1(struct folio *folio) { return arch_test= _bit(PG_owner_priv_1, folio_flags(folio, 0)); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) int PageOwnerPriv1(s= truct page *page) { return arch_test_bit(PG_owner_priv_1, &({ do { if (__bu= iltin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(= " "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (523= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); page; })->flags); }= static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void folio_set_owner_priv_1(struct folio *folio) { set_bit(PG_owner= _priv_1, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inlin= e__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0= , 0))) __attribute__((__always_inline__)) void SetPageOwnerPriv1(struct pag= e *page) { set_bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePo= isoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"= ")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __= bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b"= "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsect= ion" : : "i" ("include/linux/page-flags.h"), "i" (523), "i" (0), "i" (sizeo= f(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while= (0); } while (0); } } while (0); page; })->flags); } static inline __attri= bute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchab= le_function_entry(0, 0))) __attribute__((__always_inline__)) void folio_cle= ar_owner_priv_1(struct folio *folio) { clear_bit(PG_owner_priv_1, folio_fla= gs(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute_= _((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute= __((__always_inline__)) void ClearPageOwnerPriv1(struct page *page) { clear= _bit(PG_owner_priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)),= 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do = { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw= \"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half= " " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" (= "include/linux/page-flags.h"), "i" (523), "i" (0), "i" (sizeof(struct bug_e= ntry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while = (0); } } while (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_owner_priv_1(struct folio *folio) { return te= st_and_clear_bit(PG_owner_priv_1, folio_flags(folio, 0)); } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) int Test= ClearPageOwnerPriv1(struct page *page) { return test_and_clear_bit(PG_owner= _priv_1, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_p= age(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __v= olatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n= \t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" "= =2Ehalf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (524), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); page; })->flags); }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_writeback(struct folio *folio) { return arch_test_bi= t(PG_writeback, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int PageWriteback(struct p= age *page) { return arch_test_bit(PG_writeback, &({ do { if (__builtin_expe= ct(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && P= ageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".= pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wo= rd" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\= n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (530), "i" (= 0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreacha= ble(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expec= t(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page((= (typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((type= of(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (530), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(= page))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_set_writeback(struct folio *folio) { return test_an= d_set_bit(PG_writeback, folio_flags(folio, 0)); } static inline __attribute= __((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_f= unction_entry(0, 0))) __attribute__((__always_inline__)) int TestSetPageWri= teback(struct page *page) { return test_and_set_bit(PG_writeback, &({ do { = if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG= _ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (531), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { i= f (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))),= 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "P= agePoisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (531), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); ((typeof(page))_compound_head(page)); }); })->flags); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) boo= l folio_test_clear_writeback(struct folio *folio) { return test_and_clear_b= it(PG_writeback, folio_flags(folio, 0)); } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) int TestClearPageWritebac= k(struct page *page) { return test_and_clear_bit(PG_writeback, &({ do { if = (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON= _PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t= " "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - = 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t"= ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "= i" (531), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __b= uiltin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (= __builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)= ) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "Page= Poisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __vo= latile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\= t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".= half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux= /page-flags.h"), "i" (531), "i" (0), "i" (sizeof(struct bug_entry))); } whi= le (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while= (0); ((typeof(page))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_mappedtodisk(struct folio *folio) { return arch_test= _bit(PG_mappedtodisk, folio_flags(folio, 0)); } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) __attribute__((__always_inline__)) int PageMappedToDisk= (struct page *page) { return arch_test_bit(PG_mappedtodisk, &({ do { if (__= builtin_expect(!!(0 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PA= GE(" "0 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "= ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b"= "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".= org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" = (532), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __buil= tin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__b= uiltin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) {= dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoi= soned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volat= ile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" = ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".hal= f" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/pa= ge-flags.h"), "i" (532), "i" (0), "i" (sizeof(struct bug_entry))); } while = (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0= ); ((typeof(page))_compound_head(page)); }); })->flags); } static inline __= attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pa= tchable_function_entry(0, 0))) __attribute__((__always_inline__)) void foli= o_set_mappedtodisk(struct folio *folio) { set_bit(PG_mappedtodisk, folio_fl= ags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute= __((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribut= e__((__always_inline__)) void SetPageMappedToDisk(struct page *page) { set_= bit(PG_mappedtodisk, &({ do { if (__builtin_expect(!!(1 && PageTail(page)),= 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do= { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"a= w\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".hal= f" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" = ("include/linux/page-flags.h"), "i" (532), "i" (0), "i" (sizeof(struct bug_= entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while= (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(= page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compound_hea= d(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(pag= e)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsecti= on __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 = - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".po= psection" : : "i" ("include/linux/page-flags.h"), "i" (532), "i" (0), "i" (= sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } = while (0); } while (0); } } while (0); ((typeof(page))_compound_head(page))= ; }); })->flags); } static inline __attribute__((__gnu_inline__)) __attribu= te__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attrib= ute__((__always_inline__)) void folio_clear_mappedtodisk(struct folio *foli= o) { clear_bit(PG_mappedtodisk, folio_flags(folio, 0)); } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) void Clear= PageMappedToDisk(struct page *page) { clear_bit(PG_mappedtodisk, &({ do { i= f (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_= ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n= \t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b = - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\= t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"),= "i" (532), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; _= _builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if= (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), = 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "Pa= gePoisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __= volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\= n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" = ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/lin= ux/page-flags.h"), "i" (532), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } whi= le (0); ((typeof(page))_compound_head(page)); }); })->flags); }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_reclaim(struct folio *folio) { return arch_test_bit(= PG_reclaim, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PageReclaim(struct page *p= age) { return arch_test_bit(PG_reclaim, &({ do { if (__builtin_expect(!!(0 = && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(= page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsect= ion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0= - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".p= opsection" : : "i" ("include/linux/page-flags.h"), "i" (535), "i" (0), "i" = (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); }= while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(Pag= ePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(= page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page)= )_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (5= 35), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_c= ompound_head(page)); }); })->flags); } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) __attribute__((__always_inline__)) void folio_set_reclaim(struct= folio *folio) { set_bit(PG_reclaim, folio_flags(folio, 0)); } static inlin= e __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__= ((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void = SetPageReclaim(struct page *page) { set_bit(PG_reclaim, &({ do { if (__buil= tin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (535= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dum= p_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisone= d(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile_= _ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wo= rd" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" "= %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-f= lags.h"), "i" (535), "i" (0), "i" (sizeof(struct bug_entry))); } while (0);= do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); (= (typeof(page))_compound_head(page)); }); })->flags); } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) __attribute__((__always_inline__)) void folio_cl= ear_reclaim(struct folio *folio) { clear_bit(PG_reclaim, folio_flags(folio,= 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) void ClearPageReclaim(struct page *page) { clear_bit(PG_recl= aim, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page= (page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page-flags.h"), "i" (535), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while = (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_= head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BU= G_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { = do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\= "aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".h= alf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i= " ("include/linux/page-flags.h"), "i" (535), "i" (0), "i" (sizeof(struct bu= g_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whi= le (0); } } while (0); ((typeof(page))_compound_head(page)); }); })->flags)= ; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_reclaim(struct folio *folio) { return test_an= d_clear_bit(PG_reclaim, folio_flags(folio, 0)); } static inline __attribute= __((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_f= unction_entry(0, 0))) __attribute__((__always_inline__)) int TestClearPageR= eclaim(struct page *page) { return test_and_clear_bit(PG_reclaim, &({ do { = if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG= _ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (536), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ({ do { i= f (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))),= 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "P= agePoisoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (536), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); ((typeof(page))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_readahead(struct folio *folio) { return arch_test_bi= t(PG_readahead, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) int PageReadahead(struct p= age *page) { return arch_test_bit(PG_readahead, &({ do { if (__builtin_expe= ct(!!(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 = && PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (537= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "= PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\= n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t"= ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (537), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; }); })->flags); = } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_in= line__)) void folio_set_readahead(struct folio *folio) { set_bit(PG_readahe= ad, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) void SetPageReadahead(struct page *pag= e) { set_bit(PG_readahead, &({ do { if (__builtin_expect(!!(1 && PageCompou= nd(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)= "")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection _= _bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b= " "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsec= tion" : : "i" ("include/linux/page-flags.h"), "i" (537), "i" (0), "i" (size= of(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whil= e (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePois= oned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")= "); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bu= g_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "= \n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsectio= n" : : "i" ("include/linux/page-flags.h"), "i" (537), "i" (0), "i" (sizeof(= struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (= 0); } while (0); } } while (0); page; }); })->flags); } static inline __att= ribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patch= able_function_entry(0, 0))) __attribute__((__always_inline__)) void folio_c= lear_readahead(struct folio *folio) { clear_bit(PG_readahead, folio_flags(f= olio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((_= _unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((= __always_inline__)) void ClearPageReadahead(struct page *page) { clear_bit(= PG_readahead, &({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)= ) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { d= o { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"= aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".ha= lf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i"= ("include/linux/page-flags.h"), "i" (537), "i" (0), "i" (sizeof(struct bug= _entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whil= e (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), = 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/page-flags.h"), "i" (537), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } } while (0); page; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_readahead(struct folio *folio) { return test_= and_clear_bit(PG_readahead, folio_flags(folio, 0)); } static inline __attri= bute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchab= le_function_entry(0, 0))) __attribute__((__always_inline__)) int TestClearP= ageReadahead(struct page *page) { return test_and_clear_bit(PG_readahead, &= ({ do { if (__builtin_expect(!!(1 && PageCompound(page)), 0)) { dump_page(p= age, "VM_BUG_ON_PAGE(" "1 && PageCompound(page)"")"); do { do { __asm__ __v= olatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n= \t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" "= =2Ehalf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (538), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_pa= ge(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __vo= latile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\= t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".= half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux= /page-flags.h"), "i" (538), "i" (0), "i" (sizeof(struct bug_entry))); } whi= le (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while= (0); page; }); })->flags); }=0D # 547 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_highmem(cons= t struct folio *folio) { return false; } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) int PageHighMem(const struct page *page) { return 0; } static = inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attrib= ute__((patchable_function_entry(0, 0))) void folio_set_highmem(struct folio= *folio) { } static inline __attribute__((__gnu_inline__)) __attribute__((_= _unused__)) __attribute__((patchable_function_entry(0, 0))) void SetPageHig= hMem(struct page *page) { } static inline __attribute__((__gnu_inline__)) _= _attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) = void folio_clear_highmem(struct folio *folio) { } static inline __attribute= __((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_f= unction_entry(0, 0))) void ClearPageHighMem(struct page *page) { }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_swapcache(struct folio *folio)=0D {=0D return folio_test_swapbacked(folio) &&=0D arch_test_bit(PG_swapcache, folio_flags(folio, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool PageSwapCache(struct page *page)=0D {=0D return folio_test_swapcache((_Generic((page), const struct page *: (const = struct folio *)_compound_head(page), struct page *: (struct folio *)_compou= nd_head(page))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_set_swapcache(struct folio *folio) { set_bit(PG_swapcache= , folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) _= _attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) = __attribute__((__always_inline__)) void SetPageSwapCache(struct page *page)= { set_bit(PG_swapcache, &({ do { if (__builtin_expect(!!(1 && PageTail(pag= e)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do = { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table= ,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" "= =2Ehalf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/page-flags.h"), "i" (562), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((t= ypeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_compou= nd_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_he= ad(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (562), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); ((typeof(page))_compound_head(= page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_clear_swapcache(struct folio *folio) { clear_bit(PG_swapc= ache, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) void ClearPageSwapCache(struct page = *page) { clear_bit(PG_swapcache, &({ do { if (__builtin_expect(!!(1 && Page= Tail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)""= )"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __b= ug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" = "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsecti= on" : : "i" ("include/linux/page-flags.h"), "i" (563), "i" (0), "i" (sizeof= (struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while = (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoison= ed(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_= compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compo= und_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n"= ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (563), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); ((typeof(page))_compou= nd_head(page)); }); })->flags); }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_unevictable(struct folio *folio) { return arch_test_= bit(PG_unevictable, folio_flags(folio, 0)); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) int PageUnevictable(st= ruct page *page) { return arch_test_bit(PG_unevictable, &({ do { if (__buil= tin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { du= mp_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoison= ed(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile= __ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".w= ord" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" = " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-= flags.h"), "i" (568), "i" (0), "i" (sizeof(struct bug_entry))); } while (0)= ; do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); = ((typeof(page))_compound_head(page)); })->flags); } static inline __attribu= te__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable= _function_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_u= nevictable(struct folio *folio) { set_bit(PG_unevictable, folio_flags(folio= , 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unu= sed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__al= ways_inline__)) void SetPageUnevictable(struct page *page) { set_bit(PG_une= victable, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_com= pound_head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), = "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")");= do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/page-flags.h"), "i" (568), "i" (0), "i" (sizeof(str= uct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0);= } while (0); } } while (0); ((typeof(page))_compound_head(page)); })->flag= s); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alway= s_inline__)) void folio_clear_unevictable(struct folio *folio) { clear_bit(= PG_unevictable, folio_flags(folio, 0)); } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) __attribute__((__always_inline__)) void ClearPageUnevictable(= struct page *page) { clear_bit(PG_unevictable, &({ do { if (__builtin_expec= t(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page((= (typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((type= of(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\= n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b= - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n= \t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h")= , "i" (568), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; = __builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(= page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_clear_unevictable(struct folio *folio) { arch___clear_= bit(PG_unevictable, folio_flags(folio, 0)); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageUnevic= table(struct page *page) { arch___clear_bit(PG_unevictable, &({ do { if (__= builtin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) = { dump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePo= isoned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __vola= tile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t"= ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".ha= lf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/p= age-flags.h"), "i" (569), "i" (0), "i" (sizeof(struct bug_entry))); } while= (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (= 0); ((typeof(page))_compound_head(page)); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_clear_unevictable(struct folio *folio) { return tes= t_and_clear_bit(PG_unevictable, folio_flags(folio, 0)); } static inline __a= ttribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((pat= chable_function_entry(0, 0))) __attribute__((__always_inline__)) int TestCl= earPageUnevictable(struct page *page) { return test_and_clear_bit(PG_unevic= table, &({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compou= nd_head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM= _BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do= { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tabl= e,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" = ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : := "i" ("include/linux/page-flags.h"), "i" (570), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0); } } while (0); ((typeof(page))_compound_head(page)); })->flags);= }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_mlocked(struct folio *folio) { return arch_test_bit(= PG_mlocked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) int PageMlocked(struct page *p= age) { return arch_test_bit(PG_mlocked, &({ do { if (__builtin_expect(!!(0 = && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && PageTail(= page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsect= ion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0= - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".p= opsection" : : "i" ("include/linux/page-flags.h"), "i" (573), "i" (0), "i" = (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); }= while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(Pag= ePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(= page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page)= )_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (5= 73), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ((typeof(page))_c= ompound_head(page)); }); })->flags); } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) __attribute__((__always_inline__)) void folio_set_mlocked(struct= folio *folio) { set_bit(PG_mlocked, folio_flags(folio, 0)); } static inlin= e __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__= ((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void = SetPageMlocked(struct page *page) { set_bit(PG_mlocked, &({ do { if (__buil= tin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (573= ), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_= unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__built= in_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dum= p_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisone= d(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatile_= _ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wo= rd" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" "= %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-f= lags.h"), "i" (573), "i" (0), "i" (sizeof(struct bug_entry))); } while (0);= do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); (= (typeof(page))_compound_head(page)); }); })->flags); } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) __attribute__((__always_inline__)) void folio_cl= ear_mlocked(struct folio *folio) { clear_bit(PG_mlocked, folio_flags(folio,= 0)); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__alw= ays_inline__)) void ClearPageMlocked(struct page *page) { clear_bit(PG_mloc= ked, &({ do { if (__builtin_expect(!!(1 && PageTail(page)), 0)) { dump_page= (page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page-flags.h"), "i" (573), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while = (0); ({ do { if (__builtin_expect(!!(PagePoisoned(((typeof(page))_compound_= head(page)))), 0)) { dump_page(((typeof(page))_compound_head(page)), "VM_BU= G_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_head(page)))"")"); do { = do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\= "aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".h= alf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i= " ("include/linux/page-flags.h"), "i" (573), "i" (0), "i" (sizeof(struct bu= g_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whi= le (0); } } while (0); ((typeof(page))_compound_head(page)); }); })->flags)= ; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) void __folio_clear_mlocked(struct folio *folio) { arch___clear_bit(= PG_mlocked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) void __ClearPageMlocked(struct= page *page) { arch___clear_bit(PG_mlocked, &({ do { if (__builtin_expect(!= !(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageT= ail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".push= section __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" = " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t"= ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (574), "i" (0), = "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(= ); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!= (PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((typ= eof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(p= age))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (574), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(page= ))_compound_head(page)); }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_set_mlocked(struct folio *folio) { return test_and_= set_bit(PG_mlocked, folio_flags(folio, 0)); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) int TestSetPageMlocked= (struct page *page) { return test_and_set_bit(PG_mlocked, &({ do { if (__bu= iltin_expect(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE= (" "1 && PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (5= 75), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (__bui= ltin_expect(!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { d= ump_page(((typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoiso= ned(((typeof(page))_compound_head(page)))"")"); do { do { __asm__ __volatil= e__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".= word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half"= " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page= -flags.h"), "i" (575), "i" (0), "i" (sizeof(struct bug_entry))); } while (0= ); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0);= ((typeof(page))_compound_head(page)); }); })->flags); } static inline __at= tribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patc= hable_function_entry(0, 0))) __attribute__((__always_inline__)) bool folio_= test_clear_mlocked(struct folio *folio) { return test_and_clear_bit(PG_mloc= ked, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)= ) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)= )) __attribute__((__always_inline__)) int TestClearPageMlocked(struct page = *page) { return test_and_clear_bit(PG_mlocked, &({ do { if (__builtin_expec= t(!!(1 && PageTail(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && Pa= geTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (575), "i" (0= ), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachab= le(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect= (!!(PagePoisoned(((typeof(page))_compound_head(page)))), 0)) { dump_page(((= typeof(page))_compound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeo= f(page))_compound_head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n= \t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b = - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\= t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"),= "i" (575), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; _= _builtin_unreachable(); } while (0); } while (0); } } while (0); ((typeof(p= age))_compound_head(page)); }); })->flags); }=0D # 584 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_uncached(con= st struct folio *folio) { return false; } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) int PageUncached(const struct page *page) { return 0; } stati= c inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attr= ibute__((patchable_function_entry(0, 0))) void folio_set_uncached(struct fo= lio *folio) { } static inline __attribute__((__gnu_inline__)) __attribute__= ((__unused__)) __attribute__((patchable_function_entry(0, 0))) void SetPage= Uncached(struct page *page) { } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) void folio_clear_uncached(struct folio *folio) { } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) void ClearPageUncached(struct page *page) { }=0D # 597 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_hwpoison(con= st struct folio *folio) { return false; } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) int PageHWPoison(const struct page *page) { return 0; } stati= c inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attr= ibute__((patchable_function_entry(0, 0))) void folio_set_hwpoison(struct fo= lio *folio) { } static inline __attribute__((__gnu_inline__)) __attribute__= ((__unused__)) __attribute__((patchable_function_entry(0, 0))) void SetPage= HWPoison(struct page *page) { } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) void folio_clear_hwpoison(struct folio *folio) { } static inline __attr= ibute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patcha= ble_function_entry(0, 0))) void ClearPageHWPoison(struct page *page) { }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_young(struct folio *folio) { return arch_test_bit(PG= _young, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline= __)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0,= 0))) __attribute__((__always_inline__)) int PageYoung(struct page *page) {= return arch_test_bit(PG_young, &({ do { if (__builtin_expect(!!(PagePoison= ed(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")")= ; do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/page-flags.h"), "i" (602), "i" (0), "i" (sizeof(st= ruct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0)= ; } while (0); } } while (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_set_young(struct folio *folio) { set_bit(PG_young, folio_= flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribu= te__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attrib= ute__((__always_inline__)) void SetPageYoung(struct page *page) { set_bit(P= G_young, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_p= age(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __v= olatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n= \t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" "= =2Ehalf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (603), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_clear_young(struct folio *folio) { return test_and_c= lear_bit(PG_young, folio_flags(folio, 0)); } static inline __attribute__((_= _gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functi= on_entry(0, 0))) __attribute__((__always_inline__)) int TestClearPageYoung(= struct page *page) { return test_and_clear_bit(PG_young, &({ do { if (__bui= ltin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE("= "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (604)= , "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_u= nreachable(); } while (0); } while (0); } } while (0); page; })->flags); }= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_idle(struct folio *folio) { return arch_test_bit(PG_= idle, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) __attribute__((__always_inline__)) int PageIdle(struct page *page) { re= turn arch_test_bit(PG_idle, &({ do { if (__builtin_expect(!!(PagePoisoned(p= age)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do= { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tabl= e,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" = ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : := "i" ("include/linux/page-flags.h"), "i" (605), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0); } } while (0); page; })->flags); } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) __attribute__((__always_inline__)) void folio_set_idle(st= ruct folio *folio) { set_bit(PG_idle, folio_flags(folio, 0)); } static inli= ne __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute_= _((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void= SetPageIdle(struct page *page) { set_bit(PG_idle, &({ do { if (__builtin_e= xpect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "Page= Poisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" "= =2Epushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (605), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; })->flags); } st= atic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __a= ttribute__((patchable_function_entry(0, 0))) __attribute__((__always_inline= __)) void folio_clear_idle(struct folio *folio) { clear_bit(PG_idle, folio_= flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribu= te__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attrib= ute__((__always_inline__)) void ClearPageIdle(struct page *page) { clear_bi= t(PG_idle, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump= _page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (605), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0); page; })->flags); }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_skip_kasan_p= oison(const struct folio *folio) { return false; } static inline __attribut= e__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_= function_entry(0, 0))) int PageSkipKASanPoison(const struct page *page) { r= eturn 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__u= nused__)) __attribute__((patchable_function_entry(0, 0))) void folio_set_sk= ip_kasan_poison(struct folio *folio) { } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) void SetPageSkipKASanPoison(struct page *page) { } static inli= ne __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute_= _((patchable_function_entry(0, 0))) void folio_clear_skip_kasan_poison(stru= ct folio *folio) { } static inline __attribute__((__gnu_inline__)) __attrib= ute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) void Cl= earPageSkipKASanPoison(struct page *page) { }=0D # 620 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_reported(struct folio *folio) { return arch_test_bit= (PG_reported, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) int PageReported(struct page= *page) { return arch_test_bit(PG_reported, &({ do { if (__builtin_expect(!= !(0 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "0 && P= ageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n= " ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" = ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b += %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620), "= i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unre= achable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_e= xpect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "Page= Poisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" "= =2Epushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; }); })->flags); = } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_in= line__)) void __folio_set_reported(struct folio *folio) { arch___set_bit(PG= _reported, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inl= ine__)) __attribute__((__unused__)) __attribute__((patchable_function_entry= (0, 0))) __attribute__((__always_inline__)) void __SetPageReported(struct p= age *page) { arch___set_bit(PG_reported, &({ do { if (__builtin_expect(!!(1= && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && Page= Compound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" "= =2Epushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin_= expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "Pag= ePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" = ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".= word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %= 3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620), "i"= (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreac= hable(); } while (0); } while (0); } } while (0); page; }); })->flags); } s= tatic inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __= attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inlin= e__)) void __folio_clear_reported(struct folio *folio) { arch___clear_bit(P= G_reported, folio_flags(folio, 0)); } static inline __attribute__((__gnu_in= line__)) __attribute__((__unused__)) __attribute__((patchable_function_entr= y(0, 0))) __attribute__((__always_inline__)) void __ClearPageReported(struc= t page *page) { arch___clear_bit(PG_reported, &({ do { if (__builtin_expect= (!!(1 && PageCompound(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 &&= PageCompound(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak= \n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t= " ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b= + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0); ({ do { if (__builtin= _expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "Pa= gePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n"= ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (620), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } } while (0); page; }); })->flags); = }=0D # 644 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageMappingFlags(struct page *page)=0D {=0D return ((unsigned long)page->mapping & (0x1 | 0x2)) !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_anon(struct folio *folio)=0D {=0D return ((unsigned long)folio->mapping & 0x1) !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool PageAnon(struct page *page)=0D {=0D return folio_test_anon((_Generic((page), const struct page *: (const struc= t folio *)_compound_head(page), struct page *: (struct folio *)_compound_he= ad(page))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int __PageMovable(struct page *page)=0D {=0D return ((unsigned long)page->mapping & (0x1 | 0x2)) =3D=3D=0D 0x2;=0D }=0D # 683 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_ksm(const st= ruct folio *folio) { return false; } static inline __attribute__((__gnu_inl= ine__)) __attribute__((__unused__)) __attribute__((patchable_function_entry= (0, 0))) int PageKsm(const struct page *page) { return 0; }=0D =0D =0D u64 stable_page_flags(struct page *page);=0D # 698 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_uptodate(str= uct folio *folio)=0D {=0D bool ret =3D arch_test_bit(PG_uptodate, folio_flags(folio, 0));=0D # 709 "./include/linux/page-flags.h"=0D if (ret)=0D do { do { } while (0); __asm__ __volatile__ ("fence " "r" "," "r" : : : "= memory"); } while (0);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int PageUptodate(struct page= *page)=0D {=0D return folio_test_uptodate((_Generic((page), const struct page *: (const s= truct folio *)_compound_head(page), struct page *: (struct folio *)_compoun= d_head(page))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __folio_mark_uptodate(struct folio *folio)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D arch___set_bit(PG_uptodate, folio_flags(folio, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_mark_uptodate(struct folio *folio)=0D {=0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D set_bit(PG_uptodate, folio_flags(folio, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __SetPageUptodate(struct page *page)=0D {=0D __folio_mark_uptodate((struct folio *)page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void SetPageUptodate(struct page *page)=0D {=0D folio_mark_uptodate((struct folio *)page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_clear_uptodate(struct folio *folio) { clear_bit(PG_uptoda= te, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) void ClearPageUptodate(struct page *pa= ge) { clear_bit(PG_uptodate, &({ do { if (__builtin_expect(!!(1 && PageTail= (page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "1 && PageTail(page)"")");= do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/page-flags.h"), "i" (747), "i" (0), "i" (sizeof(str= uct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0);= } while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned((= (typeof(page))_compound_head(page)))), 0)) { dump_page(((typeof(page))_comp= ound_head(page)), "VM_BUG_ON_PAGE(" "PagePoisoned(((typeof(page))_compound_= head(page)))"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (747), "i" (0= ), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachab= le(); } while (0); } while (0); } } while (0); ((typeof(page))_compound_hea= d(page)); }); })->flags); }=0D =0D bool __folio_start_writeback(struct folio *folio, bool keep_write);=0D bool set_page_writeback(struct page *page);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_writeback_keep= write(struct page *page)=0D {=0D __folio_start_writeback((_Generic((page), const struct page *: (const stru= ct folio *)_compound_head(page), struct page *: (struct folio *)_compound_h= ead(page))), true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool test_set_page_writeback= (struct page *page)=0D {=0D return set_page_writeback(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_head(struct folio *folio)=0D {=0D return arch_test_bit(PG_head, folio_flags(folio, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageHead(struct page *page)=0D {=0D ({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page,= "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-fl= ags.h"), "i" (774), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); = do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); pa= ge; });=0D return arch_test_bit(PG_head, &page->flags) && !page_is_fake_head(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __folio_set_head(struct folio *folio) { arch___set_bit(PG_head,= folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __= attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) _= _attribute__((__always_inline__)) void __SetPageHead(struct page *page) { a= rch___set_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page))= , 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do= { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"a= w\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".hal= f" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" = ("include/linux/page-flags.h"), "i" (778), "i" (0), "i" (sizeof(struct bug_= entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while= (0); } } while (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __folio_clear_head(struct folio *folio) { arch___clear_bit(PG_h= ead, folio_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)= ) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)= )) __attribute__((__always_inline__)) void __ClearPageHead(struct page *pag= e) { arch___clear_bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisone= d(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")");= do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/page-flags.h"), "i" (779), "i" (0), "i" (sizeof(str= uct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0);= } while (0); } } while (0); page; })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void folio_clear_head(struct folio *folio) { clear_bit(PG_head, foli= o_flags(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attri= bute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attr= ibute__((__always_inline__)) void ClearPageHead(struct page *page) { clear_= bit(PG_head, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { du= mp_page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/page-flags.h"), "i" (780), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } = while (0); page; })->flags); }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_large(struct= folio *folio)=0D {=0D return folio_test_head(folio);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void set_compound_head(struct page *page, struct page *head)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 52(void) ; if (!((sizeof(page->compound_head) =3D=3D sizeof(char) || sizeof= (page->compound_head) =3D=3D sizeof(short) || sizeof(page->compound_head) = =3D=3D sizeof(int) || sizeof(page->compound_head) =3D=3D sizeof(long)) || s= izeof(page->compound_head) =3D=3D sizeof(long long))) __compiletime_assert_= 152(); } while (0); do { *(volatile typeof(page->compound_head) *)&(page->c= ompound_head) =3D ((unsigned long)head + 1); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void clear_compound_head(struct page *page)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 53(void) ; if (!((sizeof(page->compound_head) =3D=3D sizeof(char) || sizeof= (page->compound_head) =3D=3D sizeof(short) || sizeof(page->compound_head) = =3D=3D sizeof(int) || sizeof(page->compound_head) =3D=3D sizeof(long)) || s= izeof(page->compound_head) =3D=3D sizeof(long long))) __compiletime_assert_= 153(); } while (0); do { *(volatile typeof(page->compound_head) *)&(page->c= ompound_head) =3D (0); } while (0); } while (0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ClearPageCompound(struc= t page *page)=0D {=0D do { if (__builtin_expect(!!(!PageHead(page)), 0)) do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page-flags.h"), "i" (806), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while (0= );=0D ClearPageHead(page);=0D }=0D # 821 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_hugetlb(cons= t struct folio *folio) { return false; } static inline __attribute__((__gnu= _inline__)) __attribute__((__unused__)) __attribute__((patchable_function_e= ntry(0, 0))) int PageHuge(const struct page *page) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_headhuge(con= st struct folio *folio) { return false; } static inline __attribute__((__gn= u_inline__)) __attribute__((__unused__)) __attribute__((patchable_function_= entry(0, 0))) int PageHeadHuge(const struct page *page) { return 0; }=0D # 834 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int PageTransHuge(struct pag= e *page)=0D {=0D do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BU= G_ON_PAGE(" "PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i= " (836), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __bu= iltin_unreachable(); } while (0); } while (0); } } while (0);=0D return PageHead(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_transhuge(st= ruct folio *folio)=0D {=0D return folio_test_head(folio);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int PageTransCompound(struct= page *page)=0D {=0D return PageCompound(page);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int PageTransTail(struct pag= e *page)=0D {=0D return PageTail(page);=0D }=0D # 878 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_double_map(struct folio *folio) { return arch_test_b= it(PG_double_map, folio_flags(folio, 1)); } static inline __attribute__((__= gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functio= n_entry(0, 0))) __attribute__((__always_inline__)) int PageDoubleMap(struct= page *page) { return arch_test_bit(PG_double_map, &({ do { if (__builtin_e= xpect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHe= ad(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (878), "i" (0), "= i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable()= ; } while (0); } while (0); } } while (0); ({ do { if (__builtin_expect(!!(= PagePoisoned(&page[1])), 0)) { dump_page(&page[1], "VM_BUG_ON_PAGE(" "PageP= oisoned(&page[1])"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n= " ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" = ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b += %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (878), "= i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unre= achable(); } while (0); } while (0); } } while (0); &page[1]; }); })->flags= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) void folio_set_double_map(struct folio *folio) { set_bit(PG_dou= ble_map, folio_flags(folio, 1)); } static inline __attribute__((__gnu_inlin= e__)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0= , 0))) __attribute__((__always_inline__)) void SetPageDoubleMap(struct page= *page) { set_bit(PG_double_map, &({ do { if (__builtin_expect(!!(!PageHead= (page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do = { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table= ,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" "= =2Ehalf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/page-flags.h"), "i" (878), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(&pa= ge[1])), 0)) { dump_page(&page[1], "VM_BUG_ON_PAGE(" "PagePoisoned(&page[1]= )"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection = __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2= b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popse= ction" : : "i" ("include/linux/page-flags.h"), "i" (878), "i" (0), "i" (siz= eof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whi= le (0); } while (0); } } while (0); &page[1]; }); })->flags); } static inli= ne __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute_= _((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) void= folio_clear_double_map(struct folio *folio) { clear_bit(PG_double_map, fol= io_flags(folio, 1)); } static inline __attribute__((__gnu_inline__)) __attr= ibute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __att= ribute__((__always_inline__)) void ClearPageDoubleMap(struct page *page) { = clear_bit(PG_double_map, &({ do { if (__builtin_expect(!!(!PageHead(page)),= 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { _= _asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\= n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" "= %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("in= clude/linux/page-flags.h"), "i" (878), "i" (0), "i" (sizeof(struct bug_entr= y))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0)= ; } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(&page[1])), 0= )) { dump_page(&page[1], "VM_BUG_ON_PAGE(" "PagePoisoned(&page[1])"")"); do= { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tabl= e,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" = ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : := "i" ("include/linux/page-flags.h"), "i" (878), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0); } } while (0); &page[1]; }); })->flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inl= ine__)) bool folio_test_set_double_map(struct folio *folio) { return test_a= nd_set_bit(PG_double_map, folio_flags(folio, 1)); } static inline __attribu= te__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable= _function_entry(0, 0))) __attribute__((__always_inline__)) int TestSetPageD= oubleMap(struct page *page) { return test_and_set_bit(PG_double_map, &({ do= { if (__builtin_expect(!!(!PageHead(page)), 0)) { dump_page(page, "VM_BUG_= ON_PAGE(" "!PageHead(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" = "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b= " "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" "= =2Eorg 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "= i" (879), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __b= uiltin_unreachable(); } while (0); } while (0); } } while (0); ({ do { if (= __builtin_expect(!!(PagePoisoned(&page[1])), 0)) { dump_page(&page[1], "VM_= BUG_ON_PAGE(" "PagePoisoned(&page[1])"")"); do { do { __asm__ __volatile__ = ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word= " " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %= 2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-fla= gs.h"), "i" (879), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); d= o { ; __builtin_unreachable(); } while (0); } while (0); } } while (0); &pa= ge[1]; }); })->flags); } static inline __attribute__((__gnu_inline__)) __at= tribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) __a= ttribute__((__always_inline__)) bool folio_test_clear_double_map(struct fol= io *folio) { return test_and_clear_bit(PG_double_map, folio_flags(folio, 1)= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) __attribute__((__always= _inline__)) int TestClearPageDoubleMap(struct page *page) { return test_and= _clear_bit(PG_double_map, &({ do { if (__builtin_expect(!!(!PageHead(page))= , 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageHead(page)"")"); do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/page-flags.h"), "i" (879), "i" (0), "i" (sizeof(struct bug_ent= ry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0= ); } } while (0); ({ do { if (__builtin_expect(!!(PagePoisoned(&page[1])), = 0)) { dump_page(&page[1], "VM_BUG_ON_PAGE(" "PagePoisoned(&page[1])"")"); d= o { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tab= le,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t"= ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/page-flags.h"), "i" (879), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0); } } while (0); &page[1]; }); })->flags); }=0D # 899 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_has_hwpoison= ed(const struct folio *folio) { return false; } static inline __attribute__= ((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fun= ction_entry(0, 0))) int PageHasHWPoisoned(const struct page *page) { return= 0; } static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) void folio_set_has_hwp= oisoned(struct folio *folio) { } static inline __attribute__((__gnu_inline_= _)) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, = 0))) void SetPageHasHWPoisoned(struct page *page) { } static inline __attri= bute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchab= le_function_entry(0, 0))) void folio_clear_has_hwpoisoned(struct folio *fol= io) { } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) void ClearPageHasHWP= oisoned(struct page *page) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) = __attribute__((patchable_function_entry(0, 0))) bool folio_test_set_has_hwp= oisoned(struct folio *folio) { return 0; } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) int TestSetPageHasHWPoisoned(struct page *page) { return 0; = } static inline __attribute__((__gnu_inline__)) __attribute__((__unused__))= __attribute__((patchable_function_entry(0, 0))) bool folio_test_clear_has_= hwpoisoned(struct folio *folio) { return 0; } static inline __attribute__((= __gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_funct= ion_entry(0, 0))) int TestClearPageHasHWPoisoned(struct page *page) { retur= n 0; }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_page_hwpoison(struct= page *page)=0D {=0D if (PageHWPoison(page))=0D return true;=0D return PageHuge(page) && PageHWPoison(((typeof(page))_compound_head(page))= );=0D }=0D # 935 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_has_type(struct pag= e *page)=0D {=0D return (int)page->page_type < -128;=0D }=0D # 960 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageBuddy(struct page *page) { return ((page->page_type & (0xf00= 00000 | 0x00000080)) =3D=3D 0xf0000000); } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) void __SetPageBuddy(struc= t page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf00000= 00 | 0)) =3D=3D 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((p= age->page_type & (0xf0000000 | 0)) =3D=3D 0xf0000000)"")"); do { do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/page-flags.h"), "i" (960), "i" (0), "i" (sizeof(struct bug_entry)))= ; } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } = } while (0); page->page_type &=3D ~0x00000080; } static inline __attribute_= _((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fu= nction_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageBud= dy(struct page *page) { do { if (__builtin_expect(!!(!PageBuddy(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "!PageBuddy(page)"")"); do { do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/page-flags.h"), "i" (960), "i" (0), "i" (sizeof(struct bug_entry))= ); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); }= } while (0); page->page_type |=3D 0x00000080; }=0D # 984 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageOffline(struct page *page) { return ((page->page_type & (0xf= 0000000 | 0x00000100)) =3D=3D 0xf0000000); } static inline __attribute__((_= _gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_functi= on_entry(0, 0))) __attribute__((__always_inline__)) void __SetPageOffline(s= truct page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf0= 000000 | 0)) =3D=3D 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "= !((page->page_type & (0xf0000000 | 0)) =3D=3D 0xf0000000)"")"); do { do { _= _asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\= n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" "= %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("in= clude/linux/page-flags.h"), "i" (984), "i" (0), "i" (sizeof(struct bug_entr= y))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0)= ; } } while (0); page->page_type &=3D ~0x00000100; } static inline __attrib= ute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchabl= e_function_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPag= eOffline(struct page *page) { do { if (__builtin_expect(!!(!PageOffline(pag= e)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!PageOffline(page)"")"); do {= do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,= \"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".= half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "= i" ("include/linux/page-flags.h"), "i" (984), "i" (0), "i" (sizeof(struct b= ug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } wh= ile (0); } } while (0); page->page_type |=3D 0x00000100; }=0D =0D extern void page_offline_freeze(void);=0D extern void page_offline_thaw(void);=0D extern void page_offline_begin(void);=0D extern void page_offline_end(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageTable(struct page *page) { return ((page->page_type & (0xf00= 00000 | 0x00000200)) =3D=3D 0xf0000000); } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) void __SetPageTable(struc= t page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf00000= 00 | 0)) =3D=3D 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((p= age->page_type & (0xf0000000 | 0)) =3D=3D 0xf0000000)"")"); do { do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/page-flags.h"), "i" (994), "i" (0), "i" (sizeof(struct bug_entry)))= ; } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } = } while (0); page->page_type &=3D ~0x00000200; } static inline __attribute_= _((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fu= nction_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageTab= le(struct page *page) { do { if (__builtin_expect(!!(!PageTable(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "!PageTable(page)"")"); do { do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/page-flags.h"), "i" (994), "i" (0), "i" (sizeof(struct bug_entry))= ); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); }= } while (0); page->page_type |=3D 0x00000200; }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int PageGuard(struct page *page) { return ((page->page_type & (0xf00= 00000 | 0x00000400)) =3D=3D 0xf0000000); } static inline __attribute__((__g= nu_inline__)) __attribute__((__unused__)) __attribute__((patchable_function= _entry(0, 0))) __attribute__((__always_inline__)) void __SetPageGuard(struc= t page *page) { do { if (__builtin_expect(!!(!((page->page_type & (0xf00000= 00 | 0)) =3D=3D 0xf0000000)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "!((p= age->page_type & (0xf0000000 | 0)) =3D=3D 0xf0000000)"")"); do { do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/page-flags.h"), "i" (999), "i" (0), "i" (sizeof(struct bug_entry)))= ; } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } = } while (0); page->page_type &=3D ~0x00000400; } static inline __attribute_= _((__gnu_inline__)) __attribute__((__unused__)) __attribute__((patchable_fu= nction_entry(0, 0))) __attribute__((__always_inline__)) void __ClearPageGua= rd(struct page *page) { do { if (__builtin_expect(!!(!PageGuard(page)), 0))= { dump_page(page, "VM_BUG_ON_PAGE(" "!PageGuard(page)"")"); do { do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/page-flags.h"), "i" (999), "i" (0), "i" (sizeof(struct bug_entry))= ); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); }= } while (0); page->page_type |=3D 0x00000400; }=0D =0D extern bool is_free_buddy_page(struct page *page);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool folio_test_isolated(struct folio *folio) { return arch_test_bit= (PG_isolated, folio_flags(folio, 0)); } static inline __attribute__((__gnu_= inline__)) __attribute__((__unused__)) __attribute__((patchable_function_en= try(0, 0))) __attribute__((__always_inline__)) int PageIsolated(struct page= *page) { return arch_test_bit(PG_isolated, &({ do { if (__builtin_expect(!= !(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "PagePoisone= d(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushse= ction __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " = %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" "= =2Epopsection" : : "i" ("include/linux/page-flags.h"), "i" (1003), "i" (0),= "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable= (); } while (0); } while (0); } } while (0); page; })->flags); } static inl= ine __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute= __((patchable_function_entry(0, 0))) __attribute__((__always_inline__)) voi= d folio_set_isolated(struct folio *folio) { set_bit(PG_isolated, folio_flag= s(folio, 0)); } static inline __attribute__((__gnu_inline__)) __attribute__= ((__unused__)) __attribute__((patchable_function_entry(0, 0))) __attribute_= _((__always_inline__)) void SetPageIsolated(struct page *page) { set_bit(PG= _isolated, &({ do { if (__builtin_expect(!!(PagePoisoned(page)), 0)) { dump= _page(page, "VM_BUG_ON_PAGE(" "PagePoisoned(page)"")"); do { do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/page-flags.h"), "i" (1003), "i" (0), "i" (sizeof(struct bug_entry))); }= while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } w= hile (0); page; })->flags); } static inline __attribute__((__gnu_inline__))= __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))= ) __attribute__((__always_inline__)) void folio_clear_isolated(struct folio= *folio) { clear_bit(PG_isolated, folio_flags(folio, 0)); } static inline _= _attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__((p= atchable_function_entry(0, 0))) __attribute__((__always_inline__)) void Cle= arPageIsolated(struct page *page) { clear_bit(PG_isolated, &({ do { if (__b= uiltin_expect(!!(PagePoisoned(page)), 0)) { dump_page(page, "VM_BUG_ON_PAGE= (" "PagePoisoned(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebr= eak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\= n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org= 2b + %3\n\t" ".popsection" : : "i" ("include/linux/page-flags.h"), "i" (10= 03), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } } while (0); page; })->flags);= };=0D # 1042 "./include/linux/page-flags.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_has_private(struct = page *page)=0D {=0D return !!(page->flags & (1UL << PG_private | 1UL << PG_private_2));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_has_private(struc= t folio *folio)=0D {=0D return page_has_private(&folio->page);=0D }=0D # 23 "./include/linux/mmzone.h" 2=0D # 1 "./include/linux/local_lock.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/local_lock_internal.h" 1=0D # 11 "./include/linux/local_lock_internal.h"=0D typedef struct {=0D =0D struct lockdep_map dep_map;=0D struct task_struct *owner;=0D =0D } local_lock_t;=0D # 27 "./include/linux/local_lock_internal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_lock_acquire(loca= l_lock_t *l)=0D {=0D lock_acquire(&l->dep_map, 0, 0, 0, 1, ((void *)0), ({ __label__ __here; __= here: (unsigned long)&&__here; }));=0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(l->owner)= , 0)) { do { } while(0); if (debug_locks_off() && !debug_locks_silent) ({ i= nt __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do = { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s)", "l->owner"); do= { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"a= w\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".hal= f" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" = ("include/linux/local_lock_internal.h"), "i" (30), "i" ((1 << 0)|((1 << 3) = | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(= 0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do { } while(0= ); __ret =3D 1; } __ret; });=0D l->owner =3D get_current();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_lock_release(loca= l_lock_t *l)=0D {=0D ({ int __ret =3D 0; if (!oops_in_progress && __builtin_expect(!!(l->owner = !=3D get_current()), 0)) { do { } while(0); if (debug_locks_off() && !debug= _locks_silent) ({ int __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__re= t_warn_on), 0)) do { do { } while(0); __warn_printk("DEBUG_LOCKS_WARN_ON(%s= )", "l->owner !=3D current"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\= n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t"= ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/local_lock_internal.h"), "i= " (36), "i" ((1 << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entr= y))); } while (0); do { } while(0); } while (0); __builtin_expect(!!(__ret_= warn_on), 0); }); do { } while(0); __ret =3D 1; } __ret; });=0D l->owner =3D ((void *)0);=0D lock_release(&l->dep_map, ({ __label__ __here; __here: (unsigned long)&&__= here; }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_lock_debug_init(l= ocal_lock_t *l)=0D {=0D l->owner =3D ((void *)0);=0D }=0D # 6 "./include/linux/local_lock.h" 2=0D # 24 "./include/linux/mmzone.h" 2=0D # 42 "./include/linux/mmzone.h"=0D enum migratetype {=0D MIGRATE_UNMOVABLE,=0D MIGRATE_MOVABLE,=0D MIGRATE_RECLAIMABLE,=0D MIGRATE_PCPTYPES,=0D MIGRATE_HIGHATOMIC =3D MIGRATE_PCPTYPES,=0D # 62 "./include/linux/mmzone.h"=0D MIGRATE_CMA,=0D =0D =0D MIGRATE_ISOLATE,=0D =0D MIGRATE_TYPES=0D };=0D =0D =0D extern const char * const migratetype_names[MIGRATE_TYPES];=0D # 81 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_migrate_movable(int = mt)=0D {=0D return __builtin_expect(!!((mt) =3D=3D MIGRATE_CMA), 0) || mt =3D=3D MIGRA= TE_MOVABLE;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool migratetype_is_mergeabl= e(int mt)=0D {=0D return mt < MIGRATE_PCPTYPES;=0D }=0D =0D =0D =0D =0D =0D extern int page_group_by_mobility_disabled;=0D =0D =0D =0D =0D =0D =0D struct free_area {=0D struct list_head free_list[MIGRATE_TYPES];=0D unsigned long nr_free;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *get_page_from_f= ree_area(struct free_area *area,=0D int migratetype)=0D {=0D return ({ struct list_head *head__ =3D (&area->free_list[migratetype]); st= ruct list_head *pos__ =3D ({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_154(void) ; if (!((sizeof(head__->next) =3D=3D sizeof= (char) || sizeof(head__->next) =3D=3D sizeof(short) || sizeof(head__->next)= =3D=3D sizeof(int) || sizeof(head__->next) =3D=3D sizeof(long)) || sizeof(= head__->next) =3D=3D sizeof(long long))) __compiletime_assert_154(); } whil= e (0); (*(const volatile typeof( _Generic((head__->next), char: (char)0, un= signed char: (unsigned char)0, signed char: (signed char)0, unsigned short:= (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned = int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed l= ong: (signed long)0, unsigned long long: (unsigned long long)0, signed long= long: (signed long long)0, default: (head__->next))) *)&(head__->next)); }= ); pos__ !=3D head__ ? ({ void *__mptr =3D (void *)(pos__); _Static_assert(= __builtin_types_compatible_p(typeof(*(pos__)), typeof(((struct page *)0)->l= ru)) || __builtin_types_compatible_p(typeof(*(pos__)), typeof(void)), "poin= ter type mismatch in container_of()"); ((struct page *)(__mptr - __builtin_= offsetof(struct page, lru))); }) : ((void *)0); });=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool free_area_empty(struct = free_area *area, int migratetype)=0D {=0D return list_empty(&area->free_list[migratetype]);=0D }=0D =0D struct pglist_data;=0D =0D =0D =0D =0D =0D =0D =0D struct zone_padding {=0D char x[0];=0D } __attribute__((__aligned__(1 << (6))));=0D # 155 "./include/linux/mmzone.h"=0D enum zone_stat_item {=0D =0D NR_FREE_PAGES,=0D NR_ZONE_LRU_BASE,=0D NR_ZONE_INACTIVE_ANON =3D NR_ZONE_LRU_BASE,=0D NR_ZONE_ACTIVE_ANON,=0D NR_ZONE_INACTIVE_FILE,=0D NR_ZONE_ACTIVE_FILE,=0D NR_ZONE_UNEVICTABLE,=0D NR_ZONE_WRITE_PENDING,=0D NR_MLOCK,=0D =0D NR_BOUNCE,=0D =0D =0D =0D NR_FREE_CMA_PAGES,=0D NR_VM_ZONE_STAT_ITEMS };=0D =0D enum node_stat_item {=0D NR_LRU_BASE,=0D NR_INACTIVE_ANON =3D NR_LRU_BASE,=0D NR_ACTIVE_ANON,=0D NR_INACTIVE_FILE,=0D NR_ACTIVE_FILE,=0D NR_UNEVICTABLE,=0D NR_SLAB_RECLAIMABLE_B,=0D NR_SLAB_UNRECLAIMABLE_B,=0D NR_ISOLATED_ANON,=0D NR_ISOLATED_FILE,=0D WORKINGSET_NODES,=0D WORKINGSET_REFAULT_BASE,=0D WORKINGSET_REFAULT_ANON =3D WORKINGSET_REFAULT_BASE,=0D WORKINGSET_REFAULT_FILE,=0D WORKINGSET_ACTIVATE_BASE,=0D WORKINGSET_ACTIVATE_ANON =3D WORKINGSET_ACTIVATE_BASE,=0D WORKINGSET_ACTIVATE_FILE,=0D WORKINGSET_RESTORE_BASE,=0D WORKINGSET_RESTORE_ANON =3D WORKINGSET_RESTORE_BASE,=0D WORKINGSET_RESTORE_FILE,=0D WORKINGSET_NODERECLAIM,=0D NR_ANON_MAPPED,=0D NR_FILE_MAPPED,=0D =0D NR_FILE_PAGES,=0D NR_FILE_DIRTY,=0D NR_WRITEBACK,=0D NR_WRITEBACK_TEMP,=0D NR_SHMEM,=0D NR_SHMEM_THPS,=0D NR_SHMEM_PMDMAPPED,=0D NR_FILE_THPS,=0D NR_FILE_PMDMAPPED,=0D NR_ANON_THPS,=0D NR_VMSCAN_WRITE,=0D NR_VMSCAN_IMMEDIATE,=0D NR_DIRTIED,=0D NR_WRITTEN,=0D NR_THROTTLED_WRITTEN,=0D NR_KERNEL_MISC_RECLAIMABLE,=0D NR_FOLL_PIN_ACQUIRED,=0D NR_FOLL_PIN_RELEASED,=0D NR_KERNEL_STACK_KB,=0D =0D =0D =0D NR_PAGETABLE,=0D =0D NR_SWAPCACHE,=0D =0D =0D =0D =0D NR_VM_NODE_STAT_ITEMS=0D };=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool vmstat_item_print_in_thp(enum node_stat_item item)=0D {=0D if (!1)=0D return false;=0D =0D return item =3D=3D NR_ANON_THPS ||=0D item =3D=3D NR_FILE_THPS ||=0D item =3D=3D NR_SHMEM_THPS ||=0D item =3D=3D NR_SHMEM_PMDMAPPED ||=0D item =3D=3D NR_FILE_PMDMAPPED;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool vmstat_item_in_bytes(int idx)=0D {=0D # 264 "./include/linux/mmzone.h"=0D return (idx =3D=3D NR_SLAB_RECLAIMABLE_B ||=0D idx =3D=3D NR_SLAB_UNRECLAIMABLE_B);=0D }=0D # 281 "./include/linux/mmzone.h"=0D enum lru_list {=0D LRU_INACTIVE_ANON =3D 0,=0D LRU_ACTIVE_ANON =3D 0 + 1,=0D LRU_INACTIVE_FILE =3D 0 + 2,=0D LRU_ACTIVE_FILE =3D 0 + 2 + 1,=0D LRU_UNEVICTABLE,=0D NR_LRU_LISTS=0D };=0D =0D enum vmscan_throttle_state {=0D VMSCAN_THROTTLE_WRITEBACK,=0D VMSCAN_THROTTLE_ISOLATED,=0D VMSCAN_THROTTLE_NOPROGRESS,=0D VMSCAN_THROTTLE_CONGESTED,=0D NR_VMSCAN_THROTTLE,=0D };=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_file_lru(enum lru_li= st lru)=0D {=0D return (lru =3D=3D LRU_INACTIVE_FILE || lru =3D=3D LRU_ACTIVE_FILE);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_active_lru(enum lru_= list lru)=0D {=0D return (lru =3D=3D LRU_ACTIVE_ANON || lru =3D=3D LRU_ACTIVE_FILE);=0D }=0D =0D =0D =0D enum lruvec_flags {=0D LRUVEC_CONGESTED,=0D =0D =0D };=0D =0D struct lruvec {=0D struct list_head lists[NR_LRU_LISTS];=0D =0D spinlock_t lru_lock;=0D =0D =0D =0D =0D =0D unsigned long anon_cost;=0D unsigned long file_cost;=0D =0D atomic_long_t nonresident_age;=0D =0D unsigned long refaults[2];=0D =0D unsigned long flags;=0D =0D =0D =0D };=0D # 350 "./include/linux/mmzone.h"=0D typedef unsigned isolate_mode_t;=0D =0D enum zone_watermarks {=0D WMARK_MIN,=0D WMARK_LOW,=0D WMARK_HIGH,=0D WMARK_PROMO,=0D NR_WMARK=0D };=0D # 384 "./include/linux/mmzone.h"=0D struct per_cpu_pages {=0D int count;=0D int high;=0D int batch;=0D short free_factor;=0D =0D =0D =0D =0D =0D struct list_head lists[(MIGRATE_PCPTYPES * (3 + 1 + 1))];=0D };=0D =0D struct per_cpu_zonestat {=0D =0D s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];=0D s8 stat_threshold;=0D # 410 "./include/linux/mmzone.h"=0D };=0D =0D struct per_cpu_nodestat {=0D s8 stat_threshold;=0D s8 vm_node_stat_diff[NR_VM_NODE_STAT_ITEMS];=0D };=0D =0D =0D =0D enum zone_type {=0D # 434 "./include/linux/mmzone.h"=0D ZONE_DMA32,=0D =0D =0D =0D =0D =0D =0D ZONE_NORMAL,=0D # 502 "./include/linux/mmzone.h"=0D ZONE_MOVABLE,=0D =0D =0D =0D __MAX_NR_ZONES=0D =0D };=0D =0D =0D =0D =0D =0D struct zone {=0D =0D =0D =0D unsigned long _watermark[NR_WMARK];=0D unsigned long watermark_boost;=0D =0D unsigned long nr_reserved_highatomic;=0D # 532 "./include/linux/mmzone.h"=0D long lowmem_reserve[3];=0D =0D =0D =0D =0D struct pglist_data *zone_pgdat;=0D struct per_cpu_pages *per_cpu_pageset;=0D struct per_cpu_zonestat *per_cpu_zonestats;=0D =0D =0D =0D =0D int pageset_high;=0D int pageset_batch;=0D # 556 "./include/linux/mmzone.h"=0D unsigned long zone_start_pfn;=0D # 600 "./include/linux/mmzone.h"=0D atomic_long_t managed_pages;=0D unsigned long spanned_pages;=0D unsigned long present_pages;=0D =0D =0D =0D =0D unsigned long cma_pages;=0D =0D =0D const char *name;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long nr_isolate_pageblock;=0D =0D =0D =0D =0D =0D =0D =0D int initialized;=0D =0D =0D struct zone_padding _pad1_;=0D =0D =0D struct free_area free_area[11];=0D =0D =0D unsigned long flags;=0D =0D =0D spinlock_t lock;=0D =0D =0D struct zone_padding _pad2_;=0D =0D =0D =0D =0D =0D =0D unsigned long percpu_drift_mark;=0D =0D =0D =0D unsigned long compact_cached_free_pfn;=0D =0D unsigned long compact_cached_migrate_pfn[2];=0D unsigned long compact_init_migrate_pfn;=0D unsigned long compact_init_free_pfn;=0D # 666 "./include/linux/mmzone.h"=0D unsigned int compact_considered;=0D unsigned int compact_defer_shift;=0D int compact_order_failed;=0D =0D =0D =0D =0D bool compact_blockskip_flush;=0D =0D =0D bool contiguous;=0D =0D struct zone_padding _pad3_;=0D =0D atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];=0D atomic_long_t vm_numa_event[0];=0D } __attribute__((__aligned__(1 << (6))));=0D =0D enum pgdat_flags {=0D PGDAT_DIRTY,=0D =0D =0D =0D PGDAT_WRITEBACK,=0D =0D =0D PGDAT_RECLAIM_LOCKED,=0D };=0D =0D enum zone_flags {=0D ZONE_BOOSTED_WATERMARK,=0D =0D =0D ZONE_RECLAIM_ACTIVE,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long zone_managed_p= ages(struct zone *zone)=0D {=0D return (unsigned long)atomic_long_read(&zone->managed_pages);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long zone_cma_pages= (struct zone *zone)=0D {=0D =0D return zone->cma_pages;=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long zone_end_pfn(c= onst struct zone *zone)=0D {=0D return zone->zone_start_pfn + zone->spanned_pages;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zone_spans_pfn(const st= ruct zone *zone, unsigned long pfn)=0D {=0D return zone->zone_start_pfn <=3D pfn && pfn < zone_end_pfn(zone);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zone_is_initialized(str= uct zone *zone)=0D {=0D return zone->initialized;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zone_is_empty(struct zo= ne *zone)=0D {=0D return zone->spanned_pages =3D=3D 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zone_intersects(struct = zone *zone,=0D unsigned long start_pfn, unsigned long nr_pages)=0D {=0D if (zone_is_empty(zone))=0D return false;=0D if (start_pfn >=3D zone_end_pfn(zone) ||=0D start_pfn + nr_pages <=3D zone->zone_start_pfn)=0D return false;=0D =0D return true;=0D }=0D # 762 "./include/linux/mmzone.h"=0D enum {=0D ZONELIST_FALLBACK,=0D =0D =0D =0D =0D =0D =0D =0D MAX_ZONELISTS=0D };=0D =0D =0D =0D =0D =0D struct zoneref {=0D struct zone *zone;=0D int zone_idx;=0D };=0D # 797 "./include/linux/mmzone.h"=0D struct zonelist {=0D struct zoneref _zonerefs[((1 << 0) * 3) + 1];=0D };=0D =0D =0D =0D =0D =0D =0D extern struct page *mem_map;=0D =0D =0D struct deferred_split {=0D spinlock_t split_queue_lock;=0D struct list_head split_queue;=0D unsigned long split_queue_len;=0D };=0D # 824 "./include/linux/mmzone.h"=0D typedef struct pglist_data {=0D =0D =0D =0D =0D =0D struct zone node_zones[3];=0D =0D =0D =0D =0D =0D =0D struct zonelist node_zonelists[MAX_ZONELISTS];=0D =0D int nr_zones;=0D # 861 "./include/linux/mmzone.h"=0D unsigned long node_start_pfn;=0D unsigned long node_present_pages;=0D unsigned long node_spanned_pages;=0D =0D int node_id;=0D wait_queue_head_t kswapd_wait;=0D wait_queue_head_t pfmemalloc_wait;=0D =0D =0D wait_queue_head_t reclaim_wait[NR_VMSCAN_THROTTLE];=0D =0D atomic_t nr_writeback_throttled;=0D unsigned long nr_reclaim_start;=0D =0D struct task_struct *kswapd;=0D =0D int kswapd_order;=0D enum zone_type kswapd_highest_zoneidx;=0D =0D int kswapd_failures;=0D =0D =0D int kcompactd_max_order;=0D enum zone_type kcompactd_highest_zoneidx;=0D wait_queue_head_t kcompactd_wait;=0D struct task_struct *kcompactd;=0D bool proactive_compact_trigger;=0D =0D =0D =0D =0D =0D unsigned long totalreserve_pages;=0D # 904 "./include/linux/mmzone.h"=0D struct zone_padding _pad1_;=0D # 915 "./include/linux/mmzone.h"=0D struct deferred_split deferred_split_queue;=0D # 925 "./include/linux/mmzone.h"=0D struct lruvec __lruvec;=0D =0D unsigned long flags;=0D =0D struct zone_padding _pad2_;=0D =0D =0D struct per_cpu_nodestat *per_cpu_nodestats;=0D atomic_long_t vm_stat[NR_VM_NODE_STAT_ITEMS];=0D } pg_data_t;=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pgdat_end_pfn(= pg_data_t *pgdat)=0D {=0D return pgdat->node_start_pfn + pgdat->node_spanned_pages;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pgdat_is_empty(pg_data_= t *pgdat)=0D {=0D return !pgdat->node_start_pfn && !pgdat->node_spanned_pages;=0D }=0D =0D =0D # 1 "./include/linux/memory_hotplug.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/mmzone.h" 1=0D # 6 "./include/linux/memory_hotplug.h" 2=0D =0D # 1 "./include/linux/notifier.h" 1=0D # 16 "./include/linux/notifier.h"=0D # 1 "./include/linux/srcu.h" 1=0D # 22 "./include/linux/srcu.h"=0D # 1 "./include/linux/rcu_segcblist.h" 1=0D # 21 "./include/linux/rcu_segcblist.h"=0D struct rcu_cblist {=0D struct callback_head *head;=0D struct callback_head **tail;=0D long len;=0D };=0D # 206 "./include/linux/rcu_segcblist.h"=0D struct rcu_segcblist {=0D struct callback_head *head;=0D struct callback_head **tails[4];=0D unsigned long gp_seq[4];=0D =0D =0D =0D long len;=0D =0D long seglen[4];=0D u8 flags;=0D };=0D # 23 "./include/linux/srcu.h" 2=0D =0D struct srcu_struct;=0D =0D =0D =0D int __init_srcu_struct(struct srcu_struct *ssp, const char *name,=0D struct lock_class_key *key);=0D # 49 "./include/linux/srcu.h"=0D # 1 "./include/linux/srcutree.h" 1=0D # 14 "./include/linux/srcutree.h"=0D # 1 "./include/linux/rcu_node_tree.h" 1=0D # 15 "./include/linux/srcutree.h" 2=0D =0D =0D struct srcu_node;=0D struct srcu_struct;=0D =0D =0D =0D =0D =0D struct srcu_data {=0D =0D unsigned long srcu_lock_count[2];=0D unsigned long srcu_unlock_count[2];=0D =0D =0D spinlock_t lock __attribute__((__aligned__(1 << (6))));=0D struct rcu_segcblist srcu_cblist;=0D unsigned long srcu_gp_seq_needed;=0D unsigned long srcu_gp_seq_needed_exp;=0D bool srcu_cblist_invoking;=0D struct timer_list delay_work;=0D struct work_struct work;=0D struct callback_head srcu_barrier_head;=0D struct srcu_node *mynode;=0D unsigned long grpmask;=0D =0D int cpu;=0D struct srcu_struct *ssp;=0D };=0D =0D =0D =0D =0D struct srcu_node {=0D spinlock_t lock;=0D unsigned long srcu_have_cbs[4];=0D =0D =0D unsigned long srcu_data_have_cbs[4];=0D =0D unsigned long srcu_gp_seq_needed_exp;=0D struct srcu_node *srcu_parent;=0D int grplo;=0D int grphi;=0D };=0D =0D =0D =0D =0D struct srcu_struct {=0D struct srcu_node node[(1 + (((32) + ((16)) - 1) / ((16))))];=0D struct srcu_node *level[2 + 1];=0D =0D struct mutex srcu_cb_mutex;=0D spinlock_t lock;=0D struct mutex srcu_gp_mutex;=0D unsigned int srcu_idx;=0D unsigned long srcu_gp_seq;=0D unsigned long srcu_gp_seq_needed;=0D unsigned long srcu_gp_seq_needed_exp;=0D unsigned long srcu_last_gp_end;=0D struct srcu_data *sda;=0D unsigned long srcu_barrier_seq;=0D struct mutex srcu_barrier_mutex;=0D struct completion srcu_barrier_completion;=0D =0D atomic_t srcu_barrier_cpu_cnt;=0D =0D =0D struct delayed_work work;=0D struct lockdep_map dep_map;=0D };=0D # 135 "./include/linux/srcutree.h"=0D void synchronize_srcu_expedited(struct srcu_struct *ssp);=0D void srcu_barrier(struct srcu_struct *ssp);=0D void srcu_torture_stats_print(struct srcu_struct *ssp, char *tt, char *tf);= =0D # 50 "./include/linux/srcu.h" 2=0D =0D =0D =0D =0D =0D =0D =0D void call_srcu(struct srcu_struct *ssp, struct callback_head *head,=0D void (*func)(struct callback_head *head));=0D void cleanup_srcu_struct(struct srcu_struct *ssp);=0D int __srcu_read_lock(struct srcu_struct *ssp) ;=0D void __srcu_read_unlock(struct srcu_struct *ssp, int idx) ;=0D void synchronize_srcu(struct srcu_struct *ssp);=0D unsigned long get_state_synchronize_srcu(struct srcu_struct *ssp);=0D unsigned long start_poll_synchronize_srcu(struct srcu_struct *ssp);=0D bool poll_state_synchronize_srcu(struct srcu_struct *ssp, unsigned long coo= kie);=0D =0D =0D void srcu_init(void);=0D # 91 "./include/linux/srcu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int srcu_read_lock_held(cons= t struct srcu_struct *ssp)=0D {=0D if (!debug_lockdep_rcu_enabled())=0D return 1;=0D return lock_is_held(&ssp->dep_map);=0D }=0D # 160 "./include/linux/srcu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int srcu_read_lock(struct sr= cu_struct *ssp)=0D {=0D int retval;=0D =0D retval =3D __srcu_read_lock(ssp);=0D rcu_lock_acquire(&(ssp)->dep_map);=0D return retval;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((patchable_fun= ction_entry(0, 0))) int=0D srcu_read_lock_notrace(struct srcu_struct *ssp)=0D {=0D int retval;=0D =0D retval =3D __srcu_read_lock(ssp);=0D return retval;=0D }=0D # 186 "./include/linux/srcu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void srcu_read_unlock(struct= srcu_struct *ssp, int idx)=0D =0D {=0D ({ int __ret_warn_on =3D !!(idx & ~0x1); if (__builtin_expect(!!(__ret_war= n_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __= bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b"= "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsect= ion" : : "i" ("include/linux/srcu.h"), "i" (189), "i" ((1 << 0)|((1 << 1) |= ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expe= ct(!!(__ret_warn_on), 0); });=0D rcu_lock_release(&(ssp)->dep_map);=0D __srcu_read_unlock(ssp, idx);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((patchable_fun= ction_entry(0, 0))) void=0D srcu_read_unlock_notrace(struct srcu_struct *ssp, int idx)=0D {=0D __srcu_read_unlock(ssp, idx);=0D }=0D # 210 "./include/linux/srcu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void smp_mb__after_srcu_read= _unlock(void)=0D {=0D =0D }=0D # 17 "./include/linux/notifier.h" 2=0D # 49 "./include/linux/notifier.h"=0D struct notifier_block;=0D =0D typedef int (*notifier_fn_t)(struct notifier_block *nb,=0D unsigned long action, void *data);=0D =0D struct notifier_block {=0D notifier_fn_t notifier_call;=0D struct notifier_block *next;=0D int priority;=0D };=0D =0D struct atomic_notifier_head {=0D spinlock_t lock;=0D struct notifier_block *head;=0D };=0D =0D struct blocking_notifier_head {=0D struct rw_semaphore rwsem;=0D struct notifier_block *head;=0D };=0D =0D struct raw_notifier_head {=0D struct notifier_block *head;=0D };=0D =0D struct srcu_notifier_head {=0D struct mutex mutex;=0D struct srcu_struct srcu;=0D struct notifier_block *head;=0D };=0D # 93 "./include/linux/notifier.h"=0D extern void srcu_init_notifier_head(struct srcu_notifier_head *nh);=0D # 144 "./include/linux/notifier.h"=0D extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh,= =0D struct notifier_block *nb);=0D extern int blocking_notifier_chain_register(struct blocking_notifier_head *= nh,=0D struct notifier_block *nb);=0D extern int raw_notifier_chain_register(struct raw_notifier_head *nh,=0D struct notifier_block *nb);=0D extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh,=0D struct notifier_block *nb);=0D =0D extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh= ,=0D struct notifier_block *nb);=0D extern int blocking_notifier_chain_unregister(struct blocking_notifier_head= *nh,=0D struct notifier_block *nb);=0D extern int raw_notifier_chain_unregister(struct raw_notifier_head *nh,=0D struct notifier_block *nb);=0D extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh,=0D struct notifier_block *nb);=0D =0D extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh,=0D unsigned long val, void *v);=0D extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh,= =0D unsigned long val, void *v);=0D extern int raw_notifier_call_chain(struct raw_notifier_head *nh,=0D unsigned long val, void *v);=0D extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh,=0D unsigned long val, void *v);=0D =0D extern int blocking_notifier_call_chain_robust(struct blocking_notifier_hea= d *nh,=0D unsigned long val_up, unsigned long val_down, void *v);=0D extern int raw_notifier_call_chain_robust(struct raw_notifier_head *nh,=0D unsigned long val_up, unsigned long val_down, void *v);=0D # 187 "./include/linux/notifier.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int notifier_from_errno(int = err)=0D {=0D if (err)=0D return 0x8000 | (0x0001 - err);=0D =0D return 0x0001;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int notifier_to_errno(int re= t)=0D {=0D ret &=3D ~0x8000;=0D return ret > 0x0001 ? 0x0001 - ret : 0;=0D }=0D # 231 "./include/linux/notifier.h"=0D extern struct blocking_notifier_head reboot_notifier_list;=0D # 8 "./include/linux/memory_hotplug.h" 2=0D =0D =0D struct page;=0D struct zone;=0D struct pglist_data;=0D struct mem_section;=0D struct memory_block;=0D struct memory_group;=0D struct resource;=0D struct vmem_altmap;=0D # 61 "./include/linux/memory_hotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pg_data_t *generic_alloc_nod= edata(int nid)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/memory_hotplug.h"), "i" (63), "i" (0), "i" (sizeof(= struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (= 0); } while (0);=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void generic_free_nodedata(p= g_data_t *pgdat)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_refresh_nodedata(i= nt nid, pg_data_t *pgdat)=0D {=0D }=0D # 226 "./include/linux/memory_hotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned zone_span_seqbegin(= struct zone *zone)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int zone_span_seqretry(struc= t zone *zone, unsigned iv)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_span_writelock(str= uct zone *zone) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_span_writeunlock(s= truct zone *zone) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_seqlock_init(struc= t zone *zone) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int try_online_node(int nid)= =0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void get_online_mems(void) {= }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_online_mems(void) {= }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_hotplug_begin(void)= {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_hotplug_done(void) = {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool movable_node_is_enabled= (void)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D =0D =0D =0D struct range arch_get_mappable_range(void);=0D # 285 "./include/linux/memory_hotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgdat_resize_lock(struc= t pglist_data *p, unsigned long *f) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgdat_resize_unlock(str= uct pglist_data *p, unsigned long *f) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgdat_resize_init(struc= t pglist_data *pgdat) {}=0D # 300 "./include/linux/memory_hotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void try_offline_node(int ni= d) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int offline_pages(unsigned l= ong start_pfn, unsigned long nr_pages,=0D struct zone *zone, struct memory_group *group)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int remove_memory(u64 start,= u64 size)=0D {=0D return -16;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __remove_memory(u64 sta= rt, u64 size) {}=0D =0D =0D extern void set_zone_contiguous(struct zone *zone);=0D extern void clear_zone_contiguous(struct zone *zone);=0D # 953 "./include/linux/mmzone.h" 2=0D =0D void build_all_zonelists(pg_data_t *pgdat);=0D void wakeup_kswapd(struct zone *zone, gfp_t gfp_mask, int order,=0D enum zone_type highest_zoneidx);=0D bool __zone_watermark_ok(struct zone *z, unsigned int order, unsigned long = mark,=0D int highest_zoneidx, unsigned int alloc_flags,=0D long free_pages);=0D bool zone_watermark_ok(struct zone *z, unsigned int order,=0D unsigned long mark, int highest_zoneidx,=0D unsigned int alloc_flags);=0D bool zone_watermark_ok_safe(struct zone *z, unsigned int order,=0D unsigned long mark, int highest_zoneidx);=0D =0D =0D =0D =0D enum meminit_context {=0D MEMINIT_EARLY,=0D MEMINIT_HOTPLUG,=0D };=0D =0D extern void init_currently_empty_zone(struct zone *zone, unsigned long star= t_pfn,=0D unsigned long size);=0D =0D extern void lruvec_init(struct lruvec *lruvec);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pglist_data *lruvec_p= gdat(struct lruvec *lruvec)=0D {=0D =0D =0D =0D return ({ void *__mptr =3D (void *)(lruvec); _Static_assert(__builtin_type= s_compatible_p(typeof(*(lruvec)), typeof(((struct pglist_data *)0)->__lruve= c)) || __builtin_types_compatible_p(typeof(*(lruvec)), typeof(void)), "poin= ter type mismatch in container_of()"); ((struct pglist_data *)(__mptr - __b= uiltin_offsetof(struct pglist_data, __lruvec))); });=0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int local_memory_node(int no= de_id) { return node_id; };=0D # 1005 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool zone_is_zone_device(str= uct zone *zone)=0D {=0D return false;=0D }=0D # 1017 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool managed_zone(struct zon= e *zone)=0D {=0D return zone_managed_pages(zone);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool populated_zone(struct z= one *zone)=0D {=0D return zone->present_pages;=0D }=0D # 1039 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int zone_to_nid(struct zone = *zone)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_set_nid(struct zon= e *zone, int nid) {}=0D =0D =0D extern int movable_zone;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_highmem_idx(enum zone= _type idx)=0D {=0D =0D =0D =0D =0D return 0;=0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool has_managed_dma(void)=0D {=0D return false;=0D }=0D # 1075 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_highmem(struct zone *= zone)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D =0D struct ctl_table;=0D =0D int min_free_kbytes_sysctl_handler(struct ctl_table *, int, void *, size_t = *,=0D loff_t *);=0D int watermark_scale_factor_sysctl_handler(struct ctl_table *, int, void *,= =0D size_t *, loff_t *);=0D extern int sysctl_lowmem_reserve_ratio[3];=0D int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, void *,=0D size_t *, loff_t *);=0D int percpu_pagelist_high_fraction_sysctl_handler(struct ctl_table *, int,=0D void *, size_t *, loff_t *);=0D int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int,=0D void *, size_t *, loff_t *);=0D int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int,=0D void *, size_t *, loff_t *);=0D int numa_zonelist_order_handler(struct ctl_table *, int,=0D void *, size_t *, loff_t *);=0D extern int percpu_pagelist_high_fraction;=0D extern char numa_zonelist_order[];=0D =0D =0D =0D =0D extern struct pglist_data contig_page_data;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pglist_data *NODE_DAT= A(int nid)=0D {=0D return &contig_page_data;=0D }=0D =0D =0D =0D =0D =0D =0D =0D extern struct pglist_data *first_online_pgdat(void);=0D extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat);=0D extern struct zone *next_zone(struct zone *zone);=0D # 1152 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct zone *zonelist_zone(s= truct zoneref *zoneref)=0D {=0D return zoneref->zone;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int zonelist_zone_idx(struct= zoneref *zoneref)=0D {=0D return zoneref->zone_idx;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int zonelist_node_idx(struct= zoneref *zoneref)=0D {=0D return zone_to_nid(zoneref->zone);=0D }=0D =0D struct zoneref *__next_zones_zonelist(struct zoneref *z,=0D enum zone_type highest_zoneidx,=0D nodemask_t *nodes);=0D # 1186 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct zoneref *next_zones_zonelist(struct zoneref *z,=0D enum zone_type highest_zoneidx,=0D nodemask_t *nodes)=0D {=0D if (__builtin_expect(!!(!nodes && zonelist_zone_idx(z) <=3D highest_zoneid= x), 1))=0D return z;=0D return __next_zones_zonelist(z, highest_zoneidx, nodes);=0D }=0D # 1212 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct zoneref *first_zones_= zonelist(struct zonelist *zonelist,=0D enum zone_type highest_zoneidx,=0D nodemask_t *nodes)=0D {=0D return next_zones_zonelist(zonelist->_zonerefs,=0D highest_zoneidx, nodes);=0D }=0D # 1257 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool movable_only_nodes(node= mask_t *nodes)=0D {=0D struct zonelist *zonelist;=0D struct zoneref *z;=0D int nid;=0D =0D if (__nodes_empty(&(*nodes), (1 << 0)))=0D return false;=0D =0D =0D =0D =0D =0D =0D nid =3D __first_node(&(*nodes));=0D zonelist =3D &NODE_DATA(nid)->node_zonelists[ZONELIST_FALLBACK];=0D z =3D first_zones_zonelist(zonelist, ZONE_NORMAL, nodes);=0D return (!z->zone) ? true : false;=0D }=0D # 1307 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pfn_to_section= _nr(unsigned long pfn)=0D {=0D return pfn >> (27 - (12));=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long section_nr_to_= pfn(unsigned long sec)=0D {=0D return sec << (27 - (12));=0D }=0D # 1335 "./include/linux/mmzone.h"=0D struct mem_section_usage {=0D =0D unsigned long subsection_map[((((1UL << (27 - 21))) + ((sizeof(long) * 8))= - 1) / ((sizeof(long) * 8)))];=0D =0D =0D unsigned long pageblock_flags[0];=0D };=0D =0D void subsection_map_init(unsigned long pfn, unsigned long nr_pages);=0D =0D struct page;=0D struct page_ext;=0D struct mem_section {=0D # 1360 "./include/linux/mmzone.h"=0D unsigned long section_mem_map;=0D =0D struct mem_section_usage *usage;=0D =0D =0D =0D =0D =0D struct page_ext *page_ext;=0D unsigned long pad;=0D =0D =0D =0D =0D =0D };=0D # 1388 "./include/linux/mmzone.h"=0D extern struct mem_section **mem_section;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long *section_to_us= emap(struct mem_section *ms)=0D {=0D return ms->usage->pageblock_flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_section *__nr_to_= section(unsigned long nr)=0D {=0D unsigned long root =3D ((nr) / (((1UL) << (12)) / sizeof (struct mem_secti= on)));=0D =0D if (__builtin_expect(!!(root >=3D ((((1UL << (56 - 27))) + ((((1UL) << (12= )) / sizeof (struct mem_section))) - 1) / ((((1UL) << (12)) / sizeof (struc= t mem_section))))), 0))=0D return ((void *)0);=0D =0D =0D if (!mem_section || !mem_section[root])=0D return ((void *)0);=0D =0D return &mem_section[root][nr & ((((1UL) << (12)) / sizeof (struct mem_sect= ion)) - 1)];=0D }=0D extern size_t mem_section_usage_size(void);=0D # 1435 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *__section_mem_m= ap_addr(struct mem_section *section)=0D {=0D unsigned long map =3D section->section_mem_map;=0D map &=3D (~((1UL<<5)-1));=0D return (struct page *)map;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int present_section(struct m= em_section *section)=0D {=0D return (section && (section->section_mem_map & (1UL<<0)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int present_section_nr(unsig= ned long nr)=0D {=0D return present_section(__nr_to_section(nr));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int valid_section(struct mem= _section *section)=0D {=0D return (section && (section->section_mem_map & (1UL<<1)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int early_section(struct mem= _section *section)=0D {=0D return (section && (section->section_mem_map & (1UL<<3)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int valid_section_nr(unsigne= d long nr)=0D {=0D return valid_section(__nr_to_section(nr));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int online_section(struct me= m_section *section)=0D {=0D return (section && (section->section_mem_map & (1UL<<2)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int online_device_section(st= ruct mem_section *section)=0D {=0D unsigned long flags =3D (1UL<<2) | (1UL<<4);=0D =0D return section && ((section->section_mem_map & flags) =3D=3D flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int online_section_nr(unsign= ed long nr)=0D {=0D return online_section(__nr_to_section(nr));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_section *__pfn_to= _section(unsigned long pfn)=0D {=0D return __nr_to_section(pfn_to_section_nr(pfn));=0D }=0D =0D extern unsigned long __highest_present_section_nr;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int subsection_map_index(uns= igned long pfn)=0D {=0D return (pfn & ~((~((1UL << (27 - (12)))-1)))) / (1UL << (21 - (12)));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pfn_section_valid(struct= mem_section *ms, unsigned long pfn)=0D {=0D int idx =3D subsection_map_index(pfn);=0D =0D return arch_test_bit(idx, ms->usage->subsection_map);=0D }=0D # 1527 "./include/linux/mmzone.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pfn_valid(unsigned long = pfn)=0D {=0D struct mem_section *ms;=0D =0D =0D =0D =0D =0D =0D =0D if (((unsigned long)((((phys_addr_t)(pfn) << (12))) >> (12))) !=3D pfn)=0D return 0;=0D =0D if (pfn_to_section_nr(pfn) >=3D (1UL << (56 - 27)))=0D return 0;=0D ms =3D __pfn_to_section(pfn);=0D if (!valid_section(ms))=0D return 0;=0D =0D =0D =0D =0D return early_section(ms) || pfn_section_valid(ms, pfn);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pfn_in_present_section(u= nsigned long pfn)=0D {=0D if (pfn_to_section_nr(pfn) >=3D (1UL << (56 - 27)))=0D return 0;=0D return present_section(__pfn_to_section(pfn));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long next_present_s= ection_nr(unsigned long section_nr)=0D {=0D while (++section_nr <=3D __highest_present_section_nr) {=0D if (present_section_nr(section_nr))=0D return section_nr;=0D }=0D =0D return -1;=0D }=0D # 1585 "./include/linux/mmzone.h"=0D void sparse_init(void);=0D # 7 "./include/linux/gfp.h" 2=0D =0D =0D # 1 "./include/linux/topology.h" 1=0D # 30 "./include/linux/topology.h"=0D # 1 "./include/linux/arch_topology.h" 1=0D # 11 "./include/linux/arch_topology.h"=0D void topology_normalize_cpu_scale(void);=0D int topology_update_cpu_topology(void);=0D =0D =0D =0D =0D =0D struct device_node;=0D bool topology_parse_cpu_capacity(struct device_node *cpu_node, int cpu);=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned lon= g) cpu_scale;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long topology_get_c= pu_scale(int cpu)=0D {=0D return (*({ do { const void *__vpp_verify =3D (typeof((&(cpu_scale)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*((&(cpu_scale)))) *)((&(cpu_scale)))); (type= of((typeof(*((&(cpu_scale)))) *)((&(cpu_scale))))) (__ptr + (((__per_cpu_of= fset[(cpu)])))); }); }));=0D }=0D =0D void topology_set_cpu_scale(unsigned int cpu, unsigned long capacity);=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned lon= g) arch_freq_scale;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long topology_get_f= req_scale(int cpu)=0D {=0D return (*({ do { const void *__vpp_verify =3D (typeof((&(arch_freq_scale))= + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr;= __ptr =3D (unsigned long) ((typeof(*((&(arch_freq_scale)))) *)((&(arch_fre= q_scale)))); (typeof((typeof(*((&(arch_freq_scale)))) *)((&(arch_freq_scale= ))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); }));=0D }=0D =0D void topology_set_freq_scale(const struct cpumask *cpus, unsigned long cur_= freq,=0D unsigned long max_freq);=0D bool topology_scale_freq_invariant(void);=0D =0D enum scale_freq_source {=0D SCALE_FREQ_SOURCE_CPUFREQ =3D 0,=0D SCALE_FREQ_SOURCE_ARCH,=0D SCALE_FREQ_SOURCE_CPPC,=0D };=0D =0D struct scale_freq_data {=0D enum scale_freq_source source;=0D void (*set_freq_scale)(void);=0D };=0D =0D void topology_scale_freq_tick(void);=0D void topology_set_scale_freq_source(struct scale_freq_data *data, const str= uct cpumask *cpus);=0D void topology_clear_scale_freq_source(enum scale_freq_source source, const = struct cpumask *cpus);=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned lon= g) thermal_pressure;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long topology_get_t= hermal_pressure(int cpu)=0D {=0D return (*({ do { const void *__vpp_verify =3D (typeof((&(thermal_pressure)= ) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr= ; __ptr =3D (unsigned long) ((typeof(*((&(thermal_pressure)))) *)((&(therma= l_pressure)))); (typeof((typeof(*((&(thermal_pressure)))) *)((&(thermal_pre= ssure))))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); }));=0D }=0D =0D void topology_update_thermal_pressure(const struct cpumask *cpus,=0D unsigned long capped_freq);=0D =0D struct cpu_topology {=0D int thread_id;=0D int core_id;=0D int cluster_id;=0D int package_id;=0D int llc_id;=0D cpumask_t thread_sibling;=0D cpumask_t core_sibling;=0D cpumask_t cluster_sibling;=0D cpumask_t llc_sibling;=0D };=0D =0D =0D extern struct cpu_topology cpu_topology[32];=0D # 88 "./include/linux/arch_topology.h"=0D void init_cpu_topology(void);=0D void store_cpu_topology(unsigned int cpuid);=0D const struct cpumask *cpu_coregroup_mask(int cpu);=0D const struct cpumask *cpu_clustergroup_mask(int cpu);=0D void update_siblings_masks(unsigned int cpu);=0D void remove_cpu_topology(unsigned int cpuid);=0D void reset_cpu_topology(void);=0D int parse_acpi_topology(void);=0D # 31 "./include/linux/topology.h" 2=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/topology.h" 1=0D # 1 "./include/asm-generic/topology.h" 1=0D # 2 "./arch/riscv/include/generated/asm/topology.h" 2=0D # 37 "./include/linux/topology.h" 2=0D # 46 "./include/linux/topology.h"=0D int arch_update_cpu_topology(void);=0D # 76 "./include/linux/topology.h"=0D extern int node_reclaim_distance;=0D # 118 "./include/linux/topology.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int numa_node_id(void)=0D {=0D return ((void)((((struct thread_info *)get_current())->cpu)),0);=0D }=0D # 168 "./include/linux/topology.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int numa_mem_id(void)=0D {=0D return numa_node_id();=0D }=0D # 250 "./include/linux/topology.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct cpumask *cpu_cp= u_mask(int cpu)=0D {=0D return ((void)(((void)(cpu),0)), ((const struct cpumask *)&__cpu_online_ma= sk));=0D }=0D # 10 "./include/linux/gfp.h" 2=0D # 25 "./include/linux/gfp.h"=0D struct vm_area_struct;=0D # 360 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int gfp_migratetype(const gf= p_t gfp_flags)=0D {=0D (void)({ int __ret_warn_on =3D !!((gfp_flags & ((( gfp_t)0x10u)|(( gfp_t)0= x08u))) =3D=3D ((( gfp_t)0x10u)|(( gfp_t)0x08u))); if (__builtin_expect(!!(= __ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/gfp.h"), "i" (362), "i" ((1 << 0)|(((= 9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(= !!(__ret_warn_on), 0); });=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_155(vo= id) ; if (!(!((1UL << 3) !=3D 0x08u))) __compiletime_assert_155(); } while = (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_156(vo= id) ; if (!(!((0x08u >> 3) !=3D MIGRATE_MOVABLE))) __compiletime_assert_156= (); } while (0);=0D =0D if (__builtin_expect(!!(page_group_by_mobility_disabled), 0))=0D return MIGRATE_UNMOVABLE;=0D =0D =0D return (gfp_flags & ((( gfp_t)0x10u)|(( gfp_t)0x08u))) >> 3;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gfpflags_allow_blocking= (const gfp_t gfp_flags)=0D {=0D return !!(gfp_flags & (( gfp_t)0x400u));=0D }=0D # 397 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool gfpflags_normal_context= (const gfp_t gfp_flags)=0D {=0D return (gfp_flags & ((( gfp_t)0x400u) | (( gfp_t)0x20000u))) =3D=3D=0D (( gfp_t)0x400u);=0D }=0D # 493 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum zone_type gfp_zone(gfp_= t flags)=0D {=0D enum zone_type z;=0D int bit =3D ( int) (flags & ((( gfp_t)0x01u)|(( gfp_t)0x02u)|(( gfp_t)0x04= u)|(( gfp_t)0x08u)));=0D =0D z =3D (( (ZONE_NORMAL << 0 * 2) | (ZONE_NORMAL << 0x01u * 2) | (ZONE_NORMA= L << 0x02u * 2) | (ZONE_DMA32 << 0x04u * 2) | (ZONE_NORMAL << 0x08u * 2) | = (ZONE_NORMAL << (0x08u | 0x01u) * 2) | (ZONE_MOVABLE << (0x08u | 0x02u) * 2= ) | (ZONE_DMA32 << (0x08u | 0x04u) * 2)) >> (bit * 2)) &=0D ((1 << 2) - 1);=0D do { if (__builtin_expect(!!((( 1 << (0x01u | 0x02u) | 1 << (0x01u | 0x04u= ) | 1 << (0x04u | 0x02u) | 1 << (0x01u | 0x04u | 0x02u) | 1 << (0x08u | 0x0= 2u | 0x01u) | 1 << (0x08u | 0x04u | 0x01u) | 1 << (0x08u | 0x04u | 0x02u) |= 1 << (0x08u | 0x04u | 0x01u | 0x02u) ) >> bit) & 1), 0)) do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/gfp.h"), "i" (500), "i" (0), "i" (sizeof(struct bug_entry))); } while= (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while (0)= ;=0D return z;=0D }=0D # 511 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int gfp_zonelist(gfp_t flags= )=0D {=0D =0D =0D =0D =0D return ZONELIST_FALLBACK;=0D }=0D # 529 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct zonelist *node_zoneli= st(int nid, gfp_t flags)=0D {=0D return NODE_DATA(nid)->node_zonelists + gfp_zonelist(flags);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_free_page(struct p= age *page, int order) { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_alloc_page(struct = page *page, int order) { }=0D =0D =0D struct page *__alloc_pages(gfp_t gfp, unsigned int order, int preferred_nid= ,=0D nodemask_t *nodemask);=0D struct folio *__folio_alloc(gfp_t gfp, unsigned int order, int preferred_ni= d,=0D nodemask_t *nodemask);=0D =0D unsigned long __alloc_pages_bulk(gfp_t gfp, int preferred_nid,=0D nodemask_t *nodemask, int nr_pages,=0D struct list_head *page_list,=0D struct page **page_array);=0D =0D unsigned long alloc_pages_bulk_array_mempolicy(gfp_t gfp,=0D unsigned long nr_pages,=0D struct page **page_array);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D alloc_pages_bulk_list(gfp_t gfp, unsigned long nr_pages, struct list_head *= list)=0D {=0D return __alloc_pages_bulk(gfp, numa_mem_id(), ((void *)0), nr_pages, list,= ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D alloc_pages_bulk_array(gfp_t gfp, unsigned long nr_pages, struct page **pag= e_array)=0D {=0D return __alloc_pages_bulk(gfp, numa_mem_id(), ((void *)0), nr_pages, ((voi= d *)0), page_array);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D alloc_pages_bulk_array_node(gfp_t gfp, int nid, unsigned long nr_pages, str= uct page **page_array)=0D {=0D if (nid =3D=3D (-1))=0D nid =3D numa_mem_id();=0D =0D return __alloc_pages_bulk(gfp, nid, ((void *)0), nr_pages, ((void *)0), pa= ge_array);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *=0D __alloc_pages_node(int nid, gfp_t gfp_mask, unsigned int order)=0D {=0D do { if (__builtin_expect(!!(nid < 0 || nid >=3D (1 << 0)), 0)) do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/gfp.h"), "i" (584), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } wh= ile (0);=0D (void)({ int __ret_warn_on =3D !!((gfp_mask & (( gfp_t)0x200000u)) && !nod= e_state((nid), N_ONLINE)); if (__builtin_expect(!!(__ret_warn_on), 0)) do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/gfp.h"), "i" (585), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(= struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }= );=0D =0D return __alloc_pages(gfp_mask, order, nid, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct folio *__folio_alloc_node(gfp_t gfp, unsigned int order, int nid)=0D {=0D do { if (__builtin_expect(!!(nid < 0 || nid >=3D (1 << 0)), 0)) do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/gfp.h"), "i" (593), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } wh= ile (0);=0D (void)({ int __ret_warn_on =3D !!((gfp & (( gfp_t)0x200000u)) && !node_sta= te((nid), N_ONLINE)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/gfp.h"), "i" (594), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struc= t bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D return __folio_alloc(gfp, order, nid, ((void *)0));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *alloc_pages_nod= e(int nid, gfp_t gfp_mask,=0D unsigned int order)=0D {=0D if (nid =3D=3D (-1))=0D nid =3D numa_mem_id();=0D =0D return __alloc_pages_node(nid, gfp_mask, order);=0D }=0D # 624 "./include/linux/gfp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *alloc_pages(gfp= _t gfp_mask, unsigned int order)=0D {=0D return alloc_pages_node(numa_node_id(), gfp_mask, order);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct folio *folio_alloc(gf= p_t gfp, unsigned int order)=0D {=0D return __folio_alloc_node(gfp, order, numa_node_id());=0D }=0D # 643 "./include/linux/gfp.h"=0D extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order);= =0D extern unsigned long get_zeroed_page(gfp_t gfp_mask);=0D =0D void *alloc_pages_exact(size_t size, gfp_t gfp_mask) __attribute__((__alloc= _size__(1))) __attribute__((__malloc__));=0D void free_pages_exact(void *virt, size_t size);=0D __attribute__((__section__(".meminit.text"))) __attribute__((__cold__)) __a= ttribute__((patchable_function_entry(0, 0))) void *alloc_pages_exact_nid(in= t nid, size_t size, gfp_t gfp_mask) __attribute__((__alloc_size__(2))) __at= tribute__((__malloc__));=0D =0D =0D =0D =0D =0D =0D =0D extern void __free_pages(struct page *page, unsigned int order);=0D extern void free_pages(unsigned long addr, unsigned int order);=0D =0D struct page_frag_cache;=0D extern void __page_frag_cache_drain(struct page *page, unsigned int count);= =0D extern void *page_frag_alloc_align(struct page_frag_cache *nc,=0D unsigned int fragsz, gfp_t gfp_mask,=0D unsigned int align_mask);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *page_frag_alloc(struct= page_frag_cache *nc,=0D unsigned int fragsz, gfp_t gfp_mask)=0D {=0D return page_frag_alloc_align(nc, fragsz, gfp_mask, ~0u);=0D }=0D =0D extern void page_frag_free(void *addr);=0D =0D =0D =0D =0D void page_alloc_init(void);=0D void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp);=0D void drain_all_pages(struct zone *zone);=0D void drain_local_pages(struct zone *zone);=0D =0D void page_alloc_init_late(void);=0D # 690 "./include/linux/gfp.h"=0D extern gfp_t gfp_allowed_mask;=0D =0D =0D bool gfp_pfmemalloc_allowed(gfp_t gfp_mask);=0D =0D extern void pm_restrict_gfp_mask(void);=0D extern void pm_restore_gfp_mask(void);=0D =0D extern gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pm_suspended_storage(vo= id)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D extern int alloc_contig_range(unsigned long start, unsigned long end,=0D unsigned migratetype, gfp_t gfp_mask);=0D extern struct page *alloc_contig_pages(unsigned long nr_pages, gfp_t gfp_ma= sk,=0D int nid, nodemask_t *nodemask);=0D =0D void free_contig_range(unsigned long pfn, unsigned long nr_pages);=0D =0D =0D =0D extern void init_cma_reserved_pageblock(struct page *page);=0D # 16 "./include/linux/xarray.h" 2=0D # 53 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_mk_value(unsigned l= ong v)=0D {=0D ({ int __ret_warn_on =3D !!((long)v < 0); if (__builtin_expect(!!(__ret_wa= rn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection _= _bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b= " "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsec= tion" : : "i" ("include/linux/xarray.h"), "i" (55), "i" ((1 << 0)|(((9) << = 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__r= et_warn_on), 0); });=0D return (void *)((v << 1) | 1);=0D }=0D # 66 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long xa_to_value(co= nst void *entry)=0D {=0D return (unsigned long)entry >> 1;=0D }=0D # 78 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_value(const void = *entry)=0D {=0D return (unsigned long)entry & 1;=0D }=0D # 96 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_tag_pointer(void *p= , unsigned long tag)=0D {=0D return (void *)((unsigned long)p | tag);=0D }=0D # 111 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_untag_pointer(void = *entry)=0D {=0D return (void *)((unsigned long)entry & ~3UL);=0D }=0D # 126 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int xa_pointer_tag(= void *entry)=0D {=0D return (unsigned long)entry & 3UL;=0D }=0D # 144 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_mk_internal(unsigne= d long v)=0D {=0D return (void *)((v << 2) | 2);=0D }=0D # 156 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long xa_to_internal= (const void *entry)=0D {=0D return (unsigned long)entry >> 2;=0D }=0D # 168 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_internal(const vo= id *entry)=0D {=0D return ((unsigned long)entry & 3) =3D=3D 2;=0D }=0D # 184 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_zero(const void *= entry)=0D {=0D return __builtin_expect(!!(entry =3D=3D xa_mk_internal(257)), 0);=0D }=0D # 200 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_err(const void *e= ntry)=0D {=0D return __builtin_expect(!!(xa_is_internal(entry) && entry >=3D xa_mk_inter= nal(-4095)), 0);=0D =0D }=0D # 218 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xa_err(void *entry)=0D {=0D =0D if (xa_is_err(entry))=0D return (long)entry >> 2;=0D return 0;=0D }=0D # 238 "./include/linux/xarray.h"=0D struct xa_limit {=0D u32 max;=0D u32 min;=0D };=0D =0D =0D =0D =0D =0D =0D =0D typedef unsigned xa_mark_t;=0D =0D =0D =0D =0D =0D =0D =0D enum xa_lock_type {=0D XA_LOCK_IRQ =3D 1,=0D XA_LOCK_BH =3D 2,=0D };=0D # 295 "./include/linux/xarray.h"=0D struct xarray {=0D spinlock_t xa_lock;=0D =0D gfp_t xa_flags;=0D void * xa_head;=0D };=0D # 350 "./include/linux/xarray.h"=0D void *xa_load(struct xarray *, unsigned long index);=0D void *xa_store(struct xarray *, unsigned long index, void *entry, gfp_t);=0D void *xa_erase(struct xarray *, unsigned long index);=0D void *xa_store_range(struct xarray *, unsigned long first, unsigned long la= st,=0D void *entry, gfp_t);=0D bool xa_get_mark(struct xarray *, unsigned long index, xa_mark_t);=0D void xa_set_mark(struct xarray *, unsigned long index, xa_mark_t);=0D void xa_clear_mark(struct xarray *, unsigned long index, xa_mark_t);=0D void *xa_find(struct xarray *xa, unsigned long *index,=0D unsigned long max, xa_mark_t) __attribute__((nonnull(2)));=0D void *xa_find_after(struct xarray *xa, unsigned long *index,=0D unsigned long max, xa_mark_t) __attribute__((nonnull(2)));=0D unsigned int xa_extract(struct xarray *, void **dst, unsigned long start,=0D unsigned long max, unsigned int n, xa_mark_t);=0D void xa_destroy(struct xarray *);=0D # 377 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xa_init_flags(struct xa= rray *xa, gfp_t flags)=0D {=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_che= ck(&xa->xa_lock), "&xa->xa_lock", &__key, LD_WAIT_CONFIG); } while (0);=0D xa->xa_flags =3D flags;=0D xa->xa_head =3D ((void *)0);=0D }=0D # 392 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xa_init(struct xarray *= xa)=0D {=0D xa_init_flags(xa, 0);=0D }=0D # 404 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_empty(const struct x= array *xa)=0D {=0D return xa->xa_head =3D=3D ((void *)0);=0D }=0D # 417 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_marked(const struct = xarray *xa, xa_mark_t mark)=0D {=0D return xa->xa_flags & (( gfp_t)((1U << (27 + 1)) << ( unsigned)(mark)));=0D }=0D # 557 "./include/linux/xarray.h"=0D void *__xa_erase(struct xarray *, unsigned long index);=0D void *__xa_store(struct xarray *, unsigned long index, void *entry, gfp_t);= =0D void *__xa_cmpxchg(struct xarray *, unsigned long index, void *old,=0D void *entry, gfp_t);=0D int __attribute__((__warn_unused_result__)) __xa_insert(struct xarray *, un= signed long index,=0D void *entry, gfp_t);=0D int __attribute__((__warn_unused_result__)) __xa_alloc(struct xarray *, u32= *id, void *entry,=0D struct xa_limit, gfp_t);=0D int __attribute__((__warn_unused_result__)) __xa_alloc_cyclic(struct xarray= *, u32 *id, void *entry,=0D struct xa_limit, u32 *next, gfp_t);=0D void __xa_set_mark(struct xarray *, unsigned long index, xa_mark_t);=0D void __xa_clear_mark(struct xarray *, unsigned long index, xa_mark_t);=0D # 584 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_store_bh(struct xar= ray *xa, unsigned long index,=0D void *entry, gfp_t gfp)=0D {=0D void *curr;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D curr =3D __xa_store(xa, index, entry, gfp);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return curr;=0D }=0D # 610 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_store_irq(struct xa= rray *xa, unsigned long index,=0D void *entry, gfp_t gfp)=0D {=0D void *curr;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D curr =3D __xa_store(xa, index, entry, gfp);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return curr;=0D }=0D # 635 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_erase_bh(struct xar= ray *xa, unsigned long index)=0D {=0D void *entry;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D entry =3D __xa_erase(xa, index);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return entry;=0D }=0D # 659 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_erase_irq(struct xa= rray *xa, unsigned long index)=0D {=0D void *entry;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D entry =3D __xa_erase(xa, index);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return entry;=0D }=0D # 685 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_cmpxchg(struct xarr= ay *xa, unsigned long index,=0D void *old, void *entry, gfp_t gfp)=0D {=0D void *curr;=0D =0D spin_lock(&(xa)->xa_lock);=0D curr =3D __xa_cmpxchg(xa, index, old, entry, gfp);=0D spin_unlock(&(xa)->xa_lock);=0D =0D return curr;=0D }=0D # 712 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_cmpxchg_bh(struct x= array *xa, unsigned long index,=0D void *old, void *entry, gfp_t gfp)=0D {=0D void *curr;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D curr =3D __xa_cmpxchg(xa, index, old, entry, gfp);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return curr;=0D }=0D # 739 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_cmpxchg_irq(struct = xarray *xa, unsigned long index,=0D void *old, void *entry, gfp_t gfp)=0D {=0D void *curr;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D curr =3D __xa_cmpxchg(xa, index, old, entry, gfp);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return curr;=0D }=0D # 768 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) xa_insert(struct xarray *xa,=0D unsigned long index, void *entry, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock(&(xa)->xa_lock);=0D err =3D __xa_insert(xa, index, entry, gfp);=0D spin_unlock(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 797 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) xa_insert_bh(struct xarray *xa,=0D unsigned long index, void *entry, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D err =3D __xa_insert(xa, index, entry, gfp);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 826 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) xa_insert_irq(struct xarray *xa,=0D unsigned long index, void *entry, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D err =3D __xa_insert(xa, index, entry, gfp);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 855 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) int xa_alloc(struct xarray *xa, u32 *id,=0D void *entry, struct xa_limit limit, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock(&(xa)->xa_lock);=0D err =3D __xa_alloc(xa, id, entry, limit, gfp);=0D spin_unlock(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 884 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) xa_alloc_bh(struct xarray *xa, u32 *id,=0D void *entry, struct xa_limit limit, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D err =3D __xa_alloc(xa, id, entry, limit, gfp);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 913 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) xa_alloc_irq(struct xarray *xa, u32 *id,=0D void *entry, struct xa_limit limit, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D err =3D __xa_alloc(xa, id, entry, limit, gfp);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 946 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xa_alloc_cyclic(struct x= array *xa, u32 *id, void *entry,=0D struct xa_limit limit, u32 *next, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock(&(xa)->xa_lock);=0D err =3D __xa_alloc_cyclic(xa, id, entry, limit, next, gfp);=0D spin_unlock(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 979 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xa_alloc_cyclic_bh(struc= t xarray *xa, u32 *id, void *entry,=0D struct xa_limit limit, u32 *next, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_bh(&(xa)->xa_lock);=0D err =3D __xa_alloc_cyclic(xa, id, entry, limit, next, gfp);=0D spin_unlock_bh(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 1012 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xa_alloc_cyclic_irq(stru= ct xarray *xa, u32 *id, void *entry,=0D struct xa_limit limit, u32 *next, gfp_t gfp)=0D {=0D int err;=0D =0D spin_lock_irq(&(xa)->xa_lock);=0D err =3D __xa_alloc_cyclic(xa, id, entry, limit, next, gfp);=0D spin_unlock_irq(&(xa)->xa_lock);=0D =0D return err;=0D }=0D # 1042 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__))=0D int xa_reserve(struct xarray *xa, unsigned long index, gfp_t gfp)=0D {=0D return xa_err(xa_cmpxchg(xa, index, ((void *)0), xa_mk_internal(257), gfp)= );=0D }=0D # 1060 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__))=0D int xa_reserve_bh(struct xarray *xa, unsigned long index, gfp_t gfp)=0D {=0D return xa_err(xa_cmpxchg_bh(xa, index, ((void *)0), xa_mk_internal(257), g= fp));=0D }=0D # 1078 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__))=0D int xa_reserve_irq(struct xarray *xa, unsigned long index, gfp_t gfp)=0D {=0D return xa_err(xa_cmpxchg_irq(xa, index, ((void *)0), xa_mk_internal(257), = gfp));=0D }=0D # 1093 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xa_release(struct xarra= y *xa, unsigned long index)=0D {=0D xa_cmpxchg(xa, index, xa_mk_internal(257), ((void *)0), 0);=0D }=0D # 1125 "./include/linux/xarray.h"=0D struct xa_node {=0D unsigned char shift;=0D unsigned char offset;=0D unsigned char count;=0D unsigned char nr_values;=0D struct xa_node *parent;=0D struct xarray *array;=0D union {=0D struct list_head private_list;=0D struct callback_head callback_head;=0D };=0D void *slots[(1UL << (0 ? 4 : 6))];=0D union {=0D unsigned long tags[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))];=0D unsigned long marks[3][((((1UL << (0 ? 4 : 6))) + (64) - 1) / (64))];=0D };=0D };=0D =0D void xa_dump(const struct xarray *);=0D void xa_dump_node(const struct xa_node *);=0D # 1165 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_head(const struct x= array *xa)=0D {=0D return ({ typeof(*(xa->xa_head)) *__UNIQUE_ID_rcu157 =3D (typeof(*(xa->xa_= head)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_158(void) ; if (!((sizeof((xa->xa_head)) =3D=3D sizeof(char) || sizeof= ((xa->xa_head)) =3D=3D sizeof(short) || sizeof((xa->xa_head)) =3D=3D sizeof= (int) || sizeof((xa->xa_head)) =3D=3D sizeof(long)) || sizeof((xa->xa_head)= ) =3D=3D sizeof(long long))) __compiletime_assert_158(); } while (0); (*(co= nst volatile typeof( _Generic(((xa->xa_head)), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: ((xa->xa_head)))) *)&((xa->xa_head))); }); do { }= while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_read_lock_h= eld()))); ; ((typeof(*(xa->xa_head)) *)(__UNIQUE_ID_rcu157)); });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_head_locked(const s= truct xarray *xa)=0D {=0D return ({ do { } while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))= ); ; ((typeof(*(xa->xa_head)) *)((xa->xa_head))); });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_entry(const struct = xarray *xa,=0D const struct xa_node *node, unsigned int offset)=0D {=0D do { } while (0);=0D return ({ typeof(*(node->slots[offset])) *__UNIQUE_ID_rcu159 =3D (typeof(*= (node->slots[offset])) *)({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_160(void) ; if (!((sizeof((node->slots[offset])) =3D= =3D sizeof(char) || sizeof((node->slots[offset])) =3D=3D sizeof(short) || s= izeof((node->slots[offset])) =3D=3D sizeof(int) || sizeof((node->slots[offs= et])) =3D=3D sizeof(long)) || sizeof((node->slots[offset])) =3D=3D sizeof(l= ong long))) __compiletime_assert_160(); } while (0); (*(const volatile type= of( _Generic(((node->slots[offset])), char: (char)0, unsigned char: (unsign= ed char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, = signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (= signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0,= unsigned long long: (unsigned long long)0, signed long long: (signed long = long)0, default: ((node->slots[offset])))) *)&((node->slots[offset]))); });= do { } while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_read= _lock_held()))); ; ((typeof(*(node->slots[offset])) *)(__UNIQUE_ID_rcu159))= ; });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_entry_locked(const = struct xarray *xa,=0D const struct xa_node *node, unsigned int offset)=0D {=0D do { } while (0);=0D return ({ do { } while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))= ); ; ((typeof(*(node->slots[offset])) *)((node->slots[offset]))); });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xa_node *xa_parent(co= nst struct xarray *xa,=0D const struct xa_node *node)=0D {=0D return ({ typeof(*(node->parent)) *__UNIQUE_ID_rcu161 =3D (typeof(*(node->= parent)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_162(void) ; if (!((sizeof((node->parent)) =3D=3D sizeof(char) || siz= eof((node->parent)) =3D=3D sizeof(short) || sizeof((node->parent)) =3D=3D s= izeof(int) || sizeof((node->parent)) =3D=3D sizeof(long)) || sizeof((node->= parent)) =3D=3D sizeof(long long))) __compiletime_assert_162(); } while (0)= ; (*(const volatile typeof( _Generic(((node->parent)), char: (char)0, unsig= ned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (u= nsigned short)0, signed short: (signed short)0, unsigned int: (unsigned int= )0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long= : (signed long)0, unsigned long long: (unsigned long long)0, signed long lo= ng: (signed long long)0, default: ((node->parent)))) *)&((node->parent))); = }); do { } while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map)) || rcu_r= ead_lock_held()))); ; ((typeof(*(node->parent)) *)(__UNIQUE_ID_rcu161)); })= ;=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xa_node *xa_parent_lo= cked(const struct xarray *xa,=0D const struct xa_node *node)=0D {=0D return ({ do { } while (0 && (!((lock_is_held(&(&xa->xa_lock)->dep_map))))= ); ; ((typeof(*(node->parent)) *)((node->parent))); });=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_mk_node(const struc= t xa_node *node)=0D {=0D return (void *)((unsigned long)node | 2);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xa_node *xa_to_node(c= onst void *entry)=0D {=0D return (struct xa_node *)((unsigned long)entry - 2);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_node(const void *= entry)=0D {=0D return xa_is_internal(entry) && (unsigned long)entry > 4096;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xa_mk_sibling(unsigned= int offset)=0D {=0D return xa_mk_internal(offset);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long xa_to_sibling(= const void *entry)=0D {=0D return xa_to_internal(entry);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_sibling(const voi= d *entry)=0D {=0D return 1 && xa_is_internal(entry) &&=0D (entry < xa_mk_sibling((1UL << (0 ? 4 : 6)) - 1));=0D }=0D # 1262 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_retry(const void = *entry)=0D {=0D return __builtin_expect(!!(entry =3D=3D xa_mk_internal(256)), 0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xa_is_advanced(const vo= id *entry)=0D {=0D return xa_is_internal(entry) && (entry <=3D xa_mk_internal(256));=0D }=0D # 1290 "./include/linux/xarray.h"=0D typedef void (*xa_update_node_t)(struct xa_node *node);=0D =0D void xa_delete_node(struct xa_node *, xa_update_node_t);=0D # 1311 "./include/linux/xarray.h"=0D struct xa_state {=0D struct xarray *xa;=0D unsigned long xa_index;=0D unsigned char xa_shift;=0D unsigned char xa_sibs;=0D unsigned char xa_offset;=0D unsigned char xa_pad;=0D struct xa_node *xa_node;=0D struct xa_node *xa_alloc;=0D xa_update_node_t xa_update;=0D struct list_lru *xa_lru;=0D };=0D # 1392 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xas_error(const struct x= a_state *xas)=0D {=0D return xa_err(xas->xa_node);=0D }=0D # 1406 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_set_err(struct xa_s= tate *xas, long err)=0D {=0D xas->xa_node =3D ((struct xa_node *)(((unsigned long)err << 2) | 2UL));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_invalid(const struc= t xa_state *xas)=0D {=0D return (unsigned long)xas->xa_node & 3;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_valid(const struct = xa_state *xas)=0D {=0D return !xas_invalid(xas);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_is_node(const struc= t xa_state *xas)=0D {=0D return xas_valid(xas) && xas->xa_node;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_not_node(struct xa_= node *node)=0D {=0D return ((unsigned long)node & 3) || !node;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_frozen(struct xa_no= de *node)=0D {=0D return (unsigned long)node & 2;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_top(struct xa_node = *node)=0D {=0D return node <=3D ((struct xa_node *)3UL);=0D }=0D # 1472 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_reset(struct xa_sta= te *xas)=0D {=0D xas->xa_node =3D ((struct xa_node *)3UL);=0D }=0D # 1489 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xas_retry(struct xa_sta= te *xas, const void *entry)=0D {=0D if (xa_is_zero(entry))=0D return true;=0D if (!xa_is_retry(entry))=0D return false;=0D xas_reset(xas);=0D return true;=0D }=0D =0D void *xas_load(struct xa_state *);=0D void *xas_store(struct xa_state *, void *entry);=0D void *xas_find(struct xa_state *, unsigned long max);=0D void *xas_find_conflict(struct xa_state *);=0D =0D bool xas_get_mark(const struct xa_state *, xa_mark_t);=0D void xas_set_mark(const struct xa_state *, xa_mark_t);=0D void xas_clear_mark(const struct xa_state *, xa_mark_t);=0D void *xas_find_marked(struct xa_state *, unsigned long max, xa_mark_t);=0D void xas_init_marks(const struct xa_state *);=0D =0D bool xas_nomem(struct xa_state *, gfp_t);=0D void xas_pause(struct xa_state *);=0D =0D void xas_create_range(struct xa_state *);=0D =0D =0D int xa_get_order(struct xarray *, unsigned long index);=0D void xas_split(struct xa_state *, void *entry, unsigned int order);=0D void xas_split_alloc(struct xa_state *, void *entry, unsigned int order, gf= p_t);=0D # 1551 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xas_reload(struct xa_s= tate *xas)=0D {=0D struct xa_node *node =3D xas->xa_node;=0D void *entry;=0D char offset;=0D =0D if (!node)=0D return xa_head(xas->xa);=0D if (1) {=0D offset =3D (xas->xa_index >> node->shift) & ((1UL << (0 ? 4 : 6)) - 1);=0D entry =3D xa_entry(xas->xa, node, offset);=0D if (!xa_is_sibling(entry))=0D return entry;=0D offset =3D xa_to_sibling(entry);=0D } else {=0D offset =3D xas->xa_offset;=0D }=0D return xa_entry(xas->xa, node, offset);=0D }=0D # 1580 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_set(struct xa_state= *xas, unsigned long index)=0D {=0D xas->xa_index =3D index;=0D xas->xa_node =3D ((struct xa_node *)3UL);=0D }=0D # 1596 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_advance(struct xa_s= tate *xas, unsigned long index)=0D {=0D unsigned char shift =3D xas_is_node(xas) ? xas->xa_node->shift : 0;=0D =0D xas->xa_index =3D index;=0D xas->xa_offset =3D (index >> shift) & ((1UL << (0 ? 4 : 6)) - 1);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_set_order(struct xa= _state *xas, unsigned long index,=0D unsigned int order)=0D {=0D =0D xas->xa_index =3D order < 64 ? (index >> order) << order : 0;=0D xas->xa_shift =3D order - (order % (0 ? 4 : 6));=0D xas->xa_sibs =3D (1 << (order % (0 ? 4 : 6))) - 1;=0D xas->xa_node =3D ((struct xa_node *)3UL);=0D =0D =0D =0D =0D }=0D # 1632 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_set_update(struct x= a_state *xas, xa_update_node_t update)=0D {=0D xas->xa_update =3D update;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xas_set_lru(struct xa_s= tate *xas, struct list_lru *lru)=0D {=0D xas->xa_lru =3D lru;=0D }=0D # 1653 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xas_next_entry(struct = xa_state *xas, unsigned long max)=0D {=0D struct xa_node *node =3D xas->xa_node;=0D void *entry;=0D =0D if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offse= t !=3D (xas->xa_index & ((1UL << (0 ? 4 : 6)) - 1))), 0))=0D =0D return xas_find(xas, max);=0D =0D do {=0D if (__builtin_expect(!!(xas->xa_index >=3D max), 0))=0D return xas_find(xas, max);=0D if (__builtin_expect(!!(xas->xa_offset =3D=3D ((1UL << (0 ? 4 : 6)) - 1))= , 0))=0D return xas_find(xas, max);=0D entry =3D xa_entry(xas->xa, node, xas->xa_offset + 1);=0D if (__builtin_expect(!!(xa_is_internal(entry)), 0))=0D return xas_find(xas, max);=0D xas->xa_offset++;=0D xas->xa_index++;=0D } while (!entry);=0D =0D return entry;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int xas_find_chunk(= struct xa_state *xas, bool advance,=0D xa_mark_t mark)=0D {=0D unsigned long *addr =3D xas->xa_node->marks[( unsigned)mark];=0D unsigned int offset =3D xas->xa_offset;=0D =0D if (advance)=0D offset++;=0D if ((1UL << (0 ? 4 : 6)) =3D=3D 64) {=0D if (offset < (1UL << (0 ? 4 : 6))) {=0D unsigned long data =3D *addr & (~0UL << offset);=0D if (data)=0D return __ffs(data);=0D }=0D return (1UL << (0 ? 4 : 6));=0D }=0D =0D return find_next_bit(addr, (1UL << (0 ? 4 : 6)), offset);=0D }=0D # 1710 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xas_next_marked(struct= xa_state *xas, unsigned long max,=0D xa_mark_t mark)=0D {=0D struct xa_node *node =3D xas->xa_node;=0D void *entry;=0D unsigned int offset;=0D =0D if (__builtin_expect(!!(xas_not_node(node) || node->shift), 0))=0D return xas_find_marked(xas, max, mark);=0D offset =3D xas_find_chunk(xas, true, mark);=0D xas->xa_offset =3D offset;=0D xas->xa_index =3D (xas->xa_index & ~((1UL << (0 ? 4 : 6)) - 1)) + offset;= =0D if (xas->xa_index > max)=0D return ((void *)0);=0D if (offset =3D=3D (1UL << (0 ? 4 : 6)))=0D return xas_find_marked(xas, max, mark);=0D entry =3D xa_entry(xas->xa, node, offset);=0D if (!entry)=0D return xas_find_marked(xas, max, mark);=0D return entry;=0D }=0D =0D =0D =0D =0D =0D enum {=0D XA_CHECK_SCHED =3D 4096,=0D };=0D # 1790 "./include/linux/xarray.h"=0D void *__xas_next(struct xa_state *);=0D void *__xas_prev(struct xa_state *);=0D # 1809 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xas_prev(struct xa_sta= te *xas)=0D {=0D struct xa_node *node =3D xas->xa_node;=0D =0D if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offse= t =3D=3D 0), 0))=0D =0D return __xas_prev(xas);=0D =0D xas->xa_index--;=0D xas->xa_offset--;=0D return xa_entry(xas->xa, node, xas->xa_offset);=0D }=0D # 1838 "./include/linux/xarray.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xas_next(struct xa_sta= te *xas)=0D {=0D struct xa_node *node =3D xas->xa_node;=0D =0D if (__builtin_expect(!!(xas_not_node(node) || node->shift || xas->xa_offse= t =3D=3D ((1UL << (0 ? 4 : 6)) - 1)), 0))=0D =0D return __xas_next(xas);=0D =0D xas->xa_index++;=0D xas->xa_offset++;=0D return xa_entry(xas->xa, node, xas->xa_offset);=0D }=0D # 15 "./include/linux/list_lru.h" 2=0D =0D struct mem_cgroup;=0D =0D =0D enum lru_status {=0D LRU_REMOVED,=0D LRU_REMOVED_RETRY,=0D =0D LRU_ROTATE,=0D LRU_SKIP,=0D LRU_RETRY,=0D =0D };=0D =0D struct list_lru_one {=0D struct list_head list;=0D =0D long nr_items;=0D };=0D =0D struct list_lru_memcg {=0D struct callback_head rcu;=0D =0D struct list_lru_one node[];=0D };=0D =0D struct list_lru_node {=0D =0D spinlock_t lock;=0D =0D struct list_lru_one lru;=0D long nr_items;=0D } __attribute__((__aligned__((1 << 6))));=0D =0D struct list_lru {=0D struct list_lru_node *node;=0D =0D =0D =0D =0D =0D =0D };=0D =0D void list_lru_destroy(struct list_lru *lru);=0D int __list_lru_init(struct list_lru *lru, bool memcg_aware,=0D struct lock_class_key *key, struct shrinker *shrinker);=0D # 70 "./include/linux/list_lru.h"=0D int memcg_list_lru_alloc(struct mem_cgroup *memcg, struct list_lru *lru,=0D gfp_t gfp);=0D void memcg_reparent_list_lrus(struct mem_cgroup *memcg, struct mem_cgroup *= parent);=0D # 90 "./include/linux/list_lru.h"=0D bool list_lru_add(struct list_lru *lru, struct list_head *item);=0D # 103 "./include/linux/list_lru.h"=0D bool list_lru_del(struct list_lru *lru, struct list_head *item);=0D # 115 "./include/linux/list_lru.h"=0D unsigned long list_lru_count_one(struct list_lru *lru,=0D int nid, struct mem_cgroup *memcg);=0D unsigned long list_lru_count_node(struct list_lru *lru, int nid);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long list_lru_shrin= k_count(struct list_lru *lru,=0D struct shrink_control *sc)=0D {=0D return list_lru_count_one(lru, sc->nid, sc->memcg);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long list_lru_count= (struct list_lru *lru)=0D {=0D long count =3D 0;=0D int nid;=0D =0D for ( (nid) =3D 0; (nid) =3D=3D 0; (nid) =3D 1)=0D count +=3D list_lru_count_node(lru, nid);=0D =0D return count;=0D }=0D =0D void list_lru_isolate(struct list_lru_one *list, struct list_head *item);=0D void list_lru_isolate_move(struct list_lru_one *list, struct list_head *ite= m,=0D struct list_head *head);=0D =0D typedef enum lru_status (*list_lru_walk_cb)(struct list_head *item,=0D struct list_lru_one *list, spinlock_t *lock, void *cb_arg);=0D # 165 "./include/linux/list_lru.h"=0D unsigned long list_lru_walk_one(struct list_lru *lru,=0D int nid, struct mem_cgroup *memcg,=0D list_lru_walk_cb isolate, void *cb_arg,=0D unsigned long *nr_to_walk);=0D # 182 "./include/linux/list_lru.h"=0D unsigned long list_lru_walk_one_irq(struct list_lru *lru,=0D int nid, struct mem_cgroup *memcg,=0D list_lru_walk_cb isolate, void *cb_arg,=0D unsigned long *nr_to_walk);=0D unsigned long list_lru_walk_node(struct list_lru *lru, int nid,=0D list_lru_walk_cb isolate, void *cb_arg,=0D unsigned long *nr_to_walk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D list_lru_shrink_walk(struct list_lru *lru, struct shrink_control *sc,=0D list_lru_walk_cb isolate, void *cb_arg)=0D {=0D return list_lru_walk_one(lru, sc->nid, sc->memcg, isolate, cb_arg,=0D &sc->nr_to_scan);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D list_lru_shrink_walk_irq(struct list_lru *lru, struct shrink_control *sc,=0D list_lru_walk_cb isolate, void *cb_arg)=0D {=0D return list_lru_walk_one_irq(lru, sc->nid, sc->memcg, isolate, cb_arg,=0D &sc->nr_to_scan);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D list_lru_walk(struct list_lru *lru, list_lru_walk_cb isolate,=0D void *cb_arg, unsigned long nr_to_walk)=0D {=0D long isolated =3D 0;=0D int nid;=0D =0D for ( (nid) =3D 0; (nid) =3D=3D 0; (nid) =3D 1) {=0D isolated +=3D list_lru_walk_node(lru, nid, isolate,=0D cb_arg, &nr_to_walk);=0D if (nr_to_walk <=3D 0)=0D break;=0D }=0D return isolated;=0D }=0D # 14 "./include/linux/fs.h" 2=0D =0D # 1 "./include/linux/radix-tree.h" 1=0D # 28 "./include/linux/radix-tree.h"=0D struct radix_tree_preload {=0D local_lock_t lock;=0D unsigned nr;=0D =0D struct xa_node *nodes;=0D };=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct radix= _tree_preload) radix_tree_preloads;=0D # 55 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool radix_tree_is_internal_= node(void *ptr)=0D {=0D return ((unsigned long)ptr & 3UL) =3D=3D=0D 2UL;=0D }=0D # 86 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool radix_tree_empty(const = struct xarray *root)=0D {=0D return root->xa_head =3D=3D ((void *)0);=0D }=0D # 106 "./include/linux/radix-tree.h"=0D struct radix_tree_iter {=0D unsigned long index;=0D unsigned long next_index;=0D unsigned long tags;=0D struct xa_node *node;=0D };=0D # 177 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *radix_tree_deref_slot(= void **slot)=0D {=0D return ({ typeof(*(*slot)) *__UNIQUE_ID_rcu163 =3D (typeof(*(*slot)) *)({ = do { __attribute__((__noreturn__)) extern void __compiletime_assert_164(voi= d) ; if (!((sizeof((*slot)) =3D=3D sizeof(char) || sizeof((*slot)) =3D=3D s= izeof(short) || sizeof((*slot)) =3D=3D sizeof(int) || sizeof((*slot)) =3D= =3D sizeof(long)) || sizeof((*slot)) =3D=3D sizeof(long long))) __compileti= me_assert_164(); } while (0); (*(const volatile typeof( _Generic(((*slot)),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: ((*slot)))) *)&((*sl= ot))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof= (*(*slot)) *)(__UNIQUE_ID_rcu163)); });=0D }=0D # 191 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *radix_tree_deref_slot_= protected(void **slot,=0D spinlock_t *treelock)=0D {=0D return ({ do { } while (0 && (!((lock_is_held(&(treelock)->dep_map))))); ;= ((typeof(*(*slot)) *)((*slot))); });=0D }=0D # 204 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int radix_tree_deref_retry(v= oid *arg)=0D {=0D return __builtin_expect(!!(radix_tree_is_internal_node(arg)), 0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int radix_tree_exception(voi= d *arg)=0D {=0D return __builtin_expect(!!((unsigned long)arg & 3UL), 0);=0D }=0D =0D int radix_tree_insert(struct xarray *, unsigned long index,=0D void *);=0D void *__radix_tree_lookup(const struct xarray *, unsigned long index,=0D struct xa_node **nodep, void ***slotp);=0D void *radix_tree_lookup(const struct xarray *, unsigned long);=0D void **radix_tree_lookup_slot(const struct xarray *,=0D unsigned long index);=0D void __radix_tree_replace(struct xarray *, struct xa_node *,=0D void **slot, void *entry);=0D void radix_tree_iter_replace(struct xarray *,=0D const struct radix_tree_iter *, void **slot, void *entry);=0D void radix_tree_replace_slot(struct xarray *,=0D void **slot, void *entry);=0D void radix_tree_iter_delete(struct xarray *,=0D struct radix_tree_iter *iter, void **slot);=0D void *radix_tree_delete_item(struct xarray *, unsigned long, void *);=0D void *radix_tree_delete(struct xarray *, unsigned long);=0D unsigned int radix_tree_gang_lookup(const struct xarray *,=0D void **results, unsigned long first_index,=0D unsigned int max_items);=0D int radix_tree_preload(gfp_t gfp_mask);=0D int radix_tree_maybe_preload(gfp_t gfp_mask);=0D void radix_tree_init(void);=0D void *radix_tree_tag_set(struct xarray *,=0D unsigned long index, unsigned int tag);=0D void *radix_tree_tag_clear(struct xarray *,=0D unsigned long index, unsigned int tag);=0D int radix_tree_tag_get(const struct xarray *,=0D unsigned long index, unsigned int tag);=0D void radix_tree_iter_tag_clear(struct xarray *,=0D const struct radix_tree_iter *iter, unsigned int tag);=0D unsigned int radix_tree_gang_lookup_tag(const struct xarray *,=0D void **results, unsigned long first_index,=0D unsigned int max_items, unsigned int tag);=0D unsigned int radix_tree_gang_lookup_tag_slot(const struct xarray *,=0D void ***results, unsigned long first_index,=0D unsigned int max_items, unsigned int tag);=0D int radix_tree_tagged(const struct xarray *, unsigned int tag);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void radix_tree_preload_end(= void)=0D {=0D do { local_lock_release(({ do { const void *__vpp_verify =3D (typeof((&rad= ix_tree_preloads.lock) + 0))((void *)0); (void)__vpp_verify; } while (0); (= { unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&radix_tree_pre= loads.lock)) *)(&radix_tree_preloads.lock)); (typeof((typeof(*(&radix_tree_= preloads.lock)) *)(&radix_tree_preloads.lock))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); })); do { __asm__ = __volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); } while= (0);=0D }=0D =0D void **idr_get_free(struct xarray *root,=0D struct radix_tree_iter *iter, gfp_t gfp,=0D unsigned long max);=0D =0D enum {=0D RADIX_TREE_ITER_TAG_MASK =3D 0x0f,=0D RADIX_TREE_ITER_TAGGED =3D 0x10,=0D RADIX_TREE_ITER_CONTIG =3D 0x20,=0D };=0D # 280 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void **=0D radix_tree_iter_init(struct radix_tree_iter *iter, unsigned long start)=0D {=0D # 291 "./include/linux/radix-tree.h"=0D iter->index =3D 0;=0D iter->next_index =3D start;=0D return ((void *)0);=0D }=0D # 309 "./include/linux/radix-tree.h"=0D void **radix_tree_next_chunk(const struct xarray *,=0D struct radix_tree_iter *iter, unsigned flags);=0D # 322 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void **=0D radix_tree_iter_lookup(const struct xarray *root,=0D struct radix_tree_iter *iter, unsigned long index)=0D {=0D radix_tree_iter_init(iter, index);=0D return radix_tree_next_chunk(root, iter, RADIX_TREE_ITER_CONTIG);=0D }=0D # 339 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__))=0D void **radix_tree_iter_retry(struct radix_tree_iter *iter)=0D {=0D iter->next_index =3D iter->index;=0D iter->tags =3D 0;=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D __radix_tree_iter_add(struct radix_tree_iter *iter, unsigned long slots)=0D {=0D return iter->index + slots;=0D }=0D # 363 "./include/linux/radix-tree.h"=0D void **__attribute__((__warn_unused_result__)) radix_tree_iter_resume(void = **slot,=0D struct radix_tree_iter *iter);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) long=0D radix_tree_chunk_size(struct radix_tree_iter *iter)=0D {=0D return iter->next_index - iter->index;=0D }=0D # 397 "./include/linux/radix-tree.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void **radix_tree_next_slot(void **slot,=0D struct radix_tree_iter *iter, unsigned flags)=0D {=0D if (flags & RADIX_TREE_ITER_TAGGED) {=0D iter->tags >>=3D 1;=0D if (__builtin_expect(!!(!iter->tags), 0))=0D return ((void *)0);=0D if (__builtin_expect(!!(iter->tags & 1ul), 1)) {=0D iter->index =3D __radix_tree_iter_add(iter, 1);=0D slot++;=0D goto found;=0D }=0D if (!(flags & RADIX_TREE_ITER_CONTIG)) {=0D unsigned offset =3D __ffs(iter->tags);=0D =0D iter->tags >>=3D offset++;=0D iter->index =3D __radix_tree_iter_add(iter, offset);=0D slot +=3D offset;=0D goto found;=0D }=0D } else {=0D long count =3D radix_tree_chunk_size(iter);=0D =0D while (--count > 0) {=0D slot++;=0D iter->index =3D __radix_tree_iter_add(iter, 1);=0D =0D if (__builtin_expect(!!(*slot), 1))=0D goto found;=0D if (flags & RADIX_TREE_ITER_CONTIG) {=0D =0D iter->next_index =3D 0;=0D break;=0D }=0D }=0D }=0D return ((void *)0);=0D =0D found:=0D return slot;=0D }=0D # 16 "./include/linux/fs.h" 2=0D =0D =0D =0D # 1 "./include/linux/pid.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D enum pid_type=0D {=0D PIDTYPE_PID,=0D PIDTYPE_TGID,=0D PIDTYPE_PGID,=0D PIDTYPE_SID,=0D PIDTYPE_MAX,=0D };=0D # 54 "./include/linux/pid.h"=0D struct upid {=0D int nr;=0D struct pid_namespace *ns;=0D };=0D =0D struct pid=0D {=0D refcount_t count;=0D unsigned int level;=0D spinlock_t lock;=0D =0D struct hlist_head tasks[PIDTYPE_MAX];=0D struct hlist_head inodes;=0D =0D wait_queue_head_t wait_pidfd;=0D struct callback_head rcu;=0D struct upid numbers[1];=0D };=0D =0D extern struct pid init_struct_pid;=0D =0D extern const struct file_operations pidfd_fops;=0D =0D struct file;=0D =0D extern struct pid *pidfd_pid(const struct file *file);=0D struct pid *pidfd_get_pid(unsigned int fd, unsigned int *flags);=0D struct task_struct *pidfd_get_task(int pidfd, unsigned int *flags);=0D int pidfd_create(struct pid *pid, unsigned int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid *get_pid(struct p= id *pid)=0D {=0D if (pid)=0D refcount_inc(&pid->count);=0D return pid;=0D }=0D =0D extern void put_pid(struct pid *pid);=0D extern struct task_struct *pid_task(struct pid *pid, enum pid_type);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pid_has_task(struct pid= *pid, enum pid_type type)=0D {=0D return !hlist_empty(&pid->tasks[type]);=0D }=0D extern struct task_struct *get_pid_task(struct pid *pid, enum pid_type);=0D =0D extern struct pid *get_task_pid(struct task_struct *task, enum pid_type typ= e);=0D =0D =0D =0D =0D extern void attach_pid(struct task_struct *task, enum pid_type);=0D extern void detach_pid(struct task_struct *task, enum pid_type);=0D extern void change_pid(struct task_struct *task, enum pid_type,=0D struct pid *pid);=0D extern void exchange_tids(struct task_struct *task, struct task_struct *old= );=0D extern void transfer_pid(struct task_struct *old, struct task_struct *new,= =0D enum pid_type);=0D =0D struct pid_namespace;=0D extern struct pid_namespace init_pid_ns;=0D =0D extern int pid_max;=0D extern int pid_max_min, pid_max_max;=0D # 127 "./include/linux/pid.h"=0D extern struct pid *find_pid_ns(int nr, struct pid_namespace *ns);=0D extern struct pid *find_vpid(int nr);=0D =0D =0D =0D =0D extern struct pid *find_get_pid(int nr);=0D extern struct pid *find_ge_pid(int nr, struct pid_namespace *);=0D =0D extern struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid,=0D size_t set_tid_size);=0D extern void free_pid(struct pid *pid);=0D extern void disable_pid_allocation(struct pid_namespace *ns);=0D # 151 "./include/linux/pid.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid_namespace *ns_of_= pid(struct pid *pid)=0D {=0D struct pid_namespace *ns =3D ((void *)0);=0D if (pid)=0D ns =3D pid->numbers[pid->level].ns;=0D return ns;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_child_reaper(struct = pid *pid)=0D {=0D return pid->numbers[pid->level].nr =3D=3D 1;=0D }=0D # 181 "./include/linux/pid.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t pid_nr(struct pid *pid= )=0D {=0D pid_t nr =3D 0;=0D if (pid)=0D nr =3D pid->numbers[0].nr;=0D return nr;=0D }=0D =0D pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns);=0D pid_t pid_vnr(struct pid *pid);=0D # 20 "./include/linux/fs.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/semaphore.h" 1=0D # 15 "./include/linux/semaphore.h"=0D struct semaphore {=0D raw_spinlock_t lock;=0D unsigned int count;=0D struct list_head wait_list;=0D };=0D # 31 "./include/linux/semaphore.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sema_init(struct semaph= ore *sem, int val)=0D {=0D static struct lock_class_key __key;=0D *sem =3D (struct semaphore) { .lock =3D (raw_spinlock_t) { .raw_lock =3D {= 0 }, .magic =3D 0xdead4ead, .owner_cpu =3D -1, .owner =3D ((void *)-1L), .= dep_map =3D { .name =3D "(*sem).lock", .wait_type_inner =3D LD_WAIT_SPIN, }= }, .count =3D val, .wait_list =3D { &((*sem).wait_list), &((*sem).wait_lis= t) }, };=0D lockdep_init_map(&sem->lock.dep_map, "semaphore->lock", &__key, 0);=0D }=0D =0D extern void down(struct semaphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_interruptible(struc= t semaphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_killable(struct sem= aphore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_trylock(struct sema= phore *sem);=0D extern int __attribute__((__warn_unused_result__)) down_timeout(struct sema= phore *sem, long jiffies);=0D extern void up(struct semaphore *sem);=0D # 26 "./include/linux/fs.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/migrate_mode.h" 1=0D # 15 "./include/linux/migrate_mode.h"=0D enum migrate_mode {=0D MIGRATE_ASYNC,=0D MIGRATE_SYNC_LIGHT,=0D MIGRATE_SYNC,=0D MIGRATE_SYNC_NO_COPY,=0D };=0D =0D enum migrate_reason {=0D MR_COMPACTION,=0D MR_MEMORY_FAILURE,=0D MR_MEMORY_HOTPLUG,=0D MR_SYSCALL,=0D MR_MEMPOLICY_MBIND,=0D MR_NUMA_MISPLACED,=0D MR_CONTIG_RANGE,=0D MR_LONGTERM_PIN,=0D MR_DEMOTION,=0D MR_TYPES=0D };=0D # 31 "./include/linux/fs.h" 2=0D =0D =0D # 1 "./include/linux/percpu-rwsem.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/rcuwait.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/sched/signal.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/signal.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/signal_types.h" 1=0D # 10 "./include/linux/signal_types.h"=0D # 1 "./include/uapi/linux/signal.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/signal.h" 1=0D # 1 "./include/asm-generic/signal.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/signal.h" 1=0D # 61 "./include/uapi/asm-generic/signal.h"=0D typedef struct {=0D unsigned long sig[(64 / (8 * 8))];=0D } sigset_t;=0D =0D =0D typedef unsigned long old_sigset_t;=0D =0D =0D # 1 "./include/uapi/asm-generic/signal-defs.h" 1=0D # 82 "./include/uapi/asm-generic/signal-defs.h"=0D typedef void __signalfn_t(int);=0D typedef __signalfn_t *__sighandler_t;=0D =0D typedef void __restorefn_t(void);=0D typedef __restorefn_t *__sigrestore_t;=0D # 69 "./include/uapi/asm-generic/signal.h" 2=0D # 85 "./include/uapi/asm-generic/signal.h"=0D typedef struct sigaltstack {=0D void *ss_sp;=0D int ss_flags;=0D __kernel_size_t ss_size;=0D } stack_t;=0D # 6 "./include/asm-generic/signal.h" 2=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/uapi/asm/sigcontext.h" 1=0D # 17 "./arch/riscv/include/uapi/asm/sigcontext.h"=0D struct sigcontext {=0D struct user_regs_struct sc_regs;=0D union __riscv_fp_state sc_fpregs;=0D };=0D # 12 "./include/asm-generic/signal.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/signal.h" 2=0D # 6 "./include/uapi/linux/signal.h" 2=0D # 1 "./arch/riscv/include/generated/uapi/asm/siginfo.h" 1=0D # 1 "./include/uapi/asm-generic/siginfo.h" 1=0D =0D =0D =0D =0D =0D =0D =0D typedef union sigval {=0D int sival_int;=0D void *sival_ptr;=0D } sigval_t;=0D # 37 "./include/uapi/asm-generic/siginfo.h"=0D union __sifields {=0D =0D struct {=0D __kernel_pid_t _pid;=0D __kernel_uid32_t _uid;=0D } _kill;=0D =0D =0D struct {=0D __kernel_timer_t _tid;=0D int _overrun;=0D sigval_t _sigval;=0D int _sys_private;=0D } _timer;=0D =0D =0D struct {=0D __kernel_pid_t _pid;=0D __kernel_uid32_t _uid;=0D sigval_t _sigval;=0D } _rt;=0D =0D =0D struct {=0D __kernel_pid_t _pid;=0D __kernel_uid32_t _uid;=0D int _status;=0D __kernel_clock_t _utime;=0D __kernel_clock_t _stime;=0D } _sigchld;=0D =0D =0D struct {=0D void *_addr;=0D # 79 "./include/uapi/asm-generic/siginfo.h"=0D union {=0D =0D int _trapno;=0D =0D =0D =0D =0D short _addr_lsb;=0D =0D struct {=0D char _dummy_bnd[(__alignof__(void *) < sizeof(short) ? sizeof(short) : = __alignof__(void *))];=0D void *_lower;=0D void *_upper;=0D } _addr_bnd;=0D =0D struct {=0D char _dummy_pkey[(__alignof__(void *) < sizeof(short) ? sizeof(short) := __alignof__(void *))];=0D __u32 _pkey;=0D } _addr_pkey;=0D =0D struct {=0D unsigned long _data;=0D __u32 _type;=0D } _perf;=0D };=0D } _sigfault;=0D =0D =0D struct {=0D long _band;=0D int _fd;=0D } _sigpoll;=0D =0D =0D struct {=0D void *_call_addr;=0D int _syscall;=0D unsigned int _arch;=0D } _sigsys;=0D };=0D # 138 "./include/uapi/asm-generic/siginfo.h"=0D typedef struct siginfo {=0D union {=0D struct { int si_signo; int si_errno; int si_code; union __sifields _sifie= lds; };=0D int _si_pad[128/sizeof(int)];=0D };=0D } siginfo_t;=0D # 333 "./include/uapi/asm-generic/siginfo.h"=0D typedef struct sigevent {=0D sigval_t sigev_value;=0D int sigev_signo;=0D int sigev_notify;=0D union {=0D int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))];=0D int _tid;=0D =0D struct {=0D void (*_function)(sigval_t);=0D void *_attribute;=0D } _sigev_thread;=0D } _sigev_un;=0D } sigevent_t;=0D # 2 "./arch/riscv/include/generated/uapi/asm/siginfo.h" 2=0D # 7 "./include/uapi/linux/signal.h" 2=0D # 11 "./include/linux/signal_types.h" 2=0D =0D typedef struct kernel_siginfo {=0D struct { int si_signo; int si_errno; int si_code; union __sifields _sifiel= ds; };=0D } kernel_siginfo_t;=0D =0D struct ucounts;=0D =0D =0D =0D =0D =0D struct sigqueue {=0D struct list_head list;=0D int flags;=0D kernel_siginfo_t info;=0D struct ucounts *ucounts;=0D };=0D =0D =0D =0D =0D struct sigpending {=0D struct list_head list;=0D sigset_t signal;=0D };=0D =0D struct sigaction {=0D =0D __sighandler_t sa_handler;=0D unsigned long sa_flags;=0D =0D =0D =0D =0D =0D =0D =0D sigset_t sa_mask;=0D };=0D =0D struct k_sigaction {=0D struct sigaction sa;=0D =0D =0D =0D };=0D # 67 "./include/linux/signal_types.h"=0D struct ksignal {=0D struct k_sigaction ka;=0D kernel_siginfo_t info;=0D int sig;=0D };=0D # 7 "./include/linux/signal.h" 2=0D =0D =0D struct task_struct;=0D =0D =0D extern int print_fatal_signals;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_siginfo(kernel_sig= info_t *to,=0D const kernel_siginfo_t *from)=0D {=0D memcpy(to, from, sizeof(*to));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_siginfo(kernel_si= ginfo_t *info)=0D {=0D memset(info, 0, sizeof(*info));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_siginfo_to_externa= l(siginfo_t *to,=0D const kernel_siginfo_t *from)=0D {=0D memcpy(to, from, sizeof(*from));=0D memset(((char *)to) + sizeof(struct kernel_siginfo), 0,=0D (sizeof(struct siginfo) - sizeof(struct kernel_siginfo)));=0D }=0D =0D int copy_siginfo_to_user(siginfo_t *to, const kernel_siginfo_t *from);=0D int copy_siginfo_from_user(kernel_siginfo_t *to, const siginfo_t *from);=0D =0D enum siginfo_layout {=0D SIL_KILL,=0D SIL_TIMER,=0D SIL_POLL,=0D SIL_FAULT,=0D SIL_FAULT_TRAPNO,=0D SIL_FAULT_MCEERR,=0D SIL_FAULT_BNDERR,=0D SIL_FAULT_PKUERR,=0D SIL_FAULT_PERF_EVENT,=0D SIL_CHLD,=0D SIL_RT,=0D SIL_SYS,=0D };=0D =0D enum siginfo_layout siginfo_layout(unsigned sig, int si_code);=0D # 64 "./include/linux/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigaddset(sigset_t *set= , int _sig)=0D {=0D unsigned long sig =3D _sig - 1;=0D if ((64 / (8 * 8)) =3D=3D 1)=0D set->sig[0] |=3D 1UL << sig;=0D else=0D set->sig[sig / (8 * 8)] |=3D 1UL << (sig % (8 * 8));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigdelset(sigset_t *set= , int _sig)=0D {=0D unsigned long sig =3D _sig - 1;=0D if ((64 / (8 * 8)) =3D=3D 1)=0D set->sig[0] &=3D ~(1UL << sig);=0D else=0D set->sig[sig / (8 * 8)] &=3D ~(1UL << (sig % (8 * 8)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sigismember(sigset_t *se= t, int _sig)=0D {=0D unsigned long sig =3D _sig - 1;=0D if ((64 / (8 * 8)) =3D=3D 1)=0D return 1 & (set->sig[0] >> sig);=0D else=0D return 1 & (set->sig[sig / (8 * 8)] >> (sig % (8 * 8)));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sigisemptyset(sigset_t *= set)=0D {=0D switch ((64 / (8 * 8))) {=0D case 4:=0D return (set->sig[3] | set->sig[2] |=0D set->sig[1] | set->sig[0]) =3D=3D 0;=0D case 2:=0D return (set->sig[1] | set->sig[0]) =3D=3D 0;=0D case 1:=0D return set->sig[0] =3D=3D 0;=0D default:=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_165(v= oid) ; if (!(!(1))) __compiletime_assert_165(); } while (0);=0D return 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sigequalsets(const sigse= t_t *set1, const sigset_t *set2)=0D {=0D switch ((64 / (8 * 8))) {=0D case 4:=0D return (set1->sig[3] =3D=3D set2->sig[3]) &&=0D (set1->sig[2] =3D=3D set2->sig[2]) &&=0D (set1->sig[1] =3D=3D set2->sig[1]) &&=0D (set1->sig[0] =3D=3D set2->sig[0]);=0D case 2:=0D return (set1->sig[1] =3D=3D set2->sig[1]) &&=0D (set1->sig[0] =3D=3D set2->sig[0]);=0D case 1:=0D return set1->sig[0] =3D=3D set2->sig[0];=0D }=0D return 0;=0D }=0D # 156 "./include/linux/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigorsets(sigset_t *r, = const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, b= 1, b2, b3; switch ((64 / (8 * 8))) { case 4: a3 =3D a->sig[3]; a2 =3D a->si= g[2]; b3 =3D b->sig[3]; b2 =3D b->sig[2]; r->sig[3] =3D ((a3) | (b3)); r->s= ig[2] =3D ((a2) | (b2)); __attribute__((__fallthrough__)); case 2: a1 =3D a= ->sig[1]; b1 =3D b->sig[1]; r->sig[1] =3D ((a1) | (b1)); __attribute__((__f= allthrough__)); case 1: a0 =3D a->sig[0]; b0 =3D b->sig[0]; r->sig[0] =3D (= (a0) | (b0)); break; default: do { __attribute__((__noreturn__)) extern voi= d __compiletime_assert_166(void) ; if (!(!(1))) __compiletime_assert_166();= } while (0); } }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigandsets(sigset_t *r,= const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0, = b1, b2, b3; switch ((64 / (8 * 8))) { case 4: a3 =3D a->sig[3]; a2 =3D a->s= ig[2]; b3 =3D b->sig[3]; b2 =3D b->sig[2]; r->sig[3] =3D ((a3) & (b3)); r->= sig[2] =3D ((a2) & (b2)); __attribute__((__fallthrough__)); case 2: a1 =3D = a->sig[1]; b1 =3D b->sig[1]; r->sig[1] =3D ((a1) & (b1)); __attribute__((__= fallthrough__)); case 1: a0 =3D a->sig[0]; b0 =3D b->sig[0]; r->sig[0] =3D = ((a0) & (b0)); break; default: do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_167(void) ; if (!(!(1))) __compiletime_assert_167()= ; } while (0); } }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigandnsets(sigset_t *r= , const sigset_t *a, const sigset_t *b) { unsigned long a0, a1, a2, a3, b0,= b1, b2, b3; switch ((64 / (8 * 8))) { case 4: a3 =3D a->sig[3]; a2 =3D a->= sig[2]; b3 =3D b->sig[3]; b2 =3D b->sig[2]; r->sig[3] =3D ((a3) & ~(b3)); r= ->sig[2] =3D ((a2) & ~(b2)); __attribute__((__fallthrough__)); case 2: a1 = =3D a->sig[1]; b1 =3D b->sig[1]; r->sig[1] =3D ((a1) & ~(b1)); __attribute_= _((__fallthrough__)); case 1: a0 =3D a->sig[0]; b0 =3D b->sig[0]; r->sig[0]= =3D ((a0) & ~(b0)); break; default: do { __attribute__((__noreturn__)) ext= ern void __compiletime_assert_168(void) ; if (!(!(1))) __compiletime_assert= _168(); } while (0); } }=0D # 186 "./include/linux/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void signotset(sigset_t *set= ) { switch ((64 / (8 * 8))) { case 4: set->sig[3] =3D (~(set->sig[3])); set= ->sig[2] =3D (~(set->sig[2])); __attribute__((__fallthrough__)); case 2: se= t->sig[1] =3D (~(set->sig[1])); __attribute__((__fallthrough__)); case 1: s= et->sig[0] =3D (~(set->sig[0])); break; default: do { __attribute__((__nore= turn__)) extern void __compiletime_assert_169(void) ; if (!(!(1))) __compil= etime_assert_169(); } while (0); } }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigemptyset(sigset_t *s= et)=0D {=0D switch ((64 / (8 * 8))) {=0D default:=0D memset(set, 0, sizeof(sigset_t));=0D break;=0D case 2: set->sig[1] =3D 0;=0D __attribute__((__fallthrough__));=0D case 1: set->sig[0] =3D 0;=0D break;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigfillset(sigset_t *se= t)=0D {=0D switch ((64 / (8 * 8))) {=0D default:=0D memset(set, -1, sizeof(sigset_t));=0D break;=0D case 2: set->sig[1] =3D -1;=0D __attribute__((__fallthrough__));=0D case 1: set->sig[0] =3D -1;=0D break;=0D }=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigaddsetmask(sigset_t = *set, unsigned long mask)=0D {=0D set->sig[0] |=3D mask;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sigdelsetmask(sigset_t = *set, unsigned long mask)=0D {=0D set->sig[0] &=3D ~mask;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sigtestsetmask(sigset_t = *set, unsigned long mask)=0D {=0D return (set->sig[0] & mask) !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void siginitset(sigset_t *se= t, unsigned long mask)=0D {=0D set->sig[0] =3D mask;=0D switch ((64 / (8 * 8))) {=0D default:=0D memset(&set->sig[1], 0, sizeof(long)*((64 / (8 * 8))-1));=0D break;=0D case 2: set->sig[1] =3D 0;=0D break;=0D case 1: ;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void siginitsetinv(sigset_t = *set, unsigned long mask)=0D {=0D set->sig[0] =3D ~mask;=0D switch ((64 / (8 * 8))) {=0D default:=0D memset(&set->sig[1], -1, sizeof(long)*((64 / (8 * 8))-1));=0D break;=0D case 2: set->sig[1] =3D -1;=0D break;=0D case 1: ;=0D }=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_sigpending(struct = sigpending *sig)=0D {=0D sigemptyset(&sig->signal);=0D INIT_LIST_HEAD(&sig->list);=0D }=0D =0D extern void flush_sigqueue(struct sigpending *queue);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int valid_signal(unsigned lo= ng sig)=0D {=0D return sig <=3D 64 ? 1 : 0;=0D }=0D =0D struct timespec;=0D struct pt_regs;=0D enum pid_type;=0D =0D extern int next_signal(struct sigpending *pending, sigset_t *mask);=0D extern int do_send_sig_info(int sig, struct kernel_siginfo *info,=0D struct task_struct *p, enum pid_type type);=0D extern int group_send_sig_info(int sig, struct kernel_siginfo *info,=0D struct task_struct *p, enum pid_type type);=0D extern int __group_send_sig_info(int, struct kernel_siginfo *, struct task_= struct *);=0D extern int sigprocmask(int, sigset_t *, sigset_t *);=0D extern void set_current_blocked(sigset_t *);=0D extern void __set_current_blocked(const sigset_t *);=0D extern int show_unhandled_signals;=0D =0D extern bool get_signal(struct ksignal *ksig);=0D extern void signal_setup_done(int failed, struct ksignal *ksig, int steppin= g);=0D extern void exit_signals(struct task_struct *tsk);=0D extern void kernel_sigaction(int, __sighandler_t);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void allow_signal(int sig)=0D {=0D =0D =0D =0D =0D =0D kernel_sigaction(sig, (( __sighandler_t)2));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void allow_kernel_signal(int= sig)=0D {=0D =0D =0D =0D =0D =0D kernel_sigaction(sig, (( __sighandler_t)3));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void disallow_signal(int sig= )=0D {=0D kernel_sigaction(sig, (( __sighandler_t)1));=0D }=0D =0D extern struct kmem_cache *sighand_cachep;=0D =0D extern bool unhandled_signal(struct task_struct *tsk, int sig);=0D # 453 "./include/linux/signal.h"=0D void signals_init(void);=0D =0D int restore_altstack(const stack_t *);=0D int __save_altstack(stack_t *, unsigned long);=0D # 469 "./include/linux/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sigaltstack_size_valid(= size_t size) { return true; }=0D =0D =0D =0D struct seq_file;=0D extern void render_sigset_t(struct seq_file *, const char *, sigset_t *);=0D # 483 "./include/linux/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *arch_untagged_si_addr(= void *addr,=0D unsigned long sig,=0D unsigned long si_code)=0D {=0D return addr;=0D }=0D # 7 "./include/linux/sched/signal.h" 2=0D # 1 "./include/linux/sched.h" 1=0D # 10 "./include/linux/sched.h"=0D # 1 "./include/uapi/linux/sched.h" 1=0D # 92 "./include/uapi/linux/sched.h"=0D struct clone_args {=0D __u64 __attribute__((aligned(8))) flags;=0D __u64 __attribute__((aligned(8))) pidfd;=0D __u64 __attribute__((aligned(8))) child_tid;=0D __u64 __attribute__((aligned(8))) parent_tid;=0D __u64 __attribute__((aligned(8))) exit_signal;=0D __u64 __attribute__((aligned(8))) stack;=0D __u64 __attribute__((aligned(8))) stack_size;=0D __u64 __attribute__((aligned(8))) tls;=0D __u64 __attribute__((aligned(8))) set_tid;=0D __u64 __attribute__((aligned(8))) set_tid_size;=0D __u64 __attribute__((aligned(8))) cgroup;=0D };=0D # 11 "./include/linux/sched.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/sem.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/sem.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/ipc.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/rhashtable-types.h" 1=0D # 17 "./include/linux/rhashtable-types.h"=0D struct rhash_head {=0D struct rhash_head *next;=0D };=0D =0D struct rhlist_head {=0D struct rhash_head rhead;=0D struct rhlist_head *next;=0D };=0D =0D struct bucket_table;=0D =0D =0D =0D =0D =0D =0D struct rhashtable_compare_arg {=0D struct rhashtable *ht;=0D const void *key;=0D };=0D =0D typedef u32 (*rht_hashfn_t)(const void *data, u32 len, u32 seed);=0D typedef u32 (*rht_obj_hashfn_t)(const void *data, u32 len, u32 seed);=0D typedef int (*rht_obj_cmpfn_t)(struct rhashtable_compare_arg *arg,=0D const void *obj);=0D # 56 "./include/linux/rhashtable-types.h"=0D struct rhashtable_params {=0D u16 nelem_hint;=0D u16 key_len;=0D u16 key_offset;=0D u16 head_offset;=0D unsigned int max_size;=0D u16 min_size;=0D bool automatic_shrinking;=0D rht_hashfn_t hashfn;=0D rht_obj_hashfn_t obj_hashfn;=0D rht_obj_cmpfn_t obj_cmpfn;=0D };=0D # 81 "./include/linux/rhashtable-types.h"=0D struct rhashtable {=0D struct bucket_table *tbl;=0D unsigned int key_len;=0D unsigned int max_elems;=0D struct rhashtable_params p;=0D bool rhlist;=0D struct work_struct run_work;=0D struct mutex mutex;=0D spinlock_t lock;=0D atomic_t nelems;=0D };=0D =0D =0D =0D =0D =0D struct rhltable {=0D struct rhashtable ht;=0D };=0D =0D =0D =0D =0D =0D =0D struct rhashtable_walker {=0D struct list_head list;=0D struct bucket_table *tbl;=0D };=0D # 120 "./include/linux/rhashtable-types.h"=0D struct rhashtable_iter {=0D struct rhashtable *ht;=0D struct rhash_head *p;=0D struct rhlist_head *list;=0D struct rhashtable_walker walker;=0D unsigned int slot;=0D unsigned int skip;=0D bool end_of_table;=0D };=0D =0D int rhashtable_init(struct rhashtable *ht,=0D const struct rhashtable_params *params);=0D int rhltable_init(struct rhltable *hlt,=0D const struct rhashtable_params *params);=0D # 8 "./include/linux/ipc.h" 2=0D # 1 "./include/uapi/linux/ipc.h" 1=0D # 10 "./include/uapi/linux/ipc.h"=0D struct ipc_perm=0D {=0D __kernel_key_t key;=0D __kernel_uid_t uid;=0D __kernel_gid_t gid;=0D __kernel_uid_t cuid;=0D __kernel_gid_t cgid;=0D __kernel_mode_t mode;=0D unsigned short seq;=0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/ipcbuf.h" 1=0D # 1 "./include/uapi/asm-generic/ipcbuf.h" 1=0D # 22 "./include/uapi/asm-generic/ipcbuf.h"=0D struct ipc64_perm {=0D __kernel_key_t key;=0D __kernel_uid32_t uid;=0D __kernel_gid32_t gid;=0D __kernel_uid32_t cuid;=0D __kernel_gid32_t cgid;=0D __kernel_mode_t mode;=0D =0D unsigned char __pad1[4 - sizeof(__kernel_mode_t)];=0D unsigned short seq;=0D unsigned short __pad2;=0D __kernel_ulong_t __unused1;=0D __kernel_ulong_t __unused2;=0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/ipcbuf.h" 2=0D # 23 "./include/uapi/linux/ipc.h" 2=0D # 58 "./include/uapi/linux/ipc.h"=0D struct ipc_kludge {=0D struct msgbuf *msgp;=0D long msgtyp;=0D };=0D # 9 "./include/linux/ipc.h" 2=0D =0D =0D =0D struct kern_ipc_perm {=0D spinlock_t lock;=0D bool deleted;=0D int id;=0D key_t key;=0D kuid_t uid;=0D kgid_t gid;=0D kuid_t cuid;=0D kgid_t cgid;=0D umode_t mode;=0D unsigned long seq;=0D void *security;=0D =0D struct rhash_head khtnode;=0D =0D struct callback_head rcu;=0D refcount_t refcount;=0D } __attribute__((__aligned__((1 << 6)))) ;=0D # 6 "./include/uapi/linux/sem.h" 2=0D # 25 "./include/uapi/linux/sem.h"=0D struct semid_ds {=0D struct ipc_perm sem_perm;=0D __kernel_old_time_t sem_otime;=0D __kernel_old_time_t sem_ctime;=0D struct sem *sem_base;=0D struct sem_queue *sem_pending;=0D struct sem_queue **sem_pending_last;=0D struct sem_undo *undo;=0D unsigned short sem_nsems;=0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/sembuf.h" 1=0D # 1 "./include/uapi/asm-generic/sembuf.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/ipcbuf.h" 1=0D # 7 "./include/uapi/asm-generic/sembuf.h" 2=0D # 29 "./include/uapi/asm-generic/sembuf.h"=0D struct semid64_ds {=0D struct ipc64_perm sem_perm;=0D =0D long sem_otime;=0D long sem_ctime;=0D =0D =0D =0D =0D =0D =0D unsigned long sem_nsems;=0D unsigned long __unused3;=0D unsigned long __unused4;=0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/sembuf.h" 2=0D # 38 "./include/uapi/linux/sem.h" 2=0D =0D =0D struct sembuf {=0D unsigned short sem_num;=0D short sem_op;=0D short sem_flg;=0D };=0D =0D =0D union semun {=0D int val;=0D struct semid_ds *buf;=0D unsigned short *array;=0D struct seminfo *__buf;=0D void *__pad;=0D };=0D =0D struct seminfo {=0D int semmap;=0D int semmni;=0D int semmns;=0D int semmnu;=0D int semmsl;=0D int semopm;=0D int semume;=0D int semusz;=0D int semvmx;=0D int semaem;=0D };=0D # 6 "./include/linux/sem.h" 2=0D =0D struct task_struct;=0D struct sem_undo_list;=0D =0D =0D =0D struct sysv_sem {=0D struct sem_undo_list *undo_list;=0D };=0D =0D extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk)= ;=0D extern void exit_sem(struct task_struct *tsk);=0D # 16 "./include/linux/sched.h" 2=0D # 1 "./include/linux/shm.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/shm.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/hugetlb_encode.h" 1=0D # 8 "./include/uapi/linux/shm.h" 2=0D # 28 "./include/uapi/linux/shm.h"=0D struct shmid_ds {=0D struct ipc_perm shm_perm;=0D int shm_segsz;=0D __kernel_old_time_t shm_atime;=0D __kernel_old_time_t shm_dtime;=0D __kernel_old_time_t shm_ctime;=0D __kernel_ipc_pid_t shm_cpid;=0D __kernel_ipc_pid_t shm_lpid;=0D unsigned short shm_nattch;=0D unsigned short shm_unused;=0D void *shm_unused2;=0D void *shm_unused3;=0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/shmbuf.h" 1=0D # 1 "./include/uapi/asm-generic/shmbuf.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/ipcbuf.h" 1=0D # 7 "./include/uapi/asm-generic/shmbuf.h" 2=0D # 1 "./arch/riscv/include/generated/uapi/asm/posix_types.h" 1=0D # 8 "./include/uapi/asm-generic/shmbuf.h" 2=0D # 27 "./include/uapi/asm-generic/shmbuf.h"=0D struct shmid64_ds {=0D struct ipc64_perm shm_perm;=0D __kernel_size_t shm_segsz;=0D =0D long shm_atime;=0D long shm_dtime;=0D long shm_ctime;=0D # 42 "./include/uapi/asm-generic/shmbuf.h"=0D __kernel_pid_t shm_cpid;=0D __kernel_pid_t shm_lpid;=0D unsigned long shm_nattch;=0D unsigned long __unused4;=0D unsigned long __unused5;=0D };=0D =0D struct shminfo64 {=0D unsigned long shmmax;=0D unsigned long shmmin;=0D unsigned long shmmni;=0D unsigned long shmseg;=0D unsigned long shmall;=0D unsigned long __unused1;=0D unsigned long __unused2;=0D unsigned long __unused3;=0D unsigned long __unused4;=0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/shmbuf.h" 2=0D # 44 "./include/uapi/linux/shm.h" 2=0D # 93 "./include/uapi/linux/shm.h"=0D struct shminfo {=0D int shmmax;=0D int shmmin;=0D int shmmni;=0D int shmseg;=0D int shmall;=0D };=0D =0D struct shm_info {=0D int used_ids;=0D __kernel_ulong_t shm_tot;=0D __kernel_ulong_t shm_rss;=0D __kernel_ulong_t shm_swp;=0D __kernel_ulong_t swap_attempts;=0D __kernel_ulong_t swap_successes;=0D };=0D # 8 "./include/linux/shm.h" 2=0D # 1 "./arch/riscv/include/generated/asm/shmparam.h" 1=0D # 1 "./include/asm-generic/shmparam.h" 1=0D # 2 "./arch/riscv/include/generated/asm/shmparam.h" 2=0D # 9 "./include/linux/shm.h" 2=0D =0D struct file;=0D =0D =0D struct sysv_shm {=0D struct list_head shm_clist;=0D };=0D =0D long do_shmat(int shmid, char *shmaddr, int shmflg, unsigned long *addr,=0D unsigned long shmlba);=0D bool is_file_shm_hugepages(struct file *file);=0D void exit_shm(struct task_struct *task);=0D # 17 "./include/linux/sched.h" 2=0D =0D # 1 "./include/linux/plist.h" 1=0D # 82 "./include/linux/plist.h"=0D struct plist_head {=0D struct list_head node_list;=0D };=0D =0D struct plist_node {=0D int prio;=0D struct list_head prio_list;=0D struct list_head node_list;=0D };=0D # 124 "./include/linux/plist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D plist_head_init(struct plist_head *head)=0D {=0D INIT_LIST_HEAD(&head->node_list);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void plist_node_init(struct = plist_node *node, int prio)=0D {=0D node->prio =3D prio;=0D INIT_LIST_HEAD(&node->prio_list);=0D INIT_LIST_HEAD(&node->node_list);=0D }=0D =0D extern void plist_add(struct plist_node *node, struct plist_head *head);=0D extern void plist_del(struct plist_node *node, struct plist_head *head);=0D =0D extern void plist_requeue(struct plist_node *node, struct plist_head *head)= ;=0D # 213 "./include/linux/plist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int plist_head_empty(const s= truct plist_head *head)=0D {=0D return list_empty(&head->node_list);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int plist_node_empty(const s= truct plist_node *node)=0D {=0D return list_empty(&node->node_list);=0D }=0D # 283 "./include/linux/plist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct plist_node *plist_fir= st(const struct plist_head *head)=0D {=0D return ({ void *__mptr =3D (void *)(head->node_list.next); _Static_assert(= __builtin_types_compatible_p(typeof(*(head->node_list.next)), typeof(((stru= ct plist_node *)0)->node_list)) || __builtin_types_compatible_p(typeof(*(he= ad->node_list.next)), typeof(void)), "pointer type mismatch in container_of= ()"); ((struct plist_node *)(__mptr - __builtin_offsetof(struct plist_node,= node_list))); });=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct plist_node *plist_las= t(const struct plist_head *head)=0D {=0D return ({ void *__mptr =3D (void *)(head->node_list.prev); _Static_assert(= __builtin_types_compatible_p(typeof(*(head->node_list.prev)), typeof(((stru= ct plist_node *)0)->node_list)) || __builtin_types_compatible_p(typeof(*(he= ad->node_list.prev)), typeof(void)), "pointer type mismatch in container_of= ()"); ((struct plist_node *)(__mptr - __builtin_offsetof(struct plist_node,= node_list))); });=0D =0D }=0D # 19 "./include/linux/sched.h" 2=0D # 1 "./include/linux/hrtimer.h" 1=0D # 15 "./include/linux/hrtimer.h"=0D # 1 "./include/linux/hrtimer_defs.h" 1=0D # 16 "./include/linux/hrtimer.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/timerqueue.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct timerqueue_node {=0D struct rb_node node;=0D ktime_t expires;=0D };=0D =0D struct timerqueue_head {=0D struct rb_root_cached rb_root;=0D };=0D =0D =0D extern bool timerqueue_add(struct timerqueue_head *head,=0D struct timerqueue_node *node);=0D extern bool timerqueue_del(struct timerqueue_head *head,=0D struct timerqueue_node *node);=0D extern struct timerqueue_node *timerqueue_iterate_next(=0D struct timerqueue_node *node);=0D # 33 "./include/linux/timerqueue.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct timerqueue_node *timerqueue_getnext(struct timerqueue_head *head)=0D {=0D struct rb_node *leftmost =3D (&head->rb_root)->rb_leftmost;=0D =0D return ({ void *__mptr =3D (void *)(leftmost); _Static_assert(__builtin_ty= pes_compatible_p(typeof(*(leftmost)), typeof(((struct timerqueue_node *)0)-= >node)) || __builtin_types_compatible_p(typeof(*(leftmost)), typeof(void)),= "pointer type mismatch in container_of()"); ((struct timerqueue_node *)(__= mptr - __builtin_offsetof(struct timerqueue_node, node))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void timerqueue_init(struct = timerqueue_node *node)=0D {=0D ((&node->node)->__rb_parent_color =3D (unsigned long)(&node->node));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool timerqueue_node_queued(= struct timerqueue_node *node)=0D {=0D return !((&node->node)->__rb_parent_color =3D=3D (unsigned long)(&node->no= de));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool timerqueue_node_expires= (struct timerqueue_node *node)=0D {=0D return node->expires;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void timerqueue_init_head(st= ruct timerqueue_head *head)=0D {=0D head->rb_root =3D (struct rb_root_cached) { {((void *)0), }, ((void *)0) }= ;=0D }=0D # 23 "./include/linux/hrtimer.h" 2=0D =0D struct hrtimer_clock_base;=0D struct hrtimer_cpu_base;=0D # 39 "./include/linux/hrtimer.h"=0D enum hrtimer_mode {=0D HRTIMER_MODE_ABS =3D 0x00,=0D HRTIMER_MODE_REL =3D 0x01,=0D HRTIMER_MODE_PINNED =3D 0x02,=0D HRTIMER_MODE_SOFT =3D 0x04,=0D HRTIMER_MODE_HARD =3D 0x08,=0D =0D HRTIMER_MODE_ABS_PINNED =3D HRTIMER_MODE_ABS | HRTIMER_MODE_PINNED,=0D HRTIMER_MODE_REL_PINNED =3D HRTIMER_MODE_REL | HRTIMER_MODE_PINNED,=0D =0D HRTIMER_MODE_ABS_SOFT =3D HRTIMER_MODE_ABS | HRTIMER_MODE_SOFT,=0D HRTIMER_MODE_REL_SOFT =3D HRTIMER_MODE_REL | HRTIMER_MODE_SOFT,=0D =0D HRTIMER_MODE_ABS_PINNED_SOFT =3D HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_SO= FT,=0D HRTIMER_MODE_REL_PINNED_SOFT =3D HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_SO= FT,=0D =0D HRTIMER_MODE_ABS_HARD =3D HRTIMER_MODE_ABS | HRTIMER_MODE_HARD,=0D HRTIMER_MODE_REL_HARD =3D HRTIMER_MODE_REL | HRTIMER_MODE_HARD,=0D =0D HRTIMER_MODE_ABS_PINNED_HARD =3D HRTIMER_MODE_ABS_PINNED | HRTIMER_MODE_HA= RD,=0D HRTIMER_MODE_REL_PINNED_HARD =3D HRTIMER_MODE_REL_PINNED | HRTIMER_MODE_HA= RD,=0D };=0D =0D =0D =0D =0D enum hrtimer_restart {=0D HRTIMER_NORESTART,=0D HRTIMER_RESTART,=0D };=0D # 118 "./include/linux/hrtimer.h"=0D struct hrtimer {=0D struct timerqueue_node node;=0D ktime_t _softexpires;=0D enum hrtimer_restart (*function)(struct hrtimer *);=0D struct hrtimer_clock_base *base;=0D u8 state;=0D u8 is_rel;=0D u8 is_soft;=0D u8 is_hard;=0D };=0D # 136 "./include/linux/hrtimer.h"=0D struct hrtimer_sleeper {=0D struct hrtimer timer;=0D struct task_struct *task;=0D };=0D # 159 "./include/linux/hrtimer.h"=0D struct hrtimer_clock_base {=0D struct hrtimer_cpu_base *cpu_base;=0D unsigned int index;=0D clockid_t clockid;=0D seqcount_raw_spinlock_t seq;=0D struct hrtimer *running;=0D struct timerqueue_head active;=0D ktime_t (*get_time)(void);=0D ktime_t offset;=0D } __attribute__((__aligned__((1 << 6))));=0D =0D enum hrtimer_base_type {=0D HRTIMER_BASE_MONOTONIC,=0D HRTIMER_BASE_REALTIME,=0D HRTIMER_BASE_BOOTTIME,=0D HRTIMER_BASE_TAI,=0D HRTIMER_BASE_MONOTONIC_SOFT,=0D HRTIMER_BASE_REALTIME_SOFT,=0D HRTIMER_BASE_BOOTTIME_SOFT,=0D HRTIMER_BASE_TAI_SOFT,=0D HRTIMER_MAX_CLOCK_BASES,=0D };=0D # 214 "./include/linux/hrtimer.h"=0D struct hrtimer_cpu_base {=0D raw_spinlock_t lock;=0D unsigned int cpu;=0D unsigned int active_bases;=0D unsigned int clock_was_set_seq;=0D unsigned int hres_active : 1,=0D in_hrtirq : 1,=0D hang_detected : 1,=0D softirq_activated : 1;=0D =0D unsigned int nr_events;=0D unsigned short nr_retries;=0D unsigned short nr_hangs;=0D unsigned int max_hang_time;=0D =0D =0D =0D =0D =0D ktime_t expires_next;=0D struct hrtimer *next_timer;=0D ktime_t softirq_expires_next;=0D struct hrtimer *softirq_next_timer;=0D struct hrtimer_clock_base clock_base[HRTIMER_MAX_CLOCK_BASES];=0D } __attribute__((__aligned__((1 << 6))));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_set_expires(str= uct hrtimer *timer, ktime_t time)=0D {=0D timer->node.expires =3D time;=0D timer->_softexpires =3D time;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_set_expires_ran= ge(struct hrtimer *timer, ktime_t time, ktime_t delta)=0D {=0D timer->_softexpires =3D time;=0D timer->node.expires =3D ktime_add_safe(time, delta);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_set_expires_ran= ge_ns(struct hrtimer *timer, ktime_t time, u64 delta)=0D {=0D timer->_softexpires =3D time;=0D timer->node.expires =3D ktime_add_safe(time, ns_to_ktime(delta));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_set_expires_tv6= 4(struct hrtimer *timer, s64 tv64)=0D {=0D timer->node.expires =3D tv64;=0D timer->_softexpires =3D tv64;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_add_expires(str= uct hrtimer *timer, ktime_t time)=0D {=0D timer->node.expires =3D ktime_add_safe(timer->node.expires, time);=0D timer->_softexpires =3D ktime_add_safe(timer->_softexpires, time);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_add_expires_ns(= struct hrtimer *timer, u64 ns)=0D {=0D timer->node.expires =3D ((timer->node.expires) + (ns));=0D timer->_softexpires =3D ((timer->_softexpires) + (ns));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t hrtimer_get_expires(= const struct hrtimer *timer)=0D {=0D return timer->node.expires;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t hrtimer_get_softexpi= res(const struct hrtimer *timer)=0D {=0D return timer->_softexpires;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 hrtimer_get_expires_tv64= (const struct hrtimer *timer)=0D {=0D return timer->node.expires;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 hrtimer_get_softexpires_= tv64(const struct hrtimer *timer)=0D {=0D return timer->_softexpires;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 hrtimer_get_expires_ns(c= onst struct hrtimer *timer)=0D {=0D return ktime_to_ns(timer->node.expires);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t hrtimer_expires_rema= ining(const struct hrtimer *timer)=0D {=0D return ((timer->node.expires) - (timer->base->get_time()));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t hrtimer_cb_get_time(= struct hrtimer *timer)=0D {=0D return timer->base->get_time();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hrtimer_is_hres_active(s= truct hrtimer *timer)=0D {=0D return 1 ?=0D timer->base->cpu_base->hres_active : 0;=0D }=0D =0D =0D struct clock_event_device;=0D =0D extern void hrtimer_interrupt(struct clock_event_device *dev);=0D =0D extern unsigned int hrtimer_resolution;=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t=0D __hrtimer_expires_remaining_adjusted(const struct hrtimer *timer, ktime_t n= ow)=0D {=0D ktime_t rem =3D ((timer->node.expires) - (now));=0D =0D =0D =0D =0D =0D if (0 && timer->is_rel)=0D rem -=3D hrtimer_resolution;=0D return rem;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t=0D hrtimer_expires_remaining_adjusted(const struct hrtimer *timer)=0D {=0D return __hrtimer_expires_remaining_adjusted(timer,=0D timer->base->get_time());=0D }=0D =0D =0D extern void timerfd_clock_was_set(void);=0D extern void timerfd_resume(void);=0D =0D =0D =0D =0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct tick_= device) tick_cpu_device;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_cancel_wait_run= ning(struct hrtimer *timer)=0D {=0D cpu_relax();=0D }=0D =0D =0D =0D =0D =0D extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock,=0D enum hrtimer_mode mode);=0D extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl, clockid_t cloc= k_id,=0D enum hrtimer_mode mode);=0D # 386 "./include/linux/hrtimer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_init_on_stack(s= truct hrtimer *timer,=0D clockid_t which_clock,=0D enum hrtimer_mode mode)=0D {=0D hrtimer_init(timer, which_clock, mode);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_init_sleeper_on= _stack(struct hrtimer_sleeper *sl,=0D clockid_t clock_id,=0D enum hrtimer_mode mode)=0D {=0D hrtimer_init_sleeper(sl, clock_id, mode);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_hrtimer_on_stac= k(struct hrtimer *timer) { }=0D =0D =0D =0D extern void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,=0D u64 range_ns, const enum hrtimer_mode mode);=0D # 415 "./include/linux/hrtimer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_start(struct hr= timer *timer, ktime_t tim,=0D const enum hrtimer_mode mode)=0D {=0D hrtimer_start_range_ns(timer, tim, 0, mode);=0D }=0D =0D extern int hrtimer_cancel(struct hrtimer *timer);=0D extern int hrtimer_try_to_cancel(struct hrtimer *timer);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_start_expires(s= truct hrtimer *timer,=0D enum hrtimer_mode mode)=0D {=0D u64 delta;=0D ktime_t soft, hard;=0D soft =3D hrtimer_get_softexpires(timer);=0D hard =3D hrtimer_get_expires(timer);=0D delta =3D ktime_to_ns(((hard) - (soft)));=0D hrtimer_start_range_ns(timer, soft, delta, mode);=0D }=0D =0D void hrtimer_sleeper_start_expires(struct hrtimer_sleeper *sl,=0D enum hrtimer_mode mode);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hrtimer_restart(struct = hrtimer *timer)=0D {=0D hrtimer_start_expires(timer, HRTIMER_MODE_ABS);=0D }=0D =0D =0D extern ktime_t __hrtimer_get_remaining(const struct hrtimer *timer, bool ad= just);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t hrtimer_get_remainin= g(const struct hrtimer *timer)=0D {=0D return __hrtimer_get_remaining(timer, false);=0D }=0D =0D extern u64 hrtimer_get_next_event(void);=0D extern u64 hrtimer_next_event_without(const struct hrtimer *exclude);=0D =0D extern bool hrtimer_active(const struct hrtimer *timer);=0D # 468 "./include/linux/hrtimer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hrtimer_is_queued(struc= t hrtimer *timer)=0D {=0D =0D return !!(({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_170(void) ; if (!((sizeof(timer->state) =3D=3D sizeof(char) || sizeo= f(timer->state) =3D=3D sizeof(short) || sizeof(timer->state) =3D=3D sizeof(= int) || sizeof(timer->state) =3D=3D sizeof(long)) || sizeof(timer->state) = =3D=3D sizeof(long long))) __compiletime_assert_170(); } while (0); (*(cons= t volatile typeof( _Generic((timer->state), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: (timer->state))) *)&(timer->state)); }) & 0x01);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hrtimer_callback_running= (struct hrtimer *timer)=0D {=0D return timer->base->running =3D=3D timer;=0D }=0D =0D =0D extern u64=0D hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval);=0D # 503 "./include/linux/hrtimer.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 hrtimer_forward_now(stru= ct hrtimer *timer,=0D ktime_t interval)=0D {=0D return hrtimer_forward(timer, timer->base->get_time(), interval);=0D }=0D =0D =0D =0D extern int nanosleep_copyout(struct restart_block *, struct timespec64 *);= =0D extern long hrtimer_nanosleep(ktime_t rqtp, const enum hrtimer_mode mode,=0D const clockid_t clockid);=0D =0D extern int schedule_hrtimeout_range(ktime_t *expires, u64 delta,=0D const enum hrtimer_mode mode);=0D extern int schedule_hrtimeout_range_clock(ktime_t *expires,=0D u64 delta,=0D const enum hrtimer_mode mode,=0D clockid_t clock_id);=0D extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mod= e);=0D =0D =0D extern void hrtimer_run_queues(void);=0D =0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) hrtimers_init(void);=0D =0D =0D extern void sysrq_timer_list_show(void);=0D =0D int hrtimers_prepare_cpu(unsigned int cpu);=0D =0D int hrtimers_dead_cpu(unsigned int cpu);=0D # 20 "./include/linux/sched.h" 2=0D =0D # 1 "./include/linux/seccomp.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/seccomp.h" 1=0D # 60 "./include/uapi/linux/seccomp.h"=0D struct seccomp_data {=0D int nr;=0D __u32 arch;=0D __u64 instruction_pointer;=0D __u64 args[6];=0D };=0D =0D struct seccomp_notif_sizes {=0D __u16 seccomp_notif;=0D __u16 seccomp_notif_resp;=0D __u16 seccomp_data;=0D };=0D =0D struct seccomp_notif {=0D __u64 id;=0D __u32 pid;=0D __u32 flags;=0D struct seccomp_data data;=0D };=0D # 109 "./include/uapi/linux/seccomp.h"=0D struct seccomp_notif_resp {=0D __u64 id;=0D __s64 val;=0D __s32 error;=0D __u32 flags;=0D };=0D # 128 "./include/uapi/linux/seccomp.h"=0D struct seccomp_notif_addfd {=0D __u64 id;=0D __u32 flags;=0D __u32 srcfd;=0D __u32 newfd;=0D __u32 newfd_flags;=0D };=0D # 6 "./include/linux/seccomp.h" 2=0D # 65 "./include/linux/seccomp.h"=0D struct seccomp { };=0D struct seccomp_filter { };=0D struct seccomp_data;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int secure_computing(void) {= return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __secure_computing(const= struct seccomp_data *sd) { return 0; }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long prctl_get_seccomp(void)= =0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long prctl_set_seccomp(unsig= ned long arg2, char *arg3)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int seccomp_mode(struct secc= omp *s)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seccomp_filter_release(= struct task_struct *tsk)=0D {=0D return;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void get_seccomp_filter(stru= ct task_struct *tsk)=0D {=0D return;=0D }=0D # 112 "./include/linux/seccomp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long seccomp_get_filter(stru= ct task_struct *task,=0D unsigned long n, void *data)=0D {=0D return -22;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long seccomp_get_metadata(st= ruct task_struct *task,=0D unsigned long filter_off,=0D void *data)=0D {=0D return -22;=0D }=0D # 22 "./include/linux/sched.h" 2=0D =0D =0D =0D # 1 "./include/linux/resource.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/resource.h" 1=0D # 24 "./include/uapi/linux/resource.h"=0D struct rusage {=0D struct __kernel_old_timeval ru_utime;=0D struct __kernel_old_timeval ru_stime;=0D __kernel_long_t ru_maxrss;=0D __kernel_long_t ru_ixrss;=0D __kernel_long_t ru_idrss;=0D __kernel_long_t ru_isrss;=0D __kernel_long_t ru_minflt;=0D __kernel_long_t ru_majflt;=0D __kernel_long_t ru_nswap;=0D __kernel_long_t ru_inblock;=0D __kernel_long_t ru_oublock;=0D __kernel_long_t ru_msgsnd;=0D __kernel_long_t ru_msgrcv;=0D __kernel_long_t ru_nsignals;=0D __kernel_long_t ru_nvcsw;=0D __kernel_long_t ru_nivcsw;=0D };=0D =0D struct rlimit {=0D __kernel_ulong_t rlim_cur;=0D __kernel_ulong_t rlim_max;=0D };=0D =0D =0D =0D struct rlimit64 {=0D __u64 rlim_cur;=0D __u64 rlim_max;=0D };=0D # 85 "./include/uapi/linux/resource.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/resource.h" 1=0D # 1 "./include/asm-generic/resource.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/asm-generic/resource.h" 1=0D # 6 "./include/asm-generic/resource.h" 2=0D # 2 "./arch/riscv/include/generated/uapi/asm/resource.h" 2=0D # 86 "./include/uapi/linux/resource.h" 2=0D # 6 "./include/linux/resource.h" 2=0D =0D =0D struct task_struct;=0D =0D void getrusage(struct task_struct *p, int who, struct rusage *ru);=0D # 26 "./include/linux/sched.h" 2=0D # 1 "./include/linux/latencytop.h" 1=0D # 14 "./include/linux/latencytop.h"=0D struct task_struct;=0D # 46 "./include/linux/latencytop.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D account_scheduler_latency(struct task_struct *task, int usecs, int inter)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_latency_traci= ng(struct task_struct *p)=0D {=0D }=0D # 27 "./include/linux/sched.h" 2=0D # 1 "./include/linux/sched/prio.h" 1=0D # 32 "./include/linux/sched/prio.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long nice_to_rlimit(long nic= e)=0D {=0D return (19 - nice + 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long rlimit_to_nice(long pri= o)=0D {=0D return (19 - prio + 1);=0D }=0D # 28 "./include/linux/sched.h" 2=0D # 1 "./include/linux/sched/types.h" 1=0D # 17 "./include/linux/sched/types.h"=0D struct task_cputime {=0D u64 stime;=0D u64 utime;=0D unsigned long long sum_exec_runtime;=0D };=0D # 29 "./include/linux/sched.h" 2=0D =0D # 1 "./include/linux/syscall_user_dispatch.h" 1=0D # 26 "./include/linux/syscall_user_dispatch.h"=0D struct syscall_user_dispatch {};=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int set_syscall_user_dispatc= h(unsigned long mode, unsigned long offset,=0D unsigned long len, char *selector)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_syscall_work_sysc= all_user_dispatch(struct task_struct *tsk)=0D {=0D }=0D # 31 "./include/linux/sched.h" 2=0D =0D # 1 "./include/linux/task_io_accounting.h" 1=0D # 12 "./include/linux/task_io_accounting.h"=0D struct task_io_accounting {=0D # 46 "./include/linux/task_io_accounting.h"=0D };=0D # 33 "./include/linux/sched.h" 2=0D # 1 "./include/linux/posix-timers.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/alarmtimer.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct rtc_device;=0D =0D enum alarmtimer_type {=0D ALARM_REALTIME,=0D ALARM_BOOTTIME,=0D =0D =0D ALARM_NUMTYPE,=0D =0D =0D ALARM_REALTIME_FREEZER,=0D ALARM_BOOTTIME_FREEZER,=0D };=0D =0D enum alarmtimer_restart {=0D ALARMTIMER_NORESTART,=0D ALARMTIMER_RESTART,=0D };=0D # 42 "./include/linux/alarmtimer.h"=0D struct alarm {=0D struct timerqueue_node node;=0D struct hrtimer timer;=0D enum alarmtimer_restart (*function)(struct alarm *, ktime_t now);=0D enum alarmtimer_type type;=0D int state;=0D void *data;=0D };=0D =0D void alarm_init(struct alarm *alarm, enum alarmtimer_type type,=0D enum alarmtimer_restart (*function)(struct alarm *, ktime_t));=0D void alarm_start(struct alarm *alarm, ktime_t start);=0D void alarm_start_relative(struct alarm *alarm, ktime_t start);=0D void alarm_restart(struct alarm *alarm);=0D int alarm_try_to_cancel(struct alarm *alarm);=0D int alarm_cancel(struct alarm *alarm);=0D =0D u64 alarm_forward(struct alarm *alarm, ktime_t now, ktime_t interval);=0D u64 alarm_forward_now(struct alarm *alarm, ktime_t interval);=0D ktime_t alarm_expires_remaining(const struct alarm *alarm);=0D =0D =0D =0D struct rtc_device *alarmtimer_get_rtcdev(void);=0D # 8 "./include/linux/posix-timers.h" 2=0D =0D =0D struct kernel_siginfo;=0D struct task_struct;=0D # 38 "./include/linux/posix-timers.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) clockid_t make_process_cpucl= ock(const unsigned int pid,=0D const clockid_t clock)=0D {=0D return ((~pid) << 3) | clock;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) clockid_t make_thread_cpuclo= ck(const unsigned int tid,=0D const clockid_t clock)=0D {=0D return make_process_cpuclock(tid, clock | 4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) clockid_t fd_to_clockid(cons= t int fd)=0D {=0D return make_process_cpuclock((unsigned int) fd, 3);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int clockid_to_fd(const cloc= kid_t clk)=0D {=0D return ~(clk >> 3);=0D }=0D # 69 "./include/linux/posix-timers.h"=0D struct cpu_timer {=0D struct timerqueue_node node;=0D struct timerqueue_head *head;=0D struct pid *pid;=0D struct list_head elist;=0D int firing;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_timer_enqueue(struc= t timerqueue_head *head,=0D struct cpu_timer *ctmr)=0D {=0D ctmr->head =3D head;=0D return timerqueue_add(head, &ctmr->node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_timer_queued(struct= cpu_timer *ctmr)=0D {=0D return !!ctmr->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_timer_dequeue(struc= t cpu_timer *ctmr)=0D {=0D if (cpu_timer_queued(ctmr)) {=0D timerqueue_del(ctmr->head, &ctmr->node);=0D ctmr->head =3D ((void *)0);=0D return true;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 cpu_timer_getexpires(str= uct cpu_timer *ctmr)=0D {=0D return ctmr->node.expires;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_timer_setexpires(st= ruct cpu_timer *ctmr, u64 exp)=0D {=0D ctmr->node.expires =3D exp;=0D }=0D =0D =0D =0D =0D =0D =0D struct posix_cputimer_base {=0D u64 nextevt;=0D struct timerqueue_head tqhead;=0D };=0D # 129 "./include/linux/posix-timers.h"=0D struct posix_cputimers {=0D struct posix_cputimer_base bases[3];=0D unsigned int timers_active;=0D unsigned int expiry_active;=0D };=0D =0D =0D =0D =0D =0D =0D struct posix_cputimers_work {=0D struct callback_head work;=0D unsigned int scheduled;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void posix_cputimers_init(st= ruct posix_cputimers *pct)=0D {=0D memset(pct, 0, sizeof(*pct));=0D pct->bases[0].nextevt =3D ((u64)~0ULL);=0D pct->bases[1].nextevt =3D ((u64)~0ULL);=0D pct->bases[2].nextevt =3D ((u64)~0ULL);=0D }=0D =0D void posix_cputimers_group_init(struct posix_cputimers *pct, u64 cpu_limit)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void posix_cputimers_rt_watc= hdog(struct posix_cputimers *pct,=0D u64 runtime)=0D {=0D pct->bases[2].nextevt =3D runtime;=0D }=0D # 189 "./include/linux/posix-timers.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_posix_cputimers_w= ork(struct task_struct *p) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void posix_cputimers_init_wo= rk(void) { }=0D # 218 "./include/linux/posix-timers.h"=0D struct k_itimer {=0D struct list_head list;=0D struct hlist_node t_hash;=0D spinlock_t it_lock;=0D const struct k_clock *kclock;=0D clockid_t it_clock;=0D timer_t it_id;=0D int it_active;=0D s64 it_overrun;=0D s64 it_overrun_last;=0D int it_requeue_pending;=0D int it_sigev_notify;=0D ktime_t it_interval;=0D struct signal_struct *it_signal;=0D union {=0D struct pid *it_pid;=0D struct task_struct *it_process;=0D };=0D struct sigqueue *sigq;=0D union {=0D struct {=0D struct hrtimer timer;=0D } real;=0D struct cpu_timer cpu;=0D struct {=0D struct alarm alarmtimer;=0D } alarm;=0D } it;=0D struct callback_head rcu;=0D };=0D =0D void run_posix_cpu_timers(void);=0D void posix_cpu_timers_exit(struct task_struct *task);=0D void posix_cpu_timers_exit_group(struct task_struct *task);=0D void set_process_cpu_timer(struct task_struct *task, unsigned int clock_idx= ,=0D u64 *newval, u64 *oldval);=0D =0D int update_rlimit_cpu(struct task_struct *task, unsigned long rlim_new);=0D =0D void posixtimer_rearm(struct kernel_siginfo *info);=0D # 34 "./include/linux/sched.h" 2=0D # 1 "./include/uapi/linux/rseq.h" 1=0D # 16 "./include/uapi/linux/rseq.h"=0D enum rseq_cpu_id_state {=0D RSEQ_CPU_ID_UNINITIALIZED =3D -1,=0D RSEQ_CPU_ID_REGISTRATION_FAILED =3D -2,=0D };=0D =0D enum rseq_flags {=0D RSEQ_FLAG_UNREGISTER =3D (1 << 0),=0D };=0D =0D enum rseq_cs_flags_bit {=0D RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT =3D 0,=0D RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT =3D 1,=0D RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT =3D 2,=0D };=0D =0D enum rseq_cs_flags {=0D RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT =3D=0D (1U << RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT),=0D RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL =3D=0D (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),=0D RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE =3D=0D (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),=0D };=0D =0D =0D =0D =0D =0D =0D struct rseq_cs {=0D =0D __u32 version;=0D =0D __u32 flags;=0D __u64 start_ip;=0D =0D __u64 post_commit_offset;=0D __u64 abort_ip;=0D } __attribute__((aligned(4 * sizeof(__u64))));=0D =0D =0D =0D =0D =0D =0D =0D struct rseq {=0D # 75 "./include/uapi/linux/rseq.h"=0D __u32 cpu_id_start;=0D # 90 "./include/uapi/linux/rseq.h"=0D __u32 cpu_id;=0D # 112 "./include/uapi/linux/rseq.h"=0D __u64 rseq_cs;=0D # 132 "./include/uapi/linux/rseq.h"=0D __u32 flags;=0D } __attribute__((aligned(4 * sizeof(__u64))));=0D # 35 "./include/linux/sched.h" 2=0D =0D # 1 "./include/linux/kcsan.h" 1=0D # 71 "./include/linux/kcsan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcsan_init(void) { }=0D # 37 "./include/linux/sched.h" 2=0D # 1 "./arch/riscv/include/generated/asm/kmap_size.h" 1=0D # 1 "./include/asm-generic/kmap_size.h" 1=0D # 2 "./arch/riscv/include/generated/asm/kmap_size.h" 2=0D # 38 "./include/linux/sched.h" 2=0D =0D =0D struct audit_context;=0D struct backing_dev_info;=0D struct bio_list;=0D struct blk_plug;=0D struct bpf_local_storage;=0D struct bpf_run_ctx;=0D struct capture_control;=0D struct cfs_rq;=0D struct fs_struct;=0D struct futex_pi_state;=0D struct io_context;=0D struct io_uring_task;=0D struct mempolicy;=0D struct nameidata;=0D struct nsproxy;=0D struct perf_event_context;=0D struct pid_namespace;=0D struct pipe_inode_info;=0D struct rcu_node;=0D struct reclaim_state;=0D struct robust_list_head;=0D struct root_domain;=0D struct rq;=0D struct sched_attr;=0D struct sched_param;=0D struct seq_file;=0D struct sighand_struct;=0D struct signal_struct;=0D struct task_delay_info;=0D struct task_group;=0D # 281 "./include/linux/sched.h"=0D enum {=0D TASK_COMM_LEN =3D 16,=0D };=0D =0D extern void scheduler_tick(void);=0D =0D =0D =0D extern long schedule_timeout(long timeout);=0D extern long schedule_timeout_interruptible(long timeout);=0D extern long schedule_timeout_killable(long timeout);=0D extern long schedule_timeout_uninterruptible(long timeout);=0D extern long schedule_timeout_idle(long timeout);=0D void schedule(void);=0D extern void schedule_preempt_disabled(void);=0D void preempt_schedule_irq(void);=0D =0D =0D =0D =0D extern int __attribute__((__warn_unused_result__)) io_schedule_prepare(void= );=0D extern void io_schedule_finish(int token);=0D extern long io_schedule_timeout(long timeout);=0D extern void io_schedule(void);=0D # 315 "./include/linux/sched.h"=0D struct prev_cputime {=0D =0D u64 utime;=0D u64 stime;=0D raw_spinlock_t lock;=0D =0D };=0D =0D enum vtime_state {=0D =0D VTIME_INACTIVE =3D 0,=0D =0D VTIME_IDLE,=0D =0D VTIME_SYS,=0D =0D VTIME_USER,=0D =0D VTIME_GUEST,=0D };=0D =0D struct vtime {=0D seqcount_t seqcount;=0D unsigned long long starttime;=0D enum vtime_state state;=0D unsigned int cpu;=0D u64 utime;=0D u64 stime;=0D u64 gtime;=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum uclamp_id {=0D UCLAMP_MIN =3D 0,=0D UCLAMP_MAX,=0D UCLAMP_CNT=0D };=0D =0D =0D extern struct root_domain def_root_domain;=0D extern struct mutex sched_domains_mutex;=0D =0D =0D struct sched_info {=0D =0D =0D =0D =0D unsigned long pcount;=0D =0D =0D unsigned long long run_delay;=0D =0D =0D =0D =0D unsigned long long last_arrival;=0D =0D =0D unsigned long long last_queued;=0D =0D =0D };=0D # 398 "./include/linux/sched.h"=0D struct load_weight {=0D unsigned long weight;=0D u32 inv_weight;=0D };=0D # 432 "./include/linux/sched.h"=0D struct util_est {=0D unsigned int enqueued;=0D unsigned int ewma;=0D =0D =0D } __attribute__((__aligned__(sizeof(u64))));=0D # 484 "./include/linux/sched.h"=0D struct sched_avg {=0D u64 last_update_time;=0D u64 load_sum;=0D u64 runnable_sum;=0D u32 util_sum;=0D u32 period_contrib;=0D unsigned long load_avg;=0D unsigned long runnable_avg;=0D unsigned long util_avg;=0D struct util_est util_est;=0D } __attribute__((__aligned__((1 << 6))));=0D =0D struct sched_statistics {=0D =0D u64 wait_start;=0D u64 wait_max;=0D u64 wait_count;=0D u64 wait_sum;=0D u64 iowait_count;=0D u64 iowait_sum;=0D =0D u64 sleep_start;=0D u64 sleep_max;=0D s64 sum_sleep_runtime;=0D =0D u64 block_start;=0D u64 block_max;=0D s64 sum_block_runtime;=0D =0D u64 exec_max;=0D u64 slice_max;=0D =0D u64 nr_migrations_cold;=0D u64 nr_failed_migrations_affine;=0D u64 nr_failed_migrations_running;=0D u64 nr_failed_migrations_hot;=0D u64 nr_forced_migrations;=0D =0D u64 nr_wakeups;=0D u64 nr_wakeups_sync;=0D u64 nr_wakeups_migrate;=0D u64 nr_wakeups_local;=0D u64 nr_wakeups_remote;=0D u64 nr_wakeups_affine;=0D u64 nr_wakeups_affine_attempts;=0D u64 nr_wakeups_passive;=0D u64 nr_wakeups_idle;=0D =0D =0D =0D =0D =0D } __attribute__((__aligned__((1 << 6))));=0D =0D struct sched_entity {=0D =0D struct load_weight load;=0D struct rb_node run_node;=0D struct list_head group_node;=0D unsigned int on_rq;=0D =0D u64 exec_start;=0D u64 sum_exec_runtime;=0D u64 vruntime;=0D u64 prev_sum_exec_runtime;=0D =0D u64 nr_migrations;=0D =0D =0D int depth;=0D struct sched_entity *parent;=0D =0D struct cfs_rq *cfs_rq;=0D =0D struct cfs_rq *my_q;=0D =0D unsigned long runnable_weight;=0D # 570 "./include/linux/sched.h"=0D struct sched_avg avg;=0D =0D };=0D =0D struct sched_rt_entity {=0D struct list_head run_list;=0D unsigned long timeout;=0D unsigned long watchdog_stamp;=0D unsigned int time_slice;=0D unsigned short on_rq;=0D unsigned short on_list;=0D =0D struct sched_rt_entity *back;=0D =0D =0D =0D =0D =0D =0D =0D } ;=0D =0D struct sched_dl_entity {=0D struct rb_node rb_node;=0D =0D =0D =0D =0D =0D =0D u64 dl_runtime;=0D u64 dl_deadline;=0D u64 dl_period;=0D u64 dl_bw;=0D u64 dl_density;=0D =0D =0D =0D =0D =0D =0D s64 runtime;=0D u64 deadline;=0D unsigned int flags;=0D # 635 "./include/linux/sched.h"=0D unsigned int dl_throttled : 1;=0D unsigned int dl_yielded : 1;=0D unsigned int dl_non_contending : 1;=0D unsigned int dl_overrun : 1;=0D =0D =0D =0D =0D =0D struct hrtimer dl_timer;=0D # 653 "./include/linux/sched.h"=0D struct hrtimer inactive_timer;=0D =0D =0D =0D =0D =0D =0D =0D struct sched_dl_entity *pi_se;=0D =0D };=0D # 700 "./include/linux/sched.h"=0D union rcu_special {=0D struct {=0D u8 blocked;=0D u8 need_qs;=0D u8 exp_hint;=0D u8 need_mb;=0D } b;=0D u32 s;=0D };=0D =0D enum perf_event_task_context {=0D perf_invalid_context =3D -1,=0D perf_hw_context =3D 0,=0D perf_sw_context,=0D perf_nr_task_contexts,=0D };=0D =0D struct wake_q_node {=0D struct wake_q_node *next;=0D };=0D =0D struct kmap_ctrl {=0D =0D =0D =0D =0D };=0D =0D struct task_struct {=0D =0D =0D =0D =0D =0D struct thread_info thread_info;=0D =0D unsigned int __state;=0D # 749 "./include/linux/sched.h"=0D void *stack;=0D refcount_t usage;=0D =0D unsigned int flags;=0D unsigned int ptrace;=0D =0D =0D int on_cpu;=0D struct __call_single_node wake_entry;=0D unsigned int wakee_flips;=0D unsigned long wakee_flip_decay_ts;=0D struct task_struct *last_wakee;=0D # 769 "./include/linux/sched.h"=0D int recent_used_cpu;=0D int wake_cpu;=0D =0D int on_rq;=0D =0D int prio;=0D int static_prio;=0D int normal_prio;=0D unsigned int rt_priority;=0D =0D struct sched_entity se;=0D struct sched_rt_entity rt;=0D struct sched_dl_entity dl;=0D const struct sched_class *sched_class;=0D # 791 "./include/linux/sched.h"=0D struct task_group *sched_task_group;=0D # 807 "./include/linux/sched.h"=0D struct sched_statistics stats;=0D =0D =0D =0D struct hlist_head preempt_notifiers;=0D =0D =0D =0D unsigned int btrace_seq;=0D =0D =0D unsigned int policy;=0D int nr_cpus_allowed;=0D const cpumask_t *cpus_ptr;=0D cpumask_t *user_cpus_ptr;=0D cpumask_t cpus_mask;=0D void *migration_pending;=0D =0D unsigned short migration_disabled;=0D =0D unsigned short migration_flags;=0D # 845 "./include/linux/sched.h"=0D int trc_reader_nesting;=0D int trc_ipi_to_cpu;=0D union rcu_special trc_reader_special;=0D bool trc_reader_checked;=0D struct list_head trc_holdout_list;=0D =0D =0D struct sched_info sched_info;=0D =0D struct list_head tasks;=0D =0D struct plist_node pushable_tasks;=0D struct rb_node pushable_dl_tasks;=0D =0D =0D struct mm_struct *mm;=0D struct mm_struct *active_mm;=0D =0D =0D struct vmacache vmacache;=0D =0D =0D struct task_rss_stat rss_stat;=0D =0D int exit_state;=0D int exit_code;=0D int exit_signal;=0D =0D int pdeath_signal;=0D =0D unsigned long jobctl;=0D =0D =0D unsigned int personality;=0D =0D =0D unsigned sched_reset_on_fork:1;=0D unsigned sched_contributes_to_load:1;=0D unsigned sched_migrated:1;=0D =0D =0D =0D =0D =0D unsigned :0;=0D # 906 "./include/linux/sched.h"=0D unsigned sched_remote_wakeup:1;=0D =0D =0D unsigned in_execve:1;=0D unsigned in_iowait:1;=0D =0D =0D =0D =0D =0D =0D =0D unsigned brk_randomized:1;=0D =0D =0D =0D unsigned no_cgroup_migration:1;=0D =0D unsigned frozen:1;=0D # 939 "./include/linux/sched.h"=0D unsigned in_eventfd_signal:1;=0D =0D =0D =0D =0D =0D unsigned long atomic_flags;=0D =0D struct restart_block restart_block;=0D =0D pid_t pid;=0D pid_t tgid;=0D =0D =0D =0D unsigned long stack_canary;=0D # 963 "./include/linux/sched.h"=0D struct task_struct *real_parent;=0D =0D =0D struct task_struct *parent;=0D =0D =0D =0D =0D struct list_head children;=0D struct list_head sibling;=0D struct task_struct *group_leader;=0D =0D =0D =0D =0D =0D =0D =0D struct list_head ptraced;=0D struct list_head ptrace_entry;=0D =0D =0D struct pid *thread_pid;=0D struct hlist_node pid_links[PIDTYPE_MAX];=0D struct list_head thread_group;=0D struct list_head thread_node;=0D =0D struct completion *vfork_done;=0D =0D =0D int *set_child_tid;=0D =0D =0D int *clear_child_tid;=0D =0D =0D void *worker_private;=0D =0D u64 utime;=0D u64 stime;=0D =0D =0D =0D =0D u64 gtime;=0D struct prev_cputime prev_cputime;=0D # 1017 "./include/linux/sched.h"=0D unsigned long nvcsw;=0D unsigned long nivcsw;=0D =0D =0D u64 start_time;=0D =0D =0D u64 start_boottime;=0D =0D =0D unsigned long min_flt;=0D unsigned long maj_flt;=0D =0D =0D struct posix_cputimers posix_cputimers;=0D # 1040 "./include/linux/sched.h"=0D const struct cred *ptracer_cred;=0D =0D =0D const struct cred *real_cred;=0D =0D =0D const struct cred *cred;=0D =0D =0D =0D struct key *cached_requested_key;=0D # 1060 "./include/linux/sched.h"=0D char comm[TASK_COMM_LEN];=0D =0D struct nameidata *nameidata;=0D =0D =0D struct sysv_sem sysvsem;=0D struct sysv_shm sysvshm;=0D =0D =0D unsigned long last_switch_count;=0D unsigned long last_switch_time;=0D =0D =0D struct fs_struct *fs;=0D =0D =0D struct files_struct *files;=0D =0D =0D struct io_uring_task *io_uring;=0D =0D =0D =0D struct nsproxy *nsproxy;=0D =0D =0D struct signal_struct *signal;=0D struct sighand_struct *sighand;=0D sigset_t blocked;=0D sigset_t real_blocked;=0D =0D sigset_t saved_sigmask;=0D struct sigpending pending;=0D unsigned long sas_ss_sp;=0D size_t sas_ss_size;=0D unsigned int sas_ss_flags;=0D =0D struct callback_head *task_works;=0D # 1106 "./include/linux/sched.h"=0D struct seccomp seccomp;=0D struct syscall_user_dispatch syscall_dispatch;=0D =0D =0D u64 parent_exec_id;=0D u64 self_exec_id;=0D =0D =0D spinlock_t alloc_lock;=0D =0D =0D raw_spinlock_t pi_lock;=0D =0D struct wake_q_node wake_q;=0D =0D =0D =0D struct rb_root_cached pi_waiters;=0D =0D struct task_struct *pi_top_task;=0D =0D struct rt_mutex_waiter *pi_blocked_on;=0D =0D =0D =0D =0D struct mutex_waiter *blocked_on;=0D =0D =0D =0D int non_block_count;=0D =0D =0D =0D struct irqtrace_events irqtrace;=0D unsigned int hardirq_threaded;=0D u64 hardirq_chain_key;=0D int softirqs_enabled;=0D int softirq_context;=0D int irq_config;=0D =0D =0D =0D =0D =0D =0D =0D u64 curr_chain_key;=0D int lockdep_depth;=0D unsigned int lockdep_recursion;=0D struct held_lock held_locks[48UL];=0D =0D =0D =0D =0D =0D =0D =0D void *journal_info;=0D =0D =0D struct bio_list *bio_list;=0D =0D =0D struct blk_plug *plug;=0D =0D =0D struct reclaim_state *reclaim_state;=0D =0D struct backing_dev_info *backing_dev_info;=0D =0D struct io_context *io_context;=0D =0D =0D struct capture_control *capture_control;=0D =0D =0D unsigned long ptrace_message;=0D kernel_siginfo_t *last_siginfo;=0D =0D struct task_io_accounting ioac;=0D # 1209 "./include/linux/sched.h"=0D struct css_set *cgroups;=0D =0D struct list_head cg_list;=0D =0D =0D =0D =0D =0D =0D struct robust_list_head *robust_list;=0D =0D =0D =0D struct list_head pi_state_list;=0D struct futex_pi_state *pi_state_cache;=0D struct mutex futex_exit_mutex;=0D unsigned int futex_state;=0D =0D =0D struct perf_event_context *perf_event_ctxp[perf_nr_task_contexts];=0D struct mutex perf_event_mutex;=0D struct list_head perf_event_list;=0D # 1292 "./include/linux/sched.h"=0D struct rseq *rseq;=0D u32 rseq_sig;=0D =0D =0D =0D =0D unsigned long rseq_event_mask;=0D =0D =0D struct tlbflush_unmap_batch tlb_ubc;=0D =0D union {=0D refcount_t rcu_users;=0D struct callback_head rcu;=0D };=0D =0D =0D struct pipe_inode_info *splice_pipe;=0D =0D struct page_frag task_frag;=0D # 1325 "./include/linux/sched.h"=0D int nr_dirtied;=0D int nr_dirtied_pause;=0D =0D unsigned long dirty_paused_when;=0D # 1338 "./include/linux/sched.h"=0D u64 timer_slack_ns;=0D u64 default_timer_slack_ns;=0D # 1361 "./include/linux/sched.h"=0D int curr_ret_stack;=0D int curr_ret_depth;=0D =0D =0D struct ftrace_ret_stack *ret_stack;=0D =0D =0D unsigned long long ftrace_timestamp;=0D =0D =0D =0D =0D =0D atomic_t trace_overrun;=0D =0D =0D atomic_t tracing_graph_pause;=0D =0D =0D =0D =0D unsigned long trace;=0D =0D =0D unsigned long trace_recursion;=0D # 1430 "./include/linux/sched.h"=0D struct uprobe_task *utask;=0D =0D =0D =0D =0D =0D struct kmap_ctrl kmap_ctrl;=0D =0D unsigned long task_state_change;=0D =0D =0D =0D =0D int pagefault_disabled;=0D =0D struct task_struct *oom_reaper_list;=0D struct timer_list oom_reaper_timer;=0D =0D =0D struct vm_struct *stack_vm_area;=0D =0D =0D =0D refcount_t stack_refcount;=0D # 1464 "./include/linux/sched.h"=0D struct bpf_local_storage *bpf_storage;=0D =0D struct bpf_run_ctx *bpf_ctx;=0D # 1486 "./include/linux/sched.h"=0D struct llist_head kretprobe_instances;=0D # 1509 "./include/linux/sched.h"=0D struct thread_struct thread;=0D =0D =0D =0D =0D =0D =0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid *task_pid(struct = task_struct *task)=0D {=0D return task->thread_pid;=0D }=0D # 1535 "./include/linux/sched.h"=0D pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type, struct= pid_namespace *ns);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pid_nr(struct tas= k_struct *tsk)=0D {=0D return tsk->pid;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pid_nr_ns(struct = task_struct *tsk, struct pid_namespace *ns)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_PID, ns);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pid_vnr(struct ta= sk_struct *tsk)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_PID, ((void *)0));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_tgid_nr(struct ta= sk_struct *tsk)=0D {=0D return tsk->tgid;=0D }=0D # 1568 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pid_alive(const struct t= ask_struct *p)=0D {=0D return p->thread_pid !=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pgrp_nr_ns(struct= task_struct *tsk, struct pid_namespace *ns)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pgrp_vnr(struct t= ask_struct *tsk)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ((void *)0));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_session_nr_ns(str= uct task_struct *tsk, struct pid_namespace *ns)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_SID, ns);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_session_vnr(struc= t task_struct *tsk)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_SID, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_tgid_nr_ns(struct= task_struct *tsk, struct pid_namespace *ns)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_TGID, ns);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_tgid_vnr(struct t= ask_struct *tsk)=0D {=0D return __task_pid_nr_ns(tsk, PIDTYPE_TGID, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_ppid_nr_ns(const = struct task_struct *tsk, struct pid_namespace *ns)=0D {=0D pid_t pid =3D 0;=0D =0D rcu_read_lock();=0D if (pid_alive(tsk))=0D pid =3D task_tgid_nr_ns(({ typeof(*(tsk->real_parent)) *__UNIQUE_ID_rcu17= 1 =3D (typeof(*(tsk->real_parent)) *)({ do { __attribute__((__noreturn__)) = extern void __compiletime_assert_172(void) ; if (!((sizeof((tsk->real_paren= t)) =3D=3D sizeof(char) || sizeof((tsk->real_parent)) =3D=3D sizeof(short) = || sizeof((tsk->real_parent)) =3D=3D sizeof(int) || sizeof((tsk->real_paren= t)) =3D=3D sizeof(long)) || sizeof((tsk->real_parent)) =3D=3D sizeof(long l= ong))) __compiletime_assert_172(); } while (0); (*(const volatile typeof( _= Generic(((tsk->real_parent)), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: ((tsk->real_parent)))) *)&((tsk->real_parent))); }); do { } while = (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(tsk->real_parent)) *)= (__UNIQUE_ID_rcu171)); }), ns);=0D rcu_read_unlock();=0D =0D return pid;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_ppid_nr(const str= uct task_struct *tsk)=0D {=0D return task_ppid_nr_ns(tsk, &init_pid_ns);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pid_t task_pgrp_nr(struct ta= sk_struct *tsk)=0D {=0D return task_pgrp_nr_ns(tsk, &init_pid_ns);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __task_state_in= dex(unsigned int tsk_state,=0D unsigned int tsk_exit_state)=0D {=0D unsigned int state =3D (tsk_state | tsk_exit_state) & (0x0000 | 0x0001 | 0= x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040);=0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_173(vo= id) ; if (!(!(((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0= 020 | 0x0040) + 1) << 1)) =3D=3D 0 || ((((((0x0000 | 0x0001 | 0x0002 | 0x00= 04 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) & (((((0x0000 | 0x0001 = | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) - 1)) != =3D 0)))) __compiletime_assert_173(); } while (0);=0D =0D if (tsk_state =3D=3D (0x0002 | 0x0400))=0D state =3D ((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 = | 0x0040) + 1);=0D =0D =0D =0D =0D =0D =0D if (tsk_state =3D=3D 0x1000)=0D state =3D 0x0002;=0D =0D return fls(state);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int task_state_inde= x(struct task_struct *tsk)=0D {=0D return __task_state_index(({ do { __attribute__((__noreturn__)) extern voi= d __compiletime_assert_174(void) ; if (!((sizeof(tsk->__state) =3D=3D sizeo= f(char) || sizeof(tsk->__state) =3D=3D sizeof(short) || sizeof(tsk->__state= ) =3D=3D sizeof(int) || sizeof(tsk->__state) =3D=3D sizeof(long)) || sizeof= (tsk->__state) =3D=3D sizeof(long long))) __compiletime_assert_174(); } whi= le (0); (*(const volatile typeof( _Generic((tsk->__state), char: (char)0, u= nsigned char: (unsigned char)0, signed char: (signed char)0, unsigned short= : (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned= int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed = long: (signed long)0, unsigned long long: (unsigned long long)0, signed lon= g long: (signed long long)0, default: (tsk->__state))) *)&(tsk->__state)); = }), tsk->exit_state);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char task_index_to_char(unsi= gned int state)=0D {=0D static const char state_char[] =3D "RSDTtXZPI";=0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_175(vo= id) ; if (!(!(1 + ( __builtin_constant_p((((0x0000 | 0x0001 | 0x0002 | 0x00= 04 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) ? (((((0x0000 | 0x0001 = | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) < 2 ? 0 = : 63 - __builtin_clzll((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x00= 10 | 0x0020 | 0x0040) + 1) << 1))) : (sizeof((((0x0000 | 0x0001 | 0x0002 | = 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040) + 1) << 1)) <=3D 4) ? __ilog2_u= 32((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040= ) + 1) << 1)) : __ilog2_u64((((0x0000 | 0x0001 | 0x0002 | 0x0004 | 0x0008 |= 0x0010 | 0x0020 | 0x0040) + 1) << 1)) ) !=3D sizeof(state_char) - 1))) __c= ompiletime_assert_175(); } while (0);=0D =0D return state_char[state];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char task_state_to_char(stru= ct task_struct *tsk)=0D {=0D return task_index_to_char(task_state_index(tsk));=0D }=0D # 1679 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_global_init(struct ta= sk_struct *tsk)=0D {=0D return task_tgid_nr(tsk) =3D=3D 1;=0D }=0D =0D extern struct pid *cad_pid;=0D # 1746 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool is_percpu_thread(void)=0D {=0D =0D return (get_current()->flags & 0x04000000) &&=0D (get_current()->nr_cpus_allowed =3D=3D 1);=0D =0D =0D =0D }=0D # 1778 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_no_new_privs(struc= t task_struct *p) { return arch_test_bit(0, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_no_new_privs(s= truct task_struct *p) { set_bit(0, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spread_page(struct= task_struct *p) { return arch_test_bit(1, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spread_page(st= ruct task_struct *p) { set_bit(1, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_clear_spread_page(= struct task_struct *p) { clear_bit(1, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spread_slab(struct= task_struct *p) { return arch_test_bit(2, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spread_slab(st= ruct task_struct *p) { set_bit(2, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_clear_spread_slab(= struct task_struct *p) { clear_bit(2, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spec_ssb_disable(s= truct task_struct *p) { return arch_test_bit(3, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spec_ssb_disab= le(struct task_struct *p) { set_bit(3, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_clear_spec_ssb_dis= able(struct task_struct *p) { clear_bit(3, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spec_ssb_noexec(st= ruct task_struct *p) { return arch_test_bit(7, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spec_ssb_noexe= c(struct task_struct *p) { set_bit(7, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_clear_spec_ssb_noe= xec(struct task_struct *p) { clear_bit(7, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spec_ssb_force_dis= able(struct task_struct *p) { return arch_test_bit(4, &p->atomic_flags); }= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spec_ssb_force= _disable(struct task_struct *p) { set_bit(4, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spec_ib_disable(st= ruct task_struct *p) { return arch_test_bit(5, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spec_ib_disabl= e(struct task_struct *p) { set_bit(5, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_clear_spec_ib_disa= ble(struct task_struct *p) { clear_bit(5, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_spec_ib_force_disa= ble(struct task_struct *p) { return arch_test_bit(6, &p->atomic_flags); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_set_spec_ib_force_= disable(struct task_struct *p) { set_bit(6, &p->atomic_flags); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D current_restore_flags(unsigned long orig_flags, unsigned long flags)=0D {=0D get_current()->flags &=3D ~flags;=0D get_current()->flags |=3D orig_flags & flags;=0D }=0D =0D extern int cpuset_cpumask_can_shrink(const struct cpumask *cur, const struc= t cpumask *trial);=0D extern int task_can_attach(struct task_struct *p, const struct cpumask *cs_= cpus_allowed);=0D =0D extern void do_set_cpus_allowed(struct task_struct *p, const struct cpumask= *new_mask);=0D extern int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask= *new_mask);=0D extern int dup_user_cpus_ptr(struct task_struct *dst, struct task_struct *s= rc, int node);=0D extern void release_user_cpus_ptr(struct task_struct *p);=0D extern int dl_task_check_affinity(struct task_struct *p, const struct cpuma= sk *mask);=0D extern void force_compatible_cpus_allowed_ptr(struct task_struct *p);=0D extern void relax_compatible_cpus_allowed_ptr(struct task_struct *p);=0D # 1851 "./include/linux/sched.h"=0D extern int yield_to(struct task_struct *p, bool preempt);=0D extern void set_user_nice(struct task_struct *p, long nice);=0D extern int task_prio(const struct task_struct *p);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int task_nice(const struct t= ask_struct *p)=0D {=0D return (((p)->static_prio) - (100 + (19 - -20 + 1) / 2));=0D }=0D =0D extern int can_nice(const struct task_struct *p, const int nice);=0D extern int task_curr(const struct task_struct *p);=0D extern int idle_cpu(int cpu);=0D extern int available_idle_cpu(int cpu);=0D extern int sched_setscheduler(struct task_struct *, int, const struct sched= _param *);=0D extern int sched_setscheduler_nocheck(struct task_struct *, int, const stru= ct sched_param *);=0D extern void sched_set_fifo(struct task_struct *p);=0D extern void sched_set_fifo_low(struct task_struct *p);=0D extern void sched_set_normal(struct task_struct *p, int nice);=0D extern int sched_setattr(struct task_struct *, const struct sched_attr *);= =0D extern int sched_setattr_nocheck(struct task_struct *, const struct sched_a= ttr *);=0D extern struct task_struct *idle_task(int cpu);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool is_idle_task(const struct task_struct *p)=0D {=0D return !!(p->flags & 0x00000002);=0D }=0D =0D extern struct task_struct *curr_task(int cpu);=0D extern void ia64_set_curr_task(int cpu, struct task_struct *p);=0D =0D void yield(void);=0D =0D union thread_union {=0D =0D struct task_struct task;=0D =0D =0D =0D =0D unsigned long stack[(((1UL) << (12)) << (2 + 0))/sizeof(long)];=0D };=0D =0D =0D =0D =0D =0D extern unsigned long init_stack[(((1UL) << (12)) << (2 + 0)) / sizeof(unsig= ned long)];=0D # 1928 "./include/linux/sched.h"=0D extern struct task_struct *find_task_by_vpid(pid_t nr);=0D extern struct task_struct *find_task_by_pid_ns(pid_t nr, struct pid_namespa= ce *ns);=0D =0D =0D =0D =0D extern struct task_struct *find_get_task_by_vpid(pid_t nr);=0D =0D extern int wake_up_state(struct task_struct *tsk, unsigned int state);=0D extern int wake_up_process(struct task_struct *tsk);=0D extern void wake_up_new_task(struct task_struct *tsk);=0D =0D =0D extern void kick_process(struct task_struct *tsk);=0D =0D =0D =0D =0D extern void __set_task_comm(struct task_struct *tsk, const char *from, bool= exec);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_task_comm(struct ta= sk_struct *tsk, const char *from)=0D {=0D __set_task_comm(tsk, from, false);=0D }=0D =0D extern char *__get_task_comm(char *to, size_t len, struct task_struct *tsk)= ;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void scheduler_ipi(void)=0D {=0D =0D =0D =0D =0D =0D do { if (test_ti_thread_flag(((struct thread_info *)get_current()), 3)) se= t_preempt_need_resched(); } while (0);=0D }=0D extern unsigned long wait_task_inactive(struct task_struct *, unsigned int = match_state);=0D # 1982 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_tsk_thread_flag(str= uct task_struct *tsk, int flag)=0D {=0D set_ti_thread_flag((&(tsk)->thread_info), flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_thread_flag(s= truct task_struct *tsk, int flag)=0D {=0D clear_ti_thread_flag((&(tsk)->thread_info), flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_tsk_thread_flag(= struct task_struct *tsk, int flag,=0D bool value)=0D {=0D update_ti_thread_flag((&(tsk)->thread_info), flag, value);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_set_tsk_thread_= flag(struct task_struct *tsk, int flag)=0D {=0D return test_and_set_ti_thread_flag((&(tsk)->thread_info), flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_and_clear_tsk_threa= d_flag(struct task_struct *tsk, int flag)=0D {=0D return test_and_clear_ti_thread_flag((&(tsk)->thread_info), flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_tsk_thread_flag(str= uct task_struct *tsk, int flag)=0D {=0D return test_ti_thread_flag((&(tsk)->thread_info), flag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_tsk_need_resched(st= ruct task_struct *tsk)=0D {=0D set_tsk_thread_flag(tsk,3);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_need_resched(= struct task_struct *tsk)=0D {=0D clear_tsk_thread_flag(tsk,3);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_tsk_need_resched(st= ruct task_struct *tsk)=0D {=0D return __builtin_expect(!!(test_tsk_thread_flag(tsk,3)), 0);=0D }=0D # 2035 "./include/linux/sched.h"=0D extern int __cond_resched(void);=0D # 2056 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int _cond_resched(void)=0D {=0D return __cond_resched();=0D }=0D # 2074 "./include/linux/sched.h"=0D extern int __cond_resched_lock(spinlock_t *lock);=0D extern int __cond_resched_rwlock_read(rwlock_t *lock);=0D extern int __cond_resched_rwlock_write(rwlock_t *lock);=0D # 2112 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cond_resched_rcu(void)= =0D {=0D =0D rcu_read_unlock();=0D ({ __might_resched("include/linux/sched.h", 2116, 0); _cond_resched(); });= =0D rcu_read_lock();=0D =0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int spin_needbreak(spinlock_= t *lock)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D # 2143 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rwlock_needbreak(rwlock_= t *lock)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool need_resched(void)=0D {=0D return __builtin_expect(!!(test_ti_thread_flag(((struct thread_info *)get_= current()), 3)), 0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int task_cpu(const = struct task_struct *p)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_176(void) ; if (!((sizeof((&(p)->thread_info)->cpu) =3D=3D sizeof(char)= || sizeof((&(p)->thread_info)->cpu) =3D=3D sizeof(short) || sizeof((&(p)->= thread_info)->cpu) =3D=3D sizeof(int) || sizeof((&(p)->thread_info)->cpu) = =3D=3D sizeof(long)) || sizeof((&(p)->thread_info)->cpu) =3D=3D sizeof(long= long))) __compiletime_assert_176(); } while (0); (*(const volatile typeof(= _Generic(((&(p)->thread_info)->cpu), char: (char)0, unsigned char: (unsign= ed char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, = signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (= signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0,= unsigned long long: (unsigned long long)0, signed long long: (signed long = long)0, default: ((&(p)->thread_info)->cpu))) *)&((&(p)->thread_info)->cpu)= ); });=0D }=0D =0D extern void set_task_cpu(struct task_struct *p, unsigned int cpu);=0D # 2182 "./include/linux/sched.h"=0D extern bool sched_task_on_rq(struct task_struct *p);=0D extern unsigned long get_wchan(struct task_struct *p);=0D # 2194 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vcpu_is_preempted(int c= pu)=0D {=0D return false;=0D }=0D =0D =0D extern long sched_setaffinity(pid_t pid, const struct cpumask *new_mask);=0D extern long sched_getaffinity(pid_t pid, struct cpumask *mask);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool owner_on_cpu(struct tas= k_struct *owner)=0D {=0D =0D =0D =0D =0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_177(void) ; if (!((sizeof(owner->on_cpu) =3D=3D sizeof(char) || sizeof(= owner->on_cpu) =3D=3D sizeof(short) || sizeof(owner->on_cpu) =3D=3D sizeof(= int) || sizeof(owner->on_cpu) =3D=3D sizeof(long)) || sizeof(owner->on_cpu)= =3D=3D sizeof(long long))) __compiletime_assert_177(); } while (0); (*(con= st volatile typeof( _Generic((owner->on_cpu), char: (char)0, unsigned char:= (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned s= hort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signe= d int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed= long)0, unsigned long long: (unsigned long long)0, signed long long: (sign= ed long long)0, default: (owner->on_cpu))) *)&(owner->on_cpu)); }) && !vcpu= _is_preempted(task_cpu(owner));=0D }=0D =0D =0D unsigned long sched_cpu_util(int cpu, unsigned long max);=0D # 2227 "./include/linux/sched.h"=0D enum rseq_event_mask_bits {=0D RSEQ_EVENT_PREEMPT_BIT =3D RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT,=0D RSEQ_EVENT_SIGNAL_BIT =3D RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT,=0D RSEQ_EVENT_MIGRATE_BIT =3D RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT,=0D };=0D =0D enum rseq_event_mask {=0D RSEQ_EVENT_PREEMPT =3D (1U << RSEQ_EVENT_PREEMPT_BIT),=0D RSEQ_EVENT_SIGNAL =3D (1U << RSEQ_EVENT_SIGNAL_BIT),=0D RSEQ_EVENT_MIGRATE =3D (1U << RSEQ_EVENT_MIGRATE_BIT),=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_set_notify_resume(= struct task_struct *t)=0D {=0D if (t->rseq)=0D set_tsk_thread_flag(t, 1);=0D }=0D =0D void __rseq_handle_notify_resume(struct ksignal *sig, struct pt_regs *regs)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_handle_notify_resu= me(struct ksignal *ksig,=0D struct pt_regs *regs)=0D {=0D if (get_current()->rseq)=0D __rseq_handle_notify_resume(ksig, regs);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_signal_deliver(str= uct ksignal *ksig,=0D struct pt_regs *regs)=0D {=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D arch___set_bit(RSEQ_EVENT_SIGNAL_BIT, &get_current()->rseq_event_mask);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D rseq_handle_notify_resume(ksig, regs);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_preempt(struct tas= k_struct *t)=0D {=0D arch___set_bit(RSEQ_EVENT_PREEMPT_BIT, &t->rseq_event_mask);=0D rseq_set_notify_resume(t);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_migrate(struct tas= k_struct *t)=0D {=0D arch___set_bit(RSEQ_EVENT_MIGRATE_BIT, &t->rseq_event_mask);=0D rseq_set_notify_resume(t);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_fork(struct task_s= truct *t, unsigned long clone_flags)=0D {=0D if (clone_flags & 0x00000100) {=0D t->rseq =3D ((void *)0);=0D t->rseq_sig =3D 0;=0D t->rseq_event_mask =3D 0;=0D } else {=0D t->rseq =3D get_current()->rseq;=0D t->rseq_sig =3D get_current()->rseq_sig;=0D t->rseq_event_mask =3D get_current()->rseq_event_mask;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_execve(struct task= _struct *t)=0D {=0D t->rseq =3D ((void *)0);=0D t->rseq_sig =3D 0;=0D t->rseq_event_mask =3D 0;=0D }=0D # 2335 "./include/linux/sched.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rseq_syscall(struct pt_= regs *regs)=0D {=0D }=0D =0D =0D =0D const struct sched_avg *sched_trace_cfs_rq_avg(struct cfs_rq *cfs_rq);=0D char *sched_trace_cfs_rq_path(struct cfs_rq *cfs_rq, char *str, int len);=0D int sched_trace_cfs_rq_cpu(struct cfs_rq *cfs_rq);=0D =0D const struct sched_avg *sched_trace_rq_avg_rt(struct rq *rq);=0D const struct sched_avg *sched_trace_rq_avg_dl(struct rq *rq);=0D const struct sched_avg *sched_trace_rq_avg_irq(struct rq *rq);=0D =0D int sched_trace_rq_cpu(struct rq *rq);=0D int sched_trace_rq_cpu_capacity(struct rq *rq);=0D int sched_trace_rq_nr_running(struct rq *rq);=0D =0D const struct cpumask *sched_trace_rd_span(struct root_domain *rd);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sched_core_free(struct = task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sched_core_fork(struct = task_struct *p) { }=0D # 8 "./include/linux/sched/signal.h" 2=0D # 1 "./include/linux/sched/jobctl.h" 1=0D =0D =0D =0D =0D =0D =0D struct task_struct;=0D # 35 "./include/linux/sched/jobctl.h"=0D extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long= mask);=0D extern void task_clear_jobctl_trapping(struct task_struct *task);=0D extern void task_clear_jobctl_pending(struct task_struct *task, unsigned lo= ng mask);=0D # 9 "./include/linux/sched/signal.h" 2=0D # 1 "./include/linux/sched/task.h" 1=0D # 11 "./include/linux/sched/task.h"=0D # 1 "./include/linux/uaccess.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/fault-inject-usercopy.h" 1=0D # 18 "./include/linux/fault-inject-usercopy.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool should_fail_usercopy(vo= id) { return false; }=0D # 6 "./include/linux/uaccess.h" 2=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/uaccess.h" 1=0D # 11 "./arch/riscv/include/asm/uaccess.h"=0D # 1 "./arch/riscv/include/asm/asm-extable.h" 1=0D # 29 "./arch/riscv/include/asm/asm-extable.h"=0D # 1 "./arch/riscv/include/asm/gpr-num.h" 1=0D # 30 "./arch/riscv/include/asm/asm-extable.h" 2=0D # 12 "./arch/riscv/include/asm/uaccess.h" 2=0D # 1 "./arch/riscv/include/asm/pgtable.h" 1=0D # 10 "./arch/riscv/include/asm/pgtable.h"=0D # 1 "./include/linux/sizes.h" 1=0D # 11 "./arch/riscv/include/asm/pgtable.h" 2=0D =0D # 1 "./arch/riscv/include/asm/pgtable-bits.h" 1=0D # 13 "./arch/riscv/include/asm/pgtable.h" 2=0D # 108 "./arch/riscv/include/asm/pgtable.h"=0D # 1 "./arch/riscv/include/asm/tlbflush.h" 1=0D # 12 "./arch/riscv/include/asm/tlbflush.h"=0D # 1 "./arch/riscv/include/asm/errata_list.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/alternative.h" 1=0D # 11 "./arch/riscv/include/asm/alternative.h"=0D # 1 "./arch/riscv/include/asm/alternative-macros.h" 1=0D # 12 "./arch/riscv/include/asm/alternative.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/hwcap.h" 1=0D # 12 "./arch/riscv/include/asm/hwcap.h"=0D # 1 "./arch/riscv/include/uapi/asm/hwcap.h" 1=0D # 13 "./arch/riscv/include/asm/hwcap.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D enum {=0D CAP_HWCAP =3D 1,=0D };=0D =0D extern unsigned long elf_hwcap;=0D # 53 "./arch/riscv/include/asm/hwcap.h"=0D enum riscv_isa_ext_id {=0D RISCV_ISA_EXT_SSCOFPMF =3D 26,=0D RISCV_ISA_EXT_ID_MAX =3D 64,=0D };=0D =0D struct riscv_isa_ext_data {=0D =0D char uprop[32];=0D =0D unsigned int isa_ext_id;=0D };=0D =0D unsigned long riscv_isa_extension_base(const unsigned long *isa_bitmap);=0D =0D =0D =0D bool __riscv_isa_extension_available(const unsigned long *isa_bitmap, int b= it);=0D # 19 "./arch/riscv/include/asm/alternative.h" 2=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) apply_boot_alternatives(void);=0D =0D struct alt_entry {=0D void *old_ptr;=0D void *alt_ptr;=0D unsigned long vendor_id;=0D unsigned long alt_len;=0D unsigned int errata_id;=0D } __attribute__((__packed__));=0D =0D struct errata_checkfunc_id {=0D unsigned long vendor_id;=0D bool (*func)(struct alt_entry *alt);=0D };=0D =0D void sifive_errata_patch_func(struct alt_entry *begin, struct alt_entry *en= d,=0D unsigned long archid, unsigned long impid);=0D # 9 "./arch/riscv/include/asm/errata_list.h" 2=0D # 1 "./arch/riscv/include/asm/vendorid_list.h" 1=0D # 10 "./arch/riscv/include/asm/errata_list.h" 2=0D # 13 "./arch/riscv/include/asm/tlbflush.h" 2=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_flush_tlb_all(voi= d)=0D {=0D __asm__ __volatile__ ("sfence.vma" : : : "memory");=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_flush_tlb_page(un= signed long addr)=0D {=0D asm("886 :\n" "sfence.vma %0" "\n" "887 :\n" ".if " "1" " =3D=3D 1\n" ".pu= shsection .alternative, \"a\"\n" ".dword" " " "886b" "\n" ".dword" " " "888= f" "\n" ".dword" " " "0x489" "\n" ".dword" " " "889f - 888f" "\n" ".word " = "1" "\n" ".popsection\n" ".subsection 1\n" "888 :\n" "sfence.vma" "\n" "889= :\n" ".previous\n" ".org . - (887b - 886b) + (889b - 888b)\n" ".org . - (8= 89b - 888b) + (887b - 886b)\n" ".endif\n" : : "r" (addr) : "memory");=0D }=0D =0D =0D =0D =0D =0D =0D void flush_tlb_all(void);=0D void flush_tlb_mm(struct mm_struct *mm);=0D void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);=0D void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,=0D unsigned long end);=0D =0D =0D void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,=0D unsigned long end);=0D # 56 "./arch/riscv/include/asm/tlbflush.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_tlb_kernel_range(= unsigned long start,=0D unsigned long end)=0D {=0D flush_tlb_all();=0D }=0D # 109 "./arch/riscv/include/asm/pgtable.h" 2=0D =0D =0D =0D # 1 "./arch/riscv/include/asm/pgtable-64.h" 1=0D # 11 "./arch/riscv/include/asm/pgtable-64.h"=0D extern bool pgtable_l4_enabled;=0D extern bool pgtable_l5_enabled;=0D # 41 "./arch/riscv/include/asm/pgtable-64.h"=0D typedef struct {=0D unsigned long p4d;=0D } p4d_t;=0D =0D =0D =0D =0D =0D =0D typedef struct {=0D unsigned long pud;=0D } pud_t;=0D =0D =0D =0D =0D =0D =0D typedef struct {=0D unsigned long pmd;=0D } pmd_t;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_present(pud_t pud)=0D {=0D return (((pud).pud) & (1 << 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_none(pud_t pud)=0D {=0D return (((pud).pud) =3D=3D 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_bad(pud_t pud)=0D {=0D return !pud_present(pud);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_leaf(pud_t pud)=0D {=0D return pud_present(pud) && (((pud).pud) & ((1 << 1) | (1 << 2) | (1 << 3))= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pud(pud_t *pudp, pu= d_t pud)=0D {=0D *pudp =3D pud;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pud_clear(pud_t *pudp)= =0D {=0D set_pud(pudp, ((pud_t) { (0) }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t pfn_pud(unsigned long = pfn, pgprot_t prot)=0D {=0D return ((pud_t) { ((pfn << 10) | ((prot).pgprot)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _pud_pfn(pud_t= pud)=0D {=0D return ((pud).pud) >> 10;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t *pud_pgtable(pud_t pud= )=0D {=0D return (pmd_t *)(((void *)((void *)((unsigned long)((phys_addr_t)((((phys_= addr_t)(((pud).pud) >> 10) << (12))))) + kernel_map.va_pa_offset))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *pud_page(pud_t = pud)=0D {=0D return (((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / s= izeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enable= d ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (p= gtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(s= truct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((pud).pud) >> 10));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mm_p4d_folded(struct mm= _struct *mm)=0D {=0D if (pgtable_l5_enabled)=0D return false;=0D =0D return true;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mm_pud_folded(struct mm= _struct *mm)=0D {=0D if (pgtable_l4_enabled)=0D return false;=0D =0D return true;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pfn_pmd(unsigned long = pfn, pgprot_t prot)=0D {=0D return ((pmd_t) { ((pfn << 10) | ((prot).pgprot)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _pmd_pfn(pmd_t= pmd)=0D {=0D return ((pmd).pmd) >> 10;=0D }=0D # 160 "./arch/riscv/include/asm/pgtable-64.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_p4d(p4d_t *p4dp, p4= d_t p4d)=0D {=0D if (pgtable_l4_enabled)=0D *p4dp =3D p4d;=0D else=0D set_pud((pud_t *)p4dp, (pud_t){ ((p4d).p4d) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_none(p4d_t p4d)=0D {=0D if (pgtable_l4_enabled)=0D return (((p4d).p4d) =3D=3D 0);=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_present(p4d_t p4d)=0D {=0D if (pgtable_l4_enabled)=0D return (((p4d).p4d) & (1 << 0));=0D =0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_bad(p4d_t p4d)=0D {=0D if (pgtable_l4_enabled)=0D return !p4d_present(p4d);=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void p4d_clear(p4d_t *p4d)=0D {=0D if (pgtable_l4_enabled)=0D set_p4d(p4d, ((p4d_t) { (0) }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) p4d_t pfn_p4d(unsigned long = pfn, pgprot_t prot)=0D {=0D return ((p4d_t) { ((pfn << 10) | ((prot).pgprot)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _p4d_pfn(p4d_t= p4d)=0D {=0D return ((p4d).p4d) >> 10;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t *p4d_pgtable(p4d_t p4d= )=0D {=0D if (pgtable_l4_enabled)=0D return (pud_t *)(((void *)((void *)((unsigned long)((phys_addr_t)((((phys= _addr_t)(((p4d).p4d) >> 10) << (12))))) + kernel_map.va_pa_offset))));=0D =0D return (pud_t *)pud_pgtable((pud_t) { ((p4d).p4d) });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *p4d_page(p4d_t = p4d)=0D {=0D return (((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / s= izeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enable= d ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (p= gtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(s= truct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((p4d).p4d) >> 10));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t *pud_offset(p4d_t *p4d= , unsigned long address)=0D {=0D if (pgtable_l4_enabled)=0D return p4d_pgtable(*p4d) + (((address) >> 30) & ((((1UL) << (12)) / sizeo= f(pud_t)) - 1));=0D =0D return (pud_t *)p4d;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pgd(pgd_t *pgdp, pg= d_t pgd)=0D {=0D if (pgtable_l5_enabled)=0D *pgdp =3D pgd;=0D else=0D set_p4d((p4d_t *)pgdp, (p4d_t){ ((pgd).pgd) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_none(pgd_t pgd)=0D {=0D if (pgtable_l5_enabled)=0D return (((pgd).pgd) =3D=3D 0);=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_present(pgd_t pgd)=0D {=0D if (pgtable_l5_enabled)=0D return (((pgd).pgd) & (1 << 0));=0D =0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_bad(pgd_t pgd)=0D {=0D if (pgtable_l5_enabled)=0D return !pgd_present(pgd);=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgd_clear(pgd_t *pgd)=0D {=0D if (pgtable_l5_enabled)=0D set_pgd(pgd, ((pgd_t) { (0) }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) p4d_t *pgd_pgtable(pgd_t pgd= )=0D {=0D if (pgtable_l5_enabled)=0D return (p4d_t *)(((void *)((void *)((unsigned long)((phys_addr_t)((((phys= _addr_t)(((pgd).pgd) >> 10) << (12))))) + kernel_map.va_pa_offset))));=0D =0D return (p4d_t *)p4d_pgtable((p4d_t) { ((pgd).pgd) });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *pgd_page(pgd_t = pgd)=0D {=0D return (((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / s= izeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enable= d ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (p= gtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(s= truct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((pgd).pgd) >> 10));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) p4d_t *p4d_offset(pgd_t *pgd= , unsigned long address)=0D {=0D if (pgtable_l5_enabled)=0D return pgd_pgtable(*pgd) + (((address) >> 39) & ((((1UL) << (12)) / sizeo= f(p4d_t)) - 1));=0D =0D return (p4d_t *)pgd;=0D }=0D # 113 "./arch/riscv/include/asm/pgtable.h" 2=0D # 129 "./arch/riscv/include/asm/pgtable.h"=0D struct pt_alloc_ops {=0D pte_t *(*get_pte_virt)(phys_addr_t pa);=0D phys_addr_t (*alloc_pte)(uintptr_t va);=0D =0D pmd_t *(*get_pmd_virt)(phys_addr_t pa);=0D phys_addr_t (*alloc_pmd)(uintptr_t va);=0D pud_t *(*get_pud_virt)(phys_addr_t pa);=0D phys_addr_t (*alloc_pud)(uintptr_t va);=0D p4d_t *(*get_p4d_virt)(phys_addr_t pa);=0D phys_addr_t (*alloc_p4d)(uintptr_t va);=0D =0D };=0D =0D extern struct pt_alloc_ops pt_ops __attribute__((__section__(".init.data"))= );=0D # 186 "./arch/riscv/include/asm/pgtable.h"=0D extern pgd_t swapper_pg_dir[];=0D # 209 "./arch/riscv/include/asm/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_present(pmd_t pmd)=0D {=0D =0D =0D =0D =0D =0D =0D return (((pmd).pmd) & ((1 << 0) | (1 << 5) | ((1 << 1) | (1 << 2) | (1 << = 3))));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_none(pmd_t pmd)=0D {=0D return (((pmd).pmd) =3D=3D 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_bad(pmd_t pmd)=0D {=0D return !pmd_present(pmd) || (((pmd).pmd) & ((1 << 1) | (1 << 2) | (1 << 3)= ));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_leaf(pmd_t pmd)=0D {=0D return pmd_present(pmd) && (((pmd).pmd) & ((1 << 1) | (1 << 2) | (1 << 3))= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pmd(pmd_t *pmdp, pm= d_t pmd)=0D {=0D *pmdp =3D pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pmd_clear(pmd_t *pmdp)= =0D {=0D set_pmd(pmdp, ((pmd_t) { (0) }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pgd_t pfn_pgd(unsigned long = pfn, pgprot_t prot)=0D {=0D return ((pgd_t) { ((pfn << 10) | ((prot).pgprot)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long _pgd_pfn(pgd_t= pgd)=0D {=0D return ((pgd).pgd) >> 10;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *pmd_page(pmd_t = pmd)=0D {=0D return (((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / s= izeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enable= d ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (p= gtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(s= truct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((pmd).pmd) >> 10));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pmd_page_vaddr= (pmd_t pmd)=0D {=0D return (unsigned long)(((void *)((void *)((unsigned long)((phys_addr_t)(((= (phys_addr_t)(((pmd).pmd) >> 10) << (12))))) + kernel_map.va_pa_offset))));= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pmd_pte(pmd_t pmd)=0D {=0D return ((pte_t) { (((pmd).pmd)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pud_pte(pud_t pud)=0D {=0D return ((pte_t) { (((pud).pud)) });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pte_pfn(pte_t = pte)=0D {=0D return (((pte).pte) >> 10);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pfn_pte(unsigned long = pfn, pgprot_t prot)=0D {=0D return ((pte_t) { ((pfn << 10) | ((prot).pgprot)) });=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_present(pte_t pte)=0D {=0D return (((pte).pte) & ((1 << 0) | (1 << 5)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_none(pte_t pte)=0D {=0D return (((pte).pte) =3D=3D 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_write(pte_t pte)=0D {=0D return ((pte).pte) & (1 << 2);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_exec(pte_t pte)=0D {=0D return ((pte).pte) & (1 << 3);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_huge(pte_t pte)=0D {=0D return pte_present(pte) && (((pte).pte) & ((1 << 1) | (1 << 2) | (1 << 3))= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_dirty(pte_t pte)=0D {=0D return ((pte).pte) & (1 << 7);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_young(pte_t pte)=0D {=0D return ((pte).pte) & (1 << 6);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_special(pte_t pte)=0D {=0D return ((pte).pte) & (1 << 8);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_wrprotect(pte_t pt= e)=0D {=0D return ((pte_t) { (((pte).pte) & ~((1 << 2))) });=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkwrite(pte_t pte)= =0D {=0D return ((pte_t) { (((pte).pte) | (1 << 2)) });=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkdirty(pte_t pte)= =0D {=0D return ((pte_t) { (((pte).pte) | (1 << 7)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkclean(pte_t pte)= =0D {=0D return ((pte_t) { (((pte).pte) & ~((1 << 7))) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkyoung(pte_t pte)= =0D {=0D return ((pte_t) { (((pte).pte) | (1 << 6)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkold(pte_t pte)=0D {=0D return ((pte_t) { (((pte).pte) & ~((1 << 6))) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkspecial(pte_t pt= e)=0D {=0D return ((pte_t) { (((pte).pte) | (1 << 8)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mkhuge(pte_t pte)= =0D {=0D return pte;=0D }=0D # 400 "./arch/riscv/include/asm/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_modify(pte_t pte, = pgprot_t newprot)=0D {=0D return ((pte_t) { ((((pte).pte) & (~(unsigned long)((1 << 0) | (1 << 1) | = (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5)))) | ((newprot).pgprot)) });=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_mmu_cache(struct= vm_area_struct *vma,=0D unsigned long address, pte_t *ptep)=0D {=0D =0D =0D =0D =0D =0D =0D =0D local_flush_tlb_page(address);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_mmu_cache_pmd(st= ruct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp)=0D {=0D pte_t *ptep =3D (pte_t *)pmdp;=0D =0D update_mmu_cache(vma, address, ptep);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_same(pte_t pte_a, pt= e_t pte_b)=0D {=0D return ((pte_a).pte) =3D=3D ((pte_b).pte);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pte(pte_t *ptep, pt= e_t pteval)=0D {=0D *ptep =3D pteval;=0D }=0D =0D void flush_icache_pte(pte_t pte);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pte_at(struct mm_st= ruct *mm,=0D unsigned long addr, pte_t *ptep, pte_t pteval)=0D {=0D if (pte_present(pteval) && pte_exec(pteval))=0D flush_icache_pte(pteval);=0D =0D set_pte(ptep, pteval);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pte_clear(struct mm_str= uct *mm,=0D unsigned long addr, pte_t *ptep)=0D {=0D set_pte_at(mm, addr, ptep, ((pte_t) { (0) }));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptep_set_access_flags(st= ruct vm_area_struct *vma,=0D unsigned long address, pte_t *ptep,=0D pte_t entry, int dirty)=0D {=0D if (!pte_same(*ptep, entry))=0D set_pte_at(vma->vm_mm, address, ptep, entry);=0D =0D =0D =0D =0D return true;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t ptep_get_and_clear(str= uct mm_struct *mm,=0D unsigned long address, pte_t *ptep)=0D {=0D return ((pte_t) { (atomic_long_xchg((atomic_long_t *)ptep, 0)) });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptep_test_and_clear_youn= g(struct vm_area_struct *vma,=0D unsigned long address,=0D pte_t *ptep)=0D {=0D if (!pte_young(*ptep))=0D return 0;=0D return test_and_clear_bit(6, &((*ptep).pte));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptep_set_wrprotect(stru= ct mm_struct *mm,=0D unsigned long address, pte_t *ptep)=0D {=0D atomic_long_and(~(unsigned long)(1 << 2), (atomic_long_t *)ptep);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptep_clear_flush_young(s= truct vm_area_struct *vma,=0D unsigned long address, pte_t *ptep)=0D {=0D # 521 "./arch/riscv/include/asm/pgtable.h"=0D return ptep_test_and_clear_young(vma, address, ptep);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pte_pmd(pte_t pte)=0D {=0D return ((pmd_t) { (((pte).pte)) });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkhuge(pmd_t pmd)= =0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkinvalid(pmd_t pm= d)=0D {=0D return ((pmd_t) { (((pmd).pmd) & ~((1 << 0)|(1 << 5))) });=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pmd_pfn(pmd_t = pmd)=0D {=0D return (((((pmd).pmd) >> 10 << (12)) & (~(((1UL) << 21) - 1))) >> (12));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_modify(pmd_t pmd, = pgprot_t newprot)=0D {=0D return pte_pmd(pte_modify(pmd_pte(pmd), newprot));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_write(pmd_t pmd)=0D {=0D return pte_write(pmd_pte(pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_dirty(pmd_t pmd)=0D {=0D return pte_dirty(pmd_pte(pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_young(pmd_t pmd)=0D {=0D return pte_young(pmd_pte(pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkold(pmd_t pmd)=0D {=0D return pte_pmd(pte_mkold(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkyoung(pmd_t pmd)= =0D {=0D return pte_pmd(pte_mkyoung(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkwrite(pmd_t pmd)= =0D {=0D return pte_pmd(pte_mkwrite(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_wrprotect(pmd_t pm= d)=0D {=0D return pte_pmd(pte_wrprotect(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkclean(pmd_t pmd)= =0D {=0D return pte_pmd(pte_mkclean(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mkdirty(pmd_t pmd)= =0D {=0D return pte_pmd(pte_mkdirty(pmd_pte(pmd)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pmd_at(struct mm_st= ruct *mm, unsigned long addr,=0D pmd_t *pmdp, pmd_t pmd)=0D {=0D return set_pte_at(mm, addr, (pte_t *)pmdp, pmd_pte(pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_pud_at(struct mm_st= ruct *mm, unsigned long addr,=0D pud_t *pudp, pud_t pud)=0D {=0D return set_pte_at(mm, addr, (pte_t *)pudp, pud_pte(pud));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_trans_huge(pmd_t pmd= )=0D {=0D return pmd_leaf(pmd);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmdp_set_access_flags(st= ruct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp,=0D pmd_t entry, int dirty)=0D {=0D return ptep_set_access_flags(vma, address, (pte_t *)pmdp, pmd_pte(entry), = dirty);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmdp_test_and_clear_youn= g(struct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp)=0D {=0D return ptep_test_and_clear_young(vma, address, (pte_t *)pmdp);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmdp_huge_get_and_clea= r(struct mm_struct *mm,=0D unsigned long address, pmd_t *pmdp)=0D {=0D return pte_pmd(ptep_get_and_clear(mm, address, (pte_t *)pmdp));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pmdp_set_wrprotect(stru= ct mm_struct *mm,=0D unsigned long address, pmd_t *pmdp)=0D {=0D ptep_set_wrprotect(mm, address, (pte_t *)pmdp);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmdp_establish(struct = vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp, pmd_t pmd)=0D {=0D return ((pmd_t) { (atomic_long_xchg((atomic_long_t *)pmdp, ((pmd).pmd))) }= );=0D }=0D # 730 "./arch/riscv/include/asm/pgtable.h"=0D extern char _start[];=0D extern void *_dtb_early_va;=0D extern uintptr_t _dtb_early_pa;=0D =0D =0D =0D =0D =0D =0D =0D extern u64 satp_mode;=0D extern bool pgtable_l4_enabled;=0D =0D void paging_init(void);=0D void misc_mem_init(void);=0D =0D =0D =0D =0D =0D extern unsigned long empty_zero_page[((1UL) << (12)) / sizeof(unsigned long= )];=0D # 13 "./arch/riscv/include/asm/uaccess.h" 2=0D # 22 "./arch/riscv/include/asm/uaccess.h"=0D # 1 "./arch/riscv/include/asm/extable.h" 1=0D # 18 "./arch/riscv/include/asm/extable.h"=0D struct exception_table_entry {=0D int insn, fixup;=0D short type, data;=0D };=0D # 35 "./arch/riscv/include/asm/extable.h"=0D bool fixup_exception(struct pt_regs *regs);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D ex_handler_bpf(const struct exception_table_entry *ex,=0D struct pt_regs *regs)=0D {=0D return false;=0D }=0D # 23 "./arch/riscv/include/asm/uaccess.h" 2=0D =0D # 1 "./include/asm-generic/access_ok.h" 1=0D # 31 "./include/asm-generic/access_ok.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __access_ok(const void *= ptr, unsigned long size)=0D {=0D unsigned long limit =3D (((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_= enabled ? 39 : 30))) * (((1UL) << (12)) / sizeof(pgd_t)) / 2);=0D unsigned long addr =3D (unsigned long)ptr;=0D =0D if (0 ||=0D !1)=0D return true;=0D =0D return (size <=3D limit) && (addr <=3D (limit - size));=0D }=0D # 25 "./arch/riscv/include/asm/uaccess.h" 2=0D # 288 "./arch/riscv/include/asm/uaccess.h"=0D unsigned long __attribute__((__warn_unused_result__)) __asm_copy_to_user(vo= id *to,=0D const void *from, unsigned long n);=0D unsigned long __attribute__((__warn_unused_result__)) __asm_copy_from_user(= void *to,=0D const void *from, unsigned long n);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D raw_copy_from_user(void *to, const void *from, unsigned long n)=0D {=0D return __asm_copy_from_user(to, from, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D raw_copy_to_user(void *to, const void *from, unsigned long n)=0D {=0D return __asm_copy_to_user(to, from, n);=0D }=0D =0D extern long strncpy_from_user(char *dest, const char *src, long count);=0D =0D extern long __attribute__((__warn_unused_result__)) strnlen_user(const char= *str, long n);=0D =0D extern=0D unsigned long __attribute__((__warn_unused_result__)) __clear_user(void *ad= dr, unsigned long n);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long __attribute__((__warn_unused_result__)) clear_user(void *to, = unsigned long n)=0D {=0D __might_fault("arch/riscv/include/asm/uaccess.h", 315);=0D return __builtin_expect(!!(__access_ok(to, n)), 1) ?=0D __clear_user(to, n) : n;=0D }=0D # 12 "./include/linux/uaccess.h" 2=0D # 58 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) unsigned long=0D __copy_from_user_inatomic(void *to, const void *from, unsigned long n)=0D {=0D instrument_copy_from_user(to, from, n);=0D check_object_size(to, n, false);=0D return raw_copy_from_user(to, from, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) unsigned long=0D __copy_from_user(void *to, const void *from, unsigned long n)=0D {=0D __might_fault("include/linux/uaccess.h", 69);=0D if (should_fail_usercopy())=0D return n;=0D instrument_copy_from_user(to, from, n);=0D check_object_size(to, n, false);=0D return raw_copy_from_user(to, from, n);=0D }=0D # 90 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) unsigned long=0D __copy_to_user_inatomic(void *to, const void *from, unsigned long n)=0D {=0D if (should_fail_usercopy())=0D return n;=0D instrument_copy_to_user(to, from, n);=0D check_object_size(from, n, true);=0D return raw_copy_to_user(to, from, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) unsigned long=0D __copy_to_user(void *to, const void *from, unsigned long n)=0D {=0D __might_fault("include/linux/uaccess.h", 103);=0D if (should_fail_usercopy())=0D return n;=0D instrument_copy_to_user(to, from, n);=0D check_object_size(from, n, true);=0D return raw_copy_to_user(to, from, n);=0D }=0D # 126 "./include/linux/uaccess.h"=0D extern __attribute__((__warn_unused_result__)) unsigned long=0D _copy_from_user(void *, const void *, unsigned long);=0D # 144 "./include/linux/uaccess.h"=0D extern __attribute__((__warn_unused_result__)) unsigned long=0D _copy_to_user(void *, const void *, unsigned long);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long __attribute__((__warn_unused_result__))=0D copy_from_user(void *to, const void *from, unsigned long n)=0D {=0D if (__builtin_expect(!!(check_copy_size(to, n, false)), 1))=0D n =3D _copy_from_user(to, from, n);=0D return n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned long __attribute__((__warn_unused_result__))=0D copy_to_user(void *to, const void *from, unsigned long n)=0D {=0D if (__builtin_expect(!!(check_copy_size(from, n, true)), 1))=0D n =3D _copy_to_user(to, from, n);=0D return n;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long __attribute__(= (__warn_unused_result__))=0D copy_mc_to_kernel(void *dst, const void *src, size_t cnt)=0D {=0D memcpy(dst, src, cnt);=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void pagefault_disabled_inc(void)=0D {=0D get_current()->pagefault_disabled++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void pagefault_disabled_dec(void)=0D {=0D get_current()->pagefault_disabled--;=0D }=0D # 194 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pagefault_disable(void)= =0D {=0D pagefault_disabled_inc();=0D =0D =0D =0D =0D __asm__ __volatile__("": : :"memory");=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pagefault_enable(void)= =0D {=0D =0D =0D =0D =0D __asm__ __volatile__("": : :"memory");=0D pagefault_disabled_dec();=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pagefault_disabled(void= )=0D {=0D return get_current()->pagefault_disabled !=3D 0;=0D }=0D # 236 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) unsigned long=0D __copy_from_user_inatomic_nocache(void *to, const void *from,=0D unsigned long n)=0D {=0D return __copy_from_user_inatomic(to, from, n);=0D }=0D =0D =0D =0D extern __attribute__((__warn_unused_result__)) int check_zeroed_user(const = void *from, size_t size);=0D # 294 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__warn_unused_result__)) int=0D copy_struct_from_user(void *dst, size_t ksize, const void *src,=0D size_t usize)=0D {=0D size_t size =3D __builtin_choose_expr(((!!(sizeof((typeof(ksize) *)1 =3D= =3D (typeof(usize) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((l= ong)(ksize) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void= *)((long)(usize) * 0l)) : (int *)8))))), ((ksize) < (usize) ? (ksize) : (u= size)), ({ typeof(ksize) __UNIQUE_ID___x178 =3D (ksize); typeof(usize) __UN= IQUE_ID___y179 =3D (usize); ((__UNIQUE_ID___x178) < (__UNIQUE_ID___y179) ? = (__UNIQUE_ID___x178) : (__UNIQUE_ID___y179)); }));=0D size_t rest =3D __builtin_choose_expr(((!!(sizeof((typeof(ksize) *)1 =3D= =3D (typeof(usize) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((l= ong)(ksize) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void= *)((long)(usize) * 0l)) : (int *)8))))), ((ksize) > (usize) ? (ksize) : (u= size)), ({ typeof(ksize) __UNIQUE_ID___x180 =3D (ksize); typeof(usize) __UN= IQUE_ID___y181 =3D (usize); ((__UNIQUE_ID___x180) > (__UNIQUE_ID___y181) ? = (__UNIQUE_ID___x180) : (__UNIQUE_ID___y181)); })) - size;=0D =0D =0D if (usize < ksize) {=0D memset(dst + size, 0, rest);=0D } else if (usize > ksize) {=0D int ret =3D check_zeroed_user(src + size, rest);=0D if (ret <=3D 0)=0D return ret ?: -7;=0D }=0D =0D if (copy_from_user(dst, src, size))=0D return -14;=0D return 0;=0D }=0D =0D bool copy_from_kernel_nofault_allowed(const void *unsafe_src, size_t size);= =0D =0D long copy_from_kernel_nofault(void *dst, const void *src, size_t size);=0D long __attribute__((patchable_function_entry(0, 0))) copy_to_kernel_nofault= (void *dst, const void *src, size_t size);=0D =0D long copy_from_user_nofault(void *dst, const void *src, size_t size);=0D long __attribute__((patchable_function_entry(0, 0))) copy_to_user_nofault(v= oid *dst, const void *src,=0D size_t size);=0D =0D long strncpy_from_kernel_nofault(char *dst, const void *unsafe_addr,=0D long count);=0D =0D long strncpy_from_user_nofault(char *dst, const void *unsafe_addr,=0D long count);=0D long strnlen_user_nofault(const void *unsafe_addr, long count);=0D # 370 "./include/linux/uaccess.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long user_access_sa= ve(void) { return 0UL; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_access_restore(uns= igned long flags) { }=0D # 12 "./include/linux/sched/task.h" 2=0D =0D struct task_struct;=0D struct rusage;=0D union thread_union;=0D struct css_set;=0D =0D =0D =0D =0D struct kernel_clone_args {=0D u64 flags;=0D int *pidfd;=0D int *child_tid;=0D int *parent_tid;=0D int exit_signal;=0D unsigned long stack;=0D unsigned long stack_size;=0D unsigned long tls;=0D pid_t *set_tid;=0D =0D size_t set_tid_size;=0D int cgroup;=0D int io_thread;=0D struct cgroup *cgrp;=0D struct css_set *cset;=0D };=0D =0D =0D =0D =0D =0D =0D =0D extern rwlock_t tasklist_lock;=0D extern spinlock_t mmlist_lock;=0D =0D extern union thread_union init_thread_union;=0D extern struct task_struct init_task;=0D =0D extern int lockdep_tasklist_lock_is_held(void);=0D =0D extern void schedule_tail(struct task_struct *prev);=0D extern void init_idle(struct task_struct *idle, int cpu);=0D =0D extern int sched_fork(unsigned long clone_flags, struct task_struct *p);=0D extern void sched_cgroup_fork(struct task_struct *p, struct kernel_clone_ar= gs *kargs);=0D extern void sched_post_fork(struct task_struct *p);=0D extern void sched_dead(struct task_struct *p);=0D =0D void __attribute__((__noreturn__)) do_task_dead(void);=0D void __attribute__((__noreturn__)) make_task_dead(int signr);=0D =0D extern void proc_caches_init(void);=0D =0D extern void fork_init(void);=0D =0D extern void release_task(struct task_struct * p);=0D =0D extern int copy_thread(unsigned long, unsigned long, unsigned long,=0D struct task_struct *, unsigned long);=0D =0D extern void flush_thread(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void exit_thread(struct task= _struct *tsk)=0D {=0D }=0D =0D extern __attribute__((__noreturn__)) void do_group_exit(int);=0D =0D extern void exit_files(struct task_struct *);=0D extern void exit_itimers(struct signal_struct *);=0D =0D extern pid_t kernel_clone(struct kernel_clone_args *kargs);=0D struct task_struct *create_io_thread(int (*fn)(void *), void *arg, int node= );=0D struct task_struct *fork_idle(int);=0D struct mm_struct *copy_init_mm(void);=0D extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flag= s);=0D extern long kernel_wait4(pid_t, int *, int, struct rusage *);=0D int kernel_wait(pid_t pid, int *stat);=0D =0D extern void free_task(struct task_struct *tsk);=0D =0D =0D =0D extern void sched_exec(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *get_task= _struct(struct task_struct *t)=0D {=0D refcount_inc(&t->usage);=0D return t;=0D }=0D =0D extern void __put_task_struct(struct task_struct *t);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_task_struct(struct = task_struct *t)=0D {=0D if (refcount_dec_and_test(&t->usage))=0D __put_task_struct(t);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_task_struct_many(st= ruct task_struct *t, int nr)=0D {=0D if (refcount_sub_and_test(nr, &t->usage))=0D __put_task_struct(t);=0D }=0D =0D void put_task_struct_rcu_user(struct task_struct *task);=0D # 147 "./include/linux/sched/task.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct vm_struct *task_stack= _vm_area(const struct task_struct *t)=0D {=0D return t->stack_vm_area;=0D }=0D # 168 "./include/linux/sched/task.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_lock(struct task_s= truct *p)=0D {=0D spin_lock(&p->alloc_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void task_unlock(struct task= _struct *p)=0D {=0D spin_unlock(&p->alloc_lock);=0D }=0D # 10 "./include/linux/sched/signal.h" 2=0D # 1 "./include/linux/cred.h" 1=0D # 13 "./include/linux/cred.h"=0D # 1 "./include/linux/key.h" 1=0D # 17 "./include/linux/key.h"=0D # 1 "./include/linux/sysctl.h" 1=0D # 30 "./include/linux/sysctl.h"=0D # 1 "./include/uapi/linux/sysctl.h" 1=0D # 35 "./include/uapi/linux/sysctl.h"=0D struct __sysctl_args {=0D int *name;=0D int nlen;=0D void *oldval;=0D size_t *oldlenp;=0D void *newval;=0D size_t newlen;=0D unsigned long __unused[4];=0D };=0D =0D =0D =0D =0D =0D enum=0D {=0D CTL_KERN=3D1,=0D CTL_VM=3D2,=0D CTL_NET=3D3,=0D CTL_PROC=3D4,=0D CTL_FS=3D5,=0D CTL_DEBUG=3D6,=0D CTL_DEV=3D7,=0D CTL_BUS=3D8,=0D CTL_ABI=3D9,=0D CTL_CPU=3D10,=0D CTL_ARLAN=3D254,=0D CTL_S390DBF=3D5677,=0D CTL_SUNRPC=3D7249,=0D CTL_PM=3D9899,=0D CTL_FRV=3D9898,=0D };=0D =0D =0D enum=0D {=0D CTL_BUS_ISA=3D1=0D };=0D =0D =0D enum=0D {=0D INOTIFY_MAX_USER_INSTANCES=3D1,=0D INOTIFY_MAX_USER_WATCHES=3D2,=0D INOTIFY_MAX_QUEUED_EVENTS=3D3=0D };=0D =0D =0D enum=0D {=0D KERN_OSTYPE=3D1,=0D KERN_OSRELEASE=3D2,=0D KERN_OSREV=3D3,=0D KERN_VERSION=3D4,=0D KERN_SECUREMASK=3D5,=0D KERN_PROF=3D6,=0D KERN_NODENAME=3D7,=0D KERN_DOMAINNAME=3D8,=0D =0D KERN_PANIC=3D15,=0D KERN_REALROOTDEV=3D16,=0D =0D KERN_SPARC_REBOOT=3D21,=0D KERN_CTLALTDEL=3D22,=0D KERN_PRINTK=3D23,=0D KERN_NAMETRANS=3D24,=0D KERN_PPC_HTABRECLAIM=3D25,=0D KERN_PPC_ZEROPAGED=3D26,=0D KERN_PPC_POWERSAVE_NAP=3D27,=0D KERN_MODPROBE=3D28,=0D KERN_SG_BIG_BUFF=3D29,=0D KERN_ACCT=3D30,=0D KERN_PPC_L2CR=3D31,=0D =0D KERN_RTSIGNR=3D32,=0D KERN_RTSIGMAX=3D33,=0D =0D KERN_SHMMAX=3D34,=0D KERN_MSGMAX=3D35,=0D KERN_MSGMNB=3D36,=0D KERN_MSGPOOL=3D37,=0D KERN_SYSRQ=3D38,=0D KERN_MAX_THREADS=3D39,=0D KERN_RANDOM=3D40,=0D KERN_SHMALL=3D41,=0D KERN_MSGMNI=3D42,=0D KERN_SEM=3D43,=0D KERN_SPARC_STOP_A=3D44,=0D KERN_SHMMNI=3D45,=0D KERN_OVERFLOWUID=3D46,=0D KERN_OVERFLOWGID=3D47,=0D KERN_SHMPATH=3D48,=0D KERN_HOTPLUG=3D49,=0D KERN_IEEE_EMULATION_WARNINGS=3D50,=0D KERN_S390_USER_DEBUG_LOGGING=3D51,=0D KERN_CORE_USES_PID=3D52,=0D KERN_TAINTED=3D53,=0D KERN_CADPID=3D54,=0D KERN_PIDMAX=3D55,=0D KERN_CORE_PATTERN=3D56,=0D KERN_PANIC_ON_OOPS=3D57,=0D KERN_HPPA_PWRSW=3D58,=0D KERN_HPPA_UNALIGNED=3D59,=0D KERN_PRINTK_RATELIMIT=3D60,=0D KERN_PRINTK_RATELIMIT_BURST=3D61,=0D KERN_PTY=3D62,=0D KERN_NGROUPS_MAX=3D63,=0D KERN_SPARC_SCONS_PWROFF=3D64,=0D KERN_HZ_TIMER=3D65,=0D KERN_UNKNOWN_NMI_PANIC=3D66,=0D KERN_BOOTLOADER_TYPE=3D67,=0D KERN_RANDOMIZE=3D68,=0D KERN_SETUID_DUMPABLE=3D69,=0D KERN_SPIN_RETRY=3D70,=0D KERN_ACPI_VIDEO_FLAGS=3D71,=0D KERN_IA64_UNALIGNED=3D72,=0D KERN_COMPAT_LOG=3D73,=0D KERN_MAX_LOCK_DEPTH=3D74,=0D KERN_NMI_WATCHDOG=3D75,=0D KERN_PANIC_ON_NMI=3D76,=0D KERN_PANIC_ON_WARN=3D77,=0D KERN_PANIC_PRINT=3D78,=0D };=0D =0D =0D =0D =0D enum=0D {=0D VM_UNUSED1=3D1,=0D VM_UNUSED2=3D2,=0D VM_UNUSED3=3D3,=0D VM_UNUSED4=3D4,=0D VM_OVERCOMMIT_MEMORY=3D5,=0D VM_UNUSED5=3D6,=0D VM_UNUSED7=3D7,=0D VM_UNUSED8=3D8,=0D VM_UNUSED9=3D9,=0D VM_PAGE_CLUSTER=3D10,=0D VM_DIRTY_BACKGROUND=3D11,=0D VM_DIRTY_RATIO=3D12,=0D VM_DIRTY_WB_CS=3D13,=0D VM_DIRTY_EXPIRE_CS=3D14,=0D VM_NR_PDFLUSH_THREADS=3D15,=0D VM_OVERCOMMIT_RATIO=3D16,=0D VM_PAGEBUF=3D17,=0D VM_HUGETLB_PAGES=3D18,=0D VM_SWAPPINESS=3D19,=0D VM_LOWMEM_RESERVE_RATIO=3D20,=0D VM_MIN_FREE_KBYTES=3D21,=0D VM_MAX_MAP_COUNT=3D22,=0D VM_LAPTOP_MODE=3D23,=0D VM_BLOCK_DUMP=3D24,=0D VM_HUGETLB_GROUP=3D25,=0D VM_VFS_CACHE_PRESSURE=3D26,=0D VM_LEGACY_VA_LAYOUT=3D27,=0D VM_SWAP_TOKEN_TIMEOUT=3D28,=0D VM_DROP_PAGECACHE=3D29,=0D VM_PERCPU_PAGELIST_FRACTION=3D30,=0D VM_ZONE_RECLAIM_MODE=3D31,=0D VM_MIN_UNMAPPED=3D32,=0D VM_PANIC_ON_OOM=3D33,=0D VM_VDSO_ENABLED=3D34,=0D VM_MIN_SLAB=3D35,=0D };=0D =0D =0D =0D enum=0D {=0D NET_CORE=3D1,=0D NET_ETHER=3D2,=0D NET_802=3D3,=0D NET_UNIX=3D4,=0D NET_IPV4=3D5,=0D NET_IPX=3D6,=0D NET_ATALK=3D7,=0D NET_NETROM=3D8,=0D NET_AX25=3D9,=0D NET_BRIDGE=3D10,=0D NET_ROSE=3D11,=0D NET_IPV6=3D12,=0D NET_X25=3D13,=0D NET_TR=3D14,=0D NET_DECNET=3D15,=0D NET_ECONET=3D16,=0D NET_SCTP=3D17,=0D NET_LLC=3D18,=0D NET_NETFILTER=3D19,=0D NET_DCCP=3D20,=0D NET_IRDA=3D412,=0D };=0D =0D =0D enum=0D {=0D RANDOM_POOLSIZE=3D1,=0D RANDOM_ENTROPY_COUNT=3D2,=0D RANDOM_READ_THRESH=3D3,=0D RANDOM_WRITE_THRESH=3D4,=0D RANDOM_BOOT_ID=3D5,=0D RANDOM_UUID=3D6=0D };=0D =0D =0D enum=0D {=0D PTY_MAX=3D1,=0D PTY_NR=3D2=0D };=0D =0D =0D enum=0D {=0D BUS_ISA_MEM_BASE=3D1,=0D BUS_ISA_PORT_BASE=3D2,=0D BUS_ISA_PORT_SHIFT=3D3=0D };=0D =0D =0D enum=0D {=0D NET_CORE_WMEM_MAX=3D1,=0D NET_CORE_RMEM_MAX=3D2,=0D NET_CORE_WMEM_DEFAULT=3D3,=0D NET_CORE_RMEM_DEFAULT=3D4,=0D =0D NET_CORE_MAX_BACKLOG=3D6,=0D NET_CORE_FASTROUTE=3D7,=0D NET_CORE_MSG_COST=3D8,=0D NET_CORE_MSG_BURST=3D9,=0D NET_CORE_OPTMEM_MAX=3D10,=0D NET_CORE_HOT_LIST_LENGTH=3D11,=0D NET_CORE_DIVERT_VERSION=3D12,=0D NET_CORE_NO_CONG_THRESH=3D13,=0D NET_CORE_NO_CONG=3D14,=0D NET_CORE_LO_CONG=3D15,=0D NET_CORE_MOD_CONG=3D16,=0D NET_CORE_DEV_WEIGHT=3D17,=0D NET_CORE_SOMAXCONN=3D18,=0D NET_CORE_BUDGET=3D19,=0D NET_CORE_AEVENT_ETIME=3D20,=0D NET_CORE_AEVENT_RSEQTH=3D21,=0D NET_CORE_WARNINGS=3D22,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum=0D {=0D NET_UNIX_DESTROY_DELAY=3D1,=0D NET_UNIX_DELETE_DELAY=3D2,=0D NET_UNIX_MAX_DGRAM_QLEN=3D3,=0D };=0D =0D =0D enum=0D {=0D NET_NF_CONNTRACK_MAX=3D1,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=3D2,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3D3,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=3D4,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=3D5,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=3D6,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=3D7,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=3D8,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=3D9,=0D NET_NF_CONNTRACK_UDP_TIMEOUT=3D10,=0D NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=3D11,=0D NET_NF_CONNTRACK_ICMP_TIMEOUT=3D12,=0D NET_NF_CONNTRACK_GENERIC_TIMEOUT=3D13,=0D NET_NF_CONNTRACK_BUCKETS=3D14,=0D NET_NF_CONNTRACK_LOG_INVALID=3D15,=0D NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=3D16,=0D NET_NF_CONNTRACK_TCP_LOOSE=3D17,=0D NET_NF_CONNTRACK_TCP_BE_LIBERAL=3D18,=0D NET_NF_CONNTRACK_TCP_MAX_RETRANS=3D19,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=3D20,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=3D21,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=3D22,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=3D23,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=3D24,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=3D25,=0D NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=3D26,=0D NET_NF_CONNTRACK_COUNT=3D27,=0D NET_NF_CONNTRACK_ICMPV6_TIMEOUT=3D28,=0D NET_NF_CONNTRACK_FRAG6_TIMEOUT=3D29,=0D NET_NF_CONNTRACK_FRAG6_LOW_THRESH=3D30,=0D NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=3D31,=0D NET_NF_CONNTRACK_CHECKSUM=3D32,=0D };=0D =0D =0D enum=0D {=0D =0D NET_IPV4_FORWARD=3D8,=0D NET_IPV4_DYNADDR=3D9,=0D =0D NET_IPV4_CONF=3D16,=0D NET_IPV4_NEIGH=3D17,=0D NET_IPV4_ROUTE=3D18,=0D NET_IPV4_FIB_HASH=3D19,=0D NET_IPV4_NETFILTER=3D20,=0D =0D NET_IPV4_TCP_TIMESTAMPS=3D33,=0D NET_IPV4_TCP_WINDOW_SCALING=3D34,=0D NET_IPV4_TCP_SACK=3D35,=0D NET_IPV4_TCP_RETRANS_COLLAPSE=3D36,=0D NET_IPV4_DEFAULT_TTL=3D37,=0D NET_IPV4_AUTOCONFIG=3D38,=0D NET_IPV4_NO_PMTU_DISC=3D39,=0D NET_IPV4_TCP_SYN_RETRIES=3D40,=0D NET_IPV4_IPFRAG_HIGH_THRESH=3D41,=0D NET_IPV4_IPFRAG_LOW_THRESH=3D42,=0D NET_IPV4_IPFRAG_TIME=3D43,=0D NET_IPV4_TCP_MAX_KA_PROBES=3D44,=0D NET_IPV4_TCP_KEEPALIVE_TIME=3D45,=0D NET_IPV4_TCP_KEEPALIVE_PROBES=3D46,=0D NET_IPV4_TCP_RETRIES1=3D47,=0D NET_IPV4_TCP_RETRIES2=3D48,=0D NET_IPV4_TCP_FIN_TIMEOUT=3D49,=0D NET_IPV4_IP_MASQ_DEBUG=3D50,=0D NET_TCP_SYNCOOKIES=3D51,=0D NET_TCP_STDURG=3D52,=0D NET_TCP_RFC1337=3D53,=0D NET_TCP_SYN_TAILDROP=3D54,=0D NET_TCP_MAX_SYN_BACKLOG=3D55,=0D NET_IPV4_LOCAL_PORT_RANGE=3D56,=0D NET_IPV4_ICMP_ECHO_IGNORE_ALL=3D57,=0D NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=3D58,=0D NET_IPV4_ICMP_SOURCEQUENCH_RATE=3D59,=0D NET_IPV4_ICMP_DESTUNREACH_RATE=3D60,=0D NET_IPV4_ICMP_TIMEEXCEED_RATE=3D61,=0D NET_IPV4_ICMP_PARAMPROB_RATE=3D62,=0D NET_IPV4_ICMP_ECHOREPLY_RATE=3D63,=0D NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=3D64,=0D NET_IPV4_IGMP_MAX_MEMBERSHIPS=3D65,=0D NET_TCP_TW_RECYCLE=3D66,=0D NET_IPV4_ALWAYS_DEFRAG=3D67,=0D NET_IPV4_TCP_KEEPALIVE_INTVL=3D68,=0D NET_IPV4_INET_PEER_THRESHOLD=3D69,=0D NET_IPV4_INET_PEER_MINTTL=3D70,=0D NET_IPV4_INET_PEER_MAXTTL=3D71,=0D NET_IPV4_INET_PEER_GC_MINTIME=3D72,=0D NET_IPV4_INET_PEER_GC_MAXTIME=3D73,=0D NET_TCP_ORPHAN_RETRIES=3D74,=0D NET_TCP_ABORT_ON_OVERFLOW=3D75,=0D NET_TCP_SYNACK_RETRIES=3D76,=0D NET_TCP_MAX_ORPHANS=3D77,=0D NET_TCP_MAX_TW_BUCKETS=3D78,=0D NET_TCP_FACK=3D79,=0D NET_TCP_REORDERING=3D80,=0D NET_TCP_ECN=3D81,=0D NET_TCP_DSACK=3D82,=0D NET_TCP_MEM=3D83,=0D NET_TCP_WMEM=3D84,=0D NET_TCP_RMEM=3D85,=0D NET_TCP_APP_WIN=3D86,=0D NET_TCP_ADV_WIN_SCALE=3D87,=0D NET_IPV4_NONLOCAL_BIND=3D88,=0D NET_IPV4_ICMP_RATELIMIT=3D89,=0D NET_IPV4_ICMP_RATEMASK=3D90,=0D NET_TCP_TW_REUSE=3D91,=0D NET_TCP_FRTO=3D92,=0D NET_TCP_LOW_LATENCY=3D93,=0D NET_IPV4_IPFRAG_SECRET_INTERVAL=3D94,=0D NET_IPV4_IGMP_MAX_MSF=3D96,=0D NET_TCP_NO_METRICS_SAVE=3D97,=0D NET_TCP_DEFAULT_WIN_SCALE=3D105,=0D NET_TCP_MODERATE_RCVBUF=3D106,=0D NET_TCP_TSO_WIN_DIVISOR=3D107,=0D NET_TCP_BIC_BETA=3D108,=0D NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=3D109,=0D NET_TCP_CONG_CONTROL=3D110,=0D NET_TCP_ABC=3D111,=0D NET_IPV4_IPFRAG_MAX_DIST=3D112,=0D NET_TCP_MTU_PROBING=3D113,=0D NET_TCP_BASE_MSS=3D114,=0D NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=3D115,=0D NET_TCP_DMA_COPYBREAK=3D116,=0D NET_TCP_SLOW_START_AFTER_IDLE=3D117,=0D NET_CIPSOV4_CACHE_ENABLE=3D118,=0D NET_CIPSOV4_CACHE_BUCKET_SIZE=3D119,=0D NET_CIPSOV4_RBM_OPTFMT=3D120,=0D NET_CIPSOV4_RBM_STRICTVALID=3D121,=0D NET_TCP_AVAIL_CONG_CONTROL=3D122,=0D NET_TCP_ALLOWED_CONG_CONTROL=3D123,=0D NET_TCP_MAX_SSTHRESH=3D124,=0D NET_TCP_FRTO_RESPONSE=3D125,=0D };=0D =0D enum {=0D NET_IPV4_ROUTE_FLUSH=3D1,=0D NET_IPV4_ROUTE_MIN_DELAY=3D2,=0D NET_IPV4_ROUTE_MAX_DELAY=3D3,=0D NET_IPV4_ROUTE_GC_THRESH=3D4,=0D NET_IPV4_ROUTE_MAX_SIZE=3D5,=0D NET_IPV4_ROUTE_GC_MIN_INTERVAL=3D6,=0D NET_IPV4_ROUTE_GC_TIMEOUT=3D7,=0D NET_IPV4_ROUTE_GC_INTERVAL=3D8,=0D NET_IPV4_ROUTE_REDIRECT_LOAD=3D9,=0D NET_IPV4_ROUTE_REDIRECT_NUMBER=3D10,=0D NET_IPV4_ROUTE_REDIRECT_SILENCE=3D11,=0D NET_IPV4_ROUTE_ERROR_COST=3D12,=0D NET_IPV4_ROUTE_ERROR_BURST=3D13,=0D NET_IPV4_ROUTE_GC_ELASTICITY=3D14,=0D NET_IPV4_ROUTE_MTU_EXPIRES=3D15,=0D NET_IPV4_ROUTE_MIN_PMTU=3D16,=0D NET_IPV4_ROUTE_MIN_ADVMSS=3D17,=0D NET_IPV4_ROUTE_SECRET_INTERVAL=3D18,=0D NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=3D19,=0D };=0D =0D enum=0D {=0D NET_PROTO_CONF_ALL=3D-2,=0D NET_PROTO_CONF_DEFAULT=3D-3=0D =0D =0D };=0D =0D enum=0D {=0D NET_IPV4_CONF_FORWARDING=3D1,=0D NET_IPV4_CONF_MC_FORWARDING=3D2,=0D NET_IPV4_CONF_PROXY_ARP=3D3,=0D NET_IPV4_CONF_ACCEPT_REDIRECTS=3D4,=0D NET_IPV4_CONF_SECURE_REDIRECTS=3D5,=0D NET_IPV4_CONF_SEND_REDIRECTS=3D6,=0D NET_IPV4_CONF_SHARED_MEDIA=3D7,=0D NET_IPV4_CONF_RP_FILTER=3D8,=0D NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=3D9,=0D NET_IPV4_CONF_BOOTP_RELAY=3D10,=0D NET_IPV4_CONF_LOG_MARTIANS=3D11,=0D NET_IPV4_CONF_TAG=3D12,=0D NET_IPV4_CONF_ARPFILTER=3D13,=0D NET_IPV4_CONF_MEDIUM_ID=3D14,=0D NET_IPV4_CONF_NOXFRM=3D15,=0D NET_IPV4_CONF_NOPOLICY=3D16,=0D NET_IPV4_CONF_FORCE_IGMP_VERSION=3D17,=0D NET_IPV4_CONF_ARP_ANNOUNCE=3D18,=0D NET_IPV4_CONF_ARP_IGNORE=3D19,=0D NET_IPV4_CONF_PROMOTE_SECONDARIES=3D20,=0D NET_IPV4_CONF_ARP_ACCEPT=3D21,=0D NET_IPV4_CONF_ARP_NOTIFY=3D22,=0D NET_IPV4_CONF_ARP_EVICT_NOCARRIER=3D23,=0D };=0D =0D =0D enum=0D {=0D NET_IPV4_NF_CONNTRACK_MAX=3D1,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=3D2,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3D3,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=3D4,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=3D5,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=3D6,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=3D7,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=3D8,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=3D9,=0D NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=3D10,=0D NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=3D11,=0D NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=3D12,=0D NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=3D13,=0D NET_IPV4_NF_CONNTRACK_BUCKETS=3D14,=0D NET_IPV4_NF_CONNTRACK_LOG_INVALID=3D15,=0D NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=3D16,=0D NET_IPV4_NF_CONNTRACK_TCP_LOOSE=3D17,=0D NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=3D18,=0D NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=3D19,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=3D20,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=3D21,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=3D22,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=3D23,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=3D24,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=3D25,=0D NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=3D26,=0D NET_IPV4_NF_CONNTRACK_COUNT=3D27,=0D NET_IPV4_NF_CONNTRACK_CHECKSUM=3D28,=0D };=0D =0D =0D enum {=0D NET_IPV6_CONF=3D16,=0D NET_IPV6_NEIGH=3D17,=0D NET_IPV6_ROUTE=3D18,=0D NET_IPV6_ICMP=3D19,=0D NET_IPV6_BINDV6ONLY=3D20,=0D NET_IPV6_IP6FRAG_HIGH_THRESH=3D21,=0D NET_IPV6_IP6FRAG_LOW_THRESH=3D22,=0D NET_IPV6_IP6FRAG_TIME=3D23,=0D NET_IPV6_IP6FRAG_SECRET_INTERVAL=3D24,=0D NET_IPV6_MLD_MAX_MSF=3D25,=0D };=0D =0D enum {=0D NET_IPV6_ROUTE_FLUSH=3D1,=0D NET_IPV6_ROUTE_GC_THRESH=3D2,=0D NET_IPV6_ROUTE_MAX_SIZE=3D3,=0D NET_IPV6_ROUTE_GC_MIN_INTERVAL=3D4,=0D NET_IPV6_ROUTE_GC_TIMEOUT=3D5,=0D NET_IPV6_ROUTE_GC_INTERVAL=3D6,=0D NET_IPV6_ROUTE_GC_ELASTICITY=3D7,=0D NET_IPV6_ROUTE_MTU_EXPIRES=3D8,=0D NET_IPV6_ROUTE_MIN_ADVMSS=3D9,=0D NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=3D10=0D };=0D =0D enum {=0D NET_IPV6_FORWARDING=3D1,=0D NET_IPV6_HOP_LIMIT=3D2,=0D NET_IPV6_MTU=3D3,=0D NET_IPV6_ACCEPT_RA=3D4,=0D NET_IPV6_ACCEPT_REDIRECTS=3D5,=0D NET_IPV6_AUTOCONF=3D6,=0D NET_IPV6_DAD_TRANSMITS=3D7,=0D NET_IPV6_RTR_SOLICITS=3D8,=0D NET_IPV6_RTR_SOLICIT_INTERVAL=3D9,=0D NET_IPV6_RTR_SOLICIT_DELAY=3D10,=0D NET_IPV6_USE_TEMPADDR=3D11,=0D NET_IPV6_TEMP_VALID_LFT=3D12,=0D NET_IPV6_TEMP_PREFERED_LFT=3D13,=0D NET_IPV6_REGEN_MAX_RETRY=3D14,=0D NET_IPV6_MAX_DESYNC_FACTOR=3D15,=0D NET_IPV6_MAX_ADDRESSES=3D16,=0D NET_IPV6_FORCE_MLD_VERSION=3D17,=0D NET_IPV6_ACCEPT_RA_DEFRTR=3D18,=0D NET_IPV6_ACCEPT_RA_PINFO=3D19,=0D NET_IPV6_ACCEPT_RA_RTR_PREF=3D20,=0D NET_IPV6_RTR_PROBE_INTERVAL=3D21,=0D NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=3D22,=0D NET_IPV6_PROXY_NDP=3D23,=0D NET_IPV6_ACCEPT_SOURCE_ROUTE=3D25,=0D NET_IPV6_ACCEPT_RA_FROM_LOCAL=3D26,=0D NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN=3D27,=0D NET_IPV6_RA_DEFRTR_METRIC=3D28,=0D __NET_IPV6_MAX=0D };=0D =0D =0D enum {=0D NET_IPV6_ICMP_RATELIMIT =3D 1,=0D NET_IPV6_ICMP_ECHO_IGNORE_ALL =3D 2=0D };=0D =0D =0D enum {=0D NET_NEIGH_MCAST_SOLICIT=3D1,=0D NET_NEIGH_UCAST_SOLICIT=3D2,=0D NET_NEIGH_APP_SOLICIT=3D3,=0D NET_NEIGH_RETRANS_TIME=3D4,=0D NET_NEIGH_REACHABLE_TIME=3D5,=0D NET_NEIGH_DELAY_PROBE_TIME=3D6,=0D NET_NEIGH_GC_STALE_TIME=3D7,=0D NET_NEIGH_UNRES_QLEN=3D8,=0D NET_NEIGH_PROXY_QLEN=3D9,=0D NET_NEIGH_ANYCAST_DELAY=3D10,=0D NET_NEIGH_PROXY_DELAY=3D11,=0D NET_NEIGH_LOCKTIME=3D12,=0D NET_NEIGH_GC_INTERVAL=3D13,=0D NET_NEIGH_GC_THRESH1=3D14,=0D NET_NEIGH_GC_THRESH2=3D15,=0D NET_NEIGH_GC_THRESH3=3D16,=0D NET_NEIGH_RETRANS_TIME_MS=3D17,=0D NET_NEIGH_REACHABLE_TIME_MS=3D18,=0D };=0D =0D =0D enum {=0D NET_DCCP_DEFAULT=3D1,=0D };=0D =0D =0D enum {=0D NET_IPX_PPROP_BROADCASTING=3D1,=0D NET_IPX_FORWARDING=3D2=0D };=0D =0D =0D enum {=0D NET_LLC2=3D1,=0D NET_LLC_STATION=3D2,=0D };=0D =0D =0D enum {=0D NET_LLC2_TIMEOUT=3D1,=0D };=0D =0D =0D enum {=0D NET_LLC_STATION_ACK_TIMEOUT=3D1,=0D };=0D =0D =0D enum {=0D NET_LLC2_ACK_TIMEOUT=3D1,=0D NET_LLC2_P_TIMEOUT=3D2,=0D NET_LLC2_REJ_TIMEOUT=3D3,=0D NET_LLC2_BUSY_TIMEOUT=3D4,=0D };=0D =0D =0D enum {=0D NET_ATALK_AARP_EXPIRY_TIME=3D1,=0D NET_ATALK_AARP_TICK_TIME=3D2,=0D NET_ATALK_AARP_RETRANSMIT_LIMIT=3D3,=0D NET_ATALK_AARP_RESOLVE_TIME=3D4=0D };=0D =0D =0D =0D enum {=0D NET_NETROM_DEFAULT_PATH_QUALITY=3D1,=0D NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=3D2,=0D NET_NETROM_NETWORK_TTL_INITIALISER=3D3,=0D NET_NETROM_TRANSPORT_TIMEOUT=3D4,=0D NET_NETROM_TRANSPORT_MAXIMUM_TRIES=3D5,=0D NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=3D6,=0D NET_NETROM_TRANSPORT_BUSY_DELAY=3D7,=0D NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=3D8,=0D NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=3D9,=0D NET_NETROM_ROUTING_CONTROL=3D10,=0D NET_NETROM_LINK_FAILS_COUNT=3D11,=0D NET_NETROM_RESET=3D12=0D };=0D =0D =0D enum {=0D NET_AX25_IP_DEFAULT_MODE=3D1,=0D NET_AX25_DEFAULT_MODE=3D2,=0D NET_AX25_BACKOFF_TYPE=3D3,=0D NET_AX25_CONNECT_MODE=3D4,=0D NET_AX25_STANDARD_WINDOW=3D5,=0D NET_AX25_EXTENDED_WINDOW=3D6,=0D NET_AX25_T1_TIMEOUT=3D7,=0D NET_AX25_T2_TIMEOUT=3D8,=0D NET_AX25_T3_TIMEOUT=3D9,=0D NET_AX25_IDLE_TIMEOUT=3D10,=0D NET_AX25_N2=3D11,=0D NET_AX25_PACLEN=3D12,=0D NET_AX25_PROTOCOL=3D13,=0D NET_AX25_DAMA_SLAVE_TIMEOUT=3D14=0D };=0D =0D =0D enum {=0D NET_ROSE_RESTART_REQUEST_TIMEOUT=3D1,=0D NET_ROSE_CALL_REQUEST_TIMEOUT=3D2,=0D NET_ROSE_RESET_REQUEST_TIMEOUT=3D3,=0D NET_ROSE_CLEAR_REQUEST_TIMEOUT=3D4,=0D NET_ROSE_ACK_HOLD_BACK_TIMEOUT=3D5,=0D NET_ROSE_ROUTING_CONTROL=3D6,=0D NET_ROSE_LINK_FAIL_TIMEOUT=3D7,=0D NET_ROSE_MAX_VCS=3D8,=0D NET_ROSE_WINDOW_SIZE=3D9,=0D NET_ROSE_NO_ACTIVITY_TIMEOUT=3D10=0D };=0D =0D =0D enum {=0D NET_X25_RESTART_REQUEST_TIMEOUT=3D1,=0D NET_X25_CALL_REQUEST_TIMEOUT=3D2,=0D NET_X25_RESET_REQUEST_TIMEOUT=3D3,=0D NET_X25_CLEAR_REQUEST_TIMEOUT=3D4,=0D NET_X25_ACK_HOLD_BACK_TIMEOUT=3D5,=0D NET_X25_FORWARD=3D6=0D };=0D =0D =0D enum=0D {=0D NET_TR_RIF_TIMEOUT=3D1=0D };=0D =0D =0D enum {=0D NET_DECNET_NODE_TYPE =3D 1,=0D NET_DECNET_NODE_ADDRESS =3D 2,=0D NET_DECNET_NODE_NAME =3D 3,=0D NET_DECNET_DEFAULT_DEVICE =3D 4,=0D NET_DECNET_TIME_WAIT =3D 5,=0D NET_DECNET_DN_COUNT =3D 6,=0D NET_DECNET_DI_COUNT =3D 7,=0D NET_DECNET_DR_COUNT =3D 8,=0D NET_DECNET_DST_GC_INTERVAL =3D 9,=0D NET_DECNET_CONF =3D 10,=0D NET_DECNET_NO_FC_MAX_CWND =3D 11,=0D NET_DECNET_MEM =3D 12,=0D NET_DECNET_RMEM =3D 13,=0D NET_DECNET_WMEM =3D 14,=0D NET_DECNET_DEBUG_LEVEL =3D 255=0D };=0D =0D =0D enum {=0D NET_DECNET_CONF_LOOPBACK =3D -2,=0D NET_DECNET_CONF_DDCMP =3D -3,=0D NET_DECNET_CONF_PPP =3D -4,=0D NET_DECNET_CONF_X25 =3D -5,=0D NET_DECNET_CONF_GRE =3D -6,=0D NET_DECNET_CONF_ETHER =3D -7=0D =0D =0D };=0D =0D =0D enum {=0D NET_DECNET_CONF_DEV_PRIORITY =3D 1,=0D NET_DECNET_CONF_DEV_T1 =3D 2,=0D NET_DECNET_CONF_DEV_T2 =3D 3,=0D NET_DECNET_CONF_DEV_T3 =3D 4,=0D NET_DECNET_CONF_DEV_FORWARDING =3D 5,=0D NET_DECNET_CONF_DEV_BLKSIZE =3D 6,=0D NET_DECNET_CONF_DEV_STATE =3D 7=0D };=0D =0D =0D enum {=0D NET_SCTP_RTO_INITIAL =3D 1,=0D NET_SCTP_RTO_MIN =3D 2,=0D NET_SCTP_RTO_MAX =3D 3,=0D NET_SCTP_RTO_ALPHA =3D 4,=0D NET_SCTP_RTO_BETA =3D 5,=0D NET_SCTP_VALID_COOKIE_LIFE =3D 6,=0D NET_SCTP_ASSOCIATION_MAX_RETRANS =3D 7,=0D NET_SCTP_PATH_MAX_RETRANS =3D 8,=0D NET_SCTP_MAX_INIT_RETRANSMITS =3D 9,=0D NET_SCTP_HB_INTERVAL =3D 10,=0D NET_SCTP_PRESERVE_ENABLE =3D 11,=0D NET_SCTP_MAX_BURST =3D 12,=0D NET_SCTP_ADDIP_ENABLE =3D 13,=0D NET_SCTP_PRSCTP_ENABLE =3D 14,=0D NET_SCTP_SNDBUF_POLICY =3D 15,=0D NET_SCTP_SACK_TIMEOUT =3D 16,=0D NET_SCTP_RCVBUF_POLICY =3D 17,=0D };=0D =0D =0D enum {=0D NET_BRIDGE_NF_CALL_ARPTABLES =3D 1,=0D NET_BRIDGE_NF_CALL_IPTABLES =3D 2,=0D NET_BRIDGE_NF_CALL_IP6TABLES =3D 3,=0D NET_BRIDGE_NF_FILTER_VLAN_TAGGED =3D 4,=0D NET_BRIDGE_NF_FILTER_PPPOE_TAGGED =3D 5,=0D };=0D =0D =0D =0D enum=0D {=0D FS_NRINODE=3D1,=0D FS_STATINODE=3D2,=0D FS_MAXINODE=3D3,=0D FS_NRDQUOT=3D4,=0D FS_MAXDQUOT=3D5,=0D FS_NRFILE=3D6,=0D FS_MAXFILE=3D7,=0D FS_DENTRY=3D8,=0D FS_NRSUPER=3D9,=0D FS_MAXSUPER=3D10,=0D FS_OVERFLOWUID=3D11,=0D FS_OVERFLOWGID=3D12,=0D FS_LEASES=3D13,=0D FS_DIR_NOTIFY=3D14,=0D FS_LEASE_TIME=3D15,=0D FS_DQSTATS=3D16,=0D FS_XFS=3D17,=0D FS_AIO_NR=3D18,=0D FS_AIO_MAX_NR=3D19,=0D FS_INOTIFY=3D20,=0D FS_OCFS2=3D988,=0D };=0D =0D =0D enum {=0D FS_DQ_LOOKUPS =3D 1,=0D FS_DQ_DROPS =3D 2,=0D FS_DQ_READS =3D 3,=0D FS_DQ_WRITES =3D 4,=0D FS_DQ_CACHE_HITS =3D 5,=0D FS_DQ_ALLOCATED =3D 6,=0D FS_DQ_FREE =3D 7,=0D FS_DQ_SYNCS =3D 8,=0D FS_DQ_WARNINGS =3D 9,=0D };=0D =0D =0D =0D =0D enum {=0D DEV_CDROM=3D1,=0D DEV_HWMON=3D2,=0D DEV_PARPORT=3D3,=0D DEV_RAID=3D4,=0D DEV_MAC_HID=3D5,=0D DEV_SCSI=3D6,=0D DEV_IPMI=3D7,=0D };=0D =0D =0D enum {=0D DEV_CDROM_INFO=3D1,=0D DEV_CDROM_AUTOCLOSE=3D2,=0D DEV_CDROM_AUTOEJECT=3D3,=0D DEV_CDROM_DEBUG=3D4,=0D DEV_CDROM_LOCK=3D5,=0D DEV_CDROM_CHECK_MEDIA=3D6=0D };=0D =0D =0D enum {=0D DEV_PARPORT_DEFAULT=3D-3=0D };=0D =0D =0D enum {=0D DEV_RAID_SPEED_LIMIT_MIN=3D1,=0D DEV_RAID_SPEED_LIMIT_MAX=3D2=0D };=0D =0D =0D enum {=0D DEV_PARPORT_DEFAULT_TIMESLICE=3D1,=0D DEV_PARPORT_DEFAULT_SPINTIME=3D2=0D };=0D =0D =0D enum {=0D DEV_PARPORT_SPINTIME=3D1,=0D DEV_PARPORT_BASE_ADDR=3D2,=0D DEV_PARPORT_IRQ=3D3,=0D DEV_PARPORT_DMA=3D4,=0D DEV_PARPORT_MODES=3D5,=0D DEV_PARPORT_DEVICES=3D6,=0D DEV_PARPORT_AUTOPROBE=3D16=0D };=0D =0D =0D enum {=0D DEV_PARPORT_DEVICES_ACTIVE=3D-3,=0D };=0D =0D =0D enum {=0D DEV_PARPORT_DEVICE_TIMESLICE=3D1,=0D };=0D =0D =0D enum {=0D DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=3D1,=0D DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=3D2,=0D DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3D3,=0D DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=3D4,=0D DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=3D5,=0D DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=3D6=0D };=0D =0D =0D enum {=0D DEV_SCSI_LOGGING_LEVEL=3D1,=0D };=0D =0D =0D enum {=0D DEV_IPMI_POWEROFF_POWERCYCLE=3D1,=0D };=0D =0D =0D enum=0D {=0D ABI_DEFHANDLER_COFF=3D1,=0D ABI_DEFHANDLER_ELF=3D2,=0D ABI_DEFHANDLER_LCALL7=3D3,=0D ABI_DEFHANDLER_LIBCSO=3D4,=0D ABI_TRACE=3D5,=0D ABI_FAKE_UTSNAME=3D6,=0D };=0D # 31 "./include/linux/sysctl.h" 2=0D =0D =0D struct completion;=0D struct ctl_table;=0D struct nsproxy;=0D struct ctl_table_root;=0D struct ctl_table_header;=0D struct ctl_dir;=0D # 55 "./include/linux/sysctl.h"=0D extern const int sysctl_vals[];=0D =0D =0D =0D =0D =0D extern const unsigned long sysctl_long_vals[];=0D =0D typedef int proc_handler(struct ctl_table *ctl, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D =0D int proc_dostring(struct ctl_table *, int, void *, size_t *, loff_t *);=0D int proc_dobool(struct ctl_table *table, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D int proc_dointvec(struct ctl_table *, int, void *, size_t *, loff_t *);=0D int proc_douintvec(struct ctl_table *, int, void *, size_t *, loff_t *);=0D int proc_dointvec_minmax(struct ctl_table *, int, void *, size_t *, loff_t = *);=0D int proc_douintvec_minmax(struct ctl_table *table, int write, void *buffer,= =0D size_t *lenp, loff_t *ppos);=0D int proc_dou8vec_minmax(struct ctl_table *table, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D int proc_dointvec_jiffies(struct ctl_table *, int, void *, size_t *, loff_t= *);=0D int proc_dointvec_userhz_jiffies(struct ctl_table *, int, void *, size_t *,= =0D loff_t *);=0D int proc_dointvec_ms_jiffies(struct ctl_table *, int, void *, size_t *,=0D loff_t *);=0D int proc_doulongvec_minmax(struct ctl_table *, int, void *, size_t *, loff_= t *);=0D int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int, void *,= =0D size_t *, loff_t *);=0D int proc_do_large_bitmap(struct ctl_table *, int, void *, size_t *, loff_t = *);=0D int proc_do_static_key(struct ctl_table *table, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D # 114 "./include/linux/sysctl.h"=0D struct ctl_table_poll {=0D atomic_t event;=0D wait_queue_head_t wait;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *proc_sys_poll_event(st= ruct ctl_table_poll *poll)=0D {=0D return (void *)(unsigned long)atomic_read(&poll->event);=0D }=0D # 132 "./include/linux/sysctl.h"=0D struct ctl_table {=0D const char *procname;=0D void *data;=0D int maxlen;=0D umode_t mode;=0D struct ctl_table *child;=0D proc_handler *proc_handler;=0D struct ctl_table_poll *poll;=0D void *extra1;=0D void *extra2;=0D } ;=0D =0D struct ctl_node {=0D struct rb_node node;=0D struct ctl_table_header *header;=0D };=0D =0D =0D =0D struct ctl_table_header {=0D union {=0D struct {=0D struct ctl_table *ctl_table;=0D int used;=0D int count;=0D int nreg;=0D };=0D struct callback_head rcu;=0D };=0D struct completion *unregistering;=0D struct ctl_table *ctl_table_arg;=0D struct ctl_table_root *root;=0D struct ctl_table_set *set;=0D struct ctl_dir *parent;=0D struct ctl_node *node;=0D struct hlist_head inodes;=0D };=0D =0D struct ctl_dir {=0D =0D struct ctl_table_header header;=0D struct rb_root root;=0D };=0D =0D struct ctl_table_set {=0D int (*is_seen)(struct ctl_table_set *);=0D struct ctl_dir dir;=0D };=0D =0D struct ctl_table_root {=0D struct ctl_table_set default_set;=0D struct ctl_table_set *(*lookup)(struct ctl_table_root *root);=0D void (*set_ownership)(struct ctl_table_header *head,=0D struct ctl_table *table,=0D kuid_t *uid, kgid_t *gid);=0D int (*permissions)(struct ctl_table_header *head, struct ctl_table *table)= ;=0D };=0D =0D =0D struct ctl_path {=0D const char *procname;=0D };=0D # 207 "./include/linux/sysctl.h"=0D extern int __register_sysctl_base(struct ctl_table *base_table);=0D =0D =0D =0D void proc_sys_poll_notify(struct ctl_table_poll *poll);=0D =0D extern void setup_sysctl_set(struct ctl_table_set *p,=0D struct ctl_table_root *root,=0D int (*is_seen)(struct ctl_table_set *));=0D extern void retire_sysctl_set(struct ctl_table_set *set);=0D =0D struct ctl_table_header *__register_sysctl_table(=0D struct ctl_table_set *set,=0D const char *path, struct ctl_table *table);=0D struct ctl_table_header *__register_sysctl_paths(=0D struct ctl_table_set *set,=0D const struct ctl_path *path, struct ctl_table *table);=0D struct ctl_table_header *register_sysctl(const char *path, struct ctl_table= *table);=0D struct ctl_table_header *register_sysctl_table(struct ctl_table * table);=0D struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path,= =0D struct ctl_table *table);=0D =0D void unregister_sysctl_table(struct ctl_table_header * table);=0D =0D extern int sysctl_init_bases(void);=0D extern void __register_sysctl_init(const char *path, struct ctl_table *tabl= e,=0D const char *table_name);=0D =0D extern struct ctl_table_header *register_sysctl_mount_point(const char *pat= h);=0D =0D void do_sysctl_args(void);=0D int do_proc_douintvec(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos,=0D int (*conv)(unsigned long *lvalp,=0D unsigned int *valp,=0D int write, void *data),=0D void *data);=0D =0D extern int pwrsw_enabled;=0D extern int unaligned_enabled;=0D extern int unaligned_dump_stack;=0D extern int no_unaligned_warning;=0D =0D extern struct ctl_table sysctl_mount_point[];=0D # 299 "./include/linux/sysctl.h"=0D int sysctl_max_threads(struct ctl_table *table, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D # 18 "./include/linux/key.h" 2=0D =0D =0D # 1 "./include/linux/assoc_array.h" 1=0D # 22 "./include/linux/assoc_array.h"=0D struct assoc_array {=0D struct assoc_array_ptr *root;=0D unsigned long nr_leaves_on_tree;=0D };=0D =0D =0D =0D =0D struct assoc_array_ops {=0D =0D unsigned long (*get_key_chunk)(const void *index_key, int level);=0D =0D =0D unsigned long (*get_object_key_chunk)(const void *object, int level);=0D =0D =0D bool (*compare_object)(const void *object, const void *index_key);=0D =0D =0D =0D =0D int (*diff_objects)(const void *object, const void *index_key);=0D =0D =0D void (*free_object)(void *object);=0D };=0D =0D =0D =0D =0D struct assoc_array_edit;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void assoc_array_init(struct= assoc_array *array)=0D {=0D array->root =3D ((void *)0);=0D array->nr_leaves_on_tree =3D 0;=0D }=0D =0D extern int assoc_array_iterate(const struct assoc_array *array,=0D int (*iterator)(const void *object,=0D void *iterator_data),=0D void *iterator_data);=0D extern void *assoc_array_find(const struct assoc_array *array,=0D const struct assoc_array_ops *ops,=0D const void *index_key);=0D extern void assoc_array_destroy(struct assoc_array *array,=0D const struct assoc_array_ops *ops);=0D extern struct assoc_array_edit *assoc_array_insert(struct assoc_array *arra= y,=0D const struct assoc_array_ops *ops,=0D const void *index_key,=0D void *object);=0D extern void assoc_array_insert_set_object(struct assoc_array_edit *edit,=0D void *object);=0D extern struct assoc_array_edit *assoc_array_delete(struct assoc_array *arra= y,=0D const struct assoc_array_ops *ops,=0D const void *index_key);=0D extern struct assoc_array_edit *assoc_array_clear(struct assoc_array *array= ,=0D const struct assoc_array_ops *ops);=0D extern void assoc_array_apply_edit(struct assoc_array_edit *edit);=0D extern void assoc_array_cancel_edit(struct assoc_array_edit *edit);=0D extern int assoc_array_gc(struct assoc_array *array,=0D const struct assoc_array_ops *ops,=0D bool (*iterator)(void *object, void *iterator_data),=0D void *iterator_data);=0D # 21 "./include/linux/key.h" 2=0D =0D =0D =0D =0D =0D =0D =0D typedef int32_t key_serial_t;=0D =0D =0D typedef uint32_t key_perm_t;=0D =0D struct key;=0D struct net;=0D # 77 "./include/linux/key.h"=0D enum key_need_perm {=0D KEY_NEED_UNSPECIFIED,=0D KEY_NEED_VIEW,=0D KEY_NEED_READ,=0D KEY_NEED_WRITE,=0D KEY_NEED_SEARCH,=0D KEY_NEED_LINK,=0D KEY_NEED_SETATTR,=0D KEY_NEED_UNLINK,=0D KEY_SYSADMIN_OVERRIDE,=0D KEY_AUTHTOKEN_OVERRIDE,=0D KEY_DEFER_PERM_CHECK,=0D };=0D =0D struct seq_file;=0D struct user_struct;=0D struct signal_struct;=0D struct cred;=0D =0D struct key_type;=0D struct key_owner;=0D struct key_tag;=0D struct keyring_list;=0D struct keyring_name;=0D =0D struct key_tag {=0D struct callback_head rcu;=0D refcount_t usage;=0D bool removed;=0D };=0D =0D struct keyring_index_key {=0D =0D unsigned long hash;=0D union {=0D struct {=0D =0D u16 desc_len;=0D char desc[sizeof(long) - 2];=0D =0D =0D =0D =0D };=0D unsigned long x;=0D };=0D struct key_type *type;=0D struct key_tag *domain_tag;=0D const char *description;=0D };=0D =0D union key_payload {=0D void *rcu_data0;=0D void *data[4];=0D };=0D # 147 "./include/linux/key.h"=0D typedef struct __key_reference_with_attributes *key_ref_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) key_ref_t make_key_ref(const= struct key *key,=0D bool possession)=0D {=0D return (key_ref_t) ((unsigned long) key | possession);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct key *key_ref_to_ptr(c= onst key_ref_t key_ref)=0D {=0D return (struct key *) ((unsigned long) key_ref & ~1UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_key_possessed(const = key_ref_t key_ref)=0D {=0D return (unsigned long) key_ref & 1UL;=0D }=0D =0D typedef int (*key_restrict_link_func_t)(struct key *dest_keyring,=0D const struct key_type *type,=0D const union key_payload *payload,=0D struct key *restriction_key);=0D =0D struct key_restriction {=0D key_restrict_link_func_t check;=0D struct key *key;=0D struct key_type *keytype;=0D };=0D =0D enum key_state {=0D KEY_IS_UNINSTANTIATED,=0D KEY_IS_POSITIVE,=0D };=0D # 189 "./include/linux/key.h"=0D struct key {=0D refcount_t usage;=0D key_serial_t serial;=0D union {=0D struct list_head graveyard_link;=0D struct rb_node serial_node;=0D };=0D =0D =0D =0D struct rw_semaphore sem;=0D struct key_user *user;=0D void *security;=0D union {=0D time64_t expiry;=0D time64_t revoked_at;=0D };=0D time64_t last_used_at;=0D kuid_t uid;=0D kgid_t gid;=0D key_perm_t perm;=0D unsigned short quotalen;=0D unsigned short datalen;=0D =0D =0D =0D short state;=0D =0D =0D =0D =0D =0D =0D unsigned long flags;=0D # 239 "./include/linux/key.h"=0D union {=0D struct keyring_index_key index_key;=0D struct {=0D unsigned long hash;=0D unsigned long len_desc;=0D struct key_type *type;=0D struct key_tag *domain_tag;=0D char *description;=0D };=0D };=0D =0D =0D =0D =0D =0D union {=0D union key_payload payload;=0D struct {=0D =0D struct list_head name_link;=0D struct assoc_array keys;=0D };=0D };=0D # 274 "./include/linux/key.h"=0D struct key_restriction *restrict_link;=0D };=0D =0D extern struct key *key_alloc(struct key_type *type,=0D const char *desc,=0D kuid_t uid, kgid_t gid,=0D const struct cred *cred,=0D key_perm_t perm,=0D unsigned long flags,=0D struct key_restriction *restrict_link);=0D # 294 "./include/linux/key.h"=0D extern void key_revoke(struct key *key);=0D extern void key_invalidate(struct key *key);=0D extern void key_put(struct key *key);=0D extern bool key_put_tag(struct key_tag *tag);=0D extern void key_remove_domain(struct key_tag *domain_tag);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct key *__key_get(struct= key *key)=0D {=0D refcount_inc(&key->usage);=0D return key;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct key *key_get(struct k= ey *key)=0D {=0D return key ? __key_get(key) : key;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void key_ref_put(key_ref_t k= ey_ref)=0D {=0D key_put(key_ref_to_ptr(key_ref));=0D }=0D =0D extern struct key *request_key_tag(struct key_type *type,=0D const char *description,=0D struct key_tag *domain_tag,=0D const char *callout_info);=0D =0D extern struct key *request_key_rcu(struct key_type *type,=0D const char *description,=0D struct key_tag *domain_tag);=0D =0D extern struct key *request_key_with_auxdata(struct key_type *type,=0D const char *description,=0D struct key_tag *domain_tag,=0D const void *callout_info,=0D size_t callout_len,=0D void *aux);=0D # 340 "./include/linux/key.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct key *request_key(stru= ct key_type *type,=0D const char *description,=0D const char *callout_info)=0D {=0D return request_key_tag(type, description, ((void *)0), callout_info);=0D }=0D # 379 "./include/linux/key.h"=0D extern int wait_for_key_construction(struct key *key, bool intr);=0D =0D extern int key_validate(const struct key *key);=0D =0D extern key_ref_t key_create_or_update(key_ref_t keyring,=0D const char *type,=0D const char *description,=0D const void *payload,=0D size_t plen,=0D key_perm_t perm,=0D unsigned long flags);=0D =0D extern int key_update(key_ref_t key,=0D const void *payload,=0D size_t plen);=0D =0D extern int key_link(struct key *keyring,=0D struct key *key);=0D =0D extern int key_move(struct key *key,=0D struct key *from_keyring,=0D struct key *to_keyring,=0D unsigned int flags);=0D =0D extern int key_unlink(struct key *keyring,=0D struct key *key);=0D =0D extern struct key *keyring_alloc(const char *description, kuid_t uid, kgid_= t gid,=0D const struct cred *cred,=0D key_perm_t perm,=0D unsigned long flags,=0D struct key_restriction *restrict_link,=0D struct key *dest);=0D =0D extern int restrict_link_reject(struct key *keyring,=0D const struct key_type *type,=0D const union key_payload *payload,=0D struct key *restriction_key);=0D =0D extern int keyring_clear(struct key *keyring);=0D =0D extern key_ref_t keyring_search(key_ref_t keyring,=0D struct key_type *type,=0D const char *description,=0D bool recurse);=0D =0D extern int keyring_add_key(struct key *keyring,=0D struct key *key);=0D =0D extern int keyring_restrict(key_ref_t keyring, const char *type,=0D const char *restriction);=0D =0D extern struct key *key_lookup(key_serial_t id);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) key_serial_t key_serial(cons= t struct key *key)=0D {=0D return key ? key->serial : 0;=0D }=0D =0D extern void key_set_timeout(struct key *, unsigned);=0D =0D extern key_ref_t lookup_user_key(key_serial_t id, unsigned long flags,=0D enum key_need_perm need_perm);=0D extern void key_free_user_ns(struct user_namespace *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) short key_read_state(const s= truct key *key)=0D {=0D =0D return ({ typeof(*&key->state) ___p1 =3D ({ do { __attribute__((__noreturn= __)) extern void __compiletime_assert_182(void) ; if (!((sizeof(*&key->stat= e) =3D=3D sizeof(char) || sizeof(*&key->state) =3D=3D sizeof(short) || size= of(*&key->state) =3D=3D sizeof(int) || sizeof(*&key->state) =3D=3D sizeof(l= ong)) || sizeof(*&key->state) =3D=3D sizeof(long long))) __compiletime_asse= rt_182(); } while (0); (*(const volatile typeof( _Generic((*&key->state), c= har: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0,= unsigned short: (unsigned short)0, signed short: (signed short)0, unsigned= int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned = long)0, signed long: (signed long)0, unsigned long long: (unsigned long lon= g)0, signed long long: (signed long long)0, default: (*&key->state))) *)&(*= &key->state)); }); do { __attribute__((__noreturn__)) extern void __compile= time_assert_183(void) ; if (!((sizeof(*&key->state) =3D=3D sizeof(char) || = sizeof(*&key->state) =3D=3D sizeof(short) || sizeof(*&key->state) =3D=3D si= zeof(int) || sizeof(*&key->state) =3D=3D sizeof(long)))) __compiletime_asse= rt_183(); } while (0); __asm__ __volatile__ ("fence " "r" "," "rw" : : : "m= emory"); ___p1; });=0D }=0D # 457 "./include/linux/key.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool key_is_positive(const s= truct key *key)=0D {=0D return key_read_state(key) =3D=3D KEY_IS_POSITIVE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool key_is_negative(const s= truct key *key)=0D {=0D return key_read_state(key) < 0;=0D }=0D # 480 "./include/linux/key.h"=0D extern struct ctl_table key_sysctls[];=0D =0D =0D =0D =0D extern int install_thread_keyring_to_cred(struct cred *cred);=0D extern void key_fsuid_changed(struct cred *new_cred);=0D extern void key_fsgid_changed(struct cred *new_cred);=0D extern void key_init(void);=0D # 14 "./include/linux/cred.h" 2=0D =0D =0D =0D # 1 "./include/linux/sched/user.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/percpu_counter.h" 1=0D # 20 "./include/linux/percpu_counter.h"=0D struct percpu_counter {=0D raw_spinlock_t lock;=0D s64 count;=0D =0D struct list_head list;=0D =0D s32 *counters;=0D };=0D =0D extern int percpu_counter_batch;=0D =0D int __percpu_counter_init(struct percpu_counter *fbc, s64 amount, gfp_t gfp= ,=0D struct lock_class_key *key);=0D # 41 "./include/linux/percpu_counter.h"=0D void percpu_counter_destroy(struct percpu_counter *fbc);=0D void percpu_counter_set(struct percpu_counter *fbc, s64 amount);=0D void percpu_counter_add_batch(struct percpu_counter *fbc, s64 amount,=0D s32 batch);=0D s64 __percpu_counter_sum(struct percpu_counter *fbc);=0D int __percpu_counter_compare(struct percpu_counter *fbc, s64 rhs, s32 batch= );=0D void percpu_counter_sync(struct percpu_counter *fbc);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int percpu_counter_compare(s= truct percpu_counter *fbc, s64 rhs)=0D {=0D return __percpu_counter_compare(fbc, rhs, percpu_counter_batch);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_counter_add(stru= ct percpu_counter *fbc, s64 amount)=0D {=0D percpu_counter_add_batch(fbc, amount, percpu_counter_batch);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 percpu_counter_sum_posit= ive(struct percpu_counter *fbc)=0D {=0D s64 ret =3D __percpu_counter_sum(fbc);=0D return ret < 0 ? 0 : ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 percpu_counter_sum(struc= t percpu_counter *fbc)=0D {=0D return __percpu_counter_sum(fbc);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 percpu_counter_read(stru= ct percpu_counter *fbc)=0D {=0D return fbc->count;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 percpu_counter_read_posi= tive(struct percpu_counter *fbc)=0D {=0D =0D s64 ret =3D ({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_184(void) ; if (!((sizeof(fbc->count) =3D=3D sizeof(char) || sizeo= f(fbc->count) =3D=3D sizeof(short) || sizeof(fbc->count) =3D=3D sizeof(int)= || sizeof(fbc->count) =3D=3D sizeof(long)) || sizeof(fbc->count) =3D=3D si= zeof(long long))) __compiletime_assert_184(); } while (0); (*(const volatil= e typeof( _Generic((fbc->count), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: (fbc->count))) *)&(fbc->count)); });=0D =0D if (ret >=3D 0)=0D return ret;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_counter_initiali= zed(struct percpu_counter *fbc)=0D {=0D return (fbc->counters !=3D ((void *)0));=0D }=0D # 181 "./include/linux/percpu_counter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_counter_inc(stru= ct percpu_counter *fbc)=0D {=0D percpu_counter_add(fbc, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_counter_dec(stru= ct percpu_counter *fbc)=0D {=0D percpu_counter_add(fbc, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_counter_sub(stru= ct percpu_counter *fbc, s64 amount)=0D {=0D percpu_counter_add(fbc, -amount);=0D }=0D # 8 "./include/linux/sched/user.h" 2=0D =0D # 1 "./include/linux/ratelimit.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ratelimit_state_init(st= ruct ratelimit_state *rs,=0D int interval, int burst)=0D {=0D memset(rs, 0, sizeof(*rs));=0D =0D do { static struct lock_class_key __key; __raw_spin_lock_init((&rs->lock),= "&rs->lock", &__key, LD_WAIT_SPIN); } while (0);=0D rs->interval =3D interval;=0D rs->burst =3D burst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ratelimit_default_init(= struct ratelimit_state *rs)=0D {=0D return ratelimit_state_init(rs, (5 * 100),=0D 10);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ratelimit_state_exit(st= ruct ratelimit_state *rs)=0D {=0D if (!(rs->flags & ((((1UL))) << (0))))=0D return;=0D =0D if (rs->missed) {=0D ({ do {} while (0); _printk("\001" "4" "IPv6: " "%s: %d output lines supp= ressed due to ratelimiting\n", get_current()->comm, rs->missed); });=0D =0D rs->missed =3D 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D ratelimit_set_flags(struct ratelimit_state *rs, unsigned long flags)=0D {=0D rs->flags =3D flags;=0D }=0D =0D extern struct ratelimit_state printk_ratelimit_state;=0D # 10 "./include/linux/sched/user.h" 2=0D =0D =0D =0D =0D struct user_struct {=0D refcount_t __count;=0D =0D struct percpu_counter epoll_watches;=0D =0D unsigned long unix_inflight;=0D atomic_long_t pipe_bufs;=0D =0D =0D struct hlist_node uidhash_node;=0D kuid_t uid;=0D =0D =0D =0D atomic_long_t locked_vm;=0D =0D =0D =0D =0D =0D =0D struct ratelimit_state ratelimit;=0D };=0D =0D extern int uids_sysfs_init(void);=0D =0D extern struct user_struct *find_user(kuid_t);=0D =0D extern struct user_struct root_user;=0D =0D =0D =0D =0D extern struct user_struct * alloc_uid(kuid_t);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_struct *get_uid(= struct user_struct *u)=0D {=0D refcount_inc(&u->__count);=0D return u;=0D }=0D extern void free_uid(struct user_struct *);=0D # 18 "./include/linux/cred.h" 2=0D =0D struct cred;=0D struct inode;=0D =0D =0D =0D =0D struct group_info {=0D atomic_t usage;=0D int ngroups;=0D kgid_t gid[];=0D } ;=0D # 40 "./include/linux/cred.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct group_info *get_group= _info(struct group_info *gi)=0D {=0D atomic_inc(&gi->usage);=0D return gi;=0D }=0D # 57 "./include/linux/cred.h"=0D extern struct group_info *groups_alloc(int);=0D extern void groups_free(struct group_info *);=0D =0D extern int in_group_p(kgid_t);=0D extern int in_egroup_p(kgid_t);=0D extern int groups_search(const struct group_info *, kgid_t);=0D =0D extern int set_current_groups(struct group_info *);=0D extern void set_groups(struct cred *, struct group_info *);=0D extern bool may_setgroups(void);=0D extern void groups_sort(struct group_info *);=0D # 110 "./include/linux/cred.h"=0D struct cred {=0D atomic_t usage;=0D =0D =0D =0D =0D =0D =0D =0D kuid_t uid;=0D kgid_t gid;=0D kuid_t suid;=0D kgid_t sgid;=0D kuid_t euid;=0D kgid_t egid;=0D kuid_t fsuid;=0D kgid_t fsgid;=0D unsigned securebits;=0D kernel_cap_t cap_inheritable;=0D kernel_cap_t cap_permitted;=0D kernel_cap_t cap_effective;=0D kernel_cap_t cap_bset;=0D kernel_cap_t cap_ambient;=0D =0D unsigned char jit_keyring;=0D =0D struct key *session_keyring;=0D struct key *process_keyring;=0D struct key *thread_keyring;=0D struct key *request_key_auth;=0D =0D =0D =0D =0D struct user_struct *user;=0D struct user_namespace *user_ns;=0D struct ucounts *ucounts;=0D struct group_info *group_info;=0D =0D union {=0D int non_rcu;=0D struct callback_head rcu;=0D };=0D } ;=0D =0D extern void __put_cred(struct cred *);=0D extern void exit_creds(struct task_struct *);=0D extern int copy_creds(struct task_struct *, unsigned long);=0D extern const struct cred *get_task_cred(struct task_struct *);=0D extern struct cred *cred_alloc_blank(void);=0D extern struct cred *prepare_creds(void);=0D extern struct cred *prepare_exec_creds(void);=0D extern int commit_creds(struct cred *);=0D extern void abort_creds(struct cred *);=0D extern const struct cred *override_creds(const struct cred *);=0D extern void revert_creds(const struct cred *);=0D extern struct cred *prepare_kernel_cred(struct task_struct *);=0D extern int change_create_files_as(struct cred *, struct inode *);=0D extern int set_security_override(struct cred *, u32);=0D extern int set_security_override_from_ctx(struct cred *, const char *);=0D extern int set_create_files_as(struct cred *, struct inode *);=0D extern int cred_fscmp(const struct cred *, const struct cred *);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) cred_init(void);=0D extern int set_cred_ucounts(struct cred *);=0D # 204 "./include/linux/cred.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void validate_creds(const st= ruct cred *cred)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void validate_creds_for_do_e= xit(struct task_struct *tsk)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void validate_process_creds(= void)=0D {=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cap_ambient_invariant_o= k(const struct cred *cred)=0D {=0D return cap_issubset(cred->cap_ambient,=0D cap_intersect(cred->cap_permitted,=0D cred->cap_inheritable));=0D }=0D # 229 "./include/linux/cred.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cred *get_new_cred(st= ruct cred *cred)=0D {=0D atomic_inc(&cred->usage);=0D return cred;=0D }=0D # 248 "./include/linux/cred.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct cred *get_cred(= const struct cred *cred)=0D {=0D struct cred *nonconst_cred =3D (struct cred *) cred;=0D if (!cred)=0D return cred;=0D validate_creds(cred);=0D nonconst_cred->non_rcu =3D 0;=0D return get_new_cred(nonconst_cred);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct cred *get_cred_= rcu(const struct cred *cred)=0D {=0D struct cred *nonconst_cred =3D (struct cred *) cred;=0D if (!cred)=0D return ((void *)0);=0D if (!atomic_inc_not_zero(&nonconst_cred->usage))=0D return ((void *)0);=0D validate_creds(cred);=0D nonconst_cred->non_rcu =3D 0;=0D return cred;=0D }=0D # 281 "./include/linux/cred.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_cred(const struct c= red *_cred)=0D {=0D struct cred *cred =3D (struct cred *) _cred;=0D =0D if (cred) {=0D validate_creds(cred);=0D if (atomic_dec_and_test(&(cred)->usage))=0D __put_cred(cred);=0D }=0D }=0D # 393 "./include/linux/cred.h"=0D extern struct user_namespace init_user_ns;=0D # 11 "./include/linux/sched/signal.h" 2=0D # 20 "./include/linux/sched/signal.h"=0D struct sighand_struct {=0D spinlock_t siglock;=0D refcount_t count;=0D wait_queue_head_t signalfd_wqh;=0D struct k_sigaction action[64];=0D };=0D =0D =0D =0D =0D struct pacct_struct {=0D int ac_flag;=0D long ac_exitcode;=0D unsigned long ac_mem;=0D u64 ac_utime, ac_stime;=0D unsigned long ac_minflt, ac_majflt;=0D };=0D =0D struct cpu_itimer {=0D u64 expires;=0D u64 incr;=0D };=0D =0D =0D =0D =0D =0D struct task_cputime_atomic {=0D atomic64_t utime;=0D atomic64_t stime;=0D atomic64_t sum_exec_runtime;=0D };=0D # 66 "./include/linux/sched/signal.h"=0D struct thread_group_cputimer {=0D struct task_cputime_atomic cputime_atomic;=0D };=0D =0D struct multiprocess_signals {=0D sigset_t signal;=0D struct hlist_node node;=0D };=0D =0D struct core_thread {=0D struct task_struct *task;=0D struct core_thread *next;=0D };=0D =0D struct core_state {=0D atomic_t nr_threads;=0D struct core_thread dumper;=0D struct completion startup;=0D };=0D # 93 "./include/linux/sched/signal.h"=0D struct signal_struct {=0D refcount_t sigcnt;=0D atomic_t live;=0D int nr_threads;=0D struct list_head thread_head;=0D =0D wait_queue_head_t wait_chldexit;=0D =0D =0D struct task_struct *curr_target;=0D =0D =0D struct sigpending shared_pending;=0D =0D =0D struct hlist_head multiprocess;=0D =0D =0D int group_exit_code;=0D =0D int notify_count;=0D struct task_struct *group_exec_task;=0D =0D =0D int group_stop_count;=0D unsigned int flags;=0D =0D struct core_state *core_state;=0D # 131 "./include/linux/sched/signal.h"=0D unsigned int is_child_subreaper:1;=0D unsigned int has_child_subreaper:1;=0D =0D =0D =0D =0D int posix_timer_id;=0D struct list_head posix_timers;=0D =0D =0D struct hrtimer real_timer;=0D ktime_t it_real_incr;=0D =0D =0D =0D =0D =0D =0D struct cpu_itimer it[2];=0D =0D =0D =0D =0D =0D struct thread_group_cputimer cputimer;=0D =0D =0D =0D struct posix_cputimers posix_cputimers;=0D =0D =0D struct pid *pids[PIDTYPE_MAX];=0D =0D =0D =0D =0D =0D struct pid *tty_old_pgrp;=0D =0D =0D int leader;=0D =0D struct tty_struct *tty;=0D # 184 "./include/linux/sched/signal.h"=0D seqlock_t stats_lock;=0D u64 utime, stime, cutime, cstime;=0D u64 gtime;=0D u64 cgtime;=0D struct prev_cputime prev_cputime;=0D unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;=0D unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;=0D unsigned long inblock, oublock, cinblock, coublock;=0D unsigned long maxrss, cmaxrss;=0D struct task_io_accounting ioac;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long long sum_sched_runtime;=0D # 212 "./include/linux/sched/signal.h"=0D struct rlimit rlim[16];=0D # 229 "./include/linux/sched/signal.h"=0D bool oom_flag_origin;=0D short oom_score_adj;=0D short oom_score_adj_min;=0D =0D struct mm_struct *oom_mm;=0D =0D =0D struct mutex cred_guard_mutex;=0D =0D =0D =0D =0D =0D struct rw_semaphore exec_update_lock;=0D =0D =0D =0D =0D } ;=0D # 267 "./include/linux/sched/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void signal_set_stop_flags(s= truct signal_struct *sig,=0D unsigned int flags)=0D {=0D ({ int __ret_warn_on =3D !!(sig->flags & 0x00000004); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/sched/signal.h"), "i" (270), "i" = ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __bu= iltin_expect(!!(__ret_warn_on), 0); });=0D sig->flags =3D (sig->flags & ~((0x00000010|0x00000020) | 0x00000001 | 0x00= 000002)) | flags;=0D }=0D =0D extern void flush_signals(struct task_struct *);=0D extern void ignore_signals(struct task_struct *);=0D extern void flush_signal_handlers(struct task_struct *, int force_default);= =0D extern int dequeue_signal(struct task_struct *task, sigset_t *mask,=0D kernel_siginfo_t *info, enum pid_type *type);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kernel_dequeue_signal(vo= id)=0D {=0D struct task_struct *task =3D get_current();=0D kernel_siginfo_t __info;=0D enum pid_type __type;=0D int ret;=0D =0D spin_lock_irq(&task->sighand->siglock);=0D ret =3D dequeue_signal(task, &task->blocked, &__info, &__type);=0D spin_unlock_irq(&task->sighand->siglock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kernel_signal_stop(void= )=0D {=0D spin_lock_irq(&get_current()->sighand->siglock);=0D if (get_current()->jobctl & (1UL << 16))=0D do { unsigned long flags; do { ({ unsigned long __dummy; typeof(flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_= irqsave(&get_current()->pi_lock); } while (0); do { ({ int __ret_warn_on = =3D !!(!((((0x0100 | 0x0004))) & (0x0004 | 0x0008 | 0x0040 | 0x0080))); if = (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\= t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b -= 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t= " ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/sched/signal.h")= , "i" (298), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug= _entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); get_cur= rent()->task_state_change =3D ({ __label__ __here; __here: (unsigned long)&= &__here; }); } while (0); do { do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_185(void) ; if (!((sizeof(get_current()->__state) = =3D=3D sizeof(char) || sizeof(get_current()->__state) =3D=3D sizeof(short) = || sizeof(get_current()->__state) =3D=3D sizeof(int) || sizeof(get_current(= )->__state) =3D=3D sizeof(long)) || sizeof(get_current()->__state) =3D=3D s= izeof(long long))) __compiletime_assert_185(); } while (0); do { *(volatile= typeof(get_current()->__state) *)&(get_current()->__state) =3D (((0x0100 |= 0x0004))); } while (0); } while (0); do { ({ unsigned long __dummy; typeof= (flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _raw_spin_unloc= k_irqrestore(&get_current()->pi_lock, flags); } while (0); } while (0);=0D spin_unlock_irq(&get_current()->sighand->siglock);=0D =0D schedule();=0D }=0D =0D =0D =0D =0D =0D =0D int force_sig_fault_to_task(int sig, int code, void *addr=0D =0D , struct task_struct *t);=0D int force_sig_fault(int sig, int code, void *addr=0D );=0D int send_sig_fault(int sig, int code, void *addr=0D =0D , struct task_struct *t);=0D =0D int force_sig_mceerr(int code, void *, short);=0D int send_sig_mceerr(int code, void *, short, struct task_struct *);=0D =0D int force_sig_bnderr(void *addr, void *lower, void *upper);=0D int force_sig_pkuerr(void *addr, u32 pkey);=0D int force_sig_perf(void *addr, u32 type, u64 sig_data);=0D =0D int force_sig_ptrace_errno_trap(int errno, void *addr);=0D int force_sig_fault_trapno(int sig, int code, void *addr, int trapno);=0D int send_sig_fault_trapno(int sig, int code, void *addr, int trapno,=0D struct task_struct *t);=0D int force_sig_seccomp(int syscall, int reason, bool force_coredump);=0D =0D extern int send_sig_info(int, struct kernel_siginfo *, struct task_struct *= );=0D extern void force_sigsegv(int sig);=0D extern int force_sig_info(struct kernel_siginfo *);=0D extern int __kill_pgrp_info(int sig, struct kernel_siginfo *info, struct pi= d *pgrp);=0D extern int kill_pid_info(int sig, struct kernel_siginfo *info, struct pid *= pid);=0D extern int kill_pid_usb_asyncio(int sig, int errno, sigval_t addr, struct p= id *,=0D const struct cred *);=0D extern int kill_pgrp(struct pid *pid, int sig, int priv);=0D extern int kill_pid(struct pid *pid, int sig, int priv);=0D extern __attribute__((__warn_unused_result__)) bool do_notify_parent(struct= task_struct *, int);=0D extern void __wake_up_parent(struct task_struct *p, struct task_struct *par= ent);=0D extern void force_sig(int);=0D extern void force_fatal_sig(int);=0D extern void force_exit_sig(int);=0D extern int send_sig(int, struct task_struct *, int);=0D extern int zap_other_threads(struct task_struct *p);=0D extern struct sigqueue *sigqueue_alloc(void);=0D extern void sigqueue_free(struct sigqueue *);=0D extern int send_sigqueue(struct sigqueue *, struct pid *, enum pid_type);=0D extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_notify_signal(voi= d)=0D {=0D clear_ti_thread_flag(((struct thread_info *)get_current()), 9);=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_notify_signal(struc= t task_struct *task)=0D {=0D if (!test_and_set_tsk_thread_flag(task, 9) &&=0D !wake_up_state(task, 0x0001))=0D kick_process(task);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int restart_syscall(void)=0D {=0D set_tsk_thread_flag(get_current(), 2);=0D return -513;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int task_sigpending(struct t= ask_struct *p)=0D {=0D return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int signal_pending(struct ta= sk_struct *p)=0D {=0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(test_tsk_thread_flag(p, 9)), 0))=0D return 1;=0D return task_sigpending(p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __fatal_signal_pending(s= truct task_struct *p)=0D {=0D return __builtin_expect(!!(sigismember(&p->pending.signal, 9)), 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fatal_signal_pending(str= uct task_struct *p)=0D {=0D return task_sigpending(p) && __fatal_signal_pending(p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int signal_pending_state(uns= igned int state, struct task_struct *p)=0D {=0D if (!(state & (0x0001 | 0x0100)))=0D return 0;=0D if (!signal_pending(p))=0D return 0;=0D =0D return (state & 0x0001) || __fatal_signal_pending(p);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fault_signal_pending(vm= _fault_t fault_flags,=0D struct pt_regs *regs)=0D {=0D return __builtin_expect(!!((fault_flags & VM_FAULT_RETRY) && (fatal_signal= _pending(get_current()) || ((((regs)->status & (0x00000100UL)) =3D=3D 0) &&= signal_pending(get_current())))), 0);=0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D extern void recalc_sigpending_and_wake(struct task_struct *t);=0D extern void recalc_sigpending(void);=0D extern void calculate_sigpending(void);=0D =0D extern void signal_wake_up_state(struct task_struct *t, unsigned int state)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void signal_wake_up(struct t= ask_struct *t, bool resume)=0D {=0D signal_wake_up_state(t, resume ? 0x0100 : 0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_signal_wake_up(s= truct task_struct *t, bool resume)=0D {=0D signal_wake_up_state(t, resume ? 0x0008 : 0);=0D }=0D =0D void task_join_group_stop(struct task_struct *task);=0D # 466 "./include/linux/sched/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_restore_sigmask(voi= d)=0D {=0D set_ti_thread_flag(((struct thread_info *)get_current()), 4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_restore_sigma= sk(struct task_struct *task)=0D {=0D clear_tsk_thread_flag(task, 4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_restore_sigmask(v= oid)=0D {=0D clear_ti_thread_flag(((struct thread_info *)get_current()), 4);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool test_tsk_restore_sigmas= k(struct task_struct *task)=0D {=0D return test_tsk_thread_flag(task, 4);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool test_restore_sigmask(vo= id)=0D {=0D return test_ti_thread_flag(((struct thread_info *)get_current()), 4);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool test_and_clear_restore_= sigmask(void)=0D {=0D return test_and_clear_ti_thread_flag(((struct thread_info *)get_current())= , 4);=0D }=0D # 525 "./include/linux/sched/signal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void restore_saved_sigmask(v= oid)=0D {=0D if (test_and_clear_restore_sigmask())=0D __set_current_blocked(&get_current()->saved_sigmask);=0D }=0D =0D extern int set_user_sigmask(const sigset_t *umask, size_t sigsetsize);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void restore_saved_sigmask_u= nless(bool interrupted)=0D {=0D if (interrupted)=0D ({ int __ret_warn_on =3D !!(!signal_pending(get_current())); if (__builti= n_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/sched/signal.h"), "i" (53= 6), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (= 0); __builtin_expect(!!(__ret_warn_on), 0); });=0D else=0D restore_saved_sigmask();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) sigset_t *sigmask_to_save(vo= id)=0D {=0D sigset_t *res =3D &get_current()->blocked;=0D if (__builtin_expect(!!(test_restore_sigmask()), 0))=0D res =3D &get_current()->saved_sigmask;=0D return res;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kill_cad_pid(int sig, in= t priv)=0D {=0D return kill_pid(cad_pid, sig, priv);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __on_sig_stack(unsigned = long sp)=0D {=0D =0D =0D =0D =0D return sp > get_current()->sas_ss_sp &&=0D sp - get_current()->sas_ss_sp <=3D get_current()->sas_ss_size;=0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int on_sig_stack(unsigned lo= ng sp)=0D {=0D # 583 "./include/linux/sched/signal.h"=0D if (get_current()->sas_ss_flags & (1U << 31))=0D return 0;=0D =0D return __on_sig_stack(sp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sas_ss_flags(unsigned lo= ng sp)=0D {=0D if (!get_current()->sas_ss_size)=0D return 2;=0D =0D return on_sig_stack(sp) ? 1 : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sas_ss_reset(struct tas= k_struct *p)=0D {=0D p->sas_ss_sp =3D 0;=0D p->sas_ss_size =3D 0;=0D p->sas_ss_flags =3D 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long sigsp(unsigned= long sp, struct ksignal *ksig)=0D {=0D if (__builtin_expect(!!((ksig->ka.sa.sa_flags & 0x08000000)), 0) && ! sas_= ss_flags(sp))=0D =0D =0D =0D return get_current()->sas_ss_sp + get_current()->sas_ss_size;=0D =0D return sp;=0D }=0D =0D extern void __cleanup_sighand(struct sighand_struct *);=0D extern void flush_itimer_signals(void);=0D # 627 "./include/linux/sched/signal.h"=0D extern bool current_is_single_threaded(void);=0D # 649 "./include/linux/sched/signal.h"=0D typedef int (*proc_visitor)(struct task_struct *p, void *data);=0D void walk_process_tree(struct task_struct *top, proc_visitor, void *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct pid *task_pid_type(struct task_struct *task, enum pid_type type)=0D {=0D struct pid *pid;=0D if (type =3D=3D PIDTYPE_PID)=0D pid =3D task_pid(task);=0D else=0D pid =3D task->signal->pids[type];=0D return pid;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid *task_tgid(struct= task_struct *task)=0D {=0D return task->signal->pids[PIDTYPE_TGID];=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid *task_pgrp(struct= task_struct *task)=0D {=0D return task->signal->pids[PIDTYPE_PGID];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid *task_session(str= uct task_struct *task)=0D {=0D return task->signal->pids[PIDTYPE_SID];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_nr_threads(struct ta= sk_struct *task)=0D {=0D return task->signal->nr_threads;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool thread_group_leader(str= uct task_struct *p)=0D {=0D return p->exit_signal >=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D bool same_thread_group(struct task_struct *p1, struct task_struct *p2)=0D {=0D return p1->signal =3D=3D p2->signal;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *next_thr= ead(const struct task_struct *p)=0D {=0D return ({ void *__mptr =3D (void *)(({ do { __attribute__((__noreturn__)) = extern void __compiletime_assert_186(void) ; if (!((sizeof(p->thread_group.= next) =3D=3D sizeof(char) || sizeof(p->thread_group.next) =3D=3D sizeof(sho= rt) || sizeof(p->thread_group.next) =3D=3D sizeof(int) || sizeof(p->thread_= group.next) =3D=3D sizeof(long)) || sizeof(p->thread_group.next) =3D=3D siz= eof(long long))) __compiletime_assert_186(); } while (0); (*(const volatile= typeof( _Generic((p->thread_group.next), char: (char)0, unsigned char: (un= signed char)0, signed char: (signed char)0, unsigned short: (unsigned short= )0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed in= t: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lon= g)0, unsigned long long: (unsigned long long)0, signed long long: (signed l= ong long)0, default: (p->thread_group.next))) *)&(p->thread_group.next)); }= )); _Static_assert(__builtin_types_compatible_p(typeof(*(({ do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_186(void) ; if (!((siz= eof(p->thread_group.next) =3D=3D sizeof(char) || sizeof(p->thread_group.nex= t) =3D=3D sizeof(short) || sizeof(p->thread_group.next) =3D=3D sizeof(int) = || sizeof(p->thread_group.next) =3D=3D sizeof(long)) || sizeof(p->thread_gr= oup.next) =3D=3D sizeof(long long))) __compiletime_assert_186(); } while (0= ); (*(const volatile typeof( _Generic((p->thread_group.next), char: (char)0= , unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned sh= ort: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsig= ned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, sign= ed long: (signed long)0, unsigned long long: (unsigned long long)0, signed = long long: (signed long long)0, default: (p->thread_group.next))) *)&(p->th= read_group.next)); }))), typeof(((struct task_struct *)0)->thread_group)) |= | __builtin_types_compatible_p(typeof(*(({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_186(void) ; if (!((sizeof(p->thread_gro= up.next) =3D=3D sizeof(char) || sizeof(p->thread_group.next) =3D=3D sizeof(= short) || sizeof(p->thread_group.next) =3D=3D sizeof(int) || sizeof(p->thre= ad_group.next) =3D=3D sizeof(long)) || sizeof(p->thread_group.next) =3D=3D = sizeof(long long))) __compiletime_assert_186(); } while (0); (*(const volat= ile typeof( _Generic((p->thread_group.next), char: (char)0, unsigned char: = (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sh= ort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed= int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed = long)0, unsigned long long: (unsigned long long)0, signed long long: (signe= d long long)0, default: (p->thread_group.next))) *)&(p->thread_group.next))= ; }))), typeof(void)), "pointer type mismatch in container_of()"); ((struct= task_struct *)(__mptr - __builtin_offsetof(struct task_struct, thread_grou= p))); });=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int thread_group_empty(struc= t task_struct *p)=0D {=0D return list_empty(&p->thread_group);=0D }=0D =0D =0D =0D =0D extern bool thread_group_exited(struct pid *pid);=0D =0D extern struct sighand_struct *__lock_task_sighand(struct task_struct *task,= =0D unsigned long *flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sighand_struct *lock_= task_sighand(struct task_struct *task,=0D unsigned long *flags)=0D {=0D struct sighand_struct *ret;=0D =0D ret =3D __lock_task_sighand(task, flags);=0D (void)(ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_task_sighand(str= uct task_struct *task,=0D unsigned long *flags)=0D {=0D spin_unlock_irqrestore(&task->sighand->siglock, *flags);=0D }=0D =0D =0D extern void lockdep_assert_task_sighand_held(struct task_struct *task);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long task_rlimit(co= nst struct task_struct *task,=0D unsigned int limit)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_187(void) ; if (!((sizeof(task->signal->rlim[limit].rlim_cur) =3D=3D si= zeof(char) || sizeof(task->signal->rlim[limit].rlim_cur) =3D=3D sizeof(shor= t) || sizeof(task->signal->rlim[limit].rlim_cur) =3D=3D sizeof(int) || size= of(task->signal->rlim[limit].rlim_cur) =3D=3D sizeof(long)) || sizeof(task-= >signal->rlim[limit].rlim_cur) =3D=3D sizeof(long long))) __compiletime_ass= ert_187(); } while (0); (*(const volatile typeof( _Generic((task->signal->r= lim[limit].rlim_cur), char: (char)0, unsigned char: (unsigned char)0, signe= d char: (signed char)0, unsigned short: (unsigned short)0, signed short: (s= igned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, un= signed long: (unsigned long)0, signed long: (signed long)0, unsigned long l= ong: (unsigned long long)0, signed long long: (signed long long)0, default:= (task->signal->rlim[limit].rlim_cur))) *)&(task->signal->rlim[limit].rlim_= cur)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long task_rlimit_ma= x(const struct task_struct *task,=0D unsigned int limit)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_188(void) ; if (!((sizeof(task->signal->rlim[limit].rlim_max) =3D=3D si= zeof(char) || sizeof(task->signal->rlim[limit].rlim_max) =3D=3D sizeof(shor= t) || sizeof(task->signal->rlim[limit].rlim_max) =3D=3D sizeof(int) || size= of(task->signal->rlim[limit].rlim_max) =3D=3D sizeof(long)) || sizeof(task-= >signal->rlim[limit].rlim_max) =3D=3D sizeof(long long))) __compiletime_ass= ert_188(); } while (0); (*(const volatile typeof( _Generic((task->signal->r= lim[limit].rlim_max), char: (char)0, unsigned char: (unsigned char)0, signe= d char: (signed char)0, unsigned short: (unsigned short)0, signed short: (s= igned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, un= signed long: (unsigned long)0, signed long: (signed long)0, unsigned long l= ong: (unsigned long long)0, signed long long: (signed long long)0, default:= (task->signal->rlim[limit].rlim_max))) *)&(task->signal->rlim[limit].rlim_= max)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long rlimit(unsigne= d int limit)=0D {=0D return task_rlimit(get_current(), limit);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long rlimit_max(uns= igned int limit)=0D {=0D return task_rlimit_max(get_current(), limit);=0D }=0D # 7 "./include/linux/rcuwait.h" 2=0D # 16 "./include/linux/rcuwait.h"=0D struct rcuwait {=0D struct task_struct *task;=0D };=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rcuwait_init(struct rcu= wait *w)=0D {=0D w->task =3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rcuwait_active(struct rc= uwait *w)=0D {=0D return !!({ typeof(*(w->task)) *__UNIQUE_ID_rcu189 =3D (typeof(*(w->task))= *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_1= 90(void) ; if (!((sizeof((w->task)) =3D=3D sizeof(char) || sizeof((w->task)= ) =3D=3D sizeof(short) || sizeof((w->task)) =3D=3D sizeof(int) || sizeof((w= ->task)) =3D=3D sizeof(long)) || sizeof((w->task)) =3D=3D sizeof(long long)= )) __compiletime_assert_190(); } while (0); (*(const volatile typeof( _Gene= ric(((w->task)), char: (char)0, unsigned char: (unsigned char)0, signed cha= r: (signed char)0, unsigned short: (unsigned short)0, signed short: (signed= short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigne= d long: (unsigned long)0, signed long: (signed long)0, unsigned long long: = (unsigned long long)0, signed long long: (signed long long)0, default: ((w-= >task)))) *)&((w->task))); }); ; ((typeof(*(w->task)) *)(__UNIQUE_ID_rcu189= )); });=0D }=0D =0D extern int rcuwait_wake_up(struct rcuwait *w);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void prepare_to_rcuwait(stru= ct rcuwait *w)=0D {=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(get_current()); ; if (__builtin_c= onstant_p(get_current()) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do {= do { __attribute__((__noreturn__)) extern void __compiletime_assert_191(vo= id) ; if (!((sizeof((w->task)) =3D=3D sizeof(char) || sizeof((w->task)) =3D= =3D sizeof(short) || sizeof((w->task)) =3D=3D sizeof(int) || sizeof((w->tas= k)) =3D=3D sizeof(long)) || sizeof((w->task)) =3D=3D sizeof(long long))) __= compiletime_assert_191(); } while (0); do { *(volatile typeof((w->task)) *)= &((w->task)) =3D ((typeof(w->task))(_r_a_p__v)); } while (0); } while (0); = else do { do { } while (0); do { do { __attribute__((__noreturn__)) extern = void __compiletime_assert_192(void) ; if (!((sizeof(*&w->task) =3D=3D sizeo= f(char) || sizeof(*&w->task) =3D=3D sizeof(short) || sizeof(*&w->task) =3D= =3D sizeof(int) || sizeof(*&w->task) =3D=3D sizeof(long)))) __compiletime_a= ssert_192(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : := "memory"); do { do { __attribute__((__noreturn__)) extern void __compileti= me_assert_193(void) ; if (!((sizeof(*&w->task) =3D=3D sizeof(char) || sizeo= f(*&w->task) =3D=3D sizeof(short) || sizeof(*&w->task) =3D=3D sizeof(int) |= | sizeof(*&w->task) =3D=3D sizeof(long)) || sizeof(*&w->task) =3D=3D sizeof= (long long))) __compiletime_assert_193(); } while (0); do { *(volatile type= of(*&w->task) *)&(*&w->task) =3D ((typeof(*((typeof(w->task))_r_a_p__v)) *)= ((typeof(w->task))_r_a_p__v)); } while (0); } while (0); } while (0); } whi= le (0); } while (0);=0D }=0D =0D extern void finish_rcuwait(struct rcuwait *w);=0D # 8 "./include/linux/percpu-rwsem.h" 2=0D =0D # 1 "./include/linux/rcu_sync.h" 1=0D # 17 "./include/linux/rcu_sync.h"=0D struct rcu_sync {=0D int gp_state;=0D int gp_count;=0D wait_queue_head_t gp_wait;=0D =0D struct callback_head cb_head;=0D };=0D # 32 "./include/linux/rcu_sync.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rcu_sync_is_idle(struct= rcu_sync *rsp)=0D {=0D do { } while (0 && (!rcu_read_lock_any_held()));=0D =0D return !({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_194(void) ; if (!((sizeof(rsp->gp_state) =3D=3D sizeof(char) || sizeof= (rsp->gp_state) =3D=3D sizeof(short) || sizeof(rsp->gp_state) =3D=3D sizeof= (int) || sizeof(rsp->gp_state) =3D=3D sizeof(long)) || sizeof(rsp->gp_state= ) =3D=3D sizeof(long long))) __compiletime_assert_194(); } while (0); (*(co= nst volatile typeof( _Generic((rsp->gp_state), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: (rsp->gp_state))) *)&(rsp->gp_state)); });=0D }=0D =0D extern void rcu_sync_init(struct rcu_sync *);=0D extern void rcu_sync_enter_start(struct rcu_sync *);=0D extern void rcu_sync_enter(struct rcu_sync *);=0D extern void rcu_sync_exit(struct rcu_sync *);=0D extern void rcu_sync_dtor(struct rcu_sync *);=0D # 10 "./include/linux/percpu-rwsem.h" 2=0D =0D =0D struct percpu_rw_semaphore {=0D struct rcu_sync rss;=0D unsigned int *read_count;=0D struct rcuwait writer;=0D wait_queue_head_t waiters;=0D atomic_t block;=0D =0D struct lockdep_map dep_map;=0D =0D };=0D # 45 "./include/linux/percpu-rwsem.h"=0D extern bool __percpu_down_read(struct percpu_rw_semaphore *, bool);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_down_read(struct= percpu_rw_semaphore *sem)=0D {=0D do { __might_sleep("include/linux/percpu-rwsem.h", 49); __cond_resched(); = } while (0);=0D =0D lock_acquire(&sem->dep_map, 0, 0, 1, 1, ((void *)0), (unsigned long)__buil= tin_return_address(0));=0D =0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D # 62 "./include/linux/percpu-rwsem.h"=0D if (__builtin_expect(!!(rcu_sync_is_idle(&sem->rss)), 1))=0D do { do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_cou= nt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify;= } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(= &(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->r= ead_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((stru= ct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do = { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count))); (ty= peof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count)))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) = +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy= 2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_i= rq_restore(__flags); } while (0); } while (0);break; case 4: do { unsigned = long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (voi= d)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } = while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*sem->read= _count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned lon= g __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem->read_count))) *)(&(*s= em->read_count))); (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_= count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } w= hile (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; = case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(_= _flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arc= h_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D= (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem-= >read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->read_cou= nt))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ un= signed long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__du= mmy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0= ); } while (0);break; default: __bad_size_call_parameter();break; } } while= (0);=0D else=0D __percpu_down_read(sem, false);=0D =0D =0D =0D =0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_down_read_tryloc= k(struct percpu_rw_semaphore *sem)=0D {=0D bool ret =3D true;=0D =0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D =0D =0D =0D if (__builtin_expect(!!(rcu_sync_is_idle(&sem->rss)), 1))=0D do { do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_cou= nt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify;= } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(= &(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->r= ead_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((stru= ct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do = { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count))); (ty= peof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count)))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) = +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy= 2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_i= rq_restore(__flags); } while (0); } while (0);break; case 4: do { unsigned = long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (voi= d)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } = while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*sem->read= _count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned lon= g __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem->read_count))) *)(&(*s= em->read_count))); (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_= count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } w= hile (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; = case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(_= _flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arc= h_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D= (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem-= >read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->read_cou= nt))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ un= signed long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__du= mmy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0= ); } while (0);break; default: __bad_size_call_parameter();break; } } while= (0);=0D else=0D ret =3D __percpu_down_read(sem, true);=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D =0D =0D =0D =0D =0D if (ret)=0D lock_acquire(&sem->dep_map, 0, 1, 1, 1, ((void *)0), (unsigned long)__bui= ltin_return_address(0));=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_up_read(struct p= ercpu_rw_semaphore *sem)=0D {=0D lock_release(&sem->dep_map, (unsigned long)__builtin_return_address(0));=0D =0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D =0D =0D =0D if (__builtin_expect(!!(rcu_sync_is_idle(&sem->rss)), 1)) {=0D do { do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_cou= nt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify;= } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(= &(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->r= ead_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((stru= ct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*sem->read= _count))(1); } while (0); do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_lo= cal_irq_restore(__flags); } while (0); } while (0);break; case 2: do { unsi= gned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2;= (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(= ); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*sem-= >read_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem->read_count))) *)= (&(*sem->read_count))); (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->= read_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cur= rent())->cpu)])))); }); }) +=3D -(typeof(*sem->read_count))(1); } while (0)= ; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; case 4: do { unsigned long __flags; do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({= do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0))((voi= d *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D = (unsigned long) ((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count))); = (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(*sem->read_count))(1); } while (0); do { ({ unsigned long = __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; })= ; do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (= 0);break; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy= ; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fla= gs =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_= verify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem= ->read_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*sem->r= ead_count))(1); } while (0); do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch= _local_irq_restore(__flags); } while (0); } while (0);break; default: __bad= _size_call_parameter();break; } } while (0);=0D } else {=0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : := "memory"); } while (0);=0D =0D =0D =0D =0D =0D do { do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*sem->read_cou= nt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_verify;= } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(= &(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem->r= ead_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((stru= ct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*sem->read= _count))(1); } while (0); do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_lo= cal_irq_restore(__flags); } while (0); } while (0);break; case 2: do { unsi= gned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2;= (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(= ); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*sem-= >read_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sem->read_count))) *)= (&(*sem->read_count))); (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->= read_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cur= rent())->cpu)])))); }); }) +=3D -(typeof(*sem->read_count))(1); } while (0)= ; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; case 4: do { unsigned long __flags; do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({= do { const void *__vpp_verify =3D (typeof((&(*sem->read_count)) + 0))((voi= d *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D = (unsigned long) ((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count))); = (typeof((typeof(*(&(*sem->read_count))) *)(&(*sem->read_count)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(*sem->read_count))(1); } while (0); do { ({ unsigned long = __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; })= ; do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (= 0);break; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy= ; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fla= gs =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_= verify =3D (typeof((&(*sem->read_count)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&(*sem->read_count))) *)(&(*sem->read_count))); (typeof((typeof(*(&(*sem= ->read_count))) *)(&(*sem->read_count)))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*sem->r= ead_count))(1); } while (0); do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch= _local_irq_restore(__flags); } while (0); } while (0);break; default: __bad= _size_call_parameter();break; } } while (0);=0D rcuwait_wake_up(&sem->writer);=0D }=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D }=0D =0D extern void percpu_down_write(struct percpu_rw_semaphore *);=0D extern void percpu_up_write(struct percpu_rw_semaphore *);=0D =0D extern int __percpu_init_rwsem(struct percpu_rw_semaphore *,=0D const char *, struct lock_class_key *);=0D =0D extern void percpu_free_rwsem(struct percpu_rw_semaphore *);=0D # 141 "./include/linux/percpu-rwsem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_rwsem_release(st= ruct percpu_rw_semaphore *sem,=0D bool read, unsigned long ip)=0D {=0D lock_release(&sem->dep_map, ip);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_rwsem_acquire(st= ruct percpu_rw_semaphore *sem,=0D bool read, unsigned long ip)=0D {=0D lock_acquire(&sem->dep_map, 0, 1, read, 1, ((void *)0), ip);=0D }=0D # 34 "./include/linux/fs.h" 2=0D =0D # 1 "./include/linux/delayed_call.h" 1=0D # 10 "./include/linux/delayed_call.h"=0D struct delayed_call {=0D void (*fn)(void *);=0D void *arg;=0D };=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_delayed_call(struct= delayed_call *call,=0D void (*fn)(void *), void *arg)=0D {=0D call->fn =3D fn;=0D call->arg =3D arg;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void do_delayed_call(struct = delayed_call *call)=0D {=0D if (call->fn)=0D call->fn(call->arg);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_delayed_call(stru= ct delayed_call *call)=0D {=0D call->fn =3D ((void *)0);=0D }=0D # 36 "./include/linux/fs.h" 2=0D # 1 "./include/linux/uuid.h" 1=0D # 11 "./include/linux/uuid.h"=0D # 1 "./include/uapi/linux/uuid.h" 1=0D # 15 "./include/uapi/linux/uuid.h"=0D typedef struct {=0D __u8 b[16];=0D } guid_t;=0D # 27 "./include/uapi/linux/uuid.h"=0D typedef guid_t uuid_le;=0D # 12 "./include/linux/uuid.h" 2=0D =0D =0D =0D =0D typedef struct {=0D __u8 b[16];=0D } uuid_t;=0D # 33 "./include/linux/uuid.h"=0D extern const guid_t guid_null;=0D extern const uuid_t uuid_null;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool guid_equal(const guid_t= *u1, const guid_t *u2)=0D {=0D return memcmp(u1, u2, sizeof(guid_t)) =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void guid_copy(guid_t *dst, = const guid_t *src)=0D {=0D memcpy(dst, src, sizeof(guid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void import_guid(guid_t *dst= , const __u8 *src)=0D {=0D memcpy(dst, src, sizeof(guid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void export_guid(__u8 *dst, = const guid_t *src)=0D {=0D memcpy(dst, src, sizeof(guid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool guid_is_null(const guid= _t *guid)=0D {=0D return guid_equal(guid, &guid_null);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uuid_equal(const uuid_t= *u1, const uuid_t *u2)=0D {=0D return memcmp(u1, u2, sizeof(uuid_t)) =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void uuid_copy(uuid_t *dst, = const uuid_t *src)=0D {=0D memcpy(dst, src, sizeof(uuid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void import_uuid(uuid_t *dst= , const __u8 *src)=0D {=0D memcpy(dst, src, sizeof(uuid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void export_uuid(__u8 *dst, = const uuid_t *src)=0D {=0D memcpy(dst, src, sizeof(uuid_t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool uuid_is_null(const uuid= _t *uuid)=0D {=0D return uuid_equal(uuid, &uuid_null);=0D }=0D =0D void generate_random_uuid(unsigned char uuid[16]);=0D void generate_random_guid(unsigned char guid[16]);=0D =0D extern void guid_gen(guid_t *u);=0D extern void uuid_gen(uuid_t *u);=0D =0D bool __attribute__((__warn_unused_result__)) uuid_is_valid(const char *uuid= );=0D =0D extern const u8 guid_index[16];=0D extern const u8 uuid_index[16];=0D =0D int guid_parse(const char *uuid, guid_t *u);=0D int uuid_parse(const char *uuid, uuid_t *u);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int uuid_le_cmp(const guid_t= u1, const guid_t u2)=0D {=0D return memcmp(&u1, &u2, sizeof(guid_t));=0D }=0D # 37 "./include/linux/fs.h" 2=0D # 1 "./include/linux/errseq.h" 1=0D =0D =0D =0D =0D =0D =0D =0D typedef u32 errseq_t;=0D =0D errseq_t errseq_set(errseq_t *eseq, int err);=0D errseq_t errseq_sample(errseq_t *eseq);=0D int errseq_check(errseq_t *eseq, errseq_t since);=0D int errseq_check_and_advance(errseq_t *eseq, errseq_t *since);=0D # 38 "./include/linux/fs.h" 2=0D # 1 "./include/linux/ioprio.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/sched/rt.h" 1=0D =0D =0D =0D =0D =0D =0D struct task_struct;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rt_prio(int prio)=0D {=0D if (__builtin_expect(!!(prio < 100), 0))=0D return 1;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rt_task(struct task_stru= ct *p)=0D {=0D return rt_prio(p->prio);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_is_realtime(struct= task_struct *tsk)=0D {=0D int policy =3D tsk->policy;=0D =0D if (policy =3D=3D 1 || policy =3D=3D 2)=0D return true;=0D if (policy =3D=3D 6)=0D return true;=0D return false;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *rt_mutex= _get_top_task(struct task_struct *p)=0D {=0D return p->pi_top_task;=0D }=0D extern void rt_mutex_setprio(struct task_struct *p, struct task_struct *pi_= task);=0D extern void rt_mutex_adjust_pi(struct task_struct *p);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tsk_is_pi_blocked(struc= t task_struct *tsk)=0D {=0D return tsk->pi_blocked_on !=3D ((void *)0);=0D }=0D # 58 "./include/linux/sched/rt.h"=0D extern void normalize_rt_tasks(void);=0D # 7 "./include/linux/ioprio.h" 2=0D # 1 "./include/linux/iocontext.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D enum {=0D ICQ_EXITED =3D 1 << 2,=0D ICQ_DESTROYED =3D 1 << 3,=0D };=0D # 73 "./include/linux/iocontext.h"=0D struct io_cq {=0D struct request_queue *q;=0D struct io_context *ioc;=0D =0D =0D =0D =0D =0D =0D =0D union {=0D struct list_head q_node;=0D struct kmem_cache *__rcu_icq_cache;=0D };=0D union {=0D struct hlist_node ioc_node;=0D struct callback_head __rcu_head;=0D };=0D =0D unsigned int flags;=0D };=0D =0D =0D =0D =0D =0D struct io_context {=0D atomic_long_t refcount;=0D atomic_t active_ref;=0D =0D unsigned short ioprio;=0D # 115 "./include/linux/iocontext.h"=0D };=0D =0D struct task_struct;=0D =0D void put_io_context(struct io_context *ioc);=0D void exit_io_context(struct task_struct *task);=0D int __copy_io(unsigned long clone_flags, struct task_struct *tsk);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_io(unsigned long cl= one_flags, struct task_struct *tsk)=0D {=0D if (!get_current()->io_context)=0D return 0;=0D return __copy_io(clone_flags, tsk);=0D }=0D # 8 "./include/linux/ioprio.h" 2=0D =0D # 1 "./include/uapi/linux/ioprio.h" 1=0D # 27 "./include/uapi/linux/ioprio.h"=0D enum {=0D IOPRIO_CLASS_NONE,=0D IOPRIO_CLASS_RT,=0D IOPRIO_CLASS_BE,=0D IOPRIO_CLASS_IDLE,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D IOPRIO_WHO_PROCESS =3D 1,=0D IOPRIO_WHO_PGRP,=0D IOPRIO_WHO_USER,=0D };=0D # 10 "./include/linux/ioprio.h" 2=0D # 19 "./include/linux/ioprio.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ioprio_valid(unsigned s= hort ioprio)=0D {=0D unsigned short class =3D (((ioprio) >> 13) & 0x07);=0D =0D return class > IOPRIO_CLASS_NONE && class <=3D IOPRIO_CLASS_IDLE;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int task_nice_ioprio(struct = task_struct *task)=0D {=0D return (task_nice(task) + 20) / 5;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int task_nice_ioclass(struct= task_struct *task)=0D {=0D if (task->policy =3D=3D 5)=0D return IOPRIO_CLASS_IDLE;=0D else if (task_is_realtime(task))=0D return IOPRIO_CLASS_RT;=0D else=0D return IOPRIO_CLASS_BE;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_current_ioprio(void)= =0D {=0D struct io_context *ioc =3D get_current()->io_context;=0D =0D if (ioc)=0D return ioc->ioprio;=0D return ((((IOPRIO_CLASS_BE) & 0x07) << 13) | ((4) & ((1UL << 13) - 1)));=0D }=0D =0D =0D =0D =0D extern int ioprio_best(unsigned short aprio, unsigned short bprio);=0D =0D extern int set_task_ioprio(struct task_struct *task, int ioprio);=0D =0D =0D extern int ioprio_check_cap(int ioprio);=0D # 39 "./include/linux/fs.h" 2=0D # 1 "./include/linux/fs_types.h" 1=0D # 71 "./include/linux/fs_types.h"=0D extern unsigned char fs_ftype_to_dtype(unsigned int filetype);=0D extern unsigned char fs_umode_to_ftype(umode_t mode);=0D extern unsigned char fs_umode_to_dtype(umode_t mode);=0D # 40 "./include/linux/fs.h" 2=0D =0D =0D # 1 "./include/linux/mount.h" 1=0D # 20 "./include/linux/mount.h"=0D struct super_block;=0D struct vfsmount;=0D struct dentry;=0D struct mnt_namespace;=0D struct fs_context;=0D # 71 "./include/linux/mount.h"=0D struct vfsmount {=0D struct dentry *mnt_root;=0D struct super_block *mnt_sb;=0D int mnt_flags;=0D struct user_namespace *mnt_userns;=0D } ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *mnt_u= ser_ns(const struct vfsmount *mnt)=0D {=0D =0D return ({ typeof(*&mnt->mnt_userns) ___p1 =3D ({ do { __attribute__((__nor= eturn__)) extern void __compiletime_assert_195(void) ; if (!((sizeof(*&mnt-= >mnt_userns) =3D=3D sizeof(char) || sizeof(*&mnt->mnt_userns) =3D=3D sizeof= (short) || sizeof(*&mnt->mnt_userns) =3D=3D sizeof(int) || sizeof(*&mnt->mn= t_userns) =3D=3D sizeof(long)) || sizeof(*&mnt->mnt_userns) =3D=3D sizeof(l= ong long))) __compiletime_assert_195(); } while (0); (*(const volatile type= of( _Generic((*&mnt->mnt_userns), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: (*&mnt->mnt_userns))) *)&(*&mnt->mnt_userns)); }); do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_196(void) ; if (!(= (sizeof(*&mnt->mnt_userns) =3D=3D sizeof(char) || sizeof(*&mnt->mnt_userns)= =3D=3D sizeof(short) || sizeof(*&mnt->mnt_userns) =3D=3D sizeof(int) || si= zeof(*&mnt->mnt_userns) =3D=3D sizeof(long)))) __compiletime_assert_196(); = } while (0); __asm__ __volatile__ ("fence " "r" "," "rw" : : : "memory"); _= __p1; });=0D }=0D =0D struct file;=0D struct path;=0D =0D extern int mnt_want_write(struct vfsmount *mnt);=0D extern int mnt_want_write_file(struct file *file);=0D extern void mnt_drop_write(struct vfsmount *mnt);=0D extern void mnt_drop_write_file(struct file *file);=0D extern void mntput(struct vfsmount *mnt);=0D extern struct vfsmount *mntget(struct vfsmount *mnt);=0D extern struct vfsmount *mnt_clone_internal(const struct path *path);=0D extern bool __mnt_is_readonly(struct vfsmount *mnt);=0D extern bool mnt_may_suid(struct vfsmount *mnt);=0D =0D struct path;=0D extern struct vfsmount *clone_private_mount(const struct path *path);=0D extern int __mnt_want_write(struct vfsmount *);=0D extern void __mnt_drop_write(struct vfsmount *);=0D =0D struct file_system_type;=0D extern struct vfsmount *fc_mount(struct fs_context *fc);=0D extern struct vfsmount *vfs_create_mount(struct fs_context *fc);=0D extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,=0D int flags, const char *name,=0D void *data);=0D extern struct vfsmount *vfs_submount(const struct dentry *mountpoint,=0D struct file_system_type *type,=0D const char *name, void *data);=0D =0D extern void mnt_set_expiry(struct vfsmount *mnt, struct list_head *expiry_l= ist);=0D extern void mark_mounts_for_expiry(struct list_head *mounts);=0D =0D extern dev_t name_to_dev_t(const char *name);=0D extern bool path_is_mountpoint(const struct path *path);=0D =0D extern void kern_unmount_array(struct vfsmount *mnt[], unsigned int num);=0D # 43 "./include/linux/fs.h" 2=0D =0D # 1 "./include/linux/mnt_idmapping.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct user_namespace;=0D =0D =0D =0D =0D =0D extern struct user_namespace init_user_ns;=0D # 25 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool initial_idmapping(const= struct user_namespace *ns)=0D {=0D return ns =3D=3D &init_user_ns;=0D }=0D # 44 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool no_idmapping(const stru= ct user_namespace *mnt_userns,=0D const struct user_namespace *fs_userns)=0D {=0D return initial_idmapping(mnt_userns) || mnt_userns =3D=3D fs_userns;=0D }=0D # 70 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t mapped_kuid_fs(struct= user_namespace *mnt_userns,=0D struct user_namespace *fs_userns,=0D kuid_t kuid)=0D {=0D uid_t uid;=0D =0D if (no_idmapping(mnt_userns, fs_userns))=0D return kuid;=0D if (initial_idmapping(fs_userns))=0D uid =3D __kuid_val(kuid);=0D else=0D uid =3D from_kuid(fs_userns, kuid);=0D if (uid =3D=3D (uid_t)-1)=0D return (kuid_t){ -1 };=0D return make_kuid(mnt_userns, uid);=0D }=0D # 107 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kgid_t mapped_kgid_fs(struct= user_namespace *mnt_userns,=0D struct user_namespace *fs_userns,=0D kgid_t kgid)=0D {=0D gid_t gid;=0D =0D if (no_idmapping(mnt_userns, fs_userns))=0D return kgid;=0D if (initial_idmapping(fs_userns))=0D gid =3D __kgid_val(kgid);=0D else=0D gid =3D from_kgid(fs_userns, kgid);=0D if (gid =3D=3D (gid_t)-1)=0D return (kgid_t){ -1 };=0D return make_kgid(mnt_userns, gid);=0D }=0D # 144 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t mapped_kuid_user(stru= ct user_namespace *mnt_userns,=0D struct user_namespace *fs_userns,=0D kuid_t kuid)=0D {=0D uid_t uid;=0D =0D if (no_idmapping(mnt_userns, fs_userns))=0D return kuid;=0D uid =3D from_kuid(mnt_userns, kuid);=0D if (uid =3D=3D (uid_t)-1)=0D return (kuid_t){ -1 };=0D if (initial_idmapping(fs_userns))=0D return (kuid_t){ uid };=0D return make_kuid(fs_userns, uid);=0D }=0D # 180 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kgid_t mapped_kgid_user(stru= ct user_namespace *mnt_userns,=0D struct user_namespace *fs_userns,=0D kgid_t kgid)=0D {=0D gid_t gid;=0D =0D if (no_idmapping(mnt_userns, fs_userns))=0D return kgid;=0D gid =3D from_kgid(mnt_userns, kgid);=0D if (gid =3D=3D (gid_t)-1)=0D return (kgid_t){ -1 };=0D if (initial_idmapping(fs_userns))=0D return (kgid_t){ gid };=0D return make_kgid(fs_userns, gid);=0D }=0D # 209 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t mapped_fsuid(struct u= ser_namespace *mnt_userns,=0D struct user_namespace *fs_userns)=0D {=0D return mapped_kuid_user(mnt_userns, fs_userns, (({ ({ do { } while (0 && (= !((1)))); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })= ->fsuid; })));=0D }=0D # 228 "./include/linux/mnt_idmapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kgid_t mapped_fsgid(struct u= ser_namespace *mnt_userns,=0D struct user_namespace *fs_userns)=0D {=0D return mapped_kgid_user(mnt_userns, fs_userns, (({ ({ do { } while (0 && (= !((1)))); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })= ->fsgid; })));=0D }=0D # 45 "./include/linux/fs.h" 2=0D # 1 "./include/linux/slab.h" 1=0D # 16 "./include/linux/slab.h"=0D # 1 "./include/linux/overflow.h" 1=0D # 50 "./include/linux/overflow.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) __must_check_overflow(bool overflow)=0D {=0D return __builtin_expect(!!(overflow), 0);=0D }=0D # 131 "./include/linux/overflow.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t __attribute__((__warn= _unused_result__)) size_mul(size_t factor1, size_t factor2)=0D {=0D size_t bytes;=0D =0D if (__must_check_overflow(({ typeof(factor1) __a =3D (factor1); typeof(fac= tor2) __b =3D (factor2); typeof(&bytes) __d =3D (&bytes); (void) (&__a =3D= =3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflow(__a, __b, __d);= })))=0D return (~(size_t)0);=0D =0D return bytes;=0D }=0D # 151 "./include/linux/overflow.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t __attribute__((__warn= _unused_result__)) size_add(size_t addend1, size_t addend2)=0D {=0D size_t bytes;=0D =0D if (__must_check_overflow(({ typeof(addend1) __a =3D (addend1); typeof(add= end2) __b =3D (addend2); typeof(&bytes) __d =3D (&bytes); (void) (&__a =3D= =3D &__b); (void) (&__a =3D=3D __d); __builtin_add_overflow(__a, __b, __d);= })))=0D return (~(size_t)0);=0D =0D return bytes;=0D }=0D # 173 "./include/linux/overflow.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t __attribute__((__warn= _unused_result__)) size_sub(size_t minuend, size_t subtrahend)=0D {=0D size_t bytes;=0D =0D if (minuend =3D=3D (~(size_t)0) || subtrahend =3D=3D (~(size_t)0) ||=0D __must_check_overflow(({ typeof(minuend) __a =3D (minuend); typeof(sub= trahend) __b =3D (subtrahend); typeof(&bytes) __d =3D (&bytes); (void) (&__= a =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_sub_overflow(__a, __b, = __d); })))=0D return (~(size_t)0);=0D =0D return bytes;=0D }=0D # 17 "./include/linux/slab.h" 2=0D =0D =0D # 1 "./include/linux/percpu-refcount.h" 1=0D # 59 "./include/linux/percpu-refcount.h"=0D struct percpu_ref;=0D typedef void (percpu_ref_func_t)(struct percpu_ref *);=0D =0D =0D enum {=0D __PERCPU_REF_ATOMIC =3D 1LU << 0,=0D __PERCPU_REF_DEAD =3D 1LU << 1,=0D __PERCPU_REF_ATOMIC_DEAD =3D __PERCPU_REF_ATOMIC | __PERCPU_REF_DEAD,=0D =0D __PERCPU_REF_FLAG_BITS =3D 2,=0D };=0D =0D =0D enum {=0D =0D =0D =0D =0D =0D =0D =0D PERCPU_REF_INIT_ATOMIC =3D 1 << 0,=0D =0D =0D =0D =0D =0D =0D PERCPU_REF_INIT_DEAD =3D 1 << 1,=0D =0D =0D =0D =0D PERCPU_REF_ALLOW_REINIT =3D 1 << 2,=0D };=0D =0D struct percpu_ref_data {=0D atomic_long_t count;=0D percpu_ref_func_t *release;=0D percpu_ref_func_t *confirm_switch;=0D bool force_atomic:1;=0D bool allow_reinit:1;=0D struct callback_head rcu;=0D struct percpu_ref *ref;=0D };=0D =0D struct percpu_ref {=0D =0D =0D =0D =0D unsigned long percpu_count_ptr;=0D =0D =0D =0D =0D =0D =0D =0D struct percpu_ref_data *data;=0D };=0D =0D int __attribute__((__warn_unused_result__)) percpu_ref_init(struct percpu_r= ef *ref,=0D percpu_ref_func_t *release, unsigned int flags,=0D gfp_t gfp);=0D void percpu_ref_exit(struct percpu_ref *ref);=0D void percpu_ref_switch_to_atomic(struct percpu_ref *ref,=0D percpu_ref_func_t *confirm_switch);=0D void percpu_ref_switch_to_atomic_sync(struct percpu_ref *ref);=0D void percpu_ref_switch_to_percpu(struct percpu_ref *ref);=0D void percpu_ref_kill_and_confirm(struct percpu_ref *ref,=0D percpu_ref_func_t *confirm_kill);=0D void percpu_ref_resurrect(struct percpu_ref *ref);=0D void percpu_ref_reinit(struct percpu_ref *ref);=0D bool percpu_ref_is_zero(struct percpu_ref *ref);=0D # 147 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_ref_kill(struct = percpu_ref *ref)=0D {=0D percpu_ref_kill_and_confirm(ref, ((void *)0));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __ref_is_percpu(struct = percpu_ref *ref,=0D unsigned long **percpu_countp)=0D {=0D unsigned long percpu_ptr;=0D # 174 "./include/linux/percpu-refcount.h"=0D percpu_ptr =3D ({ do { __attribute__((__noreturn__)) extern void __compile= time_assert_197(void) ; if (!((sizeof(ref->percpu_count_ptr) =3D=3D sizeof(= char) || sizeof(ref->percpu_count_ptr) =3D=3D sizeof(short) || sizeof(ref->= percpu_count_ptr) =3D=3D sizeof(int) || sizeof(ref->percpu_count_ptr) =3D= =3D sizeof(long)) || sizeof(ref->percpu_count_ptr) =3D=3D sizeof(long long)= )) __compiletime_assert_197(); } while (0); (*(const volatile typeof( _Gene= ric((ref->percpu_count_ptr), char: (char)0, unsigned char: (unsigned char)0= , signed char: (signed char)0, unsigned short: (unsigned short)0, signed sh= ort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed in= t)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned= long long: (unsigned long long)0, signed long long: (signed long long)0, d= efault: (ref->percpu_count_ptr))) *)&(ref->percpu_count_ptr)); });=0D =0D =0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(percpu_ptr & __PERCPU_REF_ATOMIC_DEAD), 0))=0D return false;=0D =0D *percpu_countp =3D (unsigned long *)percpu_ptr;=0D return true;=0D }=0D # 198 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_ref_get_many(str= uct percpu_ref *ref, unsigned long nr)=0D {=0D unsigned long *percpu_count;=0D =0D rcu_read_lock();=0D =0D if (__ref_is_percpu(ref, &percpu_count))=0D do { do { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) {= case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D ar= ch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*perc= pu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count))) *)(= &(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D nr; } while (0); do { ({ unsigned long= __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }= ); do { } while (0); arch_local_irq_restore(__flags); } while (0); } while = (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long __dumm= y; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fl= ags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp= _verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify= ; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*= (&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_coun= t))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D nr; } while (0); do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); = } while (0);break; case 4: do { unsigned long __flags; do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const voi= d *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vp= p_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((= typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*per= cpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct = thread_info *)get_current())->cpu)])))); }); }) +=3D nr; } while (0); do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } whi= le (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ unsi= gned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dumm= y2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { c= onst void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(= *(&(*percpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); }) +=3D nr; } while (0= ); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy= =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags= ); } while (0); } while (0);break; default: __bad_size_call_parameter();bre= ak; } } while (0);=0D else=0D atomic_long_add(nr, &ref->data->count);=0D =0D rcu_read_unlock();=0D }=0D # 220 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_ref_get(struct p= ercpu_ref *ref)=0D {=0D percpu_ref_get_many(ref, 1);=0D }=0D # 235 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_ref_tryget_many(= struct percpu_ref *ref,=0D unsigned long nr)=0D {=0D unsigned long *percpu_count;=0D bool ret;=0D =0D rcu_read_lock();=0D =0D if (__ref_is_percpu(ref, &percpu_count)) {=0D do { do { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) {= case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D ar= ch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*perc= pu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count))) *)(= &(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D nr; } while (0); do { ({ unsigned long= __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }= ); do { } while (0); arch_local_irq_restore(__flags); } while (0); } while = (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long __dumm= y; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fl= ags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp= _verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify= ; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*= (&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_coun= t))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D nr; } while (0); do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); = } while (0);break; case 4: do { unsigned long __flags; do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const voi= d *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vp= p_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((= typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*per= cpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct = thread_info *)get_current())->cpu)])))); }); }) +=3D nr; } while (0); do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } whi= le (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ unsi= gned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dumm= y2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { c= onst void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(= *(&(*percpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); }) +=3D nr; } while (0= ); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy= =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags= ); } while (0); } while (0);break; default: __bad_size_call_parameter();bre= ak; } } while (0);=0D ret =3D true;=0D } else {=0D ret =3D atomic_long_add_unless(&ref->data->count, nr, 0);=0D }=0D =0D rcu_read_unlock();=0D =0D return ret;=0D }=0D # 264 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_ref_tryget(struc= t percpu_ref *ref)=0D {=0D return percpu_ref_tryget_many(ref, 1);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_ref_tryget_live_= rcu(struct percpu_ref *ref)=0D {=0D unsigned long *percpu_count;=0D bool ret =3D false;=0D =0D ({ int __ret_warn_on =3D !!(!rcu_read_lock_held()); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/percpu-refcount.h"), "i" (280), "i"= ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } whi= le (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D if (__builtin_expect(!!(__ref_is_percpu(ref, &percpu_count)), 1)) {=0D do { do { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) {= case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D ar= ch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*perc= pu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count))) *)(= &(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long = __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; })= ; do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (= 0);break; case 2: do { unsigned long __flags; do { ({ unsigned long __dummy= ; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fla= gs =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_= verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify;= } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(= &(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count= ))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } = while (0);break; case 4: do { unsigned long __flags; do { ({ unsigned long = __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; })= ; __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void = *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_= verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((ty= peof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percp= u_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct th= read_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while = (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&= (*percpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; default: __bad_size_call_parameter();break; = } } while (0);=0D ret =3D true;=0D } else if (!(ref->percpu_count_ptr & __PERCPU_REF_DEAD)) {=0D ret =3D atomic_long_inc_not_zero(&ref->data->count);=0D }=0D return ret;=0D }=0D # 306 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_ref_tryget_live(= struct percpu_ref *ref)=0D {=0D bool ret =3D false;=0D =0D rcu_read_lock();=0D ret =3D percpu_ref_tryget_live_rcu(ref);=0D rcu_read_unlock();=0D return ret;=0D }=0D # 326 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_ref_put_many(str= uct percpu_ref *ref, unsigned long nr)=0D {=0D unsigned long *percpu_count;=0D =0D rcu_read_lock();=0D =0D if (__ref_is_percpu(ref, &percpu_count))=0D do { do { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*percpu_count)) {= case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D ar= ch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*perc= pu_count))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count))) *)(= &(*percpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D -(typeof(*percpu_count))(nr); } while = (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dum= my =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__fla= gs); } while (0); } while (0);break; case 2: do { unsigned long __flags; do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((vo= id *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D= (unsigned long) ((typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (type= of((typeof(*(&(*percpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cp= u_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(t= ypeof(*percpu_count))(nr); } while (0); do { ({ unsigned long __dummy; type= of(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } whil= e (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; cas= e 4: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_l= ocal_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (t= ypeof((&(*percpu_count)) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*percpu_cou= nt))) *)(&(*percpu_count))); (typeof((typeof(*(&(*percpu_count))) *)(&(*per= cpu_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_curr= ent())->cpu)])))); }); }) +=3D -(typeof(*percpu_count))(nr); } while (0); d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(*percpu_count)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsig= ned long) ((typeof(*(&(*percpu_count))) *)(&(*percpu_count))); (typeof((typ= eof(*(&(*percpu_count))) *)(&(*percpu_count)))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*= percpu_count))(nr); } while (0); do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); = arch_local_irq_restore(__flags); } while (0); } while (0);break; default: _= _bad_size_call_parameter();break; } } while (0);=0D else if (__builtin_expect(!!(atomic_long_sub_and_test(nr, &ref->data->coun= t)), 0))=0D ref->data->release(ref);=0D =0D rcu_read_unlock();=0D }=0D # 349 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void percpu_ref_put(struct p= ercpu_ref *ref)=0D {=0D percpu_ref_put_many(ref, 1);=0D }=0D # 363 "./include/linux/percpu-refcount.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool percpu_ref_is_dying(str= uct percpu_ref *ref)=0D {=0D return ref->percpu_count_ptr & __PERCPU_REF_DEAD;=0D }=0D # 20 "./include/linux/slab.h" 2=0D # 133 "./include/linux/slab.h"=0D # 1 "./include/linux/kasan.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/kasan-enabled.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/static_key.h" 1=0D # 6 "./include/linux/kasan-enabled.h" 2=0D # 23 "./include/linux/kasan-enabled.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_enabled(void)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_hw_tags_enabled(v= oid)=0D {=0D return false;=0D }=0D # 7 "./include/linux/kasan.h" 2=0D =0D # 1 "./include/linux/static_key.h" 1=0D # 9 "./include/linux/kasan.h" 2=0D =0D =0D struct kmem_cache;=0D struct page;=0D struct slab;=0D struct vm_struct;=0D struct task_struct;=0D # 24 "./include/linux/kasan.h"=0D typedef unsigned int kasan_vmalloc_flags_t;=0D # 74 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kasan_add_zero_shadow(vo= id *start, unsigned long size)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_remove_zero_shado= w(void *start,=0D unsigned long size)=0D {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_enable_current(vo= id) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_disable_current(v= oid) {}=0D # 93 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_has_integrated_in= it(void)=0D {=0D return kasan_hw_tags_enabled();=0D }=0D # 272 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) slab_flags_t kasan_never_mer= ge(void)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_unpoison_range(co= nst void *address, size_t size) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_poison_pages(stru= ct page *page, unsigned int order,=0D bool init) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_unpoison_pages(st= ruct page *page, unsigned int order,=0D bool init) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_cache_create(stru= ct kmem_cache *cache,=0D unsigned int *size,=0D slab_flags_t *flags) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_cache_create_kmal= loc(struct kmem_cache *cache) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t kasan_metadata_size(s= truct kmem_cache *cache) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_poison_slab(struc= t slab *slab) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_unpoison_object_d= ata(struct kmem_cache *cache,=0D void *object) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_poison_object_dat= a(struct kmem_cache *cache,=0D void *object) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_init_slab_obj(st= ruct kmem_cache *cache,=0D const void *object)=0D {=0D return (void *)object;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_slab_free(struct = kmem_cache *s, void *object, bool init)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_kfree_large(void = *ptr) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_slab_free_mempool= (void *ptr) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_slab_alloc(struc= t kmem_cache *s, void *object,=0D gfp_t flags, bool init)=0D {=0D return object;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_kmalloc(struct k= mem_cache *s, const void *object,=0D size_t size, gfp_t flags)=0D {=0D return (void *)object;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_kmalloc_large(co= nst void *ptr, size_t size, gfp_t flags)=0D {=0D return (void *)ptr;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_krealloc(const v= oid *object, size_t new_size,=0D gfp_t flags)=0D {=0D return (void *)object;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kasan_check_byte(const = void *address)=0D {=0D return true;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_unpoison_task_sta= ck(struct task_struct *task) {}=0D # 343 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_cache_shrink(stru= ct kmem_cache *cache) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_cache_shutdown(st= ruct kmem_cache *cache) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_record_aux_stack(= void *ptr) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_record_aux_stack_= noalloc(void *ptr) {}=0D # 369 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_reset_tag(const = void *addr)=0D {=0D return (void *)addr;=0D }=0D # 385 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_init_sw_tags(void= ) { }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_init_hw_tags_cpu(= void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_init_hw_tags(void= ) { }=0D # 444 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_populate_early_vm= _area_shadow(void *start,=0D unsigned long size) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kasan_populate_vmalloc(u= nsigned long start,=0D unsigned long size)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_release_vmalloc(u= nsigned long start,=0D unsigned long end,=0D unsigned long free_region_start,=0D unsigned long free_region_end) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kasan_unpoison_vmalloc= (const void *start,=0D unsigned long size,=0D kasan_vmalloc_flags_t flags)=0D {=0D return (void *)start;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_poison_vmalloc(co= nst void *start, unsigned long size)=0D { }=0D # 480 "./include/linux/kasan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kasan_alloc_module_shado= w(void *addr, size_t size, gfp_t gfp_mask) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_free_module_shado= w(const struct vm_struct *vm) {}=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kasan_non_canonical_hoo= k(unsigned long addr) { }=0D # 134 "./include/linux/slab.h" 2=0D =0D struct list_lru;=0D struct mem_cgroup;=0D =0D =0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) kmem_cache_init(void);=0D bool slab_is_available(void);=0D =0D struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,=0D unsigned int align, slab_flags_t flags,=0D void (*ctor)(void *));=0D struct kmem_cache *kmem_cache_create_usercopy(const char *name,=0D unsigned int size, unsigned int align,=0D slab_flags_t flags,=0D unsigned int useroffset, unsigned int usersize,=0D void (*ctor)(void *));=0D void kmem_cache_destroy(struct kmem_cache *s);=0D int kmem_cache_shrink(struct kmem_cache *s);=0D # 180 "./include/linux/slab.h"=0D void * __attribute__((__warn_unused_result__)) krealloc(const void *objp, s= ize_t new_size, gfp_t flags) __attribute__((__alloc_size__(2))) __attribute= __((__malloc__));=0D void kfree(const void *objp);=0D void kfree_sensitive(const void *objp);=0D size_t __ksize(const void *objp);=0D size_t ksize(const void *objp);=0D =0D bool kmem_valid_obj(void *object);=0D void kmem_dump_obj(void *object);=0D # 301 "./include/linux/slab.h"=0D enum kmalloc_cache_type {=0D KMALLOC_NORMAL =3D 0,=0D =0D KMALLOC_DMA =3D KMALLOC_NORMAL,=0D =0D =0D KMALLOC_CGROUP =3D KMALLOC_NORMAL,=0D =0D =0D =0D KMALLOC_RECLAIM,=0D =0D =0D =0D NR_KMALLOC_TYPES=0D };=0D =0D =0D extern struct kmem_cache *=0D kmalloc_caches[NR_KMALLOC_TYPES][((12) + 1) + 1];=0D # 330 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) enum kmalloc_cache_type kmalloc_type(gfp_t flags)=0D {=0D =0D =0D =0D =0D if (__builtin_expect(!!((flags & ((( gfp_t)0x10u) | (0 ? (( gfp_t)0x01u) := 0) | (0 ? (( gfp_t)0x400000u) : 0))) =3D=3D 0), 1))=0D return KMALLOC_NORMAL;=0D # 346 "./include/linux/slab.h"=0D if (0 && (flags & (( gfp_t)0x01u)))=0D return KMALLOC_DMA;=0D if (!0 || (flags & (( gfp_t)0x10u)))=0D return KMALLOC_RECLAIM;=0D else=0D return KMALLOC_CGROUP;=0D }=0D # 367 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned int __kmalloc_index(size_t size,=0D bool size_is_constant)=0D {=0D if (!size)=0D return 0;=0D =0D if (size <=3D (1 << 3))=0D return 3;=0D =0D if ((1 << 3) <=3D 32 && size > 64 && size <=3D 96)=0D return 1;=0D if ((1 << 3) <=3D 64 && size > 128 && size <=3D 192)=0D return 2;=0D if (size <=3D 8) return 3;=0D if (size <=3D 16) return 4;=0D if (size <=3D 32) return 5;=0D if (size <=3D 64) return 6;=0D if (size <=3D 128) return 7;=0D if (size <=3D 256) return 8;=0D if (size <=3D 512) return 9;=0D if (size <=3D 1024) return 10;=0D if (size <=3D 2 * 1024) return 11;=0D if (size <=3D 4 * 1024) return 12;=0D if (size <=3D 8 * 1024) return 13;=0D if (size <=3D 16 * 1024) return 14;=0D if (size <=3D 32 * 1024) return 15;=0D if (size <=3D 64 * 1024) return 16;=0D if (size <=3D 128 * 1024) return 17;=0D if (size <=3D 256 * 1024) return 18;=0D if (size <=3D 512 * 1024) return 19;=0D if (size <=3D 1024 * 1024) return 20;=0D if (size <=3D 2 * 1024 * 1024) return 21;=0D if (size <=3D 4 * 1024 * 1024) return 22;=0D if (size <=3D 8 * 1024 * 1024) return 23;=0D if (size <=3D 16 * 1024 * 1024) return 24;=0D if (size <=3D 32 * 1024 * 1024) return 25;=0D =0D if (!0 && size_is_constant)=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_198(v= oid) ; if (!(!(1))) __compiletime_assert_198(); } while (0);=0D else=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/slab.h"), "i" (407), "i" (0), "i" (sizeof(struct b= ug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } wh= ile (0);=0D =0D =0D return -1;=0D }=0D =0D =0D =0D void *__kmalloc(size_t size, gfp_t flags) __attribute__((__assume_aligned__= (__alignof__(unsigned long long)))) __attribute__((__alloc_size__(1))) __at= tribute__((__malloc__));=0D void *kmem_cache_alloc(struct kmem_cache *s, gfp_t flags) __attribute__((__= assume_aligned__(__alignof__(unsigned long long)))) __attribute__((__malloc= __));=0D void *kmem_cache_alloc_lru(struct kmem_cache *s, struct list_lru *lru,=0D gfp_t gfpflags) __attribute__((__assume_aligned__(__alignof__(unsigne= d long long)))) __attribute__((__malloc__));=0D void kmem_cache_free(struct kmem_cache *s, void *objp);=0D # 428 "./include/linux/slab.h"=0D void kmem_cache_free_bulk(struct kmem_cache *s, size_t size, void **p);=0D int kmem_cache_alloc_bulk(struct kmem_cache *s, gfp_t flags, size_t size, v= oid **p);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void kfree_bulk(size_t size, void **p)=0D {=0D kmem_cache_free_bulk(((void *)0), size, p);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__alloc_size__(1))) __attribute__((__malloc__)) void = *__kmalloc_node(size_t size, gfp_t flags, int node)=0D {=0D return __kmalloc(size, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int n= ode)=0D {=0D return kmem_cache_alloc(s, flags);=0D }=0D =0D =0D =0D extern void *kmem_cache_alloc_trace(struct kmem_cache *s, gfp_t flags, size= _t size)=0D __attribute__((__assume_aligned__(__alignof__(unsigned long long))))= __attribute__((__alloc_size__(3))) __attribute__((__malloc__));=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__alloc_size__(4))) __attribute__((__malloc__)) void = *kmem_cache_alloc_node_trace(struct kmem_cache *s,=0D gfp_t gfpflags, int node, size_t size)=0D {=0D return kmem_cache_alloc_trace(s, gfpflags, size);=0D }=0D # 493 "./include/linux/slab.h"=0D extern void *kmalloc_order(size_t size, gfp_t flags, unsigned int order) __= attribute__((__assume_aligned__(((1UL) << (12)))))=0D __attribute__((__alloc_size__(1))) __attribute__((__malloc__));=0D =0D =0D extern void *kmalloc_order_trace(size_t size, gfp_t flags, unsigned int ord= er)=0D __attribute__((__assume_aligned__(((1UL) << (12))))) __attribute__((__a= lloc_size__(1))) __attribute__((__malloc__));=0D # 507 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__alloc_size__(1))) __attribute__((__malloc__)) void = *kmalloc_large(size_t size, gfp_t flags)=0D {=0D unsigned int order =3D get_order(size);=0D return kmalloc_order_trace(size, flags, order);=0D }=0D # 567 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__alloc_size__(1))) __attribute__((__malloc__)) void = *kmalloc(size_t size, gfp_t flags)=0D {=0D if (__builtin_constant_p(size)) {=0D =0D unsigned int index;=0D =0D if (size > (1UL << ((12) + 1)))=0D return kmalloc_large(size, flags);=0D =0D index =3D __kmalloc_index(size, true);=0D =0D if (!index)=0D return ((void *)16);=0D =0D return kmem_cache_alloc_trace(=0D kmalloc_caches[kmalloc_type(flags)][index],=0D flags, size);=0D =0D }=0D return __kmalloc(size, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__alloc_size__(1))) __attribute__((__malloc__)) void = *kmalloc_node(size_t size, gfp_t flags, int node)=0D {=0D =0D if (__builtin_constant_p(size) &&=0D size <=3D (1UL << ((12) + 1))) {=0D unsigned int i =3D __kmalloc_index(size, true);=0D =0D if (!i)=0D return ((void *)16);=0D =0D return kmem_cache_alloc_node_trace(=0D kmalloc_caches[kmalloc_type(flags)][i],=0D flags, node, size);=0D }=0D =0D return __kmalloc_node(size, flags, node);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kmalloc_array(size_t n, size_t = size, gfp_t flags)=0D {=0D size_t bytes;=0D =0D if (__builtin_expect(!!(__must_check_overflow(({ typeof(n) __a =3D (n); ty= peof(size) __b =3D (size); typeof(&bytes) __d =3D (&bytes); (void) (&__a = =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflow(__a, __b, __= d); }))), 0))=0D return ((void *)0);=0D if (__builtin_constant_p(n) && __builtin_constant_p(size))=0D return kmalloc(bytes, flags);=0D return __kmalloc(bytes, flags);=0D }=0D # 631 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(2, 3))) __attribute__((__malloc__)) void * __attribute__((__warn_unused_r= esult__)) krealloc_array(void *p,=0D size_t new_n,=0D size_t new_size,=0D gfp_t flags)=0D {=0D size_t bytes;=0D =0D if (__builtin_expect(!!(__must_check_overflow(({ typeof(new_n) __a =3D (ne= w_n); typeof(new_size) __b =3D (new_size); typeof(&bytes) __d =3D (&bytes);= (void) (&__a =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflo= w(__a, __b, __d); }))), 0))=0D return ((void *)0);=0D =0D return krealloc(p, bytes, flags);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kcalloc(size_t n, size_t size, = gfp_t flags)=0D {=0D return kmalloc_array(n, size, flags | (( gfp_t)0x100u));=0D }=0D # 663 "./include/linux/slab.h"=0D extern void *__kmalloc_track_caller(size_t size, gfp_t flags, unsigned long= caller);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kmalloc_array_node(size_t n, si= ze_t size, gfp_t flags,=0D int node)=0D {=0D size_t bytes;=0D =0D if (__builtin_expect(!!(__must_check_overflow(({ typeof(n) __a =3D (n); ty= peof(size) __b =3D (size); typeof(&bytes) __d =3D (&bytes); (void) (&__a = =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflow(__a, __b, __= d); }))), 0))=0D return ((void *)0);=0D if (__builtin_constant_p(n) && __builtin_constant_p(size))=0D return kmalloc_node(bytes, flags, node);=0D return __kmalloc_node(bytes, flags, node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kcalloc_node(size_t n, size_t s= ize, gfp_t flags, int node)=0D {=0D return kmalloc_array_node(n, size, flags | (( gfp_t)0x100u), node);=0D }=0D # 702 "./include/linux/slab.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmem_cache_zalloc(stru= ct kmem_cache *k, gfp_t flags)=0D {=0D return kmem_cache_alloc(k, flags | (( gfp_t)0x100u));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1))) __attribute__((__malloc__)) void *kzalloc(size_t size, gfp_t flags)= =0D {=0D return kmalloc(size, flags | (( gfp_t)0x100u));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1))) __attribute__((__malloc__)) void *kzalloc_node(size_t size, gfp_t fl= ags, int node)=0D {=0D return kmalloc_node(size, flags | (( gfp_t)0x100u), node);=0D }=0D =0D extern void *kvmalloc_node(size_t size, gfp_t flags, int node) __attribute_= _((__alloc_size__(1))) __attribute__((__malloc__));=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1))) __attribute__((__malloc__)) void *kvmalloc(size_t size, gfp_t flags)= =0D {=0D return kvmalloc_node(size, flags, (-1));=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1))) __attribute__((__malloc__)) void *kvzalloc_node(size_t size, gfp_t f= lags, int node)=0D {=0D return kvmalloc_node(size, flags | (( gfp_t)0x100u), node);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1))) __attribute__((__malloc__)) void *kvzalloc(size_t size, gfp_t flags)= =0D {=0D return kvmalloc(size, flags | (( gfp_t)0x100u));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kvmalloc_array(size_t n, size_t= size, gfp_t flags)=0D {=0D size_t bytes;=0D =0D if (__builtin_expect(!!(__must_check_overflow(({ typeof(n) __a =3D (n); ty= peof(size) __b =3D (size); typeof(&bytes) __d =3D (&bytes); (void) (&__a = =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflow(__a, __b, __= d); }))), 0))=0D return ((void *)0);=0D =0D return kvmalloc(bytes, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__alloc_size_= _(1, 2))) __attribute__((__malloc__)) void *kvcalloc(size_t n, size_t size,= gfp_t flags)=0D {=0D return kvmalloc_array(n, size, flags | (( gfp_t)0x100u));=0D }=0D =0D extern void *kvrealloc(const void *p, size_t oldsize, size_t newsize, gfp_t= flags)=0D __attribute__((__alloc_size__(3))) __attribute__((__malloc__));=0D extern void kvfree(const void *addr);=0D extern void kvfree_sensitive(const void *addr, size_t len);=0D =0D unsigned int kmem_cache_size(struct kmem_cache *s);=0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) kmem_cache_init_late(void);=0D # 46 "./include/linux/fs.h" 2=0D =0D =0D # 1 "./include/uapi/linux/fs.h" 1=0D # 54 "./include/uapi/linux/fs.h"=0D struct file_clone_range {=0D __s64 src_fd;=0D __u64 src_offset;=0D __u64 src_length;=0D __u64 dest_offset;=0D };=0D =0D struct fstrim_range {=0D __u64 start;=0D __u64 len;=0D __u64 minlen;=0D };=0D =0D =0D =0D =0D =0D =0D struct file_dedupe_range_info {=0D __s64 dest_fd;=0D __u64 dest_offset;=0D __u64 bytes_deduped;=0D =0D =0D =0D =0D =0D =0D __s32 status;=0D __u32 reserved;=0D };=0D =0D =0D struct file_dedupe_range {=0D __u64 src_offset;=0D __u64 src_length;=0D __u16 dest_count;=0D __u16 reserved1;=0D __u32 reserved2;=0D struct file_dedupe_range_info info[0];=0D };=0D =0D =0D struct files_stat_struct {=0D unsigned long nr_files;=0D unsigned long nr_free_files;=0D unsigned long max_files;=0D };=0D =0D struct inodes_stat_t {=0D long nr_inodes;=0D long nr_unused;=0D long dummy[5];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct fsxattr {=0D __u32 fsx_xflags;=0D __u32 fsx_extsize;=0D __u32 fsx_nextents;=0D __u32 fsx_projid;=0D __u32 fsx_cowextsize;=0D unsigned char fsx_pad[8];=0D };=0D # 287 "./include/uapi/linux/fs.h"=0D typedef int __kernel_rwf_t;=0D # 49 "./include/linux/fs.h" 2=0D =0D struct backing_dev_info;=0D struct bdi_writeback;=0D struct bio;=0D struct io_comp_batch;=0D struct export_operations;=0D struct fiemap_extent_info;=0D struct hd_geometry;=0D struct iovec;=0D struct kiocb;=0D struct kobject;=0D struct pipe_inode_info;=0D struct poll_table_struct;=0D struct kstatfs;=0D struct vm_area_struct;=0D struct vfsmount;=0D struct cred;=0D struct swap_info_struct;=0D struct seq_file;=0D struct workqueue_struct;=0D struct iov_iter;=0D struct fscrypt_info;=0D struct fscrypt_operations;=0D struct fsverity_info;=0D struct fsverity_operations;=0D struct fs_context;=0D struct fs_parameter_spec;=0D struct fileattr;=0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) inode_init(void);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) inode_init_early(void);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) files_init(void);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) files_maxfiles_init(void);=0D =0D extern unsigned long get_max_files(void);=0D extern unsigned int sysctl_nr_open;=0D =0D typedef __kernel_rwf_t rwf_t;=0D =0D struct buffer_head;=0D typedef int (get_block_t)(struct inode *inode, sector_t iblock,=0D struct buffer_head *bh_result, int create);=0D typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,=0D ssize_t bytes, void *private);=0D # 218 "./include/linux/fs.h"=0D struct iattr {=0D unsigned int ia_valid;=0D umode_t ia_mode;=0D kuid_t ia_uid;=0D kgid_t ia_gid;=0D loff_t ia_size;=0D struct timespec64 ia_atime;=0D struct timespec64 ia_mtime;=0D struct timespec64 ia_ctime;=0D =0D =0D =0D =0D =0D =0D struct file *ia_file;=0D };=0D =0D =0D =0D =0D =0D # 1 "./include/linux/quota.h" 1=0D # 42 "./include/linux/quota.h"=0D # 1 "./include/uapi/linux/dqblk_xfs.h" 1=0D # 53 "./include/uapi/linux/dqblk_xfs.h"=0D typedef struct fs_disk_quota {=0D __s8 d_version;=0D __s8 d_flags;=0D __u16 d_fieldmask;=0D __u32 d_id;=0D __u64 d_blk_hardlimit;=0D __u64 d_blk_softlimit;=0D __u64 d_ino_hardlimit;=0D __u64 d_ino_softlimit;=0D __u64 d_bcount;=0D __u64 d_icount;=0D __s32 d_itimer;=0D =0D =0D __s32 d_btimer;=0D __u16 d_iwarns;=0D __u16 d_bwarns;=0D __s8 d_itimer_hi;=0D __s8 d_btimer_hi;=0D __s8 d_rtbtimer_hi;=0D __s8 d_padding2;=0D __u64 d_rtb_hardlimit;=0D __u64 d_rtb_softlimit;=0D __u64 d_rtbcount;=0D __s32 d_rtbtimer;=0D __u16 d_rtbwarns;=0D __s16 d_padding3;=0D char d_padding4[8];=0D } fs_disk_quota_t;=0D # 159 "./include/uapi/linux/dqblk_xfs.h"=0D typedef struct fs_qfilestat {=0D __u64 qfs_ino;=0D __u64 qfs_nblks;=0D __u32 qfs_nextents;=0D } fs_qfilestat_t;=0D =0D typedef struct fs_quota_stat {=0D __s8 qs_version;=0D __u16 qs_flags;=0D __s8 qs_pad;=0D fs_qfilestat_t qs_uquota;=0D fs_qfilestat_t qs_gquota;=0D __u32 qs_incoredqs;=0D __s32 qs_btimelimit;=0D __s32 qs_itimelimit;=0D __s32 qs_rtbtimelimit;=0D __u16 qs_bwarnlimit;=0D __u16 qs_iwarnlimit;=0D } fs_quota_stat_t;=0D # 202 "./include/uapi/linux/dqblk_xfs.h"=0D struct fs_qfilestatv {=0D __u64 qfs_ino;=0D __u64 qfs_nblks;=0D __u32 qfs_nextents;=0D __u32 qfs_pad;=0D };=0D =0D struct fs_quota_statv {=0D __s8 qs_version;=0D __u8 qs_pad1;=0D __u16 qs_flags;=0D __u32 qs_incoredqs;=0D struct fs_qfilestatv qs_uquota;=0D struct fs_qfilestatv qs_gquota;=0D struct fs_qfilestatv qs_pquota;=0D __s32 qs_btimelimit;=0D __s32 qs_itimelimit;=0D __s32 qs_rtbtimelimit;=0D __u16 qs_bwarnlimit;=0D __u16 qs_iwarnlimit;=0D __u16 qs_rtbwarnlimit;=0D __u16 qs_pad3;=0D __u32 qs_pad4;=0D __u64 qs_pad2[7];=0D };=0D # 43 "./include/linux/quota.h" 2=0D # 1 "./include/linux/dqblk_v1.h" 1=0D # 44 "./include/linux/quota.h" 2=0D # 1 "./include/linux/dqblk_v2.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/dqblk_qtree.h" 1=0D # 18 "./include/linux/dqblk_qtree.h"=0D struct dquot;=0D struct kqid;=0D =0D =0D struct qtree_fmt_operations {=0D void (*mem2disk_dqblk)(void *disk, struct dquot *dquot);=0D void (*disk2mem_dqblk)(struct dquot *dquot, void *disk);=0D int (*is_id)(void *disk, struct dquot *dquot);=0D };=0D =0D =0D struct qtree_mem_dqinfo {=0D struct super_block *dqi_sb;=0D int dqi_type;=0D unsigned int dqi_blocks;=0D unsigned int dqi_free_blk;=0D unsigned int dqi_free_entry;=0D unsigned int dqi_blocksize_bits;=0D unsigned int dqi_entry_size;=0D unsigned int dqi_usable_bs;=0D unsigned int dqi_qtree_depth;=0D const struct qtree_fmt_operations *dqi_ops;=0D };=0D =0D int qtree_write_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);= =0D int qtree_read_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);=0D int qtree_delete_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot);= =0D int qtree_release_dquot(struct qtree_mem_dqinfo *info, struct dquot *dquot)= ;=0D int qtree_entry_unused(struct qtree_mem_dqinfo *info, char *disk);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qtree_depth(struct qtree= _mem_dqinfo *info)=0D {=0D unsigned int epb =3D info->dqi_usable_bs >> 2;=0D unsigned long long entries =3D epb;=0D int i;=0D =0D for (i =3D 1; entries < (1ULL << 32); i++)=0D entries *=3D epb;=0D return i;=0D }=0D int qtree_get_next_id(struct qtree_mem_dqinfo *info, struct kqid *qid);=0D # 10 "./include/linux/dqblk_v2.h" 2=0D # 45 "./include/linux/quota.h" 2=0D =0D =0D =0D # 1 "./include/linux/projid.h" 1=0D # 17 "./include/linux/projid.h"=0D struct user_namespace;=0D extern struct user_namespace init_user_ns;=0D =0D typedef __kernel_uid32_t projid_t;=0D =0D typedef struct {=0D projid_t val;=0D } kprojid_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) projid_t __kprojid_val(kproj= id_t projid)=0D {=0D return projid.val;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool projid_eq(kprojid_t lef= t, kprojid_t right)=0D {=0D return __kprojid_val(left) =3D=3D __kprojid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool projid_lt(kprojid_t lef= t, kprojid_t right)=0D {=0D return __kprojid_val(left) < __kprojid_val(right);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool projid_valid(kprojid_t = projid)=0D {=0D return !projid_eq(projid, (kprojid_t){ -1 });=0D }=0D =0D =0D =0D extern kprojid_t make_kprojid(struct user_namespace *from, projid_t projid)= ;=0D =0D extern projid_t from_kprojid(struct user_namespace *to, kprojid_t projid);= =0D extern projid_t from_kprojid_munged(struct user_namespace *to, kprojid_t pr= ojid);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kprojid_has_mapping(str= uct user_namespace *ns, kprojid_t projid)=0D {=0D return from_kprojid(ns, projid) !=3D (projid_t)-1;=0D }=0D # 49 "./include/linux/quota.h" 2=0D # 1 "./include/uapi/linux/quota.h" 1=0D # 90 "./include/uapi/linux/quota.h"=0D enum {=0D QIF_BLIMITS_B =3D 0,=0D QIF_SPACE_B,=0D QIF_ILIMITS_B,=0D QIF_INODES_B,=0D QIF_BTIME_B,=0D QIF_ITIME_B,=0D };=0D # 110 "./include/uapi/linux/quota.h"=0D struct if_dqblk {=0D __u64 dqb_bhardlimit;=0D __u64 dqb_bsoftlimit;=0D __u64 dqb_curspace;=0D __u64 dqb_ihardlimit;=0D __u64 dqb_isoftlimit;=0D __u64 dqb_curinodes;=0D __u64 dqb_btime;=0D __u64 dqb_itime;=0D __u32 dqb_valid;=0D };=0D =0D struct if_nextdqblk {=0D __u64 dqb_bhardlimit;=0D __u64 dqb_bsoftlimit;=0D __u64 dqb_curspace;=0D __u64 dqb_ihardlimit;=0D __u64 dqb_isoftlimit;=0D __u64 dqb_curinodes;=0D __u64 dqb_btime;=0D __u64 dqb_itime;=0D __u32 dqb_valid;=0D __u32 dqb_id;=0D };=0D # 144 "./include/uapi/linux/quota.h"=0D enum {=0D DQF_ROOT_SQUASH_B =3D 0,=0D DQF_SYS_FILE_B =3D 16,=0D =0D DQF_PRIVATE=0D };=0D =0D =0D =0D =0D =0D =0D struct if_dqinfo {=0D __u64 dqi_bgrace;=0D __u64 dqi_igrace;=0D __u32 dqi_flags;=0D __u32 dqi_valid;=0D };=0D # 178 "./include/uapi/linux/quota.h"=0D enum {=0D QUOTA_NL_C_UNSPEC,=0D QUOTA_NL_C_WARNING,=0D __QUOTA_NL_C_MAX,=0D };=0D =0D =0D enum {=0D QUOTA_NL_A_UNSPEC,=0D QUOTA_NL_A_QTYPE,=0D QUOTA_NL_A_EXCESS_ID,=0D QUOTA_NL_A_WARNING,=0D QUOTA_NL_A_DEV_MAJOR,=0D QUOTA_NL_A_DEV_MINOR,=0D QUOTA_NL_A_CAUSED_ID,=0D QUOTA_NL_A_PAD,=0D __QUOTA_NL_A_MAX,=0D };=0D # 50 "./include/linux/quota.h" 2=0D =0D =0D =0D =0D enum quota_type {=0D USRQUOTA =3D 0,=0D GRPQUOTA =3D 1,=0D PRJQUOTA =3D 2,=0D };=0D =0D =0D =0D =0D =0D =0D typedef __kernel_uid32_t qid_t;=0D typedef long long qsize_t;=0D =0D struct kqid {=0D union {=0D kuid_t uid;=0D kgid_t gid;=0D kprojid_t projid;=0D };=0D enum quota_type type;=0D };=0D =0D extern bool qid_eq(struct kqid left, struct kqid right);=0D extern bool qid_lt(struct kqid left, struct kqid right);=0D extern qid_t from_kqid(struct user_namespace *to, struct kqid qid);=0D extern qid_t from_kqid_munged(struct user_namespace *to, struct kqid qid);= =0D extern bool qid_valid(struct kqid qid);=0D # 97 "./include/linux/quota.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kqid make_kqid(struct= user_namespace *from,=0D enum quota_type type, qid_t qid)=0D {=0D struct kqid kqid;=0D =0D kqid.type =3D type;=0D switch (type) {=0D case USRQUOTA:=0D kqid.uid =3D make_kuid(from, qid);=0D break;=0D case GRPQUOTA:=0D kqid.gid =3D make_kgid(from, qid);=0D break;=0D case PRJQUOTA:=0D kqid.projid =3D make_kprojid(from, qid);=0D break;=0D default:=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/quota.h"), "i" (114), "i" (0), "i" (sizeof(struct = bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } w= hile (0);=0D }=0D return kqid;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kqid make_kqid_invali= d(enum quota_type type)=0D {=0D struct kqid kqid;=0D =0D kqid.type =3D type;=0D switch (type) {=0D case USRQUOTA:=0D kqid.uid =3D (kuid_t){ -1 };=0D break;=0D case GRPQUOTA:=0D kqid.gid =3D (kgid_t){ -1 };=0D break;=0D case PRJQUOTA:=0D kqid.projid =3D (kprojid_t){ -1 };=0D break;=0D default:=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/quota.h"), "i" (141), "i" (0), "i" (sizeof(struct = bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } w= hile (0);=0D }=0D return kqid;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kqid make_kqid_uid(ku= id_t uid)=0D {=0D struct kqid kqid;=0D kqid.type =3D USRQUOTA;=0D kqid.uid =3D uid;=0D return kqid;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kqid make_kqid_gid(kg= id_t gid)=0D {=0D struct kqid kqid;=0D kqid.type =3D GRPQUOTA;=0D kqid.gid =3D gid;=0D return kqid;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kqid make_kqid_projid= (kprojid_t projid)=0D {=0D struct kqid kqid;=0D kqid.type =3D PRJQUOTA;=0D kqid.projid =3D projid;=0D return kqid;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qid_has_mapping(struct = user_namespace *ns, struct kqid qid)=0D {=0D return from_kqid(ns, qid) !=3D (qid_t) -1;=0D }=0D =0D =0D extern spinlock_t dq_data_lock;=0D # 205 "./include/linux/quota.h"=0D struct mem_dqblk {=0D qsize_t dqb_bhardlimit;=0D qsize_t dqb_bsoftlimit;=0D qsize_t dqb_curspace;=0D qsize_t dqb_rsvspace;=0D qsize_t dqb_ihardlimit;=0D qsize_t dqb_isoftlimit;=0D qsize_t dqb_curinodes;=0D time64_t dqb_btime;=0D time64_t dqb_itime;=0D };=0D =0D =0D =0D =0D struct quota_format_type;=0D =0D struct mem_dqinfo {=0D struct quota_format_type *dqi_format;=0D int dqi_fmt_id;=0D =0D struct list_head dqi_dirty_list;=0D unsigned long dqi_flags;=0D unsigned int dqi_bgrace;=0D unsigned int dqi_igrace;=0D qsize_t dqi_max_spc_limit;=0D qsize_t dqi_max_ino_limit;=0D void *dqi_priv;=0D };=0D =0D struct super_block;=0D =0D =0D =0D =0D =0D =0D enum {=0D DQF_INFO_DIRTY_B =3D DQF_PRIVATE,=0D };=0D =0D =0D extern void mark_info_dirty(struct super_block *sb, int type);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int info_dirty(struct mem_dq= info *info)=0D {=0D return arch_test_bit(DQF_INFO_DIRTY_B, &info->dqi_flags);=0D }=0D =0D enum {=0D DQST_LOOKUPS,=0D DQST_DROPS,=0D DQST_READS,=0D DQST_WRITES,=0D DQST_CACHE_HITS,=0D DQST_ALLOC_DQUOTS,=0D DQST_FREE_DQUOTS,=0D DQST_SYNCS,=0D _DQST_DQSTAT_LAST=0D };=0D =0D struct dqstats {=0D unsigned long stat[_DQST_DQSTAT_LAST];=0D struct percpu_counter counter[_DQST_DQSTAT_LAST];=0D };=0D =0D extern struct dqstats dqstats;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dqstats_inc(unsigned in= t type)=0D {=0D percpu_counter_inc(&dqstats.counter[type]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dqstats_dec(unsigned in= t type)=0D {=0D percpu_counter_dec(&dqstats.counter[type]);=0D }=0D # 294 "./include/linux/quota.h"=0D struct dquot {=0D struct hlist_node dq_hash;=0D struct list_head dq_inuse;=0D struct list_head dq_free;=0D struct list_head dq_dirty;=0D struct mutex dq_lock;=0D spinlock_t dq_dqb_lock;=0D atomic_t dq_count;=0D struct super_block *dq_sb;=0D struct kqid dq_id;=0D loff_t dq_off;=0D unsigned long dq_flags;=0D struct mem_dqblk dq_dqb;=0D };=0D =0D =0D struct quota_format_ops {=0D int (*check_quota_file)(struct super_block *sb, int type);=0D int (*read_file_info)(struct super_block *sb, int type);=0D int (*write_file_info)(struct super_block *sb, int type);=0D int (*free_file_info)(struct super_block *sb, int type);=0D int (*read_dqblk)(struct dquot *dquot);=0D int (*commit_dqblk)(struct dquot *dquot);=0D int (*release_dqblk)(struct dquot *dquot);=0D int (*get_next_id)(struct super_block *sb, struct kqid *qid);=0D };=0D =0D =0D struct dquot_operations {=0D int (*write_dquot) (struct dquot *);=0D struct dquot *(*alloc_dquot)(struct super_block *, int);=0D void (*destroy_dquot)(struct dquot *);=0D int (*acquire_dquot) (struct dquot *);=0D int (*release_dquot) (struct dquot *);=0D int (*mark_dirty) (struct dquot *);=0D int (*write_info) (struct super_block *, int);=0D =0D =0D qsize_t *(*get_reserved_space) (struct inode *);=0D int (*get_projid) (struct inode *, kprojid_t *);=0D =0D int (*get_inode_usage) (struct inode *, qsize_t *);=0D =0D int (*get_next_id) (struct super_block *sb, struct kqid *qid);=0D };=0D =0D struct path;=0D =0D =0D struct qc_dqblk {=0D int d_fieldmask;=0D u64 d_spc_hardlimit;=0D u64 d_spc_softlimit;=0D u64 d_ino_hardlimit;=0D u64 d_ino_softlimit;=0D u64 d_space;=0D u64 d_ino_count;=0D s64 d_ino_timer;=0D =0D s64 d_spc_timer;=0D int d_ino_warns;=0D int d_spc_warns;=0D u64 d_rt_spc_hardlimit;=0D u64 d_rt_spc_softlimit;=0D u64 d_rt_space;=0D s64 d_rt_spc_timer;=0D int d_rt_spc_warns;=0D };=0D # 395 "./include/linux/quota.h"=0D struct qc_type_state {=0D unsigned int flags;=0D unsigned int spc_timelimit;=0D =0D unsigned int ino_timelimit;=0D unsigned int rt_spc_timelimit;=0D unsigned int spc_warnlimit;=0D unsigned int ino_warnlimit;=0D unsigned int rt_spc_warnlimit;=0D unsigned long long ino;=0D blkcnt_t blocks;=0D blkcnt_t nextents;=0D };=0D =0D struct qc_state {=0D unsigned int s_incoredqs;=0D struct qc_type_state s_state[3];=0D };=0D =0D =0D struct qc_info {=0D int i_fieldmask;=0D unsigned int i_flags;=0D unsigned int i_spc_timelimit;=0D =0D unsigned int i_ino_timelimit;=0D unsigned int i_rt_spc_timelimit;=0D unsigned int i_spc_warnlimit;=0D unsigned int i_ino_warnlimit;=0D unsigned int i_rt_spc_warnlimit;=0D };=0D =0D =0D struct quotactl_ops {=0D int (*quota_on)(struct super_block *, int, int, const struct path *);=0D int (*quota_off)(struct super_block *, int);=0D int (*quota_enable)(struct super_block *, unsigned int);=0D int (*quota_disable)(struct super_block *, unsigned int);=0D int (*quota_sync)(struct super_block *, int);=0D int (*set_info)(struct super_block *, int, struct qc_info *);=0D int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);=0D int (*get_nextdqblk)(struct super_block *, struct kqid *,=0D struct qc_dqblk *);=0D int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *);=0D int (*get_state)(struct super_block *, struct qc_state *);=0D int (*rm_xquota)(struct super_block *, unsigned int);=0D };=0D =0D struct quota_format_type {=0D int qf_fmt_id;=0D const struct quota_format_ops *qf_ops;=0D struct module *qf_owner;=0D struct quota_format_type *qf_next;=0D };=0D # 464 "./include/linux/quota.h"=0D enum {=0D _DQUOT_USAGE_ENABLED =3D 0,=0D _DQUOT_LIMITS_ENABLED,=0D _DQUOT_SUSPENDED,=0D =0D =0D _DQUOT_STATE_FLAGS=0D };=0D # 491 "./include/linux/quota.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int dquot_state_fla= g(unsigned int flags, int type)=0D {=0D return flags << type;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int dquot_generic_f= lag(unsigned int flags, int type)=0D {=0D return (flags >> type) & ((1 << _DQUOT_USAGE_ENABLED * 3) | (1 << _DQUOT_L= IMITS_ENABLED * 3) | (1 << _DQUOT_SUSPENDED * 3));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned dquot_state_types(unsigned flags, unsigned flag)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_199(vo= id) ; if (!(!((flag) =3D=3D 0 || (((flag) & ((flag) - 1)) !=3D 0)))) __comp= iletime_assert_199(); } while (0);=0D return (flags / flag) & ((1 << 3) - 1);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void quota_send_warning(stru= ct kqid qid, dev_t dev,=0D const char warntype)=0D {=0D return;=0D }=0D =0D =0D struct quota_info {=0D unsigned int flags;=0D struct rw_semaphore dqio_sem;=0D struct inode *files[3];=0D struct mem_dqinfo info[3];=0D const struct quota_format_ops *ops[3];=0D };=0D =0D int register_quota_format(struct quota_format_type *fmt);=0D void unregister_quota_format(struct quota_format_type *fmt);=0D =0D struct quota_module_name {=0D int qm_fmt_id;=0D char *qm_mod_name;=0D };=0D # 240 "./include/linux/fs.h" 2=0D # 273 "./include/linux/fs.h"=0D enum positive_aop_returns {=0D AOP_WRITEPAGE_ACTIVATE =3D 0x80000,=0D AOP_TRUNCATED_PAGE =3D 0x80001,=0D };=0D # 285 "./include/linux/fs.h"=0D struct page;=0D struct address_space;=0D struct writeback_control;=0D struct readahead_control;=0D =0D =0D =0D =0D =0D enum rw_hint {=0D WRITE_LIFE_NOT_SET =3D 0,=0D WRITE_LIFE_NONE =3D 1,=0D WRITE_LIFE_SHORT =3D 2,=0D WRITE_LIFE_MEDIUM =3D 3,=0D WRITE_LIFE_LONG =3D 4,=0D WRITE_LIFE_EXTREME =3D 5,=0D };=0D # 320 "./include/linux/fs.h"=0D struct kiocb {=0D struct file *ki_filp;=0D =0D =0D =0D =0D loff_t ki_pos;=0D void (*ki_complete)(struct kiocb *iocb, long ret);=0D void *private;=0D int ki_flags;=0D u16 ki_ioprio;=0D struct wait_page_queue *ki_waitq;=0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_sync_kiocb(struct ki= ocb *kiocb)=0D {=0D return kiocb->ki_complete =3D=3D ((void *)0);=0D }=0D =0D struct address_space_operations {=0D int (*writepage)(struct page *page, struct writeback_control *wbc);=0D int (*readpage)(struct file *, struct page *);=0D =0D =0D int (*writepages)(struct address_space *, struct writeback_control *);=0D =0D =0D bool (*dirty_folio)(struct address_space *, struct folio *);=0D =0D void (*readahead)(struct readahead_control *);=0D =0D int (*write_begin)(struct file *, struct address_space *mapping,=0D loff_t pos, unsigned len, unsigned flags,=0D struct page **pagep, void **fsdata);=0D int (*write_end)(struct file *, struct address_space *mapping,=0D loff_t pos, unsigned len, unsigned copied,=0D struct page *page, void *fsdata);=0D =0D =0D sector_t (*bmap)(struct address_space *, sector_t);=0D void (*invalidate_folio) (struct folio *, size_t offset, size_t len);=0D int (*releasepage) (struct page *, gfp_t);=0D void (*freepage)(struct page *);=0D ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);=0D =0D =0D =0D =0D int (*migratepage) (struct address_space *,=0D struct page *, struct page *, enum migrate_mode);=0D bool (*isolate_page)(struct page *, isolate_mode_t);=0D void (*putback_page)(struct page *);=0D int (*launder_folio)(struct folio *);=0D bool (*is_partially_uptodate) (struct folio *, size_t from,=0D size_t count);=0D void (*is_dirty_writeback) (struct page *, bool *, bool *);=0D int (*error_remove_page)(struct address_space *, struct page *);=0D =0D =0D int (*swap_activate)(struct swap_info_struct *sis, struct file *file,=0D sector_t *span);=0D void (*swap_deactivate)(struct file *file);=0D };=0D =0D extern const struct address_space_operations empty_aops;=0D =0D =0D =0D =0D =0D int pagecache_write_begin(struct file *, struct address_space *mapping,=0D loff_t pos, unsigned len, unsigned flags,=0D struct page **pagep, void **fsdata);=0D =0D int pagecache_write_end(struct file *, struct address_space *mapping,=0D loff_t pos, unsigned len, unsigned copied,=0D struct page *page, void *fsdata);=0D # 421 "./include/linux/fs.h"=0D struct address_space {=0D struct inode *host;=0D struct xarray i_pages;=0D struct rw_semaphore invalidate_lock;=0D gfp_t gfp_mask;=0D atomic_t i_mmap_writable;=0D =0D =0D =0D =0D struct rb_root_cached i_mmap;=0D struct rw_semaphore i_mmap_rwsem;=0D unsigned long nrpages;=0D unsigned long writeback_index;=0D const struct address_space_operations *a_ops;=0D unsigned long flags;=0D errseq_t wb_err;=0D spinlock_t private_lock;=0D struct list_head private_list;=0D void *private_data;=0D } __attribute__((aligned(sizeof(long)))) ;=0D # 456 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mapping_tagged(struct a= ddress_space *mapping, xa_mark_t tag)=0D {=0D return xa_marked(&mapping->i_pages, tag);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_lock_write(struc= t address_space *mapping)=0D {=0D down_write(&mapping->i_mmap_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int i_mmap_trylock_write(str= uct address_space *mapping)=0D {=0D return down_write_trylock(&mapping->i_mmap_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_unlock_write(str= uct address_space *mapping)=0D {=0D up_write(&mapping->i_mmap_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_lock_read(struct= address_space *mapping)=0D {=0D down_read(&mapping->i_mmap_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_unlock_read(stru= ct address_space *mapping)=0D {=0D up_read(&mapping->i_mmap_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_assert_locked(st= ruct address_space *mapping)=0D {=0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(&mapping-= >i_mmap_rwsem)->dep_map) !=3D 0)); if (__builtin_expect(!!(__ret_warn_on), = 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tab= le,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t"= ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : = : "i" ("include/linux/fs.h"), "i" (488), "i" ((1 << 0)|(((9) << 8))), "i" (= sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on)= , 0); }); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_mmap_assert_write_loc= ked(struct address_space *mapping)=0D {=0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held_type(&(&map= ping->i_mmap_rwsem)->dep_map, (0)))); if (__builtin_expect(!!(__ret_warn_on= ), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/linux/fs.h"), "i" (493), "i" ((1 << 0)|(((9) << 8))), "i= " (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_= on), 0); }); } while (0);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mapping_mapped(struct ad= dress_space *mapping)=0D {=0D return !(({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_200(void) ; if (!((sizeof((&mapping->i_mmap.rb_root)->rb_node) =3D=3D= sizeof(char) || sizeof((&mapping->i_mmap.rb_root)->rb_node) =3D=3D sizeof(= short) || sizeof((&mapping->i_mmap.rb_root)->rb_node) =3D=3D sizeof(int) ||= sizeof((&mapping->i_mmap.rb_root)->rb_node) =3D=3D sizeof(long)) || sizeof= ((&mapping->i_mmap.rb_root)->rb_node) =3D=3D sizeof(long long))) __compilet= ime_assert_200(); } while (0); (*(const volatile typeof( _Generic(((&mappin= g->i_mmap.rb_root)->rb_node), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: ((&mapping->i_mmap.rb_root)->rb_node))) *)&((&mapping->i_mmap.rb_r= oot)->rb_node)); }) =3D=3D ((void *)0));=0D }=0D # 513 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mapping_writably_mapped(= struct address_space *mapping)=0D {=0D return atomic_read(&mapping->i_mmap_writable) > 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mapping_map_writable(str= uct address_space *mapping)=0D {=0D return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?=0D 0 : -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mapping_unmap_writable(= struct address_space *mapping)=0D {=0D atomic_dec(&mapping->i_mmap_writable);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mapping_deny_writable(st= ruct address_space *mapping)=0D {=0D return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?=0D 0 : -16;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mapping_allow_writable(= struct address_space *mapping)=0D {=0D atomic_inc(&mapping->i_mmap_writable);=0D }=0D # 551 "./include/linux/fs.h"=0D struct posix_acl;=0D # 560 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct posix_acl *=0D uncached_acl_sentinel(struct task_struct *task)=0D {=0D return (void *)task + 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D is_uncached_acl(struct posix_acl *acl)=0D {=0D return (long)acl & 1;=0D }=0D =0D =0D =0D =0D =0D =0D =0D struct fsnotify_mark_connector;=0D =0D =0D =0D =0D =0D =0D struct inode {=0D umode_t i_mode;=0D unsigned short i_opflags;=0D kuid_t i_uid;=0D kgid_t i_gid;=0D unsigned int i_flags;=0D =0D =0D struct posix_acl *i_acl;=0D struct posix_acl *i_default_acl;=0D =0D =0D const struct inode_operations *i_op;=0D struct super_block *i_sb;=0D struct address_space *i_mapping;=0D =0D =0D =0D =0D =0D =0D unsigned long i_ino;=0D =0D =0D =0D =0D =0D =0D =0D union {=0D const unsigned int i_nlink;=0D unsigned int __i_nlink;=0D };=0D dev_t i_rdev;=0D loff_t i_size;=0D struct timespec64 i_atime;=0D struct timespec64 i_mtime;=0D struct timespec64 i_ctime;=0D spinlock_t i_lock;=0D unsigned short i_bytes;=0D u8 i_blkbits;=0D u8 i_write_hint;=0D blkcnt_t i_blocks;=0D =0D =0D =0D =0D =0D =0D unsigned long i_state;=0D struct rw_semaphore i_rwsem;=0D =0D unsigned long dirtied_when;=0D unsigned long dirtied_time_when;=0D =0D struct hlist_node i_hash;=0D struct list_head i_io_list;=0D # 650 "./include/linux/fs.h"=0D struct list_head i_lru;=0D struct list_head i_sb_list;=0D struct list_head i_wb_list;=0D union {=0D struct hlist_head i_dentry;=0D struct callback_head i_rcu;=0D };=0D atomic64_t i_version;=0D atomic64_t i_sequence;=0D atomic_t i_count;=0D atomic_t i_dio_count;=0D atomic_t i_writecount;=0D =0D atomic_t i_readcount;=0D =0D union {=0D const struct file_operations *i_fop;=0D void (*free_inode)(struct inode *);=0D };=0D struct file_lock_context *i_flctx;=0D struct address_space i_data;=0D struct list_head i_devices;=0D union {=0D struct pipe_inode_info *i_pipe;=0D struct cdev *i_cdev;=0D char *i_link;=0D unsigned i_dir_seq;=0D };=0D =0D __u32 i_generation;=0D =0D =0D __u32 i_fsnotify_mask;=0D struct fsnotify_mark_connector *i_fsnotify_marks;=0D # 694 "./include/linux/fs.h"=0D void *i_private;=0D } ;=0D =0D struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *ino= de);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int i_blocksize(con= st struct inode *node)=0D {=0D return (1 << node->i_blkbits);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inode_unhashed(struct in= ode *inode)=0D {=0D return hlist_unhashed(&inode->i_hash);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_fake_hash(struct = inode *inode)=0D {=0D hlist_add_fake(&inode->i_hash);=0D }=0D # 736 "./include/linux/fs.h"=0D enum inode_i_mutex_lock_class=0D {=0D I_MUTEX_NORMAL,=0D I_MUTEX_PARENT,=0D I_MUTEX_CHILD,=0D I_MUTEX_XATTR,=0D I_MUTEX_NONDIR2,=0D I_MUTEX_PARENT2,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_lock(struct inode= *inode)=0D {=0D down_write(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_unlock(struct ino= de *inode)=0D {=0D up_write(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_lock_shared(struc= t inode *inode)=0D {=0D down_read(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_unlock_shared(str= uct inode *inode)=0D {=0D up_read(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inode_trylock(struct ino= de *inode)=0D {=0D return down_write_trylock(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inode_trylock_shared(str= uct inode *inode)=0D {=0D return down_read_trylock(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inode_is_locked(struct i= node *inode)=0D {=0D return rwsem_is_locked(&inode->i_rwsem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_lock_nested(struc= t inode *inode, unsigned subclass)=0D {=0D down_write_nested(&inode->i_rwsem, subclass);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_lock_shared_neste= d(struct inode *inode, unsigned subclass)=0D {=0D down_read_nested(&inode->i_rwsem, subclass);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void filemap_invalidate_lock= (struct address_space *mapping)=0D {=0D down_write(&mapping->invalidate_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void filemap_invalidate_unlo= ck(struct address_space *mapping)=0D {=0D up_write(&mapping->invalidate_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void filemap_invalidate_lock= _shared(struct address_space *mapping)=0D {=0D down_read(&mapping->invalidate_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int filemap_invalidate_trylo= ck_shared(=0D struct address_space *mapping)=0D {=0D return down_read_trylock(&mapping->invalidate_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void filemap_invalidate_unlo= ck_shared(=0D struct address_space *mapping)=0D {=0D up_read(&mapping->invalidate_lock);=0D }=0D =0D void lock_two_nondirectories(struct inode *, struct inode*);=0D void unlock_two_nondirectories(struct inode *, struct inode*);=0D =0D void filemap_invalidate_lock_two(struct address_space *mapping1,=0D struct address_space *mapping2);=0D void filemap_invalidate_unlock_two(struct address_space *mapping1,=0D struct address_space *mapping2);=0D # 837 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) loff_t i_size_read(const str= uct inode *inode)=0D {=0D # 856 "./include/linux/fs.h"=0D return inode->i_size;=0D =0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_size_write(struct ino= de *inode, loff_t i_size)=0D {=0D # 878 "./include/linux/fs.h"=0D inode->i_size =3D i_size;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned iminor(const struct= inode *inode)=0D {=0D return ((unsigned int) ((inode->i_rdev) & ((1U << 20) - 1)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned imajor(const struct= inode *inode)=0D {=0D return ((unsigned int) ((inode->i_rdev) >> 20));=0D }=0D =0D struct fown_struct {=0D rwlock_t lock;=0D struct pid *pid;=0D enum pid_type pid_type;=0D kuid_t uid, euid;=0D int signum;=0D };=0D # 914 "./include/linux/fs.h"=0D struct file_ra_state {=0D unsigned long start;=0D unsigned int size;=0D unsigned int async_size;=0D unsigned int ra_pages;=0D unsigned int mmap_miss;=0D loff_t prev_pos;=0D };=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ra_has_index(struct file= _ra_state *ra, unsigned long index)=0D {=0D return (index >=3D ra->start &&=0D index < ra->start + ra->size);=0D }=0D =0D struct file {=0D union {=0D struct llist_node fu_llist;=0D struct callback_head fu_rcuhead;=0D } f_u;=0D struct path f_path;=0D struct inode *f_inode;=0D const struct file_operations *f_op;=0D =0D =0D =0D =0D =0D spinlock_t f_lock;=0D atomic_long_t f_count;=0D unsigned int f_flags;=0D fmode_t f_mode;=0D struct mutex f_pos_lock;=0D loff_t f_pos;=0D struct fown_struct f_owner;=0D const struct cred *f_cred;=0D struct file_ra_state f_ra;=0D =0D u64 f_version;=0D =0D =0D =0D =0D void *private_data;=0D =0D =0D =0D struct hlist_head *f_ep;=0D =0D struct address_space *f_mapping;=0D errseq_t f_wb_err;=0D errseq_t f_sb_err;=0D }=0D __attribute__((aligned(4)));=0D =0D struct file_handle {=0D __u32 handle_bytes;=0D int handle_type;=0D =0D unsigned char f_handle[];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct file *get_file(struct= file *f)=0D {=0D atomic_long_inc(&f->f_count);=0D return f;=0D }=0D # 1022 "./include/linux/fs.h"=0D typedef void *fl_owner_t;=0D =0D struct file_lock;=0D =0D struct file_lock_operations {=0D void (*fl_copy_lock)(struct file_lock *, struct file_lock *);=0D void (*fl_release_private)(struct file_lock *);=0D };=0D =0D struct lock_manager_operations {=0D fl_owner_t (*lm_get_owner)(fl_owner_t);=0D void (*lm_put_owner)(fl_owner_t);=0D void (*lm_notify)(struct file_lock *);=0D int (*lm_grant)(struct file_lock *, int);=0D bool (*lm_break)(struct file_lock *);=0D int (*lm_change)(struct file_lock *, int, struct list_head *);=0D void (*lm_setup)(struct file_lock *, void **);=0D bool (*lm_breaker_owns_lease)(struct file_lock *);=0D };=0D =0D struct lock_manager {=0D struct list_head list;=0D =0D =0D =0D =0D bool block_opens;=0D };=0D =0D struct net;=0D void locks_start_grace(struct net *, struct lock_manager *);=0D void locks_end_grace(struct lock_manager *);=0D bool locks_in_grace(struct net *);=0D bool opens_in_grace(struct net *);=0D =0D =0D =0D # 1 "./include/linux/nfs_fs_i.h" 1=0D =0D =0D =0D =0D struct nlm_lockowner;=0D =0D =0D =0D =0D struct nfs_lock_info {=0D u32 state;=0D struct nlm_lockowner *owner;=0D struct list_head list;=0D };=0D =0D struct nfs4_lock_state;=0D struct nfs4_lock_info {=0D struct nfs4_lock_state *owner;=0D };=0D # 1059 "./include/linux/fs.h" 2=0D # 1077 "./include/linux/fs.h"=0D struct file_lock {=0D struct file_lock *fl_blocker;=0D struct list_head fl_list;=0D struct hlist_node fl_link;=0D struct list_head fl_blocked_requests;=0D =0D =0D struct list_head fl_blocked_member;=0D =0D =0D fl_owner_t fl_owner;=0D unsigned int fl_flags;=0D unsigned char fl_type;=0D unsigned int fl_pid;=0D int fl_link_cpu;=0D wait_queue_head_t fl_wait;=0D struct file *fl_file;=0D loff_t fl_start;=0D loff_t fl_end;=0D =0D struct fasync_struct * fl_fasync;=0D =0D unsigned long fl_break_time;=0D unsigned long fl_downgrade_time;=0D =0D const struct file_lock_operations *fl_ops;=0D const struct lock_manager_operations *fl_lmops;=0D union {=0D struct nfs_lock_info nfs_fl;=0D struct nfs4_lock_info nfs4_fl;=0D struct {=0D struct list_head link;=0D int state;=0D unsigned int debug_id;=0D } afs;=0D } fl_u;=0D } ;=0D =0D struct file_lock_context {=0D spinlock_t flc_lock;=0D struct list_head flc_flock;=0D struct list_head flc_posix;=0D struct list_head flc_lease;=0D };=0D # 1129 "./include/linux/fs.h"=0D extern void send_sigio(struct fown_struct *fown, int fd, int band);=0D =0D =0D =0D =0D extern int fcntl_getlk(struct file *, unsigned int, struct flock *);=0D extern int fcntl_setlk(unsigned int, struct file *, unsigned int,=0D struct flock *);=0D =0D =0D =0D =0D =0D =0D =0D extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);=0D extern int fcntl_getlease(struct file *filp);=0D =0D =0D void locks_free_lock_context(struct inode *inode);=0D void locks_free_lock(struct file_lock *fl);=0D extern void locks_init_lock(struct file_lock *);=0D extern struct file_lock * locks_alloc_lock(void);=0D extern void locks_copy_lock(struct file_lock *, struct file_lock *);=0D extern void locks_copy_conflock(struct file_lock *, struct file_lock *);=0D extern void locks_remove_posix(struct file *, fl_owner_t);=0D extern void locks_remove_file(struct file *);=0D extern void locks_release_private(struct file_lock *);=0D extern void posix_test_lock(struct file *, struct file_lock *);=0D extern int posix_lock_file(struct file *, struct file_lock *, struct file_l= ock *);=0D extern int locks_delete_block(struct file_lock *);=0D extern int vfs_test_lock(struct file *, struct file_lock *);=0D extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, s= truct file_lock *);=0D extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);=0D extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)= ;=0D extern int __break_lease(struct inode *inode, unsigned int flags, unsigned = int type);=0D extern void lease_get_mtime(struct inode *, struct timespec64 *time);=0D extern int generic_setlease(struct file *, long, struct file_lock **, void = **priv);=0D extern int vfs_setlease(struct file *, long, struct file_lock **, void **);= =0D extern int lease_modify(struct file_lock *, int, struct list_head *);=0D =0D struct notifier_block;=0D extern int lease_register_notifier(struct notifier_block *);=0D extern void lease_unregister_notifier(struct notifier_block *);=0D =0D struct files_struct;=0D extern void show_fd_locks(struct seq_file *f,=0D struct file *filp, struct files_struct *files);=0D # 1314 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *file_inode(con= st struct file *f)=0D {=0D return f->f_inode;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *file_dentry(c= onst struct file *file)=0D {=0D return d_real(file->f_path.dentry, file_inode(file));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int locks_lock_file_wait(str= uct file *filp, struct file_lock *fl)=0D {=0D return locks_lock_inode_wait(file_inode(filp), fl);=0D }=0D =0D struct fasync_struct {=0D rwlock_t fa_lock;=0D int magic;=0D int fa_fd;=0D struct fasync_struct *fa_next;=0D struct file *fa_file;=0D struct callback_head fa_rcu;=0D };=0D =0D =0D =0D =0D extern int fasync_helper(int, struct file *, int, struct fasync_struct **);= =0D extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct= fasync_struct **, struct fasync_struct *);=0D extern int fasync_remove_entry(struct file *, struct fasync_struct **);=0D extern struct fasync_struct *fasync_alloc(void);=0D extern void fasync_free(struct fasync_struct *);=0D =0D =0D extern void kill_fasync(struct fasync_struct **, int, int);=0D =0D extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int = force);=0D extern int f_setown(struct file *filp, unsigned long arg, int force);=0D extern void f_delown(struct file *filp);=0D extern pid_t f_getown(struct file *filp);=0D extern int send_sigurg(struct fown_struct *fown);=0D # 1416 "./include/linux/fs.h"=0D enum {=0D SB_UNFROZEN =3D 0,=0D SB_FREEZE_WRITE =3D 1,=0D SB_FREEZE_PAGEFAULT =3D 2,=0D SB_FREEZE_FS =3D 3,=0D =0D SB_FREEZE_COMPLETE =3D 4,=0D };=0D =0D =0D =0D struct sb_writers {=0D int frozen;=0D wait_queue_head_t wait_unfrozen;=0D struct percpu_rw_semaphore rw_sem[(SB_FREEZE_COMPLETE - 1)];=0D };=0D =0D struct super_block {=0D struct list_head s_list;=0D dev_t s_dev;=0D unsigned char s_blocksize_bits;=0D unsigned long s_blocksize;=0D loff_t s_maxbytes;=0D struct file_system_type *s_type;=0D const struct super_operations *s_op;=0D const struct dquot_operations *dq_op;=0D const struct quotactl_ops *s_qcop;=0D const struct export_operations *s_export_op;=0D unsigned long s_flags;=0D unsigned long s_iflags;=0D unsigned long s_magic;=0D struct dentry *s_root;=0D struct rw_semaphore s_umount;=0D int s_count;=0D atomic_t s_active;=0D =0D =0D =0D const struct xattr_handler **s_xattr;=0D # 1466 "./include/linux/fs.h"=0D struct hlist_bl_head s_roots;=0D struct list_head s_mounts;=0D struct block_device *s_bdev;=0D struct backing_dev_info *s_bdi;=0D struct mtd_info *s_mtd;=0D struct hlist_node s_instances;=0D unsigned int s_quota_types;=0D struct quota_info s_dquot;=0D =0D struct sb_writers s_writers;=0D =0D =0D =0D =0D =0D =0D void *s_fs_info;=0D =0D =0D u32 s_time_gran;=0D =0D time64_t s_time_min;=0D time64_t s_time_max;=0D =0D __u32 s_fsnotify_mask;=0D struct fsnotify_mark_connector *s_fsnotify_marks;=0D =0D =0D char s_id[32];=0D uuid_t s_uuid;=0D =0D unsigned int s_max_links;=0D fmode_t s_mode;=0D =0D =0D =0D =0D =0D struct mutex s_vfs_rename_mutex;=0D =0D =0D =0D =0D =0D const char *s_subtype;=0D =0D const struct dentry_operations *s_d_op;=0D =0D struct shrinker s_shrink;=0D =0D =0D atomic_long_t s_remove_count;=0D =0D =0D =0D =0D =0D atomic_long_t s_fsnotify_connectors;=0D =0D =0D int s_readonly_remount;=0D =0D =0D errseq_t s_wb_err;=0D =0D =0D struct workqueue_struct *s_dio_done_wq;=0D struct hlist_head s_pins;=0D =0D =0D =0D =0D =0D =0D struct user_namespace *s_user_ns;=0D =0D =0D =0D =0D =0D =0D struct list_lru s_dentry_lru;=0D struct list_lru s_inode_lru;=0D struct callback_head rcu;=0D struct work_struct destroy_work;=0D =0D struct mutex s_sync_lock;=0D =0D =0D =0D =0D int s_stack_depth;=0D =0D =0D spinlock_t s_inode_list_lock __attribute__((__aligned__((1 << 6))));=0D struct list_head s_inodes;=0D =0D spinlock_t s_inode_wblist_lock;=0D struct list_head s_inodes_wb;=0D } ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *i_use= r_ns(const struct inode *inode)=0D {=0D return inode->i_sb->s_user_ns;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) uid_t i_uid_read(const struc= t inode *inode)=0D {=0D return from_kuid(i_user_ns(inode), inode->i_uid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gid_t i_gid_read(const struc= t inode *inode)=0D {=0D return from_kgid(i_user_ns(inode), inode->i_gid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_uid_write(struct inod= e *inode, uid_t uid)=0D {=0D inode->i_uid =3D make_kuid(i_user_ns(inode), uid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_gid_write(struct inod= e *inode, gid_t gid)=0D {=0D inode->i_gid =3D make_kgid(i_user_ns(inode), gid);=0D }=0D # 1605 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t i_uid_into_mnt(struct= user_namespace *mnt_userns,=0D const struct inode *inode)=0D {=0D return mapped_kuid_fs(mnt_userns, i_user_ns(inode), inode->i_uid);=0D }=0D # 1619 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kgid_t i_gid_into_mnt(struct= user_namespace *mnt_userns,=0D const struct inode *inode)=0D {=0D return mapped_kgid_fs(mnt_userns, i_user_ns(inode), inode->i_gid);=0D }=0D # 1633 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_fsuid_set(struct = inode *inode,=0D struct user_namespace *mnt_userns)=0D {=0D inode->i_uid =3D mapped_fsuid(mnt_userns, i_user_ns(inode));=0D }=0D # 1647 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_fsgid_set(struct = inode *inode,=0D struct user_namespace *mnt_userns)=0D {=0D inode->i_gid =3D mapped_fsgid(mnt_userns, i_user_ns(inode));=0D }=0D # 1664 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fsuidgid_has_mapping(st= ruct super_block *sb,=0D struct user_namespace *mnt_userns)=0D {=0D struct user_namespace *fs_userns =3D sb->s_user_ns;=0D kuid_t kuid;=0D kgid_t kgid;=0D =0D kuid =3D mapped_fsuid(mnt_userns, fs_userns);=0D if (!uid_valid(kuid))=0D return false;=0D kgid =3D mapped_fsgid(mnt_userns, fs_userns);=0D if (!gid_valid(kgid))=0D return false;=0D return kuid_has_mapping(fs_userns, kuid) &&=0D kgid_has_mapping(fs_userns, kgid);=0D }=0D =0D extern struct timespec64 current_time(struct inode *inode);=0D # 1691 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sb_end_write(struct s= uper_block *sb, int level)=0D {=0D percpu_up_read(sb->s_writers.rw_sem + level-1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sb_start_write(struct= super_block *sb, int level)=0D {=0D percpu_down_read(sb->s_writers.rw_sem + level - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __sb_start_write_tryloc= k(struct super_block *sb, int level)=0D {=0D return percpu_down_read_trylock(sb->s_writers.rw_sem + level - 1);=0D }=0D # 1718 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_end_write(struct sup= er_block *sb)=0D {=0D __sb_end_write(sb, SB_FREEZE_WRITE);=0D }=0D # 1730 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_end_pagefault(struct= super_block *sb)=0D {=0D __sb_end_write(sb, SB_FREEZE_PAGEFAULT);=0D }=0D # 1742 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_end_intwrite(struct = super_block *sb)=0D {=0D __sb_end_write(sb, SB_FREEZE_FS);=0D }=0D # 1766 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_start_write(struct s= uper_block *sb)=0D {=0D __sb_start_write(sb, SB_FREEZE_WRITE);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sb_start_write_trylock(= struct super_block *sb)=0D {=0D return __sb_start_write_trylock(sb, SB_FREEZE_WRITE);=0D }=0D # 1795 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_start_pagefault(stru= ct super_block *sb)=0D {=0D __sb_start_write(sb, SB_FREEZE_PAGEFAULT);=0D }=0D # 1813 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sb_start_intwrite(struc= t super_block *sb)=0D {=0D __sb_start_write(sb, SB_FREEZE_FS);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sb_start_intwrite_trylo= ck(struct super_block *sb)=0D {=0D return __sb_start_write_trylock(sb, SB_FREEZE_FS);=0D }=0D =0D bool inode_owner_or_capable(struct user_namespace *mnt_userns,=0D const struct inode *inode);=0D =0D =0D =0D =0D int vfs_create(struct user_namespace *, struct inode *,=0D struct dentry *, umode_t, bool);=0D int vfs_mkdir(struct user_namespace *, struct inode *,=0D struct dentry *, umode_t);=0D int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,=0D umode_t, dev_t);=0D int vfs_symlink(struct user_namespace *, struct inode *,=0D struct dentry *, const char *);=0D int vfs_link(struct dentry *, struct user_namespace *, struct inode *,=0D struct dentry *, struct inode **);=0D int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);=0D int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,=0D struct inode **);=0D # 1854 "./include/linux/fs.h"=0D struct renamedata {=0D struct user_namespace *old_mnt_userns;=0D struct inode *old_dir;=0D struct dentry *old_dentry;=0D struct user_namespace *new_mnt_userns;=0D struct inode *new_dir;=0D struct dentry *new_dentry;=0D struct inode **delegated_inode;=0D unsigned int flags;=0D } ;=0D =0D int vfs_rename(struct renamedata *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vfs_whiteout(struct user= _namespace *mnt_userns,=0D struct inode *dir, struct dentry *dentry)=0D {=0D return vfs_mknod(mnt_userns, dir, dentry, 0020000 | 0,=0D 0);=0D }=0D =0D struct dentry *vfs_tmpfile(struct user_namespace *mnt_userns,=0D struct dentry *dentry, umode_t mode, int open_flag);=0D =0D int vfs_mkobj(struct dentry *, umode_t,=0D int (*f)(struct dentry *, umode_t, void *),=0D void *);=0D =0D int vfs_fchown(struct file *file, uid_t user, gid_t group);=0D int vfs_fchmod(struct file *file, umode_t mode);=0D int vfs_utimes(const struct path *path, struct timespec64 *times);=0D =0D extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long ar= g);=0D # 1897 "./include/linux/fs.h"=0D void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inod= e,=0D const struct inode *dir, umode_t mode);=0D extern bool may_open_dev(const struct path *path);=0D =0D =0D =0D =0D =0D =0D =0D struct dir_context;=0D typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u= 64,=0D unsigned);=0D =0D struct dir_context {=0D filldir_t actor;=0D loff_t pos;=0D };=0D # 1955 "./include/linux/fs.h"=0D struct iov_iter;=0D =0D struct file_operations {=0D struct module *owner;=0D loff_t (*llseek) (struct file *, loff_t, int);=0D ssize_t (*read) (struct file *, char *, size_t, loff_t *);=0D ssize_t (*write) (struct file *, const char *, size_t, loff_t *);=0D ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);=0D ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);=0D int (*iopoll)(struct kiocb *kiocb, struct io_comp_batch *,=0D unsigned int flags);=0D int (*iterate) (struct file *, struct dir_context *);=0D int (*iterate_shared) (struct file *, struct dir_context *);=0D __poll_t (*poll) (struct file *, struct poll_table_struct *);=0D long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);=0D long (*compat_ioctl) (struct file *, unsigned int, unsigned long);=0D int (*mmap) (struct file *, struct vm_area_struct *);=0D unsigned long mmap_supported_flags;=0D int (*open) (struct inode *, struct file *);=0D int (*flush) (struct file *, fl_owner_t id);=0D int (*release) (struct inode *, struct file *);=0D int (*fsync) (struct file *, loff_t, loff_t, int datasync);=0D int (*fasync) (int, struct file *, int);=0D int (*lock) (struct file *, int, struct file_lock *);=0D ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, = int);=0D unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned = long, unsigned long, unsigned long);=0D int (*check_flags)(int);=0D int (*flock) (struct file *, int, struct file_lock *);=0D ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *,= size_t, unsigned int);=0D ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, = size_t, unsigned int);=0D int (*setlease)(struct file *, long, struct file_lock **, void **);=0D long (*fallocate)(struct file *file, int mode, loff_t offset,=0D loff_t len);=0D void (*show_fdinfo)(struct seq_file *m, struct file *f);=0D =0D =0D =0D ssize_t (*copy_file_range)(struct file *, loff_t, struct file *,=0D loff_t, size_t, unsigned int);=0D loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in,=0D struct file *file_out, loff_t pos_out,=0D loff_t len, unsigned int remap_flags);=0D int (*fadvise)(struct file *, loff_t, loff_t, int);=0D } ;=0D =0D struct inode_operations {=0D struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);= =0D const char * (*get_link) (struct dentry *, struct inode *, struct delayed_= call *);=0D int (*permission) (struct user_namespace *, struct inode *, int);=0D struct posix_acl * (*get_acl)(struct inode *, int, bool);=0D =0D int (*readlink) (struct dentry *, char *,int);=0D =0D int (*create) (struct user_namespace *, struct inode *,struct dentry *,=0D umode_t, bool);=0D int (*link) (struct dentry *,struct inode *,struct dentry *);=0D int (*unlink) (struct inode *,struct dentry *);=0D int (*symlink) (struct user_namespace *, struct inode *,struct dentry *,=0D const char *);=0D int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *,=0D umode_t);=0D int (*rmdir) (struct inode *,struct dentry *);=0D int (*mknod) (struct user_namespace *, struct inode *,struct dentry *,=0D umode_t,dev_t);=0D int (*rename) (struct user_namespace *, struct inode *, struct dentry *,=0D struct inode *, struct dentry *, unsigned int);=0D int (*setattr) (struct user_namespace *, struct dentry *,=0D struct iattr *);=0D int (*getattr) (struct user_namespace *, const struct path *,=0D struct kstat *, u32, unsigned int);=0D ssize_t (*listxattr) (struct dentry *, char *, size_t);=0D int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,=0D u64 len);=0D int (*update_time)(struct inode *, struct timespec64 *, int);=0D int (*atomic_open)(struct inode *, struct dentry *,=0D struct file *, unsigned open_flag,=0D umode_t create_mode);=0D int (*tmpfile) (struct user_namespace *, struct inode *,=0D struct dentry *, umode_t);=0D int (*set_acl)(struct user_namespace *, struct inode *,=0D struct posix_acl *, int);=0D int (*fileattr_set)(struct user_namespace *mnt_userns,=0D struct dentry *dentry, struct fileattr *fa);=0D int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);=0D } __attribute__((__aligned__((1 << 6))));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t call_read_iter(struc= t file *file, struct kiocb *kio,=0D struct iov_iter *iter)=0D {=0D return file->f_op->read_iter(kio, iter);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t call_write_iter(stru= ct file *file, struct kiocb *kio,=0D struct iov_iter *iter)=0D {=0D return file->f_op->write_iter(kio, iter);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int call_mmap(struct file *f= ile, struct vm_area_struct *vma)=0D {=0D return file->f_op->mmap(file, vma);=0D }=0D =0D extern ssize_t vfs_read(struct file *, char *, size_t, loff_t *);=0D extern ssize_t vfs_write(struct file *, const char *, size_t, loff_t *);=0D extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,=0D loff_t, size_t, unsigned int);=0D extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in,= =0D struct file *file_out, loff_t pos_out,=0D size_t len, unsigned int flags);=0D extern int generic_remap_file_range_prep(struct file *file_in, loff_t pos_i= n,=0D struct file *file_out, loff_t pos_out,=0D loff_t *count,=0D unsigned int remap_flags);=0D extern loff_t do_clone_file_range(struct file *file_in, loff_t pos_in,=0D struct file *file_out, loff_t pos_out,=0D loff_t len, unsigned int remap_flags);=0D extern loff_t vfs_clone_file_range(struct file *file_in, loff_t pos_in,=0D struct file *file_out, loff_t pos_out,=0D loff_t len, unsigned int remap_flags);=0D extern int vfs_dedupe_file_range(struct file *file,=0D struct file_dedupe_range *same);=0D extern loff_t vfs_dedupe_file_range_one(struct file *src_file, loff_t src_p= os,=0D struct file *dst_file, loff_t dst_pos,=0D loff_t len, unsigned int remap_flags);=0D =0D =0D struct super_operations {=0D struct inode *(*alloc_inode)(struct super_block *sb);=0D void (*destroy_inode)(struct inode *);=0D void (*free_inode)(struct inode *);=0D =0D void (*dirty_inode) (struct inode *, int flags);=0D int (*write_inode) (struct inode *, struct writeback_control *wbc);=0D int (*drop_inode) (struct inode *);=0D void (*evict_inode) (struct inode *);=0D void (*put_super) (struct super_block *);=0D int (*sync_fs)(struct super_block *sb, int wait);=0D int (*freeze_super) (struct super_block *);=0D int (*freeze_fs) (struct super_block *);=0D int (*thaw_super) (struct super_block *);=0D int (*unfreeze_fs) (struct super_block *);=0D int (*statfs) (struct dentry *, struct kstatfs *);=0D int (*remount_fs) (struct super_block *, int *, char *);=0D void (*umount_begin) (struct super_block *);=0D =0D int (*show_options)(struct seq_file *, struct dentry *);=0D int (*show_devname)(struct seq_file *, struct dentry *);=0D int (*show_path)(struct seq_file *, struct dentry *);=0D int (*show_stats)(struct seq_file *, struct dentry *);=0D =0D =0D =0D =0D =0D long (*nr_cached_objects)(struct super_block *,=0D struct shrink_control *);=0D long (*free_cached_objects)(struct super_block *,=0D struct shrink_control *);=0D };=0D # 2157 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sb_rdonly(const struct = super_block *sb) { return sb->s_flags & 1; }=0D # 2187 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool HAS_UNMAPPED_ID(struct = user_namespace *mnt_userns,=0D struct inode *inode)=0D {=0D return !uid_valid(i_uid_into_mnt(mnt_userns, inode)) ||=0D !gid_valid(i_gid_into_mnt(mnt_userns, inode));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int iocb_flags(struct file *= file);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_sync_kiocb(struct = kiocb *kiocb, struct file *filp)=0D {=0D *kiocb =3D (struct kiocb) {=0D .ki_filp =3D filp,=0D .ki_flags =3D iocb_flags(filp),=0D .ki_ioprio =3D get_current_ioprio(),=0D };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kiocb_clone(struct kioc= b *kiocb, struct kiocb *kiocb_src,=0D struct file *filp)=0D {=0D *kiocb =3D (struct kiocb) {=0D .ki_filp =3D filp,=0D .ki_flags =3D kiocb_src->ki_flags,=0D .ki_ioprio =3D kiocb_src->ki_ioprio,=0D .ki_pos =3D kiocb_src->ki_pos,=0D };=0D }=0D # 2321 "./include/linux/fs.h"=0D extern void __mark_inode_dirty(struct inode *, int);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mark_inode_dirty(struct= inode *inode)=0D {=0D __mark_inode_dirty(inode, (((1 << 0) | (1 << 1)) | (1 << 2)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mark_inode_dirty_sync(s= truct inode *inode)=0D {=0D __mark_inode_dirty(inode, (1 << 0));=0D }=0D # 2341 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inode_is_dirtytime_only= (struct inode *inode)=0D {=0D return (inode->i_state & ((1 << 11) | (1 << 3) |=0D (1 << 5) | (1 << 4))) =3D=3D (1 << 11);=0D }=0D =0D extern void inc_nlink(struct inode *inode);=0D extern void drop_nlink(struct inode *inode);=0D extern void clear_nlink(struct inode *inode);=0D extern void set_nlink(struct inode *inode, unsigned int nlink);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_inc_link_count(st= ruct inode *inode)=0D {=0D inc_nlink(inode);=0D mark_inode_dirty(inode);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_dec_link_count(st= ruct inode *inode)=0D {=0D drop_nlink(inode);=0D mark_inode_dirty(inode);=0D }=0D =0D enum file_time_flags {=0D S_ATIME =3D 1,=0D S_MTIME =3D 2,=0D S_CTIME =3D 4,=0D S_VERSION =3D 8,=0D };=0D =0D extern bool atime_needs_update(const struct path *, struct inode *);=0D extern void touch_atime(const struct path *);=0D int inode_update_time(struct inode *inode, struct timespec64 *time, int fla= gs);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void file_accessed(struct fi= le *file)=0D {=0D if (!(file->f_flags & 01000000))=0D touch_atime(&file->f_path);=0D }=0D =0D extern int file_modified(struct file *file);=0D =0D int sync_inode_metadata(struct inode *inode, int wait);=0D =0D struct file_system_type {=0D const char *name;=0D int fs_flags;=0D =0D =0D =0D =0D =0D =0D =0D int (*init_fs_context)(struct fs_context *);=0D const struct fs_parameter_spec *parameters;=0D struct dentry *(*mount) (struct file_system_type *, int,=0D const char *, void *);=0D void (*kill_sb) (struct super_block *);=0D struct module *owner;=0D struct file_system_type * next;=0D struct hlist_head fs_supers;=0D =0D struct lock_class_key s_lock_key;=0D struct lock_class_key s_umount_key;=0D struct lock_class_key s_vfs_rename_key;=0D struct lock_class_key s_writers_key[(SB_FREEZE_COMPLETE - 1)];=0D =0D struct lock_class_key i_lock_key;=0D struct lock_class_key i_mutex_key;=0D struct lock_class_key invalidate_lock_key;=0D struct lock_class_key i_mutex_dir_key;=0D };=0D =0D =0D =0D extern struct dentry *mount_bdev(struct file_system_type *fs_type,=0D int flags, const char *dev_name, void *data,=0D int (*fill_super)(struct super_block *, void *, int));=0D extern struct dentry *mount_single(struct file_system_type *fs_type,=0D int flags, void *data,=0D int (*fill_super)(struct super_block *, void *, int));=0D extern struct dentry *mount_nodev(struct file_system_type *fs_type,=0D int flags, void *data,=0D int (*fill_super)(struct super_block *, void *, int));=0D extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path)= ;=0D void generic_shutdown_super(struct super_block *sb);=0D void kill_block_super(struct super_block *sb);=0D void kill_anon_super(struct super_block *sb);=0D void kill_litter_super(struct super_block *sb);=0D void deactivate_super(struct super_block *sb);=0D void deactivate_locked_super(struct super_block *sb);=0D int set_anon_super(struct super_block *s, void *data);=0D int set_anon_super_fc(struct super_block *s, struct fs_context *fc);=0D int get_anon_bdev(dev_t *);=0D void free_anon_bdev(dev_t);=0D struct super_block *sget_fc(struct fs_context *fc,=0D int (*test)(struct super_block *, struct fs_context *),=0D int (*set)(struct super_block *, struct fs_context *));=0D struct super_block *sget(struct file_system_type *type,=0D int (*test)(struct super_block *,void *),=0D int (*set)(struct super_block *,void *),=0D int flags, void *data);=0D # 2462 "./include/linux/fs.h"=0D extern int register_filesystem(struct file_system_type *);=0D extern int unregister_filesystem(struct file_system_type *);=0D extern struct vfsmount *kern_mount(struct file_system_type *);=0D extern void kern_unmount(struct vfsmount *mnt);=0D extern int may_umount_tree(struct vfsmount *);=0D extern int may_umount(struct vfsmount *);=0D extern long do_mount(const char *, const char *,=0D const char *, unsigned long, void *);=0D extern struct vfsmount *collect_mounts(const struct path *);=0D extern void drop_collected_mounts(struct vfsmount *);=0D extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,=0D struct vfsmount *);=0D extern int vfs_statfs(const struct path *, struct kstatfs *);=0D extern int user_statfs(const char *, struct kstatfs *);=0D extern int fd_statfs(int, struct kstatfs *);=0D extern int freeze_super(struct super_block *super);=0D extern int thaw_super(struct super_block *super);=0D extern bool our_mnt(struct vfsmount *mnt);=0D extern __attribute__((__format__(printf, 2, 3)))=0D int super_setup_bdi_name(struct super_block *sb, char *fmt, ...);=0D extern int super_setup_bdi(struct super_block *sb);=0D =0D extern int current_umask(void);=0D =0D extern void ihold(struct inode * inode);=0D extern void iput(struct inode *);=0D extern int generic_update_time(struct inode *, struct timespec64 *, int);=0D =0D =0D extern struct kobject *fs_kobj;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int break_lease(struct inode= *inode, unsigned int mode)=0D {=0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))=0D return __break_lease(inode, mode, 32);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int break_deleg(struct inode= *inode, unsigned int mode)=0D {=0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))=0D return __break_lease(inode, mode, 4);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int try_break_deleg(struct i= node *inode, struct inode **delegated_inode)=0D {=0D int ret;=0D =0D ret =3D break_deleg(inode, 00000001|00004000);=0D if (ret =3D=3D -11 && delegated_inode) {=0D *delegated_inode =3D inode;=0D ihold(inode);=0D }=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int break_deleg_wait(struct = inode **delegated_inode)=0D {=0D int ret;=0D =0D ret =3D break_deleg(*delegated_inode, 00000001);=0D iput(*delegated_inode);=0D *delegated_inode =3D ((void *)0);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int break_layout(struct inod= e *inode, bool wait)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))=0D return __break_lease(inode,=0D wait ? 00000001 : 00000001 | 00004000,=0D 2048);=0D return 0;=0D }=0D # 2586 "./include/linux/fs.h"=0D struct audit_names;=0D struct filename {=0D const char *name;=0D const char *uptr;=0D int refcnt;=0D struct audit_names *aname;=0D const char iname[];=0D };=0D _Static_assert(__builtin_offsetof(struct filename, iname) % sizeof(long) = =3D=3D 0, "offsetof(struct filename, iname) % sizeof(long) =3D=3D 0");=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *file_= mnt_user_ns(struct file *file)=0D {=0D return mnt_user_ns(file->f_path.mnt);=0D }=0D # 2610 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_idmapped_mnt(const s= truct vfsmount *mnt)=0D {=0D return mnt_user_ns(mnt) !=3D mnt->mnt_sb->s_user_ns;=0D }=0D =0D extern long vfs_truncate(const struct path *, loff_t);=0D int do_truncate(struct user_namespace *, struct dentry *, loff_t start,=0D unsigned int time_attrs, struct file *filp);=0D extern int vfs_fallocate(struct file *file, int mode, loff_t offset,=0D loff_t len);=0D extern long do_sys_open(int dfd, const char *filename, int flags,=0D umode_t mode);=0D extern struct file *file_open_name(struct filename *, int, umode_t);=0D extern struct file *filp_open(const char *, int, umode_t);=0D extern struct file *file_open_root(const struct path *,=0D const char *, int, umode_t);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct file *file_open_root_= mnt(struct vfsmount *mnt,=0D const char *name, int flags, umode_t mode)=0D {=0D return file_open_root(&(struct path){.mnt =3D mnt, .dentry =3D mnt->mnt_ro= ot},=0D name, flags, mode);=0D }=0D extern struct file * dentry_open(const struct path *, int, const struct cre= d *);=0D extern struct file * open_with_fake_path(const struct path *, int,=0D struct inode*, const struct cred *);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct file *file_clone_open= (struct file *file)=0D {=0D return dentry_open(&file->f_path, file->f_flags, file->f_cred);=0D }=0D extern int filp_close(struct file *, fl_owner_t id);=0D =0D extern struct filename *getname_flags(const char *, int, int *);=0D extern struct filename *getname_uflags(const char *, int);=0D extern struct filename *getname(const char *);=0D extern struct filename *getname_kernel(const char *);=0D extern void putname(struct filename *name);=0D =0D extern int finish_open(struct file *file, struct dentry *dentry,=0D int (*open)(struct inode *, struct file *));=0D extern int finish_no_open(struct file *file, struct dentry *dentry);=0D =0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) vfs_caches_init_early(void);= =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) vfs_caches_init(void);=0D =0D extern struct kmem_cache *names_cachep;=0D =0D =0D =0D =0D extern struct super_block *blockdev_superblock;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sb_is_blkdev_sb(struct = super_block *sb)=0D {=0D return 1 && sb =3D=3D blockdev_superblock;=0D }=0D =0D void emergency_thaw_all(void);=0D extern int sync_filesystem(struct super_block *);=0D extern const struct file_operations def_blk_fops;=0D extern const struct file_operations def_chr_fops;=0D # 2679 "./include/linux/fs.h"=0D extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);= =0D extern int register_chrdev_region(dev_t, unsigned, const char *);=0D extern int __register_chrdev(unsigned int major, unsigned int baseminor,=0D unsigned int count, const char *name,=0D const struct file_operations *fops);=0D extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,= =0D unsigned int count, const char *name);=0D extern void unregister_chrdev_region(dev_t, unsigned);=0D extern void chrdev_show(struct seq_file *,off_t);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_chrdev(unsigned= int major, const char *name,=0D const struct file_operations *fops)=0D {=0D return __register_chrdev(major, 0, 256, name, fops);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unregister_chrdev(unsig= ned int major, const char *name)=0D {=0D __unregister_chrdev(major, 0, 256, name);=0D }=0D =0D extern void init_special_inode(struct inode *, umode_t, dev_t);=0D =0D =0D extern void make_bad_inode(struct inode *);=0D extern bool is_bad_inode(struct inode *);=0D =0D extern int __attribute__((__warn_unused_result__)) file_fdatawait_range(str= uct file *file, loff_t lstart,=0D loff_t lend);=0D extern int __attribute__((__warn_unused_result__)) file_check_and_advance_w= b_err(struct file *file);=0D extern int __attribute__((__warn_unused_result__)) file_write_and_wait_rang= e(struct file *file,=0D loff_t start, loff_t end);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int file_write_and_wait(stru= ct file *file)=0D {=0D return file_write_and_wait_range(file, 0, ((long long)(~0ULL >> 1)));=0D }=0D =0D extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,=0D int datasync);=0D extern int vfs_fsync(struct file *file, int datasync);=0D =0D extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes,= =0D unsigned int flags);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t generic_write_sync(s= truct kiocb *iocb, ssize_t count)=0D {=0D if (iocb->ki_flags & ( int) (( __kernel_rwf_t)0x00000002)) {=0D int ret =3D vfs_fsync_range(iocb->ki_filp,=0D iocb->ki_pos - count, iocb->ki_pos - 1,=0D (iocb->ki_flags & ( int) (( __kernel_rwf_t)0x00000004)) ? 0 : 1);=0D if (ret)=0D return ret;=0D }=0D =0D return count;=0D }=0D =0D extern void emergency_sync(void);=0D extern void emergency_remount(void);=0D =0D =0D extern int bmap(struct inode *inode, sector_t *block);=0D =0D =0D =0D =0D =0D =0D =0D int notify_change(struct user_namespace *, struct dentry *,=0D struct iattr *, struct inode **);=0D int inode_permission(struct user_namespace *, struct inode *, int);=0D int generic_permission(struct user_namespace *, struct inode *, int);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int file_permission(struct f= ile *file, int mask)=0D {=0D return inode_permission(file_mnt_user_ns(file),=0D file_inode(file), mask);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int path_permission(const st= ruct path *path, int mask)=0D {=0D return inode_permission(mnt_user_ns(path->mnt),=0D d_inode(path->dentry), mask);=0D }=0D int __check_sticky(struct user_namespace *mnt_userns, struct inode *dir,=0D struct inode *inode);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool execute_ok(struct inode= *inode)=0D {=0D return (inode->i_mode & (00100|00010|00001)) || (((inode->i_mode) & 001700= 00) =3D=3D 0040000);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inode_wrong_type(const = struct inode *inode, umode_t mode)=0D {=0D return (inode->i_mode ^ mode) & 00170000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void file_start_write(struct= file *file)=0D {=0D if (!(((file_inode(file)->i_mode) & 00170000) =3D=3D 0100000))=0D return;=0D sb_start_write(file_inode(file)->i_sb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool file_start_write_tryloc= k(struct file *file)=0D {=0D if (!(((file_inode(file)->i_mode) & 00170000) =3D=3D 0100000))=0D return true;=0D return sb_start_write_trylock(file_inode(file)->i_sb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void file_end_write(struct f= ile *file)=0D {=0D if (!(((file_inode(file)->i_mode) & 00170000) =3D=3D 0100000))=0D return;=0D __sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE);=0D }=0D # 2823 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_write_access(struct = inode *inode)=0D {=0D return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -26;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int deny_write_access(struct= file *file)=0D {=0D struct inode *inode =3D file_inode(file);=0D return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -26;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_write_access(struct= inode * inode)=0D {=0D atomic_dec(&inode->i_writecount);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void allow_write_access(stru= ct file *file)=0D {=0D if (file)=0D atomic_inc(&file_inode(file)->i_writecount);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inode_is_open_for_write= (const struct inode *inode)=0D {=0D return atomic_read(&inode->i_writecount) > 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_readcount_dec(struct = inode *inode)=0D {=0D do { if (__builtin_expect(!!(!atomic_read(&inode->i_readcount)), 0)) do { = do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\= "aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".h= alf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i= " ("include/linux/fs.h"), "i" (2849), "i" (0), "i" (sizeof(struct bug_entry= ))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0);= } while (0);=0D atomic_dec(&inode->i_readcount);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void i_readcount_inc(struct = inode *inode)=0D {=0D atomic_inc(&inode->i_readcount);=0D }=0D # 2866 "./include/linux/fs.h"=0D extern int do_pipe_flags(int *, int);=0D =0D extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);=0D ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *p= os);=0D extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);= =0D extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *= );=0D extern struct file * open_exec(const char *);=0D =0D =0D extern bool is_subdir(struct dentry *, struct dentry *);=0D extern bool path_is_under(const struct path *, const struct path *);=0D =0D extern char *file_path(struct file *, char *, int);=0D =0D =0D =0D =0D extern loff_t default_llseek(struct file *file, loff_t offset, int whence);= =0D =0D extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);=0D =0D extern int inode_init_always(struct super_block *, struct inode *);=0D extern void inode_init_once(struct inode *);=0D extern void address_space_init_once(struct address_space *mapping);=0D extern struct inode * igrab(struct inode *);=0D extern ino_t iunique(struct super_block *, ino_t);=0D extern int inode_needs_sync(struct inode *inode);=0D extern int generic_delete_inode(struct inode *inode);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int generic_drop_inode(struc= t inode *inode)=0D {=0D return !inode->i_nlink || inode_unhashed(inode);=0D }=0D extern void d_mark_dontcache(struct inode *inode);=0D =0D extern struct inode *ilookup5_nowait(struct super_block *sb,=0D unsigned long hashval, int (*test)(struct inode *, void *),=0D void *data);=0D extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval= ,=0D int (*test)(struct inode *, void *), void *data);=0D extern struct inode *ilookup(struct super_block *sb, unsigned long ino);=0D =0D extern struct inode *inode_insert5(struct inode *inode, unsigned long hashv= al,=0D int (*test)(struct inode *, void *),=0D int (*set)(struct inode *, void *),=0D void *data);=0D extern struct inode * iget5_locked(struct super_block *, unsigned long, int= (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void = *);=0D extern struct inode * iget_locked(struct super_block *, unsigned long);=0D extern struct inode *find_inode_nowait(struct super_block *,=0D unsigned long,=0D int (*match)(struct inode *,=0D unsigned long, void *),=0D void *data);=0D extern struct inode *find_inode_rcu(struct super_block *, unsigned long,=0D int (*)(struct inode *, void *), void *);=0D extern struct inode *find_inode_by_ino_rcu(struct super_block *, unsigned l= ong);=0D extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(= struct inode *, void *), void *);=0D extern int insert_inode_locked(struct inode *);=0D =0D extern void lockdep_annotate_inode_mutex_key(struct inode *inode);=0D =0D =0D =0D extern void unlock_new_inode(struct inode *);=0D extern void discard_new_inode(struct inode *);=0D extern unsigned int get_next_ino(void);=0D extern void evict_inodes(struct super_block *sb);=0D void dump_mapping(const struct address_space *);=0D # 2944 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_zero_ino(ino_t ino)= =0D {=0D return (u32)ino =3D=3D 0;=0D }=0D =0D extern void __iget(struct inode * inode);=0D extern void iget_failed(struct inode *);=0D extern void clear_inode(struct inode *);=0D extern void __destroy_inode(struct inode *);=0D extern struct inode *new_inode_pseudo(struct super_block *sb);=0D extern struct inode *new_inode(struct super_block *sb);=0D extern void free_inode_nonrcu(struct inode *inode);=0D extern int should_remove_suid(struct dentry *);=0D extern int file_remove_privs(struct file *);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *=0D alloc_inode_sb(struct super_block *sb, struct kmem_cache *cache, gfp_t gfp)= =0D {=0D return kmem_cache_alloc_lru(cache, &sb->s_inode_lru, gfp);=0D }=0D =0D extern void __insert_inode_hash(struct inode *, unsigned long hashval);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void insert_inode_hash(struc= t inode *inode)=0D {=0D __insert_inode_hash(inode, inode->i_ino);=0D }=0D =0D extern void __remove_inode_hash(struct inode *);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void remove_inode_hash(struc= t inode *inode)=0D {=0D if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash))=0D __remove_inode_hash(inode);=0D }=0D =0D extern void inode_sb_list_add(struct inode *inode);=0D extern void inode_add_lru(struct inode *inode);=0D =0D extern int sb_set_blocksize(struct super_block *, int);=0D extern int sb_min_blocksize(struct super_block *, int);=0D =0D extern int generic_file_mmap(struct file *, struct vm_area_struct *);=0D extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct = *);=0D extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);=0D int generic_write_checks_count(struct kiocb *iocb, loff_t *count);=0D extern int generic_write_check_limits(struct file *file, loff_t pos,=0D loff_t *count);=0D extern int generic_file_rw_checks(struct file *file_in, struct file *file_o= ut);=0D ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *to,=0D ssize_t already_read);=0D extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);=0D extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *)= ;=0D extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);= =0D extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *)= ;=0D ssize_t generic_perform_write(struct kiocb *, struct iov_iter *);=0D =0D ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppo= s,=0D rwf_t flags);=0D ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *pp= os,=0D rwf_t flags);=0D ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,=0D struct iov_iter *iter);=0D ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,=0D struct iov_iter *iter);=0D =0D =0D extern ssize_t generic_file_splice_read(struct file *, loff_t *,=0D struct pipe_inode_info *, size_t, unsigned int);=0D extern ssize_t iter_file_splice_write(struct pipe_inode_info *,=0D struct file *, loff_t *, size_t, unsigned int);=0D extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,=0D struct file *out, loff_t *, size_t len, unsigned int flags);=0D extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *ou= t,=0D loff_t *opos, size_t len, unsigned int flags);=0D =0D =0D extern void=0D file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)= ;=0D extern loff_t noop_llseek(struct file *file, loff_t offset, int whence);=0D extern loff_t no_llseek(struct file *file, loff_t offset, int whence);=0D extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize);= =0D extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whe= nce);=0D extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,=0D int whence, loff_t maxsize, loff_t eof);=0D extern loff_t fixed_size_llseek(struct file *file, loff_t offset,=0D int whence, loff_t size);=0D extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t);= =0D extern loff_t no_seek_end_llseek(struct file *, loff_t, int);=0D int rw_verify_area(int, struct file *, const loff_t *, size_t);=0D extern int generic_file_open(struct inode * inode, struct file * filp);=0D extern int nonseekable_open(struct inode * inode, struct file * filp);=0D extern int stream_open(struct inode * inode, struct file * filp);=0D =0D =0D typedef void (dio_submit_t)(struct bio *bio, struct inode *inode,=0D loff_t file_offset);=0D =0D enum {=0D =0D DIO_LOCKING =3D 0x01,=0D =0D =0D DIO_SKIP_HOLES =3D 0x02,=0D };=0D =0D ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,=0D struct block_device *bdev, struct iov_iter *iter,=0D get_block_t get_block,=0D dio_iodone_t end_io, dio_submit_t submit_io,=0D int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ssize_t blockdev_direct_IO(s= truct kiocb *iocb,=0D struct inode *inode,=0D struct iov_iter *iter,=0D get_block_t get_block)=0D {=0D return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,=0D get_block, ((void *)0), ((void *)0), DIO_LOCKING | DIO_SKIP_HOLES);=0D }=0D =0D =0D void inode_dio_wait(struct inode *inode);=0D # 3077 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_dio_begin(struct = inode *inode)=0D {=0D atomic_inc(&inode->i_dio_count);=0D }=0D # 3089 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_dio_end(struct in= ode *inode)=0D {=0D if (atomic_dec_and_test(&inode->i_dio_count))=0D wake_up_bit(&inode->i_state, 9);=0D }=0D =0D =0D =0D =0D void dio_warn_stale_pagecache(struct file *filp);=0D =0D extern void inode_set_flags(struct inode *inode, unsigned int flags,=0D unsigned int mask);=0D =0D extern const struct file_operations generic_ro_fops;=0D =0D =0D =0D extern int readlink_copy(char *, int, const char *);=0D extern int page_readlink(struct dentry *, char *, int);=0D extern const char *page_get_link(struct dentry *, struct inode *,=0D struct delayed_call *);=0D extern void page_put_link(void *);=0D extern int __page_symlink(struct inode *inode, const char *symname, int len= ,=0D int nofs);=0D extern int page_symlink(struct inode *inode, const char *symname, int len);= =0D extern const struct inode_operations page_symlink_inode_operations;=0D extern void kfree_link(void *);=0D void generic_fillattr(struct user_namespace *, struct inode *, struct kstat= *);=0D void generic_fill_statx_attr(struct inode *inode, struct kstat *stat);=0D extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsi= gned int);=0D extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned i= nt);=0D void __inode_add_bytes(struct inode *inode, loff_t bytes);=0D void inode_add_bytes(struct inode *inode, loff_t bytes);=0D void __inode_sub_bytes(struct inode *inode, loff_t bytes);=0D void inode_sub_bytes(struct inode *inode, loff_t bytes);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) loff_t __inode_get_bytes(str= uct inode *inode)=0D {=0D return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes;=0D }=0D loff_t inode_get_bytes(struct inode *inode);=0D void inode_set_bytes(struct inode *inode, loff_t bytes);=0D const char *simple_get_link(struct dentry *, struct inode *,=0D struct delayed_call *);=0D extern const struct inode_operations simple_symlink_inode_operations;=0D =0D extern int iterate_dir(struct file *, struct dir_context *);=0D =0D int vfs_fstatat(int dfd, const char *filename, struct kstat *stat,=0D int flags);=0D int vfs_fstat(int fd, struct kstat *stat);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vfs_stat(const char *fil= ename, struct kstat *stat)=0D {=0D return vfs_fstatat(-100, filename, stat, 0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vfs_lstat(const char *na= me, struct kstat *stat)=0D {=0D return vfs_fstatat(-100, name, stat, 0x100);=0D }=0D =0D extern const char *vfs_get_link(struct dentry *, struct delayed_call *);=0D extern int vfs_readlink(struct dentry *, char *, int);=0D =0D extern struct file_system_type *get_filesystem(struct file_system_type *fs)= ;=0D extern void put_filesystem(struct file_system_type *fs);=0D extern struct file_system_type *get_fs_type(const char *name);=0D extern struct super_block *get_super(struct block_device *);=0D extern struct super_block *get_active_super(struct block_device *bdev);=0D extern void drop_super(struct super_block *sb);=0D extern void drop_super_exclusive(struct super_block *sb);=0D extern void iterate_supers(void (*)(struct super_block *, void *), void *);= =0D extern void iterate_supers_type(struct file_system_type *,=0D void (*)(struct super_block *, void *), void *);=0D =0D extern int dcache_dir_open(struct inode *, struct file *);=0D extern int dcache_dir_close(struct inode *, struct file *);=0D extern loff_t dcache_dir_lseek(struct file *, loff_t, int);=0D extern int dcache_readdir(struct file *, struct dir_context *);=0D extern int simple_setattr(struct user_namespace *, struct dentry *,=0D struct iattr *);=0D extern int simple_getattr(struct user_namespace *, const struct path *,=0D struct kstat *, u32, unsigned int);=0D extern int simple_statfs(struct dentry *, struct kstatfs *);=0D extern int simple_open(struct inode *inode, struct file *file);=0D extern int simple_link(struct dentry *, struct inode *, struct dentry *);=0D extern int simple_unlink(struct inode *, struct dentry *);=0D extern int simple_rmdir(struct inode *, struct dentry *);=0D extern int simple_rename_exchange(struct inode *old_dir, struct dentry *old= _dentry,=0D struct inode *new_dir, struct dentry *new_dentry);=0D extern int simple_rename(struct user_namespace *, struct inode *,=0D struct dentry *, struct inode *, struct dentry *,=0D unsigned int);=0D extern void simple_recursive_removal(struct dentry *,=0D void (*callback)(struct dentry *));=0D extern int noop_fsync(struct file *, loff_t, loff_t, int);=0D extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter);=0D extern int simple_empty(struct dentry *);=0D extern int simple_write_begin(struct file *file, struct address_space *mapp= ing,=0D loff_t pos, unsigned len, unsigned flags,=0D struct page **pagep, void **fsdata);=0D extern const struct address_space_operations ram_aops;=0D extern int always_delete_dentry(const struct dentry *);=0D extern struct inode *alloc_anon_inode(struct super_block *);=0D extern int simple_nosetlease(struct file *, long, struct file_lock **, void= **);=0D extern const struct dentry_operations simple_dentry_operations;=0D =0D extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsign= ed int flags);=0D extern ssize_t generic_read_dir(struct file *, char *, size_t, loff_t *);=0D extern const struct file_operations simple_dir_operations;=0D extern const struct inode_operations simple_dir_inode_operations;=0D extern void make_empty_dir_inode(struct inode *inode);=0D extern bool is_empty_dir_inode(struct inode *inode);=0D struct tree_descr { const char *name; const struct file_operations *ops; in= t mode; };=0D struct dentry *d_alloc_name(struct dentry *, const char *);=0D extern int simple_fill_super(struct super_block *, unsigned long,=0D const struct tree_descr *);=0D extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount= , int *count);=0D extern void simple_release_fs(struct vfsmount **mount, int *count);=0D =0D extern ssize_t simple_read_from_buffer(void *to, size_t count,=0D loff_t *ppos, const void *from, size_t available);=0D extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *p= pos,=0D const void *from, size_t count);=0D =0D extern int __generic_file_fsync(struct file *, loff_t, loff_t, int);=0D extern int generic_file_fsync(struct file *, loff_t, loff_t, int);=0D =0D extern int generic_check_addressable(unsigned, u64);=0D =0D extern void generic_set_encrypted_ci_d_ops(struct dentry *dentry);=0D =0D =0D extern int buffer_migrate_page(struct address_space *,=0D struct page *, struct page *,=0D enum migrate_mode);=0D extern int buffer_migrate_page_norefs(struct address_space *,=0D struct page *, struct page *,=0D enum migrate_mode);=0D =0D =0D =0D =0D =0D int may_setattr(struct user_namespace *mnt_userns, struct inode *inode,=0D unsigned int ia_valid);=0D int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr = *);=0D extern int inode_newsize_ok(const struct inode *, loff_t offset);=0D void setattr_copy(struct user_namespace *, struct inode *inode,=0D const struct iattr *attr);=0D =0D extern int file_update_time(struct file *file);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_dax(const struct= vm_area_struct *vma)=0D {=0D return vma->vm_file && ((vma->vm_file->f_mapping->host)->i_flags & 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_fsdax(struct vm_= area_struct *vma)=0D {=0D struct inode *inode;=0D =0D if (!0 || !vma->vm_file)=0D return false;=0D if (!vma_is_dax(vma))=0D return false;=0D inode =3D file_inode(vma->vm_file);=0D if ((((inode->i_mode) & 00170000) =3D=3D 0020000))=0D return false;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int iocb_flags(struct file *= file)=0D {=0D int res =3D 0;=0D if (file->f_flags & 00002000)=0D res |=3D ( int) (( __kernel_rwf_t)0x00000010);=0D if (file->f_flags & 00040000)=0D res |=3D (1 << 17);=0D if ((file->f_flags & 00010000) || (((file->f_mapping->host)->i_sb->s_flags= & (16)) || ((file->f_mapping->host)->i_flags & (1 << 0))))=0D res |=3D ( int) (( __kernel_rwf_t)0x00000002);=0D if (file->f_flags & 04000000)=0D res |=3D ( int) (( __kernel_rwf_t)0x00000004);=0D return res;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kiocb_set_rw_flags(struc= t kiocb *ki, rwf_t flags)=0D {=0D int kiocb_flags =3D 0;=0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_201(vo= id) ; if (!(!(( int) ((( __kernel_rwf_t)0x00000001) | (( __kernel_rwf_t)0x0= 0000002) | (( __kernel_rwf_t)0x00000004) | (( __kernel_rwf_t)0x00000008) | = (( __kernel_rwf_t)0x00000010)) & (1 << 16)))) __compiletime_assert_201(); }= while (0);=0D =0D if (!flags)=0D return 0;=0D if (__builtin_expect(!!(flags & ~((( __kernel_rwf_t)0x00000001) | (( __ker= nel_rwf_t)0x00000002) | (( __kernel_rwf_t)0x00000004) | (( __kernel_rwf_t)0= x00000008) | (( __kernel_rwf_t)0x00000010))), 0))=0D return -95;=0D =0D if (flags & (( __kernel_rwf_t)0x00000008)) {=0D if (!(ki->ki_filp->f_mode & (( fmode_t)0x8000000)))=0D return -95;=0D kiocb_flags |=3D (1 << 20);=0D }=0D kiocb_flags |=3D ( int) (flags & ((( __kernel_rwf_t)0x00000001) | (( __ker= nel_rwf_t)0x00000002) | (( __kernel_rwf_t)0x00000004) | (( __kernel_rwf_t)0= x00000008) | (( __kernel_rwf_t)0x00000010)));=0D if (flags & (( __kernel_rwf_t)0x00000004))=0D kiocb_flags |=3D ( int) (( __kernel_rwf_t)0x00000002);=0D =0D ki->ki_flags |=3D kiocb_flags;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ino_t parent_ino(struct dent= ry *dentry)=0D {=0D ino_t res;=0D =0D =0D =0D =0D =0D spin_lock(&dentry->d_lockref.lock);=0D res =3D dentry->d_parent->d_inode->i_ino;=0D spin_unlock(&dentry->d_lockref.lock);=0D return res;=0D }=0D =0D =0D =0D =0D =0D =0D =0D struct simple_transaction_argresp {=0D ssize_t size;=0D char data[];=0D };=0D =0D =0D =0D char *simple_transaction_get(struct file *file, const char *buf,=0D size_t size);=0D ssize_t simple_transaction_read(struct file *file, char *buf,=0D size_t size, loff_t *pos);=0D int simple_transaction_release(struct inode *inode, struct file *file);=0D =0D void simple_transaction_set(struct file *file, size_t n);=0D # 3366 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__format__(pr= intf, 1, 2)))=0D void __simple_attr_check_format(const char *fmt, ...)=0D {=0D =0D }=0D =0D int simple_attr_open(struct inode *inode, struct file *file,=0D int (*get)(void *, u64 *), int (*set)(void *, u64),=0D const char *fmt);=0D int simple_attr_release(struct inode *inode, struct file *file);=0D ssize_t simple_attr_read(struct file *file, char *buf,=0D size_t len, loff_t *ppos);=0D ssize_t simple_attr_write(struct file *file, const char *buf,=0D size_t len, loff_t *ppos);=0D =0D struct ctl_table;=0D int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __= attribute__((__no_sanitize__("cfi"))) list_bdev_fs_names(char *buf, size_t = size);=0D # 3391 "./include/linux/fs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_sxid(umode_t mode)=0D {=0D return (mode & 0004000) || ((mode & 0002000) && (mode & 00010));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int check_sticky(struct user= _namespace *mnt_userns,=0D struct inode *dir, struct inode *inode)=0D {=0D if (!(dir->i_mode & 0001000))=0D return 0;=0D =0D return __check_sticky(mnt_userns, dir, inode);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_has_no_xattr(stru= ct inode *inode)=0D {=0D if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & (1<<28)))=0D inode->i_flags |=3D (1 << 12);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_root_inode(struct in= ode *inode)=0D {=0D return inode =3D=3D inode->i_sb->s_root->d_inode;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_emit(struct dir_con= text *ctx,=0D const char *name, int namelen,=0D u64 ino, unsigned type)=0D {=0D return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) =3D=3D 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_emit_dot(struct fil= e *file, struct dir_context *ctx)=0D {=0D return ctx->actor(ctx, ".", 1, ctx->pos,=0D file->f_path.dentry->d_inode->i_ino, 4) =3D=3D 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_emit_dotdot(struct = file *file, struct dir_context *ctx)=0D {=0D return ctx->actor(ctx, "..", 2, ctx->pos,=0D parent_ino(file->f_path.dentry), 4) =3D=3D 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_emit_dots(struct fi= le *file, struct dir_context *ctx)=0D {=0D if (ctx->pos =3D=3D 0) {=0D if (!dir_emit_dot(file, ctx))=0D return false;=0D ctx->pos =3D 1;=0D }=0D if (ctx->pos =3D=3D 1) {=0D if (!dir_emit_dotdot(file, ctx))=0D return false;=0D ctx->pos =3D 2;=0D }=0D return true;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_relax(struct inode = *inode)=0D {=0D inode_unlock(inode);=0D inode_lock(inode);=0D return !((inode)->i_flags & (1 << 4));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dir_relax_shared(struct= inode *inode)=0D {=0D inode_unlock_shared(inode);=0D inode_lock_shared(inode);=0D return !((inode)->i_flags & (1 << 4));=0D }=0D =0D extern bool path_noexec(const struct path *path);=0D extern void inode_nohighmem(struct inode *inode);=0D =0D =0D extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len,=0D int advice);=0D extern int generic_fadvise(struct file *file, loff_t offset, loff_t len,=0D int advice);=0D # 24 "./include/linux/net.h" 2=0D # 1 "./include/linux/mm.h" 1=0D # 15 "./include/linux/mm.h"=0D # 1 "./include/linux/mmap_lock.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/tracepoint-defs.h" 1=0D # 12 "./include/linux/tracepoint-defs.h"=0D # 1 "./include/linux/static_key.h" 1=0D # 13 "./include/linux/tracepoint-defs.h" 2=0D =0D struct static_call_key;=0D =0D struct trace_print_flags {=0D unsigned long mask;=0D const char *name;=0D };=0D =0D struct trace_print_flags_u64 {=0D unsigned long long mask;=0D const char *name;=0D };=0D =0D struct tracepoint_func {=0D void *func;=0D void *data;=0D int prio;=0D };=0D =0D struct tracepoint {=0D const char *name;=0D struct static_key key;=0D struct static_call_key *static_call_key;=0D void *static_call_tramp;=0D void *iterator;=0D int (*regfunc)(void);=0D void (*unregfunc)(void);=0D struct tracepoint_func *funcs;=0D };=0D =0D =0D =0D =0D typedef struct tracepoint * const tracepoint_ptr_t;=0D =0D =0D struct bpf_raw_event_map {=0D struct tracepoint *tp;=0D void *bpf_func;=0D u32 num_args;=0D u32 writable_size;=0D } __attribute__((__aligned__(32)));=0D # 9 "./include/linux/mmap_lock.h" 2=0D =0D =0D =0D =0D =0D extern struct tracepoint __tracepoint_mmap_lock_start_locking;=0D extern struct tracepoint __tracepoint_mmap_lock_acquire_returned;=0D extern struct tracepoint __tracepoint_mmap_lock_released;=0D =0D =0D =0D void __mmap_lock_do_trace_start_locking(struct mm_struct *mm, bool write);= =0D void __mmap_lock_do_trace_acquire_returned(struct mm_struct *mm, bool write= ,=0D bool success);=0D void __mmap_lock_do_trace_released(struct mm_struct *mm, bool write);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mmap_lock_trace_start= _locking(struct mm_struct *mm,=0D bool write)=0D {=0D if (static_key_false(&(__tracepoint_mmap_lock_start_locking).key))=0D __mmap_lock_do_trace_start_locking(mm, write);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mmap_lock_trace_acqui= re_returned(struct mm_struct *mm,=0D bool write, bool success)=0D {=0D if (static_key_false(&(__tracepoint_mmap_lock_acquire_returned).key))=0D __mmap_lock_do_trace_acquire_returned(mm, write, success);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mmap_lock_trace_relea= sed(struct mm_struct *mm, bool write)=0D {=0D if (static_key_false(&(__tracepoint_mmap_lock_released).key))=0D __mmap_lock_do_trace_released(mm, write);=0D }=0D # 63 "./include/linux/mmap_lock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_init_lock(struct m= m_struct *mm)=0D {=0D do { static struct lock_class_key __key; __init_rwsem((&mm->mmap_lock), "&= mm->mmap_lock", &__key); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_write_lock(struct = mm_struct *mm)=0D {=0D __mmap_lock_trace_start_locking(mm, true);=0D down_write(&mm->mmap_lock);=0D __mmap_lock_trace_acquire_returned(mm, true, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_write_lock_nested(= struct mm_struct *mm, int subclass)=0D {=0D __mmap_lock_trace_start_locking(mm, true);=0D down_write_nested(&mm->mmap_lock, subclass);=0D __mmap_lock_trace_acquire_returned(mm, true, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mmap_write_lock_killable= (struct mm_struct *mm)=0D {=0D int ret;=0D =0D __mmap_lock_trace_start_locking(mm, true);=0D ret =3D down_write_killable(&mm->mmap_lock);=0D __mmap_lock_trace_acquire_returned(mm, true, ret =3D=3D 0);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mmap_write_trylock(stru= ct mm_struct *mm)=0D {=0D bool ret;=0D =0D __mmap_lock_trace_start_locking(mm, true);=0D ret =3D down_write_trylock(&mm->mmap_lock) !=3D 0;=0D __mmap_lock_trace_acquire_returned(mm, true, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_write_unlock(struc= t mm_struct *mm)=0D {=0D __mmap_lock_trace_released(mm, true);=0D up_write(&mm->mmap_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_write_downgrade(st= ruct mm_struct *mm)=0D {=0D __mmap_lock_trace_acquire_returned(mm, false, true);=0D downgrade_write(&mm->mmap_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_read_lock(struct m= m_struct *mm)=0D {=0D __mmap_lock_trace_start_locking(mm, false);=0D down_read(&mm->mmap_lock);=0D __mmap_lock_trace_acquire_returned(mm, false, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mmap_read_lock_killable(= struct mm_struct *mm)=0D {=0D int ret;=0D =0D __mmap_lock_trace_start_locking(mm, false);=0D ret =3D down_read_killable(&mm->mmap_lock);=0D __mmap_lock_trace_acquire_returned(mm, false, ret =3D=3D 0);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mmap_read_trylock(struc= t mm_struct *mm)=0D {=0D bool ret;=0D =0D __mmap_lock_trace_start_locking(mm, false);=0D ret =3D down_read_trylock(&mm->mmap_lock) !=3D 0;=0D __mmap_lock_trace_acquire_returned(mm, false, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_read_unlock(struct= mm_struct *mm)=0D {=0D __mmap_lock_trace_released(mm, false);=0D up_read(&mm->mmap_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_read_unlock_non_ow= ner(struct mm_struct *mm)=0D {=0D __mmap_lock_trace_released(mm, false);=0D up_read_non_owner(&mm->mmap_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_assert_locked(stru= ct mm_struct *mm)=0D {=0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(&mm->mmap= _lock)->dep_map) !=3D 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/mmap_lock.h"), "i" (155), "i" ((1 << 0)|(((9) << 8))), "i" (s= izeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on),= 0); }); } while (0);=0D do { if (__builtin_expect(!!(!rwsem_is_locked(&mm->mmap_lock)), 0)) { dump= _mm(mm); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection= __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - = 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pops= ection" : : "i" ("include/linux/mmap_lock.h"), "i" (156), "i" (0), "i" (siz= eof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whi= le (0); } while (0); } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmap_assert_write_locke= d(struct mm_struct *mm)=0D {=0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held_type(&(&mm-= >mmap_lock)->dep_map, (0)))); if (__builtin_expect(!!(__ret_warn_on), 0)) d= o { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"= aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".ha= lf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i"= ("include/linux/mmap_lock.h"), "i" (161), "i" ((1 << 0)|(((9) << 8))), "i"= (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_o= n), 0); }); } while (0);=0D do { if (__builtin_expect(!!(!rwsem_is_locked(&mm->mmap_lock)), 0)) { dump= _mm(mm); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection= __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - = 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pops= ection" : : "i" ("include/linux/mmap_lock.h"), "i" (162), "i" (0), "i" (siz= eof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whi= le (0); } while (0); } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mmap_lock_is_contended(s= truct mm_struct *mm)=0D {=0D return rwsem_is_contended(&mm->mmap_lock);=0D }=0D # 16 "./include/linux/mm.h" 2=0D # 1 "./include/linux/range.h" 1=0D =0D =0D =0D =0D =0D struct range {=0D u64 start;=0D u64 end;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 range_len(const struct r= ange *range)=0D {=0D return range->end - range->start + 1;=0D }=0D =0D int add_range(struct range *range, int az, int nr_range,=0D u64 start, u64 end);=0D =0D =0D int add_range_with_merge(struct range *range, int az, int nr_range,=0D u64 start, u64 end);=0D =0D void subtract_range(struct range *range, int az, u64 start, u64 end);=0D =0D int clean_sort_range(struct range *range, int az);=0D =0D void sort_range(struct range *range, int nr_range);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) resource_size_t cap_resource= (u64 val)=0D {=0D if (val > ((resource_size_t)~0))=0D return ((resource_size_t)~0);=0D =0D return val;=0D }=0D # 17 "./include/linux/mm.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/page_ext.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/stackdepot.h" 1=0D # 16 "./include/linux/stackdepot.h"=0D typedef u32 depot_stack_handle_t;=0D =0D depot_stack_handle_t __stack_depot_save(unsigned long *entries,=0D unsigned int nr_entries,=0D gfp_t gfp_flags, bool can_alloc);=0D # 30 "./include/linux/stackdepot.h"=0D int stack_depot_init(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int stack_depot_early_init(v= oid) { return 0; }=0D =0D =0D depot_stack_handle_t stack_depot_save(unsigned long *entries,=0D unsigned int nr_entries, gfp_t gfp_flags);=0D =0D unsigned int stack_depot_fetch(depot_stack_handle_t handle,=0D unsigned long **entries);=0D =0D int stack_depot_snprint(depot_stack_handle_t handle, char *buf, size_t size= ,=0D int spaces);=0D =0D void stack_depot_print(depot_stack_handle_t stack);=0D # 8 "./include/linux/page_ext.h" 2=0D =0D struct pglist_data;=0D struct page_ext_operations {=0D size_t offset;=0D size_t size;=0D bool (*need)(void);=0D void (*init)(void);=0D };=0D =0D =0D =0D enum page_ext_flags {=0D PAGE_EXT_OWNER,=0D PAGE_EXT_OWNER_ALLOCATED,=0D =0D =0D =0D =0D };=0D # 35 "./include/linux/page_ext.h"=0D struct page_ext {=0D unsigned long flags;=0D };=0D =0D extern unsigned long page_ext_size;=0D extern void pgdat_page_ext_init(struct pglist_data *pgdat);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ext_init_flatmem(v= oid)=0D {=0D }=0D extern void page_ext_init(void);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ext_init_flatmem_l= ate(void)=0D {=0D }=0D # 58 "./include/linux/page_ext.h"=0D struct page_ext *lookup_page_ext(const struct page *page);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page_ext *page_ext_ne= xt(struct page_ext *curr)=0D {=0D void *next =3D curr;=0D next +=3D page_ext_size;=0D return next;=0D }=0D # 23 "./include/linux/mm.h" 2=0D =0D =0D # 1 "./include/linux/page_ref.h" 1=0D # 10 "./include/linux/page_ref.h"=0D extern struct tracepoint __tracepoint_page_ref_set;=0D extern struct tracepoint __tracepoint_page_ref_mod;=0D extern struct tracepoint __tracepoint_page_ref_mod_and_test;=0D extern struct tracepoint __tracepoint_page_ref_mod_and_return;=0D extern struct tracepoint __tracepoint_page_ref_mod_unless;=0D extern struct tracepoint __tracepoint_page_ref_freeze;=0D extern struct tracepoint __tracepoint_page_ref_unfreeze;=0D # 41 "./include/linux/page_ref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_set(struct p= age *page, int v)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_mod(struct p= age *page, int v)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_mod_and_test= (struct page *page, int v, int ret)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_mod_and_retu= rn(struct page *page, int v, int ret)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_mod_unless(s= truct page *page, int v, int u)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_freeze(struc= t page *page, int v, int ret)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __page_ref_unfreeze(str= uct page *page, int v)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_count(const str= uct page *page)=0D {=0D return atomic_read(&page->_refcount);=0D }=0D # 87 "./include/linux/page_ref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_count(const st= ruct folio *folio)=0D {=0D return page_ref_count(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_count(const struct = page *page)=0D {=0D return folio_ref_count((_Generic((page), const struct page *: (const struc= t folio *)_compound_head(page), struct page *: (struct folio *)_compound_he= ad(page))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_count(struct p= age *page, int v)=0D {=0D atomic_set(&page->_refcount, v);=0D if (false)=0D __page_ref_set(page, v);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_set_count(struct = folio *folio, int v)=0D {=0D set_page_count(&folio->page, v);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_page_count(struct = page *page)=0D {=0D set_page_count(page, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ref_add(struct pag= e *page, int nr)=0D {=0D atomic_add(nr, &page->_refcount);=0D if (false)=0D __page_ref_mod(page, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_ref_add(struct fo= lio *folio, int nr)=0D {=0D page_ref_add(&folio->page, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ref_sub(struct pag= e *page, int nr)=0D {=0D atomic_sub(nr, &page->_refcount);=0D if (false)=0D __page_ref_mod(page, -nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_ref_sub(struct fo= lio *folio, int nr)=0D {=0D page_ref_sub(&folio->page, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_sub_return(stru= ct page *page, int nr)=0D {=0D int ret =3D atomic_sub_return(nr, &page->_refcount);=0D =0D if (false)=0D __page_ref_mod_and_return(page, -nr, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_sub_return(str= uct folio *folio, int nr)=0D {=0D return page_ref_sub_return(&folio->page, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ref_inc(struct pag= e *page)=0D {=0D atomic_inc(&page->_refcount);=0D if (false)=0D __page_ref_mod(page, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_ref_inc(struct fo= lio *folio)=0D {=0D page_ref_inc(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ref_dec(struct pag= e *page)=0D {=0D atomic_dec(&page->_refcount);=0D if (false)=0D __page_ref_mod(page, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_ref_dec(struct fo= lio *folio)=0D {=0D page_ref_dec(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_sub_and_test(st= ruct page *page, int nr)=0D {=0D int ret =3D atomic_sub_and_test(nr, &page->_refcount);=0D =0D if (false)=0D __page_ref_mod_and_test(page, -nr, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_sub_and_test(s= truct folio *folio, int nr)=0D {=0D return page_ref_sub_and_test(&folio->page, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_inc_return(stru= ct page *page)=0D {=0D int ret =3D atomic_inc_return(&page->_refcount);=0D =0D if (false)=0D __page_ref_mod_and_return(page, 1, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_inc_return(str= uct folio *folio)=0D {=0D return page_ref_inc_return(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_dec_and_test(st= ruct page *page)=0D {=0D int ret =3D atomic_dec_and_test(&page->_refcount);=0D =0D if (false)=0D __page_ref_mod_and_test(page, -1, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_dec_and_test(s= truct folio *folio)=0D {=0D return page_ref_dec_and_test(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_dec_return(stru= ct page *page)=0D {=0D int ret =3D atomic_dec_return(&page->_refcount);=0D =0D if (false)=0D __page_ref_mod_and_return(page, -1, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_dec_return(str= uct folio *folio)=0D {=0D return page_ref_dec_return(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_ref_add_unless(str= uct page *page, int nr, int u)=0D {=0D bool ret =3D atomic_add_unless(&page->_refcount, nr, u);=0D =0D if (false)=0D __page_ref_mod_unless(page, nr, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_ref_add_unless(st= ruct folio *folio, int nr, int u)=0D {=0D return page_ref_add_unless(&folio->page, nr, u);=0D }=0D # 261 "./include/linux/page_ref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_try_get(struct fo= lio *folio)=0D {=0D return folio_ref_add_unless(folio, 1, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_ref_try_add_rcu(s= truct folio *folio, int count)=0D {=0D # 280 "./include/linux/page_ref.h"=0D if (__builtin_expect(!!(!folio_ref_add_unless(folio, count, 0)), 0)) {=0D =0D return false;=0D }=0D =0D return true;=0D }=0D # 311 "./include/linux/page_ref.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_try_get_rcu(struc= t folio *folio)=0D {=0D return folio_ref_try_add_rcu(folio, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_ref_freeze(struct p= age *page, int count)=0D {=0D int ret =3D __builtin_expect(!!(atomic_cmpxchg(&page->_refcount, count, 0)= =3D=3D count), 1);=0D =0D if (false)=0D __page_ref_freeze(page, count, ret);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_ref_freeze(struct = folio *folio, int count)=0D {=0D return page_ref_freeze(&folio->page, count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_ref_unfreeze(struc= t page *page, int count)=0D {=0D do { if (__builtin_expect(!!(page_count(page) !=3D 0), 0)) { dump_page(pag= e, "VM_BUG_ON_PAGE(" "page_count(page) !=3D 0"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= page_ref.h"), "i" (332), "i" (0), "i" (sizeof(struct bug_entry))); } while = (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0= );=0D do { if (__builtin_expect(!!(count =3D=3D 0), 0)) do { do { __asm__ __vola= tile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t"= ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".ha= lf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/p= age_ref.h"), "i" (333), "i" (0), "i" (sizeof(struct bug_entry))); } while (= 0); do { ; __builtin_unreachable(); } while (0); } while (0); } while (0);= =0D =0D atomic_set_release(&page->_refcount, count);=0D if (false)=0D __page_ref_unfreeze(page, count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_ref_unfreeze(stru= ct folio *folio, int count)=0D {=0D page_ref_unfreeze(&folio->page, count);=0D }=0D # 26 "./include/linux/mm.h" 2=0D =0D =0D =0D # 1 "./include/linux/pgtable.h" 1=0D # 14 "./include/linux/pgtable.h"=0D # 1 "./include/asm-generic/pgtable_uffd.h" 1=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int pte_uffd_wp(pte_t pte)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int pmd_uffd_wp(pmd_t pmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pte_t pte_mkuffd_wp(pte_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pmd_t pmd_mkuffd_wp(pmd_t pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pte_t pte_clear_uffd_wp(pte_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pmd_t pmd_clear_uffd_wp(pmd_t pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pte_t pte_swp_mkuffd_wp(pte_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int pte_swp_uffd_wp(pte_t pte)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) pte_t pte_swp_clear_uffd_wp(pte_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_swp_mkuffd_wp(pmd_= t pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_swp_uffd_wp(pmd_t pm= d)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_swp_clear_uffd_wp(= pmd_t pmd)=0D {=0D return pmd;=0D }=0D # 15 "./include/linux/pgtable.h" 2=0D # 61 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long pte_index(unsi= gned long address)=0D {=0D return (address >> (12)) & ((((1UL) << (12)) / sizeof(pte_t)) - 1);=0D }=0D # 89 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t *pte_offset_kernel(pmd= _t *pmd, unsigned long address)=0D {=0D return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);=0D }=0D # 108 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t *pmd_offset(pud_t *pud= , unsigned long address)=0D {=0D return pud_pgtable(*pud) + (((address) >> 21) & ((((1UL) << (12)) / sizeof= (pmd_t)) - 1));=0D }=0D # 123 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pgd_t *pgd_offset_pgd(pgd_t = *pgd, unsigned long address)=0D {=0D return (pgd + (((address) >> (pgtable_l5_enabled ? 48 : (pgtable_l4_enable= d ? 39 : 30))) & ((((1UL) << (12)) / sizeof(pgd_t)) - 1)));=0D };=0D # 150 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t *pmd_off(struct mm_str= uct *mm, unsigned long va)=0D {=0D return pmd_offset(pud_offset(p4d_offset(pgd_offset_pgd((mm)->pgd, (va)), v= a), va), va);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t *pmd_off_k(unsigned lo= ng va)=0D {=0D return pmd_offset(pud_offset(p4d_offset(pgd_offset_pgd((&init_mm)->pgd, ((= va))), va), va), va);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t *virt_to_kpte(unsigned= long vaddr)=0D {=0D pmd_t *pmd =3D pmd_off_k(vaddr);=0D =0D return pmd_none(*pmd) ? ((void *)0) : pte_offset_kernel(pmd, vaddr);=0D }=0D # 246 "./include/linux/pgtable.h"=0D extern int pmdp_clear_flush_young(struct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp);=0D # 263 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptep_clear(struct mm_st= ruct *mm, unsigned long addr,=0D pte_t *ptep)=0D {=0D pte_clear(mm, addr, ptep);=0D }=0D # 282 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t ptep_get(pte_t *ptep)= =0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_202(void) ; if (!((sizeof(*ptep) =3D=3D sizeof(char) || sizeof(*ptep) = =3D=3D sizeof(short) || sizeof(*ptep) =3D=3D sizeof(int) || sizeof(*ptep) = =3D=3D sizeof(long)) || sizeof(*ptep) =3D=3D sizeof(long long))) __compilet= ime_assert_202(); } while (0); (*(const volatile typeof( _Generic((*ptep), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (*ptep))) *)&(*ptep))= ; });=0D }=0D # 337 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t ptep_get_lockless(pte_= t *ptep)=0D {=0D return ptep_get(ptep);=0D }=0D # 355 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t pudp_huge_get_and_clea= r(struct mm_struct *mm,=0D unsigned long address,=0D pud_t *pudp)=0D {=0D pud_t pud =3D *pudp;=0D =0D pud_clear(pudp);=0D return pud;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmdp_huge_get_and_clea= r_full(struct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp,=0D int full)=0D {=0D return pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t pudp_huge_get_and_clea= r_full(struct mm_struct *mm,=0D unsigned long address, pud_t *pudp,=0D int full)=0D {=0D return pudp_huge_get_and_clear(mm, address, pudp);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t ptep_get_and_clear_ful= l(struct mm_struct *mm,=0D unsigned long address, pte_t *ptep,=0D int full)=0D {=0D pte_t pte;=0D pte =3D ptep_get_and_clear(mm, address, ptep);=0D return pte;=0D }=0D # 408 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_mmu_tlb(struct v= m_area_struct *vma,=0D unsigned long address, pte_t *ptep)=0D {=0D }=0D # 421 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pte_clear_not_present_f= ull(struct mm_struct *mm,=0D unsigned long address,=0D pte_t *ptep,=0D int full)=0D {=0D pte_clear(mm, address, ptep);=0D }=0D =0D =0D =0D extern pte_t ptep_clear_flush(struct vm_area_struct *vma,=0D unsigned long address,=0D pte_t *ptep);=0D =0D =0D =0D extern pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma,=0D unsigned long address,=0D pmd_t *pmdp);=0D extern pud_t pudp_huge_clear_flush(struct vm_area_struct *vma,=0D unsigned long address,=0D pud_t *pudp);=0D # 463 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_sw_mkyoung(pte_t p= te)=0D {=0D return pte;=0D }=0D # 520 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pudp_set_wrprotect(stru= ct mm_struct *mm,=0D unsigned long address, pud_t *pudp)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_203(vo= id) ; if (!(!(1))) __compiletime_assert_203(); } while (0);=0D }=0D =0D =0D =0D =0D =0D extern pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp);=0D # 545 "./include/linux/pgtable.h"=0D extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,=0D pgtable_t pgtable);=0D =0D =0D =0D extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *p= mdp);=0D # 559 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t generic_pmdp_establish= (struct vm_area_struct *vma,=0D unsigned long address, pmd_t *pmdp, pmd_t pmd)=0D {=0D pmd_t old_pmd =3D *pmdp;=0D set_pmd_at(vma->vm_mm, address, pmdp, pmd);=0D return old_pmd;=0D }=0D =0D =0D =0D extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long addr= ess,=0D pmd_t *pmdp);=0D # 587 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_unused(pte_t pte)=0D {=0D return 0;=0D }=0D # 619 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_same(pmd_t pmd_a, pm= d_t pmd_b)=0D {=0D return ((pmd_a).pmd) =3D=3D ((pmd_b).pmd);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_same(pud_t pud_a, pu= d_t pud_b)=0D {=0D return ((pud_a).pud) =3D=3D ((pud_b).pud);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_same(p4d_t p4d_a, p4= d_t p4d_b)=0D {=0D return ((p4d_a).p4d) =3D=3D ((p4d_b).p4d);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_same(pgd_t pgd_a, pg= d_t pgd_b)=0D {=0D return ((pgd_a).pgd) =3D=3D ((pgd_b).pgd);=0D }=0D # 691 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_do_swap_page(struc= t mm_struct *mm,=0D struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t pte, pte_t oldpte)=0D {=0D =0D }=0D # 709 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_unmap_one(struct mm= _struct *mm,=0D struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t orig_pte)=0D {=0D return 0;=0D }=0D # 724 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_prepare_to_swap(str= uct page *page)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_swap_invalidate_pa= ge(int type, unsigned long offset)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_swap_invalidate_ar= ea(int type)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_swap_restore(swp_e= ntry_t entry, struct page *page)=0D {=0D }=0D # 799 "./include/linux/pgtable.h"=0D void pgd_clear_bad(pgd_t *);=0D =0D =0D void p4d_clear_bad(p4d_t *);=0D =0D =0D =0D =0D =0D void pud_clear_bad(pud_t *);=0D =0D =0D =0D =0D void pmd_clear_bad(pmd_t *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_none_or_clear_bad(pg= d_t *pgd)=0D {=0D if (pgd_none(*pgd))=0D return 1;=0D if (__builtin_expect(!!(pgd_bad(*pgd)), 0)) {=0D pgd_clear_bad(pgd);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_none_or_clear_bad(p4= d_t *p4d)=0D {=0D if (p4d_none(*p4d))=0D return 1;=0D if (__builtin_expect(!!(p4d_bad(*p4d)), 0)) {=0D p4d_clear_bad(p4d);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_none_or_clear_bad(pu= d_t *pud)=0D {=0D if (pud_none(*pud))=0D return 1;=0D if (__builtin_expect(!!(pud_bad(*pud)), 0)) {=0D pud_clear_bad(pud);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_none_or_clear_bad(pm= d_t *pmd)=0D {=0D if (pmd_none(*pmd))=0D return 1;=0D if (__builtin_expect(!!(pmd_bad(*pmd)), 0)) {=0D pmd_clear_bad(pmd);=0D return 1;=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t __ptep_modify_prot_sta= rt(struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t *ptep)=0D {=0D =0D =0D =0D =0D =0D return ptep_get_and_clear(vma->vm_mm, addr, ptep);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ptep_modify_prot_comm= it(struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t *ptep, pte_t pte)=0D {=0D =0D =0D =0D =0D set_pte_at(vma->vm_mm, addr, ptep, pte);=0D }=0D # 897 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t ptep_modify_prot_start= (struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t *ptep)=0D {=0D return __ptep_modify_prot_start(vma, addr, ptep);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptep_modify_prot_commit= (struct vm_area_struct *vma,=0D unsigned long addr,=0D pte_t *ptep, pte_t old_pte, pte_t pte)=0D {=0D __ptep_modify_prot_commit(vma, addr, ptep, pte);=0D }=0D # 949 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pgprot_t pgprot_modify(pgpro= t_t oldprot, pgprot_t newprot)=0D {=0D if (((oldprot).pgprot) =3D=3D (((oldprot)).pgprot))=0D newprot =3D (newprot);=0D if (((oldprot).pgprot) =3D=3D (((oldprot)).pgprot))=0D newprot =3D (newprot);=0D if (((oldprot).pgprot) =3D=3D (((oldprot)).pgprot))=0D newprot =3D (newprot);=0D return newprot;=0D }=0D # 1024 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_soft_dirty(pte_t pte= )=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_soft_dirty(pmd_t pmd= )=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_mksoft_dirty(pte_t= pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_mksoft_dirty(pmd_t= pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_clear_soft_dirty(p= te_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_clear_soft_dirty(p= md_t pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_swp_mksoft_dirty(p= te_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_swp_soft_dirty(pte_t= pte)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t pte_swp_clear_soft_dir= ty(pte_t pte)=0D {=0D return pte;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_swp_mksoft_dirty(p= md_t pmd)=0D {=0D return pmd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_swp_soft_dirty(pmd_t= pmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_swp_clear_soft_dir= ty(pmd_t pmd)=0D {=0D return pmd;=0D }=0D # 1096 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int track_pfn_remap(struct v= m_area_struct *vma, pgprot_t *prot,=0D unsigned long pfn, unsigned long addr,=0D unsigned long size)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void track_pfn_insert(struct= vm_area_struct *vma, pgprot_t *prot,=0D pfn_t pfn)=0D {=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int track_pfn_copy(struct vm= _area_struct *vma)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void untrack_pfn(struct vm_a= rea_struct *vma,=0D unsigned long pfn, unsigned long size)=0D {=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void untrack_pfn_moved(struc= t vm_area_struct *vma)=0D {=0D }=0D # 1161 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_zero_pfn(unsigned lon= g pfn)=0D {=0D extern unsigned long zero_pfn;=0D return pfn =3D=3D zero_pfn;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long my_zero_pfn(un= signed long addr)=0D {=0D extern unsigned long zero_pfn;=0D return zero_pfn;=0D }=0D # 1202 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_write(pud_t pud)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/pgtable.h"), "i" (1204), "i" (0), "i" (sizeof(struc= t bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); }= while (0);=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_devmap(pmd_t pmd)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_devmap(pud_t pud)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pgd_devmap(pgd_t pgd)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_trans_huge(pud_t pud= )=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_none_or_trans_huge_o= r_dev_or_clear_bad(pud_t *pud)=0D {=0D pud_t pudval =3D ({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_204(void) ; if (!((sizeof(*pud) =3D=3D sizeof(char) || sizeof= (*pud) =3D=3D sizeof(short) || sizeof(*pud) =3D=3D sizeof(int) || sizeof(*p= ud) =3D=3D sizeof(long)) || sizeof(*pud) =3D=3D sizeof(long long))) __compi= letime_assert_204(); } while (0); (*(const volatile typeof( _Generic((*pud)= , char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char= )0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsig= ned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsign= ed long)0, signed long: (signed long)0, unsigned long long: (unsigned long = long)0, signed long long: (signed long long)0, default: (*pud))) *)&(*pud))= ; });=0D =0D if (pud_none(pudval) || pud_trans_huge(pudval) || pud_devmap(pudval))=0D return 1;=0D if (__builtin_expect(!!(pud_bad(pudval)), 0)) {=0D pud_clear_bad(pud);=0D return 1;=0D }=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_trans_unstable(pud_t= *pud)=0D {=0D =0D =0D =0D =0D return 0;=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t pmd_read_atomic(pmd_t = *pmdp)=0D {=0D =0D =0D =0D =0D =0D return *pmdp;=0D }=0D # 1294 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_none_or_trans_huge_o= r_clear_bad(pmd_t *pmd)=0D {=0D pmd_t pmdval =3D pmd_read_atomic(pmd);=0D # 1312 "./include/linux/pgtable.h"=0D __asm__ __volatile__("": : :"memory");=0D # 1329 "./include/linux/pgtable.h"=0D if (pmd_none(pmdval) || pmd_trans_huge(pmdval) ||=0D (1 && !pmd_present(pmdval)))=0D return 1;=0D if (__builtin_expect(!!(pmd_bad(pmdval)), 0)) {=0D pmd_clear_bad(pmd);=0D return 1;=0D }=0D return 0;=0D }=0D # 1351 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_trans_unstable(pmd_t= *pmd)=0D {=0D =0D return pmd_none_or_trans_huge_or_clear_bad(pmd);=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_devmap_trans_unstabl= e(pmd_t *pmd)=0D {=0D return pmd_devmap(*pmd) || pmd_trans_unstable(pmd);=0D }=0D # 1380 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_protnone(pte_t pte)= =0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_protnone(pmd_t pmd)= =0D {=0D return 0;=0D }=0D # 1417 "./include/linux/pgtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_set_huge(p4d_t *p4d,= phys_addr_t addr, pgprot_t prot)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_set_huge(pud_t *pud,= phys_addr_t addr, pgprot_t prot)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_set_huge(pmd_t *pmd,= phys_addr_t addr, pgprot_t prot)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_clear_huge(p4d_t *p4= d)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_clear_huge(pud_t *pu= d)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_clear_huge(pmd_t *pm= d)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int p4d_free_pud_page(p4d_t = *p4d, unsigned long addr)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pud_free_pmd_page(pud_t = *pud, unsigned long addr)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pmd_free_pte_page(pmd_t = *pmd, unsigned long addr)=0D {=0D return 0;=0D }=0D # 1474 "./include/linux/pgtable.h"=0D struct file;=0D int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,=0D unsigned long size, pgprot_t *vma_prot);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_espfix_bsp(void) {= }=0D =0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) pgtable_cache_init(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pfn_modify_allowed(unsi= gned long pfn, pgprot_t prot)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_has_pfn_modify_che= ck(void)=0D {=0D return false;=0D }=0D # 1535 "./include/linux/pgtable.h"=0D typedef unsigned int pgtbl_mod_mask;=0D # 30 "./include/linux/mm.h" 2=0D =0D =0D struct mempolicy;=0D struct anon_vma;=0D struct anon_vma_chain;=0D struct user_struct;=0D struct pt_regs;=0D =0D extern int sysctl_page_lock_unfairness;=0D =0D void init_mm_internals(void);=0D =0D =0D extern unsigned long max_mapnr;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_max_mapnr(unsigned = long limit)=0D {=0D max_mapnr =3D limit;=0D }=0D =0D =0D =0D =0D extern atomic_long_t _totalram_pages;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long totalram_pages= (void)=0D {=0D return (unsigned long)atomic_long_read(&_totalram_pages);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void totalram_pages_inc(void= )=0D {=0D atomic_long_inc(&_totalram_pages);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void totalram_pages_dec(void= )=0D {=0D atomic_long_dec(&_totalram_pages);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void totalram_pages_add(long= count)=0D {=0D atomic_long_add(count, &_totalram_pages);=0D }=0D =0D extern void * high_memory;=0D extern int page_cluster;=0D =0D =0D extern int sysctl_legacy_va_layout;=0D =0D =0D =0D =0D =0D extern const int mmap_rnd_bits_min;=0D extern const int mmap_rnd_bits_max;=0D extern int mmap_rnd_bits ;=0D # 145 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mm_zero_struct_page(s= truct page *page)=0D {=0D unsigned long *_pp =3D (void *)page;=0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_205(vo= id) ; if (!(!(sizeof(struct page) & 7))) __compiletime_assert_205(); } whil= e (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_206(vo= id) ; if (!(!(sizeof(struct page) < 56))) __compiletime_assert_206(); } whi= le (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_207(vo= id) ; if (!(!(sizeof(struct page) > 80))) __compiletime_assert_207(); } whi= le (0);=0D =0D switch (sizeof(struct page)) {=0D case 80:=0D _pp[9] =3D 0;=0D __attribute__((__fallthrough__));=0D case 72:=0D _pp[8] =3D 0;=0D __attribute__((__fallthrough__));=0D case 64:=0D _pp[7] =3D 0;=0D __attribute__((__fallthrough__));=0D case 56:=0D _pp[6] =3D 0;=0D _pp[5] =3D 0;=0D _pp[4] =3D 0;=0D _pp[3] =3D 0;=0D _pp[2] =3D 0;=0D _pp[1] =3D 0;=0D _pp[0] =3D 0;=0D }=0D }=0D # 197 "./include/linux/mm.h"=0D extern int sysctl_max_map_count;=0D =0D extern unsigned long sysctl_user_reserve_kbytes;=0D extern unsigned long sysctl_admin_reserve_kbytes;=0D =0D extern int sysctl_overcommit_memory;=0D extern int sysctl_overcommit_ratio;=0D extern unsigned long sysctl_overcommit_kbytes;=0D =0D int overcommit_ratio_handler(struct ctl_table *, int, void *, size_t *,=0D loff_t *);=0D int overcommit_kbytes_handler(struct ctl_table *, int, void *, size_t *,=0D loff_t *);=0D int overcommit_policy_handler(struct ctl_table *, int, void *, size_t *,=0D loff_t *);=0D # 228 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct folio *lru_to_folio(s= truct list_head *head)=0D {=0D return ({ void *__mptr =3D (void *)((head)->prev); _Static_assert(__builti= n_types_compatible_p(typeof(*((head)->prev)), typeof(((struct folio *)0)->l= ru)) || __builtin_types_compatible_p(typeof(*((head)->prev)), typeof(void))= , "pointer type mismatch in container_of()"); ((struct folio *)(__mptr - __= builtin_offsetof(struct folio, lru))); });=0D }=0D =0D void setup_initial_init_mm(void *start_code, void *end_code,=0D void *end_data, void *brk);=0D # 245 "./include/linux/mm.h"=0D struct vm_area_struct *vm_area_alloc(struct mm_struct *);=0D struct vm_area_struct *vm_area_dup(struct vm_area_struct *);=0D void vm_area_free(struct vm_area_struct *);=0D # 427 "./include/linux/mm.h"=0D extern pgprot_t protection_map[16];=0D # 450 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fault_flag_allow_retry_= first(enum fault_flag flags)=0D {=0D return (flags & FAULT_FLAG_ALLOW_RETRY) &&=0D (!(flags & FAULT_FLAG_TRIED));=0D }=0D # 478 "./include/linux/mm.h"=0D struct vm_fault {=0D const struct {=0D struct vm_area_struct *vma;=0D gfp_t gfp_mask;=0D unsigned long pgoff;=0D unsigned long address;=0D unsigned long real_address;=0D };=0D enum fault_flag flags;=0D =0D pmd_t *pmd;=0D =0D pud_t *pud;=0D =0D =0D union {=0D pte_t orig_pte;=0D pmd_t orig_pmd;=0D =0D =0D };=0D =0D struct page *cow_page;=0D struct page *page;=0D =0D =0D =0D =0D =0D pte_t *pte;=0D =0D =0D =0D spinlock_t *ptl;=0D =0D =0D =0D pgtable_t prealloc_pte;=0D =0D =0D =0D =0D =0D =0D };=0D =0D =0D enum page_entry_size {=0D PE_SIZE_PTE =3D 0,=0D PE_SIZE_PMD,=0D PE_SIZE_PUD,=0D };=0D =0D =0D =0D =0D =0D =0D struct vm_operations_struct {=0D void (*open)(struct vm_area_struct * area);=0D =0D =0D =0D =0D void (*close)(struct vm_area_struct * area);=0D =0D int (*may_split)(struct vm_area_struct *area, unsigned long addr);=0D int (*mremap)(struct vm_area_struct *area);=0D =0D =0D =0D =0D =0D int (*mprotect)(struct vm_area_struct *vma, unsigned long start,=0D unsigned long end, unsigned long newflags);=0D vm_fault_t (*fault)(struct vm_fault *vmf);=0D vm_fault_t (*huge_fault)(struct vm_fault *vmf,=0D enum page_entry_size pe_size);=0D vm_fault_t (*map_pages)(struct vm_fault *vmf,=0D unsigned long start_pgoff, unsigned long end_pgoff);=0D unsigned long (*pagesize)(struct vm_area_struct * area);=0D =0D =0D =0D vm_fault_t (*page_mkwrite)(struct vm_fault *vmf);=0D =0D =0D vm_fault_t (*pfn_mkwrite)(struct vm_fault *vmf);=0D =0D =0D =0D =0D =0D int (*access)(struct vm_area_struct *vma, unsigned long addr,=0D void *buf, int len, int write);=0D =0D =0D =0D =0D const char *(*name)(struct vm_area_struct *vma);=0D # 607 "./include/linux/mm.h"=0D struct page *(*find_special_page)(struct vm_area_struct *vma,=0D unsigned long addr);=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vma_init(struct vm_area= _struct *vma, struct mm_struct *mm)=0D {=0D static const struct vm_operations_struct dummy_vm_ops =3D {};=0D =0D memset(vma, 0, sizeof(*vma));=0D vma->vm_mm =3D mm;=0D vma->vm_ops =3D &dummy_vm_ops;=0D INIT_LIST_HEAD(&vma->anon_vma_chain);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vma_set_anonymous(struc= t vm_area_struct *vma)=0D {=0D vma->vm_ops =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_anonymous(struct= vm_area_struct *vma)=0D {=0D return !vma->vm_ops;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_temporary_stack(= struct vm_area_struct *vma)=0D {=0D int maybe_stack =3D vma->vm_flags & (0x00000100 | 0x00000000);=0D =0D if (!maybe_stack)=0D return false;=0D =0D if ((vma->vm_flags & (0x00010000 | 0x00008000)) =3D=3D=0D (0x00010000 | 0x00008000))=0D return true;=0D =0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_foreign(struct v= m_area_struct *vma)=0D {=0D if (!get_current()->mm)=0D return true;=0D =0D if (get_current()->mm !=3D vma->vm_mm)=0D return true;=0D =0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_accessible(struc= t vm_area_struct *vma)=0D {=0D return vma->vm_flags & (0x00000001 | 0x00000002 | 0x00000004);=0D }=0D =0D =0D =0D =0D =0D =0D bool vma_is_shmem(struct vm_area_struct *vma);=0D =0D =0D =0D =0D int vma_is_stack_for_current(struct vm_area_struct *vma);=0D =0D =0D =0D =0D struct mmu_gather;=0D struct inode;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int compound_order(= struct page *page)=0D {=0D if (!PageHead(page))=0D return 0;=0D return page[1].compound_order;=0D }=0D # 695 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int folio_order(str= uct folio *folio)=0D {=0D return compound_order(&folio->page);=0D }=0D =0D =0D # 1 "./include/linux/huge_mm.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/sched/coredump.h" 1=0D # 17 "./include/linux/sched/coredump.h"=0D extern void set_dumpable(struct mm_struct *mm, int value);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __get_dumpable(unsigned = long mm_flags)=0D {=0D return mm_flags & ((1 << 2) - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_dumpable(struct mm_s= truct *mm)=0D {=0D return __get_dumpable(mm->flags);=0D }=0D # 6 "./include/linux/huge_mm.h" 2=0D =0D =0D =0D =0D vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf);=0D int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,=0D pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,=0D struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma);=0D void huge_pmd_set_accessed(struct vm_fault *vmf);=0D int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm,=0D pud_t *dst_pud, pud_t *src_pud, unsigned long addr,=0D struct vm_area_struct *vma);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void huge_pud_set_accessed(s= truct vm_fault *vmf, pud_t orig_pud)=0D {=0D }=0D =0D =0D vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf);=0D struct page *follow_trans_huge_pmd(struct vm_area_struct *vma,=0D unsigned long addr, pmd_t *pmd,=0D unsigned int flags);=0D bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *v= ma,=0D pmd_t *pmd, unsigned long addr, unsigned long next);=0D int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t = *pmd,=0D unsigned long addr);=0D int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma, pud_t = *pud,=0D unsigned long addr);=0D bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr,=0D unsigned long new_addr, pmd_t *old_pmd, pmd_t *new_pmd);=0D int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, unsigned long a= ddr,=0D pgprot_t newprot, unsigned long cp_flags);=0D vm_fault_t vmf_insert_pfn_pmd_prot(struct vm_fault *vmf, pfn_t pfn,=0D pgprot_t pgprot, bool write);=0D # 55 "./include/linux/huge_mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) vm_fault_t vmf_insert_pfn_pm= d(struct vm_fault *vmf, pfn_t pfn,=0D bool write)=0D {=0D return vmf_insert_pfn_pmd_prot(vmf, pfn, vmf->vma->vm_page_prot, write);=0D }=0D vm_fault_t vmf_insert_pfn_pud_prot(struct vm_fault *vmf, pfn_t pfn,=0D pgprot_t pgprot, bool write);=0D # 74 "./include/linux/huge_mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) vm_fault_t vmf_insert_pfn_pu= d(struct vm_fault *vmf, pfn_t pfn,=0D bool write)=0D {=0D return vmf_insert_pfn_pud_prot(vmf, pfn, vmf->vma->vm_page_prot, write);=0D }=0D =0D enum transparent_hugepage_flag {=0D TRANSPARENT_HUGEPAGE_NEVER_DAX,=0D TRANSPARENT_HUGEPAGE_FLAG,=0D TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG,=0D TRANSPARENT_HUGEPAGE_DEFRAG_DIRECT_FLAG,=0D TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_FLAG,=0D TRANSPARENT_HUGEPAGE_DEFRAG_KSWAPD_OR_MADV_FLAG,=0D TRANSPARENT_HUGEPAGE_DEFRAG_REQ_MADV_FLAG,=0D TRANSPARENT_HUGEPAGE_DEFRAG_KHUGEPAGED_FLAG,=0D TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG,=0D };=0D =0D struct kobject;=0D struct kobj_attribute;=0D =0D ssize_t single_hugepage_flag_store(struct kobject *kobj,=0D struct kobj_attribute *attr,=0D const char *buf, size_t count,=0D enum transparent_hugepage_flag flag);=0D ssize_t single_hugepage_flag_show(struct kobject *kobj,=0D struct kobj_attribute *attr, char *buf,=0D enum transparent_hugepage_flag flag);=0D extern struct kobj_attribute shmem_enabled_attr;=0D # 116 "./include/linux/huge_mm.h"=0D extern unsigned long transparent_hugepage_flags;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool transhuge_vma_suitable(= struct vm_area_struct *vma,=0D unsigned long haddr)=0D {=0D =0D if (!vma_is_anonymous(vma)) {=0D if (!((((vma->vm_start >> (12)) - vma->vm_pgoff) & ((typeof((vma->vm_star= t >> (12)) - vma->vm_pgoff))((1<<(21 -(12)))) - 1)) =3D=3D 0))=0D =0D return false;=0D }=0D =0D if (haddr < vma->vm_start || haddr + ((1UL) << 21) > vma->vm_end)=0D return false;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool transhuge_vma_enabled(s= truct vm_area_struct *vma,=0D unsigned long vm_flags)=0D {=0D =0D if ((vm_flags & 0x40000000) ||=0D arch_test_bit(24, &vma->vm_mm->flags))=0D return false;=0D return true;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __transparent_hugepage_= enabled(struct vm_area_struct *vma)=0D {=0D =0D =0D =0D =0D if (transparent_hugepage_flags & (1 << TRANSPARENT_HUGEPAGE_NEVER_DAX))=0D return false;=0D =0D if (!transhuge_vma_enabled(vma, vma->vm_flags))=0D return false;=0D =0D if (vma_is_temporary_stack(vma))=0D return false;=0D =0D if (transparent_hugepage_flags & (1 << TRANSPARENT_HUGEPAGE_FLAG))=0D return true;=0D =0D if (vma_is_dax(vma))=0D return true;=0D =0D if (transparent_hugepage_flags &=0D (1 << TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG))=0D return !!(vma->vm_flags & 0x20000000);=0D =0D return false;=0D }=0D =0D bool transparent_hugepage_active(struct vm_area_struct *vma);=0D =0D =0D =0D =0D =0D unsigned long thp_get_unmapped_area(struct file *filp, unsigned long addr,= =0D unsigned long len, unsigned long pgoff, unsigned long flags);=0D =0D void prep_transhuge_page(struct page *page);=0D void free_transhuge_page(struct page *page);=0D =0D bool can_split_folio(struct folio *folio, int *pextra_pins);=0D int split_huge_page_to_list(struct page *page, struct list_head *list);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int split_huge_page(struct p= age *page)=0D {=0D return split_huge_page_to_list(page, ((void *)0));=0D }=0D void deferred_split_huge_page(struct page *page);=0D =0D void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,=0D unsigned long address, bool freeze, struct folio *folio);=0D # 208 "./include/linux/huge_mm.h"=0D void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long addre= ss,=0D bool freeze, struct folio *folio);=0D =0D void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,=0D unsigned long address);=0D # 222 "./include/linux/huge_mm.h"=0D int hugepage_madvise(struct vm_area_struct *vma, unsigned long *vm_flags,=0D int advice);=0D void vma_adjust_trans_huge(struct vm_area_struct *vma, unsigned long start,= =0D unsigned long end, long adjust_next);=0D spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma);= =0D spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_swap_pmd(pmd_t pmd)=0D {=0D return !pmd_none(pmd) && !pmd_present(pmd);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pmd_trans_huge_l= ock(pmd_t *pmd,=0D struct vm_area_struct *vma)=0D {=0D if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd) || pmd_devmap(*pmd))=0D return __pmd_trans_huge_lock(pmd, vma);=0D else=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pud_trans_huge_l= ock(pud_t *pud,=0D struct vm_area_struct *vma)=0D {=0D if (pud_trans_huge(*pud) || pud_devmap(*pud))=0D return __pud_trans_huge_lock(pud, vma);=0D else=0D return ((void *)0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_test_pmd_mappable= (struct folio *folio)=0D {=0D return folio_order(folio) >=3D (21 -(12));=0D }=0D =0D struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long ad= dr,=0D pmd_t *pmd, int flags, struct dev_pagemap **pgmap);=0D struct page *follow_devmap_pud(struct vm_area_struct *vma, unsigned long ad= dr,=0D pud_t *pud, int flags, struct dev_pagemap **pgmap);=0D =0D vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf);=0D =0D extern struct page *huge_zero_page;=0D extern unsigned long huge_zero_pfn;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_huge_zero_page(struc= t page *page)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_208(void) ; if (!((sizeof(huge_zero_page) =3D=3D sizeof(char) || sizeof= (huge_zero_page) =3D=3D sizeof(short) || sizeof(huge_zero_page) =3D=3D size= of(int) || sizeof(huge_zero_page) =3D=3D sizeof(long)) || sizeof(huge_zero_= page) =3D=3D sizeof(long long))) __compiletime_assert_208(); } while (0); (= *(const volatile typeof( _Generic((huge_zero_page), char: (char)0, unsigned= char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsi= gned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0,= signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (= signed long)0, unsigned long long: (unsigned long long)0, signed long long:= (signed long long)0, default: (huge_zero_page))) *)&(huge_zero_page)); }) = =3D=3D page;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_huge_zero_pmd(pmd_t = pmd)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_209(void) ; if (!((sizeof(huge_zero_pfn) =3D=3D sizeof(char) || sizeof(= huge_zero_pfn) =3D=3D sizeof(short) || sizeof(huge_zero_pfn) =3D=3D sizeof(= int) || sizeof(huge_zero_pfn) =3D=3D sizeof(long)) || sizeof(huge_zero_pfn)= =3D=3D sizeof(long long))) __compiletime_assert_209(); } while (0); (*(con= st volatile typeof( _Generic((huge_zero_pfn), char: (char)0, unsigned char:= (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned s= hort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signe= d int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed= long)0, unsigned long long: (unsigned long long)0, signed long long: (sign= ed long long)0, default: (huge_zero_pfn))) *)&(huge_zero_pfn)); }) =3D=3D p= md_pfn(pmd) && pmd_present(pmd);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_huge_zero_pud(pud_t = pud)=0D {=0D return false;=0D }=0D =0D struct page *mm_get_huge_zero_page(struct mm_struct *mm);=0D void mm_put_huge_zero_page(struct mm_struct *mm);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool thp_migration_supported= (void)=0D {=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct list_head *page_defer= red_list(struct page *page)=0D {=0D =0D =0D =0D =0D return &page[2].deferred_list;=0D }=0D # 444 "./include/linux/huge_mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int split_folio_to_list(stru= ct folio *folio,=0D struct list_head *list)=0D {=0D return split_huge_page_to_list(&folio->page, list);=0D }=0D # 701 "./include/linux/mm.h" 2=0D # 718 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int put_page_testzero(struct= page *page)=0D {=0D do { if (__builtin_expect(!!(page_ref_count(page) =3D=3D 0), 0)) { dump_pa= ge(page, "VM_BUG_ON_PAGE(" "page_ref_count(page) =3D=3D 0"")"); do { do { _= _asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\= n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" "= %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("in= clude/linux/mm.h"), "i" (720), "i" (0), "i" (sizeof(struct bug_entry))); } = while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } wh= ile (0);=0D return page_ref_dec_and_test(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_put_testzero(struc= t folio *folio)=0D {=0D return put_page_testzero(&folio->page);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool get_page_unless_zero(st= ruct page *page)=0D {=0D return page_ref_add_unless(page, 1, 0);=0D }=0D =0D extern int page_is_ram(unsigned long pfn);=0D =0D enum {=0D REGION_INTERSECTS,=0D REGION_DISJOINT,=0D REGION_MIXED,=0D };=0D =0D int region_intersects(resource_size_t offset, size_t size, unsigned long fl= ags,=0D unsigned long desc);=0D =0D =0D struct page *vmalloc_to_page(const void *addr);=0D unsigned long vmalloc_to_pfn(const void *addr);=0D # 767 "./include/linux/mm.h"=0D extern bool is_vmalloc_addr(const void *x);=0D extern int is_vmalloc_or_module_addr(const void *x);=0D # 786 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_entire_mapcount(st= ruct folio *folio)=0D {=0D do { if (__builtin_expect(!!(!folio_test_large(folio)), 0)) { dump_page(&f= olio->page, "VM_BUG_ON_FOLIO(" "!folio_test_large(folio)"")"); do { do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/mm.h"), "i" (788), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } whi= le (0);=0D return atomic_read(folio_mapcount_ptr(folio)) + 1;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int compound_mapcount(struct= page *page)=0D {=0D return folio_entire_mapcount((_Generic((page), const struct page *: (const= struct folio *)_compound_head(page), struct page *: (struct folio *)_compo= und_head(page))));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_mapcount_reset(str= uct page *page)=0D {=0D atomic_set(&(page)->_mapcount, -1);=0D }=0D =0D int __page_mapcount(struct page *page);=0D # 822 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_mapcount(struct pag= e *page)=0D {=0D if (__builtin_expect(!!(PageCompound(page)), 0))=0D return __page_mapcount(page);=0D return atomic_read(&page->_mapcount) + 1;=0D }=0D =0D int folio_mapcount(struct folio *folio);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int total_mapcount(struct pa= ge *page)=0D {=0D return folio_mapcount((_Generic((page), const struct page *: (const struct= folio *)_compound_head(page), struct page *: (struct folio *)_compound_hea= d(page))));=0D }=0D # 844 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *virt_to_head_pa= ge(const void *x)=0D {=0D struct page *page =3D ((((struct page *)((kernel_map.page_offset - ((((((1= UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (p= gtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_e= nabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_con= stant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof= (struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page))= - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof= (struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2= _u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) = + 1) : __order_base_2(sizeof(struct page)) ))))))) + (((((({ unsigned long = _x =3D (unsigned long)(x); ((_x) >=3D kernel_map.page_offset && (!1 || (_x)= < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL= ) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? = ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned long _y =3D _= x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - kernel_map= =2Eva_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_kernel_p= a_offset - 0); }); })) >> (12)))))));=0D =0D return ((typeof(page))_compound_head(page));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct folio *virt_to_folio(= const void *x)=0D {=0D struct page *page =3D ((((struct page *)((kernel_map.page_offset - ((((((1= UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (p= gtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_e= nabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_con= stant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof= (struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page))= - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof= (struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2= _u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) = + 1) : __order_base_2(sizeof(struct page)) ))))))) + (((((({ unsigned long = _x =3D (unsigned long)(x); ((_x) >=3D kernel_map.page_offset && (!1 || (_x)= < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL= ) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? = ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned long _y =3D _= x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - kernel_map= =2Eva_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_kernel_p= a_offset - 0); }); })) >> (12)))))));=0D =0D return (_Generic((page), const struct page *: (const struct folio *)_compo= und_head(page), struct page *: (struct folio *)_compound_head(page)));=0D }=0D =0D void __put_page(struct page *page);=0D =0D void put_pages_list(struct list_head *pages);=0D =0D void split_page(struct page *page, unsigned int order);=0D void folio_copy(struct folio *dst, struct folio *src);=0D =0D unsigned long nr_free_buffer_pages(void);=0D =0D =0D =0D =0D =0D =0D typedef void compound_page_dtor(struct page *);=0D =0D =0D enum compound_dtor_id {=0D NULL_COMPOUND_DTOR,=0D COMPOUND_PAGE_DTOR,=0D =0D =0D =0D =0D TRANSHUGE_PAGE_DTOR,=0D =0D NR_COMPOUND_DTORS,=0D };=0D extern compound_page_dtor * const compound_page_dtors[NR_COMPOUND_DTORS];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_compound_page_dtor(= struct page *page,=0D enum compound_dtor_id compound_dtor)=0D {=0D do { if (__builtin_expect(!!(compound_dtor >=3D NR_COMPOUND_DTORS), 0)) { = dump_page(page, "VM_BUG_ON_PAGE(" "compound_dtor >=3D NR_COMPOUND_DTORS"")"= ); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/linux/mm.h"), "i" (891), "i" (0), "i" (sizeof(struct bu= g_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } whi= le (0); } } while (0);=0D page[1].compound_dtor =3D compound_dtor;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void destroy_compound_page(s= truct page *page)=0D {=0D do { if (__builtin_expect(!!(page[1].compound_dtor >=3D NR_COMPOUND_DTORS)= , 0)) { dump_page(page, "VM_BUG_ON_PAGE(" "page[1].compound_dtor >=3D NR_CO= MPOUND_DTORS"")"); do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/mm.h"), "i" (897), "i" (0), "i" (= sizeof(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } = while (0); } while (0); } } while (0);=0D compound_page_dtors[page[1].compound_dtor](page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int head_compound_pincount(s= truct page *head)=0D {=0D return atomic_read(compound_pincount_ptr(head));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_compound_order(stru= ct page *page, unsigned int order)=0D {=0D page[1].compound_order =3D order;=0D =0D page[1].compound_nr =3D 1U << order;=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long compound_nr(st= ruct page *page)=0D {=0D if (!PageHead(page))=0D return 1;=0D =0D return page[1].compound_nr;=0D =0D =0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long page_size(stru= ct page *page)=0D {=0D return ((1UL) << (12)) << compound_order(page);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int page_shift(stru= ct page *page)=0D {=0D return (12) + compound_order(page);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int thp_order(struc= t page *page)=0D {=0D do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BU= G_ON_PAGE(" "PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/mm.h"), "i" (944),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0);=0D return compound_order(page);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int thp_nr_pages(struct page= *page)=0D {=0D do { if (__builtin_expect(!!(PageTail(page)), 0)) { dump_page(page, "VM_BU= G_ON_PAGE(" "PageTail(page)"")"); do { do { __asm__ __volatile__ ( "1:\n\t"= "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2= b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" = ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/mm.h"), "i" (954),= "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_un= reachable(); } while (0); } while (0); } } while (0);=0D return compound_nr(page);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long thp_size(struc= t page *page)=0D {=0D return ((1UL) << (12)) << thp_order(page);=0D }=0D =0D void free_compound_page(struct page *page);=0D # 978 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t maybe_mkwrite(pte_t pt= e, struct vm_area_struct *vma)=0D {=0D if (__builtin_expect(!!(vma->vm_flags & 0x00000002), 1))=0D pte =3D pte_mkwrite(pte);=0D return pte;=0D }=0D =0D vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page);=0D void do_set_pte(struct vm_fault *vmf, struct page *page, unsigned long addr= );=0D =0D vm_fault_t finish_fault(struct vm_fault *vmf);=0D vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf);=0D # 1095 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum zone_type page_zonenum(= const struct page *page)=0D {=0D do { kcsan_set_access_mask(((1UL << 2) - 1) << (((((sizeof(unsigned long)*= 8) - 0) - 0) - 2) * (2 !=3D 0))); __kcsan_check_access(&(page->flags), size= of(page->flags), (1 << 3)); kcsan_set_access_mask(0); kcsan_atomic_next(1);= } while (0);=0D return (page->flags >> (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != =3D 0))) & ((1UL << 2) - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum zone_type folio_zonenum= (const struct folio *folio)=0D {=0D return page_zonenum(&folio->page);=0D }=0D # 1114 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_zone_device_page(con= st struct page *page)=0D {=0D return false;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_is_zone_device(co= nst struct folio *folio)=0D {=0D return is_zone_device_page(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_zone_movable_page(co= nst struct page *page)=0D {=0D return page_zonenum(page) =3D=3D ZONE_MOVABLE;=0D }=0D # 1144 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool put_devmap_managed_page= (struct page *page)=0D {=0D return false;=0D }=0D # 1162 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_get(struct folio = *folio)=0D {=0D do { if (__builtin_expect(!!(((unsigned int) folio_ref_count(folio) + 127u= <=3D 127u)), 0)) { dump_page(&folio->page, "VM_BUG_ON_FOLIO(" "((unsigned = int) folio_ref_count(folio) + 127u <=3D 127u)"")"); do { do { __asm__ __vol= atile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t= " ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".h= alf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/= mm.h"), "i" (1164), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); = do { ; __builtin_unreachable(); } while (0); } while (0); } } while (0);=0D folio_ref_inc(folio);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void get_page(struct page *p= age)=0D {=0D folio_get((_Generic((page), const struct page *: (const struct folio *)_co= mpound_head(page), struct page *: (struct folio *)_compound_head(page))));= =0D }=0D =0D bool __attribute__((__warn_unused_result__)) try_grab_page(struct page *pag= e, unsigned int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool try_get_page(struct page *page)=0D {=0D page =3D ((typeof(page))_compound_head(page));=0D if (({ int __ret_warn_on =3D !!(page_ref_count(page) <=3D 0); if (__builti= n_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/mm.h"), "i" (1178), "i" (= (1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while= (0); __builtin_expect(!!(__ret_warn_on), 0); }))=0D return false;=0D page_ref_inc(page);=0D return true;=0D }=0D # 1197 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_put(struct folio = *folio)=0D {=0D if (folio_put_testzero(folio))=0D __put_page(&folio->page);=0D }=0D # 1217 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_put_refs(struct f= olio *folio, int refs)=0D {=0D if (folio_ref_sub_and_test(folio, refs))=0D __put_page(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_page(struct page *p= age)=0D {=0D struct folio *folio =3D (_Generic((page), const struct page *: (const stru= ct folio *)_compound_head(page), struct page *: (struct folio *)_compound_h= ead(page)));=0D =0D =0D =0D =0D =0D if (put_devmap_managed_page(&folio->page))=0D return;=0D folio_put(folio);=0D }=0D # 1268 "./include/linux/mm.h"=0D void unpin_user_page(struct page *page);=0D void unpin_user_pages_dirty_lock(struct page **pages, unsigned long npages,= =0D bool make_dirty);=0D void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npag= es,=0D bool make_dirty);=0D void unpin_user_pages(struct page **pages, unsigned long npages);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_cow_mapping(vm_flags= _t flags)=0D {=0D return (flags & (0x00000008 | 0x00000020)) =3D=3D 0x00000020;=0D }=0D # 1292 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_zone_id(struct page= *page)=0D {=0D return (page->flags >> ((((((sizeof(unsigned long)*8) - 0) - 0) < ((((size= of(unsigned long)*8) - 0) - 0) - 2))? (((sizeof(unsigned long)*8) - 0) - 0)= : ((((sizeof(unsigned long)*8) - 0) - 0) - 2)) * ((0 + 2) !=3D 0))) & ((1U= L << (0 + 2)) - 1);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_to_nid(const struct= page *page)=0D {=0D struct page *p =3D (struct page *)page;=0D =0D return (({ do { if (__builtin_expect(!!(PagePoisoned(p)), 0)) { dump_page(= p, "VM_BUG_ON_PAGE(" "PagePoisoned(p)"")"); do { do { __asm__ __volatile__ = ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word= " " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %= 2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/mm.h"), = "i" (1304), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; _= _builtin_unreachable(); } while (0); } while (0); } } while (0); p; })->fla= gs >> ((((sizeof(unsigned long)*8) - 0) - 0) * (0 !=3D 0))) & ((1UL << 0) -= 1);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int folio_nid(const struct f= olio *folio)=0D {=0D return page_to_nid(&folio->page);=0D }=0D # 1378 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_cpupid_xchg_last(st= ruct page *page, int cpupid)=0D {=0D return page_to_nid(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int page_cpupid_last(struct = page *page)=0D {=0D return page_to_nid(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpupid_to_nid(int cpupid= )=0D {=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpupid_to_pid(int cpupid= )=0D {=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpupid_to_cpu(int cpupid= )=0D {=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpu_pid_to_cpupid(int ni= d, int pid)=0D {=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpupid_pid_unset(int cp= upid)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_cpupid_reset_last(= struct page *page)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpupid_match_pid(struct= task_struct *task, int cpupid)=0D {=0D return false;=0D }=0D # 1467 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 page_kasan_tag(const stru= ct page *page)=0D {=0D return 0xff;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_kasan_tag_set(stru= ct page *page, u8 tag) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_kasan_tag_reset(st= ruct page *page) { }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct zone *page_zone(const= struct page *page)=0D {=0D return &NODE_DATA(page_to_nid(page))->node_zones[page_zonenum(page)];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pg_data_t *page_pgdat(const = struct page *page)=0D {=0D return NODE_DATA(page_to_nid(page));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct zone *folio_zone(cons= t struct folio *folio)=0D {=0D return page_zone(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pg_data_t *folio_pgdat(const= struct folio *folio)=0D {=0D return page_pgdat(&folio->page);=0D }=0D # 1519 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long folio_pfn(stru= ct folio *folio)=0D {=0D return (unsigned long)((&folio->page) - ((struct page *)((kernel_map.page_= offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_e= nabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) <<= (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + = (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D= =3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((size= of(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __built= in_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <= =3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struc= t page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) ))))))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) atomic_t *folio_pincount_ptr= (struct folio *folio)=0D {=0D return &((&(folio)->page) + (1))->compound_pincount;=0D }=0D # 1554 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_maybe_dma_pinned(= struct folio *folio)=0D {=0D if (folio_test_large(folio))=0D return atomic_read(folio_pincount_ptr(folio)) > 0;=0D # 1567 "./include/linux/mm.h"=0D return ((unsigned int)folio_ref_count(folio)) >=3D=0D (1U << 10);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_maybe_dma_pinned(s= truct page *page)=0D {=0D return folio_maybe_dma_pinned((_Generic((page), const struct page *: (cons= t struct folio *)_compound_head(page), struct page *: (struct folio *)_comp= ound_head(page))));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_needs_cow_for_dma(= struct vm_area_struct *vma,=0D struct page *page)=0D {=0D if (!is_cow_mapping(vma->vm_flags))=0D return false;=0D =0D if (!arch_test_bit(28, &vma->vm_mm->flags))=0D return false;=0D =0D return page_maybe_dma_pinned(page);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_pinnable_page(struct= page *page)=0D {=0D return !(is_zone_movable_page(page) || (get_pfnblock_flags_mask(page, (uns= igned long)((page) - ((struct page *)((kernel_map.page_offset - ((((((1UL) = << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtab= le_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabl= ed ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constan= t_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(str= uct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1= ) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(str= uct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32= ((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1)= : __order_base_2(sizeof(struct page)) )))))))), ((1UL << 3) - 1)) =3D=3D M= IGRATE_CMA)) ||=0D is_zero_pfn((unsigned long)((page) - ((struct page *)((kernel_map.page_of= fset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_ena= bled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (= ((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + ((= __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D= =3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((size= of(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __built= in_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <= =3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struc= t page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))))));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_is_pinnable(struc= t folio *folio)=0D {=0D return is_pinnable_page(&folio->page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_zone(struct pa= ge *page, enum zone_type zone)=0D {=0D page->flags &=3D ~(((1UL << 2) - 1) << (((((sizeof(unsigned long)*8) - 0) = - 0) - 2) * (2 !=3D 0)));=0D page->flags |=3D (zone & ((1UL << 2) - 1)) << (((((sizeof(unsigned long)*8= ) - 0) - 0) - 2) * (2 !=3D 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_node(struct pa= ge *page, unsigned long node)=0D {=0D page->flags &=3D ~(((1UL << 0) - 1) << ((((sizeof(unsigned long)*8) - 0) -= 0) * (0 !=3D 0)));=0D page->flags |=3D (node & ((1UL << 0) - 1)) << ((((sizeof(unsigned long)*8)= - 0) - 0) * (0 !=3D 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_links(struct p= age *page, enum zone_type zone,=0D unsigned long node, unsigned long pfn)=0D {=0D set_page_zone(page, zone);=0D set_page_node(page, node);=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long folio_nr_pages(struct f= olio *folio)=0D {=0D return compound_nr(&folio->page);=0D }=0D # 1658 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct folio *folio_next(str= uct folio *folio)=0D {=0D return (struct folio *)((&(folio)->page) + (folio_nr_pages(folio)));=0D }=0D # 1675 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int folio_shift(str= uct folio *folio)=0D {=0D return (12) + folio_order(folio);=0D }=0D # 1688 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t folio_size(struct fol= io *folio)=0D {=0D return ((1UL) << (12)) << folio_order(folio);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_make_page_accessibl= e(struct page *page)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_make_folio_accessib= le(struct folio *folio)=0D {=0D int ret;=0D long i, nr =3D folio_nr_pages(folio);=0D =0D for (i =3D 0; i < nr; i++) {=0D ret =3D arch_make_page_accessible(((&(folio)->page) + (i)));=0D if (ret)=0D break;=0D }=0D =0D return ret;=0D }=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/vmstat.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/vm_event_item.h" 1=0D # 25 "./include/linux/vm_event_item.h"=0D enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,=0D PGALLOC_DMA32, PGALLOC_NORMAL, PGALLOC_MOVABLE,=0D ALLOCSTALL_DMA32, ALLOCSTALL_NORMAL, ALLOCSTALL_MOVABLE,=0D PGSCAN_SKIP_DMA32, PGSCAN_SKIP_NORMAL, PGSCAN_SKIP_MOVABLE,=0D PGFREE, PGACTIVATE, PGDEACTIVATE, PGLAZYFREE,=0D PGFAULT, PGMAJFAULT,=0D PGLAZYFREED,=0D PGREFILL,=0D PGREUSE,=0D PGSTEAL_KSWAPD,=0D PGSTEAL_DIRECT,=0D PGDEMOTE_KSWAPD,=0D PGDEMOTE_DIRECT,=0D PGSCAN_KSWAPD,=0D PGSCAN_DIRECT,=0D PGSCAN_DIRECT_THROTTLE,=0D PGSCAN_ANON,=0D PGSCAN_FILE,=0D PGSTEAL_ANON,=0D PGSTEAL_FILE,=0D =0D =0D =0D PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,=0D KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,=0D PAGEOUTRUN, PGROTATED,=0D DROP_PAGECACHE, DROP_SLAB,=0D OOM_KILL,=0D # 61 "./include/linux/vm_event_item.h"=0D PGMIGRATE_SUCCESS, PGMIGRATE_FAIL,=0D THP_MIGRATION_SUCCESS,=0D THP_MIGRATION_FAIL,=0D THP_MIGRATION_SPLIT,=0D =0D =0D COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED,=0D COMPACTISOLATED,=0D COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS,=0D KCOMPACTD_WAKE,=0D KCOMPACTD_MIGRATE_SCANNED, KCOMPACTD_FREE_SCANNED,=0D =0D =0D =0D =0D =0D CMA_ALLOC_SUCCESS,=0D CMA_ALLOC_FAIL,=0D =0D UNEVICTABLE_PGCULLED,=0D UNEVICTABLE_PGSCANNED,=0D UNEVICTABLE_PGRESCUED,=0D UNEVICTABLE_PGMLOCKED,=0D UNEVICTABLE_PGMUNLOCKED,=0D UNEVICTABLE_PGCLEARED,=0D UNEVICTABLE_PGSTRANDED,=0D =0D THP_FAULT_ALLOC,=0D THP_FAULT_FALLBACK,=0D THP_FAULT_FALLBACK_CHARGE,=0D THP_COLLAPSE_ALLOC,=0D THP_COLLAPSE_ALLOC_FAILED,=0D THP_FILE_ALLOC,=0D THP_FILE_FALLBACK,=0D THP_FILE_FALLBACK_CHARGE,=0D THP_FILE_MAPPED,=0D THP_SPLIT_PAGE,=0D THP_SPLIT_PAGE_FAILED,=0D THP_DEFERRED_SPLIT_PAGE,=0D THP_SPLIT_PMD,=0D THP_SCAN_EXCEED_NONE_PTE,=0D THP_SCAN_EXCEED_SWAP_PTE,=0D THP_SCAN_EXCEED_SHARED_PTE,=0D =0D =0D =0D THP_ZERO_PAGE_ALLOC,=0D THP_ZERO_PAGE_ALLOC_FAILED,=0D THP_SWPOUT,=0D THP_SWPOUT_FALLBACK,=0D =0D =0D BALLOON_INFLATE,=0D BALLOON_DEFLATE,=0D =0D BALLOON_MIGRATE,=0D # 130 "./include/linux/vm_event_item.h"=0D SWAP_RA,=0D SWAP_RA_HIT,=0D # 140 "./include/linux/vm_event_item.h"=0D NR_VM_EVENT_ITEMS=0D };=0D # 9 "./include/linux/vmstat.h" 2=0D =0D # 1 "./include/linux/static_key.h" 1=0D # 11 "./include/linux/vmstat.h" 2=0D =0D =0D extern int sysctl_stat_interval;=0D # 24 "./include/linux/vmstat.h"=0D struct reclaim_stat {=0D unsigned nr_dirty;=0D unsigned nr_unqueued_dirty;=0D unsigned nr_congested;=0D unsigned nr_writeback;=0D unsigned nr_immediate;=0D unsigned nr_pageout;=0D unsigned nr_activate[2];=0D unsigned nr_ref_keep;=0D unsigned nr_unmap_fail;=0D unsigned nr_lazyfree_fail;=0D };=0D =0D enum writeback_stat_item {=0D NR_DIRTY_THRESHOLD,=0D NR_DIRTY_BG_THRESHOLD,=0D NR_VM_WRITEBACK_STAT_ITEMS,=0D };=0D # 54 "./include/linux/vmstat.h"=0D struct vm_event_state {=0D unsigned long event[NR_VM_EVENT_ITEMS];=0D };=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct vm_ev= ent_state) vm_event_states;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __count_vm_event(enum v= m_event_item item)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[it= em])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_e= vent_states.event[item])) { case 1: do { *({ do { const void *__vpp_verify = =3D (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_= verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((ty= peof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.event[item])))= ; (typeof((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.e= vent[item])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cur= rent())->cpu)])))); }); }) +=3D 1; } while (0);break; case 2: do { *({ do {= const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) + 0)= )((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __pt= r =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_e= vent_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[item]= ))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);br= eak; case 4: do { *({ do { const void *__vpp_verify =3D (typeof((&(vm_event= _states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(vm_event_state= s.event[item]))) *)(&(vm_event_states.event[item]))); (typeof((typeof(*(&(v= m_event_states.event[item]))) *)(&(vm_event_states.event[item])))) (__ptr += (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); });= }) +=3D 1; } while (0);break; case 8: do { *({ do { const void *__vpp_veri= fy =3D (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.event[item]= ))); (typeof((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_event_state= s.event[item])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_= current())->cpu)])))); }); }) +=3D 1; } while (0);break; default: __bad_siz= e_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void count_vm_event(enum vm_= event_item item)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[it= em])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_e= vent_states.event[item])) { case 1: do { unsigned long __flags; do { ({ uns= igned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dum= my2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { = const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_ev= ent_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[item])= )) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) + = 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __= ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(vm= _event_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[ite= m]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(((= struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);= do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; case 4: do { unsigned long __flags; do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({= do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item]))= + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr;= __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&= (vm_event_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[= item]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[= (((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (= 0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flag= s); } while (0); } while (0);break; case 8: do { unsigned long __flags; do = { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[ite= m])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __= ptr; __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) = *)(&(vm_event_states.event[item]))); (typeof((typeof(*(&(vm_event_states.ev= ent[item]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_off= set[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } whi= le (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__= flags); } while (0); } while (0);break; default: __bad_size_call_parameter(= );break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __count_vm_events(enum = vm_event_item item, long delta)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[it= em])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_e= vent_states.event[item])) { case 1: do { *({ do { const void *__vpp_verify = =3D (typeof((&(vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_= verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((ty= peof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.event[item])))= ; (typeof((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.e= vent[item])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cur= rent())->cpu)])))); }); }) +=3D delta; } while (0);break; case 2: do { *({ = do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(= vm_event_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[i= tem]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }) +=3D delta; } whil= e (0);break; case 4: do { *({ do { const void *__vpp_verify =3D (typeof((&(= vm_event_states.event[item])) + 0))((void *)0); (void)__vpp_verify; } while= (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(vm_eve= nt_states.event[item]))) *)(&(vm_event_states.event[item]))); (typeof((type= of(*(&(vm_event_states.event[item]))) *)(&(vm_event_states.event[item])))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }) +=3D delta; } while (0);break; case 8: do { *({ do { const void= *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) + 0))((void *)0= ); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsi= gned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_event_states= =2Eevent[item]))); (typeof((typeof(*(&(vm_event_states.event[item]))) *)(&(= vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); }) +=3D delta; } while (0);break; = default: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void count_vm_events(enum vm= _event_item item, long delta)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[it= em])) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(vm_e= vent_states.event[item])) { case 1: do { unsigned long __flags; do { ({ uns= igned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dum= my2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { = const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item])) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&(vm_ev= ent_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[item])= )) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); }) +=3D delta; } while (0)= ; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; case 2: do { unsigned long __flags; do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({= do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[item]))= + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr;= __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item]))) *)(&= (vm_event_states.event[item]))); (typeof((typeof(*(&(vm_event_states.event[= item]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cpu_offset[= (((struct thread_info *)get_current())->cpu)])))); }); }) +=3D delta; } whi= le (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__= flags); } while (0); } while (0);break; case 4: do { unsigned long __flags;= do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); d= o { *({ do { const void *__vpp_verify =3D (typeof((&(vm_event_states.event[= item])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long= __ptr; __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.event[item])= )) *)(&(vm_event_states.event[item]))); (typeof((typeof(*(&(vm_event_states= =2Eevent[item]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__per_cp= u_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D del= ta; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_r= estore(__flags); } while (0); } while (0);break; case 8: do { unsigned long= __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&= __dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } whil= e (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(vm_event_state= s.event[item])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(vm_event_states.even= t[item]))) *)(&(vm_event_states.event[item]))); (typeof((typeof(*(&(vm_even= t_states.event[item]))) *)(&(vm_event_states.event[item])))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D delta; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __du= mmy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_loca= l_irq_restore(__flags); } while (0); } while (0);break; default: __bad_size= _call_parameter();break; } } while (0);=0D }=0D =0D extern void all_vm_events(unsigned long *);=0D =0D extern void vm_events_fold_cpu(int cpu);=0D # 140 "./include/linux/vmstat.h"=0D extern atomic_long_t vm_zone_stat[NR_VM_ZONE_STAT_ITEMS];=0D extern atomic_long_t vm_node_stat[NR_VM_NODE_STAT_ITEMS];=0D extern atomic_long_t vm_numa_event[0];=0D # 165 "./include/linux/vmstat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_page_state_add(lon= g x, struct zone *zone,=0D enum zone_stat_item item)=0D {=0D atomic_long_add(x, &zone->vm_stat[item]);=0D atomic_long_add(x, &vm_zone_stat[item]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_page_state_add(lon= g x, struct pglist_data *pgdat,=0D enum node_stat_item item)=0D {=0D atomic_long_add(x, &pgdat->vm_stat[item]);=0D atomic_long_add(x, &vm_node_stat[item]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long global_zone_pa= ge_state(enum zone_stat_item item)=0D {=0D long x =3D atomic_long_read(&vm_zone_stat[item]);=0D =0D if (x < 0)=0D x =3D 0;=0D =0D return x;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long global_node_page_state_pages(enum node_stat_item item)=0D {=0D long x =3D atomic_long_read(&vm_node_stat[item]);=0D =0D if (x < 0)=0D x =3D 0;=0D =0D return x;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long global_node_pa= ge_state(enum node_stat_item item)=0D {=0D (void)({ int __ret_warn_on =3D !!(vmstat_item_in_bytes(item)); if (__built= in_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/vmstat.h"), "i" (202), "= i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } w= hile (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D return global_node_page_state_pages(item);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long zone_page_stat= e(struct zone *zone,=0D enum zone_stat_item item)=0D {=0D long x =3D atomic_long_read(&zone->vm_stat[item]);=0D =0D if (x < 0)=0D x =3D 0;=0D =0D return x;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long zone_page_stat= e_snapshot(struct zone *zone,=0D enum zone_stat_item item)=0D {=0D long x =3D atomic_long_read(&zone->vm_stat[item]);=0D =0D =0D int cpu;=0D for (((cpu)) =3D -1; ((cpu)) =3D cpumask_next(((cpu)), (((const struct cpu= mask *)&__cpu_online_mask))), ((cpu)) < nr_cpu_ids;)=0D x +=3D ({ do { const void *__vpp_verify =3D (typeof((zone->per_cpu_zonest= ats) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __= ptr; __ptr =3D (unsigned long) ((typeof(*((zone->per_cpu_zonestats))) *)((z= one->per_cpu_zonestats))); (typeof((typeof(*((zone->per_cpu_zonestats))) *)= ((zone->per_cpu_zonestats)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); = })->vm_stat_diff[item];=0D =0D if (x < 0)=0D x =3D 0;=0D =0D return x;=0D }=0D # 270 "./include/linux/vmstat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fold_vm_numa_events(voi= d)=0D {=0D }=0D =0D =0D =0D void __mod_zone_page_state(struct zone *, enum zone_stat_item item, long);= =0D void __inc_zone_page_state(struct page *, enum zone_stat_item);=0D void __dec_zone_page_state(struct page *, enum zone_stat_item);=0D =0D void __mod_node_page_state(struct pglist_data *, enum node_stat_item item, = long);=0D void __inc_node_page_state(struct page *, enum node_stat_item);=0D void __dec_node_page_state(struct page *, enum node_stat_item);=0D =0D void mod_zone_page_state(struct zone *, enum zone_stat_item, long);=0D void inc_zone_page_state(struct page *, enum zone_stat_item);=0D void dec_zone_page_state(struct page *, enum zone_stat_item);=0D =0D void mod_node_page_state(struct pglist_data *, enum node_stat_item, long);= =0D void inc_node_page_state(struct page *, enum node_stat_item);=0D void dec_node_page_state(struct page *, enum node_stat_item);=0D =0D extern void inc_node_state(struct pglist_data *, enum node_stat_item);=0D extern void __inc_zone_state(struct zone *, enum zone_stat_item);=0D extern void __inc_node_state(struct pglist_data *, enum node_stat_item);=0D extern void dec_zone_state(struct zone *, enum zone_stat_item);=0D extern void __dec_zone_state(struct zone *, enum zone_stat_item);=0D extern void __dec_node_state(struct pglist_data *, enum node_stat_item);=0D =0D void quiet_vmstat(void);=0D void cpu_vm_stats_fold(int cpu);=0D void refresh_zone_stat_thresholds(void);=0D =0D struct ctl_table;=0D int vmstat_refresh(struct ctl_table *, int write, void *buffer, size_t *len= p,=0D loff_t *ppos);=0D =0D void drain_zonestat(struct zone *zone, struct per_cpu_zonestat *);=0D =0D int calculate_pressure_threshold(struct zone *zone);=0D int calculate_normal_threshold(struct zone *zone);=0D void set_pgdat_percpu_threshold(pg_data_t *pgdat,=0D int (*calculate_pressure)(struct zone *));=0D # 418 "./include/linux/vmstat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __zone_stat_mod_folio(s= truct folio *folio,=0D enum zone_stat_item item, long nr)=0D {=0D __mod_zone_page_state(folio_zone(folio), item, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __zone_stat_add_folio(s= truct folio *folio,=0D enum zone_stat_item item)=0D {=0D __mod_zone_page_state(folio_zone(folio), item, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __zone_stat_sub_folio(s= truct folio *folio,=0D enum zone_stat_item item)=0D {=0D __mod_zone_page_state(folio_zone(folio), item, -folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_stat_mod_folio(str= uct folio *folio,=0D enum zone_stat_item item, long nr)=0D {=0D mod_zone_page_state(folio_zone(folio), item, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_stat_add_folio(str= uct folio *folio,=0D enum zone_stat_item item)=0D {=0D mod_zone_page_state(folio_zone(folio), item, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zone_stat_sub_folio(str= uct folio *folio,=0D enum zone_stat_item item)=0D {=0D mod_zone_page_state(folio_zone(folio), item, -folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __node_stat_mod_folio(s= truct folio *folio,=0D enum node_stat_item item, long nr)=0D {=0D __mod_node_page_state(folio_pgdat(folio), item, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __node_stat_add_folio(s= truct folio *folio,=0D enum node_stat_item item)=0D {=0D __mod_node_page_state(folio_pgdat(folio), item, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __node_stat_sub_folio(s= truct folio *folio,=0D enum node_stat_item item)=0D {=0D __mod_node_page_state(folio_pgdat(folio), item, -folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_stat_mod_folio(str= uct folio *folio,=0D enum node_stat_item item, long nr)=0D {=0D mod_node_page_state(folio_pgdat(folio), item, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_stat_add_folio(str= uct folio *folio,=0D enum node_stat_item item)=0D {=0D mod_node_page_state(folio_pgdat(folio), item, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_stat_sub_folio(str= uct folio *folio,=0D enum node_stat_item item)=0D {=0D mod_node_page_state(folio_pgdat(folio), item, -folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_zone_freepage_sta= te(struct zone *zone, int nr_pages,=0D int migratetype)=0D {=0D __mod_zone_page_state(zone, NR_FREE_PAGES, nr_pages);=0D if (__builtin_expect(!!((migratetype) =3D=3D MIGRATE_CMA), 0))=0D __mod_zone_page_state(zone, NR_FREE_CMA_PAGES, nr_pages);=0D }=0D =0D extern const char * const vmstat_text[];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *zone_stat_name(e= num zone_stat_item item)=0D {=0D return vmstat_text[item];=0D }=0D # 513 "./include/linux/vmstat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *node_stat_name(e= num node_stat_item item)=0D {=0D return vmstat_text[NR_VM_ZONE_STAT_ITEMS +=0D 0 +=0D item];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *lru_list_name(en= um lru_list lru)=0D {=0D return node_stat_name(NR_LRU_BASE + lru) + 3;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *writeback_stat_n= ame(enum writeback_stat_item item)=0D {=0D return vmstat_text[NR_VM_ZONE_STAT_ITEMS +=0D 0 +=0D NR_VM_NODE_STAT_ITEMS +=0D item];=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *vm_event_name(en= um vm_event_item item)=0D {=0D return vmstat_text[NR_VM_ZONE_STAT_ITEMS +=0D 0 +=0D NR_VM_NODE_STAT_ITEMS +=0D NR_VM_WRITEBACK_STAT_ITEMS +=0D item];=0D }=0D # 574 "./include/linux/vmstat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_lruvec_state(stru= ct lruvec *lruvec,=0D enum node_stat_item idx, int val)=0D {=0D __mod_node_page_state(lruvec_pgdat(lruvec), idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mod_lruvec_state(struct= lruvec *lruvec,=0D enum node_stat_item idx, int val)=0D {=0D mod_node_page_state(lruvec_pgdat(lruvec), idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_lruvec_page_state= (struct page *page,=0D enum node_stat_item idx, int val)=0D {=0D __mod_node_page_state(page_pgdat(page), idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mod_lruvec_page_state(s= truct page *page,=0D enum node_stat_item idx, int val)=0D {=0D mod_node_page_state(page_pgdat(page), idx, val);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __inc_lruvec_page_state= (struct page *page,=0D enum node_stat_item idx)=0D {=0D __mod_lruvec_page_state(page, idx, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dec_lruvec_page_state= (struct page *page,=0D enum node_stat_item idx)=0D {=0D __mod_lruvec_page_state(page, idx, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __lruvec_stat_mod_folio= (struct folio *folio,=0D enum node_stat_item idx, int val)=0D {=0D __mod_lruvec_page_state(&folio->page, idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __lruvec_stat_add_folio= (struct folio *folio,=0D enum node_stat_item idx)=0D {=0D __lruvec_stat_mod_folio(folio, idx, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __lruvec_stat_sub_folio= (struct folio *folio,=0D enum node_stat_item idx)=0D {=0D __lruvec_stat_mod_folio(folio, idx, -folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inc_lruvec_page_state(s= truct page *page,=0D enum node_stat_item idx)=0D {=0D mod_lruvec_page_state(page, idx, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dec_lruvec_page_state(s= truct page *page,=0D enum node_stat_item idx)=0D {=0D mod_lruvec_page_state(page, idx, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lruvec_stat_mod_folio(s= truct folio *folio,=0D enum node_stat_item idx, int val)=0D {=0D mod_lruvec_page_state(&folio->page, idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lruvec_stat_add_folio(s= truct folio *folio,=0D enum node_stat_item idx)=0D {=0D lruvec_stat_mod_folio(folio, idx, folio_nr_pages(folio));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lruvec_stat_sub_folio(s= truct folio *folio,=0D enum node_stat_item idx)=0D {=0D lruvec_stat_mod_folio(folio, idx, -folio_nr_pages(folio));=0D }=0D # 1720 "./include/linux/mm.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void *lowmem_page_address(const struct page *page)=0D {=0D return ((((void *)((void *)((unsigned long)((phys_addr_t)((((phys_addr_t)(= (unsigned long)((page) - ((struct page *)((kernel_map.page_offset - ((((((1= UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (p= gtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_e= nabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_con= stant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof= (struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page))= - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof= (struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2= _u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) = + 1) : __order_base_2(sizeof(struct page)) ))))))))) << (12))))) + kernel_m= ap.va_pa_offset)))));=0D }=0D # 1754 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *folio_address(const st= ruct folio *folio)=0D {=0D return lowmem_page_address(&folio->page);=0D }=0D =0D extern void *page_rmapping(struct page *page);=0D extern unsigned long __page_file_index(struct page *page);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long page_index(str= uct page *page)=0D {=0D if (__builtin_expect(!!(PageSwapCache(page)), 0))=0D return __page_file_index(page);=0D return page->index;=0D }=0D =0D bool page_mapped(struct page *page);=0D bool folio_mapped(struct folio *folio);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_is_pfmemalloc(cons= t struct page *page)=0D {=0D =0D =0D =0D =0D =0D return (uintptr_t)page->lru.next & ((((1UL))) << (1));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_page_pfmemalloc(str= uct page *page)=0D {=0D page->lru.next =3D (void *)((((1UL))) << (1));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_page_pfmemalloc(s= truct page *page)=0D {=0D page->lru.next =3D ((void *)0);=0D }=0D =0D =0D =0D =0D extern void pagefault_out_of_memory(void);=0D # 1820 "./include/linux/mm.h"=0D extern void show_free_areas(unsigned int flags, nodemask_t *nodemask);=0D =0D =0D extern bool can_do_mlock(void);=0D =0D =0D =0D extern int user_shm_lock(size_t, struct ucounts *);=0D extern void user_shm_unlock(size_t, struct ucounts *);=0D =0D struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,= =0D pte_t pte);=0D struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long a= ddr,=0D pmd_t pmd);=0D =0D void zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,=0D unsigned long size);=0D void zap_page_range(struct vm_area_struct *vma, unsigned long address,=0D unsigned long size);=0D void unmap_vmas(struct mmu_gather *tlb, struct vm_area_struct *start_vma,=0D unsigned long start, unsigned long end);=0D =0D struct mmu_notifier_range;=0D =0D void free_pgd_range(struct mmu_gather *tlb, unsigned long addr,=0D unsigned long end, unsigned long floor, unsigned long ceiling);=0D int=0D copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_= vma);=0D int follow_invalidate_pte(struct mm_struct *mm, unsigned long address,=0D struct mmu_notifier_range *range, pte_t **ptepp,=0D pmd_t **pmdpp, spinlock_t **ptlp);=0D int follow_pte(struct mm_struct *mm, unsigned long address,=0D pte_t **ptepp, spinlock_t **ptlp);=0D int follow_pfn(struct vm_area_struct *vma, unsigned long address,=0D unsigned long *pfn);=0D int follow_phys(struct vm_area_struct *vma, unsigned long address,=0D unsigned int flags, unsigned long *prot, resource_size_t *phys);=0D int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,=0D void *buf, int len, int write);=0D =0D extern void truncate_pagecache(struct inode *inode, loff_t new);=0D extern void truncate_setsize(struct inode *inode, loff_t newsize);=0D void pagecache_isize_extended(struct inode *inode, loff_t from, loff_t to);= =0D void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t en= d);=0D int generic_error_remove_page(struct address_space *mapping, struct page *p= age);=0D =0D =0D extern vm_fault_t handle_mm_fault(struct vm_area_struct *vma,=0D unsigned long address, unsigned int flags,=0D struct pt_regs *regs);=0D extern int fixup_user_fault(struct mm_struct *mm,=0D unsigned long address, unsigned int fault_flags,=0D bool *unlocked);=0D void unmap_mapping_pages(struct address_space *mapping,=0D unsigned long start, unsigned long nr, bool even_cows);=0D void unmap_mapping_range(struct address_space *mapping,=0D loff_t const holebegin, loff_t const holelen, int even_cows);=0D # 1899 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unmap_shared_mapping_ra= nge(struct address_space *mapping,=0D loff_t const holebegin, loff_t const holelen)=0D {=0D unmap_mapping_range(mapping, holebegin, holelen, 0);=0D }=0D =0D extern int access_process_vm(struct task_struct *tsk, unsigned long addr,=0D void *buf, int len, unsigned int gup_flags);=0D extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,=0D void *buf, int len, unsigned int gup_flags);=0D extern int __access_remote_vm(struct mm_struct *mm, unsigned long addr,=0D void *buf, int len, unsigned int gup_flags);=0D =0D long get_user_pages_remote(struct mm_struct *mm,=0D unsigned long start, unsigned long nr_pages,=0D unsigned int gup_flags, struct page **pages,=0D struct vm_area_struct **vmas, int *locked);=0D long pin_user_pages_remote(struct mm_struct *mm,=0D unsigned long start, unsigned long nr_pages,=0D unsigned int gup_flags, struct page **pages,=0D struct vm_area_struct **vmas, int *locked);=0D long get_user_pages(unsigned long start, unsigned long nr_pages,=0D unsigned int gup_flags, struct page **pages,=0D struct vm_area_struct **vmas);=0D long pin_user_pages(unsigned long start, unsigned long nr_pages,=0D unsigned int gup_flags, struct page **pages,=0D struct vm_area_struct **vmas);=0D long get_user_pages_unlocked(unsigned long start, unsigned long nr_pages,=0D struct page **pages, unsigned int gup_flags);=0D long pin_user_pages_unlocked(unsigned long start, unsigned long nr_pages,=0D struct page **pages, unsigned int gup_flags);=0D =0D int get_user_pages_fast(unsigned long start, int nr_pages,=0D unsigned int gup_flags, struct page **pages);=0D int pin_user_pages_fast(unsigned long start, int nr_pages,=0D unsigned int gup_flags, struct page **pages);=0D =0D int account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc);= =0D int __account_locked_vm(struct mm_struct *mm, unsigned long pages, bool inc= ,=0D struct task_struct *task, bool bypass_rlim);=0D =0D struct kvec;=0D int get_kernel_pages(const struct kvec *iov, int nr_pages, int write,=0D struct page **pages);=0D struct page *get_dump_page(unsigned long addr);=0D =0D bool folio_mark_dirty(struct folio *folio);=0D bool set_page_dirty(struct page *page);=0D int set_page_dirty_lock(struct page *page);=0D =0D int get_cmdline(struct task_struct *task, char *buffer, int buflen);=0D =0D extern unsigned long move_page_tables(struct vm_area_struct *vma,=0D unsigned long old_addr, struct vm_area_struct *new_vma,=0D unsigned long new_addr, unsigned long len,=0D bool need_rmap_locks);=0D # 1972 "./include/linux/mm.h"=0D extern unsigned long change_protection(struct vm_area_struct *vma, unsigned= long start,=0D unsigned long end, pgprot_t newprot,=0D unsigned long cp_flags);=0D extern int mprotect_fixup(struct vm_area_struct *vma,=0D struct vm_area_struct **pprev, unsigned long start,=0D unsigned long end, unsigned long newflags);=0D =0D =0D =0D =0D int get_user_pages_fast_only(unsigned long start, int nr_pages,=0D unsigned int gup_flags, struct page **pages);=0D int pin_user_pages_fast_only(unsigned long start, int nr_pages,=0D unsigned int gup_flags, struct page **pages);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool get_user_page_fast_only= (unsigned long addr,=0D unsigned int gup_flags, struct page **pagep)=0D {=0D return get_user_pages_fast_only(addr, 1, gup_flags, pagep) =3D=3D 1;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_mm_counter= (struct mm_struct *mm, int member)=0D {=0D long val =3D atomic_long_read(&mm->rss_stat.count[member]);=0D =0D =0D =0D =0D =0D =0D if (val < 0)=0D val =3D 0;=0D =0D return (unsigned long)val;=0D }=0D =0D void mm_trace_rss_stat(struct mm_struct *mm, int member, long count);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void add_mm_counter(struct m= m_struct *mm, int member, long value)=0D {=0D long count =3D atomic_long_add_return(value, &mm->rss_stat.count[member]);= =0D =0D mm_trace_rss_stat(mm, member, count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inc_mm_counter(struct m= m_struct *mm, int member)=0D {=0D long count =3D atomic_long_inc_return(&mm->rss_stat.count[member]);=0D =0D mm_trace_rss_stat(mm, member, count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dec_mm_counter(struct m= m_struct *mm, int member)=0D {=0D long count =3D atomic_long_dec_return(&mm->rss_stat.count[member]);=0D =0D mm_trace_rss_stat(mm, member, count);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mm_counter_file(struct p= age *page)=0D {=0D if (PageSwapBacked(page))=0D return MM_SHMEMPAGES;=0D return MM_FILEPAGES;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mm_counter(struct page *= page)=0D {=0D if (PageAnon(page))=0D return MM_ANONPAGES;=0D return mm_counter_file(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_mm_rss(str= uct mm_struct *mm)=0D {=0D return get_mm_counter(mm, MM_FILEPAGES) +=0D get_mm_counter(mm, MM_ANONPAGES) +=0D get_mm_counter(mm, MM_SHMEMPAGES);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_mm_hiwater= _rss(struct mm_struct *mm)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof(mm->hiwater_rss) *)1 =3D= =3D (typeof(get_mm_rss(mm)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((v= oid *)((long)(mm->hiwater_rss) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D = sizeof(*(8 ? ((void *)((long)(get_mm_rss(mm)) * 0l)) : (int *)8))))), ((mm-= >hiwater_rss) > (get_mm_rss(mm)) ? (mm->hiwater_rss) : (get_mm_rss(mm))), (= { typeof(mm->hiwater_rss) __UNIQUE_ID___x210 =3D (mm->hiwater_rss); typeof(= get_mm_rss(mm)) __UNIQUE_ID___y211 =3D (get_mm_rss(mm)); ((__UNIQUE_ID___x2= 10) > (__UNIQUE_ID___y211) ? (__UNIQUE_ID___x210) : (__UNIQUE_ID___y211)); = }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_mm_hiwater= _vm(struct mm_struct *mm)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof(mm->hiwater_vm) *)1 =3D= =3D (typeof(mm->total_vm) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((voi= d *)((long)(mm->hiwater_vm) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D siz= eof(*(8 ? ((void *)((long)(mm->total_vm) * 0l)) : (int *)8))))), ((mm->hiwa= ter_vm) > (mm->total_vm) ? (mm->hiwater_vm) : (mm->total_vm)), ({ typeof(mm= ->hiwater_vm) __UNIQUE_ID___x212 =3D (mm->hiwater_vm); typeof(mm->total_vm)= __UNIQUE_ID___y213 =3D (mm->total_vm); ((__UNIQUE_ID___x212) > (__UNIQUE_I= D___y213) ? (__UNIQUE_ID___x212) : (__UNIQUE_ID___y213)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_hiwater_rss(stru= ct mm_struct *mm)=0D {=0D unsigned long _rss =3D get_mm_rss(mm);=0D =0D if ((mm)->hiwater_rss < _rss)=0D (mm)->hiwater_rss =3D _rss;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void update_hiwater_vm(struc= t mm_struct *mm)=0D {=0D if (mm->hiwater_vm < mm->total_vm)=0D mm->hiwater_vm =3D mm->total_vm;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reset_mm_hiwater_rss(st= ruct mm_struct *mm)=0D {=0D mm->hiwater_rss =3D get_mm_rss(mm);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void setmax_mm_hiwater_rss(u= nsigned long *maxrss,=0D struct mm_struct *mm)=0D {=0D unsigned long hiwater_rss =3D get_mm_hiwater_rss(mm);=0D =0D if (*maxrss < hiwater_rss)=0D *maxrss =3D hiwater_rss;=0D }=0D =0D =0D void sync_mm_rss(struct mm_struct *mm);=0D # 2114 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pte_devmap(pte_t pte)=0D {=0D return 0;=0D }=0D =0D =0D int vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot= );=0D =0D extern pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,=0D spinlock_t **ptl);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pte_t *get_locked_pte(struct= mm_struct *mm, unsigned long addr,=0D spinlock_t **ptl)=0D {=0D pte_t *ptep;=0D (ptep =3D __get_locked_pte(mm, addr, ptl));=0D return ptep;=0D }=0D # 2139 "./include/linux/mm.h"=0D int __p4d_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address);=0D # 2152 "./include/linux/mm.h"=0D int __pud_alloc(struct mm_struct *mm, p4d_t *p4d, unsigned long address);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_inc_nr_puds(struct m= m_struct *mm)=0D {=0D if (mm_pud_folded(mm))=0D return;=0D atomic_long_add((((1UL) << (12)) / sizeof(pud_t)) * sizeof(pud_t), &mm->pg= tables_bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_dec_nr_puds(struct m= m_struct *mm)=0D {=0D if (mm_pud_folded(mm))=0D return;=0D atomic_long_sub((((1UL) << (12)) / sizeof(pud_t)) * sizeof(pud_t), &mm->pg= tables_bytes);=0D }=0D # 2180 "./include/linux/mm.h"=0D int __pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_inc_nr_pmds(struct m= m_struct *mm)=0D {=0D if (0)=0D return;=0D atomic_long_add((((1UL) << (12)) / sizeof(pmd_t)) * sizeof(pmd_t), &mm->pg= tables_bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_dec_nr_pmds(struct m= m_struct *mm)=0D {=0D if (0)=0D return;=0D atomic_long_sub((((1UL) << (12)) / sizeof(pmd_t)) * sizeof(pmd_t), &mm->pg= tables_bytes);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_pgtables_bytes_init(= struct mm_struct *mm)=0D {=0D atomic_long_set(&mm->pgtables_bytes, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long mm_pgtables_by= tes(const struct mm_struct *mm)=0D {=0D return atomic_long_read(&mm->pgtables_bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_inc_nr_ptes(struct m= m_struct *mm)=0D {=0D atomic_long_add((((1UL) << (12)) / sizeof(pte_t)) * sizeof(pte_t), &mm->pg= tables_bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_dec_nr_ptes(struct m= m_struct *mm)=0D {=0D atomic_long_sub((((1UL) << (12)) / sizeof(pte_t)) * sizeof(pte_t), &mm->pg= tables_bytes);=0D }=0D # 2229 "./include/linux/mm.h"=0D int __pte_alloc(struct mm_struct *mm, pmd_t *pmd);=0D int __pte_alloc_kernel(pmd_t *pmd);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) p4d_t *p4d_alloc(struct mm_s= truct *mm, pgd_t *pgd,=0D unsigned long address)=0D {=0D return (__builtin_expect(!!(pgd_none(*pgd)), 0) && __p4d_alloc(mm, pgd, ad= dress)) ?=0D ((void *)0) : p4d_offset(pgd, address);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pud_t *pud_alloc(struct mm_s= truct *mm, p4d_t *p4d,=0D unsigned long address)=0D {=0D return (__builtin_expect(!!(p4d_none(*p4d)), 0) && __pud_alloc(mm, p4d, ad= dress)) ?=0D ((void *)0) : pud_offset(p4d, address);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pmd_t *pmd_alloc(struct mm_s= truct *mm, pud_t *pud, unsigned long address)=0D {=0D return (__builtin_expect(!!(pud_none(*pud)), 0) && __pmd_alloc(mm, pud, ad= dress))?=0D ((void *)0): pmd_offset(pud, address);=0D }=0D =0D =0D =0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) ptlock_cache_init(void);=0D extern bool ptlock_alloc(struct page *page);=0D extern void ptlock_free(struct page *page);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *ptlock_ptr(struc= t page *page)=0D {=0D return page->ptl;=0D }=0D # 2285 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pte_lockptr(stru= ct mm_struct *mm, pmd_t *pmd)=0D {=0D return ptlock_ptr(pmd_page(*pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptlock_init(struct page= *page)=0D {=0D =0D =0D =0D =0D =0D =0D =0D do { if (__builtin_expect(!!(*(unsigned long *)&page->ptl), 0)) { dump_pag= e(page, "VM_BUG_ON_PAGE(" "*(unsigned long *)&page->ptl"")"); do { do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/mm.h"), "i" (2299), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } } whi= le (0);=0D if (!ptlock_alloc(page))=0D return false;=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_che= ck(ptlock_ptr(page)), "ptlock_ptr(page)", &__key, LD_WAIT_CONFIG); } while = (0);=0D return true;=0D }=0D # 2319 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgtable_init(void)=0D {=0D ptlock_cache_init();=0D pgtable_cache_init();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pgtable_pte_page_ctor(s= truct page *page)=0D {=0D if (!ptlock_init(page))=0D return false;=0D __SetPageTable(page);=0D inc_lruvec_page_state(page, NR_PAGETABLE);=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgtable_pte_page_dtor(s= truct page *page)=0D {=0D ptlock_free(page);=0D __ClearPageTable(page);=0D dec_lruvec_page_state(page, NR_PAGETABLE);=0D }=0D # 2370 "./include/linux/mm.h"=0D static struct page *pmd_to_page(pmd_t *pmd)=0D {=0D unsigned long mask =3D ~((((1UL) << (12)) / sizeof(pmd_t)) * sizeof(pmd_t)= - 1);=0D return ((((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / = sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabl= ed ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (= pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(= struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((((({ unsigned long _x =3D (unsigne= d long)((void *)((unsigned long) pmd & mask)); ((_x) >=3D kernel_map.page_o= ffset && (!1 || (_x) < kernel_map.page_offset + (((((1UL) << (12)) / sizeof= (pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 3= 9 : 30)))) / 2))) ? ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ un= signed long _y =3D _x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned lo= ng)(_y) - kernel_map.va_kernel_xip_pa_offset) : ((unsigned long)(_y) - kern= el_map.va_kernel_pa_offset - 0); }); })) >> (12)))))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pmd_lockptr(stru= ct mm_struct *mm, pmd_t *pmd)=0D {=0D return ptlock_ptr(pmd_to_page(pmd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pmd_ptlock_init(struct = page *page)=0D {=0D =0D page->pmd_huge_pte =3D ((void *)0);=0D =0D return ptlock_init(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pmd_ptlock_free(struct = page *page)=0D {=0D =0D do { if (__builtin_expect(!!(page->pmd_huge_pte), 0)) { dump_page(page, "V= M_BUG_ON_PAGE(" "page->pmd_huge_pte"")"); do { do { __asm__ __volatile__ ( = "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" = " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2"= "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/mm.h"), "i= " (2392), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __b= uiltin_unreachable(); } while (0); } while (0); } } while (0);=0D =0D ptlock_free(page);=0D }=0D # 2413 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pmd_lock(struct = mm_struct *mm, pmd_t *pmd)=0D {=0D spinlock_t *ptl =3D pmd_lockptr(mm, pmd);=0D spin_lock(ptl);=0D return ptl;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pgtable_pmd_page_ctor(s= truct page *page)=0D {=0D if (!pmd_ptlock_init(page))=0D return false;=0D __SetPageTable(page);=0D inc_lruvec_page_state(page, NR_PAGETABLE);=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pgtable_pmd_page_dtor(s= truct page *page)=0D {=0D pmd_ptlock_free(page);=0D __ClearPageTable(page);=0D dec_lruvec_page_state(page, NR_PAGETABLE);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pud_lockptr(stru= ct mm_struct *mm, pud_t *pud)=0D {=0D return &mm->page_table_lock;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *pud_lock(struct = mm_struct *mm, pud_t *pud)=0D {=0D spinlock_t *ptl =3D pud_lockptr(mm, pud);=0D =0D spin_lock(ptl);=0D return ptl;=0D }=0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) pagecache_init(void);=0D extern void free_initmem(void);=0D =0D =0D =0D =0D =0D =0D =0D extern unsigned long free_reserved_area(void *start, void *end,=0D int poison, const char *s);=0D =0D extern void adjust_managed_page_count(struct page *page, long count);=0D extern void mem_init_print_info(void);=0D =0D extern void reserve_bootmem_region(phys_addr_t start, phys_addr_t end);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void free_reserved_page(stru= ct page *page)=0D {=0D ClearPageReserved(page);=0D init_page_count(page);=0D __free_pages((page), 0);=0D adjust_managed_page_count(page, 1);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mark_page_reserved(stru= ct page *page)=0D {=0D SetPageReserved(page);=0D adjust_managed_page_count(page, -1);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long free_initmem_d= efault(int poison)=0D {=0D extern char __init_begin[], __init_end[];=0D =0D return free_reserved_area(&__init_begin, &__init_end,=0D poison, "unused kernel image (initmem)");=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_num_physpa= ges(void)=0D {=0D int nid;=0D unsigned long phys_pages =3D 0;=0D =0D for ( (nid) =3D 0; (nid) =3D=3D 0; (nid) =3D 1)=0D phys_pages +=3D (NODE_DATA(nid)->node_present_pages);=0D =0D return phys_pages;=0D }=0D # 2529 "./include/linux/mm.h"=0D void free_area_init(unsigned long *max_zone_pfn);=0D unsigned long node_map_pfn_alignment(void);=0D unsigned long __absent_pages_in_range(int nid, unsigned long start_pfn,=0D unsigned long end_pfn);=0D extern unsigned long absent_pages_in_range(unsigned long start_pfn,=0D unsigned long end_pfn);=0D extern void get_pfn_range_for_nid(unsigned int nid,=0D unsigned long *start_pfn, unsigned long *end_pfn);=0D extern unsigned long find_min_pfn_with_active_regions(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int early_pfn_to_nid(unsigne= d long pfn)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D extern void set_dma_reserve(unsigned long new_dma_reserve);=0D extern void memmap_init_range(unsigned long, int, unsigned long,=0D unsigned long, unsigned long, enum meminit_context,=0D struct vmem_altmap *, int migratetype);=0D extern void setup_per_zone_wmarks(void);=0D extern void calculate_min_free_kbytes(void);=0D extern int __attribute__((__section__(".meminit.text"))) __attribute__((__c= old__)) __attribute__((patchable_function_entry(0, 0))) init_per_zone_wmark= _min(void);=0D extern void mem_init(void);=0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) mmap_init(void);=0D extern void show_mem(unsigned int flags, nodemask_t *nodemask);=0D extern long si_mem_available(void);=0D extern void si_meminfo(struct sysinfo * val);=0D extern void si_meminfo_node(struct sysinfo *val, int nid);=0D =0D =0D =0D =0D extern __attribute__((__format__(printf, 3, 4)))=0D void warn_alloc(gfp_t gfp_mask, nodemask_t *nodemask, const char *fmt, ...)= ;=0D =0D extern void setup_per_cpu_pageset(void);=0D =0D =0D extern int min_free_kbytes;=0D extern int watermark_boost_factor;=0D extern int watermark_scale_factor;=0D extern bool arch_has_descending_max_zone_pfns(void);=0D =0D =0D extern atomic_long_t mmap_pages_allocated;=0D extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t);=0D =0D =0D void vma_interval_tree_insert(struct vm_area_struct *node,=0D struct rb_root_cached *root);=0D void vma_interval_tree_insert_after(struct vm_area_struct *node,=0D struct vm_area_struct *prev,=0D struct rb_root_cached *root);=0D void vma_interval_tree_remove(struct vm_area_struct *node,=0D struct rb_root_cached *root);=0D struct vm_area_struct *vma_interval_tree_iter_first(struct rb_root_cached *= root,=0D unsigned long start, unsigned long last);=0D struct vm_area_struct *vma_interval_tree_iter_next(struct vm_area_struct *n= ode,=0D unsigned long start, unsigned long last);=0D =0D =0D =0D =0D =0D void anon_vma_interval_tree_insert(struct anon_vma_chain *node,=0D struct rb_root_cached *root);=0D void anon_vma_interval_tree_remove(struct anon_vma_chain *node,=0D struct rb_root_cached *root);=0D struct anon_vma_chain *=0D anon_vma_interval_tree_iter_first(struct rb_root_cached *root,=0D unsigned long start, unsigned long last);=0D struct anon_vma_chain *anon_vma_interval_tree_iter_next(=0D struct anon_vma_chain *node, unsigned long start, unsigned long last);=0D # 2616 "./include/linux/mm.h"=0D extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys= _admin);=0D extern int __vma_adjust(struct vm_area_struct *vma, unsigned long start,=0D unsigned long end, unsigned long pgoff, struct vm_area_struct *insert,=0D struct vm_area_struct *expand);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vma_adjust(struct vm_are= a_struct *vma, unsigned long start,=0D unsigned long end, unsigned long pgoff, struct vm_area_struct *insert)=0D {=0D return __vma_adjust(vma, start, end, pgoff, insert, ((void *)0));=0D }=0D extern struct vm_area_struct *vma_merge(struct mm_struct *,=0D struct vm_area_struct *prev, unsigned long addr, unsigned long end,=0D unsigned long vm_flags, struct anon_vma *, struct file *, unsigned long,=0D struct mempolicy *, struct vm_userfaultfd_ctx, struct anon_vma_name *);=0D extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);=0D extern int __split_vma(struct mm_struct *, struct vm_area_struct *,=0D unsigned long addr, int new_below);=0D extern int split_vma(struct mm_struct *, struct vm_area_struct *,=0D unsigned long addr, int new_below);=0D extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *);=0D extern void __vma_link_rb(struct mm_struct *, struct vm_area_struct *,=0D struct rb_node **, struct rb_node *);=0D extern void unlink_file_vma(struct vm_area_struct *);=0D extern struct vm_area_struct *copy_vma(struct vm_area_struct **,=0D unsigned long addr, unsigned long len, unsigned long pgoff,=0D bool *need_rmap_locks);=0D extern void exit_mmap(struct mm_struct *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int check_data_rlimit(unsign= ed long rlim,=0D unsigned long new,=0D unsigned long start,=0D unsigned long end_data,=0D unsigned long start_data)=0D {=0D if (rlim < (~0UL)) {=0D if (((new - start) + (end_data - start_data)) > rlim)=0D return -28;=0D }=0D =0D return 0;=0D }=0D =0D extern int mm_take_all_locks(struct mm_struct *mm);=0D extern void mm_drop_all_locks(struct mm_struct *mm);=0D =0D extern int set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)= ;=0D extern int replace_mm_exe_file(struct mm_struct *mm, struct file *new_exe_f= ile);=0D extern struct file *get_mm_exe_file(struct mm_struct *mm);=0D extern struct file *get_task_exe_file(struct task_struct *task);=0D =0D extern bool may_expand_vm(struct mm_struct *, vm_flags_t, unsigned long npa= ges);=0D extern void vm_stat_account(struct mm_struct *, vm_flags_t, long npages);=0D =0D extern bool vma_is_special_mapping(const struct vm_area_struct *vma,=0D const struct vm_special_mapping *sm);=0D extern struct vm_area_struct *_install_special_mapping(struct mm_struct *mm= ,=0D unsigned long addr, unsigned long len,=0D unsigned long flags,=0D const struct vm_special_mapping *spec);=0D =0D extern int install_special_mapping(struct mm_struct *mm,=0D unsigned long addr, unsigned long len,=0D unsigned long flags, struct page **pages);=0D =0D unsigned long randomize_stack_top(unsigned long stack_top);=0D =0D extern unsigned long get_unmapped_area(struct file *, unsigned long, unsign= ed long, unsigned long, unsigned long);=0D =0D extern unsigned long mmap_region(struct file *file, unsigned long addr,=0D unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,=0D struct list_head *uf);=0D extern unsigned long do_mmap(struct file *file, unsigned long addr,=0D unsigned long len, unsigned long prot, unsigned long flags,=0D unsigned long pgoff, unsigned long *populate, struct list_head *uf);=0D extern int __do_munmap(struct mm_struct *, unsigned long, size_t,=0D struct list_head *uf, bool downgrade);=0D extern int do_munmap(struct mm_struct *, unsigned long, size_t,=0D struct list_head *uf);=0D extern int do_madvise(struct mm_struct *mm, unsigned long start, size_t len= _in, int behavior);=0D =0D =0D extern int __mm_populate(unsigned long addr, unsigned long len,=0D int ignore_errors);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_populate(unsigned lo= ng addr, unsigned long len)=0D {=0D =0D (void) __mm_populate(addr, len, 1);=0D }=0D =0D =0D =0D =0D =0D extern int __attribute__((__warn_unused_result__)) vm_brk(unsigned long, un= signed long);=0D extern int __attribute__((__warn_unused_result__)) vm_brk_flags(unsigned lo= ng, unsigned long, unsigned long);=0D extern int vm_munmap(unsigned long, size_t);=0D extern unsigned long __attribute__((__warn_unused_result__)) vm_mmap(struct= file *, unsigned long,=0D unsigned long, unsigned long,=0D unsigned long, unsigned long);=0D =0D struct vm_unmapped_area_info {=0D =0D unsigned long flags;=0D unsigned long length;=0D unsigned long low_limit;=0D unsigned long high_limit;=0D unsigned long align_mask;=0D unsigned long align_offset;=0D };=0D =0D extern unsigned long vm_unmapped_area(struct vm_unmapped_area_info *info);= =0D =0D =0D extern void truncate_inode_pages(struct address_space *, loff_t);=0D extern void truncate_inode_pages_range(struct address_space *,=0D loff_t lstart, loff_t lend);=0D extern void truncate_inode_pages_final(struct address_space *);=0D =0D =0D extern vm_fault_t filemap_fault(struct vm_fault *vmf);=0D extern vm_fault_t filemap_map_pages(struct vm_fault *vmf,=0D unsigned long start_pgoff, unsigned long end_pgoff);=0D extern vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf);=0D =0D extern unsigned long stack_guard_gap;=0D =0D extern int expand_stack(struct vm_area_struct *vma, unsigned long address);= =0D =0D =0D extern int expand_downwards(struct vm_area_struct *vma,=0D unsigned long address);=0D =0D =0D =0D =0D =0D =0D =0D extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned lon= g addr);=0D extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigne= d long addr,=0D struct vm_area_struct **pprev);=0D # 2766 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,=0D unsigned long start_addr,=0D unsigned long end_addr)=0D {=0D struct vm_area_struct *vma =3D find_vma(mm, start_addr);=0D =0D if (vma && end_addr <=3D vma->vm_start)=0D vma =3D ((void *)0);=0D return vma;=0D }=0D # 2785 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)= =0D {=0D struct vm_area_struct *vma =3D find_vma(mm, addr);=0D =0D if (vma && addr < vma->vm_start)=0D vma =3D ((void *)0);=0D =0D return vma;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long vm_start_gap(s= truct vm_area_struct *vma)=0D {=0D unsigned long vm_start =3D vma->vm_start;=0D =0D if (vma->vm_flags & 0x00000100) {=0D vm_start -=3D stack_guard_gap;=0D if (vm_start > vma->vm_start)=0D vm_start =3D 0;=0D }=0D return vm_start;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long vm_end_gap(str= uct vm_area_struct *vma)=0D {=0D unsigned long vm_end =3D vma->vm_end;=0D =0D if (vma->vm_flags & 0x00000000) {=0D vm_end +=3D stack_guard_gap;=0D if (vm_end < vma->vm_end)=0D vm_end =3D -((1UL) << (12));=0D }=0D return vm_end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long vma_pages(stru= ct vm_area_struct *vma)=0D {=0D return (vma->vm_end - vma->vm_start) >> (12);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct vm_area_struct *find_= exact_vma(struct mm_struct *mm,=0D unsigned long vm_start, unsigned long vm_end)=0D {=0D struct vm_area_struct *vma =3D find_vma(mm, vm_start);=0D =0D if (vma && (vma->vm_start !=3D vm_start || vma->vm_end !=3D vm_end))=0D vma =3D ((void *)0);=0D =0D return vma;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool range_in_vma(struct vm_= area_struct *vma,=0D unsigned long start, unsigned long end)=0D {=0D return (vma && vma->vm_start <=3D start && end <=3D vma->vm_end);=0D }=0D =0D =0D pgprot_t vm_get_page_prot(unsigned long vm_flags);=0D void vma_set_page_prot(struct vm_area_struct *vma);=0D # 2857 "./include/linux/mm.h"=0D void vma_set_file(struct vm_area_struct *vma, struct file *file);=0D =0D =0D =0D =0D =0D =0D struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long ad= dr);=0D int remap_pfn_range(struct vm_area_struct *, unsigned long addr,=0D unsigned long pfn, unsigned long size, pgprot_t);=0D int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,= =0D unsigned long pfn, unsigned long size, pgprot_t prot);=0D int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page= *);=0D int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr,=0D struct page **pages, unsigned long *num);=0D int vm_map_pages(struct vm_area_struct *vma, struct page **pages,=0D unsigned long num);=0D int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages,=0D unsigned long num);=0D vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr,=0D unsigned long pfn);=0D vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long ad= dr,=0D unsigned long pfn, pgprot_t pgprot);=0D vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr,= =0D pfn_t pfn);=0D vm_fault_t vmf_insert_mixed_prot(struct vm_area_struct *vma, unsigned long = addr,=0D pfn_t pfn, pgprot_t pgprot);=0D vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma,=0D unsigned long addr, pfn_t pfn);=0D int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned= long len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) vm_fault_t vmf_insert_page(s= truct vm_area_struct *vma,=0D unsigned long addr, struct page *page)=0D {=0D int err =3D vm_insert_page(vma, addr, page);=0D =0D if (err =3D=3D -12)=0D return VM_FAULT_OOM;=0D if (err < 0 && err !=3D -16)=0D return VM_FAULT_SIGBUS;=0D =0D return VM_FAULT_NOPAGE;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int io_remap_pfn_range(struc= t vm_area_struct *vma,=0D unsigned long addr, unsigned long pfn,=0D unsigned long size, pgprot_t prot)=0D {=0D return remap_pfn_range(vma, addr, pfn, size, (prot));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) vm_fault_t vmf_error(int err= )=0D {=0D if (err =3D=3D -12)=0D return VM_FAULT_OOM;=0D return VM_FAULT_SIGBUS;=0D }=0D =0D struct page *follow_page(struct vm_area_struct *vma, unsigned long address,= =0D unsigned int foll_flags);=0D # 2996 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vm_fault_to_errno(vm_fau= lt_t vm_fault, int foll_flags)=0D {=0D if (vm_fault & VM_FAULT_OOM)=0D return -12;=0D if (vm_fault & (VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE))=0D return (foll_flags & 0x100) ? -133 : -14;=0D if (vm_fault & (VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV))=0D return -14;=0D return 0;=0D }=0D =0D typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data);=0D extern int apply_to_page_range(struct mm_struct *mm, unsigned long address,= =0D unsigned long size, pte_fn_t fn, void *data);=0D extern int apply_to_existing_page_range(struct mm_struct *mm,=0D unsigned long address, unsigned long size,=0D pte_fn_t fn, void *data);=0D =0D extern void init_mem_debugging_and_hardening(void);=0D # 3043 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_poisoning_enabled(= void) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_poisoning_enabled_= static(void) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kernel_poison_pages(s= truct page *page, int nunmpages) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kernel_poison_pages(str= uct page *page, int numpages) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kernel_unpoison_pages(s= truct page *page, int numpages) { }=0D =0D =0D extern struct static_key_false init_on_alloc;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool want_init_on_alloc(gfp_= t flags)=0D {=0D if ((0 ? __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*= &(&init_on_alloc)->key), struct static_key) && !__builtin_types_compatible_= p(typeof(*&(&init_on_alloc)->key), struct static_key_true) && !__builtin_ty= pes_compatible_p(typeof(*&(&init_on_alloc)->key), struct static_key_false))= ____wrong_branch_error(); static_key_count((struct static_key *)&(&init_on= _alloc)->key) > 0; })), 1) : __builtin_expect(!!(({ if (!__builtin_types_co= mpatible_p(typeof(*&(&init_on_alloc)->key), struct static_key) && !__builti= n_types_compatible_p(typeof(*&(&init_on_alloc)->key), struct static_key_tru= e) && !__builtin_types_compatible_p(typeof(*&(&init_on_alloc)->key), struct= static_key_false)) ____wrong_branch_error(); static_key_count((struct stat= ic_key *)&(&init_on_alloc)->key) > 0; })), 0)))=0D =0D return true;=0D return flags & (( gfp_t)0x100u);=0D }=0D =0D extern struct static_key_false init_on_free;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool want_init_on_free(void)= =0D {=0D return (0 ? __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeo= f(*&(&init_on_free)->key), struct static_key) && !__builtin_types_compatibl= e_p(typeof(*&(&init_on_free)->key), struct static_key_true) && !__builtin_t= ypes_compatible_p(typeof(*&(&init_on_free)->key), struct static_key_false))= ____wrong_branch_error(); static_key_count((struct static_key *)&(&init_on= _free)->key) > 0; })), 1) : __builtin_expect(!!(({ if (!__builtin_types_com= patible_p(typeof(*&(&init_on_free)->key), struct static_key) && !__builtin_= types_compatible_p(typeof(*&(&init_on_free)->key), struct static_key_true) = && !__builtin_types_compatible_p(typeof(*&(&init_on_free)->key), struct sta= tic_key_false)) ____wrong_branch_error(); static_key_count((struct static_k= ey *)&(&init_on_free)->key) > 0; })), 0));=0D =0D }=0D =0D extern bool _debug_pagealloc_enabled_early;=0D extern struct static_key_false _debug_pagealloc_enabled;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool debug_pagealloc_enabled= (void)=0D {=0D return 1 &&=0D _debug_pagealloc_enabled_early;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool debug_pagealloc_enabled= _static(void)=0D {=0D if (!1)=0D return false;=0D =0D return __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(= &_debug_pagealloc_enabled)->key), struct static_key) && !__builtin_types_co= mpatible_p(typeof(*&(&_debug_pagealloc_enabled)->key), struct static_key_tr= ue) && !__builtin_types_compatible_p(typeof(*&(&_debug_pagealloc_enabled)->= key), struct static_key_false)) ____wrong_branch_error(); static_key_count(= (struct static_key *)&(&_debug_pagealloc_enabled)->key) > 0; })), 0);=0D }=0D =0D =0D =0D =0D =0D =0D extern void __kernel_map_pages(struct page *page, int numpages, int enable)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_pagealloc_map_pag= es(struct page *page, int numpages)=0D {=0D if (debug_pagealloc_enabled_static())=0D __kernel_map_pages(page, numpages, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_pagealloc_unmap_p= ages(struct page *page, int numpages)=0D {=0D if (debug_pagealloc_enabled_static())=0D __kernel_map_pages(page, numpages, 0);=0D }=0D # 3115 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct vm_area_struct *get_g= ate_vma(struct mm_struct *mm)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int in_gate_area_no_mm(unsig= ned long addr) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int in_gate_area(struct mm_s= truct *mm, unsigned long addr)=0D {=0D return 0;=0D }=0D =0D =0D extern bool process_shares_mm(struct task_struct *p, struct mm_struct *mm);= =0D =0D =0D extern int sysctl_drop_caches;=0D int drop_caches_sysctl_handler(struct ctl_table *, int, void *, size_t *,=0D loff_t *);=0D =0D =0D void drop_slab(void);=0D =0D =0D =0D =0D extern int randomize_va_space;=0D =0D =0D const char * arch_vma_name(struct vm_area_struct *vma);=0D =0D void print_vma_addr(char *prefix, unsigned long rip);=0D # 3158 "./include/linux/mm.h"=0D void *sparse_buffer_alloc(unsigned long size);=0D struct page * __populate_section_memmap(unsigned long pfn,=0D unsigned long nr_pages, int nid, struct vmem_altmap *altmap);=0D pgd_t *vmemmap_pgd_populate(unsigned long addr, int node);=0D p4d_t *vmemmap_p4d_populate(pgd_t *pgd, unsigned long addr, int node);=0D pud_t *vmemmap_pud_populate(p4d_t *p4d, unsigned long addr, int node);=0D pmd_t *vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node);=0D pte_t *vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node,=0D struct vmem_altmap *altmap);=0D void *vmemmap_alloc_block(unsigned long size, int node);=0D struct vmem_altmap;=0D void *vmemmap_alloc_block_buf(unsigned long size, int node,=0D struct vmem_altmap *altmap);=0D void vmemmap_verify(pte_t *, int, unsigned long, unsigned long);=0D int vmemmap_populate_basepages(unsigned long start, unsigned long end,=0D int node, struct vmem_altmap *altmap);=0D int vmemmap_populate(unsigned long start, unsigned long end, int node,=0D struct vmem_altmap *altmap);=0D void vmemmap_populate_print_last(void);=0D =0D =0D =0D =0D void register_page_bootmem_memmap(unsigned long section_nr, struct page *ma= p,=0D unsigned long nr_pages);=0D =0D enum mf_flags {=0D MF_COUNT_INCREASED =3D 1 << 0,=0D MF_ACTION_REQUIRED =3D 1 << 1,=0D MF_MUST_KILL =3D 1 << 2,=0D MF_SOFT_OFFLINE =3D 1 << 3,=0D MF_UNPOISON =3D 1 << 4,=0D };=0D extern int memory_failure(unsigned long pfn, int flags);=0D extern void memory_failure_queue(unsigned long pfn, int flags);=0D extern void memory_failure_queue_kick(int cpu);=0D extern int unpoison_memory(unsigned long pfn);=0D extern int sysctl_memory_failure_early_kill;=0D extern int sysctl_memory_failure_recovery;=0D extern void shake_page(struct page *p);=0D extern atomic_long_t num_poisoned_pages ;=0D extern int soft_offline_page(unsigned long pfn, int flags);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __get_huge_page_for_hwpo= ison(unsigned long pfn, int flags)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_memory_failure(unsi= gned long pfn, int flags)=0D {=0D return -6;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_is_platform_page(u= 64 paddr)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D =0D enum mf_result {=0D MF_IGNORED,=0D MF_FAILED,=0D MF_DELAYED,=0D MF_RECOVERED,=0D };=0D =0D enum mf_action_page_type {=0D MF_MSG_KERNEL,=0D MF_MSG_KERNEL_HIGH_ORDER,=0D MF_MSG_SLAB,=0D MF_MSG_DIFFERENT_COMPOUND,=0D MF_MSG_HUGE,=0D MF_MSG_FREE_HUGE,=0D MF_MSG_NON_PMD_HUGE,=0D MF_MSG_UNMAP_FAILED,=0D MF_MSG_DIRTY_SWAPCACHE,=0D MF_MSG_CLEAN_SWAPCACHE,=0D MF_MSG_DIRTY_MLOCKED_LRU,=0D MF_MSG_CLEAN_MLOCKED_LRU,=0D MF_MSG_DIRTY_UNEVICTABLE_LRU,=0D MF_MSG_CLEAN_UNEVICTABLE_LRU,=0D MF_MSG_DIRTY_LRU,=0D MF_MSG_CLEAN_LRU,=0D MF_MSG_TRUNCATED_LRU,=0D MF_MSG_BUDDY,=0D MF_MSG_DAX,=0D MF_MSG_UNSPLIT_THP,=0D MF_MSG_DIFFERENT_PAGE_SIZE,=0D MF_MSG_UNKNOWN,=0D };=0D =0D =0D extern void clear_huge_page(struct page *page,=0D unsigned long addr_hint,=0D unsigned int pages_per_huge_page);=0D extern void copy_user_huge_page(struct page *dst, struct page *src,=0D unsigned long addr_hint,=0D struct vm_area_struct *vma,=0D unsigned int pages_per_huge_page);=0D extern long copy_huge_page_from_user(struct page *dst_page,=0D const void *usr_src,=0D unsigned int pages_per_huge_page,=0D bool allow_pagefault);=0D # 3281 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vma_is_special_huge(con= st struct vm_area_struct *vma)=0D {=0D return vma_is_dax(vma) || (vma->vm_file &&=0D (vma->vm_flags & (0x00000400 | 0x10000000)));=0D }=0D =0D =0D =0D =0D extern unsigned int _debug_guardpage_minorder;=0D extern struct static_key_false _debug_guardpage_enabled;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int debug_guardpage= _minorder(void)=0D {=0D return _debug_guardpage_minorder;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool debug_guardpage_enabled= (void)=0D {=0D return __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(= &_debug_guardpage_enabled)->key), struct static_key) && !__builtin_types_co= mpatible_p(typeof(*&(&_debug_guardpage_enabled)->key), struct static_key_tr= ue) && !__builtin_types_compatible_p(typeof(*&(&_debug_guardpage_enabled)->= key), struct static_key_false)) ____wrong_branch_error(); static_key_count(= (struct static_key *)&(&_debug_guardpage_enabled)->key) > 0; })), 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_is_guard(struct pa= ge *page)=0D {=0D if (!debug_guardpage_enabled())=0D return false;=0D =0D return PageGuard(page);=0D }=0D # 3319 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void setup_nr_node_ids(void)= {}=0D =0D =0D extern int memcmp_pages(struct page *page1, struct page *page2);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pages_identical(struct p= age *page1, struct page *page2)=0D {=0D return !memcmp_pages(page1, page2);=0D }=0D # 3341 "./include/linux/mm.h"=0D extern int sysctl_nr_trim_pages;=0D =0D =0D void mem_dump_obj(void *object);=0D # 3357 "./include/linux/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int seal_check_future_write(= int seals, struct vm_area_struct *vma)=0D {=0D if (seals & 0x0010) {=0D =0D =0D =0D =0D if ((vma->vm_flags & 0x00000008) && (vma->vm_flags & 0x00000002))=0D return -1;=0D # 3374 "./include/linux/mm.h"=0D if (vma->vm_flags & 0x00000008)=0D vma->vm_flags &=3D ~(0x00000020);=0D }=0D =0D return 0;=0D }=0D =0D =0D int madvise_set_anon_name(struct mm_struct *mm, unsigned long start,=0D unsigned long len_in,=0D struct anon_vma_name *anon_name);=0D # 25 "./include/linux/net.h" 2=0D # 1 "./include/linux/sockptr.h" 1=0D # 14 "./include/linux/sockptr.h"=0D typedef struct {=0D union {=0D void *kernel;=0D void *user;=0D };=0D bool is_kernel : 1;=0D } sockptr_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sockptr_is_kernel(sockp= tr_t sockptr)=0D {=0D return sockptr.is_kernel;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) sockptr_t KERNEL_SOCKPTR(voi= d *p)=0D {=0D return (sockptr_t) { .kernel =3D p, .is_kernel =3D true };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) sockptr_t USER_SOCKPTR(void = *p)=0D {=0D return (sockptr_t) { .user =3D p };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sockptr_is_null(sockptr= _t sockptr)=0D {=0D if (sockptr_is_kernel(sockptr))=0D return !sockptr.kernel;=0D return !sockptr.user;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_from_sockptr_offset= (void *dst, sockptr_t src,=0D size_t offset, size_t size)=0D {=0D if (!sockptr_is_kernel(src))=0D return copy_from_user(dst, src.user + offset, size);=0D memcpy(dst, src.kernel + offset, size);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_from_sockptr(void *= dst, sockptr_t src, size_t size)=0D {=0D return copy_from_sockptr_offset(dst, src, 0, size);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_to_sockptr_offset(s= ockptr_t dst, size_t offset,=0D const void *src, size_t size)=0D {=0D if (!sockptr_is_kernel(dst))=0D return copy_to_user(dst.user + offset, src, size);=0D memcpy(dst.kernel + offset, src, size);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *memdup_sockptr(sockptr= _t src, size_t len)=0D {=0D void *p =3D __kmalloc_track_caller(len, ((( gfp_t)(0x400u|0x800u)) | (( gf= p_t)0x40u) | (( gfp_t)0x80u) | (( gfp_t)0x100000u)) | (( gfp_t)0x2000u), (u= nsigned long)__builtin_return_address(0));=0D =0D if (!p)=0D return ERR_PTR(-12);=0D if (copy_from_sockptr(p, src, len)) {=0D kfree(p);=0D return ERR_PTR(-14);=0D }=0D return p;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *memdup_sockptr_nul(soc= kptr_t src, size_t len)=0D {=0D char *p =3D __kmalloc_track_caller(len + 1, ((( gfp_t)(0x400u|0x800u)) | (= ( gfp_t)0x40u) | (( gfp_t)0x80u)), (unsigned long)__builtin_return_address(= 0));=0D =0D if (!p)=0D return ERR_PTR(-12);=0D if (copy_from_sockptr(p, src, len)) {=0D kfree(p);=0D return ERR_PTR(-14);=0D }=0D p[len] =3D '\0';=0D return p;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long strncpy_from_sockptr(ch= ar *dst, sockptr_t src, size_t count)=0D {=0D if (sockptr_is_kernel(src)) {=0D size_t len =3D __builtin_choose_expr(((!!(sizeof((typeof(strnlen(src.kern= el, count - 1) + 1) *)1 =3D=3D (typeof(count) *)1))) && ((sizeof(int) =3D= =3D sizeof(*(8 ? ((void *)((long)(strnlen(src.kernel, count - 1) + 1) * 0l)= ) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(count)= * 0l)) : (int *)8))))), ((strnlen(src.kernel, count - 1) + 1) < (count) ? = (strnlen(src.kernel, count - 1) + 1) : (count)), ({ typeof(strnlen(src.kern= el, count - 1) + 1) __UNIQUE_ID___x214 =3D (strnlen(src.kernel, count - 1) = + 1); typeof(count) __UNIQUE_ID___y215 =3D (count); ((__UNIQUE_ID___x214) <= (__UNIQUE_ID___y215) ? (__UNIQUE_ID___x214) : (__UNIQUE_ID___y215)); }));= =0D =0D memcpy(dst, src.kernel, len);=0D return len;=0D }=0D return strncpy_from_user(dst, src.user, count);=0D }=0D # 26 "./include/linux/net.h" 2=0D =0D # 1 "./include/uapi/linux/net.h" 1=0D # 23 "./include/uapi/linux/net.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/socket.h" 1=0D # 24 "./include/uapi/linux/net.h" 2=0D # 48 "./include/uapi/linux/net.h"=0D typedef enum {=0D SS_FREE =3D 0,=0D SS_UNCONNECTED,=0D SS_CONNECTING,=0D SS_CONNECTED,=0D SS_DISCONNECTING=0D } socket_state;=0D # 28 "./include/linux/net.h" 2=0D =0D struct poll_table_struct;=0D struct pipe_inode_info;=0D struct inode;=0D struct file;=0D struct net;=0D # 61 "./include/linux/net.h"=0D enum sock_type {=0D SOCK_STREAM =3D 1,=0D SOCK_DGRAM =3D 2,=0D SOCK_RAW =3D 3,=0D SOCK_RDM =3D 4,=0D SOCK_SEQPACKET =3D 5,=0D SOCK_DCCP =3D 6,=0D SOCK_PACKET =3D 10,=0D };=0D # 90 "./include/linux/net.h"=0D enum sock_shutdown_cmd {=0D SHUT_RD,=0D SHUT_WR,=0D SHUT_RDWR,=0D };=0D =0D struct socket_wq {=0D =0D wait_queue_head_t wait;=0D struct fasync_struct *fasync_list;=0D unsigned long flags;=0D struct callback_head rcu;=0D } __attribute__((__aligned__((1 << 6))));=0D # 114 "./include/linux/net.h"=0D struct socket {=0D socket_state state;=0D =0D short type;=0D =0D unsigned long flags;=0D =0D struct file *file;=0D struct sock *sk;=0D const struct proto_ops *ops;=0D =0D struct socket_wq wq;=0D };=0D # 137 "./include/linux/net.h"=0D typedef struct {=0D size_t written;=0D size_t count;=0D union {=0D char *buf;=0D void *data;=0D } arg;=0D int error;=0D } read_descriptor_t;=0D =0D struct vm_area_struct;=0D struct page;=0D struct sockaddr;=0D struct msghdr;=0D struct module;=0D struct sk_buff;=0D typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *,=0D unsigned int, size_t);=0D =0D struct proto_ops {=0D int family;=0D struct module *owner;=0D int (*release) (struct socket *sock);=0D int (*bind) (struct socket *sock,=0D struct sockaddr *myaddr,=0D int sockaddr_len);=0D int (*connect) (struct socket *sock,=0D struct sockaddr *vaddr,=0D int sockaddr_len, int flags);=0D int (*socketpair)(struct socket *sock1,=0D struct socket *sock2);=0D int (*accept) (struct socket *sock,=0D struct socket *newsock, int flags, bool kern);=0D int (*getname) (struct socket *sock,=0D struct sockaddr *addr,=0D int peer);=0D __poll_t (*poll) (struct file *file, struct socket *sock,=0D struct poll_table_struct *wait);=0D int (*ioctl) (struct socket *sock, unsigned int cmd,=0D unsigned long arg);=0D =0D =0D =0D =0D int (*gettstamp) (struct socket *sock, void *userstamp,=0D bool timeval, bool time32);=0D int (*listen) (struct socket *sock, int len);=0D int (*shutdown) (struct socket *sock, int flags);=0D int (*setsockopt)(struct socket *sock, int level,=0D int optname, sockptr_t optval,=0D unsigned int optlen);=0D int (*getsockopt)(struct socket *sock, int level,=0D int optname, char *optval, int *optlen);=0D void (*show_fdinfo)(struct seq_file *m, struct socket *sock);=0D int (*sendmsg) (struct socket *sock, struct msghdr *m,=0D size_t total_len);=0D # 201 "./include/linux/net.h"=0D int (*recvmsg) (struct socket *sock, struct msghdr *m,=0D size_t total_len, int flags);=0D int (*mmap) (struct file *file, struct socket *sock,=0D struct vm_area_struct * vma);=0D ssize_t (*sendpage) (struct socket *sock, struct page *page,=0D int offset, size_t size, int flags);=0D ssize_t (*splice_read)(struct socket *sock, loff_t *ppos,=0D struct pipe_inode_info *pipe, size_t len, unsigned int flags);=0D int (*set_peek_off)(struct sock *sk, int val);=0D int (*peek_len)(struct socket *sock);=0D =0D =0D =0D =0D int (*read_sock)(struct sock *sk, read_descriptor_t *desc,=0D sk_read_actor_t recv_actor);=0D int (*sendpage_locked)(struct sock *sk, struct page *page,=0D int offset, size_t size, int flags);=0D int (*sendmsg_locked)(struct sock *sk, struct msghdr *msg,=0D size_t size);=0D int (*set_rcvlowat)(struct sock *sk, int val);=0D };=0D =0D =0D =0D =0D struct net_proto_family {=0D int family;=0D int (*create)(struct net *net, struct socket *sock,=0D int protocol, int kern);=0D struct module *owner;=0D };=0D =0D struct iovec;=0D struct kvec;=0D =0D enum {=0D SOCK_WAKE_IO,=0D SOCK_WAKE_WAITD,=0D SOCK_WAKE_SPACE,=0D SOCK_WAKE_URG,=0D };=0D =0D int sock_wake_async(struct socket_wq *sk_wq, int how, int band);=0D int sock_register(const struct net_proto_family *fam);=0D void sock_unregister(int family);=0D bool sock_is_registered(int family);=0D int __sock_create(struct net *net, int family, int type, int proto,=0D struct socket **res, int kern);=0D int sock_create(int family, int type, int proto, struct socket **res);=0D int sock_create_kern(struct net *net, int family, int type, int proto, stru= ct socket **res);=0D int sock_create_lite(int family, int type, int proto, struct socket **res);= =0D struct socket *sock_alloc(void);=0D void sock_release(struct socket *sock);=0D int sock_sendmsg(struct socket *sock, struct msghdr *msg);=0D int sock_recvmsg(struct socket *sock, struct msghdr *msg, int flags);=0D struct file *sock_alloc_file(struct socket *sock, int flags, const char *dn= ame);=0D struct socket *sockfd_lookup(int fd, int *err);=0D struct socket *sock_from_file(struct file *file);=0D =0D int net_ratelimit(void);=0D # 319 "./include/linux/net.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sendpage_ok(struct page= *page)=0D {=0D return !PageSlab(page) && page_count(page) >=3D 1;=0D }=0D =0D int kernel_sendmsg(struct socket *sock, struct msghdr *msg, struct kvec *ve= c,=0D size_t num, size_t len);=0D int kernel_sendmsg_locked(struct sock *sk, struct msghdr *msg,=0D struct kvec *vec, size_t num, size_t len);=0D int kernel_recvmsg(struct socket *sock, struct msghdr *msg, struct kvec *ve= c,=0D size_t num, size_t len, int flags);=0D =0D int kernel_bind(struct socket *sock, struct sockaddr *addr, int addrlen);=0D int kernel_listen(struct socket *sock, int backlog);=0D int kernel_accept(struct socket *sock, struct socket **newsock, int flags);= =0D int kernel_connect(struct socket *sock, struct sockaddr *addr, int addrlen,= =0D int flags);=0D int kernel_getsockname(struct socket *sock, struct sockaddr *addr);=0D int kernel_getpeername(struct socket *sock, struct sockaddr *addr);=0D int kernel_sendpage(struct socket *sock, struct page *page, int offset,=0D size_t size, int flags);=0D int kernel_sendpage_locked(struct sock *sk, struct page *page, int offset,= =0D size_t size, int flags);=0D int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how);= =0D =0D =0D u32 kernel_sock_ip_overhead(struct sock *sk);=0D # 33 "net/ipv6/route.c" 2=0D # 1 "./include/uapi/linux/route.h" 1=0D # 27 "./include/uapi/linux/route.h"=0D # 1 "./include/uapi/linux/if.h" 1=0D # 23 "./include/uapi/linux/if.h"=0D # 1 "./include/uapi/linux/libc-compat.h" 1=0D # 24 "./include/uapi/linux/if.h" 2=0D # 37 "./include/uapi/linux/if.h"=0D # 1 "./include/uapi/linux/hdlc/ioctl.h" 1=0D # 40 "./include/uapi/linux/hdlc/ioctl.h"=0D typedef struct {=0D unsigned int clock_rate;=0D unsigned int clock_type;=0D unsigned short loopback;=0D } sync_serial_settings;=0D =0D typedef struct {=0D unsigned int clock_rate;=0D unsigned int clock_type;=0D unsigned short loopback;=0D unsigned int slot_map;=0D } te1_settings;=0D =0D typedef struct {=0D unsigned short encoding;=0D unsigned short parity;=0D } raw_hdlc_proto;=0D =0D typedef struct {=0D unsigned int t391;=0D unsigned int t392;=0D unsigned int n391;=0D unsigned int n392;=0D unsigned int n393;=0D unsigned short lmi;=0D unsigned short dce;=0D } fr_proto;=0D =0D typedef struct {=0D unsigned int dlci;=0D } fr_proto_pvc;=0D =0D typedef struct {=0D unsigned int dlci;=0D char master[16];=0D }fr_proto_pvc_info;=0D =0D typedef struct {=0D unsigned int interval;=0D unsigned int timeout;=0D } cisco_proto;=0D =0D typedef struct {=0D unsigned short dce;=0D unsigned int modulo;=0D unsigned int window;=0D unsigned int t1;=0D unsigned int t2;=0D unsigned int n2;=0D } x25_hdlc_proto;=0D # 38 "./include/uapi/linux/if.h" 2=0D # 82 "./include/uapi/linux/if.h"=0D enum net_device_flags {=0D =0D =0D IFF_UP =3D 1<<0,=0D IFF_BROADCAST =3D 1<<1,=0D IFF_DEBUG =3D 1<<2,=0D IFF_LOOPBACK =3D 1<<3,=0D IFF_POINTOPOINT =3D 1<<4,=0D IFF_NOTRAILERS =3D 1<<5,=0D IFF_RUNNING =3D 1<<6,=0D IFF_NOARP =3D 1<<7,=0D IFF_PROMISC =3D 1<<8,=0D IFF_ALLMULTI =3D 1<<9,=0D IFF_MASTER =3D 1<<10,=0D IFF_SLAVE =3D 1<<11,=0D IFF_MULTICAST =3D 1<<12,=0D IFF_PORTSEL =3D 1<<13,=0D IFF_AUTOMEDIA =3D 1<<14,=0D IFF_DYNAMIC =3D 1<<15,=0D =0D =0D IFF_LOWER_UP =3D 1<<16,=0D IFF_DORMANT =3D 1<<17,=0D IFF_ECHO =3D 1<<18,=0D =0D };=0D # 167 "./include/uapi/linux/if.h"=0D enum {=0D IF_OPER_UNKNOWN,=0D IF_OPER_NOTPRESENT,=0D IF_OPER_DOWN,=0D IF_OPER_LOWERLAYERDOWN,=0D IF_OPER_TESTING,=0D IF_OPER_DORMANT,=0D IF_OPER_UP,=0D };=0D =0D =0D enum {=0D IF_LINK_MODE_DEFAULT,=0D IF_LINK_MODE_DORMANT,=0D IF_LINK_MODE_TESTING,=0D };=0D # 196 "./include/uapi/linux/if.h"=0D struct ifmap {=0D unsigned long mem_start;=0D unsigned long mem_end;=0D unsigned short base_addr;=0D unsigned char irq;=0D unsigned char dma;=0D unsigned char port;=0D =0D };=0D =0D =0D struct if_settings {=0D unsigned int type;=0D unsigned int size;=0D union {=0D =0D raw_hdlc_proto *raw_hdlc;=0D cisco_proto *cisco;=0D fr_proto *fr;=0D fr_proto_pvc *fr_pvc;=0D fr_proto_pvc_info *fr_pvc_info;=0D x25_hdlc_proto *x25;=0D =0D =0D sync_serial_settings *sync;=0D te1_settings *te1;=0D } ifs_ifsu;=0D };=0D # 234 "./include/uapi/linux/if.h"=0D struct ifreq {=0D =0D union=0D {=0D char ifrn_name[16];=0D } ifr_ifrn;=0D =0D union {=0D struct sockaddr ifru_addr;=0D struct sockaddr ifru_dstaddr;=0D struct sockaddr ifru_broadaddr;=0D struct sockaddr ifru_netmask;=0D struct sockaddr ifru_hwaddr;=0D short ifru_flags;=0D int ifru_ivalue;=0D int ifru_mtu;=0D struct ifmap ifru_map;=0D char ifru_slave[16];=0D char ifru_newname[16];=0D void * ifru_data;=0D struct if_settings ifru_settings;=0D } ifr_ifru;=0D };=0D # 286 "./include/uapi/linux/if.h"=0D struct ifconf {=0D int ifc_len;=0D union {=0D char *ifcu_buf;=0D struct ifreq *ifcu_req;=0D } ifc_ifcu;=0D };=0D # 28 "./include/uapi/linux/route.h" 2=0D =0D =0D =0D struct rtentry {=0D unsigned long rt_pad1;=0D struct sockaddr rt_dst;=0D struct sockaddr rt_gateway;=0D struct sockaddr rt_genmask;=0D unsigned short rt_flags;=0D short rt_pad2;=0D unsigned long rt_pad3;=0D void *rt_pad4;=0D short rt_metric;=0D char *rt_dev;=0D unsigned long rt_mtu;=0D =0D =0D =0D unsigned long rt_window;=0D unsigned short rt_irtt;=0D };=0D # 34 "net/ipv6/route.c" 2=0D # 1 "./include/linux/netdevice.h" 1=0D # 26 "./include/linux/netdevice.h"=0D # 1 "./include/linux/delay.h" 1=0D # 25 "./include/linux/delay.h"=0D extern unsigned long loops_per_jiffy;=0D =0D =0D # 1 "./arch/riscv/include/asm/delay.h" 1=0D # 10 "./arch/riscv/include/asm/delay.h"=0D extern unsigned long riscv_timebase;=0D =0D =0D extern void udelay(unsigned long usecs);=0D =0D =0D extern void ndelay(unsigned long nsecs);=0D =0D extern void __delay(unsigned long cycles);=0D # 28 "./include/linux/delay.h" 2=0D # 57 "./include/linux/delay.h"=0D extern unsigned long lpj_fine;=0D void calibrate_delay(void);=0D void __attribute__((weak)) calibration_delay_done(void);=0D void msleep(unsigned int msecs);=0D unsigned long msleep_interruptible(unsigned int msecs);=0D void usleep_range_state(unsigned long min, unsigned long max,=0D unsigned int state);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void usleep_range(unsigned l= ong min, unsigned long max)=0D {=0D usleep_range_state(min, max, 0x0002);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void usleep_idle_range(unsig= ned long min, unsigned long max)=0D {=0D usleep_range_state(min, max, (0x0002 | 0x0400));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ssleep(unsigned int sec= onds)=0D {=0D msleep(seconds * 1000);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fsleep(unsigned long us= ecs)=0D {=0D if (usecs <=3D 10)=0D udelay(usecs);=0D else if (usecs <=3D 20000)=0D usleep_range(usecs, 2 * usecs);=0D else=0D msleep((((usecs) + (1000) - 1) / (1000)));=0D }=0D # 27 "./include/linux/netdevice.h" 2=0D =0D # 1 "./include/linux/prefetch.h" 1=0D # 18 "./include/linux/prefetch.h"=0D struct page;=0D # 55 "./include/linux/prefetch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void prefetch_range(void *ad= dr, size_t len)=0D {=0D =0D =0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void prefetch_page_address(s= truct page *page)=0D {=0D =0D =0D =0D }=0D # 29 "./include/linux/netdevice.h" 2=0D =0D =0D # 1 "./arch/riscv/include/generated/asm/local.h" 1=0D # 1 "./include/asm-generic/local.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 8 "./include/asm-generic/local.h" 2=0D # 22 "./include/asm-generic/local.h"=0D typedef struct=0D {=0D atomic_long_t a;=0D } local_t;=0D # 2 "./arch/riscv/include/generated/asm/local.h" 2=0D # 32 "./include/linux/netdevice.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/dynamic_queue_limits.h" 1=0D # 43 "./include/linux/dynamic_queue_limits.h"=0D struct dql {=0D =0D unsigned int num_queued;=0D unsigned int adj_limit;=0D unsigned int last_obj_cnt;=0D =0D =0D =0D unsigned int limit __attribute__((__aligned__((1 << 6))));=0D unsigned int num_completed;=0D =0D unsigned int prev_ovlimit;=0D unsigned int prev_num_queued;=0D unsigned int prev_last_obj_cnt;=0D =0D unsigned int lowest_slack;=0D unsigned long slack_start_time;=0D =0D =0D unsigned int max_limit;=0D unsigned int min_limit;=0D unsigned int slack_hold_time;=0D };=0D # 75 "./include/linux/dynamic_queue_limits.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dql_queued(struct dql *= dql, unsigned int count)=0D {=0D do { if (__builtin_expect(!!(count > ((~0U) / 16)), 0)) do { do { __asm__ = __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2= :\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t= " ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/l= inux/dynamic_queue_limits.h"), "i" (77), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } while (0);=0D =0D dql->last_obj_cnt =3D count;=0D =0D =0D =0D =0D =0D =0D __asm__ __volatile__("": : :"memory");=0D =0D dql->num_queued +=3D count;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dql_avail(const struct d= ql *dql)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_216(void) ; if (!((sizeof(dql->adj_limit) =3D=3D sizeof(char) || sizeof= (dql->adj_limit) =3D=3D sizeof(short) || sizeof(dql->adj_limit) =3D=3D size= of(int) || sizeof(dql->adj_limit) =3D=3D sizeof(long)) || sizeof(dql->adj_l= imit) =3D=3D sizeof(long long))) __compiletime_assert_216(); } while (0); (= *(const volatile typeof( _Generic((dql->adj_limit), char: (char)0, unsigned= char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsi= gned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0,= signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (= signed long)0, unsigned long long: (unsigned long long)0, signed long long:= (signed long long)0, default: (dql->adj_limit))) *)&(dql->adj_limit)); }) = - ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_21= 7(void) ; if (!((sizeof(dql->num_queued) =3D=3D sizeof(char) || sizeof(dql-= >num_queued) =3D=3D sizeof(short) || sizeof(dql->num_queued) =3D=3D sizeof(= int) || sizeof(dql->num_queued) =3D=3D sizeof(long)) || sizeof(dql->num_que= ued) =3D=3D sizeof(long long))) __compiletime_assert_217(); } while (0); (*= (const volatile typeof( _Generic((dql->num_queued), char: (char)0, unsigned= char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsi= gned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0,= signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (= signed long)0, unsigned long long: (unsigned long long)0, signed long long:= (signed long long)0, default: (dql->num_queued))) *)&(dql->num_queued)); }= );=0D }=0D =0D =0D void dql_completed(struct dql *dql, unsigned int count);=0D =0D =0D void dql_reset(struct dql *dql);=0D =0D =0D void dql_init(struct dql *dql, unsigned int hold_time);=0D # 37 "./include/linux/netdevice.h" 2=0D =0D # 1 "./include/net/net_namespace.h" 1=0D # 15 "./include/net/net_namespace.h"=0D # 1 "./include/net/flow.h" 1=0D # 12 "./include/net/flow.h"=0D # 1 "./include/linux/in6.h" 1=0D # 19 "./include/linux/in6.h"=0D # 1 "./include/uapi/linux/in6.h" 1=0D # 33 "./include/uapi/linux/in6.h"=0D struct in6_addr {=0D union {=0D __u8 u6_addr8[16];=0D =0D __be16 u6_addr16[8];=0D __be32 u6_addr32[4];=0D =0D } in6_u;=0D =0D =0D =0D =0D =0D };=0D =0D =0D =0D struct sockaddr_in6 {=0D unsigned short int sin6_family;=0D __be16 sin6_port;=0D __be32 sin6_flowinfo;=0D struct in6_addr sin6_addr;=0D __u32 sin6_scope_id;=0D };=0D =0D =0D =0D struct ipv6_mreq {=0D =0D struct in6_addr ipv6mr_multiaddr;=0D =0D =0D int ipv6mr_ifindex;=0D };=0D =0D =0D =0D =0D struct in6_flowlabel_req {=0D struct in6_addr flr_dst;=0D __be32 flr_label;=0D __u8 flr_action;=0D __u8 flr_share;=0D __u16 flr_flags;=0D __u16 flr_expires;=0D __u16 flr_linger;=0D __u32 __flr_pad;=0D =0D };=0D # 20 "./include/linux/in6.h" 2=0D =0D =0D =0D =0D =0D extern const struct in6_addr in6addr_any;=0D =0D extern const struct in6_addr in6addr_loopback;=0D =0D extern const struct in6_addr in6addr_linklocal_allnodes;=0D =0D =0D extern const struct in6_addr in6addr_linklocal_allrouters;=0D =0D =0D extern const struct in6_addr in6addr_interfacelocal_allnodes;=0D =0D =0D extern const struct in6_addr in6addr_interfacelocal_allrouters;=0D =0D =0D extern const struct in6_addr in6addr_sitelocal_allrouters;=0D # 13 "./include/net/flow.h" 2=0D =0D # 1 "./include/net/flow_dissector.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/siphash.h" 1=0D # 20 "./include/linux/siphash.h"=0D typedef struct {=0D u64 key[2];=0D } siphash_key_t;=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool siphash_key_is_zero(con= st siphash_key_t *key)=0D {=0D return !(key->key[0] | key->key[1]);=0D }=0D =0D u64 __siphash_aligned(const void *data, size_t len, const siphash_key_t *ke= y);=0D u64 __siphash_unaligned(const void *data, size_t len, const siphash_key_t *= key);=0D =0D u64 siphash_1u64(const u64 a, const siphash_key_t *key);=0D u64 siphash_2u64(const u64 a, const u64 b, const siphash_key_t *key);=0D u64 siphash_3u64(const u64 a, const u64 b, const u64 c,=0D const siphash_key_t *key);=0D u64 siphash_4u64(const u64 a, const u64 b, const u64 c, const u64 d,=0D const siphash_key_t *key);=0D u64 siphash_1u32(const u32 a, const siphash_key_t *key);=0D u64 siphash_3u32(const u32 a, const u32 b, const u32 c,=0D const siphash_key_t *key);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 siphash_2u32(const u32 a= , const u32 b,=0D const siphash_key_t *key)=0D {=0D return siphash_1u64((u64)b << 32 | a, key);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 siphash_4u32(const u32 a= , const u32 b, const u32 c,=0D const u32 d, const siphash_key_t *key)=0D {=0D return siphash_2u64((u64)b << 32 | a, (u64)d << 32 | c, key);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ___siphash_aligned(const= __le64 *data, size_t len,=0D const siphash_key_t *key)=0D {=0D if (__builtin_constant_p(len) && len =3D=3D 4)=0D return siphash_1u32(__le32_to_cpup((const __le32 *)data), key);=0D if (__builtin_constant_p(len) && len =3D=3D 8)=0D return siphash_1u64((( __u64)(__le64)(data[0])), key);=0D if (__builtin_constant_p(len) && len =3D=3D 16)=0D return siphash_2u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1= ])),=0D key);=0D if (__builtin_constant_p(len) && len =3D=3D 24)=0D return siphash_3u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1= ])),=0D (( __u64)(__le64)(data[2])), key);=0D if (__builtin_constant_p(len) && len =3D=3D 32)=0D return siphash_4u64((( __u64)(__le64)(data[0])), (( __u64)(__le64)(data[1= ])),=0D (( __u64)(__le64)(data[2])), (( __u64)(__le64)(data[3])),=0D key);=0D return __siphash_aligned(data, len, key);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 siphash(const void *data= , size_t len,=0D const siphash_key_t *key)=0D {=0D if (0 ||=0D !((((unsigned long)data) & ((typeof((unsigned long)data))(__alignof__(= u64)) - 1)) =3D=3D 0))=0D return __siphash_unaligned(data, len, key);=0D return ___siphash_aligned(data, len, key);=0D }=0D =0D =0D typedef struct {=0D unsigned long key[2];=0D } hsiphash_key_t;=0D =0D u32 __hsiphash_aligned(const void *data, size_t len,=0D const hsiphash_key_t *key);=0D u32 __hsiphash_unaligned(const void *data, size_t len,=0D const hsiphash_key_t *key);=0D =0D u32 hsiphash_1u32(const u32 a, const hsiphash_key_t *key);=0D u32 hsiphash_2u32(const u32 a, const u32 b, const hsiphash_key_t *key);=0D u32 hsiphash_3u32(const u32 a, const u32 b, const u32 c,=0D const hsiphash_key_t *key);=0D u32 hsiphash_4u32(const u32 a, const u32 b, const u32 c, const u32 d,=0D const hsiphash_key_t *key);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ___hsiphash_aligned(cons= t __le32 *data, size_t len,=0D const hsiphash_key_t *key)=0D {=0D if (__builtin_constant_p(len) && len =3D=3D 4)=0D return hsiphash_1u32((( __u32)(__le32)(data[0])), key);=0D if (__builtin_constant_p(len) && len =3D=3D 8)=0D return hsiphash_2u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[= 1])),=0D key);=0D if (__builtin_constant_p(len) && len =3D=3D 12)=0D return hsiphash_3u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[= 1])),=0D (( __u32)(__le32)(data[2])), key);=0D if (__builtin_constant_p(len) && len =3D=3D 16)=0D return hsiphash_4u32((( __u32)(__le32)(data[0])), (( __u32)(__le32)(data[= 1])),=0D (( __u32)(__le32)(data[2])), (( __u32)(__le32)(data[3])),=0D key);=0D return __hsiphash_aligned(data, len, key);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 hsiphash(const void *dat= a, size_t len,=0D const hsiphash_key_t *key)=0D {=0D if (0 ||=0D !((((unsigned long)data) & ((typeof((unsigned long)data))(__alignof__(= unsigned long)) - 1)) =3D=3D 0))=0D return __hsiphash_unaligned(data, len, key);=0D return ___hsiphash_aligned(data, len, key);=0D }=0D # 8 "./include/net/flow_dissector.h" 2=0D =0D # 1 "./include/uapi/linux/if_ether.h" 1=0D # 171 "./include/uapi/linux/if_ether.h"=0D struct ethhdr {=0D unsigned char h_dest[6];=0D unsigned char h_source[6];=0D __be16 h_proto;=0D } __attribute__((packed));=0D # 10 "./include/net/flow_dissector.h" 2=0D =0D struct bpf_prog;=0D struct net;=0D struct sk_buff;=0D =0D =0D =0D =0D =0D struct flow_dissector_key_control {=0D u16 thoff;=0D u16 addr_type;=0D u32 flags;=0D };=0D =0D =0D =0D =0D =0D enum flow_dissect_ret {=0D FLOW_DISSECT_RET_OUT_GOOD,=0D FLOW_DISSECT_RET_OUT_BAD,=0D FLOW_DISSECT_RET_PROTO_AGAIN,=0D FLOW_DISSECT_RET_IPPROTO_AGAIN,=0D FLOW_DISSECT_RET_CONTINUE,=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_basic {=0D __be16 n_proto;=0D u8 ip_proto;=0D u8 padding;=0D };=0D =0D struct flow_dissector_key_tags {=0D u32 flow_label;=0D };=0D =0D struct flow_dissector_key_vlan {=0D union {=0D struct {=0D u16 vlan_id:12,=0D vlan_dei:1,=0D vlan_priority:3;=0D };=0D __be16 vlan_tci;=0D };=0D __be16 vlan_tpid;=0D __be16 vlan_eth_type;=0D u16 padding;=0D };=0D =0D struct flow_dissector_mpls_lse {=0D u32 mpls_ttl:8,=0D mpls_bos:1,=0D mpls_tc:3,=0D mpls_label:20;=0D };=0D =0D =0D struct flow_dissector_key_mpls {=0D struct flow_dissector_mpls_lse ls[7];=0D u8 used_lses;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dissector_set_mpls_lse(= struct flow_dissector_key_mpls *mpls,=0D int lse_index)=0D {=0D mpls->used_lses |=3D 1 << lse_index;=0D }=0D # 92 "./include/net/flow_dissector.h"=0D struct flow_dissector_key_enc_opts {=0D u8 data[255];=0D =0D =0D u8 len;=0D __be16 dst_opt_type;=0D };=0D =0D struct flow_dissector_key_keyid {=0D __be32 keyid;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_ipv4_addrs {=0D =0D __be32 src;=0D __be32 dst;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_ipv6_addrs {=0D =0D struct in6_addr src;=0D struct in6_addr dst;=0D };=0D =0D =0D =0D =0D =0D struct flow_dissector_key_tipc {=0D __be32 key;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_addrs {=0D union {=0D struct flow_dissector_key_ipv4_addrs v4addrs;=0D struct flow_dissector_key_ipv6_addrs v6addrs;=0D struct flow_dissector_key_tipc tipckey;=0D };=0D };=0D # 157 "./include/net/flow_dissector.h"=0D struct flow_dissector_key_arp {=0D __u32 sip;=0D __u32 tip;=0D __u8 op;=0D unsigned char sha[6];=0D unsigned char tha[6];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_ports {=0D union {=0D __be32 ports;=0D struct {=0D __be16 src;=0D __be16 dst;=0D };=0D };=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_icmp {=0D struct {=0D u8 type;=0D u8 code;=0D };=0D u16 id;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_eth_addrs {=0D =0D unsigned char dst[6];=0D unsigned char src[6];=0D };=0D =0D =0D =0D =0D =0D struct flow_dissector_key_tcp {=0D __be16 flags;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_ip {=0D __u8 tos;=0D __u8 ttl;=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key_meta {=0D int ingress_ifindex;=0D u16 ingress_iftype;=0D };=0D # 241 "./include/net/flow_dissector.h"=0D struct flow_dissector_key_ct {=0D u16 ct_state;=0D u16 ct_zone;=0D u32 ct_mark;=0D u32 ct_labels[4];=0D };=0D =0D =0D =0D =0D =0D struct flow_dissector_key_hash {=0D u32 hash;=0D };=0D =0D enum flow_dissector_key_id {=0D FLOW_DISSECTOR_KEY_CONTROL,=0D FLOW_DISSECTOR_KEY_BASIC,=0D FLOW_DISSECTOR_KEY_IPV4_ADDRS,=0D FLOW_DISSECTOR_KEY_IPV6_ADDRS,=0D FLOW_DISSECTOR_KEY_PORTS,=0D FLOW_DISSECTOR_KEY_PORTS_RANGE,=0D FLOW_DISSECTOR_KEY_ICMP,=0D FLOW_DISSECTOR_KEY_ETH_ADDRS,=0D FLOW_DISSECTOR_KEY_TIPC,=0D FLOW_DISSECTOR_KEY_ARP,=0D FLOW_DISSECTOR_KEY_VLAN,=0D FLOW_DISSECTOR_KEY_FLOW_LABEL,=0D FLOW_DISSECTOR_KEY_GRE_KEYID,=0D FLOW_DISSECTOR_KEY_MPLS_ENTROPY,=0D FLOW_DISSECTOR_KEY_ENC_KEYID,=0D FLOW_DISSECTOR_KEY_ENC_IPV4_ADDRS,=0D FLOW_DISSECTOR_KEY_ENC_IPV6_ADDRS,=0D FLOW_DISSECTOR_KEY_ENC_CONTROL,=0D FLOW_DISSECTOR_KEY_ENC_PORTS,=0D FLOW_DISSECTOR_KEY_MPLS,=0D FLOW_DISSECTOR_KEY_TCP,=0D FLOW_DISSECTOR_KEY_IP,=0D FLOW_DISSECTOR_KEY_CVLAN,=0D FLOW_DISSECTOR_KEY_ENC_IP,=0D FLOW_DISSECTOR_KEY_ENC_OPTS,=0D FLOW_DISSECTOR_KEY_META,=0D FLOW_DISSECTOR_KEY_CT,=0D FLOW_DISSECTOR_KEY_HASH,=0D =0D FLOW_DISSECTOR_KEY_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D struct flow_dissector_key {=0D enum flow_dissector_key_id key_id;=0D size_t offset;=0D =0D };=0D =0D struct flow_dissector {=0D unsigned int used_keys;=0D unsigned short int offset[FLOW_DISSECTOR_KEY_MAX];=0D };=0D =0D struct flow_keys_basic {=0D struct flow_dissector_key_control control;=0D struct flow_dissector_key_basic basic;=0D };=0D =0D struct flow_keys {=0D struct flow_dissector_key_control control;=0D =0D struct flow_dissector_key_basic basic __attribute__((__aligned__(__alignof= __(u64))));=0D struct flow_dissector_key_tags tags;=0D struct flow_dissector_key_vlan vlan;=0D struct flow_dissector_key_vlan cvlan;=0D struct flow_dissector_key_keyid keyid;=0D struct flow_dissector_key_ports ports;=0D struct flow_dissector_key_icmp icmp;=0D =0D struct flow_dissector_key_addrs addrs;=0D };=0D =0D =0D =0D =0D __be32 flow_get_u32_src(const struct flow_keys *flow);=0D __be32 flow_get_u32_dst(const struct flow_keys *flow);=0D =0D extern struct flow_dissector flow_keys_dissector;=0D extern struct flow_dissector flow_keys_basic_dissector;=0D # 341 "./include/net/flow_dissector.h"=0D struct flow_keys_digest {=0D u8 data[16];=0D };=0D =0D void make_flow_keys_digest(struct flow_keys_digest *digest,=0D const struct flow_keys *flow);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool flow_keys_have_l4(const= struct flow_keys *keys)=0D {=0D return (keys->ports.ports || keys->tags.flow_label);=0D }=0D =0D u32 flow_hash_from_keys(struct flow_keys *keys);=0D void skb_flow_get_icmp_tci(const struct sk_buff *skb,=0D struct flow_dissector_key_icmp *key_icmp,=0D const void *data, int thoff, int hlen);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dissector_uses_key(cons= t struct flow_dissector *flow_dissector,=0D enum flow_dissector_key_id key_id)=0D {=0D return flow_dissector->used_keys & (1 << key_id);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_flow_dissector_tar= get(struct flow_dissector *flow_dissector,=0D enum flow_dissector_key_id key_id,=0D void *target_container)=0D {=0D return ((char *)target_container) + flow_dissector->offset[key_id];=0D }=0D =0D struct bpf_flow_dissector {=0D struct bpf_flow_keys *flow_keys;=0D const struct sk_buff *skb;=0D const void *data;=0D const void *data_end;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D flow_dissector_init_keys(struct flow_dissector_key_control *key_control,=0D struct flow_dissector_key_basic *key_basic)=0D {=0D memset(key_control, 0, sizeof(*key_control));=0D memset(key_basic, 0, sizeof(*key_basic));=0D }=0D =0D =0D int flow_dissector_bpf_prog_attach_check(struct net *net,=0D struct bpf_prog *prog);=0D # 15 "./include/net/flow.h" 2=0D # 25 "./include/net/flow.h"=0D struct flowi_tunnel {=0D __be64 tun_id;=0D };=0D =0D struct flowi_common {=0D int flowic_oif;=0D int flowic_iif;=0D int flowic_l3mdev;=0D __u32 flowic_mark;=0D __u8 flowic_tos;=0D __u8 flowic_scope;=0D __u8 flowic_proto;=0D __u8 flowic_flags;=0D =0D =0D __u32 flowic_secid;=0D kuid_t flowic_uid;=0D struct flowi_tunnel flowic_tun_key;=0D __u32 flowic_multipath_hash;=0D };=0D =0D union flowi_uli {=0D struct {=0D __be16 dport;=0D __be16 sport;=0D } ports;=0D =0D struct {=0D __u8 type;=0D __u8 code;=0D } icmpt;=0D =0D struct {=0D __le16 dport;=0D __le16 sport;=0D } dnports;=0D =0D __be32 gre_key;=0D =0D struct {=0D __u8 type;=0D } mht;=0D };=0D =0D struct flowi4 {=0D struct flowi_common __fl_common;=0D # 85 "./include/net/flow.h"=0D __be32 saddr;=0D __be32 daddr;=0D =0D union flowi_uli uli;=0D =0D =0D =0D =0D =0D =0D } __attribute__((__aligned__(64/8)));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flowi4_init_output(stru= ct flowi4 *fl4, int oif,=0D __u32 mark, __u8 tos, __u8 scope,=0D __u8 proto, __u8 flags,=0D __be32 daddr, __be32 saddr,=0D __be16 dport, __be16 sport,=0D kuid_t uid)=0D {=0D fl4->__fl_common.flowic_oif =3D oif;=0D fl4->__fl_common.flowic_iif =3D 1;=0D fl4->__fl_common.flowic_l3mdev =3D 0;=0D fl4->__fl_common.flowic_mark =3D mark;=0D fl4->__fl_common.flowic_tos =3D tos;=0D fl4->__fl_common.flowic_scope =3D scope;=0D fl4->__fl_common.flowic_proto =3D proto;=0D fl4->__fl_common.flowic_flags =3D flags;=0D fl4->__fl_common.flowic_secid =3D 0;=0D fl4->__fl_common.flowic_tun_key.tun_id =3D 0;=0D fl4->__fl_common.flowic_uid =3D uid;=0D fl4->daddr =3D daddr;=0D fl4->saddr =3D saddr;=0D fl4->uli.ports.dport =3D dport;=0D fl4->uli.ports.sport =3D sport;=0D fl4->__fl_common.flowic_multipath_hash =3D 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flowi4_update_output(st= ruct flowi4 *fl4, int oif, __u8 tos,=0D __be32 daddr, __be32 saddr)=0D {=0D fl4->__fl_common.flowic_oif =3D oif;=0D fl4->__fl_common.flowic_tos =3D tos;=0D fl4->daddr =3D daddr;=0D fl4->saddr =3D saddr;=0D }=0D =0D =0D struct flowi6 {=0D struct flowi_common __fl_common;=0D # 145 "./include/net/flow.h"=0D struct in6_addr daddr;=0D struct in6_addr saddr;=0D =0D __be32 flowlabel;=0D union flowi_uli uli;=0D =0D =0D =0D =0D =0D =0D __u32 mp_hash;=0D } __attribute__((__aligned__(64/8)));=0D =0D struct flowidn {=0D struct flowi_common __fl_common;=0D =0D =0D =0D =0D =0D =0D __le16 daddr;=0D __le16 saddr;=0D union flowi_uli uli;=0D =0D =0D } __attribute__((__aligned__(64/8)));=0D =0D struct flowi {=0D union {=0D struct flowi_common __fl_common;=0D struct flowi4 ip4;=0D struct flowi6 ip6;=0D struct flowidn dn;=0D } u;=0D # 192 "./include/net/flow.h"=0D } __attribute__((__aligned__(64/8)));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flowi *flowi4_to_flow= i(struct flowi4 *fl4)=0D {=0D return ({ void *__mptr =3D (void *)(fl4); _Static_assert(__builtin_types_c= ompatible_p(typeof(*(fl4)), typeof(((struct flowi *)0)->u.ip4)) || __builti= n_types_compatible_p(typeof(*(fl4)), typeof(void)), "pointer type mismatch = in container_of()"); ((struct flowi *)(__mptr - __builtin_offsetof(struct f= lowi, u.ip4))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flowi_common *flowi4_= to_flowi_common(struct flowi4 *fl4)=0D {=0D return &(fl4->__fl_common);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flowi *flowi6_to_flow= i(struct flowi6 *fl6)=0D {=0D return ({ void *__mptr =3D (void *)(fl6); _Static_assert(__builtin_types_c= ompatible_p(typeof(*(fl6)), typeof(((struct flowi *)0)->u.ip6)) || __builti= n_types_compatible_p(typeof(*(fl6)), typeof(void)), "pointer type mismatch = in container_of()"); ((struct flowi *)(__mptr - __builtin_offsetof(struct f= lowi, u.ip6))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flowi_common *flowi6_= to_flowi_common(struct flowi6 *fl6)=0D {=0D return &(fl6->__fl_common);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flowi *flowidn_to_flo= wi(struct flowidn *fldn)=0D {=0D return ({ void *__mptr =3D (void *)(fldn); _Static_assert(__builtin_types_= compatible_p(typeof(*(fldn)), typeof(((struct flowi *)0)->u.dn)) || __built= in_types_compatible_p(typeof(*(fldn)), typeof(void)), "pointer type mismatc= h in container_of()"); ((struct flowi *)(__mptr - __builtin_offsetof(struct= flowi, u.dn))); });=0D }=0D =0D __u32 __get_hash_from_flowi6(const struct flowi6 *fl6, struct flow_keys *ke= ys);=0D # 16 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/core.h" 1=0D =0D =0D =0D =0D struct ctl_table_header;=0D struct prot_inuse;=0D =0D struct netns_core {=0D =0D struct ctl_table_header *sysctl_hdr;=0D =0D int sysctl_somaxconn;=0D u8 sysctl_txrehash;=0D =0D =0D struct prot_inuse *prot_inuse;=0D =0D };=0D # 17 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/mib.h" 1=0D =0D =0D =0D =0D # 1 "./include/net/snmp.h" 1=0D # 18 "./include/net/snmp.h"=0D # 1 "./include/uapi/linux/snmp.h" 1=0D # 19 "./include/uapi/linux/snmp.h"=0D enum=0D {=0D IPSTATS_MIB_NUM =3D 0,=0D =0D IPSTATS_MIB_INPKTS,=0D IPSTATS_MIB_INOCTETS,=0D IPSTATS_MIB_INDELIVERS,=0D IPSTATS_MIB_OUTFORWDATAGRAMS,=0D IPSTATS_MIB_OUTPKTS,=0D IPSTATS_MIB_OUTOCTETS,=0D =0D IPSTATS_MIB_INHDRERRORS,=0D IPSTATS_MIB_INTOOBIGERRORS,=0D IPSTATS_MIB_INNOROUTES,=0D IPSTATS_MIB_INADDRERRORS,=0D IPSTATS_MIB_INUNKNOWNPROTOS,=0D IPSTATS_MIB_INTRUNCATEDPKTS,=0D IPSTATS_MIB_INDISCARDS,=0D IPSTATS_MIB_OUTDISCARDS,=0D IPSTATS_MIB_OUTNOROUTES,=0D IPSTATS_MIB_REASMTIMEOUT,=0D IPSTATS_MIB_REASMREQDS,=0D IPSTATS_MIB_REASMOKS,=0D IPSTATS_MIB_REASMFAILS,=0D IPSTATS_MIB_FRAGOKS,=0D IPSTATS_MIB_FRAGFAILS,=0D IPSTATS_MIB_FRAGCREATES,=0D IPSTATS_MIB_INMCASTPKTS,=0D IPSTATS_MIB_OUTMCASTPKTS,=0D IPSTATS_MIB_INBCASTPKTS,=0D IPSTATS_MIB_OUTBCASTPKTS,=0D IPSTATS_MIB_INMCASTOCTETS,=0D IPSTATS_MIB_OUTMCASTOCTETS,=0D IPSTATS_MIB_INBCASTOCTETS,=0D IPSTATS_MIB_OUTBCASTOCTETS,=0D IPSTATS_MIB_CSUMERRORS,=0D IPSTATS_MIB_NOECTPKTS,=0D IPSTATS_MIB_ECT1PKTS,=0D IPSTATS_MIB_ECT0PKTS,=0D IPSTATS_MIB_CEPKTS,=0D IPSTATS_MIB_REASM_OVERLAPS,=0D __IPSTATS_MIB_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum=0D {=0D ICMP_MIB_NUM =3D 0,=0D ICMP_MIB_INMSGS,=0D ICMP_MIB_INERRORS,=0D ICMP_MIB_INDESTUNREACHS,=0D ICMP_MIB_INTIMEEXCDS,=0D ICMP_MIB_INPARMPROBS,=0D ICMP_MIB_INSRCQUENCHS,=0D ICMP_MIB_INREDIRECTS,=0D ICMP_MIB_INECHOS,=0D ICMP_MIB_INECHOREPS,=0D ICMP_MIB_INTIMESTAMPS,=0D ICMP_MIB_INTIMESTAMPREPS,=0D ICMP_MIB_INADDRMASKS,=0D ICMP_MIB_INADDRMASKREPS,=0D ICMP_MIB_OUTMSGS,=0D ICMP_MIB_OUTERRORS,=0D ICMP_MIB_OUTDESTUNREACHS,=0D ICMP_MIB_OUTTIMEEXCDS,=0D ICMP_MIB_OUTPARMPROBS,=0D ICMP_MIB_OUTSRCQUENCHS,=0D ICMP_MIB_OUTREDIRECTS,=0D ICMP_MIB_OUTECHOS,=0D ICMP_MIB_OUTECHOREPS,=0D ICMP_MIB_OUTTIMESTAMPS,=0D ICMP_MIB_OUTTIMESTAMPREPS,=0D ICMP_MIB_OUTADDRMASKS,=0D ICMP_MIB_OUTADDRMASKREPS,=0D ICMP_MIB_CSUMERRORS,=0D __ICMP_MIB_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum=0D {=0D ICMP6_MIB_NUM =3D 0,=0D ICMP6_MIB_INMSGS,=0D ICMP6_MIB_INERRORS,=0D ICMP6_MIB_OUTMSGS,=0D ICMP6_MIB_OUTERRORS,=0D ICMP6_MIB_CSUMERRORS,=0D __ICMP6_MIB_MAX=0D };=0D # 125 "./include/uapi/linux/snmp.h"=0D enum=0D {=0D TCP_MIB_NUM =3D 0,=0D TCP_MIB_RTOALGORITHM,=0D TCP_MIB_RTOMIN,=0D TCP_MIB_RTOMAX,=0D TCP_MIB_MAXCONN,=0D TCP_MIB_ACTIVEOPENS,=0D TCP_MIB_PASSIVEOPENS,=0D TCP_MIB_ATTEMPTFAILS,=0D TCP_MIB_ESTABRESETS,=0D TCP_MIB_CURRESTAB,=0D TCP_MIB_INSEGS,=0D TCP_MIB_OUTSEGS,=0D TCP_MIB_RETRANSSEGS,=0D TCP_MIB_INERRS,=0D TCP_MIB_OUTRSTS,=0D TCP_MIB_CSUMERRORS,=0D __TCP_MIB_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum=0D {=0D UDP_MIB_NUM =3D 0,=0D UDP_MIB_INDATAGRAMS,=0D UDP_MIB_NOPORTS,=0D UDP_MIB_INERRORS,=0D UDP_MIB_OUTDATAGRAMS,=0D UDP_MIB_RCVBUFERRORS,=0D UDP_MIB_SNDBUFERRORS,=0D UDP_MIB_CSUMERRORS,=0D UDP_MIB_IGNOREDMULTI,=0D UDP_MIB_MEMERRORS,=0D __UDP_MIB_MAX=0D };=0D =0D =0D enum=0D {=0D LINUX_MIB_NUM =3D 0,=0D LINUX_MIB_SYNCOOKIESSENT,=0D LINUX_MIB_SYNCOOKIESRECV,=0D LINUX_MIB_SYNCOOKIESFAILED,=0D LINUX_MIB_EMBRYONICRSTS,=0D LINUX_MIB_PRUNECALLED,=0D LINUX_MIB_RCVPRUNED,=0D LINUX_MIB_OFOPRUNED,=0D LINUX_MIB_OUTOFWINDOWICMPS,=0D LINUX_MIB_LOCKDROPPEDICMPS,=0D LINUX_MIB_ARPFILTER,=0D LINUX_MIB_TIMEWAITED,=0D LINUX_MIB_TIMEWAITRECYCLED,=0D LINUX_MIB_TIMEWAITKILLED,=0D LINUX_MIB_PAWSACTIVEREJECTED,=0D LINUX_MIB_PAWSESTABREJECTED,=0D LINUX_MIB_DELAYEDACKS,=0D LINUX_MIB_DELAYEDACKLOCKED,=0D LINUX_MIB_DELAYEDACKLOST,=0D LINUX_MIB_LISTENOVERFLOWS,=0D LINUX_MIB_LISTENDROPS,=0D LINUX_MIB_TCPHPHITS,=0D LINUX_MIB_TCPPUREACKS,=0D LINUX_MIB_TCPHPACKS,=0D LINUX_MIB_TCPRENORECOVERY,=0D LINUX_MIB_TCPSACKRECOVERY,=0D LINUX_MIB_TCPSACKRENEGING,=0D LINUX_MIB_TCPSACKREORDER,=0D LINUX_MIB_TCPRENOREORDER,=0D LINUX_MIB_TCPTSREORDER,=0D LINUX_MIB_TCPFULLUNDO,=0D LINUX_MIB_TCPPARTIALUNDO,=0D LINUX_MIB_TCPDSACKUNDO,=0D LINUX_MIB_TCPLOSSUNDO,=0D LINUX_MIB_TCPLOSTRETRANSMIT,=0D LINUX_MIB_TCPRENOFAILURES,=0D LINUX_MIB_TCPSACKFAILURES,=0D LINUX_MIB_TCPLOSSFAILURES,=0D LINUX_MIB_TCPFASTRETRANS,=0D LINUX_MIB_TCPSLOWSTARTRETRANS,=0D LINUX_MIB_TCPTIMEOUTS,=0D LINUX_MIB_TCPLOSSPROBES,=0D LINUX_MIB_TCPLOSSPROBERECOVERY,=0D LINUX_MIB_TCPRENORECOVERYFAIL,=0D LINUX_MIB_TCPSACKRECOVERYFAIL,=0D LINUX_MIB_TCPRCVCOLLAPSED,=0D LINUX_MIB_TCPDSACKOLDSENT,=0D LINUX_MIB_TCPDSACKOFOSENT,=0D LINUX_MIB_TCPDSACKRECV,=0D LINUX_MIB_TCPDSACKOFORECV,=0D LINUX_MIB_TCPABORTONDATA,=0D LINUX_MIB_TCPABORTONCLOSE,=0D LINUX_MIB_TCPABORTONMEMORY,=0D LINUX_MIB_TCPABORTONTIMEOUT,=0D LINUX_MIB_TCPABORTONLINGER,=0D LINUX_MIB_TCPABORTFAILED,=0D LINUX_MIB_TCPMEMORYPRESSURES,=0D LINUX_MIB_TCPMEMORYPRESSURESCHRONO,=0D LINUX_MIB_TCPSACKDISCARD,=0D LINUX_MIB_TCPDSACKIGNOREDOLD,=0D LINUX_MIB_TCPDSACKIGNOREDNOUNDO,=0D LINUX_MIB_TCPSPURIOUSRTOS,=0D LINUX_MIB_TCPMD5NOTFOUND,=0D LINUX_MIB_TCPMD5UNEXPECTED,=0D LINUX_MIB_TCPMD5FAILURE,=0D LINUX_MIB_SACKSHIFTED,=0D LINUX_MIB_SACKMERGED,=0D LINUX_MIB_SACKSHIFTFALLBACK,=0D LINUX_MIB_TCPBACKLOGDROP,=0D LINUX_MIB_PFMEMALLOCDROP,=0D LINUX_MIB_TCPMINTTLDROP,=0D LINUX_MIB_TCPDEFERACCEPTDROP,=0D LINUX_MIB_IPRPFILTER,=0D LINUX_MIB_TCPTIMEWAITOVERFLOW,=0D LINUX_MIB_TCPREQQFULLDOCOOKIES,=0D LINUX_MIB_TCPREQQFULLDROP,=0D LINUX_MIB_TCPRETRANSFAIL,=0D LINUX_MIB_TCPRCVCOALESCE,=0D LINUX_MIB_TCPBACKLOGCOALESCE,=0D LINUX_MIB_TCPOFOQUEUE,=0D LINUX_MIB_TCPOFODROP,=0D LINUX_MIB_TCPOFOMERGE,=0D LINUX_MIB_TCPCHALLENGEACK,=0D LINUX_MIB_TCPSYNCHALLENGE,=0D LINUX_MIB_TCPFASTOPENACTIVE,=0D LINUX_MIB_TCPFASTOPENACTIVEFAIL,=0D LINUX_MIB_TCPFASTOPENPASSIVE,=0D LINUX_MIB_TCPFASTOPENPASSIVEFAIL,=0D LINUX_MIB_TCPFASTOPENLISTENOVERFLOW,=0D LINUX_MIB_TCPFASTOPENCOOKIEREQD,=0D LINUX_MIB_TCPFASTOPENBLACKHOLE,=0D LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES,=0D LINUX_MIB_BUSYPOLLRXPACKETS,=0D LINUX_MIB_TCPAUTOCORKING,=0D LINUX_MIB_TCPFROMZEROWINDOWADV,=0D LINUX_MIB_TCPTOZEROWINDOWADV,=0D LINUX_MIB_TCPWANTZEROWINDOWADV,=0D LINUX_MIB_TCPSYNRETRANS,=0D LINUX_MIB_TCPORIGDATASENT,=0D LINUX_MIB_TCPHYSTARTTRAINDETECT,=0D LINUX_MIB_TCPHYSTARTTRAINCWND,=0D LINUX_MIB_TCPHYSTARTDELAYDETECT,=0D LINUX_MIB_TCPHYSTARTDELAYCWND,=0D LINUX_MIB_TCPACKSKIPPEDSYNRECV,=0D LINUX_MIB_TCPACKSKIPPEDPAWS,=0D LINUX_MIB_TCPACKSKIPPEDSEQ,=0D LINUX_MIB_TCPACKSKIPPEDFINWAIT2,=0D LINUX_MIB_TCPACKSKIPPEDTIMEWAIT,=0D LINUX_MIB_TCPACKSKIPPEDCHALLENGE,=0D LINUX_MIB_TCPWINPROBE,=0D LINUX_MIB_TCPKEEPALIVE,=0D LINUX_MIB_TCPMTUPFAIL,=0D LINUX_MIB_TCPMTUPSUCCESS,=0D LINUX_MIB_TCPDELIVERED,=0D LINUX_MIB_TCPDELIVEREDCE,=0D LINUX_MIB_TCPACKCOMPRESSED,=0D LINUX_MIB_TCPZEROWINDOWDROP,=0D LINUX_MIB_TCPRCVQDROP,=0D LINUX_MIB_TCPWQUEUETOOBIG,=0D LINUX_MIB_TCPFASTOPENPASSIVEALTKEY,=0D LINUX_MIB_TCPTIMEOUTREHASH,=0D LINUX_MIB_TCPDUPLICATEDATAREHASH,=0D LINUX_MIB_TCPDSACKRECVSEGS,=0D LINUX_MIB_TCPDSACKIGNOREDDUBIOUS,=0D LINUX_MIB_TCPMIGRATEREQSUCCESS,=0D LINUX_MIB_TCPMIGRATEREQFAILURE,=0D __LINUX_MIB_MAX=0D };=0D =0D =0D enum=0D {=0D LINUX_MIB_XFRMNUM =3D 0,=0D LINUX_MIB_XFRMINERROR,=0D LINUX_MIB_XFRMINBUFFERERROR,=0D LINUX_MIB_XFRMINHDRERROR,=0D LINUX_MIB_XFRMINNOSTATES,=0D LINUX_MIB_XFRMINSTATEPROTOERROR,=0D LINUX_MIB_XFRMINSTATEMODEERROR,=0D LINUX_MIB_XFRMINSTATESEQERROR,=0D LINUX_MIB_XFRMINSTATEEXPIRED,=0D LINUX_MIB_XFRMINSTATEMISMATCH,=0D LINUX_MIB_XFRMINSTATEINVALID,=0D LINUX_MIB_XFRMINTMPLMISMATCH,=0D LINUX_MIB_XFRMINNOPOLS,=0D LINUX_MIB_XFRMINPOLBLOCK,=0D LINUX_MIB_XFRMINPOLERROR,=0D LINUX_MIB_XFRMOUTERROR,=0D LINUX_MIB_XFRMOUTBUNDLEGENERROR,=0D LINUX_MIB_XFRMOUTBUNDLECHECKERROR,=0D LINUX_MIB_XFRMOUTNOSTATES,=0D LINUX_MIB_XFRMOUTSTATEPROTOERROR,=0D LINUX_MIB_XFRMOUTSTATEMODEERROR,=0D LINUX_MIB_XFRMOUTSTATESEQERROR,=0D LINUX_MIB_XFRMOUTSTATEEXPIRED,=0D LINUX_MIB_XFRMOUTPOLBLOCK,=0D LINUX_MIB_XFRMOUTPOLDEAD,=0D LINUX_MIB_XFRMOUTPOLERROR,=0D LINUX_MIB_XFRMFWDHDRERROR,=0D LINUX_MIB_XFRMOUTSTATEINVALID,=0D LINUX_MIB_XFRMACQUIREERROR,=0D __LINUX_MIB_XFRMMAX=0D };=0D =0D =0D enum=0D {=0D LINUX_MIB_TLSNUM =3D 0,=0D LINUX_MIB_TLSCURRTXSW,=0D LINUX_MIB_TLSCURRRXSW,=0D LINUX_MIB_TLSCURRTXDEVICE,=0D LINUX_MIB_TLSCURRRXDEVICE,=0D LINUX_MIB_TLSTXSW,=0D LINUX_MIB_TLSRXSW,=0D LINUX_MIB_TLSTXDEVICE,=0D LINUX_MIB_TLSRXDEVICE,=0D LINUX_MIB_TLSDECRYPTERROR,=0D LINUX_MIB_TLSRXDEVICERESYNC,=0D __LINUX_MIB_TLSMAX=0D };=0D # 19 "./include/net/snmp.h" 2=0D # 29 "./include/net/snmp.h"=0D struct snmp_mib {=0D const char *name;=0D int entry;=0D };=0D # 47 "./include/net/snmp.h"=0D # 1 "./include/linux/u64_stats_sync.h" 1=0D # 68 "./include/linux/u64_stats_sync.h"=0D struct u64_stats_sync {=0D =0D =0D =0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/local64.h" 1=0D # 1 "./include/asm-generic/local64.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 7 "./include/asm-generic/local64.h" 2=0D # 22 "./include/asm-generic/local64.h"=0D # 1 "./arch/riscv/include/generated/asm/local.h" 1=0D # 23 "./include/asm-generic/local64.h" 2=0D =0D typedef struct {=0D local_t a;=0D } local64_t;=0D # 2 "./arch/riscv/include/generated/asm/local64.h" 2=0D # 76 "./include/linux/u64_stats_sync.h" 2=0D =0D typedef struct {=0D local64_t v;=0D } u64_stats_t ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 u64_stats_read(const u64= _stats_t *p)=0D {=0D return atomic_long_read(&(&(&p->v)->a)->a);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_set(u64_stats= _t *p, u64 val)=0D {=0D atomic_long_set((&((&(&p->v)->a))->a),((val)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_add(u64_stats= _t *p, unsigned long val)=0D {=0D atomic_long_add(((val)),(&((&(&p->v)->a))->a));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_inc(u64_stats= _t *p)=0D {=0D atomic_long_inc(&(&(&p->v)->a)->a);=0D }=0D # 131 "./include/linux/u64_stats_sync.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_init(struct u= 64_stats_sync *syncp)=0D {=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_update_begin(= struct u64_stats_sync *syncp)=0D {=0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_stats_update_end(st= ruct u64_stats_sync *syncp)=0D {=0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D u64_stats_update_begin_irqsave(struct u64_stats_sync *syncp)=0D {=0D unsigned long flags =3D 0;=0D # 166 "./include/linux/u64_stats_sync.h"=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D u64_stats_update_end_irqrestore(struct u64_stats_sync *syncp,=0D unsigned long flags)=0D {=0D =0D =0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __u64_stats_fet= ch_begin(const struct u64_stats_sync *syncp)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int u64_stats_fetch= _begin(const struct u64_stats_sync *syncp)=0D {=0D =0D =0D =0D return __u64_stats_fetch_begin(syncp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __u64_stats_fetch_retry= (const struct u64_stats_sync *syncp,=0D unsigned int start)=0D {=0D =0D =0D =0D return false;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool u64_stats_fetch_retry(c= onst struct u64_stats_sync *syncp,=0D unsigned int start)=0D {=0D =0D =0D =0D return __u64_stats_fetch_retry(syncp, start);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int u64_stats_fetch= _begin_irq(const struct u64_stats_sync *syncp)=0D {=0D =0D =0D =0D =0D =0D return __u64_stats_fetch_begin(syncp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool u64_stats_fetch_retry_i= rq(const struct u64_stats_sync *syncp,=0D unsigned int start)=0D {=0D =0D =0D =0D =0D =0D return __u64_stats_fetch_retry(syncp, start);=0D }=0D # 48 "./include/net/snmp.h" 2=0D =0D =0D =0D struct ipstats_mib {=0D =0D u64 mibs[__IPSTATS_MIB_MAX];=0D struct u64_stats_sync syncp;=0D };=0D =0D =0D =0D struct icmp_mib {=0D unsigned long mibs[__ICMP_MIB_MAX];=0D };=0D =0D =0D struct icmpmsg_mib {=0D atomic_long_t mibs[512];=0D };=0D =0D =0D =0D =0D struct icmpv6_mib {=0D unsigned long mibs[__ICMP6_MIB_MAX];=0D };=0D =0D struct icmpv6_mib_device {=0D atomic_long_t mibs[__ICMP6_MIB_MAX];=0D };=0D =0D =0D =0D struct icmpv6msg_mib {=0D atomic_long_t mibs[512];=0D };=0D =0D struct icmpv6msg_mib_device {=0D atomic_long_t mibs[512];=0D };=0D =0D =0D =0D =0D struct tcp_mib {=0D unsigned long mibs[__TCP_MIB_MAX];=0D };=0D =0D =0D =0D struct udp_mib {=0D unsigned long mibs[__UDP_MIB_MAX];=0D };=0D =0D =0D =0D struct linux_mib {=0D unsigned long mibs[__LINUX_MIB_MAX];=0D };=0D =0D =0D =0D struct linux_xfrm_mib {=0D unsigned long mibs[__LINUX_MIB_XFRMMAX];=0D };=0D =0D =0D =0D struct linux_tls_mib {=0D unsigned long mibs[__LINUX_MIB_TLSMAX];=0D };=0D # 6 "./include/net/netns/mib.h" 2=0D =0D struct netns_mib {=0D __typeof__(struct ipstats_mib) *ip_statistics;=0D =0D __typeof__(struct ipstats_mib) *ipv6_statistics;=0D =0D =0D __typeof__(struct tcp_mib) *tcp_statistics;=0D __typeof__(struct linux_mib) *net_statistics;=0D =0D __typeof__(struct udp_mib) *udp_statistics;=0D =0D __typeof__(struct udp_mib) *udp_stats_in6;=0D # 31 "./include/net/netns/mib.h"=0D __typeof__(struct udp_mib) *udplite_statistics;=0D =0D __typeof__(struct udp_mib) *udplite_stats_in6;=0D =0D =0D __typeof__(struct icmp_mib) *icmp_statistics;=0D __typeof__(struct icmpmsg_mib) *icmpmsg_statistics;=0D =0D __typeof__(struct icmpv6_mib) *icmpv6_statistics;=0D __typeof__(struct icmpv6msg_mib) *icmpv6msg_statistics;=0D struct proc_dir_entry *proc_net_devsnmp6;=0D =0D };=0D # 18 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/unix.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct ctl_table_header;=0D struct netns_unix {=0D int sysctl_max_dgram_qlen;=0D struct ctl_table_header *ctl;=0D };=0D # 19 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/packet.h" 1=0D # 11 "./include/net/netns/packet.h"=0D struct netns_packet {=0D struct mutex sklist_lock;=0D struct hlist_head sklist;=0D };=0D # 20 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/ipv4.h" 1=0D # 10 "./include/net/netns/ipv4.h"=0D # 1 "./include/net/inet_frag.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct fqdir {=0D =0D long high_thresh;=0D long low_thresh;=0D int timeout;=0D int max_dist;=0D struct inet_frags *f;=0D struct net *net;=0D bool dead;=0D =0D struct rhashtable rhashtable __attribute__((__aligned__((1 << 6))));=0D =0D =0D atomic_long_t mem __attribute__((__aligned__((1 << 6))));=0D struct work_struct destroy_work;=0D struct llist_node free_list;=0D };=0D # 35 "./include/net/inet_frag.h"=0D enum {=0D INET_FRAG_FIRST_IN =3D ((((1UL))) << (0)),=0D INET_FRAG_LAST_IN =3D ((((1UL))) << (1)),=0D INET_FRAG_COMPLETE =3D ((((1UL))) << (2)),=0D INET_FRAG_HASH_DEAD =3D ((((1UL))) << (3)),=0D };=0D =0D struct frag_v4_compare_key {=0D __be32 saddr;=0D __be32 daddr;=0D u32 user;=0D u32 vif;=0D __be16 id;=0D u16 protocol;=0D };=0D =0D struct frag_v6_compare_key {=0D struct in6_addr saddr;=0D struct in6_addr daddr;=0D u32 user;=0D __be32 id;=0D u32 iif;=0D };=0D # 79 "./include/net/inet_frag.h"=0D struct inet_frag_queue {=0D struct rhash_head node;=0D union {=0D struct frag_v4_compare_key v4;=0D struct frag_v6_compare_key v6;=0D } key;=0D struct timer_list timer;=0D spinlock_t lock;=0D refcount_t refcnt;=0D struct rb_root rb_fragments;=0D struct sk_buff *fragments_tail;=0D struct sk_buff *last_run_head;=0D ktime_t stamp;=0D int len;=0D int meat;=0D u8 mono_delivery_time;=0D __u8 flags;=0D u16 max_size;=0D struct fqdir *fqdir;=0D struct callback_head rcu;=0D };=0D =0D struct inet_frags {=0D unsigned int qsize;=0D =0D void (*constructor)(struct inet_frag_queue *q,=0D const void *arg);=0D void (*destructor)(struct inet_frag_queue *);=0D void (*frag_expire)(struct timer_list *t);=0D struct kmem_cache *frags_cachep;=0D const char *frags_cache_name;=0D struct rhashtable_params rhash_params;=0D refcount_t refcnt;=0D struct completion completion;=0D };=0D =0D int inet_frags_init(struct inet_frags *);=0D void inet_frags_fini(struct inet_frags *);=0D =0D int fqdir_init(struct fqdir **fqdirp, struct inet_frags *f, struct net *net= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fqdir_pre_exit(struct f= qdir *fqdir)=0D {=0D =0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 18(void) ; if (!((sizeof(fqdir->high_thresh) =3D=3D sizeof(char) || sizeof(= fqdir->high_thresh) =3D=3D sizeof(short) || sizeof(fqdir->high_thresh) =3D= =3D sizeof(int) || sizeof(fqdir->high_thresh) =3D=3D sizeof(long)) || sizeo= f(fqdir->high_thresh) =3D=3D sizeof(long long))) __compiletime_assert_218()= ; } while (0); do { *(volatile typeof(fqdir->high_thresh) *)&(fqdir->high_t= hresh) =3D (0); } while (0); } while (0);=0D =0D =0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 19(void) ; if (!((sizeof(fqdir->dead) =3D=3D sizeof(char) || sizeof(fqdir->= dead) =3D=3D sizeof(short) || sizeof(fqdir->dead) =3D=3D sizeof(int) || siz= eof(fqdir->dead) =3D=3D sizeof(long)) || sizeof(fqdir->dead) =3D=3D sizeof(= long long))) __compiletime_assert_219(); } while (0); do { *(volatile typeo= f(fqdir->dead) *)&(fqdir->dead) =3D (true); } while (0); } while (0);=0D }=0D void fqdir_exit(struct fqdir *fqdir);=0D =0D void inet_frag_kill(struct inet_frag_queue *q);=0D void inet_frag_destroy(struct inet_frag_queue *q);=0D struct inet_frag_queue *inet_frag_find(struct fqdir *fqdir, void *key);=0D =0D =0D unsigned int inet_frag_rbtree_purge(struct rb_root *root);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_frag_put(struct in= et_frag_queue *q)=0D {=0D if (refcount_dec_and_test(&q->refcnt))=0D inet_frag_destroy(q);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long frag_mem_limit(const st= ruct fqdir *fqdir)=0D {=0D return atomic_long_read(&fqdir->mem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sub_frag_mem_limit(stru= ct fqdir *fqdir, long val)=0D {=0D atomic_long_sub(val, &fqdir->mem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void add_frag_mem_limit(stru= ct fqdir *fqdir, long val)=0D {=0D atomic_long_add(val, &fqdir->mem);=0D }=0D # 173 "./include/net/inet_frag.h"=0D extern const u8 ip_frag_ecn_table[16];=0D =0D =0D =0D =0D =0D int inet_frag_queue_insert(struct inet_frag_queue *q, struct sk_buff *skb,= =0D int offset, int end);=0D void *inet_frag_reasm_prepare(struct inet_frag_queue *q, struct sk_buff *sk= b,=0D struct sk_buff *parent);=0D void inet_frag_reasm_finish(struct inet_frag_queue *q, struct sk_buff *head= ,=0D void *reasm_data, bool try_coalesce);=0D struct sk_buff *inet_frag_pull_head(struct inet_frag_queue *q);=0D # 11 "./include/net/netns/ipv4.h" 2=0D =0D =0D =0D struct ctl_table_header;=0D struct ipv4_devconf;=0D struct fib_rules_ops;=0D struct hlist_head;=0D struct fib_table;=0D struct sock;=0D struct local_ports {=0D seqlock_t lock;=0D int range[2];=0D bool warned;=0D };=0D =0D struct ping_group_range {=0D seqlock_t lock;=0D kgid_t range[2];=0D };=0D =0D struct inet_hashinfo;=0D =0D struct inet_timewait_death_row {=0D refcount_t tw_refcount;=0D =0D struct inet_hashinfo *hashinfo __attribute__((__aligned__((1 << 6))));=0D int sysctl_max_tw_buckets;=0D };=0D =0D struct tcp_fastopen_context;=0D =0D struct netns_ipv4 {=0D struct inet_timewait_death_row *tcp_death_row;=0D =0D =0D struct ctl_table_header *forw_hdr;=0D struct ctl_table_header *frags_hdr;=0D struct ctl_table_header *ipv4_hdr;=0D struct ctl_table_header *route_hdr;=0D struct ctl_table_header *xfrm4_hdr;=0D =0D struct ipv4_devconf *devconf_all;=0D struct ipv4_devconf *devconf_dflt;=0D struct ip_ra_chain *ra_chain;=0D struct mutex ra_mutex;=0D =0D =0D =0D =0D =0D =0D =0D bool fib_has_custom_local_routes;=0D bool fib_offload_disabled;=0D =0D =0D =0D struct hlist_head *fib_table_hash;=0D struct sock *fibnl;=0D =0D struct sock *mc_autojoin_sk;=0D =0D struct inet_peer_base *peers;=0D struct fqdir *fqdir;=0D =0D u8 sysctl_icmp_echo_ignore_all;=0D u8 sysctl_icmp_echo_enable_probe;=0D u8 sysctl_icmp_echo_ignore_broadcasts;=0D u8 sysctl_icmp_ignore_bogus_error_responses;=0D u8 sysctl_icmp_errors_use_inbound_ifaddr;=0D int sysctl_icmp_ratelimit;=0D int sysctl_icmp_ratemask;=0D =0D u32 ip_rt_min_pmtu;=0D int ip_rt_mtu_expires;=0D int ip_rt_min_advmss;=0D =0D struct local_ports ip_local_ports;=0D =0D u8 sysctl_tcp_ecn;=0D u8 sysctl_tcp_ecn_fallback;=0D =0D u8 sysctl_ip_default_ttl;=0D u8 sysctl_ip_no_pmtu_disc;=0D u8 sysctl_ip_fwd_use_pmtu;=0D u8 sysctl_ip_fwd_update_priority;=0D u8 sysctl_ip_nonlocal_bind;=0D u8 sysctl_ip_autobind_reuse;=0D =0D u8 sysctl_ip_dynaddr;=0D u8 sysctl_ip_early_demux;=0D =0D =0D =0D u8 sysctl_tcp_early_demux;=0D u8 sysctl_udp_early_demux;=0D =0D u8 sysctl_nexthop_compat_mode;=0D =0D u8 sysctl_fwmark_reflect;=0D u8 sysctl_tcp_fwmark_accept;=0D =0D =0D =0D u8 sysctl_tcp_mtu_probing;=0D int sysctl_tcp_mtu_probe_floor;=0D int sysctl_tcp_base_mss;=0D int sysctl_tcp_min_snd_mss;=0D int sysctl_tcp_probe_threshold;=0D u32 sysctl_tcp_probe_interval;=0D =0D int sysctl_tcp_keepalive_time;=0D int sysctl_tcp_keepalive_intvl;=0D u8 sysctl_tcp_keepalive_probes;=0D =0D u8 sysctl_tcp_syn_retries;=0D u8 sysctl_tcp_synack_retries;=0D u8 sysctl_tcp_syncookies;=0D u8 sysctl_tcp_migrate_req;=0D u8 sysctl_tcp_comp_sack_nr;=0D int sysctl_tcp_reordering;=0D u8 sysctl_tcp_retries1;=0D u8 sysctl_tcp_retries2;=0D u8 sysctl_tcp_orphan_retries;=0D u8 sysctl_tcp_tw_reuse;=0D int sysctl_tcp_fin_timeout;=0D unsigned int sysctl_tcp_notsent_lowat;=0D u8 sysctl_tcp_sack;=0D u8 sysctl_tcp_window_scaling;=0D u8 sysctl_tcp_timestamps;=0D u8 sysctl_tcp_early_retrans;=0D u8 sysctl_tcp_recovery;=0D u8 sysctl_tcp_thin_linear_timeouts;=0D u8 sysctl_tcp_slow_start_after_idle;=0D u8 sysctl_tcp_retrans_collapse;=0D u8 sysctl_tcp_stdurg;=0D u8 sysctl_tcp_rfc1337;=0D u8 sysctl_tcp_abort_on_overflow;=0D u8 sysctl_tcp_fack;=0D int sysctl_tcp_max_reordering;=0D int sysctl_tcp_adv_win_scale;=0D u8 sysctl_tcp_dsack;=0D u8 sysctl_tcp_app_win;=0D u8 sysctl_tcp_frto;=0D u8 sysctl_tcp_nometrics_save;=0D u8 sysctl_tcp_no_ssthresh_metrics_save;=0D u8 sysctl_tcp_moderate_rcvbuf;=0D u8 sysctl_tcp_tso_win_divisor;=0D u8 sysctl_tcp_workaround_signed_windows;=0D int sysctl_tcp_limit_output_bytes;=0D int sysctl_tcp_challenge_ack_limit;=0D int sysctl_tcp_min_rtt_wlen;=0D u8 sysctl_tcp_min_tso_segs;=0D u8 sysctl_tcp_tso_rtt_log;=0D u8 sysctl_tcp_autocorking;=0D u8 sysctl_tcp_reflect_tos;=0D int sysctl_tcp_invalid_ratelimit;=0D int sysctl_tcp_pacing_ss_ratio;=0D int sysctl_tcp_pacing_ca_ratio;=0D int sysctl_tcp_wmem[3];=0D int sysctl_tcp_rmem[3];=0D unsigned long sysctl_tcp_comp_sack_delay_ns;=0D unsigned long sysctl_tcp_comp_sack_slack_ns;=0D int sysctl_max_syn_backlog;=0D int sysctl_tcp_fastopen;=0D const struct tcp_congestion_ops *tcp_congestion_control;=0D struct tcp_fastopen_context *tcp_fastopen_ctx;=0D unsigned int sysctl_tcp_fastopen_blackhole_timeout;=0D atomic_t tfo_active_disable_times;=0D unsigned long tfo_active_disable_stamp;=0D =0D int sysctl_udp_wmem_min;=0D int sysctl_udp_rmem_min;=0D =0D u8 sysctl_fib_notify_on_flag_change;=0D =0D =0D =0D =0D =0D u8 sysctl_igmp_llm_reports;=0D int sysctl_igmp_max_memberships;=0D int sysctl_igmp_max_msf;=0D int sysctl_igmp_qrv;=0D =0D struct ping_group_range ping_group_range;=0D =0D atomic_t dev_addr_genid;=0D =0D =0D unsigned long *sysctl_local_reserved_ports;=0D int sysctl_ip_prot_sock;=0D # 219 "./include/net/netns/ipv4.h"=0D struct fib_notifier_ops *notifier_ops;=0D unsigned int fib_seq;=0D =0D struct fib_notifier_ops *ipmr_notifier_ops;=0D unsigned int ipmr_seq;=0D =0D atomic_t rt_genid;=0D siphash_key_t ip_id_key;=0D };=0D # 21 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/ipv6.h" 1=0D # 10 "./include/net/netns/ipv6.h"=0D # 1 "./include/net/dst_ops.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct dst_entry;=0D struct kmem_cachep;=0D struct net_device;=0D struct sk_buff;=0D struct sock;=0D struct net;=0D =0D struct dst_ops {=0D unsigned short family;=0D unsigned int gc_thresh;=0D =0D int (*gc)(struct dst_ops *ops);=0D struct dst_entry * (*check)(struct dst_entry *, __u32 cookie);=0D unsigned int (*default_advmss)(const struct dst_entry *);=0D unsigned int (*mtu)(const struct dst_entry *);=0D u32 * (*cow_metrics)(struct dst_entry *, unsigned long);=0D void (*destroy)(struct dst_entry *);=0D void (*ifdown)(struct dst_entry *,=0D struct net_device *dev, int how);=0D struct dst_entry * (*negative_advice)(struct dst_entry *);=0D void (*link_failure)(struct sk_buff *);=0D void (*update_pmtu)(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb, u32 mtu,=0D bool confirm_neigh);=0D void (*redirect)(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb);=0D int (*local_out)(struct net *net, struct sock *sk, struct sk_buff *skb);=0D struct neighbour * (*neigh_lookup)(const struct dst_entry *dst,=0D struct sk_buff *skb,=0D const void *daddr);=0D void (*confirm_neigh)(const struct dst_entry *dst,=0D const void *daddr);=0D =0D struct kmem_cache *kmem_cachep;=0D =0D struct percpu_counter pcpuc_entries __attribute__((__aligned__((1 << 6))))= ;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_entries_get_fast(str= uct dst_ops *dst)=0D {=0D return percpu_counter_read_positive(&dst->pcpuc_entries);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_entries_get_slow(str= uct dst_ops *dst)=0D {=0D return percpu_counter_sum_positive(&dst->pcpuc_entries);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_entries_add(struct = dst_ops *dst, int val)=0D {=0D percpu_counter_add_batch(&dst->pcpuc_entries, val,=0D 32);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_entries_init(struct = dst_ops *dst)=0D {=0D return ({ static struct lock_class_key __key; __percpu_counter_init(&dst->= pcpuc_entries, 0, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0= x80u)), &__key); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_entries_destroy(str= uct dst_ops *dst)=0D {=0D percpu_counter_destroy(&dst->pcpuc_entries);=0D }=0D # 11 "./include/net/netns/ipv6.h" 2=0D # 1 "./include/uapi/linux/icmpv6.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct icmp6hdr {=0D =0D __u8 icmp6_type;=0D __u8 icmp6_code;=0D __sum16 icmp6_cksum;=0D =0D =0D union {=0D __be32 un_data32[1];=0D __be16 un_data16[2];=0D __u8 un_data8[4];=0D =0D struct icmpv6_echo {=0D __be16 identifier;=0D __be16 sequence;=0D } u_echo;=0D =0D struct icmpv6_nd_advt {=0D =0D __u32 reserved:5,=0D override:1,=0D solicited:1,=0D router:1,=0D reserved2:24;=0D # 40 "./include/uapi/linux/icmpv6.h"=0D } u_nd_advt;=0D =0D struct icmpv6_nd_ra {=0D __u8 hop_limit;=0D =0D __u8 reserved:3,=0D router_pref:2,=0D home_agent:1,=0D other:1,=0D managed:1;=0D # 60 "./include/uapi/linux/icmpv6.h"=0D __be16 rt_lifetime;=0D } u_nd_ra;=0D =0D } icmp6_dataun;=0D # 81 "./include/uapi/linux/icmpv6.h"=0D };=0D # 161 "./include/uapi/linux/icmpv6.h"=0D struct icmp6_filter {=0D __u32 data[8];=0D };=0D # 12 "./include/net/netns/ipv6.h" 2=0D =0D struct ctl_table_header;=0D =0D struct netns_sysctl_ipv6 {=0D =0D struct ctl_table_header *hdr;=0D struct ctl_table_header *route_hdr;=0D struct ctl_table_header *icmp_hdr;=0D struct ctl_table_header *frags_hdr;=0D struct ctl_table_header *xfrm6_hdr;=0D =0D int flush_delay;=0D int ip6_rt_max_size;=0D int ip6_rt_gc_min_interval;=0D int ip6_rt_gc_timeout;=0D int ip6_rt_gc_interval;=0D int ip6_rt_gc_elasticity;=0D int ip6_rt_mtu_expires;=0D int ip6_rt_min_advmss;=0D u32 multipath_hash_fields;=0D u8 multipath_hash_policy;=0D u8 bindv6only;=0D u8 flowlabel_consistency;=0D u8 auto_flowlabels;=0D int icmpv6_time;=0D u8 icmpv6_echo_ignore_all;=0D u8 icmpv6_echo_ignore_multicast;=0D u8 icmpv6_echo_ignore_anycast;=0D unsigned long icmpv6_ratemask[(((255 + 1) + ((sizeof(long) * 8)) - 1) / ((= sizeof(long) * 8)))];=0D unsigned long *icmpv6_ratemask_ptr;=0D u8 anycast_src_echo_reply;=0D u8 ip_nonlocal_bind;=0D u8 fwmark_reflect;=0D u8 flowlabel_state_ranges;=0D int idgen_retries;=0D int idgen_delay;=0D int flowlabel_reflect;=0D int max_dst_opts_cnt;=0D int max_hbh_opts_cnt;=0D int max_dst_opts_len;=0D int max_hbh_opts_len;=0D int seg6_flowlabel;=0D u32 ioam6_id;=0D u64 ioam6_id_wide;=0D bool skip_notify_on_dev_down;=0D u8 fib_notify_on_flag_change;=0D };=0D =0D struct netns_ipv6 {=0D =0D struct dst_ops ip6_dst_ops;=0D =0D struct netns_sysctl_ipv6 sysctl;=0D struct ipv6_devconf *devconf_all;=0D struct ipv6_devconf *devconf_dflt;=0D struct inet_peer_base *peers;=0D struct fqdir *fqdir;=0D struct fib6_info *fib6_null_entry;=0D struct rt6_info *ip6_null_entry;=0D struct rt6_statistics *rt6_stats;=0D struct timer_list ip6_fib_timer;=0D struct hlist_head *fib_table_hash;=0D struct fib6_table *fib6_main_tbl;=0D struct list_head fib6_walkers;=0D rwlock_t fib6_walker_lock;=0D spinlock_t fib6_gc_lock;=0D atomic_t ip6_rt_gc_expire;=0D unsigned long ip6_rt_last_gc;=0D unsigned char flowlabel_has_excl;=0D # 92 "./include/net/netns/ipv6.h"=0D struct sock *ndisc_sk;=0D struct sock *tcp_sk;=0D struct sock *igmp_sk;=0D struct sock *mc_autojoin_sk;=0D =0D struct hlist_head *inet6_addr_lst;=0D spinlock_t addrconf_hash_lock;=0D struct delayed_work addr_chk_work;=0D # 109 "./include/net/netns/ipv6.h"=0D atomic_t dev_addr_genid;=0D atomic_t fib6_sernum;=0D struct seg6_pernet_data *seg6_data;=0D struct fib_notifier_ops *notifier_ops;=0D struct fib_notifier_ops *ip6mr_notifier_ops;=0D unsigned int ipmr_seq;=0D struct {=0D struct hlist_head head;=0D spinlock_t lock;=0D u32 seq;=0D } ip6addrlbl_table;=0D struct ioam6_pernet_data *ioam6_data;=0D };=0D # 22 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/nexthop.h" 1=0D # 11 "./include/net/netns/nexthop.h"=0D struct netns_nexthop {=0D struct rb_root rb_root;=0D struct hlist_head *devhash;=0D =0D unsigned int seq;=0D u32 last_id_allocated;=0D struct blocking_notifier_head notifier_chain;=0D };=0D # 23 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/ieee802154_6lowpan.h" 1=0D # 11 "./include/net/netns/ieee802154_6lowpan.h"=0D struct netns_sysctl_lowpan {=0D =0D struct ctl_table_header *frags_hdr;=0D =0D };=0D =0D struct netns_ieee802154_lowpan {=0D struct netns_sysctl_lowpan sysctl;=0D struct fqdir *fqdir;=0D };=0D # 24 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/sctp.h" 1=0D =0D =0D =0D =0D struct sock;=0D struct proc_dir_entry;=0D struct sctp_mib;=0D struct ctl_table_header;=0D =0D struct netns_sctp {=0D __typeof__(struct sctp_mib) *sctp_statistics;=0D =0D =0D struct proc_dir_entry *proc_net_sctp;=0D =0D =0D struct ctl_table_header *sysctl_header;=0D =0D =0D =0D =0D =0D struct sock *ctl_sock;=0D =0D =0D struct sock *udp4_sock;=0D struct sock *udp6_sock;=0D =0D int udp_port;=0D =0D int encap_port;=0D =0D =0D =0D =0D =0D =0D =0D struct list_head local_addr_list;=0D struct list_head addr_waitq;=0D struct timer_list addr_wq_timer;=0D struct list_head auto_asconf_splist;=0D =0D spinlock_t addr_wq_lock;=0D =0D =0D spinlock_t local_addr_lock;=0D # 59 "./include/net/netns/sctp.h"=0D unsigned int rto_initial;=0D unsigned int rto_min;=0D unsigned int rto_max;=0D =0D =0D =0D =0D int rto_alpha;=0D int rto_beta;=0D =0D =0D int max_burst;=0D =0D =0D int cookie_preserve_enable;=0D =0D =0D char *sctp_hmac_alg;=0D =0D =0D unsigned int valid_cookie_life;=0D =0D =0D unsigned int sack_timeout;=0D =0D =0D unsigned int hb_interval;=0D =0D =0D unsigned int probe_interval;=0D =0D =0D =0D =0D =0D int max_retrans_association;=0D int max_retrans_path;=0D int max_retrans_init;=0D =0D =0D =0D =0D int pf_retrans;=0D =0D =0D =0D =0D =0D int ps_retrans;=0D =0D =0D =0D =0D =0D =0D int pf_enable;=0D =0D =0D =0D =0D =0D =0D =0D int pf_expose;=0D =0D =0D =0D =0D =0D =0D int sndbuf_policy;=0D =0D =0D =0D =0D =0D =0D int rcvbuf_policy;=0D =0D int default_auto_asconf;=0D =0D =0D int addip_enable;=0D int addip_noauth;=0D =0D =0D int prsctp_enable;=0D =0D =0D int reconf_enable;=0D =0D =0D int auth_enable;=0D =0D =0D int intl_enable;=0D =0D =0D int ecn_enable;=0D # 166 "./include/net/netns/sctp.h"=0D int scope_policy;=0D =0D =0D =0D =0D int rwnd_upd_shift;=0D =0D =0D unsigned long max_autoclose;=0D };=0D # 25 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/netfilter.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/netfilter_defs.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/netfilter.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/in.h" 1=0D # 19 "./include/linux/in.h"=0D # 1 "./include/uapi/linux/in.h" 1=0D # 28 "./include/uapi/linux/in.h"=0D enum {=0D IPPROTO_IP =3D 0,=0D =0D IPPROTO_ICMP =3D 1,=0D =0D IPPROTO_IGMP =3D 2,=0D =0D IPPROTO_IPIP =3D 4,=0D =0D IPPROTO_TCP =3D 6,=0D =0D IPPROTO_EGP =3D 8,=0D =0D IPPROTO_PUP =3D 12,=0D =0D IPPROTO_UDP =3D 17,=0D =0D IPPROTO_IDP =3D 22,=0D =0D IPPROTO_TP =3D 29,=0D =0D IPPROTO_DCCP =3D 33,=0D =0D IPPROTO_IPV6 =3D 41,=0D =0D IPPROTO_RSVP =3D 46,=0D =0D IPPROTO_GRE =3D 47,=0D =0D IPPROTO_ESP =3D 50,=0D =0D IPPROTO_AH =3D 51,=0D =0D IPPROTO_MTP =3D 92,=0D =0D IPPROTO_BEETPH =3D 94,=0D =0D IPPROTO_ENCAP =3D 98,=0D =0D IPPROTO_PIM =3D 103,=0D =0D IPPROTO_COMP =3D 108,=0D =0D IPPROTO_SCTP =3D 132,=0D =0D IPPROTO_UDPLITE =3D 136,=0D =0D IPPROTO_MPLS =3D 137,=0D =0D IPPROTO_ETHERNET =3D 143,=0D =0D IPPROTO_RAW =3D 255,=0D =0D IPPROTO_MPTCP =3D 262,=0D =0D IPPROTO_MAX=0D };=0D =0D =0D =0D =0D struct in_addr {=0D __be32 s_addr;=0D };=0D # 173 "./include/uapi/linux/in.h"=0D struct ip_mreq {=0D struct in_addr imr_multiaddr;=0D struct in_addr imr_interface;=0D };=0D =0D struct ip_mreqn {=0D struct in_addr imr_multiaddr;=0D struct in_addr imr_address;=0D int imr_ifindex;=0D };=0D =0D struct ip_mreq_source {=0D __be32 imr_multiaddr;=0D __be32 imr_interface;=0D __be32 imr_sourceaddr;=0D };=0D =0D struct ip_msfilter {=0D union {=0D struct {=0D __be32 imsf_multiaddr_aux;=0D __be32 imsf_interface_aux;=0D __u32 imsf_fmode_aux;=0D __u32 imsf_numsrc_aux;=0D __be32 imsf_slist[1];=0D };=0D struct {=0D __be32 imsf_multiaddr;=0D __be32 imsf_interface;=0D __u32 imsf_fmode;=0D __u32 imsf_numsrc;=0D __be32 imsf_slist_flex[];=0D };=0D };=0D };=0D =0D =0D =0D =0D =0D struct group_req {=0D __u32 gr_interface;=0D struct __kernel_sockaddr_storage gr_group;=0D };=0D =0D struct group_source_req {=0D __u32 gsr_interface;=0D struct __kernel_sockaddr_storage gsr_group;=0D struct __kernel_sockaddr_storage gsr_source;=0D };=0D =0D struct group_filter {=0D union {=0D struct {=0D __u32 gf_interface_aux;=0D struct __kernel_sockaddr_storage gf_group_aux;=0D __u32 gf_fmode_aux;=0D __u32 gf_numsrc_aux;=0D struct __kernel_sockaddr_storage gf_slist[1];=0D };=0D struct {=0D __u32 gf_interface;=0D struct __kernel_sockaddr_storage gf_group;=0D __u32 gf_fmode;=0D __u32 gf_numsrc;=0D struct __kernel_sockaddr_storage gf_slist_flex[];=0D };=0D };=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct in_pktinfo {=0D int ipi_ifindex;=0D struct in_addr ipi_spec_dst;=0D struct in_addr ipi_addr;=0D };=0D =0D =0D =0D =0D =0D struct sockaddr_in {=0D __kernel_sa_family_t sin_family;=0D __be16 sin_port;=0D struct in_addr sin_addr;=0D =0D =0D unsigned char __pad[16 - sizeof(short int) -=0D sizeof(unsigned short int) - sizeof(struct in_addr)];=0D };=0D # 20 "./include/linux/in.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int proto_ports_offset(int p= roto)=0D {=0D switch (proto) {=0D case IPPROTO_TCP:=0D case IPPROTO_UDP:=0D case IPPROTO_DCCP:=0D case IPPROTO_ESP:=0D case IPPROTO_SCTP:=0D case IPPROTO_UDPLITE:=0D return 0;=0D case IPPROTO_AH:=0D return 4;=0D default:=0D return -22;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_loopback(__be32= addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((= __u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xff000000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0x7f000000))) ? ((__u32)( (((__u32)((0x7f000000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0x7f000000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0x7f000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x7f000000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0x7f000000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_multicast(__be3= 2 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xf0000000))) ? ((= __u32)( (((__u32)((0xf0000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xf0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xf0000000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xf0000000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xf0000000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_local_multicast= (__be32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((= __u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xffffff00))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xe0000000))) ? ((__u32)( (((__u32)((0xe0000000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xe0000000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xe0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe0000000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xe0000000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_lbcast(__be32 a= ddr)=0D {=0D =0D return addr =3D=3D (( __be32)(__builtin_constant_p((__u32)((((unsigned lon= g int) 0xffffffff)))) ? ((__u32)( (((__u32)((((unsigned long int) 0xfffffff= f))) & (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0xffff= ffff))) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0xff= ffffff))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0x= ffffffff))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long in= t) 0xffffffff)))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_all_snoopers(__= be32 addr)=0D {=0D return addr =3D=3D (( __be32)(__builtin_constant_p((__u32)((0xe000006aU)))= ? ((__u32)( (((__u32)((0xe000006aU)) & (__u32)0x000000ffUL) << 24) | (((__= u32)((0xe000006aU)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xe000006aU))= & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xe000006aU)) & (__u32)0xff00000= 0UL) >> 24))) : __fswab32((0xe000006aU))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_zeronet(__be32 = addr)=0D {=0D return (addr =3D=3D 0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_private_10(__be= 32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xff000000))) ? ((= __u32)( (((__u32)((0xff000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xff000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xff000000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xff000000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xff000000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0x0a000000))) ? ((__u32)( (((__u32)((0x0a000000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0x0a000000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0x0a000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0a000000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0x0a000000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_private_172(__b= e32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xfff00000))) ? ((= __u32)( (((__u32)((0xfff00000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xfff00000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfff00000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xfff00000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xfff00000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xac100000))) ? ((__u32)( (((__u32)((0xac100000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xac100000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xac100000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xac100000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xac100000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_private_192(__b= e32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((= __u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xffff0000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xc0a80000))) ? ((__u32)( (((__u32)((0xc0a80000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xc0a80000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xc0a80000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0a80000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0a80000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_linklocal_169(_= _be32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffff0000))) ? ((= __u32)( (((__u32)((0xffff0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xffff0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffff0000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xffff0000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xffff0000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xa9fe0000))) ? ((__u32)( (((__u32)((0xa9fe0000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xa9fe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xa9fe0000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xa9fe0000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xa9fe0000))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_anycast_6to4(__= be32 addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((= __u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xffffff00))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xc0586300))) ? ((__u32)( (((__u32)((0xc0586300)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xc0586300)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xc0586300)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0586300)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0586300))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_test_192(__be32= addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xffffff00))) ? ((= __u32)( (((__u32)((0xffffff00)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xffffff00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xffffff00)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xffffff00)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xffffff00))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xc0000200))) ? ((__u32)( (((__u32)((0xc0000200)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xc0000200)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xc0000200)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc0000200)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xc0000200))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_is_test_198(__be32= addr)=0D {=0D return (addr & (( __be32)(__builtin_constant_p((__u32)((0xfffe0000))) ? ((= __u32)( (((__u32)((0xfffe0000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0xfffe0000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xfffe0000)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0xfffe0000)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0xfffe0000))))) =3D=3D (( __be32)(__builtin_constant_p((_= _u32)((0xc6120000))) ? ((__u32)( (((__u32)((0xc6120000)) & (__u32)0x000000f= fUL) << 24) | (((__u32)((0xc6120000)) & (__u32)0x0000ff00UL) << 8) | (((__u= 32)((0xc6120000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xc6120000)) & = (__u32)0xff000000UL) >> 24))) : __fswab32((0xc6120000))));=0D }=0D # 8 "./include/uapi/linux/netfilter.h" 2=0D # 42 "./include/uapi/linux/netfilter.h"=0D enum nf_inet_hooks {=0D NF_INET_PRE_ROUTING,=0D NF_INET_LOCAL_IN,=0D NF_INET_FORWARD,=0D NF_INET_LOCAL_OUT,=0D NF_INET_POST_ROUTING,=0D NF_INET_NUMHOOKS,=0D NF_INET_INGRESS =3D NF_INET_NUMHOOKS,=0D };=0D =0D enum nf_dev_hooks {=0D NF_NETDEV_INGRESS,=0D NF_NETDEV_EGRESS,=0D NF_NETDEV_NUMHOOKS=0D };=0D =0D enum {=0D NFPROTO_UNSPEC =3D 0,=0D NFPROTO_INET =3D 1,=0D NFPROTO_IPV4 =3D 2,=0D NFPROTO_ARP =3D 3,=0D NFPROTO_NETDEV =3D 5,=0D NFPROTO_BRIDGE =3D 7,=0D NFPROTO_IPV6 =3D 10,=0D NFPROTO_DECNET =3D 12,=0D NFPROTO_NUMPROTO,=0D };=0D =0D union nf_inet_addr {=0D __u32 all[4];=0D __be32 ip;=0D __be32 ip6[4];=0D struct in_addr in;=0D struct in6_addr in6;=0D };=0D # 6 "./include/linux/netfilter_defs.h" 2=0D # 6 "./include/net/netns/netfilter.h" 2=0D =0D struct proc_dir_entry;=0D struct nf_logger;=0D struct nf_queue_handler;=0D =0D struct netns_nf {=0D =0D struct proc_dir_entry *proc_netfilter;=0D =0D const struct nf_logger *nf_loggers[NFPROTO_NUMPROTO];=0D =0D struct ctl_table_header *nf_log_dir_header;=0D =0D struct nf_hook_entries *hooks_ipv4[NF_INET_NUMHOOKS];=0D struct nf_hook_entries *hooks_ipv6[NF_INET_NUMHOOKS];=0D # 36 "./include/net/netns/netfilter.h"=0D };=0D # 26 "./include/net/net_namespace.h" 2=0D =0D =0D =0D # 1 "./include/net/netns/nftables.h" 1=0D =0D =0D =0D =0D =0D =0D struct netns_nftables {=0D u8 gencursor;=0D };=0D # 30 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/xfrm.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/xfrm.h" 1=0D # 15 "./include/uapi/linux/xfrm.h"=0D typedef union {=0D __be32 a4;=0D __be32 a6[4];=0D struct in6_addr in6;=0D } xfrm_address_t;=0D =0D =0D =0D =0D =0D struct xfrm_id {=0D xfrm_address_t daddr;=0D __be32 spi;=0D __u8 proto;=0D };=0D =0D struct xfrm_sec_ctx {=0D __u8 ctx_doi;=0D __u8 ctx_alg;=0D __u16 ctx_len;=0D __u32 ctx_sid;=0D char ctx_str[0];=0D };=0D # 49 "./include/uapi/linux/xfrm.h"=0D struct xfrm_selector {=0D xfrm_address_t daddr;=0D xfrm_address_t saddr;=0D __be16 dport;=0D __be16 dport_mask;=0D __be16 sport;=0D __be16 sport_mask;=0D __u16 family;=0D __u8 prefixlen_d;=0D __u8 prefixlen_s;=0D __u8 proto;=0D int ifindex;=0D __kernel_uid32_t user;=0D };=0D =0D =0D =0D struct xfrm_lifetime_cfg {=0D __u64 soft_byte_limit;=0D __u64 hard_byte_limit;=0D __u64 soft_packet_limit;=0D __u64 hard_packet_limit;=0D __u64 soft_add_expires_seconds;=0D __u64 hard_add_expires_seconds;=0D __u64 soft_use_expires_seconds;=0D __u64 hard_use_expires_seconds;=0D };=0D =0D struct xfrm_lifetime_cur {=0D __u64 bytes;=0D __u64 packets;=0D __u64 add_time;=0D __u64 use_time;=0D };=0D =0D struct xfrm_replay_state {=0D __u32 oseq;=0D __u32 seq;=0D __u32 bitmap;=0D };=0D =0D =0D =0D struct xfrm_replay_state_esn {=0D unsigned int bmp_len;=0D __u32 oseq;=0D __u32 seq;=0D __u32 oseq_hi;=0D __u32 seq_hi;=0D __u32 replay_window;=0D __u32 bmp[0];=0D };=0D =0D struct xfrm_algo {=0D char alg_name[64];=0D unsigned int alg_key_len;=0D char alg_key[0];=0D };=0D =0D struct xfrm_algo_auth {=0D char alg_name[64];=0D unsigned int alg_key_len;=0D unsigned int alg_trunc_len;=0D char alg_key[0];=0D };=0D =0D struct xfrm_algo_aead {=0D char alg_name[64];=0D unsigned int alg_key_len;=0D unsigned int alg_icv_len;=0D char alg_key[0];=0D };=0D =0D struct xfrm_stats {=0D __u32 replay_window;=0D __u32 replay;=0D __u32 integrity_failed;=0D };=0D =0D enum {=0D XFRM_POLICY_TYPE_MAIN =3D 0,=0D XFRM_POLICY_TYPE_SUB =3D 1,=0D XFRM_POLICY_TYPE_MAX =3D 2,=0D XFRM_POLICY_TYPE_ANY =3D 255=0D };=0D =0D enum {=0D XFRM_POLICY_IN =3D 0,=0D XFRM_POLICY_OUT =3D 1,=0D XFRM_POLICY_FWD =3D 2,=0D XFRM_POLICY_MASK =3D 3,=0D XFRM_POLICY_MAX =3D 3=0D };=0D =0D enum {=0D XFRM_SHARE_ANY,=0D XFRM_SHARE_SESSION,=0D XFRM_SHARE_USER,=0D XFRM_SHARE_UNIQUE=0D };=0D # 158 "./include/uapi/linux/xfrm.h"=0D enum {=0D XFRM_MSG_BASE =3D 0x10,=0D =0D XFRM_MSG_NEWSA =3D 0x10,=0D =0D XFRM_MSG_DELSA,=0D =0D XFRM_MSG_GETSA,=0D =0D =0D XFRM_MSG_NEWPOLICY,=0D =0D XFRM_MSG_DELPOLICY,=0D =0D XFRM_MSG_GETPOLICY,=0D =0D =0D XFRM_MSG_ALLOCSPI,=0D =0D XFRM_MSG_ACQUIRE,=0D =0D XFRM_MSG_EXPIRE,=0D =0D =0D XFRM_MSG_UPDPOLICY,=0D =0D XFRM_MSG_UPDSA,=0D =0D =0D XFRM_MSG_POLEXPIRE,=0D =0D =0D XFRM_MSG_FLUSHSA,=0D =0D XFRM_MSG_FLUSHPOLICY,=0D =0D =0D XFRM_MSG_NEWAE,=0D =0D XFRM_MSG_GETAE,=0D =0D =0D XFRM_MSG_REPORT,=0D =0D =0D XFRM_MSG_MIGRATE,=0D =0D =0D XFRM_MSG_NEWSADINFO,=0D =0D XFRM_MSG_GETSADINFO,=0D =0D =0D XFRM_MSG_NEWSPDINFO,=0D =0D XFRM_MSG_GETSPDINFO,=0D =0D =0D XFRM_MSG_MAPPING,=0D =0D =0D XFRM_MSG_SETDEFAULT,=0D =0D XFRM_MSG_GETDEFAULT,=0D =0D __XFRM_MSG_MAX=0D };=0D # 233 "./include/uapi/linux/xfrm.h"=0D struct xfrm_user_sec_ctx {=0D __u16 len;=0D __u16 exttype;=0D __u8 ctx_alg;=0D __u8 ctx_doi;=0D __u16 ctx_len;=0D };=0D =0D struct xfrm_user_tmpl {=0D struct xfrm_id id;=0D __u16 family;=0D xfrm_address_t saddr;=0D __u32 reqid;=0D __u8 mode;=0D __u8 share;=0D __u8 optional;=0D __u32 aalgos;=0D __u32 ealgos;=0D __u32 calgos;=0D };=0D =0D struct xfrm_encap_tmpl {=0D __u16 encap_type;=0D __be16 encap_sport;=0D __be16 encap_dport;=0D xfrm_address_t encap_oa;=0D };=0D =0D =0D enum xfrm_ae_ftype_t {=0D XFRM_AE_UNSPEC,=0D XFRM_AE_RTHR=3D1,=0D XFRM_AE_RVAL=3D2,=0D XFRM_AE_LVAL=3D4,=0D XFRM_AE_ETHR=3D8,=0D XFRM_AE_CR=3D16,=0D XFRM_AE_CE=3D32,=0D XFRM_AE_CU=3D64,=0D __XFRM_AE_MAX=0D =0D =0D };=0D =0D struct xfrm_userpolicy_type {=0D __u8 type;=0D __u16 reserved1;=0D __u8 reserved2;=0D };=0D =0D =0D enum xfrm_attr_type_t {=0D XFRMA_UNSPEC,=0D XFRMA_ALG_AUTH,=0D XFRMA_ALG_CRYPT,=0D XFRMA_ALG_COMP,=0D XFRMA_ENCAP,=0D XFRMA_TMPL,=0D XFRMA_SA,=0D XFRMA_POLICY,=0D XFRMA_SEC_CTX,=0D XFRMA_LTIME_VAL,=0D XFRMA_REPLAY_VAL,=0D XFRMA_REPLAY_THRESH,=0D XFRMA_ETIMER_THRESH,=0D XFRMA_SRCADDR,=0D XFRMA_COADDR,=0D XFRMA_LASTUSED,=0D XFRMA_POLICY_TYPE,=0D XFRMA_MIGRATE,=0D XFRMA_ALG_AEAD,=0D XFRMA_KMADDRESS,=0D XFRMA_ALG_AUTH_TRUNC,=0D XFRMA_MARK,=0D XFRMA_TFCPAD,=0D XFRMA_REPLAY_ESN_VAL,=0D XFRMA_SA_EXTRA_FLAGS,=0D XFRMA_PROTO,=0D XFRMA_ADDRESS_FILTER,=0D XFRMA_PAD,=0D XFRMA_OFFLOAD_DEV,=0D XFRMA_SET_MARK,=0D XFRMA_SET_MARK_MASK,=0D XFRMA_IF_ID,=0D XFRMA_MTIMER_THRESH,=0D __XFRMA_MAX=0D =0D =0D =0D };=0D =0D struct xfrm_mark {=0D __u32 v;=0D __u32 m;=0D };=0D =0D enum xfrm_sadattr_type_t {=0D XFRMA_SAD_UNSPEC,=0D XFRMA_SAD_CNT,=0D XFRMA_SAD_HINFO,=0D __XFRMA_SAD_MAX=0D =0D =0D };=0D =0D struct xfrmu_sadhinfo {=0D __u32 sadhcnt;=0D __u32 sadhmcnt;=0D };=0D =0D enum xfrm_spdattr_type_t {=0D XFRMA_SPD_UNSPEC,=0D XFRMA_SPD_INFO,=0D XFRMA_SPD_HINFO,=0D XFRMA_SPD_IPV4_HTHRESH,=0D XFRMA_SPD_IPV6_HTHRESH,=0D __XFRMA_SPD_MAX=0D =0D =0D };=0D =0D struct xfrmu_spdinfo {=0D __u32 incnt;=0D __u32 outcnt;=0D __u32 fwdcnt;=0D __u32 inscnt;=0D __u32 outscnt;=0D __u32 fwdscnt;=0D };=0D =0D struct xfrmu_spdhinfo {=0D __u32 spdhcnt;=0D __u32 spdhmcnt;=0D };=0D =0D struct xfrmu_spdhthresh {=0D __u8 lbits;=0D __u8 rbits;=0D };=0D =0D struct xfrm_usersa_info {=0D struct xfrm_selector sel;=0D struct xfrm_id id;=0D xfrm_address_t saddr;=0D struct xfrm_lifetime_cfg lft;=0D struct xfrm_lifetime_cur curlft;=0D struct xfrm_stats stats;=0D __u32 seq;=0D __u32 reqid;=0D __u16 family;=0D __u8 mode;=0D __u8 replay_window;=0D __u8 flags;=0D # 393 "./include/uapi/linux/xfrm.h"=0D };=0D =0D =0D =0D =0D struct xfrm_usersa_id {=0D xfrm_address_t daddr;=0D __be32 spi;=0D __u16 family;=0D __u8 proto;=0D };=0D =0D struct xfrm_aevent_id {=0D struct xfrm_usersa_id sa_id;=0D xfrm_address_t saddr;=0D __u32 flags;=0D __u32 reqid;=0D };=0D =0D struct xfrm_userspi_info {=0D struct xfrm_usersa_info info;=0D __u32 min;=0D __u32 max;=0D };=0D =0D struct xfrm_userpolicy_info {=0D struct xfrm_selector sel;=0D struct xfrm_lifetime_cfg lft;=0D struct xfrm_lifetime_cur curlft;=0D __u32 priority;=0D __u32 index;=0D __u8 dir;=0D __u8 action;=0D =0D =0D __u8 flags;=0D =0D =0D =0D __u8 share;=0D };=0D =0D struct xfrm_userpolicy_id {=0D struct xfrm_selector sel;=0D __u32 index;=0D __u8 dir;=0D };=0D =0D struct xfrm_user_acquire {=0D struct xfrm_id id;=0D xfrm_address_t saddr;=0D struct xfrm_selector sel;=0D struct xfrm_userpolicy_info policy;=0D __u32 aalgos;=0D __u32 ealgos;=0D __u32 calgos;=0D __u32 seq;=0D };=0D =0D struct xfrm_user_expire {=0D struct xfrm_usersa_info state;=0D __u8 hard;=0D };=0D =0D struct xfrm_user_polexpire {=0D struct xfrm_userpolicy_info pol;=0D __u8 hard;=0D };=0D =0D struct xfrm_usersa_flush {=0D __u8 proto;=0D };=0D =0D struct xfrm_user_report {=0D __u8 proto;=0D struct xfrm_selector sel;=0D };=0D =0D =0D =0D struct xfrm_user_kmaddress {=0D xfrm_address_t local;=0D xfrm_address_t remote;=0D __u32 reserved;=0D __u16 family;=0D };=0D =0D struct xfrm_user_migrate {=0D xfrm_address_t old_daddr;=0D xfrm_address_t old_saddr;=0D xfrm_address_t new_daddr;=0D xfrm_address_t new_saddr;=0D __u8 proto;=0D __u8 mode;=0D __u16 reserved;=0D __u32 reqid;=0D __u16 old_family;=0D __u16 new_family;=0D };=0D =0D struct xfrm_user_mapping {=0D struct xfrm_usersa_id id;=0D __u32 reqid;=0D xfrm_address_t old_saddr;=0D xfrm_address_t new_saddr;=0D __be16 old_sport;=0D __be16 new_sport;=0D };=0D =0D struct xfrm_address_filter {=0D xfrm_address_t saddr;=0D xfrm_address_t daddr;=0D __u16 family;=0D __u8 splen;=0D __u8 dplen;=0D };=0D =0D struct xfrm_user_offload {=0D int ifindex;=0D __u8 flags;=0D };=0D # 523 "./include/uapi/linux/xfrm.h"=0D struct xfrm_userpolicy_default {=0D =0D =0D =0D __u8 in;=0D __u8 fwd;=0D __u8 out;=0D };=0D # 541 "./include/uapi/linux/xfrm.h"=0D enum xfrm_nlgroups {=0D XFRMNLGRP_NONE,=0D =0D XFRMNLGRP_ACQUIRE,=0D =0D XFRMNLGRP_EXPIRE,=0D =0D XFRMNLGRP_SA,=0D =0D XFRMNLGRP_POLICY,=0D =0D XFRMNLGRP_AEVENTS,=0D =0D XFRMNLGRP_REPORT,=0D =0D XFRMNLGRP_MIGRATE,=0D =0D XFRMNLGRP_MAPPING,=0D =0D __XFRMNLGRP_MAX=0D };=0D # 10 "./include/net/netns/xfrm.h" 2=0D =0D =0D struct ctl_table_header;=0D =0D struct xfrm_policy_hash {=0D struct hlist_head *table;=0D unsigned int hmask;=0D u8 dbits4;=0D u8 sbits4;=0D u8 dbits6;=0D u8 sbits6;=0D };=0D =0D struct xfrm_policy_hthresh {=0D struct work_struct work;=0D seqlock_t lock;=0D u8 lbits4;=0D u8 rbits4;=0D u8 lbits6;=0D u8 rbits6;=0D };=0D =0D struct netns_xfrm {=0D struct list_head state_all;=0D # 42 "./include/net/netns/xfrm.h"=0D struct hlist_head *state_bydst;=0D struct hlist_head *state_bysrc;=0D struct hlist_head *state_byspi;=0D struct hlist_head *state_byseq;=0D unsigned int state_hmask;=0D unsigned int state_num;=0D struct work_struct state_hash_work;=0D =0D struct list_head policy_all;=0D struct hlist_head *policy_byidx;=0D unsigned int policy_idx_hmask;=0D struct hlist_head policy_inexact[XFRM_POLICY_MAX];=0D struct xfrm_policy_hash policy_bydst[XFRM_POLICY_MAX];=0D unsigned int policy_count[XFRM_POLICY_MAX * 2];=0D struct work_struct policy_hash_work;=0D struct xfrm_policy_hthresh policy_hthresh;=0D struct list_head inexact_bins;=0D =0D =0D struct sock *nlsk;=0D struct sock *nlsk_stash;=0D =0D u32 sysctl_aevent_etime;=0D u32 sysctl_aevent_rseqth;=0D int sysctl_larval_drop;=0D u32 sysctl_acq_expires;=0D =0D u8 policy_default[XFRM_POLICY_MAX];=0D =0D =0D struct ctl_table_header *sysctl_hdr;=0D =0D =0D struct dst_ops xfrm4_dst_ops;=0D =0D struct dst_ops xfrm6_dst_ops;=0D =0D spinlock_t xfrm_state_lock;=0D seqcount_spinlock_t xfrm_state_hash_generation;=0D seqcount_spinlock_t xfrm_policy_hash_generation;=0D =0D spinlock_t xfrm_policy_lock;=0D struct mutex xfrm_cfg_mutex;=0D };=0D # 31 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/mpls.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct mpls_route;=0D struct ctl_table_header;=0D =0D struct netns_mpls {=0D int ip_ttl_propagate;=0D int default_ttl;=0D size_t platform_labels;=0D struct mpls_route * *platform_label;=0D =0D struct ctl_table_header *ctl;=0D };=0D # 32 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/can.h" 1=0D # 11 "./include/net/netns/can.h"=0D struct can_dev_rcv_lists;=0D struct can_pkg_stats;=0D struct can_rcv_lists_stats;=0D =0D struct netns_can {=0D =0D struct proc_dir_entry *proc_dir;=0D struct proc_dir_entry *pde_stats;=0D struct proc_dir_entry *pde_reset_stats;=0D struct proc_dir_entry *pde_rcvlist_all;=0D struct proc_dir_entry *pde_rcvlist_fil;=0D struct proc_dir_entry *pde_rcvlist_inv;=0D struct proc_dir_entry *pde_rcvlist_sff;=0D struct proc_dir_entry *pde_rcvlist_eff;=0D struct proc_dir_entry *pde_rcvlist_err;=0D struct proc_dir_entry *bcmproc_dir;=0D =0D =0D =0D struct can_dev_rcv_lists *rx_alldev_list;=0D spinlock_t rcvlists_lock;=0D struct timer_list stattimer;=0D struct can_pkg_stats *pkg_stats;=0D struct can_rcv_lists_stats *rcv_lists_stats;=0D =0D =0D struct hlist_head cgw_list;=0D };=0D # 33 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/xdp.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct netns_xdp {=0D struct mutex lock;=0D struct hlist_head list;=0D };=0D # 34 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/smc.h" 1=0D =0D =0D =0D =0D =0D =0D struct smc_stats_rsn;=0D struct smc_stats;=0D struct netns_smc {=0D =0D struct smc_stats *smc_stats;=0D =0D struct mutex mutex_fback_rsn;=0D struct smc_stats_rsn *fback_rsn;=0D =0D bool limit_smc_hs;=0D =0D struct ctl_table_header *smc_hdr;=0D =0D unsigned int sysctl_autocorking_size;=0D };=0D # 35 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/bpf.h" 1=0D # 11 "./include/net/netns/bpf.h"=0D struct bpf_prog;=0D struct bpf_prog_array;=0D =0D enum netns_bpf_attach_type {=0D NETNS_BPF_INVALID =3D -1,=0D NETNS_BPF_FLOW_DISSECTOR =3D 0,=0D NETNS_BPF_SK_LOOKUP,=0D MAX_NETNS_BPF_ATTACH_TYPE=0D };=0D =0D struct netns_bpf {=0D =0D struct bpf_prog_array *run_array[MAX_NETNS_BPF_ATTACH_TYPE];=0D struct bpf_prog *progs[MAX_NETNS_BPF_ATTACH_TYPE];=0D struct list_head links[MAX_NETNS_BPF_ATTACH_TYPE];=0D };=0D # 36 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/netns/mctp.h" 1=0D # 11 "./include/net/netns/mctp.h"=0D struct netns_mctp {=0D =0D struct list_head routes;=0D =0D =0D =0D =0D =0D struct mutex bind_lock;=0D struct hlist_head binds;=0D =0D =0D =0D =0D spinlock_t keys_lock;=0D struct hlist_head keys;=0D =0D =0D unsigned int default_net;=0D =0D =0D struct mutex neigh_lock;=0D struct list_head neighbours;=0D };=0D # 37 "./include/net/net_namespace.h" 2=0D # 1 "./include/net/net_trackers.h" 1=0D =0D =0D =0D # 1 "./include/linux/ref_tracker.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct ref_tracker;=0D =0D struct ref_tracker_dir {=0D # 21 "./include/linux/ref_tracker.h"=0D };=0D # 50 "./include/linux/ref_tracker.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ref_tracker_dir_init(st= ruct ref_tracker_dir *dir,=0D unsigned int quarantine_count)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ref_tracker_dir_exit(st= ruct ref_tracker_dir *dir)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ref_tracker_dir_print(s= truct ref_tracker_dir *dir,=0D unsigned int display_limit)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ref_tracker_alloc(struct= ref_tracker_dir *dir,=0D struct ref_tracker **trackerp,=0D gfp_t gfp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ref_tracker_free(struct = ref_tracker_dir *dir,=0D struct ref_tracker **trackerp)=0D {=0D return 0;=0D }=0D # 5 "./include/net/net_trackers.h" 2=0D =0D =0D =0D =0D typedef struct {} netdevice_tracker;=0D =0D =0D =0D =0D =0D typedef struct {} netns_tracker;=0D # 38 "./include/net/net_namespace.h" 2=0D # 1 "./include/linux/ns_common.h" 1=0D =0D =0D =0D =0D =0D =0D struct proc_ns_operations;=0D =0D struct ns_common {=0D atomic_long_t stashed;=0D const struct proc_ns_operations *ops;=0D unsigned int inum;=0D refcount_t count;=0D };=0D # 39 "./include/net/net_namespace.h" 2=0D # 1 "./include/linux/idr.h" 1=0D # 19 "./include/linux/idr.h"=0D struct idr {=0D struct xarray idr_rt;=0D unsigned int idr_base;=0D unsigned int idr_next;=0D };=0D # 66 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int idr_get_cursor(= const struct idr *idr)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_220(void) ; if (!((sizeof(idr->idr_next) =3D=3D sizeof(char) || sizeof(= idr->idr_next) =3D=3D sizeof(short) || sizeof(idr->idr_next) =3D=3D sizeof(= int) || sizeof(idr->idr_next) =3D=3D sizeof(long)) || sizeof(idr->idr_next)= =3D=3D sizeof(long long))) __compiletime_assert_220(); } while (0); (*(con= st volatile typeof( _Generic((idr->idr_next), char: (char)0, unsigned char:= (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned s= hort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signe= d int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed= long)0, unsigned long long: (unsigned long long)0, signed long long: (sign= ed long long)0, default: (idr->idr_next))) *)&(idr->idr_next)); });=0D }=0D # 79 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void idr_set_cursor(struct i= dr *idr, unsigned int val)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 21(void) ; if (!((sizeof(idr->idr_next) =3D=3D sizeof(char) || sizeof(idr->= idr_next) =3D=3D sizeof(short) || sizeof(idr->idr_next) =3D=3D sizeof(int) = || sizeof(idr->idr_next) =3D=3D sizeof(long)) || sizeof(idr->idr_next) =3D= =3D sizeof(long long))) __compiletime_assert_221(); } while (0); do { *(vol= atile typeof(idr->idr_next) *)&(idr->idr_next) =3D (val); } while (0); } wh= ile (0);=0D }=0D # 112 "./include/linux/idr.h"=0D void idr_preload(gfp_t gfp_mask);=0D =0D int idr_alloc(struct idr *, void *ptr, int start, int end, gfp_t);=0D int __attribute__((__warn_unused_result__)) idr_alloc_u32(struct idr *, voi= d *ptr, u32 *id,=0D unsigned long max, gfp_t);=0D int idr_alloc_cyclic(struct idr *, void *ptr, int start, int end, gfp_t);=0D void *idr_remove(struct idr *, unsigned long id);=0D void *idr_find(const struct idr *, unsigned long id);=0D int idr_for_each(const struct idr *,=0D int (*fn)(int id, void *p, void *data), void *data);=0D void *idr_get_next(struct idr *, int *nextid);=0D void *idr_get_next_ul(struct idr *, unsigned long *nextid);=0D void *idr_replace(struct idr *, void *, unsigned long id);=0D void idr_destroy(struct idr *);=0D # 135 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void idr_init_base(struct id= r *idr, int base)=0D {=0D xa_init_flags(&idr->idr_rt, ((( gfp_t)4) | ( gfp_t) (1 << (((27 + 1)) + 0)= )));=0D idr->idr_base =3D base;=0D idr->idr_next =3D 0;=0D }=0D # 149 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void idr_init(struct idr *id= r)=0D {=0D idr_init_base(idr, 0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool idr_is_empty(const stru= ct idr *idr)=0D {=0D return radix_tree_empty(&idr->idr_rt) &&=0D radix_tree_tagged(&idr->idr_rt, 0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void idr_preload_end(void)=0D {=0D do { local_lock_release(({ do { const void *__vpp_verify =3D (typeof((&rad= ix_tree_preloads.lock) + 0))((void *)0); (void)__vpp_verify; } while (0); (= { unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&radix_tree_pre= loads.lock)) *)(&radix_tree_preloads.lock)); (typeof((typeof(*(&radix_tree_= preloads.lock)) *)(&radix_tree_preloads.lock))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); })); do { __asm__ = __volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); } while= (0);=0D }=0D # 240 "./include/linux/idr.h"=0D struct ida_bitmap {=0D unsigned long bitmap[(128 / sizeof(long))];=0D };=0D =0D struct ida {=0D struct xarray xa;=0D };=0D # 255 "./include/linux/idr.h"=0D int ida_alloc_range(struct ida *, unsigned int min, unsigned int max, gfp_t= );=0D void ida_free(struct ida *, unsigned int id);=0D void ida_destroy(struct ida *ida);=0D # 271 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ida_alloc(struct ida *id= a, gfp_t gfp)=0D {=0D return ida_alloc_range(ida, 0, ~0, gfp);=0D }=0D # 289 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ida_alloc_min(struct ida= *ida, unsigned int min, gfp_t gfp)=0D {=0D return ida_alloc_range(ida, min, ~0, gfp);=0D }=0D # 307 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ida_alloc_max(struct ida= *ida, unsigned int max, gfp_t gfp)=0D {=0D return ida_alloc_range(ida, 0, max, gfp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ida_init(struct ida *id= a)=0D {=0D xa_init_flags(&ida->xa, ((( gfp_t)XA_LOCK_IRQ) | ((( gfp_t)4U) | (( gfp_t)= ((1U << (27 + 1)) << ( unsigned)((( xa_mark_t)0U)))))));=0D }=0D # 325 "./include/linux/idr.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ida_is_empty(const stru= ct ida *ida)=0D {=0D return xa_empty(&ida->xa);=0D }=0D # 40 "./include/net/net_namespace.h" 2=0D # 1 "./include/linux/skbuff.h" 1=0D # 17 "./include/linux/skbuff.h"=0D # 1 "./include/linux/bvec.h" 1=0D # 10 "./include/linux/bvec.h"=0D # 1 "./include/linux/highmem.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/cacheflush.h" 1=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/cacheflush.h" 1=0D # 11 "./arch/riscv/include/asm/cacheflush.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void local_flush_icache_all(= void)=0D {=0D asm volatile ("fence.i" ::: "memory");=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_dcache_page(struc= t page *page)=0D {=0D if (arch_test_bit(PG_arch_1, &page->flags))=0D clear_bit(PG_arch_1, &page->flags);=0D }=0D # 40 "./arch/riscv/include/asm/cacheflush.h"=0D void flush_icache_all(void);=0D void flush_icache_mm(struct mm_struct *mm, bool local);=0D # 51 "./arch/riscv/include/asm/cacheflush.h"=0D # 1 "./include/asm-generic/cacheflush.h" 1=0D =0D =0D =0D =0D struct mm_struct;=0D struct vm_area_struct;=0D struct page;=0D struct address_space;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_all(void)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_mm(struct m= m_struct *mm)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_dup_mm(stru= ct mm_struct *mm)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_range(struc= t vm_area_struct *vma,=0D unsigned long start,=0D unsigned long end)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_page(struct= vm_area_struct *vma,=0D unsigned long vmaddr,=0D unsigned long pfn)=0D {=0D }=0D # 57 "./include/asm-generic/cacheflush.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_dcache_mmap_lock(= struct address_space *mapping)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_dcache_mmap_unloc= k(struct address_space *mapping)=0D {=0D }=0D # 79 "./include/asm-generic/cacheflush.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_icache_page(struc= t vm_area_struct *vma,=0D struct page *page)=0D {=0D }=0D # 94 "./include/asm-generic/cacheflush.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_vmap(unsign= ed long start, unsigned long end)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_cache_vunmap(unsi= gned long start, unsigned long end)=0D {=0D }=0D # 52 "./arch/riscv/include/asm/cacheflush.h" 2=0D # 6 "./include/linux/cacheflush.h" 2=0D =0D struct folio;=0D =0D =0D =0D void flush_dcache_folio(struct folio *folio);=0D # 9 "./include/linux/highmem.h" 2=0D =0D =0D # 1 "./include/linux/hardirq.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/context_tracking_state.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/static_key.h" 1=0D # 7 "./include/linux/context_tracking_state.h" 2=0D =0D struct context_tracking {=0D =0D =0D =0D =0D =0D =0D bool active;=0D int recursion;=0D enum ctx_state {=0D CONTEXT_DISABLED =3D -1,=0D CONTEXT_KERNEL =3D 0,=0D CONTEXT_USER,=0D CONTEXT_GUEST,=0D } state;=0D };=0D # 49 "./include/linux/context_tracking_state.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool context_tracking_in_use= r(void) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool context_tracking_enable= d(void) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool context_tracking_enable= d_cpu(int cpu) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool context_tracking_enable= d_this_cpu(void) { return false; }=0D # 6 "./include/linux/hardirq.h" 2=0D =0D =0D # 1 "./include/linux/ftrace_irq.h" 1=0D # 11 "./include/linux/ftrace_irq.h"=0D extern bool trace_osnoise_callback_enabled;=0D extern void trace_osnoise_callback(bool enter);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ftrace_nmi_enter(void)= =0D {=0D =0D =0D =0D =0D =0D if (trace_osnoise_callback_enabled)=0D trace_osnoise_callback(true);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ftrace_nmi_exit(void)=0D {=0D =0D =0D =0D =0D =0D if (trace_osnoise_callback_enabled)=0D trace_osnoise_callback(false);=0D =0D }=0D # 9 "./include/linux/hardirq.h" 2=0D =0D # 1 "./include/linux/vtime.h" 1=0D # 28 "./include/linux/vtime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_user_enter(struct= task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_user_exit(struct = task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_guest_enter(struc= t task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_guest_exit(struct= task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_init_idle(struct = task_struct *tsk, int cpu) { }=0D # 41 "./include/linux/vtime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_account_irq(struc= t task_struct *tsk, unsigned int offset) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_account_softirq(s= truct task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_account_hardirq(s= truct task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_flush(struct task= _struct *tsk) { }=0D # 116 "./include/linux/vtime.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vtime_accounting_enable= d_this_cpu(void) { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vtime_task_switch(struc= t task_struct *prev) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void vtime_account_guest_enter(void)=0D {=0D get_current()->flags |=3D 0x00000001;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void vtime_account_guest_exit(void)=0D {=0D get_current()->flags &=3D ~0x00000001;=0D }=0D =0D =0D =0D =0D =0D extern void irqtime_account_irq(struct task_struct *tsk, unsigned int offse= t);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void account_softirq_enter(s= truct task_struct *tsk)=0D {=0D vtime_account_irq(tsk, (1UL << (0 + 8)));=0D irqtime_account_irq(tsk, (1UL << (0 + 8)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void account_softirq_exit(st= ruct task_struct *tsk)=0D {=0D vtime_account_softirq(tsk);=0D irqtime_account_irq(tsk, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void account_hardirq_enter(s= truct task_struct *tsk)=0D {=0D vtime_account_irq(tsk, (1UL << ((0 + 8) + 8)));=0D irqtime_account_irq(tsk, (1UL << ((0 + 8) + 8)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void account_hardirq_exit(st= ruct task_struct *tsk)=0D {=0D vtime_account_hardirq(tsk);=0D irqtime_account_irq(tsk, 0);=0D }=0D # 11 "./include/linux/hardirq.h" 2=0D # 1 "./arch/riscv/include/generated/asm/hardirq.h" 1=0D # 1 "./include/asm-generic/hardirq.h" 1=0D =0D =0D =0D =0D =0D =0D =0D typedef struct {=0D unsigned int __softirq_pending;=0D =0D =0D =0D } __attribute__((__aligned__((1 << 6)))) irq_cpustat_t;=0D =0D extern __attribute__((section(".data..percpu" "..shared_aligned"))) __typeo= f__(irq_cpustat_t) irq_stat __attribute__((__aligned__((1 << 6))));=0D =0D =0D # 1 "./include/linux/irq.h" 1=0D # 16 "./include/linux/irq.h"=0D # 1 "./include/linux/irqhandler.h" 1=0D # 10 "./include/linux/irqhandler.h"=0D struct irq_desc;=0D struct irq_data;=0D typedef void (*irq_flow_handler_t)(struct irq_desc *desc);=0D # 17 "./include/linux/irq.h" 2=0D =0D =0D =0D # 1 "./include/linux/io.h" 1=0D # 13 "./include/linux/io.h"=0D # 1 "./arch/riscv/include/asm/io.h" 1=0D # 17 "./arch/riscv/include/asm/io.h"=0D # 1 "./arch/riscv/include/generated/asm/early_ioremap.h" 1=0D # 1 "./include/asm-generic/early_ioremap.h" 1=0D # 11 "./include/asm-generic/early_ioremap.h"=0D extern void *early_ioremap(resource_size_t phys_addr,=0D unsigned long size);=0D extern void *early_memremap(resource_size_t phys_addr,=0D unsigned long size);=0D extern void *early_memremap_ro(resource_size_t phys_addr,=0D unsigned long size);=0D extern void *early_memremap_prot(resource_size_t phys_addr,=0D unsigned long size, unsigned long prot_val);=0D extern void early_iounmap(void *addr, unsigned long size);=0D extern void early_memunmap(void *addr, unsigned long size);=0D =0D =0D =0D extern void early_ioremap_init(void);=0D =0D =0D extern void early_ioremap_setup(void);=0D =0D =0D =0D =0D =0D extern void early_ioremap_reset(void);=0D =0D =0D =0D =0D extern void copy_from_early_mem(void *dest, phys_addr_t src,=0D unsigned long size);=0D # 2 "./arch/riscv/include/generated/asm/early_ioremap.h" 2=0D # 18 "./arch/riscv/include/asm/io.h" 2=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/mmio.h" 1=0D # 19 "./arch/riscv/include/asm/mmio.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_writeb(u8 val, vo= latile void *addr)=0D {=0D asm volatile("sb %0, 0(%1)" : : "r" (val), "r" (addr));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_writew(u16 val, v= olatile void *addr)=0D {=0D asm volatile("sh %0, 0(%1)" : : "r" (val), "r" (addr));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_writel(u32 val, v= olatile void *addr)=0D {=0D asm volatile("sw %0, 0(%1)" : : "r" (val), "r" (addr));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __raw_writeq(u64 val, v= olatile void *addr)=0D {=0D asm volatile("sd %0, 0(%1)" : : "r" (val), "r" (addr));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 __raw_readb(const volatil= e void *addr)=0D {=0D u8 val;=0D =0D asm volatile("lb %0, 0(%1)" : "=3Dr" (val) : "r" (addr));=0D return val;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 __raw_readw(const volati= le void *addr)=0D {=0D u16 val;=0D =0D asm volatile("lh %0, 0(%1)" : "=3Dr" (val) : "r" (addr));=0D return val;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __raw_readl(const volati= le void *addr)=0D {=0D u32 val;=0D =0D asm volatile("lw %0, 0(%1)" : "=3Dr" (val) : "r" (addr));=0D return val;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 __raw_readq(const volati= le void *addr)=0D {=0D u64 val;=0D =0D asm volatile("ld %0, 0(%1)" : "=3Dr" (val) : "r" (addr));=0D return val;=0D }=0D # 24 "./arch/riscv/include/asm/io.h" 2=0D # 94 "./arch/riscv/include/asm/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __readsb(const volatile= void *addr, void *buffer, unsigned int count) { do {} while (0); if (count= ) { u8 *buf =3D buffer; do { u8 x =3D __raw_readb(addr); *buf++ =3D x; } wh= ile (--count); } __asm__ __volatile__ ("fence i,r" : : : "memory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __readsw(const volatile= void *addr, void *buffer, unsigned int count) { do {} while (0); if (count= ) { u16 *buf =3D buffer; do { u16 x =3D __raw_readw(addr); *buf++ =3D x; } = while (--count); } __asm__ __volatile__ ("fence i,r" : : : "memory"); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __readsl(const volatile= void *addr, void *buffer, unsigned int count) { do {} while (0); if (count= ) { u32 *buf =3D buffer; do { u32 x =3D __raw_readl(addr); *buf++ =3D x; } = while (--count); } __asm__ __volatile__ ("fence i,r" : : : "memory"); }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __insb(const volatile v= oid *addr, void *buffer, unsigned int count) { __asm__ __volatile__ ("fence= io,i" : : : "memory");; if (count) { u8 *buf =3D buffer; do { u8 x =3D __r= aw_readb(addr); *buf++ =3D x; } while (--count); } __asm__ __volatile__ ("f= ence i,ior" : : : "memory");; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __insw(const volatile v= oid *addr, void *buffer, unsigned int count) { __asm__ __volatile__ ("fence= io,i" : : : "memory");; if (count) { u16 *buf =3D buffer; do { u16 x =3D _= _raw_readw(addr); *buf++ =3D x; } while (--count); } __asm__ __volatile__ (= "fence i,ior" : : : "memory");; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __insl(const volatile v= oid *addr, void *buffer, unsigned int count) { __asm__ __volatile__ ("fence= io,i" : : : "memory");; if (count) { u32 *buf =3D buffer; do { u32 x =3D _= _raw_readl(addr); *buf++ =3D x; } while (--count); } __asm__ __volatile__ (= "fence i,ior" : : : "memory");; }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __writesb(volatile void= *addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fe= nce w,o" : : : "memory"); if (count) { const u8 *buf =3D buffer; do { __raw= _writeb(*buf++, addr); } while (--count); } mmiowb_set_pending(); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __writesw(volatile void= *addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fe= nce w,o" : : : "memory"); if (count) { const u16 *buf =3D buffer; do { __ra= w_writew(*buf++, addr); } while (--count); } mmiowb_set_pending(); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __writesl(volatile void= *addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fe= nce w,o" : : : "memory"); if (count) { const u32 *buf =3D buffer; do { __ra= w_writel(*buf++, addr); } while (--count); } mmiowb_set_pending(); }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __outsb(volatile void *= addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fenc= e iow,o" : : : "memory");; if (count) { const u8 *buf =3D buffer; do { __ra= w_writeb(*buf++, addr); } while (--count); } __asm__ __volatile__ ("fence o= ,io" : : : "memory");; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __outsw(volatile void *= addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fenc= e iow,o" : : : "memory");; if (count) { const u16 *buf =3D buffer; do { __r= aw_writew(*buf++, addr); } while (--count); } __asm__ __volatile__ ("fence = o,io" : : : "memory");; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __outsl(volatile void *= addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fenc= e iow,o" : : : "memory");; if (count) { const u32 *buf =3D buffer; do { __r= aw_writel(*buf++, addr); } while (--count); } __asm__ __volatile__ ("fence = o,io" : : : "memory");; }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __readsq(const volatile= void *addr, void *buffer, unsigned int count) { do {} while (0); if (count= ) { u64 *buf =3D buffer; do { u64 x =3D __raw_readq(addr); *buf++ =3D x; } = while (--count); } __asm__ __volatile__ ("fence i,r" : : : "memory"); }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __insq(const volatile v= oid *addr, void *buffer, unsigned int count) { __asm__ __volatile__ ("fence= io,i" : : : "memory");; if (count) { u64 *buf =3D buffer; do { u64 x =3D _= _raw_readq(addr); *buf++ =3D x; } while (--count); } __asm__ __volatile__ (= "fence i,ior" : : : "memory");; }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __writesq(volatile void= *addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fe= nce w,o" : : : "memory"); if (count) { const u64 *buf =3D buffer; do { __ra= w_writeq(*buf++, addr); } while (--count); } mmiowb_set_pending(); }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __outsq(volatile void *= addr, const void *buffer, unsigned int count) { __asm__ __volatile__ ("fenc= e io,i" : : : "memory");; if (count) { const u64 *buf =3D buffer; do { __ra= w_writeq(*buf++, addr); } while (--count); } __asm__ __volatile__ ("fence o= ,io" : : : "memory");; }=0D =0D =0D =0D =0D # 1 "./include/asm-generic/io.h" 1=0D # 19 "./include/asm-generic/io.h"=0D # 1 "./include/asm-generic/pci_iomap.h" 1=0D # 10 "./include/asm-generic/pci_iomap.h"=0D struct pci_dev;=0D =0D =0D extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);=0D extern void *pci_iomap_wc(struct pci_dev *dev, int bar, unsigned long max);= =0D extern void *pci_iomap_range(struct pci_dev *dev, int bar,=0D unsigned long offset,=0D unsigned long maxlen);=0D extern void *pci_iomap_wc_range(struct pci_dev *dev, int bar,=0D unsigned long offset,=0D unsigned long maxlen);=0D extern void pci_iounmap(struct pci_dev *dev, void *);=0D # 20 "./include/asm-generic/io.h" 2=0D # 459 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 _inb(unsigned long addr)= =0D {=0D u8 val;=0D =0D __asm__ __volatile__ ("fence io,i" : : : "memory");;=0D val =3D __raw_readb(((void *)(((kernel_map.page_offset - ((((((1UL) << (12= )) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_= enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 5= 7 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(si= zeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct pa= ge)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? ((= (sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct pa= ge)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((size= of(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __o= rder_base_2(sizeof(struct page)) )))))) - 0x01000000)) + addr);=0D __asm__ __volatile__ ("fence i,ior" : : : "memory");;=0D return val;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 _inw(unsigned long addr)= =0D {=0D u16 val;=0D =0D __asm__ __volatile__ ("fence io,i" : : : "memory");;=0D val =3D (( __u16)(__le16)((__le16 )__raw_readw(((void *)(((kernel_map.page= _offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_= enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) <= < (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 += (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) = =3D=3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((s= izeof(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __bu= iltin_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1= ) <=3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(st= ruct page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))) - 0x01= 000000)) + addr)));=0D __asm__ __volatile__ ("fence i,ior" : : : "memory");;=0D return val;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 _inl(unsigned long addr)= =0D {=0D u32 val;=0D =0D __asm__ __volatile__ ("fence io,i" : : : "memory");;=0D val =3D (( __u32)(__le32)((__le32 )__raw_readl(((void *)(((kernel_map.page= _offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_= enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) <= < (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 += (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) = =3D=3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((s= izeof(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __bu= iltin_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1= ) <=3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(st= ruct page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))) - 0x01= 000000)) + addr)));=0D __asm__ __volatile__ ("fence i,ior" : : : "memory");;=0D return val;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void _outb(u8 value, unsigne= d long addr)=0D {=0D __asm__ __volatile__ ("fence iow,o" : : : "memory");;=0D __raw_writeb(value, ((void *)(((kernel_map.page_offset - ((((((1UL) << (12= )) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_= enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 5= 7 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(si= zeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct pa= ge)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? ((= (sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct pa= ge)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((size= of(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __o= rder_base_2(sizeof(struct page)) )))))) - 0x01000000)) + addr);=0D __asm__ __volatile__ ("fence o,io" : : : "memory");;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void _outw(u16 value, unsign= ed long addr)=0D {=0D __asm__ __volatile__ ("fence iow,o" : : : "memory");;=0D __raw_writew((u16 )(( __le16)(__u16)(value)), ((void *)(((kernel_map.page_= offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_e= nabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) <<= (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + = (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D= =3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((size= of(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __built= in_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <= =3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struc= t page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))) - 0x01000= 000)) + addr);=0D __asm__ __volatile__ ("fence o,io" : : : "memory");;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void _outl(u32 value, unsign= ed long addr)=0D {=0D __asm__ __volatile__ ("fence iow,o" : : : "memory");;=0D __raw_writel((u32 )(( __le32)(__u32)(value)), ((void *)(((kernel_map.page_= offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_e= nabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) <<= (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + = (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D= =3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((size= of(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __built= in_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <= =3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struc= t page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))) - 0x01000= 000)) + addr);=0D __asm__ __volatile__ ("fence o,io" : : : "memory");;=0D }=0D =0D =0D =0D # 1 "./include/linux/logic_pio.h" 1=0D # 11 "./include/linux/logic_pio.h"=0D # 1 "./include/linux/fwnode.h" 1=0D # 17 "./include/linux/fwnode.h"=0D struct fwnode_operations;=0D struct device;=0D # 36 "./include/linux/fwnode.h"=0D struct fwnode_handle {=0D struct fwnode_handle *secondary;=0D const struct fwnode_operations *ops;=0D struct device *dev;=0D struct list_head suppliers;=0D struct list_head consumers;=0D u8 flags;=0D };=0D =0D struct fwnode_link {=0D struct fwnode_handle *supplier;=0D struct list_head s_hook;=0D struct fwnode_handle *consumer;=0D struct list_head c_hook;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct fwnode_endpoint {=0D unsigned int port;=0D unsigned int id;=0D const struct fwnode_handle *local_fwnode;=0D };=0D # 79 "./include/linux/fwnode.h"=0D struct fwnode_reference_args {=0D struct fwnode_handle *fwnode;=0D unsigned int nargs;=0D u64 args[8];=0D };=0D # 110 "./include/linux/fwnode.h"=0D struct fwnode_operations {=0D struct fwnode_handle *(*get)(struct fwnode_handle *fwnode);=0D void (*put)(struct fwnode_handle *fwnode);=0D bool (*device_is_available)(const struct fwnode_handle *fwnode);=0D const void *(*device_get_match_data)(const struct fwnode_handle *fwnode,=0D const struct device *dev);=0D bool (*property_present)(const struct fwnode_handle *fwnode,=0D const char *propname);=0D int (*property_read_int_array)(const struct fwnode_handle *fwnode,=0D const char *propname,=0D unsigned int elem_size, void *val,=0D size_t nval);=0D int=0D (*property_read_string_array)(const struct fwnode_handle *fwnode_handle,=0D const char *propname, const char **val,=0D size_t nval);=0D const char *(*get_name)(const struct fwnode_handle *fwnode);=0D const char *(*get_name_prefix)(const struct fwnode_handle *fwnode);=0D struct fwnode_handle *(*get_parent)(const struct fwnode_handle *fwnode);=0D struct fwnode_handle *=0D (*get_next_child_node)(const struct fwnode_handle *fwnode,=0D struct fwnode_handle *child);=0D struct fwnode_handle *=0D (*get_named_child_node)(const struct fwnode_handle *fwnode,=0D const char *name);=0D int (*get_reference_args)(const struct fwnode_handle *fwnode,=0D const char *prop, const char *nargs_prop,=0D unsigned int nargs, unsigned int index,=0D struct fwnode_reference_args *args);=0D struct fwnode_handle *=0D (*graph_get_next_endpoint)(const struct fwnode_handle *fwnode,=0D struct fwnode_handle *prev);=0D struct fwnode_handle *=0D (*graph_get_remote_endpoint)(const struct fwnode_handle *fwnode);=0D struct fwnode_handle *=0D (*graph_get_port_parent)(struct fwnode_handle *fwnode);=0D int (*graph_parse_endpoint)(const struct fwnode_handle *fwnode,=0D struct fwnode_endpoint *endpoint);=0D int (*add_links)(struct fwnode_handle *fwnode);=0D };=0D # 172 "./include/linux/fwnode.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fwnode_init(struct fwno= de_handle *fwnode,=0D const struct fwnode_operations *ops)=0D {=0D fwnode->ops =3D ops;=0D INIT_LIST_HEAD(&fwnode->consumers);=0D INIT_LIST_HEAD(&fwnode->suppliers);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fwnode_dev_initialized(= struct fwnode_handle *fwnode,=0D bool initialized)=0D {=0D if (IS_ERR_OR_NULL(fwnode))=0D return;=0D =0D if (initialized)=0D fwnode->flags |=3D ((((1UL))) << (2));=0D else=0D fwnode->flags &=3D ~((((1UL))) << (2));=0D }=0D =0D extern u32 fw_devlink_get_flags(void);=0D extern bool fw_devlink_is_strict(void);=0D int fwnode_link_add(struct fwnode_handle *con, struct fwnode_handle *sup);= =0D void fwnode_links_purge(struct fwnode_handle *fwnode);=0D void fw_devlink_purge_absent_suppliers(struct fwnode_handle *fwnode);=0D # 12 "./include/linux/logic_pio.h" 2=0D =0D enum {=0D LOGIC_PIO_INDIRECT,=0D LOGIC_PIO_CPU_MMIO,=0D };=0D =0D struct logic_pio_hwaddr {=0D struct list_head list;=0D struct fwnode_handle *fwnode;=0D resource_size_t hw_start;=0D resource_size_t io_start;=0D resource_size_t size;=0D unsigned long flags;=0D =0D void *hostdata;=0D const struct logic_pio_host_ops *ops;=0D };=0D =0D struct logic_pio_host_ops {=0D u32 (*in)(void *hostdata, unsigned long addr, size_t dwidth);=0D void (*out)(void *hostdata, unsigned long addr, u32 val,=0D size_t dwidth);=0D u32 (*ins)(void *hostdata, unsigned long addr, void *buffer,=0D size_t dwidth, unsigned int count);=0D void (*outs)(void *hostdata, unsigned long addr, const void *buffer,=0D size_t dwidth, unsigned int count);=0D };=0D # 116 "./include/linux/logic_pio.h"=0D struct logic_pio_hwaddr *find_io_range_by_fwnode(struct fwnode_handle *fwno= de);=0D unsigned long logic_pio_trans_hwaddr(struct fwnode_handle *fwnode,=0D resource_size_t hw_addr, resource_size_t size);=0D int logic_pio_register_range(struct logic_pio_hwaddr *newrange);=0D void logic_pio_unregister_range(struct logic_pio_hwaddr *range);=0D resource_size_t logic_pio_to_hwaddr(unsigned long pio);=0D unsigned long logic_pio_trans_cpuaddr(resource_size_t hw_addr);=0D # 527 "./include/asm-generic/io.h" 2=0D # 554 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 inb_p(unsigned long addr)= =0D {=0D return _inb(addr);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 inw_p(unsigned long addr= )=0D {=0D return _inw(addr);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 inl_p(unsigned long addr= )=0D {=0D return _inl(addr);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outb_p(u8 value, unsign= ed long addr)=0D {=0D _outb(value, addr);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outw_p(u16 value, unsig= ned long addr)=0D {=0D _outw(value, addr);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outl_p(u32 value, unsig= ned long addr)=0D {=0D _outl(value, addr);=0D }=0D # 658 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void insb_p(unsigned long ad= dr, void *buffer, unsigned int count)=0D {=0D __insb((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void insw_p(unsigned long ad= dr, void *buffer, unsigned int count)=0D {=0D __insw((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void insl_p(unsigned long ad= dr, void *buffer, unsigned int count)=0D {=0D __insl((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outsb_p(unsigned long a= ddr, const void *buffer,=0D unsigned int count)=0D {=0D __outsb((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outsw_p(unsigned long a= ddr, const void *buffer,=0D unsigned int count)=0D {=0D __outsw((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void outsl_p(unsigned long a= ddr, const void *buffer,=0D unsigned int count)=0D {=0D __outsl((void *)(long)addr, buffer, count);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 ioread8(const volatile vo= id *addr)=0D {=0D return ({ u8 __v; do {} while (0); __v =3D ({ u8 __r =3D __raw_readb(addr)= ; __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 ioread16(const volatile = void *addr)=0D {=0D return ({ u16 __v; do {} while (0); __v =3D ({ u16 __r =3D (( __u16)(__le1= 6)(( __le16)__raw_readw(addr))); __r; }); __asm__ __volatile__ ("fence i,r"= : : : "memory"); __v; });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ioread32(const volatile = void *addr)=0D {=0D return ({ u32 __v; do {} while (0); __v =3D ({ u32 __r =3D (( __u32)(__le3= 2)(( __le32)__raw_readl(addr))); __r; }); __asm__ __volatile__ ("fence i,r"= : : : "memory"); __v; });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ioread64(const volatile = void *addr)=0D {=0D return ({ u64 __v; do {} while (0); __v =3D ({ u64 __r =3D (( __u64)(__le6= 4)(( __le64)__raw_readq(addr))); __r; }); __asm__ __volatile__ ("fence i,r"= : : : "memory"); __v; });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite8(u8 value, vola= tile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writeb(= ((value)), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite16(u16 value, vo= latile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writew(= ( u16)(( __le16)(__u16)((value))), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite32(u32 value, vo= latile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writel(= ( u32)(( __le32)(__u32)((value))), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite64(u64 value, vo= latile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writeq(= ( u64)(( __le64)(__u64)((value))), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 ioread16be(const volatil= e void *addr)=0D {=0D return (__builtin_constant_p((__u16)(({ u16 __v; do {} while (0); __v =3D = ({ u16 __r =3D (( __u16)(__le16)(( __le16)__raw_readw(addr))); __r; }); __a= sm__ __volatile__ ("fence i,r" : : : "memory"); __v; }))) ? ((__u16)( (((__= u16)(({ u16 __v; do {} while (0); __v =3D ({ u16 __r =3D (( __u16)(__le16)(= ( __le16)__raw_readw(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : = : : "memory"); __v; })) & (__u16)0x00ffU) << 8) | (((__u16)(({ u16 __v; do = {} while (0); __v =3D ({ u16 __r =3D (( __u16)(__le16)(( __le16)__raw_readw= (addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; = })) & (__u16)0xff00U) >> 8))) : __fswab16(({ u16 __v; do {} while (0); __v = =3D ({ u16 __r =3D (( __u16)(__le16)(( __le16)__raw_readw(addr))); __r; });= __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ioread32be(const volatil= e void *addr)=0D {=0D return (__builtin_constant_p((__u32)(({ u32 __v; do {} while (0); __v =3D = ({ u32 __r =3D (( __u32)(__le32)(( __le32)__raw_readl(addr))); __r; }); __a= sm__ __volatile__ ("fence i,r" : : : "memory"); __v; }))) ? ((__u32)( (((__= u32)(({ u32 __v; do {} while (0); __v =3D ({ u32 __r =3D (( __u32)(__le32)(= ( __le32)__raw_readl(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : = : : "memory"); __v; })) & (__u32)0x000000ffUL) << 24) | (((__u32)(({ u32 __= v; do {} while (0); __v =3D ({ u32 __r =3D (( __u32)(__le32)(( __le32)__raw= _readl(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory");= __v; })) & (__u32)0x0000ff00UL) << 8) | (((__u32)(({ u32 __v; do {} while = (0); __v =3D ({ u32 __r =3D (( __u32)(__le32)(( __le32)__raw_readl(addr)));= __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })) & (__= u32)0x00ff0000UL) >> 8) | (((__u32)(({ u32 __v; do {} while (0); __v =3D ({= u32 __r =3D (( __u32)(__le32)(( __le32)__raw_readl(addr))); __r; }); __asm= __ __volatile__ ("fence i,r" : : : "memory"); __v; })) & (__u32)0xff000000U= L) >> 24))) : __fswab32(({ u32 __v; do {} while (0); __v =3D ({ u32 __r =3D= (( __u32)(__le32)(( __le32)__raw_readl(addr))); __r; }); __asm__ __volatil= e__ ("fence i,r" : : : "memory"); __v; })));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ioread64be(const volatil= e void *addr)=0D {=0D return (__builtin_constant_p((__u64)(({ u64 __v; do {} while (0); __v =3D = ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(addr))); __r; }); __a= sm__ __volatile__ ("fence i,r" : : : "memory"); __v; }))) ? ((__u64)( (((__= u64)(({ u64 __v; do {} while (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(= ( __le64)__raw_readq(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : = : : "memory"); __v; })) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(= ({ u64 __v; do {} while (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __l= e64)__raw_readq(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "= memory"); __v; })) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(({ u6= 4 __v; do {} while (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)_= _raw_readq(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memor= y"); __v; })) & (__u64)0x0000000000ff0000ULL) << 24) | (((__u64)(({ u64 __v= ; do {} while (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_= readq(addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); = __v; })) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(({ u64 __v; do {= } while (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(= addr))); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; }= )) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(({ u64 __v; do {} whil= e (0); __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(addr))= ); __r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })) & (= __u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(({ u64 __v; do {} while (0)= ; __v =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(addr))); __= r; }); __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })) & (__u64= )0x00ff000000000000ULL) >> 40) | (((__u64)(({ u64 __v; do {} while (0); __v= =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(addr))); __r; })= ; __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })) & (__u64)0xff= 00000000000000ULL) >> 56))) : __fswab64(({ u64 __v; do {} while (0); __v = =3D ({ u64 __r =3D (( __u64)(__le64)(( __le64)__raw_readq(addr))); __r; });= __asm__ __volatile__ ("fence i,r" : : : "memory"); __v; })));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite16be(u16 value, = void volatile *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writew(= ( u16)(( __le16)(__u16)(((__builtin_constant_p((__u16)(value)) ? ((__u16)( = (((__u16)(value) & (__u16)0x00ffU) << 8) | (((__u16)(value) & (__u16)0xff00= U) >> 8))) : __fswab16(value))))), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite32be(u32 value, = volatile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writel(= ( u32)(( __le32)(__u32)(((__builtin_constant_p((__u32)(value)) ? ((__u32)( = (((__u32)(value) & (__u32)0x000000ffUL) << 24) | (((__u32)(value) & (__u32)= 0x0000ff00UL) << 8) | (((__u32)(value) & (__u32)0x00ff0000UL) >> 8) | (((__= u32)(value) & (__u32)0xff000000UL) >> 24))) : __fswab32(value))))), ((addr)= ))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite64be(u64 value, = volatile void *addr)=0D {=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writeq(= ( u64)(( __le64)(__u64)(((__builtin_constant_p((__u64)(value)) ? ((__u64)( = (((__u64)(value) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(value) = & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)(value) & (__u64)0x000000= 0000ff0000ULL) << 24) | (((__u64)(value) & (__u64)0x00000000ff000000ULL) <<= 8) | (((__u64)(value) & (__u64)0x000000ff00000000ULL) >> 8) | (((__u64)(va= lue) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)(value) & (__u64)0x0= 0ff000000000000ULL) >> 40) | (((__u64)(value) & (__u64)0xff00000000000000UL= L) >> 56))) : __fswab64(value))))), ((addr)))); mmiowb_set_pending(); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioread8_rep(const volat= ile void *addr, void *buffer,=0D unsigned int count)=0D {=0D __readsb(addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioread16_rep(const vola= tile void *addr,=0D void *buffer, unsigned int count)=0D {=0D __readsw(addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioread32_rep(const vola= tile void *addr,=0D void *buffer, unsigned int count)=0D {=0D __readsl(addr, buffer, count);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioread64_rep(const vola= tile void *addr,=0D void *buffer, unsigned int count)=0D {=0D __readsq(addr, buffer, count);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite8_rep(volatile v= oid *addr,=0D const void *buffer,=0D unsigned int count)=0D {=0D __writesb(addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite16_rep(volatile = void *addr,=0D const void *buffer,=0D unsigned int count)=0D {=0D __writesw(addr, buffer, count);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite32_rep(volatile = void *addr,=0D const void *buffer,=0D unsigned int count)=0D {=0D __writesl(addr, buffer, count);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iowrite64_rep(volatile = void *addr,=0D const void *buffer,=0D unsigned int count)=0D {=0D __writesq(addr, buffer, count);=0D }=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/vmalloc.h" 1=0D # 13 "./include/linux/vmalloc.h"=0D # 1 "./arch/riscv/include/asm/vmalloc.h" 1=0D # 14 "./include/linux/vmalloc.h" 2=0D =0D struct vm_area_struct;=0D struct notifier_block;=0D # 48 "./include/linux/vmalloc.h"=0D struct vm_struct {=0D struct vm_struct *next;=0D void *addr;=0D unsigned long size;=0D unsigned long flags;=0D struct page **pages;=0D =0D =0D =0D unsigned int nr_pages;=0D phys_addr_t phys_addr;=0D const void *caller;=0D };=0D =0D struct vmap_area {=0D unsigned long va_start;=0D unsigned long va_end;=0D =0D struct rb_node rb_node;=0D struct list_head list;=0D =0D =0D =0D =0D =0D =0D =0D union {=0D unsigned long subtree_max_size;=0D struct vm_struct *vm;=0D };=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_vmap_p4d_supported= (pgprot_t prot)=0D {=0D return false;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_vmap_pud_supported= (pgprot_t prot)=0D {=0D return false;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_vmap_pmd_supported= (pgprot_t prot)=0D {=0D return false;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long arch_vmap_pte_= range_map_size(unsigned long addr, unsigned long end,=0D u64 pfn, unsigned int max_page_shift)=0D {=0D return ((1UL) << (12));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_vmap_pte_supported_= shift(unsigned long size)=0D {=0D return (12);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) pgprot_t arch_vmap_pgprot_ta= gged(pgprot_t prot)=0D {=0D return prot;=0D }=0D =0D =0D =0D =0D =0D extern void vm_unmap_ram(const void *mem, unsigned int count);=0D extern void *vm_map_ram(struct page **pages, unsigned int count, int node);= =0D extern void vm_unmap_aliases(void);=0D =0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) vmalloc_init(void);=0D extern unsigned long vmalloc_nr_pages(void);=0D =0D =0D =0D =0D =0D =0D =0D extern void *vmalloc(unsigned long size) __attribute__((__alloc_size__(1)))= __attribute__((__malloc__));=0D extern void *vzalloc(unsigned long size) __attribute__((__alloc_size__(1)))= __attribute__((__malloc__));=0D extern void *vmalloc_user(unsigned long size) __attribute__((__alloc_size__= (1))) __attribute__((__malloc__));=0D extern void *vmalloc_node(unsigned long size, int node) __attribute__((__al= loc_size__(1))) __attribute__((__malloc__));=0D extern void *vzalloc_node(unsigned long size, int node) __attribute__((__al= loc_size__(1))) __attribute__((__malloc__));=0D extern void *vmalloc_32(unsigned long size) __attribute__((__alloc_size__(1= ))) __attribute__((__malloc__));=0D extern void *vmalloc_32_user(unsigned long size) __attribute__((__alloc_siz= e__(1))) __attribute__((__malloc__));=0D extern void *__vmalloc(unsigned long size, gfp_t gfp_mask) __attribute__((_= _alloc_size__(1))) __attribute__((__malloc__));=0D extern void *__vmalloc_node_range(unsigned long size, unsigned long align,= =0D unsigned long start, unsigned long end, gfp_t gfp_mask,=0D pgprot_t prot, unsigned long vm_flags, int node,=0D const void *caller) __attribute__((__alloc_size__(1))) __attribute__((__= malloc__));=0D void *__vmalloc_node(unsigned long size, unsigned long align, gfp_t gfp_mas= k,=0D int node, const void *caller) __attribute__((__alloc_size__(1))) __attrib= ute__((__malloc__));=0D void *vmalloc_huge(unsigned long size, gfp_t gfp_mask) __attribute__((__all= oc_size__(1))) __attribute__((__malloc__));=0D =0D extern void *__vmalloc_array(size_t n, size_t size, gfp_t flags) __attribut= e__((__alloc_size__(1, 2))) __attribute__((__malloc__));=0D extern void *vmalloc_array(size_t n, size_t size) __attribute__((__alloc_si= ze__(1, 2))) __attribute__((__malloc__));=0D extern void *__vcalloc(size_t n, size_t size, gfp_t flags) __attribute__((_= _alloc_size__(1, 2))) __attribute__((__malloc__));=0D extern void *vcalloc(size_t n, size_t size) __attribute__((__alloc_size__(1= , 2))) __attribute__((__malloc__));=0D =0D extern void vfree(const void *addr);=0D extern void vfree_atomic(const void *addr);=0D =0D extern void *vmap(struct page **pages, unsigned int count,=0D unsigned long flags, pgprot_t prot);=0D void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot);=0D extern void vunmap(const void *addr);=0D =0D extern int remap_vmalloc_range_partial(struct vm_area_struct *vma,=0D unsigned long uaddr, void *kaddr,=0D unsigned long pgoff, unsigned long size);=0D =0D extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,=0D unsigned long pgoff);=0D # 192 "./include/linux/vmalloc.h"=0D void arch_sync_kernel_mappings(unsigned long start, unsigned long end);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t get_vm_area_size(cons= t struct vm_struct *area)=0D {=0D if (!(area->flags & 0x00000040))=0D =0D return area->size - ((1UL) << (12));=0D else=0D return area->size;=0D =0D }=0D =0D extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flag= s);=0D extern struct vm_struct *get_vm_area_caller(unsigned long size,=0D unsigned long flags, const void *caller);=0D extern struct vm_struct *__get_vm_area_caller(unsigned long size,=0D unsigned long flags,=0D unsigned long start, unsigned long end,=0D const void *caller);=0D void free_vm_area(struct vm_struct *area);=0D extern struct vm_struct *remove_vm_area(const void *addr);=0D extern struct vm_struct *find_vm_area(const void *addr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_vm_area_hugepages(co= nst void *addr)=0D {=0D # 231 "./include/linux/vmalloc.h"=0D return false;=0D =0D }=0D =0D =0D void vunmap_range(unsigned long addr, unsigned long end);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_vm_flush_reset_perm= s(void *addr)=0D {=0D struct vm_struct *vm =3D find_vm_area(addr);=0D =0D if (vm)=0D vm->flags |=3D 0x00000100;=0D }=0D # 252 "./include/linux/vmalloc.h"=0D extern long vread(char *buf, char *addr, unsigned long count);=0D =0D =0D =0D =0D extern struct list_head vmap_area_list;=0D extern __attribute__((__section__(".init.text"))) __attribute__((__cold__))= __attribute__((__no_sanitize__("cfi"))) void vm_area_add_early(struct vm_s= truct *vm);=0D extern __attribute__((__section__(".init.text"))) __attribute__((__cold__))= __attribute__((__no_sanitize__("cfi"))) void vm_area_register_early(struct= vm_struct *vm, size_t align);=0D =0D =0D =0D struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets,=0D const size_t *sizes, int nr_vms,=0D size_t align);=0D =0D void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms);=0D # 290 "./include/linux/vmalloc.h"=0D int register_vmap_purge_notifier(struct notifier_block *nb);=0D int unregister_vmap_purge_notifier(struct notifier_block *nb);=0D =0D =0D bool vmalloc_dump_obj(void *object);=0D # 912 "./include/asm-generic/io.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long virt_to_phys(v= olatile void *address)=0D {=0D return ({ unsigned long _x =3D (unsigned long)((unsigned long)address); ((= _x) >=3D kernel_map.page_offset && (!1 || (_x) < kernel_map.page_offset + (= ((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48= : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? ((unsigned long)(_x) - kernel= _map.va_pa_offset) : ({ unsigned long _y =3D _x; (0 && _y < kernel_map.virt= _addr + 0) ? ((unsigned long)(_y) - kernel_map.va_kernel_xip_pa_offset) : (= (unsigned long)(_y) - kernel_map.va_kernel_pa_offset - 0); }); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *phys_to_virt(unsigned = long address)=0D {=0D return ((void *)((void *)((unsigned long)((phys_addr_t)(address)) + kernel= _map.va_pa_offset)));=0D }=0D # 967 "./include/asm-generic/io.h"=0D void *ioremap_prot(phys_addr_t addr, size_t size, unsigned long prot);=0D void iounmap(volatile void *addr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ioremap(phys_addr_t ad= dr, size_t size)=0D {=0D =0D return ioremap_prot(addr, size, ((1 << 1) | (1 << 2) | (1 << 0) | (1 << 6)= | (1 << 7) | (1 << 5)));=0D }=0D # 994 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ioremap_uc(phys_addr_t= offset, size_t size)=0D {=0D return ((void *)0);=0D }=0D # 1011 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ioremap_np(phys_addr_t= offset, size_t size)=0D {=0D return ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ioport_map(unsigned lo= ng port, unsigned int nr)=0D {=0D port &=3D (0x01000000 - 1);=0D return (port > ((0x01000000 - 1) - 0)) ? ((void *)0) : ((void *)(((kernel_= map.page_offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgt= able_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((= 1UL))) << (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (1= 2) - 1 + (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct p= age)) =3D=3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constan= t_p((sizeof(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 = - __builtin_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page= )) - 1) <=3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((siz= eof(struct page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) )))))) = - 0x01000000)) + port;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioport_unmap(void *p)=0D {=0D }=0D # 1049 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *xlate_dev_mem_ptr(phys= _addr_t addr)=0D {=0D return ((void *)((void *)((unsigned long)((phys_addr_t)(addr)) + kernel_ma= p.va_pa_offset)));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unxlate_dev_mem_ptr(phy= s_addr_t phys, void *addr)=0D {=0D }=0D # 1086 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memset_io(volatile void= *addr, int value,=0D size_t size)=0D {=0D memset(((void *)(addr)), value, size);=0D }=0D # 1103 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_fromio(void *buf= fer,=0D const volatile void *addr,=0D size_t size)=0D {=0D memcpy(buffer, ((void *)(addr)), size);=0D }=0D # 1121 "./include/asm-generic/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_toio(volatile vo= id *addr, const void *buffer,=0D size_t size)=0D {=0D memcpy(((void *)(addr)), buffer, size);=0D }=0D =0D =0D =0D extern int devmem_is_allowed(unsigned long pfn);=0D # 137 "./arch/riscv/include/asm/io.h" 2=0D # 14 "./include/linux/io.h" 2=0D =0D =0D struct device;=0D struct resource;=0D =0D void __iowrite32_copy(void *to, const void *from, size_t count);= =0D void __ioread32_copy(void *to, const void *from, size_t count);=0D void __iowrite64_copy(void *to, const void *from, size_t count);=0D =0D =0D int ioremap_page_range(unsigned long addr, unsigned long end,=0D phys_addr_t phys_addr, pgprot_t prot);=0D # 38 "./include/linux/io.h"=0D void * devm_ioport_map(struct device *dev, unsigned long port,=0D unsigned int nr);=0D void devm_ioport_unmap(struct device *dev, void *addr);=0D # 56 "./include/linux/io.h"=0D void *devm_ioremap(struct device *dev, resource_size_t offset,=0D resource_size_t size);=0D void *devm_ioremap_uc(struct device *dev, resource_size_t offset,=0D resource_size_t size);=0D void *devm_ioremap_wc(struct device *dev, resource_size_t offset,=0D resource_size_t size);=0D void *devm_ioremap_np(struct device *dev, resource_size_t offset,=0D resource_size_t size);=0D void devm_iounmap(struct device *dev, void *addr);=0D int check_signature(const volatile void *io_addr,=0D const unsigned char *signature, int length);=0D void devm_ioremap_release(struct device *dev, void *res);=0D =0D void *devm_memremap(struct device *dev, resource_size_t offset,=0D size_t size, unsigned long flags);=0D void devm_memunmap(struct device *dev, void *addr);=0D # 86 "./include/linux/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *pci_remap_cfgspace(phy= s_addr_t offset,=0D size_t size)=0D {=0D return ioremap_np(offset, size) ?: ioremap(offset, size);=0D }=0D # 115 "./include/linux/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) arch_phys_wc_add(unsigned long base,=0D unsigned long size)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_phys_wc_del(int ha= ndle)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_phys_wc_index(int h= andle)=0D {=0D return -1;=0D }=0D =0D =0D =0D =0D int devm_arch_phys_wc_add(struct device *dev, unsigned long base, unsigned = long size);=0D =0D enum {=0D =0D MEMREMAP_WB =3D 1 << 0,=0D MEMREMAP_WT =3D 1 << 1,=0D MEMREMAP_WC =3D 1 << 2,=0D MEMREMAP_ENC =3D 1 << 3,=0D MEMREMAP_DEC =3D 1 << 4,=0D };=0D =0D void *memremap(resource_size_t offset, size_t size, unsigned long flags);=0D void memunmap(void *addr);=0D # 159 "./include/linux/io.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_io_reserve_memtype_= wc(resource_size_t base,=0D resource_size_t size)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_io_free_memtype_wc= (resource_size_t base,=0D resource_size_t size)=0D {=0D }=0D =0D =0D int devm_arch_io_reserve_memtype_wc(struct device *dev, resource_size_t sta= rt,=0D resource_size_t size);=0D # 21 "./include/linux/irq.h" 2=0D =0D =0D # 1 "./arch/riscv/include/asm/irq.h" 1=0D # 10 "./arch/riscv/include/asm/irq.h"=0D # 1 "./include/linux/interrupt.h" 1=0D # 11 "./include/linux/interrupt.h"=0D # 1 "./include/linux/hardirq.h" 1=0D # 12 "./include/linux/interrupt.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/irq.h" 1=0D # 21 "./include/linux/interrupt.h" 2=0D # 1 "./arch/riscv/include/asm/sections.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/asm-generic/sections.h" 1=0D # 35 "./include/asm-generic/sections.h"=0D extern char _text[], _stext[], _etext[];=0D extern char _data[], _sdata[], _edata[];=0D extern char __bss_start[], __bss_stop[];=0D extern char __init_begin[], __init_end[];=0D extern char _sinittext[], _einittext[];=0D extern char __start_ro_after_init[], __end_ro_after_init[];=0D extern char _end[];=0D extern char __per_cpu_load[], __per_cpu_start[], __per_cpu_end[];=0D extern char __kprobes_text_start[], __kprobes_text_end[];=0D extern char __entry_text_start[], __entry_text_end[];=0D extern char __start_rodata[], __end_rodata[];=0D extern char __irqentry_text_start[], __irqentry_text_end[];=0D extern char __softirqentry_text_start[], __softirqentry_text_end[];=0D extern char __start_once[], __end_once[];=0D =0D =0D extern char __ctors_start[], __ctors_end[];=0D =0D =0D extern char __start_opd[], __end_opd[];=0D =0D =0D extern char __noinstr_text_start[], __noinstr_text_end[];=0D =0D extern const void __nosave_begin, __nosave_end;=0D # 70 "./include/asm-generic/sections.h"=0D typedef struct {=0D unsigned long addr;=0D } func_desc_t;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool have_function_descripto= rs(void)=0D {=0D return 0;=0D }=0D # 91 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool memory_contains(void *b= egin, void *end, void *virt,=0D size_t size)=0D {=0D return virt >=3D begin && virt + size <=3D end;=0D }=0D # 108 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool memory_intersects(void = *begin, void *end, void *virt,=0D size_t size)=0D {=0D void *vend =3D virt + size;=0D =0D return (virt >=3D begin && virt < end) || (vend >=3D begin && vend < end);= =0D }=0D # 125 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool init_section_contains(v= oid *virt, size_t size)=0D {=0D return memory_contains(__init_begin, __init_end, virt, size);=0D }=0D # 139 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool init_section_intersects= (void *virt, size_t size)=0D {=0D return memory_intersects(__init_begin, __init_end, virt, size);=0D }=0D # 154 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_kernel_core_data(uns= igned long addr)=0D {=0D if (addr >=3D (unsigned long)_sdata && addr < (unsigned long)_edata)=0D return true;=0D =0D if (addr >=3D (unsigned long)__bss_start &&=0D addr < (unsigned long)__bss_stop)=0D return true;=0D =0D return false;=0D }=0D # 174 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_kernel_rodata(unsign= ed long addr)=0D {=0D return addr >=3D (unsigned long)__start_rodata &&=0D addr < (unsigned long)__end_rodata;=0D }=0D # 188 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_kernel_inittext(unsi= gned long addr)=0D {=0D return addr >=3D (unsigned long)_sinittext &&=0D addr < (unsigned long)_einittext;=0D }=0D # 203 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __is_kernel_text(unsign= ed long addr)=0D {=0D return addr >=3D (unsigned long)_stext &&=0D addr < (unsigned long)_etext;=0D }=0D # 219 "./include/asm-generic/sections.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __is_kernel(unsigned lo= ng addr)=0D {=0D return ((addr >=3D (unsigned long)_stext &&=0D addr < (unsigned long)_end) ||=0D (addr >=3D (unsigned long)__init_begin &&=0D addr < (unsigned long)__init_end));=0D }=0D # 9 "./arch/riscv/include/asm/sections.h" 2=0D =0D =0D extern char _start[];=0D extern char _start_kernel[];=0D extern char __init_data_begin[], __init_data_end[];=0D extern char __init_text_begin[], __init_text_end[];=0D extern char __alt_start[], __alt_end[];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_va_kernel_text(uintp= tr_t va)=0D {=0D uintptr_t start =3D (uintptr_t)_start;=0D uintptr_t end =3D (uintptr_t)__init_data_begin;=0D =0D return va >=3D start && va < end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_va_kernel_lm_alias_t= ext(uintptr_t va)=0D {=0D uintptr_t start =3D (uintptr_t)((void *)((void *)((unsigned long)((phys_ad= dr_t)(({ unsigned long _x =3D ({ unsigned long __ptr; __ptr =3D (unsigned l= ong) ((unsigned long)(_start)); (typeof((unsigned long)(_start))) (__ptr + = (0)); }); ((_x) >=3D kernel_map.page_offset && (!1 || (_x) < kernel_map.pag= e_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_= enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? ((unsigned long)(= _x) - kernel_map.va_pa_offset) : ({ unsigned long _y =3D _x; (0 && _y < ker= nel_map.virt_addr + 0) ? ((unsigned long)(_y) - kernel_map.va_kernel_xip_pa= _offset) : ((unsigned long)(_y) - kernel_map.va_kernel_pa_offset - 0); }); = }))) + kernel_map.va_pa_offset)));=0D uintptr_t end =3D (uintptr_t)((void *)((void *)((unsigned long)((phys_addr= _t)(({ unsigned long _x =3D ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((unsigned long)(__init_data_begin)); (typeof((unsigned long)(__init_dat= a_begin))) (__ptr + (0)); }); ((_x) >=3D kernel_map.page_offset && (!1 || (= _x) < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((= 1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2)))= ? ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned long _y = =3D _x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - kerne= l_map.va_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_kerne= l_pa_offset - 0); }); }))) + kernel_map.va_pa_offset)));=0D =0D return va >=3D start && va < end;=0D }=0D # 22 "./include/linux/interrupt.h" 2=0D # 95 "./include/linux/interrupt.h"=0D enum {=0D IRQC_IS_HARDIRQ =3D 0,=0D IRQC_IS_NESTED,=0D };=0D =0D typedef irqreturn_t (*irq_handler_t)(int, void *);=0D # 118 "./include/linux/interrupt.h"=0D struct irqaction {=0D irq_handler_t handler;=0D void *dev_id;=0D void *percpu_dev_id;=0D struct irqaction *next;=0D irq_handler_t thread_fn;=0D struct task_struct *thread;=0D struct irqaction *secondary;=0D unsigned int irq;=0D unsigned int flags;=0D unsigned long thread_flags;=0D unsigned long thread_mask;=0D const char *name;=0D struct proc_dir_entry *dir;=0D } __attribute__((__aligned__(1 << (6))));=0D =0D extern irqreturn_t no_action(int cpl, void *dev_id);=0D # 146 "./include/linux/interrupt.h"=0D extern int __attribute__((__warn_unused_result__))=0D request_threaded_irq(unsigned int irq, irq_handler_t handler,=0D irq_handler_t thread_fn,=0D unsigned long flags, const char *name, void *dev);=0D # 164 "./include/linux/interrupt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__))=0D request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,=0D const char *name, void *dev)=0D {=0D return request_threaded_irq(irq, handler, ((void *)0), flags, name, dev);= =0D }=0D =0D extern int __attribute__((__warn_unused_result__))=0D request_any_context_irq(unsigned int irq, irq_handler_t handler,=0D unsigned long flags, const char *name, void *dev_id);=0D =0D extern int __attribute__((__warn_unused_result__))=0D __request_percpu_irq(unsigned int irq, irq_handler_t handler,=0D unsigned long flags, const char *devname,=0D void *percpu_dev_id);=0D =0D extern int __attribute__((__warn_unused_result__))=0D request_nmi(unsigned int irq, irq_handler_t handler, unsigned long flags,=0D const char *name, void *dev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__))=0D request_percpu_irq(unsigned int irq, irq_handler_t handler,=0D const char *devname, void *percpu_dev_id)=0D {=0D return __request_percpu_irq(irq, handler, 0,=0D devname, percpu_dev_id);=0D }=0D =0D extern int __attribute__((__warn_unused_result__))=0D request_percpu_nmi(unsigned int irq, irq_handler_t handler,=0D const char *devname, void *dev);=0D =0D extern const void *free_irq(unsigned int, void *);=0D extern void free_percpu_irq(unsigned int, void *);=0D =0D extern const void *free_nmi(unsigned int irq, void *dev_id);=0D extern void free_percpu_nmi(unsigned int irq, void *percpu_dev_id);=0D =0D struct device;=0D =0D extern int __attribute__((__warn_unused_result__))=0D devm_request_threaded_irq(struct device *dev, unsigned int irq,=0D irq_handler_t handler, irq_handler_t thread_fn,=0D unsigned long irqflags, const char *devname,=0D void *dev_id);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__))=0D devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handle= r,=0D unsigned long irqflags, const char *devname, void *dev_id)=0D {=0D return devm_request_threaded_irq(dev, irq, handler, ((void *)0), irqflags,= =0D devname, dev_id);=0D }=0D =0D extern int __attribute__((__warn_unused_result__))=0D devm_request_any_context_irq(struct device *dev, unsigned int irq,=0D irq_handler_t handler, unsigned long irqflags,=0D const char *devname, void *dev_id);=0D =0D extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_i= d);=0D # 243 "./include/linux/interrupt.h"=0D bool irq_has_action(unsigned int irq);=0D extern void disable_irq_nosync(unsigned int irq);=0D extern bool disable_hardirq(unsigned int irq);=0D extern void disable_irq(unsigned int irq);=0D extern void disable_percpu_irq(unsigned int irq);=0D extern void enable_irq(unsigned int irq);=0D extern void enable_percpu_irq(unsigned int irq, unsigned int type);=0D extern bool irq_percpu_is_enabled(unsigned int irq);=0D extern void irq_wake_thread(unsigned int irq, void *dev_id);=0D =0D extern void disable_nmi_nosync(unsigned int irq);=0D extern void disable_percpu_nmi(unsigned int irq);=0D extern void enable_nmi(unsigned int irq);=0D extern void enable_percpu_nmi(unsigned int irq, unsigned int type);=0D extern int prepare_percpu_nmi(unsigned int irq);=0D extern void teardown_percpu_nmi(unsigned int irq);=0D =0D extern int irq_inject_interrupt(unsigned int irq);=0D =0D =0D extern void suspend_device_irqs(void);=0D extern void resume_device_irqs(void);=0D extern void rearm_wake_irq(unsigned int irq);=0D # 279 "./include/linux/interrupt.h"=0D struct irq_affinity_notify {=0D unsigned int irq;=0D struct kref kref;=0D struct work_struct work;=0D void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask);=0D void (*release)(struct kref *ref);=0D };=0D # 303 "./include/linux/interrupt.h"=0D struct irq_affinity {=0D unsigned int pre_vectors;=0D unsigned int post_vectors;=0D unsigned int nr_sets;=0D unsigned int set_size[4];=0D void (*calc_sets)(struct irq_affinity *, unsigned int nvecs);=0D void *priv;=0D };=0D =0D =0D =0D =0D =0D =0D struct irq_affinity_desc {=0D struct cpumask mask;=0D unsigned int is_managed : 1;=0D };=0D =0D =0D =0D extern cpumask_var_t irq_default_affinity;=0D =0D extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask= );=0D extern int irq_force_affinity(unsigned int irq, const struct cpumask *cpuma= sk);=0D =0D extern int irq_can_set_affinity(unsigned int irq);=0D extern int irq_select_affinity(unsigned int irq);=0D =0D extern int __irq_apply_affinity_hint(unsigned int irq, const struct cpumask= *m,=0D bool setaffinity);=0D # 342 "./include/linux/interrupt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D irq_update_affinity_hint(unsigned int irq, const struct cpumask *m)=0D {=0D return __irq_apply_affinity_hint(irq, m, false);=0D }=0D # 357 "./include/linux/interrupt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D irq_set_affinity_and_hint(unsigned int irq, const struct cpumask *m)=0D {=0D return __irq_apply_affinity_hint(irq, m, true);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_set_affinity_hint(un= signed int irq, const struct cpumask *m)=0D {=0D return irq_set_affinity_and_hint(irq, m);=0D }=0D =0D extern int irq_update_affinity_desc(unsigned int irq,=0D struct irq_affinity_desc *affinity);=0D =0D extern int=0D irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *not= ify);=0D =0D struct irq_affinity_desc *=0D irq_create_affinity_masks(unsigned int nvec, struct irq_affinity *affd);=0D =0D unsigned int irq_calc_affinity_vectors(unsigned int minvec, unsigned int ma= xvec,=0D const struct irq_affinity *affd);=0D # 459 "./include/linux/interrupt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void disable_irq_nosync_lock= dep(unsigned int irq)=0D {=0D disable_irq_nosync(irq);=0D =0D do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_irq_disable(= ); if (!was_disabled) trace_hardirqs_off(); } while (0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void disable_irq_nosync_lock= dep_irqsave(unsigned int irq, unsigned long *flags)=0D {=0D disable_irq_nosync(irq);=0D =0D do { do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dum= my =3D=3D &__dummy2); 1; }); *flags =3D arch_local_irq_save(); } while (0);= if (!({ ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy= =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(*flags); })) trace_hard= irqs_off(); } while (0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void disable_irq_lockdep(uns= igned int irq)=0D {=0D disable_irq(irq);=0D =0D do { bool was_disabled =3D (arch_irqs_disabled()); arch_local_irq_disable(= ); if (!was_disabled) trace_hardirqs_off(); } while (0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void enable_irq_lockdep(unsi= gned int irq)=0D {=0D =0D do { trace_hardirqs_on(); arch_local_irq_enable(); } while (0);=0D =0D enable_irq(irq);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void enable_irq_lockdep_irqr= estore(unsigned int irq, unsigned long *flags)=0D {=0D =0D do { if (!({ ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(*flags); })) trace= _hardirqs_on(); do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (vo= id)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_res= tore(*flags); } while (0); } while (0);=0D =0D enable_irq(irq);=0D }=0D =0D =0D extern int irq_set_irq_wake(unsigned int irq, unsigned int on);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int enable_irq_wake(unsigned= int irq)=0D {=0D return irq_set_irq_wake(irq, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int disable_irq_wake(unsigne= d int irq)=0D {=0D return irq_set_irq_wake(irq, 0);=0D }=0D =0D =0D =0D =0D enum irqchip_irq_state {=0D IRQCHIP_STATE_PENDING,=0D IRQCHIP_STATE_ACTIVE,=0D IRQCHIP_STATE_MASKED,=0D IRQCHIP_STATE_LINE_LEVEL,=0D };=0D =0D extern int irq_get_irqchip_state(unsigned int irq, enum irqchip_irq_state w= hich,=0D bool *state);=0D extern int irq_set_irqchip_state(unsigned int irq, enum irqchip_irq_state w= hich,=0D bool state);=0D =0D =0D =0D =0D =0D extern struct static_key_false force_irqthreads_key;=0D # 566 "./include/linux/interrupt.h"=0D enum=0D {=0D HI_SOFTIRQ=3D0,=0D TIMER_SOFTIRQ,=0D NET_TX_SOFTIRQ,=0D NET_RX_SOFTIRQ,=0D BLOCK_SOFTIRQ,=0D IRQ_POLL_SOFTIRQ,=0D TASKLET_SOFTIRQ,=0D SCHED_SOFTIRQ,=0D HRTIMER_SOFTIRQ,=0D RCU_SOFTIRQ,=0D =0D NR_SOFTIRQS=0D };=0D # 596 "./include/linux/interrupt.h"=0D extern const char * const softirq_to_name[NR_SOFTIRQS];=0D =0D =0D =0D =0D =0D struct softirq_action=0D {=0D void (*action)(struct softirq_action *);=0D };=0D =0D void do_softirq(void);=0D void __do_softirq(void);=0D =0D extern void open_softirq(int nr, void (*action)(struct softirq_action *));= =0D extern void softirq_init(void);=0D extern void __raise_softirq_irqoff(unsigned int nr);=0D =0D extern void raise_softirq_irqoff(unsigned int nr);=0D extern void raise_softirq(unsigned int nr);=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct task_= struct *) ksoftirqd;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *this_cpu= _ksoftirqd(void)=0D {=0D return ({ typeof(ksoftirqd) pscr_ret__; do { const void *__vpp_verify =3D = (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); s= witch(sizeof(ksoftirqd)) { case 1: pscr_ret__ =3D ({ typeof(ksoftirqd) __re= t; if ((sizeof(ksoftirqd) =3D=3D sizeof(char) || sizeof(ksoftirqd) =3D=3D s= izeof(short) || sizeof(ksoftirqd) =3D=3D sizeof(int) || sizeof(ksoftirqd) = =3D=3D sizeof(long))) __ret =3D ({ typeof(ksoftirqd) ___ret; do { __preempt= _count_add(1); __asm__ __volatile__("": : :"memory"); } while (0); ___ret = =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 222(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(= ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned = long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksofti= rqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__p= er_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(char) || sizeof(*({ do { const void *__vpp_verify =3D (typeof= ((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ks= oftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + ((= (__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })= ) =3D=3D sizeof(short) || sizeof(*({ do { const void *__vpp_verify =3D (typ= eof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&= (ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr += (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); });= })) =3D=3D sizeof(int) || sizeof(*({ do { const void *__vpp_verify =3D (ty= peof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(= &(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr = + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); })= ; })) =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D = (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); (= { unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) = *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__p= tr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))));= }); })) =3D=3D sizeof(long long))) __compiletime_assert_222(); } while (0)= ; (*(const volatile typeof( _Generic((*({ do { const void *__vpp_verify =3D= (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd)))= *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__= ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))))= ; }); })), char: (char)0, unsigned char: (unsigned char)0, signed char: (si= gned char)0, unsigned short: (unsigned short)0, signed short: (signed short= )0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long= : (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsig= ned long long)0, signed long long: (signed long long)0, default: (*({ do { = const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftir= qd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_info= *)get_current())->cpu)])))); }); })))) *)&(*({ do { const void *__vpp_veri= fy =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while= (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksofti= rqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))= )) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu= )])))); }); }))); }); do { __asm__ __volatile__("": : :"memory"); __preempt= _count_sub(1); } while (0); ___ret; }); else __ret =3D ({ typeof(ksoftirqd)= ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___f= lags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch= _local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_ve= rify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } whi= le (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksof= tirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(___flags) __dum= my2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local= _irq_restore(___flags); } while (0); ___ret; }); __ret; }); break; case 2: = pscr_ret__ =3D ({ typeof(ksoftirqd) __ret; if ((sizeof(ksoftirqd) =3D=3D si= zeof(char) || sizeof(ksoftirqd) =3D=3D sizeof(short) || sizeof(ksoftirqd) = =3D=3D sizeof(int) || sizeof(ksoftirqd) =3D=3D sizeof(long))) __ret =3D ({ = typeof(ksoftirqd) ___ret; do { __preempt_count_add(1); __asm__ __volatile__= ("": : :"memory"); } while (0); ___ret =3D ({ do { __attribute__((__noretur= n__)) extern void __compiletime_assert_223(void) ; if (!((sizeof(*({ do { c= onst void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirq= d))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_info = *)get_current())->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do {= const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (voi= d)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lo= ng) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksofti= rqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ d= o { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (= void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned= long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(kso= ftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_= info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int) || sizeof(*({ = do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ks= oftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long)) || sizeof(*= ({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0= ); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsi= gned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&= (ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thr= ead_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long long))) __= compiletime_assert_223(); } while (0); (*(const volatile typeof( _Generic((= *({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(= &(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct th= read_info *)get_current())->cpu)])))); }); })), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: (*({ do { const void *__vpp_verify =3D (typeof((= &(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksof= tirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((_= _per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })))= ) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((v= oid *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((t= ypeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }))); }); do { __asm__ _= _volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); ___ret; = }); else __ret =3D ({ typeof(ksoftirqd) ___ret; unsigned long ___flags; do = { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); ___flags =3D arch_local_irq_save(); } while (0); ___= ret =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __p= tr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof= ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }); }); do { ({ unsig= ned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy =3D=3D &__dumm= y2); 1; }); do { } while (0); arch_local_irq_restore(___flags); } while (0)= ; ___ret; }); __ret; }); break; case 4: pscr_ret__ =3D ({ typeof(ksoftirqd)= __ret; if ((sizeof(ksoftirqd) =3D=3D sizeof(char) || sizeof(ksoftirqd) =3D= =3D sizeof(short) || sizeof(ksoftirqd) =3D=3D sizeof(int) || sizeof(ksoftir= qd) =3D=3D sizeof(long))) __ret =3D ({ typeof(ksoftirqd) ___ret; do { __pre= empt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0); ___r= et =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_224(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (typeof(= (&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsign= ed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(kso= ftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }))= =3D=3D sizeof(char) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(k= softirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= )) =3D=3D sizeof(short) || sizeof(*({ do { const void *__vpp_verify =3D (ty= peof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(= &(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr = + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); })= ; })) =3D=3D sizeof(int) || sizeof(*({ do { const void *__vpp_verify =3D (t= ypeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ = unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)= (&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr= + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }= ); })) =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D= (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd)))= *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__= ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))))= ; }); })) =3D=3D sizeof(long long))) __compiletime_assert_224(); } while (0= ); (*(const volatile typeof( _Generic((*({ do { const void *__vpp_verify = =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0= ); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd= ))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); })), char: (char)0, unsigned char: (unsigned char)0, signed char: = (signed char)0, unsigned short: (unsigned short)0, signed short: (signed sh= ort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned l= ong: (unsigned long)0, signed long: (signed long)0, unsigned long long: (un= signed long long)0, signed long long: (signed long long)0, default: (*({ do= { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksof= tirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); })))) *)&(*({ do { const void *__vpp_v= erify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } wh= ile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(kso= ftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirq= d)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->= cpu)])))); }); }))); }); do { __asm__ __volatile__("": : :"memory"); __pree= mpt_count_sub(1); } while (0); ___ret; }); else __ret =3D ({ typeof(ksoftir= qd) ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(_= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D a= rch_local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp= _verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(k= softirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksofti= rqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())= ->cpu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(___flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_lo= cal_irq_restore(___flags); } while (0); ___ret; }); __ret; }); break; case = 8: pscr_ret__ =3D ({ typeof(ksoftirqd) __ret; if ((sizeof(ksoftirqd) =3D=3D= sizeof(char) || sizeof(ksoftirqd) =3D=3D sizeof(short) || sizeof(ksoftirqd= ) =3D=3D sizeof(int) || sizeof(ksoftirqd) =3D=3D sizeof(long))) __ret =3D (= { typeof(ksoftirqd) ___ret; do { __preempt_count_add(1); __asm__ __volatile= __("": : :"memory"); } while (0); ___ret =3D ({ do { __attribute__((__noret= urn__)) extern void __compiletime_assert_225(void) ; if (!((sizeof(*({ do {= const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (voi= d)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lo= ng) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksofti= rqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do= { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(ksof= tirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({= do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(k= softirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct threa= d_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int) || sizeof(*(= { do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsig= ned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*(&(= ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long)) || sizeof= (*({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(*= (&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct t= hread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long long))) = __compiletime_assert_225(); } while (0); (*(const volatile typeof( _Generic= ((*({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))((void = *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (u= nsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((typeof(= *(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((struct = thread_info *)get_current())->cpu)])))); }); })), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: (*({ do { const void *__vpp_verify =3D (typeof= ((&(ksoftirqd)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ks= oftirqd))); (typeof((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + ((= (__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })= ))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof((t= ypeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }))); }); do { __asm__ _= _volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); ___ret; = }); else __ret =3D ({ typeof(ksoftirqd) ___ret; unsigned long ___flags; do = { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); ___flags =3D arch_local_irq_save(); } while (0); ___= ret =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(ksoftirqd)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __p= tr =3D (unsigned long) ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd))); (typeof= ((typeof(*(&(ksoftirqd))) *)(&(ksoftirqd)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }); }); do { ({ unsig= ned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy =3D=3D &__dumm= y2); 1; }); do { } while (0); arch_local_irq_restore(___flags); } while (0)= ; ___ret; }); __ret; }); break; default: __bad_size_call_parameter(); break= ; } pscr_ret__; });=0D }=0D # 647 "./include/linux/interrupt.h"=0D struct tasklet_struct=0D {=0D struct tasklet_struct *next;=0D unsigned long state;=0D atomic_t count;=0D bool use_callback;=0D union {=0D void (*func)(unsigned long data);=0D void (*callback)(struct tasklet_struct *t);=0D };=0D unsigned long data;=0D };=0D # 689 "./include/linux/interrupt.h"=0D enum=0D {=0D TASKLET_STATE_SCHED,=0D TASKLET_STATE_RUN=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tasklet_trylock(struct t= asklet_struct *t)=0D {=0D return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);=0D }=0D =0D void tasklet_unlock(struct tasklet_struct *t);=0D void tasklet_unlock_wait(struct tasklet_struct *t);=0D void tasklet_unlock_spin_wait(struct tasklet_struct *t);=0D # 712 "./include/linux/interrupt.h"=0D extern void __tasklet_schedule(struct tasklet_struct *t);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_schedule(struct= tasklet_struct *t)=0D {=0D if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))=0D __tasklet_schedule(t);=0D }=0D =0D extern void __tasklet_hi_schedule(struct tasklet_struct *t);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_hi_schedule(str= uct tasklet_struct *t)=0D {=0D if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))=0D __tasklet_hi_schedule(t);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_disable_nosync(= struct tasklet_struct *t)=0D {=0D atomic_inc(&t->count);=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_disable_in_atom= ic(struct tasklet_struct *t)=0D {=0D tasklet_disable_nosync(t);=0D tasklet_unlock_spin_wait(t);=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_disable(struct = tasklet_struct *t)=0D {=0D tasklet_disable_nosync(t);=0D tasklet_unlock_wait(t);=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tasklet_enable(struct t= asklet_struct *t)=0D {=0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D atomic_dec(&t->count);=0D }=0D =0D extern void tasklet_kill(struct tasklet_struct *t);=0D extern void tasklet_init(struct tasklet_struct *t,=0D void (*func)(unsigned long), unsigned long data);=0D extern void tasklet_setup(struct tasklet_struct *t,=0D void (*callback)(struct tasklet_struct *));=0D # 793 "./include/linux/interrupt.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long probe_irq_on(v= oid)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int probe_irq_off(unsigned l= ong val)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int probe_irq_mask(= unsigned long val)=0D {=0D return 0;=0D }=0D # 813 "./include/linux/interrupt.h"=0D extern void init_irq_proc(void);=0D # 826 "./include/linux/interrupt.h"=0D struct seq_file;=0D int show_interrupts(struct seq_file *p, void *v);=0D int arch_show_interrupts(struct seq_file *p, int prec);=0D =0D extern int early_irq_init(void);=0D extern int arch_probe_nr_irqs(void);=0D extern int arch_early_irq_init(void);=0D # 11 "./arch/riscv/include/asm/irq.h" 2=0D =0D =0D # 1 "./include/asm-generic/irq.h" 1=0D # 14 "./include/asm-generic/irq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_canonicalize(int irq= )=0D {=0D return irq;=0D }=0D # 14 "./arch/riscv/include/asm/irq.h" 2=0D =0D extern void __attribute__((__section__(".init.text"))) __attribute__((__col= d__)) __attribute__((__no_sanitize__("cfi"))) init_IRQ(void);=0D # 24 "./include/linux/irq.h" 2=0D =0D # 1 "./arch/riscv/include/generated/asm/irq_regs.h" 1=0D # 1 "./include/asm-generic/irq_regs.h" 1=0D # 17 "./include/asm-generic/irq_regs.h"=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct pt_re= gs *) __irq_regs;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pt_regs *get_irq_regs= (void)=0D {=0D return ({ __this_cpu_preempt_check("read"); ({ typeof(__irq_regs) pscr_ret= __; do { const void *__vpp_verify =3D (typeof((&(__irq_regs)) + 0))((void *= )0); (void)__vpp_verify; } while (0); switch(sizeof(__irq_regs)) { case 1: = pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(__irq_re= gs)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __= ptr; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs))) *)(&(__irq_regs))= ); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs)))) (__ptr + (((__per_= cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }); }); b= reak; case 2: pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (type= of((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs))) *)(= &(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs)))) (__p= tr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))));= }); }); }); break; case 4: pscr_ret__ =3D ({ *({ do { const void *__vpp_ve= rify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } wh= ile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__i= rq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq= _regs)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }); }); break; case 8: pscr_ret__ =3D ({ *({ do { const = void *__vpp_verify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vp= p_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((= typeof(*(&(__irq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs= ))) *)(&(__irq_regs)))) (__ptr + (((__per_cpu_offset[(((struct thread_info = *)get_current())->cpu)])))); }); }); }); break; default: __bad_size_call_pa= rameter(); break; } pscr_ret__; }); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pt_regs *set_irq_regs= (struct pt_regs *new_regs)=0D {=0D struct pt_regs *old_regs;=0D =0D old_regs =3D ({ __this_cpu_preempt_check("read"); ({ typeof(__irq_regs) ps= cr_ret__; do { const void *__vpp_verify =3D (typeof((&(__irq_regs)) + 0))((= void *)0); (void)__vpp_verify; } while (0); switch(sizeof(__irq_regs)) { ca= se 1: pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(__= irq_regs)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned l= ong __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs))) *)(&(__irq_= regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs)))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); });= }); break; case 2: pscr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D= (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs)= )) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs)))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); }); }); break; case 4: pscr_ret__ =3D ({ *({ do { const void *__= vpp_verify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify= ; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*= (&(__irq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&= (__irq_regs)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); }); }); break; case 8: pscr_ret__ =3D ({ *({ do { = const void *__vpp_verify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (voi= d)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lo= ng) ((typeof(*(&(__irq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__ir= q_regs))) *)(&(__irq_regs)))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); }); }); break; default: __bad_size_c= all_parameter(); break; } pscr_ret__; }); });=0D ({ __this_cpu_preempt_check("write"); do { do { const void *__vpp_verify = =3D (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } while (= 0); switch(sizeof(__irq_regs)) { case 1: do { *({ do { const void *__vpp_ve= rify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } wh= ile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__i= rq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq= _regs)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) =3D new_regs; } while (0);break; case 2: do { *({ do = { const void *__vpp_verify =3D (typeof((&(__irq_regs)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(__irq_regs))) *)(&(__irq_regs))); (typeof((typeof(*(&(__= irq_regs))) *)(&(__irq_regs)))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); }) =3D new_regs; } while (0);break= ; case 4: do { *({ do { const void *__vpp_verify =3D (typeof((&(__irq_regs)= ) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr= ; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs))) *)(&(__irq_regs))); = (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs)))) (__ptr + (((__per_cpu= _offset[(((struct thread_info *)get_current())->cpu)])))); }); }) =3D new_r= egs; } while (0);break; case 8: do { *({ do { const void *__vpp_verify =3D = (typeof((&(__irq_regs)) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(__irq_regs))= ) *)(&(__irq_regs))); (typeof((typeof(*(&(__irq_regs))) *)(&(__irq_regs))))= (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]= )))); }); }) =3D new_regs; } while (0);break; default: __bad_size_call_para= meter();break; } } while (0); });=0D return old_regs;=0D }=0D # 2 "./arch/riscv/include/generated/asm/irq_regs.h" 2=0D # 26 "./include/linux/irq.h" 2=0D =0D struct seq_file;=0D struct module;=0D struct msi_msg;=0D struct irq_affinity_desc;=0D enum irqchip_irq_state;=0D # 77 "./include/linux/irq.h"=0D enum {=0D IRQ_TYPE_NONE =3D 0x00000000,=0D IRQ_TYPE_EDGE_RISING =3D 0x00000001,=0D IRQ_TYPE_EDGE_FALLING =3D 0x00000002,=0D IRQ_TYPE_EDGE_BOTH =3D (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING),=0D IRQ_TYPE_LEVEL_HIGH =3D 0x00000004,=0D IRQ_TYPE_LEVEL_LOW =3D 0x00000008,=0D IRQ_TYPE_LEVEL_MASK =3D (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH),=0D IRQ_TYPE_SENSE_MASK =3D 0x0000000f,=0D IRQ_TYPE_DEFAULT =3D IRQ_TYPE_SENSE_MASK,=0D =0D IRQ_TYPE_PROBE =3D 0x00000010,=0D =0D IRQ_LEVEL =3D (1 << 8),=0D IRQ_PER_CPU =3D (1 << 9),=0D IRQ_NOPROBE =3D (1 << 10),=0D IRQ_NOREQUEST =3D (1 << 11),=0D IRQ_NOAUTOEN =3D (1 << 12),=0D IRQ_NO_BALANCING =3D (1 << 13),=0D IRQ_MOVE_PCNTXT =3D (1 << 14),=0D IRQ_NESTED_THREAD =3D (1 << 15),=0D IRQ_NOTHREAD =3D (1 << 16),=0D IRQ_PER_CPU_DEVID =3D (1 << 17),=0D IRQ_IS_POLLED =3D (1 << 18),=0D IRQ_DISABLE_UNLAZY =3D (1 << 19),=0D IRQ_HIDDEN =3D (1 << 20),=0D IRQ_NO_DEBUG =3D (1 << 21),=0D };=0D # 123 "./include/linux/irq.h"=0D enum {=0D IRQ_SET_MASK_OK =3D 0,=0D IRQ_SET_MASK_OK_NOCOPY,=0D IRQ_SET_MASK_OK_DONE,=0D };=0D =0D struct msi_desc;=0D struct irq_domain;=0D # 147 "./include/linux/irq.h"=0D struct irq_common_data {=0D unsigned int state_use_accessors;=0D =0D =0D =0D void *handler_data;=0D struct msi_desc *msi_desc;=0D cpumask_var_t affinity;=0D =0D =0D =0D =0D =0D =0D };=0D # 177 "./include/linux/irq.h"=0D struct irq_data {=0D u32 mask;=0D unsigned int irq;=0D unsigned long hwirq;=0D struct irq_common_data *common;=0D struct irq_chip *chip;=0D struct irq_domain *domain;=0D =0D struct irq_data *parent_data;=0D =0D void *chip_data;=0D };=0D # 225 "./include/linux/irq.h"=0D enum {=0D IRQD_TRIGGER_MASK =3D 0xf,=0D IRQD_SETAFFINITY_PENDING =3D (1 << 8),=0D IRQD_ACTIVATED =3D (1 << 9),=0D IRQD_NO_BALANCING =3D (1 << 10),=0D IRQD_PER_CPU =3D (1 << 11),=0D IRQD_AFFINITY_SET =3D (1 << 12),=0D IRQD_LEVEL =3D (1 << 13),=0D IRQD_WAKEUP_STATE =3D (1 << 14),=0D IRQD_MOVE_PCNTXT =3D (1 << 15),=0D IRQD_IRQ_DISABLED =3D (1 << 16),=0D IRQD_IRQ_MASKED =3D (1 << 17),=0D IRQD_IRQ_INPROGRESS =3D (1 << 18),=0D IRQD_WAKEUP_ARMED =3D (1 << 19),=0D IRQD_FORWARDED_TO_VCPU =3D (1 << 20),=0D IRQD_AFFINITY_MANAGED =3D (1 << 21),=0D IRQD_IRQ_STARTED =3D (1 << 22),=0D IRQD_MANAGED_SHUTDOWN =3D (1 << 23),=0D IRQD_SINGLE_TARGET =3D (1 << 24),=0D IRQD_DEFAULT_TRIGGER_SET =3D (1 << 25),=0D IRQD_CAN_RESERVE =3D (1 << 26),=0D IRQD_MSI_NOMASK_QUIRK =3D (1 << 27),=0D IRQD_HANDLE_ENFORCE_IRQCTX =3D (1 << 28),=0D IRQD_AFFINITY_ON_ACTIVATE =3D (1 << 29),=0D IRQD_IRQ_ENABLED_ON_SUSPEND =3D (1 << 30),=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_setaffinity_pen= ding(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_SETAFFINITY_PENDING;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_per_cpu(struct = irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_PER_CPU;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_can_balance(struct= irq_data *d)=0D {=0D return !((((d)->common)->state_use_accessors) & (IRQD_PER_CPU | IRQD_NO_BA= LANCING));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_affinity_was_set(s= truct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_AFFINITY_SET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_mark_affinity_was_= set(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_AFFINITY_SET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_trigger_type_was_s= et(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_DEFAULT_TRIGGER_SET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 irqd_get_trigger_type(st= ruct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_TRIGGER_MASK;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_trigger_type(s= truct irq_data *d, u32 type)=0D {=0D (((d)->common)->state_use_accessors) &=3D ~IRQD_TRIGGER_MASK;=0D (((d)->common)->state_use_accessors) |=3D type & IRQD_TRIGGER_MASK;=0D (((d)->common)->state_use_accessors) |=3D IRQD_DEFAULT_TRIGGER_SET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_level_type(stru= ct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_LEVEL;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_single_target(= struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_SINGLE_TARGET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_single_target(s= truct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_SINGLE_TARGET;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_handle_enforce= _irqctx(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_HANDLE_ENFORCE_IRQCTX;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_handle_enforce_= irqctx(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_HANDLE_ENFORCE_IRQCTX;= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_enabled_on_susp= end(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_IRQ_ENABLED_ON_SUSPEND;= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_wakeup_set(stru= ct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_WAKEUP_STATE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_can_move_in_proces= s_context(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_MOVE_PCNTXT;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_irq_disabled(struc= t irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_IRQ_DISABLED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_irq_masked(struct = irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_IRQ_MASKED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_irq_inprogress(str= uct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_IRQ_INPROGRESS;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_wakeup_armed(st= ruct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_WAKEUP_ARMED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_forwarded_to_vc= pu(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_FORWARDED_TO_VCPU;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_forwarded_to_v= cpu(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_FORWARDED_TO_VCPU;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_clr_forwarded_to_v= cpu(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) &=3D ~IRQD_FORWARDED_TO_VCPU;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_affinity_is_manage= d(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_AFFINITY_MANAGED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_activated(struc= t irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_ACTIVATED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_activated(stru= ct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_ACTIVATED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_clr_activated(stru= ct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) &=3D ~IRQD_ACTIVATED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_started(struct = irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_IRQ_STARTED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_is_managed_and_shu= tdown(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_MANAGED_SHUTDOWN;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_can_reserve(st= ruct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_CAN_RESERVE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_clr_can_reserve(st= ruct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) &=3D ~IRQD_CAN_RESERVE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_can_reserve(struct= irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_CAN_RESERVE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_msi_nomask_qui= rk(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_MSI_NOMASK_QUIRK;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_clr_msi_nomask_qui= rk(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) &=3D ~IRQD_MSI_NOMASK_QUIRK;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_msi_nomask_quirk(s= truct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_MSI_NOMASK_QUIRK;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqd_set_affinity_on_ac= tivate(struct irq_data *d)=0D {=0D (((d)->common)->state_use_accessors) |=3D IRQD_AFFINITY_ON_ACTIVATE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irqd_affinity_on_activa= te(struct irq_data *d)=0D {=0D return (((d)->common)->state_use_accessors) & IRQD_AFFINITY_ON_ACTIVATE;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) irq_hw_number_t irqd_to_hwir= q(struct irq_data *d)=0D {=0D return d->hwirq;=0D }=0D # 504 "./include/linux/irq.h"=0D struct irq_chip {=0D const char *name;=0D unsigned int (*irq_startup)(struct irq_data *data);=0D void (*irq_shutdown)(struct irq_data *data);=0D void (*irq_enable)(struct irq_data *data);=0D void (*irq_disable)(struct irq_data *data);=0D =0D void (*irq_ack)(struct irq_data *data);=0D void (*irq_mask)(struct irq_data *data);=0D void (*irq_mask_ack)(struct irq_data *data);=0D void (*irq_unmask)(struct irq_data *data);=0D void (*irq_eoi)(struct irq_data *data);=0D =0D int (*irq_set_affinity)(struct irq_data *data, const struct cpumask *dest,= bool force);=0D int (*irq_retrigger)(struct irq_data *data);=0D int (*irq_set_type)(struct irq_data *data, unsigned int flow_type);=0D int (*irq_set_wake)(struct irq_data *data, unsigned int on);=0D =0D void (*irq_bus_lock)(struct irq_data *data);=0D void (*irq_bus_sync_unlock)(struct irq_data *data);=0D =0D =0D =0D =0D =0D void (*irq_suspend)(struct irq_data *data);=0D void (*irq_resume)(struct irq_data *data);=0D void (*irq_pm_shutdown)(struct irq_data *data);=0D =0D void (*irq_calc_mask)(struct irq_data *data);=0D =0D void (*irq_print_chip)(struct irq_data *data, struct seq_file *p);=0D int (*irq_request_resources)(struct irq_data *data);=0D void (*irq_release_resources)(struct irq_data *data);=0D =0D void (*irq_compose_msi_msg)(struct irq_data *data, struct msi_msg *msg);=0D void (*irq_write_msi_msg)(struct irq_data *data, struct msi_msg *msg);=0D =0D int (*irq_get_irqchip_state)(struct irq_data *data, enum irqchip_irq_state= which, bool *state);=0D int (*irq_set_irqchip_state)(struct irq_data *data, enum irqchip_irq_state= which, bool state);=0D =0D int (*irq_set_vcpu_affinity)(struct irq_data *data, void *vcpu_info);=0D =0D void (*ipi_send_single)(struct irq_data *data, unsigned int cpu);=0D void (*ipi_send_mask)(struct irq_data *data, const struct cpumask *dest);= =0D =0D int (*irq_nmi_setup)(struct irq_data *data);=0D void (*irq_nmi_teardown)(struct irq_data *data);=0D =0D unsigned long flags;=0D };=0D # 573 "./include/linux/irq.h"=0D enum {=0D IRQCHIP_SET_TYPE_MASKED =3D (1 << 0),=0D IRQCHIP_EOI_IF_HANDLED =3D (1 << 1),=0D IRQCHIP_MASK_ON_SUSPEND =3D (1 << 2),=0D IRQCHIP_ONOFFLINE_ENABLED =3D (1 << 3),=0D IRQCHIP_SKIP_SET_WAKE =3D (1 << 4),=0D IRQCHIP_ONESHOT_SAFE =3D (1 << 5),=0D IRQCHIP_EOI_THREADED =3D (1 << 6),=0D IRQCHIP_SUPPORTS_LEVEL_MSI =3D (1 << 7),=0D IRQCHIP_SUPPORTS_NMI =3D (1 << 8),=0D IRQCHIP_ENABLE_WAKEUP_ON_SUSPEND =3D (1 << 9),=0D IRQCHIP_AFFINITY_PRE_STARTUP =3D (1 << 10),=0D };=0D =0D =0D # 1 "./include/linux/irqdesc.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/kobject.h" 1=0D # 20 "./include/linux/kobject.h"=0D # 1 "./include/linux/sysfs.h" 1=0D # 16 "./include/linux/sysfs.h"=0D # 1 "./include/linux/kernfs.h" 1=0D # 22 "./include/linux/kernfs.h"=0D struct file;=0D struct dentry;=0D struct iattr;=0D struct seq_file;=0D struct vm_area_struct;=0D struct vm_operations_struct;=0D struct super_block;=0D struct file_system_type;=0D struct poll_table_struct;=0D struct fs_context;=0D =0D struct kernfs_fs_context;=0D struct kernfs_open_node;=0D struct kernfs_iattrs;=0D =0D enum kernfs_node_type {=0D KERNFS_DIR =3D 0x0001,=0D KERNFS_FILE =3D 0x0002,=0D KERNFS_LINK =3D 0x0004,=0D };=0D =0D =0D =0D =0D =0D =0D enum kernfs_node_flag {=0D KERNFS_ACTIVATED =3D 0x0010,=0D KERNFS_NS =3D 0x0020,=0D KERNFS_HAS_SEQ_SHOW =3D 0x0040,=0D KERNFS_HAS_MMAP =3D 0x0080,=0D KERNFS_LOCKDEP =3D 0x0100,=0D KERNFS_SUICIDAL =3D 0x0400,=0D KERNFS_SUICIDED =3D 0x0800,=0D KERNFS_EMPTY_DIR =3D 0x1000,=0D KERNFS_HAS_RELEASE =3D 0x2000,=0D };=0D =0D =0D enum kernfs_root_flag {=0D =0D =0D =0D =0D =0D =0D KERNFS_ROOT_CREATE_DEACTIVATED =3D 0x0001,=0D # 79 "./include/linux/kernfs.h"=0D KERNFS_ROOT_EXTRA_OPEN_PERM_CHECK =3D 0x0002,=0D =0D =0D =0D =0D =0D KERNFS_ROOT_SUPPORT_EXPORTOP =3D 0x0004,=0D =0D =0D =0D =0D KERNFS_ROOT_SUPPORT_USER_XATTR =3D 0x0008,=0D };=0D =0D =0D struct kernfs_elem_dir {=0D unsigned long subdirs;=0D =0D struct rb_root children;=0D =0D =0D =0D =0D =0D struct kernfs_root *root;=0D =0D =0D =0D =0D unsigned long rev;=0D };=0D =0D struct kernfs_elem_symlink {=0D struct kernfs_node *target_kn;=0D };=0D =0D struct kernfs_elem_attr {=0D const struct kernfs_ops *ops;=0D struct kernfs_open_node *open;=0D loff_t size;=0D struct kernfs_node *notify_next;=0D };=0D # 131 "./include/linux/kernfs.h"=0D struct kernfs_node {=0D atomic_t count;=0D atomic_t active;=0D =0D struct lockdep_map dep_map;=0D =0D =0D =0D =0D =0D =0D =0D struct kernfs_node *parent;=0D const char *name;=0D =0D struct rb_node rb;=0D =0D const void *ns;=0D unsigned int hash;=0D union {=0D struct kernfs_elem_dir dir;=0D struct kernfs_elem_symlink symlink;=0D struct kernfs_elem_attr attr;=0D };=0D =0D void *priv;=0D =0D =0D =0D =0D =0D u64 id;=0D =0D unsigned short flags;=0D umode_t mode;=0D struct kernfs_iattrs *iattr;=0D };=0D # 176 "./include/linux/kernfs.h"=0D struct kernfs_syscall_ops {=0D int (*show_options)(struct seq_file *sf, struct kernfs_root *root);=0D =0D int (*mkdir)(struct kernfs_node *parent, const char *name,=0D umode_t mode);=0D int (*rmdir)(struct kernfs_node *kn);=0D int (*rename)(struct kernfs_node *kn, struct kernfs_node *new_parent,=0D const char *new_name);=0D int (*show_path)(struct seq_file *sf, struct kernfs_node *kn,=0D struct kernfs_root *root);=0D };=0D =0D struct kernfs_node *kernfs_root_to_node(struct kernfs_root *root);=0D =0D struct kernfs_open_file {=0D =0D struct kernfs_node *kn;=0D struct file *file;=0D struct seq_file *seq_file;=0D void *priv;=0D =0D =0D struct mutex mutex;=0D struct mutex prealloc_mutex;=0D int event;=0D struct list_head list;=0D char *prealloc_buf;=0D =0D size_t atomic_write_len;=0D bool mmapped:1;=0D bool released:1;=0D const struct vm_operations_struct *vm_ops;=0D };=0D =0D struct kernfs_ops {=0D =0D =0D =0D =0D int (*open)(struct kernfs_open_file *of);=0D void (*release)(struct kernfs_open_file *of);=0D # 229 "./include/linux/kernfs.h"=0D int (*seq_show)(struct seq_file *sf, void *v);=0D =0D void *(*seq_start)(struct seq_file *sf, loff_t *ppos);=0D void *(*seq_next)(struct seq_file *sf, void *v, loff_t *ppos);=0D void (*seq_stop)(struct seq_file *sf, void *v);=0D =0D ssize_t (*read)(struct kernfs_open_file *of, char *buf, size_t bytes,=0D loff_t off);=0D # 245 "./include/linux/kernfs.h"=0D size_t atomic_write_len;=0D =0D =0D =0D =0D =0D =0D bool prealloc;=0D ssize_t (*write)(struct kernfs_open_file *of, char *buf, size_t bytes,=0D loff_t off);=0D =0D __poll_t (*poll)(struct kernfs_open_file *of,=0D struct poll_table_struct *pt);=0D =0D int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);=0D };=0D =0D =0D =0D =0D struct kernfs_fs_context {=0D struct kernfs_root *root;=0D void *ns_tag;=0D unsigned long magic;=0D =0D =0D bool new_sb_created;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum kernfs_node_type kernfs= _type(struct kernfs_node *kn)=0D {=0D return kn->flags & 0x000f;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ino_t kernfs_id_ino(u64 id)= =0D {=0D =0D if (sizeof(ino_t) >=3D sizeof(u64))=0D return id;=0D else=0D return (u32)id;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 kernfs_id_gen(u64 id)=0D {=0D =0D if (sizeof(ino_t) >=3D sizeof(u64))=0D return 1;=0D else=0D return id >> 32;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ino_t kernfs_ino(struct kern= fs_node *kn)=0D {=0D return kernfs_id_ino(kn->id);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ino_t kernfs_gen(struct kern= fs_node *kn)=0D {=0D return kernfs_id_gen(kn->id);=0D }=0D # 317 "./include/linux/kernfs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kernfs_enable_ns(struct= kernfs_node *kn)=0D {=0D ({ int __ret_warn_on =3D !!(kernfs_type(kn) !=3D KERNFS_DIR); if (__builti= n_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/linux/kernfs.h"), "i" (319), "i= " ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } wh= ile (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D ({ int __ret_warn_on =3D !!(!(({ do { __attribute__((__noreturn__)) extern= void __compiletime_assert_226(void) ; if (!((sizeof((&kn->dir.children)->r= b_node) =3D=3D sizeof(char) || sizeof((&kn->dir.children)->rb_node) =3D=3D = sizeof(short) || sizeof((&kn->dir.children)->rb_node) =3D=3D sizeof(int) ||= sizeof((&kn->dir.children)->rb_node) =3D=3D sizeof(long)) || sizeof((&kn->= dir.children)->rb_node) =3D=3D sizeof(long long))) __compiletime_assert_226= (); } while (0); (*(const volatile typeof( _Generic(((&kn->dir.children)->r= b_node), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: ((&kn->dir.c= hildren)->rb_node))) *)&((&kn->dir.children)->rb_node)); }) =3D=3D ((void *= )0))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile_= _ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wo= rd" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" "= %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/kernfs= =2Eh"), "i" (320), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(stru= ct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D kn->flags |=3D KERNFS_NS;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool kernfs_ns_enabled(struc= t kernfs_node *kn)=0D {=0D return kn->flags & KERNFS_NS;=0D }=0D =0D int kernfs_name(struct kernfs_node *kn, char *buf, size_t buflen);=0D int kernfs_path_from_node(struct kernfs_node *root_kn, struct kernfs_node *= kn,=0D char *buf, size_t buflen);=0D void pr_cont_kernfs_name(struct kernfs_node *kn);=0D void pr_cont_kernfs_path(struct kernfs_node *kn);=0D struct kernfs_node *kernfs_get_parent(struct kernfs_node *kn);=0D struct kernfs_node *kernfs_find_and_get_ns(struct kernfs_node *parent,=0D const char *name, const void *ns);=0D struct kernfs_node *kernfs_walk_and_get_ns(struct kernfs_node *parent,=0D const char *path, const void *ns);=0D void kernfs_get(struct kernfs_node *kn);=0D void kernfs_put(struct kernfs_node *kn);=0D =0D struct kernfs_node *kernfs_node_from_dentry(struct dentry *dentry);=0D struct kernfs_root *kernfs_root_from_sb(struct super_block *sb);=0D struct inode *kernfs_get_inode(struct super_block *sb, struct kernfs_node *= kn);=0D =0D struct dentry *kernfs_node_dentry(struct kernfs_node *kn,=0D struct super_block *sb);=0D struct kernfs_root *kernfs_create_root(struct kernfs_syscall_ops *scops,=0D unsigned int flags, void *priv);=0D void kernfs_destroy_root(struct kernfs_root *root);=0D =0D struct kernfs_node *kernfs_create_dir_ns(struct kernfs_node *parent,=0D const char *name, umode_t mode,=0D kuid_t uid, kgid_t gid,=0D void *priv, const void *ns);=0D struct kernfs_node *kernfs_create_empty_dir(struct kernfs_node *parent,=0D const char *name);=0D struct kernfs_node *__kernfs_create_file(struct kernfs_node *parent,=0D const char *name, umode_t mode,=0D kuid_t uid, kgid_t gid,=0D loff_t size,=0D const struct kernfs_ops *ops,=0D void *priv, const void *ns,=0D struct lock_class_key *key);=0D struct kernfs_node *kernfs_create_link(struct kernfs_node *parent,=0D const char *name,=0D struct kernfs_node *target);=0D void kernfs_activate(struct kernfs_node *kn);=0D void kernfs_remove(struct kernfs_node *kn);=0D void kernfs_break_active_protection(struct kernfs_node *kn);=0D void kernfs_unbreak_active_protection(struct kernfs_node *kn);=0D bool kernfs_remove_self(struct kernfs_node *kn);=0D int kernfs_remove_by_name_ns(struct kernfs_node *parent, const char *name,= =0D const void *ns);=0D int kernfs_rename_ns(struct kernfs_node *kn, struct kernfs_node *new_parent= ,=0D const char *new_name, const void *new_ns);=0D int kernfs_setattr(struct kernfs_node *kn, const struct iattr *iattr);=0D __poll_t kernfs_generic_poll(struct kernfs_open_file *of,=0D struct poll_table_struct *pt);=0D void kernfs_notify(struct kernfs_node *kn);=0D =0D int kernfs_xattr_get(struct kernfs_node *kn, const char *name,=0D void *value, size_t size);=0D int kernfs_xattr_set(struct kernfs_node *kn, const char *name,=0D const void *value, size_t size, int flags);=0D =0D const void *kernfs_super_ns(struct super_block *sb);=0D int kernfs_get_tree(struct fs_context *fc);=0D void kernfs_free_fs_context(struct fs_context *fc);=0D void kernfs_kill_sb(struct super_block *sb);=0D =0D void kernfs_init(void);=0D =0D struct kernfs_node *kernfs_find_and_get_node_by_id(struct kernfs_root *root= ,=0D u64 id);=0D # 529 "./include/linux/kernfs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kernfs_path(struct kernf= s_node *kn, char *buf, size_t buflen)=0D {=0D return kernfs_path_from_node(kn, ((void *)0), buf, buflen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kernfs_node *=0D kernfs_find_and_get(struct kernfs_node *kn, const char *name)=0D {=0D return kernfs_find_and_get_ns(kn, name, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kernfs_node *=0D kernfs_walk_and_get(struct kernfs_node *kn, const char *path)=0D {=0D return kernfs_walk_and_get_ns(kn, path, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kernfs_node *=0D kernfs_create_dir(struct kernfs_node *parent, const char *name, umode_t mod= e,=0D void *priv)=0D {=0D return kernfs_create_dir_ns(parent, name, mode,=0D (kuid_t){ 0 }, (kgid_t){ 0 },=0D priv, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kernfs_remove_by_name(st= ruct kernfs_node *parent,=0D const char *name)=0D {=0D return kernfs_remove_by_name_ns(parent, name, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kernfs_rename(struct ker= nfs_node *kn,=0D struct kernfs_node *new_parent,=0D const char *new_name)=0D {=0D return kernfs_rename_ns(kn, new_parent, new_name, ((void *)0));=0D }=0D # 17 "./include/linux/sysfs.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/kobject_ns.h" 1=0D # 19 "./include/linux/kobject_ns.h"=0D struct sock;=0D struct kobject;=0D =0D =0D =0D =0D =0D enum kobj_ns_type {=0D KOBJ_NS_TYPE_NONE =3D 0,=0D KOBJ_NS_TYPE_NET,=0D KOBJ_NS_TYPES=0D };=0D # 39 "./include/linux/kobject_ns.h"=0D struct kobj_ns_type_operations {=0D enum kobj_ns_type type;=0D bool (*current_may_mount)(void);=0D void *(*grab_current_ns)(void);=0D const void *(*netlink_ns)(struct sock *sk);=0D const void *(*initial_ns)(void);=0D void (*drop_ns)(void *);=0D };=0D =0D int kobj_ns_type_register(const struct kobj_ns_type_operations *ops);=0D int kobj_ns_type_registered(enum kobj_ns_type type);=0D const struct kobj_ns_type_operations *kobj_child_ns_ops(struct kobject *par= ent);=0D const struct kobj_ns_type_operations *kobj_ns_ops(struct kobject *kobj);=0D =0D bool kobj_ns_current_may_mount(enum kobj_ns_type type);=0D void *kobj_ns_grab_current(enum kobj_ns_type type);=0D const void *kobj_ns_netlink(enum kobj_ns_type type, struct sock *sk);=0D const void *kobj_ns_initial(enum kobj_ns_type type);=0D void kobj_ns_drop(enum kobj_ns_type type, void *ns);=0D # 22 "./include/linux/sysfs.h" 2=0D =0D =0D =0D struct kobject;=0D struct module;=0D struct bin_attribute;=0D enum kobj_ns_type;=0D =0D struct attribute {=0D const char *name;=0D umode_t mode;=0D =0D bool ignore_lockdep:1;=0D struct lock_class_key *key;=0D struct lock_class_key skey;=0D =0D };=0D # 84 "./include/linux/sysfs.h"=0D struct attribute_group {=0D const char *name;=0D umode_t (*is_visible)(struct kobject *,=0D struct attribute *, int);=0D umode_t (*is_bin_visible)(struct kobject *,=0D struct bin_attribute *, int);=0D struct attribute **attrs;=0D struct bin_attribute **bin_attrs;=0D };=0D # 171 "./include/linux/sysfs.h"=0D struct file;=0D struct vm_area_struct;=0D struct address_space;=0D =0D struct bin_attribute {=0D struct attribute attr;=0D size_t size;=0D void *private;=0D struct address_space *(*f_mapping)(void);=0D ssize_t (*read)(struct file *, struct kobject *, struct bin_attribute *,=0D char *, loff_t, size_t);=0D ssize_t (*write)(struct file *, struct kobject *, struct bin_attribute *,= =0D char *, loff_t, size_t);=0D int (*mmap)(struct file *, struct kobject *, struct bin_attribute *attr,=0D struct vm_area_struct *vma);=0D };=0D # 238 "./include/linux/sysfs.h"=0D struct sysfs_ops {=0D ssize_t (*show)(struct kobject *, struct attribute *, char *);=0D ssize_t (*store)(struct kobject *, struct attribute *, const char *, size_= t);=0D };=0D =0D =0D =0D int __attribute__((__warn_unused_result__)) sysfs_create_dir_ns(struct kobj= ect *kobj, const void *ns);=0D void sysfs_remove_dir(struct kobject *kobj);=0D int __attribute__((__warn_unused_result__)) sysfs_rename_dir_ns(struct kobj= ect *kobj, const char *new_name,=0D const void *new_ns);=0D int __attribute__((__warn_unused_result__)) sysfs_move_dir_ns(struct kobjec= t *kobj,=0D struct kobject *new_parent_kobj,=0D const void *new_ns);=0D int __attribute__((__warn_unused_result__)) sysfs_create_mount_point(struct= kobject *parent_kobj,=0D const char *name);=0D void sysfs_remove_mount_point(struct kobject *parent_kobj,=0D const char *name);=0D =0D int __attribute__((__warn_unused_result__)) sysfs_create_file_ns(struct kob= ject *kobj,=0D const struct attribute *attr,=0D const void *ns);=0D int __attribute__((__warn_unused_result__)) sysfs_create_files(struct kobje= ct *kobj,=0D const struct attribute * const *attr);=0D int __attribute__((__warn_unused_result__)) sysfs_chmod_file(struct kobject= *kobj,=0D const struct attribute *attr, umode_t mode);=0D struct kernfs_node *sysfs_break_active_protection(struct kobject *kobj,=0D const struct attribute *attr);=0D void sysfs_unbreak_active_protection(struct kernfs_node *kn);=0D void sysfs_remove_file_ns(struct kobject *kobj, const struct attribute *att= r,=0D const void *ns);=0D bool sysfs_remove_file_self(struct kobject *kobj, const struct attribute *a= ttr);=0D void sysfs_remove_files(struct kobject *kobj, const struct attribute * cons= t *attr);=0D =0D int __attribute__((__warn_unused_result__)) sysfs_create_bin_file(struct ko= bject *kobj,=0D const struct bin_attribute *attr);=0D void sysfs_remove_bin_file(struct kobject *kobj,=0D const struct bin_attribute *attr);=0D =0D int __attribute__((__warn_unused_result__)) sysfs_create_link(struct kobjec= t *kobj, struct kobject *target,=0D const char *name);=0D int __attribute__((__warn_unused_result__)) sysfs_create_link_nowarn(struct= kobject *kobj,=0D struct kobject *target,=0D const char *name);=0D void sysfs_remove_link(struct kobject *kobj, const char *name);=0D =0D int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *target,=0D const char *old_name, const char *new_name,=0D const void *new_ns);=0D =0D void sysfs_delete_link(struct kobject *dir, struct kobject *targ,=0D const char *name);=0D =0D int __attribute__((__warn_unused_result__)) sysfs_create_group(struct kobje= ct *kobj,=0D const struct attribute_group *grp);=0D int __attribute__((__warn_unused_result__)) sysfs_create_groups(struct kobj= ect *kobj,=0D const struct attribute_group **groups);=0D int __attribute__((__warn_unused_result__)) sysfs_update_groups(struct kobj= ect *kobj,=0D const struct attribute_group **groups);=0D int sysfs_update_group(struct kobject *kobj,=0D const struct attribute_group *grp);=0D void sysfs_remove_group(struct kobject *kobj,=0D const struct attribute_group *grp);=0D void sysfs_remove_groups(struct kobject *kobj,=0D const struct attribute_group **groups);=0D int sysfs_add_file_to_group(struct kobject *kobj,=0D const struct attribute *attr, const char *group);=0D void sysfs_remove_file_from_group(struct kobject *kobj,=0D const struct attribute *attr, const char *group);=0D int sysfs_merge_group(struct kobject *kobj,=0D const struct attribute_group *grp);=0D void sysfs_unmerge_group(struct kobject *kobj,=0D const struct attribute_group *grp);=0D int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name,=0D struct kobject *target, const char *link_name);=0D void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_n= ame,=0D const char *link_name);=0D int compat_only_sysfs_link_entry_to_kobj(struct kobject *kobj,=0D struct kobject *target_kobj,=0D const char *target_name,=0D const char *symlink_name);=0D =0D void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);= =0D =0D int __attribute__((__warn_unused_result__)) sysfs_init(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sysfs_enable_ns(struct = kernfs_node *kn)=0D {=0D return kernfs_enable_ns(kn);=0D }=0D =0D int sysfs_file_change_owner(struct kobject *kobj, const char *name, kuid_t = kuid,=0D kgid_t kgid);=0D int sysfs_change_owner(struct kobject *kobj, kuid_t kuid, kgid_t kgid);=0D int sysfs_link_change_owner(struct kobject *kobj, struct kobject *targ,=0D const char *name, kuid_t kuid, kgid_t kgid);=0D int sysfs_groups_change_owner(struct kobject *kobj,=0D const struct attribute_group **groups,=0D kuid_t kuid, kgid_t kgid);=0D int sysfs_group_change_owner(struct kobject *kobj,=0D const struct attribute_group *groups, kuid_t kuid,=0D kgid_t kgid);=0D __attribute__((__format__(printf, 2, 3)))=0D int sysfs_emit(char *buf, const char *fmt, ...);=0D __attribute__((__format__(printf, 3, 4)))=0D int sysfs_emit_at(char *buf, int at, const char *fmt, ...);=0D # 604 "./include/linux/sysfs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) sysfs_create_file(struct kobject *kobj,=0D const struct attribute *attr)=0D {=0D return sysfs_create_file_ns(kobj, attr, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sysfs_remove_file(struc= t kobject *kobj,=0D const struct attribute *attr)=0D {=0D sysfs_remove_file_ns(kobj, attr, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sysfs_rename_link(struct= kobject *kobj, struct kobject *target,=0D const char *old_name, const char *new_name)=0D {=0D return sysfs_rename_link_ns(kobj, target, old_name, new_name, ((void *)0))= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sysfs_notify_dirent(str= uct kernfs_node *kn)=0D {=0D kernfs_notify(kn);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kernfs_node *sysfs_ge= t_dirent(struct kernfs_node *parent,=0D const char *name)=0D {=0D return kernfs_find_and_get(parent, name);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kernfs_node *sysfs_ge= t(struct kernfs_node *kn)=0D {=0D kernfs_get(kn);=0D return kn;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sysfs_put(struct kernfs= _node *kn)=0D {=0D kernfs_put(kn);=0D }=0D # 21 "./include/linux/kobject.h" 2=0D # 41 "./include/linux/kobject.h"=0D extern u64 uevent_seqnum;=0D # 53 "./include/linux/kobject.h"=0D enum kobject_action {=0D KOBJ_ADD,=0D KOBJ_REMOVE,=0D KOBJ_CHANGE,=0D KOBJ_MOVE,=0D KOBJ_ONLINE,=0D KOBJ_OFFLINE,=0D KOBJ_BIND,=0D KOBJ_UNBIND,=0D };=0D =0D struct kobject {=0D const char *name;=0D struct list_head entry;=0D struct kobject *parent;=0D struct kset *kset;=0D const struct kobj_type *ktype;=0D struct kernfs_node *sd;=0D struct kref kref;=0D =0D =0D =0D unsigned int state_initialized:1;=0D unsigned int state_in_sysfs:1;=0D unsigned int state_add_uevent_sent:1;=0D unsigned int state_remove_uevent_sent:1;=0D unsigned int uevent_suppress:1;=0D };=0D =0D extern __attribute__((__format__(printf, 2, 3)))=0D int kobject_set_name(struct kobject *kobj, const char *name, ...);=0D extern __attribute__((__format__(printf, 2, 0)))=0D int kobject_set_name_vargs(struct kobject *kobj, const char *fmt,=0D va_list vargs);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *kobject_name(con= st struct kobject *kobj)=0D {=0D return kobj->name;=0D }=0D =0D extern void kobject_init(struct kobject *kobj, const struct kobj_type *ktyp= e);=0D extern __attribute__((__format__(printf, 3, 4))) __attribute__((__warn_unus= ed_result__))=0D int kobject_add(struct kobject *kobj, struct kobject *parent,=0D const char *fmt, ...);=0D extern __attribute__((__format__(printf, 4, 5))) __attribute__((__warn_unus= ed_result__))=0D int kobject_init_and_add(struct kobject *kobj,=0D const struct kobj_type *ktype, struct kobject *parent,=0D const char *fmt, ...);=0D =0D extern void kobject_del(struct kobject *kobj);=0D =0D extern struct kobject * __attribute__((__warn_unused_result__)) kobject_cre= ate_and_add(const char *name,=0D struct kobject *parent);=0D =0D extern int __attribute__((__warn_unused_result__)) kobject_rename(struct ko= bject *, const char *new_name);=0D extern int __attribute__((__warn_unused_result__)) kobject_move(struct kobj= ect *, struct kobject *);=0D =0D extern struct kobject *kobject_get(struct kobject *kobj);=0D extern struct kobject * __attribute__((__warn_unused_result__)) kobject_get= _unless_zero(=0D struct kobject *kobj);=0D extern void kobject_put(struct kobject *kobj);=0D =0D extern const void *kobject_namespace(struct kobject *kobj);=0D extern void kobject_get_ownership(struct kobject *kobj,=0D kuid_t *uid, kgid_t *gid);=0D extern char *kobject_get_path(struct kobject *kobj, gfp_t flag);=0D =0D struct kobj_type {=0D void (*release)(struct kobject *kobj);=0D const struct sysfs_ops *sysfs_ops;=0D const struct attribute_group **default_groups;=0D const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kob= j);=0D const void *(*namespace)(struct kobject *kobj);=0D void (*get_ownership)(struct kobject *kobj, kuid_t *uid, kgid_t *gid);=0D };=0D =0D struct kobj_uevent_env {=0D char *argv[3];=0D char *envp[64];=0D int envp_idx;=0D char buf[2048];=0D int buflen;=0D };=0D =0D struct kset_uevent_ops {=0D int (* const filter)(struct kobject *kobj);=0D const char *(* const name)(struct kobject *kobj);=0D int (* const uevent)(struct kobject *kobj, struct kobj_uevent_env *env);=0D };=0D =0D struct kobj_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr,=0D char *buf);=0D ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,=0D const char *buf, size_t count);=0D };=0D =0D extern const struct sysfs_ops kobj_sysfs_ops;=0D =0D struct sock;=0D # 172 "./include/linux/kobject.h"=0D struct kset {=0D struct list_head list;=0D spinlock_t list_lock;=0D struct kobject kobj;=0D const struct kset_uevent_ops *uevent_ops;=0D } ;=0D =0D extern void kset_init(struct kset *kset);=0D extern int __attribute__((__warn_unused_result__)) kset_register(struct kse= t *kset);=0D extern void kset_unregister(struct kset *kset);=0D extern struct kset * __attribute__((__warn_unused_result__)) kset_create_an= d_add(const char *name,=0D const struct kset_uevent_ops *u,=0D struct kobject *parent_kobj);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kset *to_kset(struct = kobject *kobj)=0D {=0D return kobj ? ({ void *__mptr =3D (void *)(kobj); _Static_assert(__builtin= _types_compatible_p(typeof(*(kobj)), typeof(((struct kset *)0)->kobj)) || _= _builtin_types_compatible_p(typeof(*(kobj)), typeof(void)), "pointer type m= ismatch in container_of()"); ((struct kset *)(__mptr - __builtin_offsetof(s= truct kset, kobj))); }) : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct kset *kset_get(struct= kset *k)=0D {=0D return k ? to_kset(kobject_get(&k->kobj)) : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kset_put(struct kset *k= )=0D {=0D kobject_put(&k->kobj);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct kobj_type *get_= ktype(struct kobject *kobj)=0D {=0D return kobj->ktype;=0D }=0D =0D extern struct kobject *kset_find_obj(struct kset *, const char *);=0D =0D =0D extern struct kobject *kernel_kobj;=0D =0D extern struct kobject *mm_kobj;=0D =0D extern struct kobject *hypervisor_kobj;=0D =0D extern struct kobject *power_kobj;=0D =0D extern struct kobject *firmware_kobj;=0D =0D int kobject_uevent(struct kobject *kobj, enum kobject_action action);=0D int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,=0D char *envp[]);=0D int kobject_synth_uevent(struct kobject *kobj, const char *buf, size_t coun= t);=0D =0D __attribute__((__format__(printf, 2, 3)))=0D int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...);=0D # 7 "./include/linux/irqdesc.h" 2=0D =0D =0D =0D =0D =0D =0D struct irq_affinity_notify;=0D struct proc_dir_entry;=0D struct module;=0D struct irq_desc;=0D struct irq_domain;=0D struct pt_regs;=0D # 55 "./include/linux/irqdesc.h"=0D struct irq_desc {=0D struct irq_common_data irq_common_data;=0D struct irq_data irq_data;=0D unsigned int *kstat_irqs;=0D irq_flow_handler_t handle_irq;=0D struct irqaction *action;=0D unsigned int status_use_accessors;=0D unsigned int core_internal_state__do_not_mess_with_it;=0D unsigned int depth;=0D unsigned int wake_depth;=0D unsigned int tot_count;=0D unsigned int irq_count;=0D unsigned long last_unhandled;=0D unsigned int irqs_unhandled;=0D atomic_t threads_handled;=0D int threads_handled_last;=0D raw_spinlock_t lock;=0D struct cpumask *percpu_enabled;=0D const struct cpumask *percpu_affinity;=0D =0D const struct cpumask *affinity_hint;=0D struct irq_affinity_notify *affinity_notify;=0D =0D =0D =0D =0D unsigned long threads_oneshot;=0D atomic_t threads_active;=0D wait_queue_head_t wait_for_threads;=0D =0D =0D =0D =0D =0D =0D =0D struct proc_dir_entry *dir;=0D =0D =0D =0D =0D =0D =0D struct callback_head rcu;=0D struct kobject kobj;=0D =0D struct mutex request_mutex;=0D int parent_irq;=0D struct module *owner;=0D const char *name;=0D } __attribute__((__aligned__(1 << (6))));=0D =0D =0D extern void irq_lock_sparse(void);=0D extern void irq_unlock_sparse(void);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int irq_desc_kstat_= cpu(struct irq_desc *desc,=0D unsigned int cpu)=0D {=0D return desc->kstat_irqs ? *({ do { const void *__vpp_verify =3D (typeof((d= esc->kstat_irqs) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*((desc->kstat_irqs))) = *)((desc->kstat_irqs))); (typeof((typeof(*((desc->kstat_irqs))) *)((desc->k= stat_irqs)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); }) : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_desc *irq_data_to= _desc(struct irq_data *data)=0D {=0D return ({ void *__mptr =3D (void *)(data->common); _Static_assert(__builti= n_types_compatible_p(typeof(*(data->common)), typeof(((struct irq_desc *)0)= ->irq_common_data)) || __builtin_types_compatible_p(typeof(*(data->common))= , typeof(void)), "pointer type mismatch in container_of()"); ((struct irq_d= esc *)(__mptr - __builtin_offsetof(struct irq_desc, irq_common_data))); });= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int irq_desc_get_ir= q(struct irq_desc *desc)=0D {=0D return desc->irq_data.irq;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_data *irq_desc_ge= t_irq_data(struct irq_desc *desc)=0D {=0D return &desc->irq_data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_chip *irq_desc_ge= t_chip(struct irq_desc *desc)=0D {=0D return desc->irq_data.chip;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_desc_get_chip_data= (struct irq_desc *desc)=0D {=0D return desc->irq_data.chip_data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_desc_get_handler_d= ata(struct irq_desc *desc)=0D {=0D return desc->irq_common_data.handler_data;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void generic_handle_irq_desc= (struct irq_desc *desc)=0D {=0D desc->handle_irq(desc);=0D }=0D =0D int handle_irq_desc(struct irq_desc *desc);=0D int generic_handle_irq(unsigned int irq);=0D int generic_handle_irq_safe(unsigned int irq);=0D =0D =0D =0D =0D =0D =0D =0D int generic_handle_domain_irq(struct irq_domain *domain, unsigned int hwirq= );=0D int generic_handle_domain_nmi(struct irq_domain *domain, unsigned int hwirq= );=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_desc_has_action(stru= ct irq_desc *desc)=0D {=0D return desc && desc->action !=3D ((void *)0);=0D }=0D # 191 "./include/linux/irqdesc.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_handler_locked(= struct irq_data *data,=0D irq_flow_handler_t handler)=0D {=0D struct irq_desc *desc =3D irq_data_to_desc(data);=0D =0D desc->handle_irq =3D handler;=0D }=0D # 211 "./include/linux/irqdesc.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D irq_set_chip_handler_name_locked(struct irq_data *data, struct irq_chip *ch= ip,=0D irq_flow_handler_t handler, const char *name)=0D {=0D struct irq_desc *desc =3D irq_data_to_desc(data);=0D =0D desc->handle_irq =3D handler;=0D desc->name =3D name;=0D data->chip =3D chip;=0D }=0D =0D bool irq_check_status_bit(unsigned int irq, unsigned int bitmask);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_balancing_disabled(= unsigned int irq)=0D {=0D return irq_check_status_bit(irq, (IRQ_PER_CPU | IRQ_NO_BALANCING));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_is_percpu(unsigned = int irq)=0D {=0D return irq_check_status_bit(irq, IRQ_PER_CPU);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_is_percpu_devid(uns= igned int irq)=0D {=0D return irq_check_status_bit(irq, IRQ_PER_CPU_DEVID);=0D }=0D =0D void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_= class,=0D struct lock_class_key *request_class);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class,= =0D struct lock_class_key *request_class)=0D {=0D if (1)=0D __irq_set_lockdep_class(irq, lock_class, request_class);=0D }=0D # 588 "./include/linux/irq.h" 2=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/hw_irq.h" 1=0D # 1 "./include/asm-generic/hw_irq.h" 1=0D # 2 "./arch/riscv/include/generated/asm/hw_irq.h" 2=0D # 593 "./include/linux/irq.h" 2=0D # 604 "./include/linux/irq.h"=0D struct irqaction;=0D extern int setup_percpu_irq(unsigned int irq, struct irqaction *new);=0D extern void remove_percpu_irq(unsigned int irq, struct irqaction *act);=0D =0D =0D =0D =0D =0D extern int irq_set_affinity_locked(struct irq_data *data,=0D const struct cpumask *cpumask, bool force);=0D extern int irq_set_vcpu_affinity(unsigned int irq, void *vcpu_info);=0D =0D =0D extern void irq_migrate_all_off_this_cpu(void);=0D extern int irq_affinity_online_cpu(unsigned int cpu);=0D # 633 "./include/linux/irq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_move_irq(struct irq= _data *data) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_move_masked_irq(str= uct irq_data *data) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_force_complete_move= (struct irq_desc *desc) { }=0D =0D =0D extern int no_irq_affinity;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_set_parent(int irq, = int parent_irq)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D extern void handle_level_irq(struct irq_desc *desc);=0D extern void handle_fasteoi_irq(struct irq_desc *desc);=0D extern void handle_edge_irq(struct irq_desc *desc);=0D extern void handle_edge_eoi_irq(struct irq_desc *desc);=0D extern void handle_simple_irq(struct irq_desc *desc);=0D extern void handle_untracked_irq(struct irq_desc *desc);=0D extern void handle_percpu_irq(struct irq_desc *desc);=0D extern void handle_percpu_devid_irq(struct irq_desc *desc);=0D extern void handle_bad_irq(struct irq_desc *desc);=0D extern void handle_nested_irq(unsigned int irq);=0D =0D extern void handle_fasteoi_nmi(struct irq_desc *desc);=0D extern void handle_percpu_devid_fasteoi_nmi(struct irq_desc *desc);=0D =0D extern int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *= msg);=0D extern int irq_chip_pm_get(struct irq_data *data);=0D extern int irq_chip_pm_put(struct irq_data *data);=0D =0D extern void handle_fasteoi_ack_irq(struct irq_desc *desc);=0D extern void handle_fasteoi_mask_irq(struct irq_desc *desc);=0D extern int irq_chip_set_parent_state(struct irq_data *data,=0D enum irqchip_irq_state which,=0D bool val);=0D extern int irq_chip_get_parent_state(struct irq_data *data,=0D enum irqchip_irq_state which,=0D bool *state);=0D extern void irq_chip_enable_parent(struct irq_data *data);=0D extern void irq_chip_disable_parent(struct irq_data *data);=0D extern void irq_chip_ack_parent(struct irq_data *data);=0D extern int irq_chip_retrigger_hierarchy(struct irq_data *data);=0D extern void irq_chip_mask_parent(struct irq_data *data);=0D extern void irq_chip_mask_ack_parent(struct irq_data *data);=0D extern void irq_chip_unmask_parent(struct irq_data *data);=0D extern void irq_chip_eoi_parent(struct irq_data *data);=0D extern int irq_chip_set_affinity_parent(struct irq_data *data,=0D const struct cpumask *dest,=0D bool force);=0D extern int irq_chip_set_wake_parent(struct irq_data *data, unsigned int on)= ;=0D extern int irq_chip_set_vcpu_affinity_parent(struct irq_data *data,=0D void *vcpu_info);=0D extern int irq_chip_set_type_parent(struct irq_data *data, unsigned int typ= e);=0D extern int irq_chip_request_resources_parent(struct irq_data *data);=0D extern void irq_chip_release_resources_parent(struct irq_data *data);=0D =0D =0D =0D extern void note_interrupt(struct irq_desc *desc, irqreturn_t action_ret);= =0D =0D =0D =0D extern int noirqdebug_setup(char *str);=0D =0D =0D extern int can_request_irq(unsigned int irq, unsigned long irqflags);=0D =0D =0D extern struct irq_chip no_irq_chip;=0D extern struct irq_chip dummy_irq_chip;=0D =0D extern void=0D irq_set_chip_and_handler_name(unsigned int irq, const struct irq_chip *chip= ,=0D irq_flow_handler_t handle, const char *name);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_chip_and_handle= r(unsigned int irq,=0D const struct irq_chip *chip,=0D irq_flow_handler_t handle)=0D {=0D irq_set_chip_and_handler_name(irq, chip, handle, ((void *)0));=0D }=0D =0D extern int irq_set_percpu_devid(unsigned int irq);=0D extern int irq_set_percpu_devid_partition(unsigned int irq,=0D const struct cpumask *affinity);=0D extern int irq_get_percpu_devid_partition(unsigned int irq,=0D struct cpumask *affinity);=0D =0D extern void=0D __irq_set_handler(unsigned int irq, irq_flow_handler_t handle, int is_chain= ed,=0D const char *name);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D irq_set_handler(unsigned int irq, irq_flow_handler_t handle)=0D {=0D __irq_set_handler(irq, handle, 0, ((void *)0));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D irq_set_chained_handler(unsigned int irq, irq_flow_handler_t handle)=0D {=0D __irq_set_handler(irq, handle, 1, ((void *)0));=0D }=0D =0D =0D =0D =0D =0D =0D void=0D irq_set_chained_handler_and_data(unsigned int irq, irq_flow_handler_t handl= e,=0D void *data);=0D =0D void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long s= et);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_status_flags(un= signed int irq, unsigned long set)=0D {=0D irq_modify_status(irq, 0, set);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_clear_status_flags(= unsigned int irq, unsigned long clr)=0D {=0D irq_modify_status(irq, clr, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_noprobe(unsigne= d int irq)=0D {=0D irq_modify_status(irq, 0, IRQ_NOPROBE);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_probe(unsigned = int irq)=0D {=0D irq_modify_status(irq, IRQ_NOPROBE, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_nothread(unsign= ed int irq)=0D {=0D irq_modify_status(irq, 0, IRQ_NOTHREAD);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_thread(unsigned= int irq)=0D {=0D irq_modify_status(irq, IRQ_NOTHREAD, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_nested_thread(u= nsigned int irq, bool nest)=0D {=0D if (nest)=0D irq_set_status_flags(irq, IRQ_NESTED_THREAD);=0D else=0D irq_clear_status_flags(irq, IRQ_NESTED_THREAD);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_set_percpu_devid_fl= ags(unsigned int irq)=0D {=0D irq_set_status_flags(irq,=0D IRQ_NOAUTOEN | IRQ_PER_CPU | IRQ_NOTHREAD |=0D IRQ_NOPROBE | IRQ_PER_CPU_DEVID);=0D }=0D =0D =0D extern int irq_set_chip(unsigned int irq, const struct irq_chip *chip);=0D extern int irq_set_handler_data(unsigned int irq, void *data);=0D extern int irq_set_chip_data(unsigned int irq, void *data);=0D extern int irq_set_irq_type(unsigned int irq, unsigned int type);=0D extern int irq_set_msi_desc(unsigned int irq, struct msi_desc *entry);=0D extern int irq_set_msi_desc_off(unsigned int irq_base, unsigned int irq_off= set,=0D struct msi_desc *entry);=0D extern struct irq_data *irq_get_irq_data(unsigned int irq);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_chip *irq_get_chi= p(unsigned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D return d ? d->chip : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_chip *irq_data_ge= t_irq_chip(struct irq_data *d)=0D {=0D return d->chip;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_get_chip_data(unsi= gned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D return d ? d->chip_data : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_data_get_irq_chip_= data(struct irq_data *d)=0D {=0D return d->chip_data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_get_handler_data(u= nsigned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D return d ? d->common->handler_data : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *irq_data_get_irq_handl= er_data(struct irq_data *d)=0D {=0D return d->common->handler_data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct msi_desc *irq_get_msi= _desc(unsigned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D return d ? d->common->msi_desc : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct msi_desc *irq_data_ge= t_msi_desc(struct irq_data *d)=0D {=0D return d->common->msi_desc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 irq_get_trigger_type(uns= igned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D return d ? irqd_get_trigger_type(d) : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_common_data_get_node= (struct irq_common_data *d)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int irq_data_get_node(struct= irq_data *d)=0D {=0D return irq_common_data_get_node(d->common);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cpumask *irq_get_affi= nity_mask(int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D =0D return d ? d->common->affinity : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cpumask *irq_data_get= _affinity_mask(struct irq_data *d)=0D {=0D return d->common->affinity;=0D }=0D # 904 "./include/linux/irq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_data_update_effecti= ve_affinity(struct irq_data *d,=0D const struct cpumask *m)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct cpumask *irq_data_get_effective_affinity_mask(struct irq_data *d)=0D {=0D return d->common->affinity;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cpumask *irq_get_effe= ctive_affinity_mask(unsigned int irq)=0D {=0D struct irq_data *d =3D irq_get_irq_data(irq);=0D =0D return d ? irq_data_get_effective_affinity_mask(d) : ((void *)0);=0D }=0D =0D unsigned int arch_dynirq_lower_bound(unsigned int from);=0D =0D int __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int nod= e,=0D struct module *owner,=0D const struct irq_affinity_desc *affinity);=0D =0D int __devm_irq_alloc_descs(struct device *dev, int irq, unsigned int from,= =0D unsigned int cnt, int node, struct module *owner,=0D const struct irq_affinity_desc *affinity);=0D # 963 "./include/linux/irq.h"=0D void irq_free_descs(unsigned int irq, unsigned int cnt);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_free_desc(unsigned = int irq)=0D {=0D irq_free_descs(irq, 1);=0D }=0D # 983 "./include/linux/irq.h"=0D struct irq_chip_regs {=0D unsigned long enable;=0D unsigned long disable;=0D unsigned long mask;=0D unsigned long ack;=0D unsigned long eoi;=0D unsigned long type;=0D unsigned long polarity;=0D };=0D # 1006 "./include/linux/irq.h"=0D struct irq_chip_type {=0D struct irq_chip chip;=0D struct irq_chip_regs regs;=0D irq_flow_handler_t handler;=0D u32 type;=0D u32 mask_cache_priv;=0D u32 *mask_cache;=0D };=0D # 1048 "./include/linux/irq.h"=0D struct irq_chip_generic {=0D raw_spinlock_t lock;=0D void *reg_base;=0D u32 (*reg_readl)(void *addr);=0D void (*reg_writel)(u32 val, void *addr);=0D void (*suspend)(struct irq_chip_generic *gc);=0D void (*resume)(struct irq_chip_generic *gc);=0D unsigned int irq_base;=0D unsigned int irq_cnt;=0D u32 mask_cache;=0D u32 type_cache;=0D u32 polarity_cache;=0D u32 wake_enabled;=0D u32 wake_active;=0D unsigned int num_ct;=0D void *private;=0D unsigned long installed;=0D unsigned long unused;=0D struct irq_domain *domain;=0D struct list_head list;=0D struct irq_chip_type chip_types[];=0D };=0D # 1081 "./include/linux/irq.h"=0D enum irq_gc_flags {=0D IRQ_GC_INIT_MASK_CACHE =3D 1 << 0,=0D IRQ_GC_INIT_NESTED_LOCK =3D 1 << 1,=0D IRQ_GC_MASK_CACHE_PER_TYPE =3D 1 << 2,=0D IRQ_GC_NO_MASK =3D 1 << 3,=0D IRQ_GC_BE_IO =3D 1 << 4,=0D };=0D # 1098 "./include/linux/irq.h"=0D struct irq_domain_chip_generic {=0D unsigned int irqs_per_chip;=0D unsigned int num_chips;=0D unsigned int irq_flags_to_clear;=0D unsigned int irq_flags_to_set;=0D enum irq_gc_flags gc_flags;=0D struct irq_chip_generic *gc[];=0D };=0D =0D =0D void irq_gc_noop(struct irq_data *d);=0D void irq_gc_mask_disable_reg(struct irq_data *d);=0D void irq_gc_mask_set_bit(struct irq_data *d);=0D void irq_gc_mask_clr_bit(struct irq_data *d);=0D void irq_gc_unmask_enable_reg(struct irq_data *d);=0D void irq_gc_ack_set_bit(struct irq_data *d);=0D void irq_gc_ack_clr_bit(struct irq_data *d);=0D void irq_gc_mask_disable_and_ack_set(struct irq_data *d);=0D void irq_gc_eoi(struct irq_data *d);=0D int irq_gc_set_wake(struct irq_data *d, unsigned int on);=0D =0D =0D int irq_map_generic_chip(struct irq_domain *d, unsigned int virq,=0D irq_hw_number_t hw_irq);=0D struct irq_chip_generic *=0D irq_alloc_generic_chip(const char *name, int nr_ct, unsigned int irq_base,= =0D void *reg_base, irq_flow_handler_t handler);=0D void irq_setup_generic_chip(struct irq_chip_generic *gc, u32 msk,=0D enum irq_gc_flags flags, unsigned int clr,=0D unsigned int set);=0D int irq_setup_alt_chip(struct irq_data *d, unsigned int type);=0D void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk,=0D unsigned int clr, unsigned int set);=0D =0D struct irq_chip_generic *=0D devm_irq_alloc_generic_chip(struct device *dev, const char *name, int num_c= t,=0D unsigned int irq_base, void *reg_base,=0D irq_flow_handler_t handler);=0D int devm_irq_setup_generic_chip(struct device *dev, struct irq_chip_generic= *gc,=0D u32 msk, enum irq_gc_flags flags,=0D unsigned int clr, unsigned int set);=0D =0D struct irq_chip_generic *irq_get_domain_generic_chip(struct irq_domain *d, = unsigned int hw_irq);=0D =0D int __irq_alloc_domain_generic_chips(struct irq_domain *d, int irqs_per_chi= p,=0D int num_ct, const char *name,=0D irq_flow_handler_t handler,=0D unsigned int clr, unsigned int set,=0D enum irq_gc_flags flags);=0D # 1156 "./include/linux/irq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_free_generic_chip(s= truct irq_chip_generic *gc)=0D {=0D kfree(gc);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_destroy_generic_chi= p(struct irq_chip_generic *gc,=0D u32 msk, unsigned int clr,=0D unsigned int set)=0D {=0D irq_remove_generic_chip(gc, msk, clr, set);=0D irq_free_generic_chip(gc);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_chip_type *irq_da= ta_get_chip_type(struct irq_data *d)=0D {=0D return ({ void *__mptr =3D (void *)(d->chip); _Static_assert(__builtin_typ= es_compatible_p(typeof(*(d->chip)), typeof(((struct irq_chip_type *)0)->chi= p)) || __builtin_types_compatible_p(typeof(*(d->chip)), typeof(void)), "poi= nter type mismatch in container_of()"); ((struct irq_chip_type *)(__mptr - = __builtin_offsetof(struct irq_chip_type, chip))); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_gc_lock(struct irq_= chip_generic *gc)=0D {=0D _raw_spin_lock(&gc->lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_gc_unlock(struct ir= q_chip_generic *gc)=0D {=0D _raw_spin_unlock(&gc->lock);=0D }=0D # 1201 "./include/linux/irq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irq_reg_writel(struct i= rq_chip_generic *gc,=0D u32 val, int reg_offset)=0D {=0D if (gc->reg_writel)=0D gc->reg_writel(val, gc->reg_base + reg_offset);=0D else=0D ({ __asm__ __volatile__ ("fence w,o" : : : "memory"); ((void)__raw_writel= (( u32)(( __le32)(__u32)((val))), ((gc->reg_base + reg_offset)))); mmiowb_s= et_pending(); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 irq_reg_readl(struct irq= _chip_generic *gc,=0D int reg_offset)=0D {=0D if (gc->reg_readl)=0D return gc->reg_readl(gc->reg_base + reg_offset);=0D else=0D return ({ u32 __v; do {} while (0); __v =3D ({ u32 __r =3D (( __u32)(__le= 32)(( __le32)__raw_readl(gc->reg_base + reg_offset))); __r; }); __asm__ __v= olatile__ ("fence i,r" : : : "memory"); __v; });=0D }=0D =0D struct irq_matrix;=0D struct irq_matrix *irq_alloc_matrix(unsigned int matrix_bits,=0D unsigned int alloc_start,=0D unsigned int alloc_end);=0D void irq_matrix_online(struct irq_matrix *m);=0D void irq_matrix_offline(struct irq_matrix *m);=0D void irq_matrix_assign_system(struct irq_matrix *m, unsigned int bit, bool = replace);=0D int irq_matrix_reserve_managed(struct irq_matrix *m, const struct cpumask *= msk);=0D void irq_matrix_remove_managed(struct irq_matrix *m, const struct cpumask *= msk);=0D int irq_matrix_alloc_managed(struct irq_matrix *m, const struct cpumask *ms= k,=0D unsigned int *mapped_cpu);=0D void irq_matrix_reserve(struct irq_matrix *m);=0D void irq_matrix_remove_reserved(struct irq_matrix *m);=0D int irq_matrix_alloc(struct irq_matrix *m, const struct cpumask *msk,=0D bool reserved, unsigned int *mapped_cpu);=0D void irq_matrix_free(struct irq_matrix *m, unsigned int cpu,=0D unsigned int bit, bool managed);=0D void irq_matrix_assign(struct irq_matrix *m, unsigned int bit);=0D unsigned int irq_matrix_available(struct irq_matrix *m, bool cpudown);=0D unsigned int irq_matrix_allocated(struct irq_matrix *m);=0D unsigned int irq_matrix_reserved(struct irq_matrix *m);=0D void irq_matrix_debug_show(struct seq_file *sf, struct irq_matrix *m, int i= nd);=0D =0D =0D =0D irq_hw_number_t ipi_get_hwirq(unsigned int irq, unsigned int cpu);=0D int __ipi_send_single(struct irq_desc *desc, unsigned int cpu);=0D int __ipi_send_mask(struct irq_desc *desc, const struct cpumask *dest);=0D int ipi_send_single(unsigned int virq, unsigned int cpu);=0D int ipi_send_mask(unsigned int virq, const struct cpumask *dest);=0D # 1259 "./include/linux/irq.h"=0D int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __= attribute__((__no_sanitize__("cfi"))) set_handle_irq(void (*handle_irq)(str= uct pt_regs *));=0D =0D =0D =0D =0D =0D extern void (*handle_arch_irq)(struct pt_regs *) __attribute__((__section__= (".data..ro_after_init")));=0D void generic_handle_arch_irq(struct pt_regs *regs);=0D # 18 "./include/asm-generic/hardirq.h" 2=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ack_bad_irq(unsigned in= t irq)=0D {=0D ({ do {} while (0); _printk("\001" "2" "unexpected IRQ trap at vector %02x= \n", irq); });=0D }=0D # 2 "./arch/riscv/include/generated/asm/hardirq.h" 2=0D # 12 "./include/linux/hardirq.h" 2=0D =0D extern void synchronize_irq(unsigned int irq);=0D extern bool synchronize_hardirq(unsigned int irq);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __rcu_irq_enter_check_t= ick(void) { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void rcu_irq_enter_check_tick(void)=0D {=0D if (context_tracking_enabled())=0D __rcu_irq_enter_check_tick();=0D }=0D # 55 "./include/linux/hardirq.h"=0D void irq_enter(void);=0D =0D =0D =0D void irq_enter_rcu(void);=0D # 83 "./include/linux/hardirq.h"=0D void irq_exit(void);=0D =0D =0D =0D =0D void irq_exit_rcu(void);=0D # 99 "./include/linux/hardirq.h"=0D extern void rcu_nmi_enter(void);=0D extern void rcu_nmi_exit(void);=0D # 12 "./include/linux/highmem.h" 2=0D =0D # 1 "././include/linux/highmem-internal.h" 1=0D # 20 "././include/linux/highmem-internal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kmap_local_fork(struct = task_struct *tsk) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kmap_assert_nomap(void)= { }=0D # 154 "././include/linux/highmem-internal.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *kmap_to_page(vo= id *addr)=0D {=0D return ((((struct page *)((kernel_map.page_offset - ((((((1UL) << (12)) / = sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabl= ed ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (= pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_p(sizeof(= struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struct page)) = =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) ? (((size= of(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struct page)) = - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(st= ruct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) : __order_= base_2(sizeof(struct page)) ))))))) + (((((({ unsigned long _x =3D (unsigne= d long)(addr); ((_x) >=3D kernel_map.page_offset && (!1 || (_x) < kernel_ma= p.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtabl= e_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? ((unsigned l= ong)(_x) - kernel_map.va_pa_offset) : ({ unsigned long _y =3D _x; (0 && _y = < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - kernel_map.va_kernel_x= ip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_kernel_pa_offset - 0);= }); })) >> (12)))))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap(struct page *page= )=0D {=0D do { __might_sleep("./include/linux/highmem-internal.h", 161); __cond_resc= hed(); } while (0);=0D return lowmem_page_address(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kunmap_high(struct page= *page) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kmap_flush_unused(void)= { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kunmap(struct page *pag= e)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_page(struct= page *page)=0D {=0D return lowmem_page_address(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_folio(struc= t folio *folio, size_t offset)=0D {=0D return lowmem_page_address(&folio->page) + offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_page_prot(s= truct page *page, pgprot_t prot)=0D {=0D return kmap_local_page(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_pfn(unsigne= d long pfn)=0D {=0D return kmap_local_page((((struct page *)((kernel_map.page_offset - ((((((1= UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (p= gtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_e= nabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_con= stant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof= (struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page))= - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof= (struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2= _u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) = + 1) : __order_base_2(sizeof(struct page)) ))))))) + (pfn)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kunmap_local(void *ad= dr)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_atomic(struct pag= e *page)=0D {=0D if (0)=0D migrate_disable();=0D else=0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whi= le (0);=0D pagefault_disable();=0D return lowmem_page_address(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_atomic_prot(struc= t page *page, pgprot_t prot)=0D {=0D return kmap_atomic(page);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_atomic_pfn(unsign= ed long pfn)=0D {=0D return kmap_atomic((((struct page *)((kernel_map.page_offset - ((((((1UL) = << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtab= le_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabl= ed ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constan= t_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(str= uct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1= ) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(str= uct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32= ((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1)= : __order_base_2(sizeof(struct page)) ))))))) + (pfn)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __kunmap_atomic(void *a= ddr)=0D {=0D =0D =0D =0D pagefault_enable();=0D if (0)=0D migrate_enable();=0D else=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whi= le (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int nr_free_highpag= es(void) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long totalhigh_page= s(void) { return 0UL; }=0D # 14 "./include/linux/highmem.h" 2=0D # 36 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap(struct page *page= );=0D # 45 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kunmap(struct page *pag= e);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *kmap_to_page(vo= id *addr);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kmap_flush_unused(void)= ;=0D # 96 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_page(struct= page *page);=0D # 133 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_local_folio(struc= t folio *folio, size_t offset);=0D # 146 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kmap_atomic(struct pag= e *page);=0D # 160 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int nr_free_highpag= es(void);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long totalhigh_page= s(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_anon_page(struct = vm_area_struct *vma, struct page *page, unsigned long vmaddr)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flush_kernel_vmap_range= (void *vaddr, int size)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void invalidate_kernel_vmap_= range(void *vaddr, int size)=0D {=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_user_highpage(str= uct page *page, unsigned long vaddr)=0D {=0D void *addr =3D kmap_local_page(page);=0D memset((addr), 0, ((1UL) << (12)));=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 27(void) ; if (!(!(__builtin_types_compatible_p(typeof((addr)), typeof(stru= ct page *))))) __compiletime_assert_227(); } while (0); __kunmap_local(addr= ); } while (0);=0D }=0D # 201 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *=0D alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,=0D unsigned long vaddr)=0D {=0D struct page *page =3D alloc_pages(((((( gfp_t)(0x400u|0x800u)) | (( gfp_t)= 0x40u) | (( gfp_t)0x80u) | (( gfp_t)0x100000u)) | (( gfp_t)0x02u)) | (( gfp= _t)0x08u) | (( gfp_t)0)), 0);=0D =0D if (page)=0D clear_user_highpage(page, vaddr);=0D =0D return page;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_highpage(struct p= age *page)=0D {=0D void *kaddr =3D kmap_local_page(page);=0D memset((kaddr), 0, ((1UL) << (12)));=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 28(void) ; if (!(!(__builtin_types_compatible_p(typeof((kaddr)), typeof(str= uct page *))))) __compiletime_assert_228(); } while (0); __kunmap_local(kad= dr); } while (0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tag_clear_highpage(stru= ct page *page)=0D {=0D }=0D # 237 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zero_user_segments(stru= ct page *page,=0D unsigned start1, unsigned end1,=0D unsigned start2, unsigned end2)=0D {=0D void *kaddr =3D kmap_local_page(page);=0D unsigned int i;=0D =0D do { if (__builtin_expect(!!(end1 > page_size(page) || end2 > page_size(pa= ge)), 0)) do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsectio= n __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 -= 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pop= section" : : "i" ("include/linux/highmem.h"), "i" (244), "i" (0), "i" (size= of(struct bug_entry))); } while (0); do { ; __builtin_unreachable(); } whil= e (0); } while (0); } while (0);=0D =0D if (end1 > start1)=0D memset(kaddr + start1, 0, end1 - start1);=0D =0D if (end2 > start2)=0D memset(kaddr + start2, 0, end2 - start2);=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 29(void) ; if (!(!(__builtin_types_compatible_p(typeof((kaddr)), typeof(str= uct page *))))) __compiletime_assert_229(); } while (0); __kunmap_local(kad= dr); } while (0);=0D for (i =3D 0; i < compound_nr(page); i++)=0D flush_dcache_page(page + i);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zero_user_segment(struc= t page *page,=0D unsigned start, unsigned end)=0D {=0D zero_user_segments(page, start, end, 0, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void zero_user(struct page *= page,=0D unsigned start, unsigned size)=0D {=0D zero_user_segments(page, start, start + size, 0, 0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_user_highpage(stru= ct page *to, struct page *from,=0D unsigned long vaddr, struct vm_area_struct *vma)=0D {=0D char *vfrom, *vto;=0D =0D vfrom =3D kmap_local_page(from);=0D vto =3D kmap_local_page(to);=0D memcpy((vto), (vfrom), ((1UL) << (12)));=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 30(void) ; if (!(!(__builtin_types_compatible_p(typeof((vto)), typeof(struc= t page *))))) __compiletime_assert_230(); } while (0); __kunmap_local(vto);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 31(void) ; if (!(!(__builtin_types_compatible_p(typeof((vfrom)), typeof(str= uct page *))))) __compiletime_assert_231(); } while (0); __kunmap_local(vfr= om); } while (0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_highpage(struct pa= ge *to, struct page *from)=0D {=0D char *vfrom, *vto;=0D =0D vfrom =3D kmap_local_page(from);=0D vto =3D kmap_local_page(to);=0D memcpy((vto), (vfrom), ((1UL) << (12)));=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 32(void) ; if (!(!(__builtin_types_compatible_p(typeof((vto)), typeof(struc= t page *))))) __compiletime_assert_232(); } while (0); __kunmap_local(vto);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 33(void) ; if (!(!(__builtin_types_compatible_p(typeof((vfrom)), typeof(str= uct page *))))) __compiletime_assert_233(); } while (0); __kunmap_local(vfr= om); } while (0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_page(struct page= *dst_page, size_t dst_off,=0D struct page *src_page, size_t src_off,=0D size_t len)=0D {=0D char *dst =3D kmap_local_page(dst_page);=0D char *src =3D kmap_local_page(src_page);=0D =0D do { if (__builtin_expect(!!(dst_off + len > ((1UL) << (12)) || src_off + = len > ((1UL) << (12))), 0)) do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/highmem.h"), "i" (308), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } while (0);=0D memcpy(dst + dst_off, src + src_off, len);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 34(void) ; if (!(!(__builtin_types_compatible_p(typeof((src)), typeof(struc= t page *))))) __compiletime_assert_234(); } while (0); __kunmap_local(src);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 35(void) ; if (!(!(__builtin_types_compatible_p(typeof((dst)), typeof(struc= t page *))))) __compiletime_assert_235(); } while (0); __kunmap_local(dst);= } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memmove_page(struct pag= e *dst_page, size_t dst_off,=0D struct page *src_page, size_t src_off,=0D size_t len)=0D {=0D char *dst =3D kmap_local_page(dst_page);=0D char *src =3D kmap_local_page(src_page);=0D =0D do { if (__builtin_expect(!!(dst_off + len > ((1UL) << (12)) || src_off + = len > ((1UL) << (12))), 0)) do { do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/linux/highmem.h"), "i" (321), = "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builtin_unr= eachable(); } while (0); } while (0); } while (0);=0D memmove(dst + dst_off, src + src_off, len);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 36(void) ; if (!(!(__builtin_types_compatible_p(typeof((src)), typeof(struc= t page *))))) __compiletime_assert_236(); } while (0); __kunmap_local(src);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 37(void) ; if (!(!(__builtin_types_compatible_p(typeof((dst)), typeof(struc= t page *))))) __compiletime_assert_237(); } while (0); __kunmap_local(dst);= } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memset_page(struct page= *page, size_t offset, int val,=0D size_t len)=0D {=0D char *addr =3D kmap_local_page(page);=0D =0D do { if (__builtin_expect(!!(offset + len > ((1UL) << (12))), 0)) do { do = { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw= \"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half= " " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" (= "include/linux/highmem.h"), "i" (332), "i" (0), "i" (sizeof(struct bug_entr= y))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0)= ; } while (0);=0D memset(addr + offset, val, len);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 38(void) ; if (!(!(__builtin_types_compatible_p(typeof((addr)), typeof(stru= ct page *))))) __compiletime_assert_238(); } while (0); __kunmap_local(addr= ); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_from_page(char *= to, struct page *page,=0D size_t offset, size_t len)=0D {=0D char *from =3D kmap_local_page(page);=0D =0D do { if (__builtin_expect(!!(offset + len > ((1UL) << (12))), 0)) do { do = { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw= \"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half= " " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" (= "include/linux/highmem.h"), "i" (342), "i" (0), "i" (sizeof(struct bug_entr= y))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0)= ; } while (0);=0D memcpy(to, from + offset, len);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 39(void) ; if (!(!(__builtin_types_compatible_p(typeof((from)), typeof(stru= ct page *))))) __compiletime_assert_239(); } while (0); __kunmap_local(from= ); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_to_page(struct p= age *page, size_t offset,=0D const char *from, size_t len)=0D {=0D char *to =3D kmap_local_page(page);=0D =0D do { if (__builtin_expect(!!(offset + len > ((1UL) << (12))), 0)) do { do = { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw= \"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half= " " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" (= "include/linux/highmem.h"), "i" (352), "i" (0), "i" (sizeof(struct bug_entr= y))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0)= ; } while (0);=0D memcpy(to + offset, from, len);=0D flush_dcache_page(page);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 40(void) ; if (!(!(__builtin_types_compatible_p(typeof((to)), typeof(struct= page *))))) __compiletime_assert_240(); } while (0); __kunmap_local(to); }= while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memzero_page(struct pag= e *page, size_t offset, size_t len)=0D {=0D char *addr =3D kmap_local_page(page);=0D memset(addr + offset, 0, len);=0D flush_dcache_page(page);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 41(void) ; if (!(!(__builtin_types_compatible_p(typeof((addr)), typeof(stru= ct page *))))) __compiletime_assert_241(); } while (0); __kunmap_local(addr= ); } while (0);=0D }=0D # 374 "./include/linux/highmem.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_zero_segments(str= uct folio *folio,=0D size_t start1, size_t xend1, size_t start2, size_t xend2)=0D {=0D zero_user_segments(&folio->page, start1, xend1, start2, xend2);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_zero_segment(stru= ct folio *folio,=0D size_t start, size_t xend)=0D {=0D zero_user_segments(&folio->page, start, xend, 0, 0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_zero_range(struct= folio *folio,=0D size_t start, size_t length)=0D {=0D zero_user_segments(&folio->page, start, start + length, 0, 0);=0D }=0D # 11 "./include/linux/bvec.h" 2=0D =0D =0D =0D =0D =0D =0D =0D struct page;=0D # 32 "./include/linux/bvec.h"=0D struct bio_vec {=0D struct page *bv_page;=0D unsigned int bv_len;=0D unsigned int bv_offset;=0D };=0D =0D struct bvec_iter {=0D sector_t bi_sector;=0D =0D unsigned int bi_size;=0D =0D unsigned int bi_idx;=0D =0D unsigned int bi_bvec_done;=0D =0D } __attribute__((__packed__));=0D =0D struct bvec_iter_all {=0D struct bio_vec bv;=0D int idx;=0D unsigned done;=0D };=0D # 101 "./include/linux/bvec.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bvec_iter_advance(const= struct bio_vec *bv,=0D struct bvec_iter *iter, unsigned bytes)=0D {=0D unsigned int idx =3D iter->bi_idx;=0D =0D if (({ static bool __attribute__((__section__(".data.once"))) __already_do= ne; bool __ret_do_once =3D !!(bytes > iter->bi_size); if (__builtin_expect(= !!(__ret_do_once && !__already_done), 0)) { __already_done =3D true; ({ int= __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { = do { } while(0); __warn_printk("Attempted to advance past end of bvec iter\= n"); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_ta= ble,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t= " ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" := : "i" ("include/linux/bvec.h"), "i" (107), "i" ((1 << 0)|((1 << 3) | ((9) = << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } w= hile (0); __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!= (__ret_do_once), 0); })) {=0D =0D iter->bi_size =3D 0;=0D return false;=0D }=0D =0D iter->bi_size -=3D bytes;=0D bytes +=3D iter->bi_bvec_done;=0D =0D while (bytes && bytes >=3D bv[idx].bv_len) {=0D bytes -=3D bv[idx].bv_len;=0D idx++;=0D }=0D =0D iter->bi_idx =3D idx;=0D iter->bi_bvec_done =3D bytes;=0D return true;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bvec_iter_advance_singl= e(const struct bio_vec *bv,=0D struct bvec_iter *iter, unsigned int bytes)=0D {=0D unsigned int done =3D iter->bi_bvec_done + bytes;=0D =0D if (done =3D=3D bv[iter->bi_idx].bv_len) {=0D done =3D 0;=0D iter->bi_idx++;=0D }=0D iter->bi_bvec_done =3D done;=0D iter->bi_size -=3D bytes;=0D }=0D # 157 "./include/linux/bvec.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct bio_vec *bvec_init_it= er_all(struct bvec_iter_all *iter_all)=0D {=0D iter_all->done =3D 0;=0D iter_all->idx =3D 0;=0D =0D return &iter_all->bv;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bvec_advance(const stru= ct bio_vec *bvec,=0D struct bvec_iter_all *iter_all)=0D {=0D struct bio_vec *bv =3D &iter_all->bv;=0D =0D if (iter_all->done) {=0D bv->bv_page++;=0D bv->bv_offset =3D 0;=0D } else {=0D bv->bv_page =3D bvec->bv_page + (bvec->bv_offset >> (12));=0D bv->bv_offset =3D bvec->bv_offset & ~(~(((1UL) << (12)) - 1));=0D }=0D bv->bv_len =3D __builtin_choose_expr(((!!(sizeof((typeof((unsigned int)(((= 1UL) << (12)) - bv->bv_offset)) *)1 =3D=3D (typeof((unsigned int)(bvec->bv_= len - iter_all->done)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *= )((long)((unsigned int)(((1UL) << (12)) - bv->bv_offset)) * 0l)) : (int *)8= ))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned int)(bve= c->bv_len - iter_all->done)) * 0l)) : (int *)8))))), (((unsigned int)(((1UL= ) << (12)) - bv->bv_offset)) < ((unsigned int)(bvec->bv_len - iter_all->don= e)) ? ((unsigned int)(((1UL) << (12)) - bv->bv_offset)) : ((unsigned int)(b= vec->bv_len - iter_all->done))), ({ typeof((unsigned int)(((1UL) << (12)) -= bv->bv_offset)) __UNIQUE_ID___x242 =3D ((unsigned int)(((1UL) << (12)) - b= v->bv_offset)); typeof((unsigned int)(bvec->bv_len - iter_all->done)) __UNI= QUE_ID___y243 =3D ((unsigned int)(bvec->bv_len - iter_all->done)); ((__UNIQ= UE_ID___x242) < (__UNIQUE_ID___y243) ? (__UNIQUE_ID___x242) : (__UNIQUE_ID_= __y243)); }));=0D =0D iter_all->done +=3D bv->bv_len;=0D =0D if (iter_all->done =3D=3D bvec->bv_len) {=0D iter_all->idx++;=0D iter_all->done =3D 0;=0D }=0D }=0D # 194 "./include/linux/bvec.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *bvec_kmap_local(struct= bio_vec *bvec)=0D {=0D return kmap_local_page(bvec->bv_page) + bvec->bv_offset;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_from_bvec(char *= to, struct bio_vec *bvec)=0D {=0D memcpy_from_page(to, bvec->bv_page, bvec->bv_offset, bvec->bv_len);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcpy_to_bvec(struct b= io_vec *bvec, const char *from)=0D {=0D memcpy_to_page(bvec->bv_page, bvec->bv_offset, from, bvec->bv_len);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memzero_bvec(struct bio= _vec *bvec)=0D {=0D memzero_page(bvec->bv_page, bvec->bv_offset, bvec->bv_len);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *bvec_virt(struct bio_v= ec *bvec)=0D {=0D ({ int __ret_warn_on =3D !!(PageHighMem(bvec->bv_page)); if (__builtin_exp= ect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" = ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".= word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %= 3\n\t" ".popsection" : : "i" ("include/linux/bvec.h"), "i" (240), "i" ((1 <= < 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0)= ; __builtin_expect(!!(__ret_warn_on), 0); });=0D return lowmem_page_address(bvec->bv_page) + bvec->bv_offset;=0D }=0D # 18 "./include/linux/skbuff.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 25 "./include/linux/skbuff.h" 2=0D =0D =0D # 1 "./include/linux/textsearch.h" 1=0D # 11 "./include/linux/textsearch.h"=0D struct module;=0D =0D struct ts_config;=0D # 23 "./include/linux/textsearch.h"=0D struct ts_state=0D {=0D unsigned int offset;=0D char cb[48];=0D };=0D # 39 "./include/linux/textsearch.h"=0D struct ts_ops=0D {=0D const char *name;=0D struct ts_config * (*init)(const void *, unsigned int, gfp_t, int);=0D unsigned int (*find)(struct ts_config *,=0D struct ts_state *);=0D void (*destroy)(struct ts_config *);=0D void * (*get_pattern)(struct ts_config *);=0D unsigned int (*get_pattern_len)(struct ts_config *);=0D struct module *owner;=0D struct list_head list;=0D };=0D # 59 "./include/linux/textsearch.h"=0D struct ts_config=0D {=0D struct ts_ops *ops;=0D int flags;=0D # 76 "./include/linux/textsearch.h"=0D unsigned int (*get_next_block)(unsigned int consumed,=0D const u8 **dst,=0D struct ts_config *conf,=0D struct ts_state *state);=0D # 89 "./include/linux/textsearch.h"=0D void (*finish)(struct ts_config *conf,=0D struct ts_state *state);=0D };=0D # 105 "./include/linux/textsearch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int textsearch_next= (struct ts_config *conf,=0D struct ts_state *state)=0D {=0D unsigned int ret =3D conf->ops->find(conf, state);=0D =0D if (conf->finish)=0D conf->finish(conf, state);=0D =0D return ret;=0D }=0D # 124 "./include/linux/textsearch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int textsearch_find= (struct ts_config *conf,=0D struct ts_state *state)=0D {=0D state->offset =3D 0;=0D return textsearch_next(conf, state);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *textsearch_get_pattern= (struct ts_config *conf)=0D {=0D return conf->ops->get_pattern(conf);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int textsearch_get_= pattern_len(struct ts_config *conf)=0D {=0D return conf->ops->get_pattern_len(conf);=0D }=0D =0D extern int textsearch_register(struct ts_ops *);=0D extern int textsearch_unregister(struct ts_ops *);=0D extern struct ts_config *textsearch_prepare(const char *, const void *,=0D unsigned int, gfp_t, int);=0D extern void textsearch_destroy(struct ts_config *conf);=0D extern unsigned int textsearch_find_continuous(struct ts_config *,=0D struct ts_state *,=0D const void *, unsigned int);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ts_config *alloc_ts_c= onfig(size_t payload,=0D gfp_t gfp_mask)=0D {=0D struct ts_config *conf;=0D =0D conf =3D kzalloc((((sizeof(*conf)) + 8 -1) & ~(8 -1)) + payload, gfp_mask)= ;=0D if (conf =3D=3D ((void *)0))=0D return ERR_PTR(-12);=0D =0D return conf;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ts_config_priv(struct = ts_config *conf)=0D {=0D return ((u8 *) conf + (((sizeof(struct ts_config)) + 8 -1) & ~(8 -1)));=0D }=0D # 28 "./include/linux/skbuff.h" 2=0D # 1 "./include/net/checksum.h" 1=0D # 19 "./include/net/checksum.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/types.h" 1=0D # 20 "./include/net/checksum.h" 2=0D =0D =0D # 1 "./arch/riscv/include/generated/asm/checksum.h" 1=0D # 1 "./include/asm-generic/checksum.h" 1=0D # 17 "./include/asm-generic/checksum.h"=0D extern __wsum csum_partial(const void *buff, int len, __wsum sum);=0D =0D =0D =0D =0D =0D =0D extern __sum16 ip_fast_csum(const void *iph, unsigned int ihl);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16 csum_fold(__wsum csu= m)=0D {=0D u32 sum =3D ( u32)csum;=0D sum =3D (sum & 0xffff) + (sum >> 16);=0D sum =3D (sum & 0xffff) + (sum >> 16);=0D return ( __sum16)~sum;=0D }=0D =0D =0D =0D =0D =0D =0D =0D extern __wsum=0D csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len,=0D __u8 proto, __wsum sum);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16=0D csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len,=0D __u8 proto, __wsum sum)=0D {=0D return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));=0D }=0D =0D =0D =0D =0D =0D =0D extern __sum16 ip_compute_csum(const void *buff, int len);=0D # 2 "./arch/riscv/include/generated/asm/checksum.h" 2=0D # 23 "./include/net/checksum.h" 2=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D __wsum csum_and_copy_from_user (const void *src, void *dst,=0D int len)=0D {=0D if (copy_from_user(dst, src, len))=0D return 0;=0D return csum_partial(dst, len, ~0U);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum csum_and_copy_to_user=0D (const void *src, void *dst, int len)=0D {=0D __wsum sum =3D csum_partial(src, len, ~0U);=0D =0D if (copy_to_user(dst, src, len) =3D=3D 0)=0D return sum;=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum=0D csum_partial_copy_nocheck(const void *src, void *dst, int len)=0D {=0D memcpy(dst, src, len);=0D return csum_partial(dst, len, 0);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum csum_add(__wsum csum, __wsum addend)=0D {=0D u32 res =3D ( u32)csum;=0D res +=3D ( u32)addend;=0D return ( __wsum)(res + (res < ( u32)addend));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum csum_sub(__wsum csum, __wsum addend)=0D {=0D return csum_add(csum, ~addend);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __sum16 csum16_add(__sum16 csum, __be16 addend)=0D {=0D u16 res =3D ( u16)csum;=0D =0D res +=3D ( u16)addend;=0D return ( __sum16)(res + (res < ( u16)addend));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __sum16 csum16_sub(__sum16 csum, __be16 addend)=0D {=0D return csum16_add(csum, ~addend);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum csum_shift(__wsum sum, int offset)=0D {=0D =0D if (offset & 1)=0D return ( __wsum)ror32(( u32)sum, 8);=0D return sum;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum=0D csum_block_add(__wsum csum, __wsum csum2, int offset)=0D {=0D return csum_add(csum, csum_shift(csum2, offset));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum=0D csum_block_add_ext(__wsum csum, __wsum csum2, int offset, int len)=0D {=0D return csum_block_add(csum, csum2, offset);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum=0D csum_block_sub(__wsum csum, __wsum csum2, int offset)=0D {=0D return csum_block_add(csum, ~csum2, offset);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum csum_unfold(__sum16 n)=0D {=0D return ( __wsum)n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D __wsum csum_partial_ext(const void *buff, int len, __wsum sum)=0D {=0D return csum_partial(buff, len, sum);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void csum_replace_by_diff(__sum16 *sum, __wsum diff)=0D {=0D *sum =3D csum_fold(csum_add(diff, ~csum_unfold(*sum)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void csum_replace4(__sum16 *sum, __be32 from, __be32 to)=0D {=0D __wsum tmp =3D csum_sub(~csum_unfold(*sum), ( __wsum)from);=0D =0D *sum =3D csum_fold(csum_add(tmp, ( __wsum)to));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void csum_replace2(__sum16 *sum, __be16 old, __be16 new)=0D {=0D *sum =3D ~csum16_add(csum16_sub(~(*sum), old), new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void csum_replace(__wsum *cs= um, __wsum old, __wsum new)=0D {=0D *csum =3D csum_add(csum_sub(*csum, old), new);=0D }=0D =0D struct sk_buff;=0D void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb,=0D __be32 from, __be32 to, bool pseudohdr);=0D void inet_proto_csum_replace16(__sum16 *sum, struct sk_buff *skb,=0D const __be32 *from, const __be32 *to,=0D bool pseudohdr);=0D void inet_proto_csum_replace_by_diff(__sum16 *sum, struct sk_buff *skb,=0D __wsum diff, bool pseudohdr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb,=0D __be16 from, __be16 to, bool pseudohdr)=0D {=0D inet_proto_csum_replace4(sum, skb, ( __be32)from,=0D ( __be32)to, pseudohdr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum remcsum_adjust(void *ptr, __wsum csum,=0D int start, int offset)=0D {=0D __sum16 *psum =3D (__sum16 *)(ptr + offset);=0D __wsum delta;=0D =0D =0D csum =3D csum_sub(csum, csum_partial(ptr, start, 0));=0D =0D =0D delta =3D csum_sub(( __wsum)csum_fold(csum),=0D ( __wsum)*psum);=0D *psum =3D csum_fold(csum);=0D =0D return delta;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void remcsum_unadjust(__sum16 *psum, __wsum delta)=0D {=0D *psum =3D csum_fold(csum_sub(delta, ( __wsum)*psum));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __wsum wsum_negate(__wsum val)=0D {=0D return ( __wsum)-(( u32)val);=0D }=0D # 29 "./include/linux/skbuff.h" 2=0D =0D =0D # 1 "./include/linux/dma-mapping.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/device.h" 1=0D # 15 "./include/linux/device.h"=0D # 1 "./include/linux/dev_printk.h" 1=0D # 22 "./include/linux/dev_printk.h"=0D struct device;=0D =0D =0D =0D =0D struct dev_printk_info {=0D char subsystem[16];=0D char device[48];=0D };=0D =0D =0D =0D __attribute__((__format__(printf, 3, 0))) __attribute__((__cold__))=0D int dev_vprintk_emit(int level, const struct device *dev,=0D const char *fmt, va_list args);=0D __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__))=0D int dev_printk_emit(int level, const struct device *dev, const char *fmt, .= =2E.);=0D =0D __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__))=0D void _dev_printk(const char *level, const struct device *dev,=0D const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_emerg(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_alert(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_crit(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_err(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_warn(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_notice(const struct device *dev, const char *fmt, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void _dev_info(const struct device *dev, const char *fmt, ...);=0D # 16 "./include/linux/device.h" 2=0D # 1 "./include/linux/energy_model.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/device.h" 1=0D # 6 "./include/linux/energy_model.h" 2=0D =0D =0D =0D # 1 "./include/linux/sched/cpufreq.h" 1=0D # 10 "./include/linux/energy_model.h" 2=0D # 1 "./include/linux/sched/topology.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/sched/idle.h" 1=0D =0D =0D =0D =0D =0D =0D enum cpu_idle_type {=0D CPU_IDLE,=0D CPU_NOT_IDLE,=0D CPU_NEWLY_IDLE,=0D CPU_MAX_IDLE_TYPES=0D };=0D =0D =0D extern void wake_up_if_idle(int cpu);=0D # 63 "./include/linux/sched/idle.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __current_set_polling(v= oid) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __current_clr_polling(v= oid) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) current_set_polling_and_test(void)=0D {=0D return __builtin_expect(!!(test_ti_thread_flag(((struct thread_info *)get_= current()), 3)), 0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __attribute__((__warn_u= nused_result__)) current_clr_polling_and_test(void)=0D {=0D return __builtin_expect(!!(test_ti_thread_flag(((struct thread_info *)get_= current()), 3)), 0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void current_clr_polling(voi= d)=0D {=0D __current_clr_polling();=0D =0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D =0D do { if (test_ti_thread_flag(((struct thread_info *)get_current()), 3)) se= t_preempt_need_resched(); } while (0);=0D }=0D # 8 "./include/linux/sched/topology.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D enum {=0D =0D # 1 "./include/linux/sched/sd_flags.h" 1=0D # 51 "./include/linux/sched/sd_flags.h"=0D __SD_BALANCE_NEWIDLE,=0D =0D =0D =0D =0D =0D =0D =0D __SD_BALANCE_EXEC,=0D =0D =0D =0D =0D =0D =0D =0D __SD_BALANCE_FORK,=0D =0D =0D =0D =0D =0D =0D =0D __SD_BALANCE_WAKE,=0D =0D =0D =0D =0D =0D =0D __SD_WAKE_AFFINE,=0D # 91 "./include/linux/sched/sd_flags.h"=0D __SD_ASYM_CPUCAPACITY,=0D # 101 "./include/linux/sched/sd_flags.h"=0D __SD_ASYM_CPUCAPACITY_FULL,=0D # 110 "./include/linux/sched/sd_flags.h"=0D __SD_SHARE_CPUCAPACITY,=0D # 119 "./include/linux/sched/sd_flags.h"=0D __SD_SHARE_PKG_RESOURCES,=0D # 130 "./include/linux/sched/sd_flags.h"=0D __SD_SERIALIZE,=0D # 140 "./include/linux/sched/sd_flags.h"=0D __SD_ASYM_PACKING,=0D # 150 "./include/linux/sched/sd_flags.h"=0D __SD_PREFER_SIBLING,=0D =0D =0D =0D =0D =0D =0D =0D __SD_OVERLAP,=0D =0D =0D =0D =0D =0D =0D =0D __SD_NUMA,=0D # 18 "./include/linux/sched/topology.h" 2=0D __SD_FLAG_CNT,=0D };=0D =0D =0D =0D enum {=0D =0D # 1 "./include/linux/sched/sd_flags.h" 1=0D # 51 "./include/linux/sched/sd_flags.h"=0D SD_BALANCE_NEWIDLE =3D 1 << __SD_BALANCE_NEWIDLE,=0D =0D =0D =0D =0D =0D =0D =0D SD_BALANCE_EXEC =3D 1 << __SD_BALANCE_EXEC,=0D =0D =0D =0D =0D =0D =0D =0D SD_BALANCE_FORK =3D 1 << __SD_BALANCE_FORK,=0D =0D =0D =0D =0D =0D =0D =0D SD_BALANCE_WAKE =3D 1 << __SD_BALANCE_WAKE,=0D =0D =0D =0D =0D =0D =0D SD_WAKE_AFFINE =3D 1 << __SD_WAKE_AFFINE,=0D # 91 "./include/linux/sched/sd_flags.h"=0D SD_ASYM_CPUCAPACITY =3D 1 << __SD_ASYM_CPUCAPACITY,=0D # 101 "./include/linux/sched/sd_flags.h"=0D SD_ASYM_CPUCAPACITY_FULL =3D 1 << __SD_ASYM_CPUCAPACITY_FULL,=0D # 110 "./include/linux/sched/sd_flags.h"=0D SD_SHARE_CPUCAPACITY =3D 1 << __SD_SHARE_CPUCAPACITY,=0D # 119 "./include/linux/sched/sd_flags.h"=0D SD_SHARE_PKG_RESOURCES =3D 1 << __SD_SHARE_PKG_RESOURCES,=0D # 130 "./include/linux/sched/sd_flags.h"=0D SD_SERIALIZE =3D 1 << __SD_SERIALIZE,=0D # 140 "./include/linux/sched/sd_flags.h"=0D SD_ASYM_PACKING =3D 1 << __SD_ASYM_PACKING,=0D # 150 "./include/linux/sched/sd_flags.h"=0D SD_PREFER_SIBLING =3D 1 << __SD_PREFER_SIBLING,=0D =0D =0D =0D =0D =0D =0D =0D SD_OVERLAP =3D 1 << __SD_OVERLAP,=0D =0D =0D =0D =0D =0D =0D =0D SD_NUMA =3D 1 << __SD_NUMA,=0D # 25 "./include/linux/sched/topology.h" 2=0D };=0D =0D =0D =0D =0D struct sd_flag_debug {=0D unsigned int meta_flags;=0D char *name;=0D };=0D extern const struct sd_flag_debug sd_flag_debug[];=0D # 66 "./include/linux/sched/topology.h"=0D extern int arch_asym_cpu_priority(int cpu);=0D =0D struct sched_domain_attr {=0D int relax_domain_level;=0D };=0D =0D =0D =0D =0D =0D extern int sched_domain_level_max;=0D =0D struct sched_group;=0D =0D struct sched_domain_shared {=0D atomic_t ref;=0D atomic_t nr_busy_cpus;=0D int has_idle_cores;=0D };=0D =0D struct sched_domain {=0D =0D struct sched_domain *parent;=0D struct sched_domain *child;=0D struct sched_group *groups;=0D unsigned long min_interval;=0D unsigned long max_interval;=0D unsigned int busy_factor;=0D unsigned int imbalance_pct;=0D unsigned int cache_nice_tries;=0D unsigned int imb_numa_nr;=0D =0D int nohz_idle;=0D int flags;=0D int level;=0D =0D =0D unsigned long last_balance;=0D unsigned int balance_interval;=0D unsigned int nr_balance_failed;=0D =0D =0D u64 max_newidle_lb_cost;=0D unsigned long last_decay_max_lb_cost;=0D =0D u64 avg_scan_cost;=0D =0D =0D =0D unsigned int lb_count[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_failed[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_balanced[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_gained[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES];=0D unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES];=0D =0D =0D unsigned int alb_count;=0D unsigned int alb_failed;=0D unsigned int alb_pushed;=0D =0D =0D unsigned int sbe_count;=0D unsigned int sbe_balanced;=0D unsigned int sbe_pushed;=0D =0D =0D unsigned int sbf_count;=0D unsigned int sbf_balanced;=0D unsigned int sbf_pushed;=0D =0D =0D unsigned int ttwu_wake_remote;=0D unsigned int ttwu_move_affine;=0D unsigned int ttwu_move_balance;=0D =0D =0D char *name;=0D =0D union {=0D void *private;=0D struct callback_head rcu;=0D };=0D struct sched_domain_shared *shared;=0D =0D unsigned int span_weight;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long span[];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cpumask *sched_domain= _span(struct sched_domain *sd)=0D {=0D return ((struct cpumask *)(1 ? (sd->span) : (void *)sizeof(__check_is_bitm= ap(sd->span))));=0D }=0D =0D extern void partition_sched_domains_locked(int ndoms_new,=0D cpumask_var_t doms_new[],=0D struct sched_domain_attr *dattr_new);=0D =0D extern void partition_sched_domains(int ndoms_new, cpumask_var_t doms_new[]= ,=0D struct sched_domain_attr *dattr_new);=0D =0D =0D cpumask_var_t *alloc_sched_domains(unsigned int ndoms);=0D void free_sched_domains(cpumask_var_t doms[], unsigned int ndoms);=0D =0D bool cpus_share_cache(int this_cpu, int that_cpu);=0D =0D typedef const struct cpumask *(*sched_domain_mask_f)(int cpu);=0D typedef int (*sched_domain_flags_f)(void);=0D =0D =0D =0D struct sd_data {=0D struct sched_domain * *sd;=0D struct sched_domain_shared * *sds;=0D struct sched_group * *sg;=0D struct sched_group_capacity * *sgc;=0D };=0D =0D struct sched_domain_topology_level {=0D sched_domain_mask_f mask;=0D sched_domain_flags_f sd_flags;=0D int flags;=0D int numa_level;=0D struct sd_data data;=0D =0D char *name;=0D =0D };=0D =0D extern void set_sched_topology(struct sched_domain_topology_level *tl);=0D # 239 "./include/linux/sched/topology.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rebuild_sched_domains_e= nergy(void)=0D {=0D }=0D # 255 "./include/linux/sched/topology.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D unsigned long arch_scale_cpu_capacity(int cpu)=0D {=0D return (1L << 10);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D unsigned long arch_scale_thermal_pressure(int cpu)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__))=0D void arch_update_thermal_pressure(const struct cpumask *cpus,=0D unsigned long capped_frequency)=0D { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int task_node(const struct t= ask_struct *p)=0D {=0D return ((void)(task_cpu(p)),0);=0D }=0D # 11 "./include/linux/energy_model.h" 2=0D # 22 "./include/linux/energy_model.h"=0D struct em_perf_state {=0D unsigned long frequency;=0D unsigned long power;=0D unsigned long cost;=0D unsigned long flags;=0D };=0D # 55 "./include/linux/energy_model.h"=0D struct em_perf_domain {=0D struct em_perf_state *table;=0D int nr_perf_states;=0D unsigned long flags;=0D unsigned long cpus[];=0D };=0D # 266 "./include/linux/energy_model.h"=0D struct em_data_callback {};=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,= =0D struct em_data_callback *cb, cpumask_t *span,=0D bool milliwatts)=0D {=0D return -22;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void em_dev_unregister_perf_= domain(struct device *dev)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct em_perf_domain *em_cp= u_get(int cpu)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct em_perf_domain *em_pd= _get(struct device *dev)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long em_cpu_energy(= struct em_perf_domain *pd,=0D unsigned long max_util, unsigned long sum_util,=0D unsigned long allowed_cpu_cap)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int em_pd_nr_perf_states(str= uct em_perf_domain *pd)=0D {=0D return 0;=0D }=0D # 17 "./include/linux/device.h" 2=0D # 1 "./include/linux/ioport.h" 1=0D # 21 "./include/linux/ioport.h"=0D struct resource {=0D resource_size_t start;=0D resource_size_t end;=0D const char *name;=0D unsigned long flags;=0D unsigned long desc;=0D struct resource *parent, *sibling, *child;=0D };=0D # 134 "./include/linux/ioport.h"=0D enum {=0D IORES_DESC_NONE =3D 0,=0D IORES_DESC_CRASH_KERNEL =3D 1,=0D IORES_DESC_ACPI_TABLES =3D 2,=0D IORES_DESC_ACPI_NV_STORAGE =3D 3,=0D IORES_DESC_PERSISTENT_MEMORY =3D 4,=0D IORES_DESC_PERSISTENT_MEMORY_LEGACY =3D 5,=0D IORES_DESC_DEVICE_PRIVATE_MEMORY =3D 6,=0D IORES_DESC_RESERVED =3D 7,=0D IORES_DESC_SOFT_RESERVED =3D 8,=0D };=0D =0D =0D =0D =0D enum {=0D IORES_MAP_SYSTEM_RAM =3D ((((1UL))) << (0)),=0D IORES_MAP_ENCRYPTED =3D ((((1UL))) << (1)),=0D };=0D # 185 "./include/linux/ioport.h"=0D extern struct resource ioport_resource;=0D extern struct resource iomem_resource;=0D =0D extern struct resource *request_resource_conflict(struct resource *root, st= ruct resource *new);=0D extern int request_resource(struct resource *root, struct resource *new);=0D extern int release_resource(struct resource *new);=0D void release_child_resources(struct resource *new);=0D extern void reserve_region_with_split(struct resource *root,=0D resource_size_t start, resource_size_t end,=0D const char *name);=0D extern struct resource *insert_resource_conflict(struct resource *parent, s= truct resource *new);=0D extern int insert_resource(struct resource *parent, struct resource *new);= =0D extern void insert_resource_expand_to_fit(struct resource *root, struct res= ource *new);=0D extern int remove_resource(struct resource *old);=0D extern void arch_remove_reservations(struct resource *avail);=0D extern int allocate_resource(struct resource *root, struct resource *new,=0D resource_size_t size, resource_size_t min,=0D resource_size_t max, resource_size_t align,=0D resource_size_t (*alignf)(void *,=0D const struct resource *,=0D resource_size_t,=0D resource_size_t),=0D void *alignf_data);=0D struct resource *lookup_resource(struct resource *root, resource_size_t sta= rt);=0D int adjust_resource(struct resource *res, resource_size_t start,=0D resource_size_t size);=0D resource_size_t resource_alignment(struct resource *res);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) resource_size_t resource_siz= e(const struct resource *res)=0D {=0D return res->end - res->start + 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long resource_type(= const struct resource *res)=0D {=0D return res->flags & 0x00001f00;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long resource_ext_t= ype(const struct resource *res)=0D {=0D return res->flags & 0x01000000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool resource_contains(struc= t resource *r1, struct resource *r2)=0D {=0D if (resource_type(r1) !=3D resource_type(r2))=0D return false;=0D if (r1->flags & 0x20000000 || r2->flags & 0x20000000)=0D return false;=0D return r1->start <=3D r2->start && r1->end >=3D r2->end;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool resource_overlaps(struc= t resource *r1, struct resource *r2)=0D {=0D return r1->start <=3D r2->end && r1->end >=3D r2->start;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D resource_intersection(struct resource *r1, struct resource *r2, struct reso= urce *r)=0D {=0D if (!resource_overlaps(r1, r2))=0D return false;=0D r->start =3D __builtin_choose_expr(((!!(sizeof((typeof(r1->start) *)1 =3D= =3D (typeof(r2->start) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *= )((long)(r1->start) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 = ? ((void *)((long)(r2->start) * 0l)) : (int *)8))))), ((r1->start) > (r2->s= tart) ? (r1->start) : (r2->start)), ({ typeof(r1->start) __UNIQUE_ID___x244= =3D (r1->start); typeof(r2->start) __UNIQUE_ID___y245 =3D (r2->start); ((_= _UNIQUE_ID___x244) > (__UNIQUE_ID___y245) ? (__UNIQUE_ID___x244) : (__UNIQU= E_ID___y245)); }));=0D r->end =3D __builtin_choose_expr(((!!(sizeof((typeof(r1->end) *)1 =3D=3D (= typeof(r2->end) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long= )(r1->end) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void = *)((long)(r2->end) * 0l)) : (int *)8))))), ((r1->end) < (r2->end) ? (r1->en= d) : (r2->end)), ({ typeof(r1->end) __UNIQUE_ID___x246 =3D (r1->end); typeo= f(r2->end) __UNIQUE_ID___y247 =3D (r2->end); ((__UNIQUE_ID___x246) < (__UNI= QUE_ID___y247) ? (__UNIQUE_ID___x246) : (__UNIQUE_ID___y247)); }));=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D resource_union(struct resource *r1, struct resource *r2, struct resource *r= )=0D {=0D if (!resource_overlaps(r1, r2))=0D return false;=0D r->start =3D __builtin_choose_expr(((!!(sizeof((typeof(r1->start) *)1 =3D= =3D (typeof(r2->start) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *= )((long)(r1->start) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 = ? ((void *)((long)(r2->start) * 0l)) : (int *)8))))), ((r1->start) < (r2->s= tart) ? (r1->start) : (r2->start)), ({ typeof(r1->start) __UNIQUE_ID___x248= =3D (r1->start); typeof(r2->start) __UNIQUE_ID___y249 =3D (r2->start); ((_= _UNIQUE_ID___x248) < (__UNIQUE_ID___y249) ? (__UNIQUE_ID___x248) : (__UNIQU= E_ID___y249)); }));=0D r->end =3D __builtin_choose_expr(((!!(sizeof((typeof(r1->end) *)1 =3D=3D (= typeof(r2->end) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long= )(r1->end) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void = *)((long)(r2->end) * 0l)) : (int *)8))))), ((r1->end) > (r2->end) ? (r1->en= d) : (r2->end)), ({ typeof(r1->end) __UNIQUE_ID___x250 =3D (r1->end); typeo= f(r2->end) __UNIQUE_ID___y251 =3D (r2->end); ((__UNIQUE_ID___x250) > (__UNI= QUE_ID___y251) ? (__UNIQUE_ID___x250) : (__UNIQUE_ID___y251)); }));=0D return true;=0D }=0D # 271 "./include/linux/ioport.h"=0D extern struct resource * __request_region(struct resource *,=0D resource_size_t start,=0D resource_size_t n,=0D const char *name, int flags);=0D =0D =0D =0D =0D =0D extern void __release_region(struct resource *, resource_size_t,=0D resource_size_t);=0D # 290 "./include/linux/ioport.h"=0D struct device;=0D =0D extern int devm_request_resource(struct device *dev, struct resource *root,= =0D struct resource *new);=0D extern void devm_release_resource(struct device *dev, struct resource *new)= ;=0D =0D =0D =0D =0D =0D =0D extern struct resource * __devm_request_region(struct device *dev,=0D struct resource *parent, resource_size_t start,=0D resource_size_t n, const char *name);=0D =0D =0D =0D =0D =0D =0D extern void __devm_release_region(struct device *dev, struct resource *pare= nt,=0D resource_size_t start, resource_size_t n);=0D extern int iomem_map_sanity_check(resource_size_t addr, unsigned long size)= ;=0D extern bool iomem_is_exclusive(u64 addr);=0D =0D extern int=0D walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages,=0D void *arg, int (*func)(unsigned long, unsigned long, void *));=0D extern int=0D walk_mem_res(u64 start, u64 end, void *arg,=0D int (*func)(struct resource *, void *));=0D extern int=0D walk_system_ram_res(u64 start, u64 end, void *arg,=0D int (*func)(struct resource *, void *));=0D extern int=0D walk_iomem_res_desc(unsigned long desc, unsigned long flags, u64 start, u64= end,=0D void *arg, int (*func)(struct resource *, void *));=0D =0D struct resource *devm_request_free_mem_region(struct device *dev,=0D struct resource *base, unsigned long size);=0D struct resource *request_free_mem_region(struct resource *base,=0D unsigned long size, const char *name);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void irqresource_disabled(st= ruct resource *res, u32 irq)=0D {=0D res->start =3D irq;=0D res->end =3D irq;=0D res->flags |=3D 0x00000400 | 0x10000000 | 0x20000000;=0D }=0D =0D extern struct address_space *iomem_get_mapping(void);=0D # 18 "./include/linux/device.h" 2=0D =0D # 1 "./include/linux/klist.h" 1=0D # 17 "./include/linux/klist.h"=0D struct klist_node;=0D struct klist {=0D spinlock_t k_lock;=0D struct list_head k_list;=0D void (*get)(struct klist_node *);=0D void (*put)(struct klist_node *);=0D } __attribute__ ((aligned (sizeof(void *))));=0D # 34 "./include/linux/klist.h"=0D extern void klist_init(struct klist *k, void (*get)(struct klist_node *),=0D void (*put)(struct klist_node *));=0D =0D struct klist_node {=0D void *n_klist;=0D struct list_head n_node;=0D struct kref n_ref;=0D };=0D =0D extern void klist_add_tail(struct klist_node *n, struct klist *k);=0D extern void klist_add_head(struct klist_node *n, struct klist *k);=0D extern void klist_add_behind(struct klist_node *n, struct klist_node *pos);= =0D extern void klist_add_before(struct klist_node *n, struct klist_node *pos);= =0D =0D extern void klist_del(struct klist_node *n);=0D extern void klist_remove(struct klist_node *n);=0D =0D extern int klist_node_attached(struct klist_node *n);=0D =0D =0D struct klist_iter {=0D struct klist *i_klist;=0D struct klist_node *i_cur;=0D };=0D =0D =0D extern void klist_iter_init(struct klist *k, struct klist_iter *i);=0D extern void klist_iter_init_node(struct klist *k, struct klist_iter *i,=0D struct klist_node *n);=0D extern void klist_iter_exit(struct klist_iter *i);=0D extern struct klist_node *klist_prev(struct klist_iter *i);=0D extern struct klist_node *klist_next(struct klist_iter *i);=0D # 20 "./include/linux/device.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/pm.h" 1=0D # 23 "./include/linux/pm.h"=0D extern void (*pm_power_off)(void);=0D extern void (*pm_power_off_prepare)(void);=0D =0D struct device;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_vt_switch_required(s= truct device *dev, bool required)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_vt_switch_unregister= (struct device *dev)=0D {=0D }=0D # 45 "./include/linux/pm.h"=0D extern const char power_group_name[];=0D =0D =0D =0D =0D typedef struct pm_message {=0D int event;=0D } pm_message_t;=0D # 278 "./include/linux/pm.h"=0D struct dev_pm_ops {=0D int (*prepare)(struct device *dev);=0D void (*complete)(struct device *dev);=0D int (*suspend)(struct device *dev);=0D int (*resume)(struct device *dev);=0D int (*freeze)(struct device *dev);=0D int (*thaw)(struct device *dev);=0D int (*poweroff)(struct device *dev);=0D int (*restore)(struct device *dev);=0D int (*suspend_late)(struct device *dev);=0D int (*resume_early)(struct device *dev);=0D int (*freeze_late)(struct device *dev);=0D int (*thaw_early)(struct device *dev);=0D int (*poweroff_late)(struct device *dev);=0D int (*restore_early)(struct device *dev);=0D int (*suspend_noirq)(struct device *dev);=0D int (*resume_noirq)(struct device *dev);=0D int (*freeze_noirq)(struct device *dev);=0D int (*thaw_noirq)(struct device *dev);=0D int (*poweroff_noirq)(struct device *dev);=0D int (*restore_noirq)(struct device *dev);=0D int (*runtime_suspend)(struct device *dev);=0D int (*runtime_resume)(struct device *dev);=0D int (*runtime_idle)(struct device *dev);=0D };=0D # 548 "./include/linux/pm.h"=0D enum rpm_status {=0D RPM_INVALID =3D -1,=0D RPM_ACTIVE =3D 0,=0D RPM_RESUMING,=0D RPM_SUSPENDED,=0D RPM_SUSPENDING,=0D };=0D # 571 "./include/linux/pm.h"=0D enum rpm_request {=0D RPM_REQ_NONE =3D 0,=0D RPM_REQ_IDLE,=0D RPM_REQ_SUSPEND,=0D RPM_REQ_AUTOSUSPEND,=0D RPM_REQ_RESUME,=0D };=0D =0D struct wakeup_source;=0D struct wake_irq;=0D struct pm_domain_data;=0D =0D struct pm_subsys_data {=0D spinlock_t lock;=0D unsigned int refcount;=0D =0D unsigned int clock_op_might_sleep;=0D struct mutex clock_mutex;=0D struct list_head clock_list;=0D =0D =0D struct pm_domain_data *domain_data;=0D =0D };=0D # 614 "./include/linux/pm.h"=0D struct dev_pm_info {=0D pm_message_t power_state;=0D unsigned int can_wakeup:1;=0D unsigned int async_suspend:1;=0D bool in_dpm_list:1;=0D bool is_prepared:1;=0D bool is_suspended:1;=0D bool is_noirq_suspended:1;=0D bool is_late_suspended:1;=0D bool no_pm:1;=0D bool early_init:1;=0D bool direct_complete:1;=0D u32 driver_flags;=0D spinlock_t lock;=0D # 638 "./include/linux/pm.h"=0D unsigned int should_wakeup:1;=0D =0D =0D struct hrtimer suspend_timer;=0D u64 timer_expires;=0D struct work_struct work;=0D wait_queue_head_t wait_queue;=0D struct wake_irq *wakeirq;=0D atomic_t usage_count;=0D atomic_t child_count;=0D unsigned int disable_depth:3;=0D unsigned int idle_notification:1;=0D unsigned int request_pending:1;=0D unsigned int deferred_resume:1;=0D unsigned int needs_force_resume:1;=0D unsigned int runtime_auto:1;=0D bool ignore_children:1;=0D unsigned int no_callbacks:1;=0D unsigned int irq_safe:1;=0D unsigned int use_autosuspend:1;=0D unsigned int timer_autosuspends:1;=0D unsigned int memalloc_noio:1;=0D unsigned int links_count;=0D enum rpm_request request;=0D enum rpm_status runtime_status;=0D enum rpm_status last_status;=0D int runtime_error;=0D int autosuspend_delay;=0D u64 last_busy;=0D u64 active_time;=0D u64 suspended_time;=0D u64 accounting_timestamp;=0D =0D struct pm_subsys_data *subsys_data;=0D void (*set_latency_tolerance)(struct device *, s32);=0D struct dev_pm_qos *qos;=0D };=0D =0D extern int dev_pm_get_subsys_data(struct device *dev);=0D extern void dev_pm_put_subsys_data(struct device *dev);=0D # 693 "./include/linux/pm.h"=0D struct dev_pm_domain {=0D struct dev_pm_ops ops;=0D int (*start)(struct device *dev);=0D void (*detach)(struct device *dev, bool power_off);=0D int (*activate)(struct device *dev);=0D void (*sync)(struct device *dev);=0D void (*dismiss)(struct device *dev);=0D };=0D # 812 "./include/linux/pm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dpm_suspend_start(pm_mes= sage_t state)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_pm_wait_for_dev(s= truct device *a, struct device *b)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dpm_for_each_dev(void *= data, void (*fn)(struct device *, void *))=0D {=0D }=0D # 851 "./include/linux/pm.h"=0D enum dpm_order {=0D DPM_ORDER_NONE,=0D DPM_ORDER_DEV_AFTER_PARENT,=0D DPM_ORDER_PARENT_BEFORE_DEV,=0D DPM_ORDER_DEV_LAST,=0D };=0D # 26 "./include/linux/device.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/device/bus.h" 1=0D # 21 "./include/linux/device/bus.h"=0D struct device_driver;=0D struct fwnode_handle;=0D # 82 "./include/linux/device/bus.h"=0D struct bus_type {=0D const char *name;=0D const char *dev_name;=0D struct device *dev_root;=0D const struct attribute_group **bus_groups;=0D const struct attribute_group **dev_groups;=0D const struct attribute_group **drv_groups;=0D =0D int (*match)(struct device *dev, struct device_driver *drv);=0D int (*uevent)(struct device *dev, struct kobj_uevent_env *env);=0D int (*probe)(struct device *dev);=0D void (*sync_state)(struct device *dev);=0D void (*remove)(struct device *dev);=0D void (*shutdown)(struct device *dev);=0D =0D int (*online)(struct device *dev);=0D int (*offline)(struct device *dev);=0D =0D int (*suspend)(struct device *dev, pm_message_t state);=0D int (*resume)(struct device *dev);=0D =0D int (*num_vf)(struct device *dev);=0D =0D int (*dma_configure)(struct device *dev);=0D =0D const struct dev_pm_ops *pm;=0D =0D const struct iommu_ops *iommu_ops;=0D =0D struct subsys_private *p;=0D struct lock_class_key lock_key;=0D =0D bool need_parent_lock;=0D };=0D =0D extern int __attribute__((__warn_unused_result__)) bus_register(struct bus_= type *bus);=0D =0D extern void bus_unregister(struct bus_type *bus);=0D =0D extern int __attribute__((__warn_unused_result__)) bus_rescan_devices(struc= t bus_type *bus);=0D =0D struct bus_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct bus_type *bus, char *buf);=0D ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);=0D };=0D # 136 "./include/linux/device/bus.h"=0D extern int __attribute__((__warn_unused_result__)) bus_create_file(struct b= us_type *,=0D struct bus_attribute *);=0D extern void bus_remove_file(struct bus_type *, struct bus_attribute *);=0D =0D =0D int device_match_name(struct device *dev, const void *name);=0D int device_match_of_node(struct device *dev, const void *np);=0D int device_match_fwnode(struct device *dev, const void *fwnode);=0D int device_match_devt(struct device *dev, const void *pdevt);=0D int device_match_acpi_dev(struct device *dev, const void *adev);=0D int device_match_acpi_handle(struct device *dev, const void *handle);=0D int device_match_any(struct device *dev, const void *unused);=0D =0D =0D struct subsys_dev_iter {=0D struct klist_iter ki;=0D const struct device_type *type;=0D };=0D void subsys_dev_iter_init(struct subsys_dev_iter *iter,=0D struct bus_type *subsys,=0D struct device *start,=0D const struct device_type *type);=0D struct device *subsys_dev_iter_next(struct subsys_dev_iter *iter);=0D void subsys_dev_iter_exit(struct subsys_dev_iter *iter);=0D =0D int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data= ,=0D int (*fn)(struct device *dev, void *data));=0D struct device *bus_find_device(struct bus_type *bus, struct device *start,= =0D const void *data,=0D int (*match)(struct device *dev, const void *data));=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *bus_find_devi= ce_by_name(struct bus_type *bus,=0D struct device *start,=0D const char *name)=0D {=0D return bus_find_device(bus, start, name, device_match_name);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D bus_find_device_by_of_node(struct bus_type *bus, const struct device_node *= np)=0D {=0D return bus_find_device(bus, ((void *)0), np, device_match_of_node);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D bus_find_device_by_fwnode(struct bus_type *bus, const struct fwnode_handle = *fwnode)=0D {=0D return bus_find_device(bus, ((void *)0), fwnode, device_match_fwnode);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *bus_find_devi= ce_by_devt(struct bus_type *bus,=0D dev_t devt)=0D {=0D return bus_find_device(bus, ((void *)0), &devt, device_match_devt);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D bus_find_next_device(struct bus_type *bus,struct device *cur)=0D {=0D return bus_find_device(bus, cur, ((void *)0), device_match_any);=0D }=0D # 243 "./include/linux/device/bus.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D bus_find_device_by_acpi_dev(struct bus_type *bus, const void *adev)=0D {=0D return ((void *)0);=0D }=0D =0D =0D struct device *subsys_find_device_by_id(struct bus_type *bus, unsigned int = id,=0D struct device *hint);=0D int bus_for_each_drv(struct bus_type *bus, struct device_driver *start,=0D void *data, int (*fn)(struct device_driver *, void *));=0D void bus_sort_breadthfirst(struct bus_type *bus,=0D int (*compare)(const struct device *a,=0D const struct device *b));=0D =0D =0D =0D =0D =0D =0D struct notifier_block;=0D =0D extern int bus_register_notifier(struct bus_type *bus,=0D struct notifier_block *nb);=0D extern int bus_unregister_notifier(struct bus_type *bus,=0D struct notifier_block *nb);=0D # 286 "./include/linux/device/bus.h"=0D extern struct kset *bus_get_kset(struct bus_type *bus);=0D extern struct klist *bus_get_device_klist(struct bus_type *bus);=0D # 31 "./include/linux/device.h" 2=0D # 1 "./include/linux/device/class.h" 1=0D # 22 "./include/linux/device/class.h"=0D struct device;=0D struct fwnode_handle;=0D # 54 "./include/linux/device/class.h"=0D struct class {=0D const char *name;=0D struct module *owner;=0D =0D const struct attribute_group **class_groups;=0D const struct attribute_group **dev_groups;=0D struct kobject *dev_kobj;=0D =0D int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);=0D char *(*devnode)(struct device *dev, umode_t *mode);=0D =0D void (*class_release)(struct class *class);=0D void (*dev_release)(struct device *dev);=0D =0D int (*shutdown_pre)(struct device *dev);=0D =0D const struct kobj_ns_type_operations *ns_type;=0D const void *(*namespace)(struct device *dev);=0D =0D void (*get_ownership)(struct device *dev, kuid_t *uid, kgid_t *gid);=0D =0D const struct dev_pm_ops *pm;=0D =0D struct subsys_private *p;=0D };=0D =0D struct class_dev_iter {=0D struct klist_iter ki;=0D const struct device_type *type;=0D };=0D =0D extern struct kobject *sysfs_dev_block_kobj;=0D extern struct kobject *sysfs_dev_char_kobj;=0D extern int __attribute__((__warn_unused_result__)) __class_register(struct = class *class,=0D struct lock_class_key *key);=0D extern void class_unregister(struct class *class);=0D # 99 "./include/linux/device/class.h"=0D struct class_compat;=0D struct class_compat *class_compat_register(const char *name);=0D void class_compat_unregister(struct class_compat *cls);=0D int class_compat_create_link(struct class_compat *cls, struct device *dev,= =0D struct device *device_link);=0D void class_compat_remove_link(struct class_compat *cls, struct device *dev,= =0D struct device *device_link);=0D =0D extern void class_dev_iter_init(struct class_dev_iter *iter,=0D struct class *class,=0D struct device *start,=0D const struct device_type *type);=0D extern struct device *class_dev_iter_next(struct class_dev_iter *iter);=0D extern void class_dev_iter_exit(struct class_dev_iter *iter);=0D =0D extern int class_for_each_device(struct class *class, struct device *start,= =0D void *data,=0D int (*fn)(struct device *dev, void *data));=0D extern struct device *class_find_device(struct class *class,=0D struct device *start, const void *data,=0D int (*match)(struct device *, const void *));=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *class_find_de= vice_by_name(struct class *class,=0D const char *name)=0D {=0D return class_find_device(class, ((void *)0), name, device_match_name);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D class_find_device_by_of_node(struct class *class, const struct device_node = *np)=0D {=0D return class_find_device(class, ((void *)0), np, device_match_of_node);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D class_find_device_by_fwnode(struct class *class,=0D const struct fwnode_handle *fwnode)=0D {=0D return class_find_device(class, ((void *)0), fwnode, device_match_fwnode);= =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *class_find_de= vice_by_devt(struct class *class,=0D dev_t devt)=0D {=0D return class_find_device(class, ((void *)0), &devt, device_match_devt);=0D }=0D # 184 "./include/linux/device/class.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D class_find_device_by_acpi_dev(struct class *class, const void *adev)=0D {=0D return ((void *)0);=0D }=0D =0D =0D struct class_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct class *class, struct class_attribute *attr,=0D char *buf);=0D ssize_t (*store)(struct class *class, struct class_attribute *attr,=0D const char *buf, size_t count);=0D };=0D # 206 "./include/linux/device/class.h"=0D extern int __attribute__((__warn_unused_result__)) class_create_file_ns(str= uct class *class,=0D const struct class_attribute *attr,=0D const void *ns);=0D extern void class_remove_file_ns(struct class *class,=0D const struct class_attribute *attr,=0D const void *ns);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) class_create_file(struct class *class,=0D const struct class_attribute *attr)=0D {=0D return class_create_file_ns(class, attr, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void class_remove_file(struc= t class *class,=0D const struct class_attribute *attr)=0D {=0D return class_remove_file_ns(class, attr, ((void *)0));=0D }=0D =0D =0D struct class_attribute_string {=0D struct class_attribute attr;=0D char *str;=0D };=0D # 238 "./include/linux/device/class.h"=0D extern ssize_t show_class_attr_string(struct class *class, struct class_att= ribute *attr,=0D char *buf);=0D =0D struct class_interface {=0D struct list_head node;=0D struct class *class;=0D =0D int (*add_dev) (struct device *, struct class_interface *);=0D void (*remove_dev) (struct device *, struct class_interface *);=0D };=0D =0D extern int __attribute__((__warn_unused_result__)) class_interface_register= (struct class_interface *);=0D extern void class_interface_unregister(struct class_interface *);=0D =0D extern struct class * __attribute__((__warn_unused_result__)) __class_creat= e(struct module *owner,=0D const char *name,=0D struct lock_class_key *key);=0D extern void class_destroy(struct class *cls);=0D # 32 "./include/linux/device.h" 2=0D # 1 "./include/linux/device/driver.h" 1=0D # 21 "./include/linux/device/driver.h"=0D # 1 "./include/linux/module.h" 1=0D # 14 "./include/linux/module.h"=0D # 1 "./include/linux/buildid.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D int build_id_parse(struct vm_area_struct *vma, unsigned char *build_id,=0D __u32 *size);=0D int build_id_parse_buf(const void *buf, unsigned char *build_id, u32 buf_si= ze);=0D =0D =0D extern unsigned char vmlinux_build_id[20];=0D void init_vmlinux_build_id(void);=0D # 15 "./include/linux/module.h" 2=0D =0D =0D # 1 "./include/linux/kmod.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/umh.h" 1=0D # 11 "./include/linux/umh.h"=0D struct cred;=0D struct file;=0D =0D =0D =0D =0D =0D =0D struct subprocess_info {=0D struct work_struct work;=0D struct completion *complete;=0D const char *path;=0D char **argv;=0D char **envp;=0D int wait;=0D int retval;=0D int (*init)(struct subprocess_info *info, struct cred *new);=0D void (*cleanup)(struct subprocess_info *info);=0D void *data;=0D } ;=0D =0D extern int=0D call_usermodehelper(const char *path, char **argv, char **envp, int wait);= =0D =0D extern struct subprocess_info *=0D call_usermodehelper_setup(const char *path, char **argv, char **envp,=0D gfp_t gfp_mask,=0D int (*init)(struct subprocess_info *info, struct cred *new),=0D void (*cleanup)(struct subprocess_info *), void *data);=0D =0D extern int=0D call_usermodehelper_exec(struct subprocess_info *info, int wait);=0D =0D extern struct ctl_table usermodehelper_table[];=0D =0D enum umh_disable_depth {=0D UMH_ENABLED =3D 0,=0D UMH_FREEZING,=0D UMH_DISABLED,=0D };=0D =0D extern int __usermodehelper_disable(enum umh_disable_depth depth);=0D extern void __usermodehelper_set_disable_depth(enum umh_disable_depth depth= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int usermodehelper_disable(v= oid)=0D {=0D return __usermodehelper_disable(UMH_DISABLED);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void usermodehelper_enable(v= oid)=0D {=0D __usermodehelper_set_disable_depth(UMH_ENABLED);=0D }=0D =0D extern int usermodehelper_read_trylock(void);=0D extern long usermodehelper_read_lock_wait(long timeout);=0D extern void usermodehelper_read_unlock(void);=0D # 10 "./include/linux/kmod.h" 2=0D # 20 "./include/linux/kmod.h"=0D extern char modprobe_path[];=0D =0D =0D extern __attribute__((__format__(printf, 2, 3)))=0D int __request_module(bool wait, const char *name, ...);=0D # 18 "./include/linux/module.h" 2=0D =0D # 1 "./include/linux/elf.h" 1=0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/elf.h" 1=0D # 11 "./arch/riscv/include/asm/elf.h"=0D # 1 "./arch/riscv/include/uapi/asm/elf.h" 1=0D # 18 "./arch/riscv/include/uapi/asm/elf.h"=0D typedef unsigned long elf_greg_t;=0D typedef struct user_regs_struct elf_gregset_t;=0D =0D =0D =0D typedef __u64 elf_fpreg_t;=0D typedef union __riscv_fp_state elf_fpregset_t;=0D # 12 "./arch/riscv/include/asm/elf.h" 2=0D =0D =0D # 1 "./arch/riscv/include/asm/cacheinfo.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/cacheinfo.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct device_node;=0D struct attribute;=0D =0D enum cache_type {=0D CACHE_TYPE_NOCACHE =3D 0,=0D CACHE_TYPE_INST =3D ((((1UL))) << (0)),=0D CACHE_TYPE_DATA =3D ((((1UL))) << (1)),=0D CACHE_TYPE_SEPARATE =3D CACHE_TYPE_INST | CACHE_TYPE_DATA,=0D CACHE_TYPE_UNIFIED =3D ((((1UL))) << (2)),=0D };=0D =0D extern unsigned int coherency_max_size;=0D # 49 "./include/linux/cacheinfo.h"=0D struct cacheinfo {=0D unsigned int id;=0D enum cache_type type;=0D unsigned int level;=0D unsigned int coherency_line_size;=0D unsigned int number_of_sets;=0D unsigned int ways_of_associativity;=0D unsigned int physical_line_partition;=0D unsigned int size;=0D cpumask_t shared_cpu_map;=0D unsigned int attributes;=0D # 69 "./include/linux/cacheinfo.h"=0D void *fw_token;=0D bool disable_sysfs;=0D void *priv;=0D };=0D =0D struct cpu_cacheinfo {=0D struct cacheinfo *info_list;=0D unsigned int num_levels;=0D unsigned int num_leaves;=0D bool cpu_map_populated;=0D };=0D =0D struct cpu_cacheinfo *get_cpu_cacheinfo(unsigned int cpu);=0D int init_cache_level(unsigned int cpu);=0D int populate_cache_leaves(unsigned int cpu);=0D int cache_setup_acpi(unsigned int cpu);=0D # 94 "./include/linux/cacheinfo.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int acpi_find_last_cache_lev= el(unsigned int cpu)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D const struct attribute_group *cache_get_priv_group(struct cacheinfo *this_l= eaf);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_cpu_cacheinfo_id(int= cpu, int level)=0D {=0D struct cpu_cacheinfo *ci =3D get_cpu_cacheinfo(cpu);=0D int i;=0D =0D for (i =3D 0; i < ci->num_leaves; i++) {=0D if (ci->info_list[i].level =3D=3D level) {=0D if (ci->info_list[i].attributes & ((((1UL))) << (4)))=0D return ci->info_list[i].id;=0D return -1;=0D }=0D }=0D =0D return -1;=0D }=0D # 10 "./arch/riscv/include/asm/cacheinfo.h" 2=0D =0D struct riscv_cacheinfo_ops {=0D const struct attribute_group * (*get_priv_group)(struct cacheinfo=0D *this_leaf);=0D };=0D =0D void riscv_set_cacheinfo_ops(struct riscv_cacheinfo_ops *ops);=0D uintptr_t get_cache_size(u32 level, enum cache_type type);=0D uintptr_t get_cache_geometry(u32 level, enum cache_type type);=0D # 15 "./arch/riscv/include/asm/elf.h" 2=0D # 54 "./arch/riscv/include/asm/elf.h"=0D extern unsigned long elf_hwcap;=0D # 82 "./arch/riscv/include/asm/elf.h"=0D struct linux_binprm;=0D extern int arch_setup_additional_pages(struct linux_binprm *bprm,=0D int uses_interp);=0D # 7 "./include/linux/elf.h" 2=0D # 1 "./include/uapi/linux/elf.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/elf-em.h" 1=0D # 7 "./include/uapi/linux/elf.h" 2=0D =0D =0D typedef __u32 Elf32_Addr;=0D typedef __u16 Elf32_Half;=0D typedef __u32 Elf32_Off;=0D typedef __s32 Elf32_Sword;=0D typedef __u32 Elf32_Word;=0D =0D =0D typedef __u64 Elf64_Addr;=0D typedef __u16 Elf64_Half;=0D typedef __s16 Elf64_SHalf;=0D typedef __u64 Elf64_Off;=0D typedef __s32 Elf64_Sword;=0D typedef __u32 Elf64_Word;=0D typedef __u64 Elf64_Xword;=0D typedef __s64 Elf64_Sxword;=0D # 143 "./include/uapi/linux/elf.h"=0D typedef struct dynamic{=0D Elf32_Sword d_tag;=0D union{=0D Elf32_Sword d_val;=0D Elf32_Addr d_ptr;=0D } d_un;=0D } Elf32_Dyn;=0D =0D typedef struct {=0D Elf64_Sxword d_tag;=0D union {=0D Elf64_Xword d_val;=0D Elf64_Addr d_ptr;=0D } d_un;=0D } Elf64_Dyn;=0D # 166 "./include/uapi/linux/elf.h"=0D typedef struct elf32_rel {=0D Elf32_Addr r_offset;=0D Elf32_Word r_info;=0D } Elf32_Rel;=0D =0D typedef struct elf64_rel {=0D Elf64_Addr r_offset;=0D Elf64_Xword r_info;=0D } Elf64_Rel;=0D =0D typedef struct elf32_rela{=0D Elf32_Addr r_offset;=0D Elf32_Word r_info;=0D Elf32_Sword r_addend;=0D } Elf32_Rela;=0D =0D typedef struct elf64_rela {=0D Elf64_Addr r_offset;=0D Elf64_Xword r_info;=0D Elf64_Sxword r_addend;=0D } Elf64_Rela;=0D =0D typedef struct elf32_sym{=0D Elf32_Word st_name;=0D Elf32_Addr st_value;=0D Elf32_Word st_size;=0D unsigned char st_info;=0D unsigned char st_other;=0D Elf32_Half st_shndx;=0D } Elf32_Sym;=0D =0D typedef struct elf64_sym {=0D Elf64_Word st_name;=0D unsigned char st_info;=0D unsigned char st_other;=0D Elf64_Half st_shndx;=0D Elf64_Addr st_value;=0D Elf64_Xword st_size;=0D } Elf64_Sym;=0D =0D =0D =0D =0D typedef struct elf32_hdr{=0D unsigned char e_ident[16];=0D Elf32_Half e_type;=0D Elf32_Half e_machine;=0D Elf32_Word e_version;=0D Elf32_Addr e_entry;=0D Elf32_Off e_phoff;=0D Elf32_Off e_shoff;=0D Elf32_Word e_flags;=0D Elf32_Half e_ehsize;=0D Elf32_Half e_phentsize;=0D Elf32_Half e_phnum;=0D Elf32_Half e_shentsize;=0D Elf32_Half e_shnum;=0D Elf32_Half e_shstrndx;=0D } Elf32_Ehdr;=0D =0D typedef struct elf64_hdr {=0D unsigned char e_ident[16];=0D Elf64_Half e_type;=0D Elf64_Half e_machine;=0D Elf64_Word e_version;=0D Elf64_Addr e_entry;=0D Elf64_Off e_phoff;=0D Elf64_Off e_shoff;=0D Elf64_Word e_flags;=0D Elf64_Half e_ehsize;=0D Elf64_Half e_phentsize;=0D Elf64_Half e_phnum;=0D Elf64_Half e_shentsize;=0D Elf64_Half e_shnum;=0D Elf64_Half e_shstrndx;=0D } Elf64_Ehdr;=0D =0D =0D =0D =0D =0D =0D =0D typedef struct elf32_phdr{=0D Elf32_Word p_type;=0D Elf32_Off p_offset;=0D Elf32_Addr p_vaddr;=0D Elf32_Addr p_paddr;=0D Elf32_Word p_filesz;=0D Elf32_Word p_memsz;=0D Elf32_Word p_flags;=0D Elf32_Word p_align;=0D } Elf32_Phdr;=0D =0D typedef struct elf64_phdr {=0D Elf64_Word p_type;=0D Elf64_Word p_flags;=0D Elf64_Off p_offset;=0D Elf64_Addr p_vaddr;=0D Elf64_Addr p_paddr;=0D Elf64_Xword p_filesz;=0D Elf64_Xword p_memsz;=0D Elf64_Xword p_align;=0D } Elf64_Phdr;=0D # 308 "./include/uapi/linux/elf.h"=0D typedef struct elf32_shdr {=0D Elf32_Word sh_name;=0D Elf32_Word sh_type;=0D Elf32_Word sh_flags;=0D Elf32_Addr sh_addr;=0D Elf32_Off sh_offset;=0D Elf32_Word sh_size;=0D Elf32_Word sh_link;=0D Elf32_Word sh_info;=0D Elf32_Word sh_addralign;=0D Elf32_Word sh_entsize;=0D } Elf32_Shdr;=0D =0D typedef struct elf64_shdr {=0D Elf64_Word sh_name;=0D Elf64_Word sh_type;=0D Elf64_Xword sh_flags;=0D Elf64_Addr sh_addr;=0D Elf64_Off sh_offset;=0D Elf64_Xword sh_size;=0D Elf64_Word sh_link;=0D Elf64_Word sh_info;=0D Elf64_Xword sh_addralign;=0D Elf64_Xword sh_entsize;=0D } Elf64_Shdr;=0D # 444 "./include/uapi/linux/elf.h"=0D typedef struct elf32_note {=0D Elf32_Word n_namesz;=0D Elf32_Word n_descsz;=0D Elf32_Word n_type;=0D } Elf32_Nhdr;=0D =0D =0D typedef struct elf64_note {=0D Elf64_Word n_namesz;=0D Elf64_Word n_descsz;=0D Elf64_Word n_type;=0D } Elf64_Nhdr;=0D # 8 "./include/linux/elf.h" 2=0D # 52 "./include/linux/elf.h"=0D extern Elf64_Dyn _DYNAMIC [];=0D # 65 "./include/linux/elf.h"=0D struct file;=0D struct coredump_params;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int elf_coredump_extra_notes= _size(void) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int elf_coredump_extra_notes= _write(struct coredump_params *cprm) { return 0; }=0D # 81 "./include/linux/elf.h"=0D struct gnu_property {=0D u32 pr_type;=0D u32 pr_datasz;=0D };=0D =0D struct arch_elf_state;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_parse_elf_property(= u32 type, const void *data,=0D size_t datasz, bool compat,=0D struct arch_elf_state *arch)=0D {=0D return 0;=0D }=0D # 104 "./include/linux/elf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int arch_elf_adjust_prot(int= prot,=0D const struct arch_elf_state *state,=0D bool has_interp, bool is_interp)=0D {=0D return prot;=0D }=0D # 20 "./include/linux/module.h" 2=0D =0D =0D # 1 "./include/linux/moduleparam.h" 1=0D # 36 "./include/linux/moduleparam.h"=0D struct kernel_param;=0D =0D =0D =0D =0D =0D =0D enum {=0D KERNEL_PARAM_OPS_FL_NOARG =3D (1 << 0)=0D };=0D =0D struct kernel_param_ops {=0D =0D unsigned int flags;=0D =0D int (*set)(const char *val, const struct kernel_param *kp);=0D =0D int (*get)(char *buffer, const struct kernel_param *kp);=0D =0D void (*free)(void *arg);=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D KERNEL_PARAM_FL_UNSAFE =3D (1 << 0),=0D KERNEL_PARAM_FL_HWPARAM =3D (1 << 1),=0D };=0D =0D struct kernel_param {=0D const char *name;=0D struct module *mod;=0D const struct kernel_param_ops *ops;=0D const u16 perm;=0D s8 level;=0D u8 flags;=0D union {=0D void *arg;=0D const struct kparam_string *str;=0D const struct kparam_array *arr;=0D };=0D };=0D =0D extern const struct kernel_param __start___param[], __stop___param[];=0D =0D =0D struct kparam_string {=0D unsigned int maxlen;=0D char *string;=0D };=0D =0D =0D struct kparam_array=0D {=0D unsigned int max;=0D unsigned int elemsize;=0D unsigned int *num;=0D const struct kernel_param_ops *ops;=0D void *elem;=0D };=0D # 304 "./include/linux/moduleparam.h"=0D extern void kernel_param_lock(struct module *mod);=0D extern void kernel_param_unlock(struct module *mod);=0D # 372 "./include/linux/moduleparam.h"=0D extern bool parameq(const char *name1, const char *name2);=0D # 382 "./include/linux/moduleparam.h"=0D extern bool parameqn(const char *name1, const char *name2, size_t n);=0D =0D =0D extern char *parse_args(const char *name,=0D char *args,=0D const struct kernel_param *params,=0D unsigned num,=0D s16 level_min,=0D s16 level_max,=0D void *arg,=0D int (*unknown)(char *param, char *val,=0D const char *doing, void *arg));=0D =0D =0D =0D extern void destroy_params(const struct kernel_param *params, unsigned num)= ;=0D # 411 "./include/linux/moduleparam.h"=0D extern const struct kernel_param_ops param_ops_byte;=0D extern int param_set_byte(const char *val, const struct kernel_param *kp);= =0D extern int param_get_byte(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_short;=0D extern int param_set_short(const char *val, const struct kernel_param *kp);= =0D extern int param_get_short(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_ushort;=0D extern int param_set_ushort(const char *val, const struct kernel_param *kp)= ;=0D extern int param_get_ushort(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_int;=0D extern int param_set_int(const char *val, const struct kernel_param *kp);=0D extern int param_get_int(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_uint;=0D extern int param_set_uint(const char *val, const struct kernel_param *kp);= =0D extern int param_get_uint(char *buffer, const struct kernel_param *kp);=0D int param_set_uint_minmax(const char *val, const struct kernel_param *kp,=0D unsigned int min, unsigned int max);=0D =0D =0D extern const struct kernel_param_ops param_ops_long;=0D extern int param_set_long(const char *val, const struct kernel_param *kp);= =0D extern int param_get_long(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_ulong;=0D extern int param_set_ulong(const char *val, const struct kernel_param *kp);= =0D extern int param_get_ulong(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_ullong;=0D extern int param_set_ullong(const char *val, const struct kernel_param *kp)= ;=0D extern int param_get_ullong(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_hexint;=0D extern int param_set_hexint(const char *val, const struct kernel_param *kp)= ;=0D extern int param_get_hexint(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_charp;=0D extern int param_set_charp(const char *val, const struct kernel_param *kp);= =0D extern int param_get_charp(char *buffer, const struct kernel_param *kp);=0D extern void param_free_charp(void *arg);=0D =0D =0D =0D extern const struct kernel_param_ops param_ops_bool;=0D extern int param_set_bool(const char *val, const struct kernel_param *kp);= =0D extern int param_get_bool(char *buffer, const struct kernel_param *kp);=0D =0D =0D extern const struct kernel_param_ops param_ops_bool_enable_only;=0D extern int param_set_bool_enable_only(const char *val,=0D const struct kernel_param *kp);=0D =0D =0D =0D extern const struct kernel_param_ops param_ops_invbool;=0D extern int param_set_invbool(const char *val, const struct kernel_param *kp= );=0D extern int param_get_invbool(char *buffer, const struct kernel_param *kp);= =0D =0D =0D =0D extern const struct kernel_param_ops param_ops_bint;=0D extern int param_set_bint(const char *val, const struct kernel_param *kp);= =0D # 526 "./include/linux/moduleparam.h"=0D enum hwparam_type {=0D hwparam_ioport,=0D hwparam_iomem,=0D hwparam_ioport_or_iomem,=0D hwparam_irq,=0D hwparam_dma,=0D hwparam_dma_addr,=0D hwparam_other,=0D };=0D # 587 "./include/linux/moduleparam.h"=0D extern const struct kernel_param_ops param_array_ops;=0D =0D extern const struct kernel_param_ops param_ops_string;=0D extern int param_set_copystring(const char *val, const struct kernel_param = *);=0D extern int param_get_string(char *buffer, const struct kernel_param *kp);=0D =0D =0D =0D struct module;=0D =0D =0D extern int module_param_sysfs_setup(struct module *mod,=0D const struct kernel_param *kparam,=0D unsigned int num_params);=0D =0D extern void module_param_sysfs_remove(struct module *mod);=0D # 23 "./include/linux/module.h" 2=0D =0D =0D # 1 "./include/linux/rbtree_latch.h" 1=0D # 40 "./include/linux/rbtree_latch.h"=0D struct latch_tree_node {=0D struct rb_node node[2];=0D };=0D =0D struct latch_tree_root {=0D seqcount_latch_t seq;=0D struct rb_root tree[2];=0D };=0D # 64 "./include/linux/rbtree_latch.h"=0D struct latch_tree_ops {=0D bool (*less)(struct latch_tree_node *a, struct latch_tree_node *b);=0D int (*comp)(void *key, struct latch_tree_node *b);=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct latch_tree_node *=0D __lt_from_rb(struct rb_node *node, int idx)=0D {=0D return ({ void *__mptr =3D (void *)(node); _Static_assert(__builtin_types_= compatible_p(typeof(*(node)), typeof(((struct latch_tree_node *)0)->node[id= x])) || __builtin_types_compatible_p(typeof(*(node)), typeof(void)), "point= er type mismatch in container_of()"); ((struct latch_tree_node *)(__mptr - = __builtin_offsetof(struct latch_tree_node, node[idx]))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D __lt_insert(struct latch_tree_node *ltn, struct latch_tree_root *ltr, int i= dx,=0D bool (*less)(struct latch_tree_node *a, struct latch_tree_node *b))=0D {=0D struct rb_root *root =3D <r->tree[idx];=0D struct rb_node **link =3D &root->rb_node;=0D struct rb_node *node =3D <n->node[idx];=0D struct rb_node *parent =3D ((void *)0);=0D struct latch_tree_node *ltp;=0D =0D while (*link) {=0D parent =3D *link;=0D ltp =3D __lt_from_rb(parent, idx);=0D =0D if (less(ltn, ltp))=0D link =3D &parent->rb_left;=0D else=0D link =3D &parent->rb_right;=0D }=0D =0D rb_link_node_rcu(node, parent, link);=0D rb_insert_color(node, root);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D __lt_erase(struct latch_tree_node *ltn, struct latch_tree_root *ltr, int id= x)=0D {=0D rb_erase(<n->node[idx], <r->tree[idx]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct latch_tree_node *=0D __lt_find(void *key, struct latch_tree_root *ltr, int idx,=0D int (*comp)(void *key, struct latch_tree_node *node))=0D {=0D struct rb_node *node =3D ({ typeof(ltr->tree[idx].rb_node) __UNIQUE_ID_rcu= 252 =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_253(void) ; if (!((sizeof(ltr->tree[idx].rb_node) =3D=3D sizeof(char) |= | sizeof(ltr->tree[idx].rb_node) =3D=3D sizeof(short) || sizeof(ltr->tree[i= dx].rb_node) =3D=3D sizeof(int) || sizeof(ltr->tree[idx].rb_node) =3D=3D si= zeof(long)) || sizeof(ltr->tree[idx].rb_node) =3D=3D sizeof(long long))) __= compiletime_assert_253(); } while (0); (*(const volatile typeof( _Generic((= ltr->tree[idx].rb_node), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: (ltr->tree[idx].rb_node))) *)&(ltr->tree[idx].rb_node)); }); ((typeof(*= ltr->tree[idx].rb_node) *)(__UNIQUE_ID_rcu252)); });=0D struct latch_tree_node *ltn;=0D int c;=0D =0D while (node) {=0D ltn =3D __lt_from_rb(node, idx);=0D c =3D comp(key, ltn);=0D =0D if (c < 0)=0D node =3D ({ typeof(node->rb_left) __UNIQUE_ID_rcu254 =3D ({ do { __attri= bute__((__noreturn__)) extern void __compiletime_assert_255(void) ; if (!((= sizeof(node->rb_left) =3D=3D sizeof(char) || sizeof(node->rb_left) =3D=3D s= izeof(short) || sizeof(node->rb_left) =3D=3D sizeof(int) || sizeof(node->rb= _left) =3D=3D sizeof(long)) || sizeof(node->rb_left) =3D=3D sizeof(long lon= g))) __compiletime_assert_255(); } while (0); (*(const volatile typeof( _Ge= neric((node->rb_left), char: (char)0, unsigned char: (unsigned char)0, sign= ed char: (signed char)0, unsigned short: (unsigned short)0, signed short: (= signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, u= nsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long = long: (unsigned long long)0, signed long long: (signed long long)0, default= : (node->rb_left))) *)&(node->rb_left)); }); ((typeof(*node->rb_left) *)(__= UNIQUE_ID_rcu254)); });=0D else if (c > 0)=0D node =3D ({ typeof(node->rb_right) __UNIQUE_ID_rcu256 =3D ({ do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_257(void) ; if (!(= (sizeof(node->rb_right) =3D=3D sizeof(char) || sizeof(node->rb_right) =3D= =3D sizeof(short) || sizeof(node->rb_right) =3D=3D sizeof(int) || sizeof(no= de->rb_right) =3D=3D sizeof(long)) || sizeof(node->rb_right) =3D=3D sizeof(= long long))) __compiletime_assert_257(); } while (0); (*(const volatile typ= eof( _Generic((node->rb_right), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (node->rb_right))) *)&(node->rb_right)); }); ((typeof(*node->rb_= right) *)(__UNIQUE_ID_rcu256)); });=0D else=0D return ltn;=0D }=0D =0D return ((void *)0);=0D }=0D # 143 "./include/linux/rbtree_latch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D latch_tree_insert(struct latch_tree_node *node,=0D struct latch_tree_root *root,=0D const struct latch_tree_ops *ops)=0D {=0D raw_write_seqcount_latch(&root->seq);=0D __lt_insert(node, root, 0, ops->less);=0D raw_write_seqcount_latch(&root->seq);=0D __lt_insert(node, root, 1, ops->less);=0D }=0D # 170 "./include/linux/rbtree_latch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D latch_tree_erase(struct latch_tree_node *node,=0D struct latch_tree_root *root,=0D const struct latch_tree_ops *ops)=0D {=0D raw_write_seqcount_latch(&root->seq);=0D __lt_erase(node, root, 0);=0D raw_write_seqcount_latch(&root->seq);=0D __lt_erase(node, root, 1);=0D }=0D # 199 "./include/linux/rbtree_latch.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct latch_tree_node *=0D latch_tree_find(void *key, struct latch_tree_root *root,=0D const struct latch_tree_ops *ops)=0D {=0D struct latch_tree_node *node;=0D unsigned int seq;=0D =0D do {=0D seq =3D raw_read_seqcount_latch(&root->seq);=0D node =3D __lt_find(key, root, seq & 1, ops->comp);=0D } while (read_seqcount_latch_retry(&root->seq, seq));=0D =0D return node;=0D }=0D # 26 "./include/linux/module.h" 2=0D # 1 "./include/linux/error-injection.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/asm-generic/error-injection.h" 1=0D =0D =0D =0D =0D =0D enum {=0D EI_ETYPE_NONE,=0D EI_ETYPE_NULL,=0D EI_ETYPE_ERRNO,=0D EI_ETYPE_ERRNO_NULL,=0D EI_ETYPE_TRUE,=0D };=0D =0D struct error_injection_entry {=0D unsigned long addr;=0D int etype;=0D };=0D =0D struct pt_regs;=0D # 34 "./include/asm-generic/error-injection.h"=0D void override_function_with_return(struct pt_regs *regs);=0D # 7 "./include/linux/error-injection.h" 2=0D =0D =0D =0D extern bool within_error_injection_list(unsigned long addr);=0D extern int get_injectable_error_type(unsigned long addr);=0D # 27 "./include/linux/module.h" 2=0D =0D =0D =0D # 1 "./include/linux/cfi.h" 1=0D # 31 "./include/linux/module.h" 2=0D =0D =0D # 1 "./arch/riscv/include/asm/module.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/asm-generic/module.h" 1=0D # 8 "./arch/riscv/include/asm/module.h" 2=0D =0D struct module;=0D unsigned long module_emit_got_entry(struct module *mod, unsigned long val);= =0D unsigned long module_emit_plt_entry(struct module *mod, unsigned long val);= =0D =0D =0D struct mod_section {=0D Elf64_Shdr *shdr;=0D int num_entries;=0D int max_entries;=0D };=0D =0D struct mod_arch_specific {=0D struct mod_section got;=0D struct mod_section plt;=0D struct mod_section got_plt;=0D };=0D =0D struct got_entry {=0D unsigned long symbol_addr;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct got_entry emit_got_en= try(unsigned long val)=0D {=0D return (struct got_entry) {val};=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct got_entry *get_got_en= try(unsigned long val,=0D const struct mod_section *sec)=0D {=0D struct got_entry *got =3D (struct got_entry *)(sec->shdr->sh_addr);=0D int i;=0D for (i =3D 0; i < sec->num_entries; i++) {=0D if (got[i].symbol_addr =3D=3D val)=0D return &got[i];=0D }=0D return ((void *)0);=0D }=0D =0D struct plt_entry {=0D =0D =0D =0D =0D u32 insn_auipc;=0D u32 insn_ld;=0D u32 insn_jr;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct plt_entry emit_plt_en= try(unsigned long val,=0D unsigned long plt,=0D unsigned long got_plt)=0D {=0D # 79 "./arch/riscv/include/asm/module.h"=0D unsigned long offset =3D got_plt - plt;=0D u32 hi20 =3D (offset + 0x800) & 0xfffff000;=0D u32 lo12 =3D (offset - hi20);=0D return (struct plt_entry) {=0D 0x0017 | (0x5 << 7) | hi20,=0D 0x3003 | (lo12 << 20) | (0x5 << 15) | (0x6 << 7),=0D 0x0067 | (0x6 << 15)=0D };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int get_got_plt_idx(unsigned= long val, const struct mod_section *sec)=0D {=0D struct got_entry *got_plt =3D (struct got_entry *)sec->shdr->sh_addr;=0D int i;=0D for (i =3D 0; i < sec->num_entries; i++) {=0D if (got_plt[i].symbol_addr =3D=3D val)=0D return i;=0D }=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct plt_entry *get_plt_en= try(unsigned long val,=0D const struct mod_section *sec_plt,=0D const struct mod_section *sec_got_plt)=0D {=0D struct plt_entry *plt =3D (struct plt_entry *)sec_plt->shdr->sh_addr;=0D int got_plt_idx =3D get_got_plt_idx(val, sec_got_plt);=0D if (got_plt_idx >=3D 0)=0D return plt + got_plt_idx;=0D else=0D return ((void *)0);=0D }=0D # 34 "./include/linux/module.h" 2=0D =0D =0D =0D struct modversion_info {=0D unsigned long crc;=0D char name[(64 - sizeof(unsigned long))];=0D };=0D =0D struct module;=0D struct exception_table_entry;=0D =0D struct module_kobject {=0D struct kobject kobj;=0D struct module *mod;=0D struct kobject *drivers_dir;=0D struct module_param_attrs *mp;=0D struct completion *kobj_completion;=0D } ;=0D =0D struct module_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct module_attribute *, struct module_kobject *,=0D char *);=0D ssize_t (*store)(struct module_attribute *, struct module_kobject *,=0D const char *, size_t count);=0D void (*setup)(struct module *, const char *);=0D int (*test)(struct module *);=0D void (*free)(struct module *);=0D };=0D =0D struct module_version_attribute {=0D struct module_attribute mattr;=0D const char *module_name;=0D const char *version;=0D };=0D =0D extern ssize_t __modver_version_show(struct module_attribute *,=0D struct module_kobject *, char *);=0D =0D extern struct module_attribute module_uevent;=0D =0D =0D extern int init_module(void);=0D extern void cleanup_module(void);=0D # 296 "./include/linux/module.h"=0D struct notifier_block;=0D =0D =0D =0D extern int modules_disabled;=0D =0D void *__symbol_get(const char *symbol);=0D void *__symbol_get_gpl(const char *symbol);=0D =0D =0D =0D struct module_use {=0D struct list_head source_list;=0D struct list_head target_list;=0D struct module *source, *target;=0D };=0D =0D enum module_state {=0D MODULE_STATE_LIVE,=0D MODULE_STATE_COMING,=0D MODULE_STATE_GOING,=0D MODULE_STATE_UNFORMED,=0D };=0D =0D struct mod_tree_node {=0D struct module *mod;=0D struct latch_tree_node node;=0D };=0D =0D struct module_layout {=0D =0D void *base;=0D =0D unsigned int size;=0D =0D unsigned int text_size;=0D =0D unsigned int ro_size;=0D =0D unsigned int ro_after_init_size;=0D =0D =0D struct mod_tree_node mtn;=0D =0D };=0D # 349 "./include/linux/module.h"=0D struct mod_kallsyms {=0D Elf64_Sym *symtab;=0D unsigned int num_symtab;=0D char *strtab;=0D char *typetab;=0D };=0D # 365 "./include/linux/module.h"=0D struct module {=0D enum module_state state;=0D =0D =0D struct list_head list;=0D =0D =0D char name[(64 - sizeof(unsigned long))];=0D =0D =0D =0D =0D =0D =0D =0D struct module_kobject mkobj;=0D struct module_attribute *modinfo_attrs;=0D const char *version;=0D const char *srcversion;=0D struct kobject *holders_dir;=0D =0D =0D const struct kernel_symbol *syms;=0D const s32 *crcs;=0D unsigned int num_syms;=0D =0D =0D =0D =0D =0D =0D =0D struct mutex param_lock;=0D =0D struct kernel_param *kp;=0D unsigned int num_kp;=0D =0D =0D unsigned int num_gpl_syms;=0D const struct kernel_symbol *gpl_syms;=0D const s32 *gpl_crcs;=0D bool using_gplonly_symbols;=0D =0D =0D =0D =0D =0D =0D bool async_probe_requested;=0D =0D =0D unsigned int num_exentries;=0D struct exception_table_entry *extable;=0D =0D =0D int (*init)(void);=0D =0D =0D struct module_layout core_layout __attribute__((__aligned__((1 << 6))));=0D struct module_layout init_layout;=0D =0D =0D struct mod_arch_specific arch;=0D =0D unsigned long taints;=0D =0D =0D =0D unsigned num_bugs;=0D struct list_head bug_list;=0D struct bug_entry *bug_table;=0D =0D =0D =0D =0D struct mod_kallsyms *kallsyms;=0D struct mod_kallsyms core_kallsyms;=0D =0D =0D struct module_sect_attrs *sect_attrs;=0D =0D =0D struct module_notes_attrs *notes_attrs;=0D =0D =0D =0D =0D char *args;=0D =0D =0D =0D void *percpu;=0D unsigned int percpu_size;=0D =0D void *noinstr_text_start;=0D unsigned int noinstr_text_size;=0D =0D =0D unsigned int num_tracepoints;=0D tracepoint_ptr_t *tracepoints_ptrs;=0D =0D =0D unsigned int num_srcu_structs;=0D struct srcu_struct **srcu_struct_ptrs;=0D =0D =0D unsigned int num_bpf_raw_events;=0D struct bpf_raw_event_map *bpf_raw_events;=0D # 483 "./include/linux/module.h"=0D unsigned int num_trace_bprintk_fmt;=0D const char **trace_bprintk_fmt_start;=0D =0D =0D struct trace_event_call **trace_events;=0D unsigned int num_trace_events;=0D struct trace_eval_map **trace_evals;=0D unsigned int num_trace_evals;=0D =0D =0D unsigned int num_ftrace_callsites;=0D unsigned long *ftrace_callsites;=0D =0D =0D void *kprobes_text_start;=0D unsigned int kprobes_text_size;=0D unsigned long *kprobe_blacklist;=0D unsigned int num_kprobe_blacklist;=0D # 522 "./include/linux/module.h"=0D struct list_head source_list;=0D =0D struct list_head target_list;=0D =0D =0D void (*exit)(void);=0D =0D atomic_t refcnt;=0D # 539 "./include/linux/module.h"=0D struct error_injection_entry *ei_funcs;=0D unsigned int num_ei_funcs;=0D =0D } __attribute__((__aligned__((1 << 6)))) ;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long kallsyms_symbo= l_value(const Elf64_Sym *sym)=0D {=0D return sym->st_value;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool module_is_live(struct m= odule *mod)=0D {=0D return mod->state !=3D MODULE_STATE_GOING;=0D }=0D =0D struct module *__module_text_address(unsigned long addr);=0D struct module *__module_address(unsigned long addr);=0D bool is_module_address(unsigned long addr);=0D bool __is_module_percpu_address(unsigned long addr, unsigned long *can_addr= );=0D bool is_module_percpu_address(unsigned long addr);=0D bool is_module_text_address(unsigned long addr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool within_module_core(unsi= gned long addr,=0D const struct module *mod)=0D {=0D return (unsigned long)mod->core_layout.base <=3D addr &&=0D addr < (unsigned long)mod->core_layout.base + mod->core_layout.size= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool within_module_init(unsi= gned long addr,=0D const struct module *mod)=0D {=0D return (unsigned long)mod->init_layout.base <=3D addr &&=0D addr < (unsigned long)mod->init_layout.base + mod->init_layout.size= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool within_module(unsigned = long addr, const struct module *mod)=0D {=0D return within_module_init(addr, mod) || within_module_core(addr, mod);=0D }=0D =0D =0D struct module *find_module(const char *name);=0D =0D =0D =0D int module_get_kallsym(unsigned int symnum, unsigned long *value, char *typ= e,=0D char *name, char *module_name, int *exported);=0D =0D =0D unsigned long module_kallsyms_lookup_name(const char *name);=0D =0D extern void __attribute__((__noreturn__)) __module_put_and_kthread_exit(str= uct module *mod,=0D long code);=0D =0D =0D =0D int module_refcount(struct module *mod);=0D void __symbol_put(const char *symbol);=0D =0D void symbol_put_addr(void *addr);=0D =0D =0D =0D extern void __module_get(struct module *module);=0D =0D =0D =0D extern bool try_module_get(struct module *module);=0D =0D extern void module_put(struct module *module);=0D # 643 "./include/linux/module.h"=0D void *dereference_module_function_descriptor(struct module *mod, void *ptr)= ;=0D =0D =0D =0D =0D const char *module_address_lookup(unsigned long addr,=0D unsigned long *symbolsize,=0D unsigned long *offset,=0D char **modname, const unsigned char **modbuildid,=0D char *namebuf);=0D int lookup_module_symbol_name(unsigned long addr, char *symname);=0D int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, uns= igned long *offset, char *modname, char *name);=0D =0D int register_module_notifier(struct notifier_block *nb);=0D int unregister_module_notifier(struct notifier_block *nb);=0D =0D extern void print_modules(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool module_requested_async_= probing(struct module *module)=0D {=0D return module && module->async_probe_requested;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_livepatch_module(str= uct module *mod)=0D {=0D return false;=0D }=0D =0D =0D bool is_module_sig_enforced(void);=0D void set_module_sig_enforced(void);=0D # 824 "./include/linux/module.h"=0D extern struct kset *module_kset;=0D extern struct kobj_type module_ktype;=0D extern int module_sysfs_initialized;=0D # 836 "./include/linux/module.h"=0D void module_bug_finalize(const Elf64_Ehdr *, const Elf64_Shdr *,=0D struct module *);=0D void module_bug_cleanup(struct module *);=0D # 853 "./include/linux/module.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool retpoline_module_ok(boo= l has_retpoline)=0D {=0D return true;=0D }=0D # 865 "./include/linux/module.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool module_sig_ok(struct mo= dule *module)=0D {=0D return true;=0D }=0D =0D =0D int module_kallsyms_on_each_symbol(int (*fn)(void *, const char *,=0D struct module *, unsigned long),=0D void *data);=0D # 22 "./include/linux/device/driver.h" 2=0D # 45 "./include/linux/device/driver.h"=0D enum probe_type {=0D PROBE_DEFAULT_STRATEGY,=0D PROBE_PREFER_ASYNCHRONOUS,=0D PROBE_FORCE_SYNCHRONOUS,=0D };=0D # 96 "./include/linux/device/driver.h"=0D struct device_driver {=0D const char *name;=0D struct bus_type *bus;=0D =0D struct module *owner;=0D const char *mod_name;=0D =0D bool suppress_bind_attrs;=0D enum probe_type probe_type;=0D =0D const struct of_device_id *of_match_table;=0D const struct acpi_device_id *acpi_match_table;=0D =0D int (*probe) (struct device *dev);=0D void (*sync_state)(struct device *dev);=0D int (*remove) (struct device *dev);=0D void (*shutdown) (struct device *dev);=0D int (*suspend) (struct device *dev, pm_message_t state);=0D int (*resume) (struct device *dev);=0D const struct attribute_group **groups;=0D const struct attribute_group **dev_groups;=0D =0D const struct dev_pm_ops *pm;=0D void (*coredump) (struct device *dev);=0D =0D struct driver_private *p;=0D };=0D =0D =0D extern int __attribute__((__warn_unused_result__)) driver_register(struct d= evice_driver *drv);=0D extern void driver_unregister(struct device_driver *drv);=0D =0D extern struct device_driver *driver_find(const char *name,=0D struct bus_type *bus);=0D extern int driver_probe_done(void);=0D extern void wait_for_device_probe(void);=0D =0D =0D =0D struct driver_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct device_driver *driver, char *buf);=0D ssize_t (*store)(struct device_driver *driver, const char *buf,=0D size_t count);=0D };=0D # 149 "./include/linux/device/driver.h"=0D extern int __attribute__((__warn_unused_result__)) driver_create_file(struc= t device_driver *driver,=0D const struct driver_attribute *attr);=0D extern void driver_remove_file(struct device_driver *driver,=0D const struct driver_attribute *attr);=0D =0D extern int __attribute__((__warn_unused_result__)) driver_for_each_device(s= truct device_driver *drv,=0D struct device *start,=0D void *data,=0D int (*fn)(struct device *dev,=0D void *));=0D struct device *driver_find_device(struct device_driver *drv,=0D struct device *start, const void *data,=0D int (*match)(struct device *dev, const void *data));=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *driver_find_d= evice_by_name(struct device_driver *drv,=0D const char *name)=0D {=0D return driver_find_device(drv, ((void *)0), name, device_match_name);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D driver_find_device_by_of_node(struct device_driver *drv,=0D const struct device_node *np)=0D {=0D return driver_find_device(drv, ((void *)0), np, device_match_of_node);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D driver_find_device_by_fwnode(struct device_driver *drv,=0D const struct fwnode_handle *fwnode)=0D {=0D return driver_find_device(drv, ((void *)0), fwnode, device_match_fwnode);= =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *driver_find_d= evice_by_devt(struct device_driver *drv,=0D dev_t devt)=0D {=0D return driver_find_device(drv, ((void *)0), &devt, device_match_devt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *driver_find_n= ext_device(struct device_driver *drv,=0D struct device *start)=0D {=0D return driver_find_device(drv, start, ((void *)0), device_match_any);=0D }=0D # 233 "./include/linux/device/driver.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *=0D driver_find_device_by_acpi_dev(struct device_driver *drv, const void *adev)= =0D {=0D return ((void *)0);=0D }=0D =0D =0D extern int driver_deferred_probe_timeout;=0D void driver_deferred_probe_add(struct device *dev);=0D int driver_deferred_probe_check_state(struct device *dev);=0D void driver_init(void);=0D # 33 "./include/linux/device.h" 2=0D # 1 "./arch/riscv/include/generated/asm/device.h" 1=0D # 1 "./include/asm-generic/device.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct dev_archdata {=0D };=0D =0D struct pdev_archdata {=0D };=0D # 2 "./arch/riscv/include/generated/asm/device.h" 2=0D # 34 "./include/linux/device.h" 2=0D =0D struct device;=0D struct device_private;=0D struct device_driver;=0D struct driver_private;=0D struct module;=0D struct class;=0D struct subsys_private;=0D struct device_node;=0D struct fwnode_handle;=0D struct iommu_ops;=0D struct iommu_group;=0D struct dev_pin_info;=0D struct dev_iommu;=0D struct msi_device_data;=0D # 63 "./include/linux/device.h"=0D struct subsys_interface {=0D const char *name;=0D struct bus_type *subsys;=0D struct list_head node;=0D int (*add_dev)(struct device *dev, struct subsys_interface *sif);=0D void (*remove_dev)(struct device *dev, struct subsys_interface *sif);=0D };=0D =0D int subsys_interface_register(struct subsys_interface *sif);=0D void subsys_interface_unregister(struct subsys_interface *sif);=0D =0D int subsys_system_register(struct bus_type *subsys,=0D const struct attribute_group **groups);=0D int subsys_virtual_register(struct bus_type *subsys,=0D const struct attribute_group **groups);=0D # 88 "./include/linux/device.h"=0D struct device_type {=0D const char *name;=0D const struct attribute_group **groups;=0D int (*uevent)(struct device *dev, struct kobj_uevent_env *env);=0D char *(*devnode)(struct device *dev, umode_t *mode,=0D kuid_t *uid, kgid_t *gid);=0D void (*release)(struct device *dev);=0D =0D const struct dev_pm_ops *pm;=0D };=0D =0D =0D struct device_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct device *dev, struct device_attribute *attr,=0D char *buf);=0D ssize_t (*store)(struct device *dev, struct device_attribute *attr,=0D const char *buf, size_t count);=0D };=0D =0D struct dev_ext_attribute {=0D struct device_attribute attr;=0D void *var;=0D };=0D =0D ssize_t device_show_ulong(struct device *dev, struct device_attribute *attr= ,=0D char *buf);=0D ssize_t device_store_ulong(struct device *dev, struct device_attribute *att= r,=0D const char *buf, size_t count);=0D ssize_t device_show_int(struct device *dev, struct device_attribute *attr,= =0D char *buf);=0D ssize_t device_store_int(struct device *dev, struct device_attribute *attr,= =0D const char *buf, size_t count);=0D ssize_t device_show_bool(struct device *dev, struct device_attribute *attr,= =0D char *buf);=0D ssize_t device_store_bool(struct device *dev, struct device_attribute *attr= ,=0D const char *buf, size_t count);=0D # 154 "./include/linux/device.h"=0D int device_create_file(struct device *device,=0D const struct device_attribute *entry);=0D void device_remove_file(struct device *dev,=0D const struct device_attribute *attr);=0D bool device_remove_file_self(struct device *dev,=0D const struct device_attribute *attr);=0D int __attribute__((__warn_unused_result__)) device_create_bin_file(struct d= evice *dev,=0D const struct bin_attribute *attr);=0D void device_remove_bin_file(struct device *dev,=0D const struct bin_attribute *attr);=0D =0D =0D typedef void (*dr_release_t)(struct device *dev, void *res);=0D typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);= =0D =0D void *__devres_alloc_node(dr_release_t release, size_t size, gfp_t gfp,=0D int nid, const char *name) __attribute__((__malloc__));=0D =0D =0D =0D =0D =0D void devres_for_each_res(struct device *dev, dr_release_t release,=0D dr_match_t match, void *match_data,=0D void (*fn)(struct device *, void *, void *),=0D void *data);=0D void devres_free(void *res);=0D void devres_add(struct device *dev, void *res);=0D void *devres_find(struct device *dev, dr_release_t release,=0D dr_match_t match, void *match_data);=0D void *devres_get(struct device *dev, void *new_res,=0D dr_match_t match, void *match_data);=0D void *devres_remove(struct device *dev, dr_release_t release,=0D dr_match_t match, void *match_data);=0D int devres_destroy(struct device *dev, dr_release_t release,=0D dr_match_t match, void *match_data);=0D int devres_release(struct device *dev, dr_release_t release,=0D dr_match_t match, void *match_data);=0D =0D =0D void * __attribute__((__warn_unused_result__)) devres_open_group(struct dev= ice *dev, void *id, gfp_t gfp);=0D void devres_close_group(struct device *dev, void *id);=0D void devres_remove_group(struct device *dev, void *id);=0D int devres_release_group(struct device *dev, void *id);=0D =0D =0D void *devm_kmalloc(struct device *dev, size_t size, gfp_t gfp) __attribute_= _((__malloc__));=0D void *devm_krealloc(struct device *dev, void *ptr, size_t size,=0D gfp_t gfp) __attribute__((__warn_unused_result__));=0D __attribute__((__format__(printf, 3, 0))) char *devm_kvasprintf(struct devi= ce *dev, gfp_t gfp,=0D const char *fmt, va_list ap) __attribute__((__malloc__));=0D __attribute__((__format__(printf, 3, 4))) char *devm_kasprintf(struct devic= e *dev, gfp_t gfp,=0D const char *fmt, ...) __attribute__((__malloc__));=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *devm_kzalloc(struct de= vice *dev, size_t size, gfp_t gfp)=0D {=0D return devm_kmalloc(dev, size, gfp | (( gfp_t)0x100u));=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *devm_kmalloc_array(str= uct device *dev,=0D size_t n, size_t size, gfp_t flags)=0D {=0D size_t bytes;=0D =0D if (__builtin_expect(!!(__must_check_overflow(({ typeof(n) __a =3D (n); ty= peof(size) __b =3D (size); typeof(&bytes) __d =3D (&bytes); (void) (&__a = =3D=3D &__b); (void) (&__a =3D=3D __d); __builtin_mul_overflow(__a, __b, __= d); }))), 0))=0D return ((void *)0);=0D =0D return devm_kmalloc(dev, bytes, flags);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *devm_kcalloc(struct de= vice *dev,=0D size_t n, size_t size, gfp_t flags)=0D {=0D return devm_kmalloc_array(dev, n, size, flags | (( gfp_t)0x100u));=0D }=0D void devm_kfree(struct device *dev, const void *p);=0D char *devm_kstrdup(struct device *dev, const char *s, gfp_t gfp) __attribut= e__((__malloc__));=0D const char *devm_kstrdup_const(struct device *dev, const char *s, gfp_t gfp= );=0D void *devm_kmemdup(struct device *dev, const void *src, size_t len, gfp_t g= fp);=0D =0D unsigned long devm_get_free_pages(struct device *dev,=0D gfp_t gfp_mask, unsigned int order);=0D void devm_free_pages(struct device *dev, unsigned long addr);=0D =0D void *devm_ioremap_resource(struct device *dev,=0D const struct resource *res);=0D void *devm_ioremap_resource_wc(struct device *dev,=0D const struct resource *res);=0D =0D void *devm_of_iomap(struct device *dev,=0D struct device_node *node, int index,=0D resource_size_t *size);=0D =0D =0D int devm_add_action(struct device *dev, void (*action)(void *), void *data)= ;=0D void devm_remove_action(struct device *dev, void (*action)(void *), void *d= ata);=0D void devm_release_action(struct device *dev, void (*action)(void *), void *= data);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int devm_add_action_or_reset= (struct device *dev,=0D void (*action)(void *), void *data)=0D {=0D int ret;=0D =0D ret =3D devm_add_action(dev, action, data);=0D if (ret)=0D action(data);=0D =0D return ret;=0D }=0D # 276 "./include/linux/device.h"=0D void *__devm_alloc_percpu(struct device *dev, size_t size,=0D size_t align);=0D void devm_free_percpu(struct device *dev, void *pdata);=0D =0D struct device_dma_parameters {=0D =0D =0D =0D =0D unsigned int max_segment_size;=0D unsigned int min_align_mask;=0D unsigned long segment_boundary_mask;=0D };=0D # 299 "./include/linux/device.h"=0D enum device_link_state {=0D DL_STATE_NONE =3D -1,=0D DL_STATE_DORMANT =3D 0,=0D DL_STATE_AVAILABLE,=0D DL_STATE_CONSUMER_PROBE,=0D DL_STATE_ACTIVE,=0D DL_STATE_SUPPLIER_UNBIND,=0D };=0D # 338 "./include/linux/device.h"=0D enum dl_dev_state {=0D DL_DEV_NO_DRIVER =3D 0,=0D DL_DEV_PROBING,=0D DL_DEV_DRIVER_BOUND,=0D DL_DEV_UNBINDING,=0D };=0D # 354 "./include/linux/device.h"=0D enum device_removable {=0D DEVICE_REMOVABLE_NOT_SUPPORTED =3D 0,=0D DEVICE_REMOVABLE_UNKNOWN,=0D DEVICE_FIXED,=0D DEVICE_REMOVABLE,=0D };=0D # 368 "./include/linux/device.h"=0D struct dev_links_info {=0D struct list_head suppliers;=0D struct list_head consumers;=0D struct list_head defer_sync;=0D enum dl_dev_state status;=0D };=0D =0D =0D =0D =0D =0D =0D struct dev_msi_info {=0D =0D struct irq_domain *domain;=0D =0D =0D struct msi_device_data *data;=0D =0D };=0D # 486 "./include/linux/device.h"=0D struct device {=0D struct kobject kobj;=0D struct device *parent;=0D =0D struct device_private *p;=0D =0D const char *init_name;=0D const struct device_type *type;=0D =0D struct bus_type *bus;=0D struct device_driver *driver;=0D =0D void *platform_data;=0D =0D void *driver_data;=0D =0D =0D =0D =0D struct mutex mutex;=0D =0D =0D =0D struct dev_links_info links;=0D struct dev_pm_info power;=0D struct dev_pm_domain *pm_domain;=0D # 520 "./include/linux/device.h"=0D struct dev_msi_info msi;=0D =0D =0D =0D u64 *dma_mask;=0D u64 coherent_dma_mask;=0D =0D =0D =0D =0D u64 bus_dma_limit;=0D const struct bus_dma_region *dma_range_map;=0D =0D struct device_dma_parameters *dma_parms;=0D =0D struct list_head dma_pools;=0D =0D =0D struct dma_coherent_mem *dma_mem;=0D =0D =0D =0D =0D =0D =0D =0D struct io_tlb_mem *dma_io_tlb_mem;=0D =0D =0D struct dev_archdata archdata;=0D =0D struct device_node *of_node;=0D struct fwnode_handle *fwnode;=0D =0D =0D =0D =0D dev_t devt;=0D u32 id;=0D =0D spinlock_t devres_lock;=0D struct list_head devres_head;=0D =0D struct class *class;=0D const struct attribute_group **groups;=0D =0D void (*release)(struct device *dev);=0D struct iommu_group *iommu_group;=0D struct dev_iommu *iommu;=0D =0D enum device_removable removable;=0D =0D bool offline_disabled:1;=0D bool offline:1;=0D bool of_node_reused:1;=0D bool state_synced:1;=0D bool can_match:1;=0D # 585 "./include/linux/device.h"=0D };=0D # 601 "./include/linux/device.h"=0D struct device_link {=0D struct device *supplier;=0D struct list_head s_node;=0D struct device *consumer;=0D struct list_head c_node;=0D struct device link_dev;=0D enum device_link_state status;=0D u32 flags;=0D refcount_t rpm_active;=0D struct kref kref;=0D struct work_struct rm_work;=0D bool supplier_preactivated;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device *kobj_to_dev(s= truct kobject *kobj)=0D {=0D return ({ void *__mptr =3D (void *)(kobj); _Static_assert(__builtin_types_= compatible_p(typeof(*(kobj)), typeof(((struct device *)0)->kobj)) || __buil= tin_types_compatible_p(typeof(*(kobj)), typeof(void)), "pointer type mismat= ch in container_of()"); ((struct device *)(__mptr - __builtin_offsetof(stru= ct device, kobj))); });=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_iommu_mapped(str= uct device *dev)=0D {=0D return (dev->iommu_group !=3D ((void *)0));=0D }=0D =0D =0D =0D # 1 "./include/linux/pm_wakeup.h" 1=0D # 18 "./include/linux/pm_wakeup.h"=0D struct wake_irq;=0D # 43 "./include/linux/pm_wakeup.h"=0D struct wakeup_source {=0D const char *name;=0D int id;=0D struct list_head entry;=0D spinlock_t lock;=0D struct wake_irq *wakeirq;=0D struct timer_list timer;=0D unsigned long timer_expires;=0D ktime_t total_time;=0D ktime_t max_time;=0D ktime_t last_time;=0D ktime_t start_prevent_time;=0D ktime_t prevent_sleep_time;=0D unsigned long event_count;=0D unsigned long active_count;=0D unsigned long relax_count;=0D unsigned long expire_count;=0D unsigned long wakeup_count;=0D struct device *dev;=0D bool active:1;=0D bool autosleep_enabled:1;=0D };=0D # 123 "./include/linux/pm_wakeup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_set_wakeup_capab= le(struct device *dev, bool capable)=0D {=0D dev->power.can_wakeup =3D capable;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_can_wakeup(struc= t device *dev)=0D {=0D return dev->power.can_wakeup;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct wakeup_source *wakeup= _source_create(const char *name)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wakeup_source_destroy(s= truct wakeup_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wakeup_source_add(struc= t wakeup_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wakeup_source_remove(st= ruct wakeup_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct wakeup_source *wakeup= _source_register(struct device *dev,=0D const char *name)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wakeup_source_unregiste= r(struct wakeup_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_wakeup_enable(str= uct device *dev)=0D {=0D dev->power.should_wakeup =3D true;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_wakeup_disable(st= ruct device *dev)=0D {=0D dev->power.should_wakeup =3D false;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_set_wakeup_enable= (struct device *dev, bool enable)=0D {=0D dev->power.should_wakeup =3D enable;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_init_wakeup(struc= t device *dev, bool val)=0D {=0D device_set_wakeup_capable(dev, val);=0D device_set_wakeup_enable(dev, val);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_may_wakeup(struc= t device *dev)=0D {=0D return dev->power.can_wakeup && dev->power.should_wakeup;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_wakeup_path(stru= ct device *dev)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_set_wakeup_path(= struct device *dev) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __pm_stay_awake(struct = wakeup_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_stay_awake(struct de= vice *dev) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __pm_relax(struct wakeu= p_source *ws) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_relax(struct device = *dev) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_wakeup_ws_event(stru= ct wakeup_source *ws,=0D unsigned int msec, bool hard) {}=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_wakeup_dev_event(str= uct device *dev, unsigned int msec,=0D bool hard) {}=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __pm_wakeup_event(struc= t wakeup_source *ws, unsigned int msec)=0D {=0D return pm_wakeup_ws_event(ws, msec, false);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_wakeup_event(struct = device *dev, unsigned int msec)=0D {=0D return pm_wakeup_dev_event(dev, msec, false);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pm_wakeup_hard_event(st= ruct device *dev)=0D {=0D return pm_wakeup_dev_event(dev, 0, true);=0D }=0D # 632 "./include/linux/device.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *dev_name(const s= truct device *dev)=0D {=0D =0D if (dev->init_name)=0D return dev->init_name;=0D =0D return kobject_name(&dev->kobj);=0D }=0D # 649 "./include/linux/device.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *dev_bus_name(con= st struct device *dev)=0D {=0D return dev->bus ? dev->bus->name : (dev->class ? dev->class->name : "");=0D }=0D =0D __attribute__((__format__(printf, 2, 3))) int dev_set_name(struct device *d= ev, const char *name, ...);=0D # 666 "./include/linux/device.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_to_node(struct devic= e *dev)=0D {=0D return (-1);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_dev_node(struct dev= ice *dev, int node)=0D {=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct irq_domain *dev_get_m= si_domain(const struct device *dev)=0D {=0D =0D return dev->msi.domain;=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_set_msi_domain(stru= ct device *dev, struct irq_domain *d)=0D {=0D =0D dev->msi.domain =3D d;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dev_get_drvdata(const = struct device *dev)=0D {=0D return dev->driver_data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_set_drvdata(struct = device *dev, void *data)=0D {=0D dev->driver_data =3D data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pm_subsys_data *dev_t= o_psd(struct device *dev)=0D {=0D return dev ? dev->power.subsys_data : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int dev_get_uevent_= suppress(const struct device *dev)=0D {=0D return dev->kobj.uevent_suppress;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_set_uevent_suppress= (struct device *dev, int val)=0D {=0D dev->kobj.uevent_suppress =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_is_registered(str= uct device *dev)=0D {=0D return dev->kobj.state_in_sysfs;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_enable_async_sus= pend(struct device *dev)=0D {=0D if (!dev->power.is_prepared)=0D dev->power.async_suspend =3D true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_disable_async_su= spend(struct device *dev)=0D {=0D if (!dev->power.is_prepared)=0D dev->power.async_suspend =3D false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_async_suspend_en= abled(struct device *dev)=0D {=0D return !!dev->power.async_suspend;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_pm_not_required(= struct device *dev)=0D {=0D return dev->power.no_pm;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_set_pm_not_requi= red(struct device *dev)=0D {=0D dev->power.no_pm =3D true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_pm_syscore_device(s= truct device *dev, bool val)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_pm_set_driver_flags= (struct device *dev, u32 flags)=0D {=0D dev->power.driver_flags =3D flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_pm_test_driver_flag= s(struct device *dev, u32 flags)=0D {=0D return !!(dev->power.driver_flags & flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_lock(struct devi= ce *dev)=0D {=0D mutex_lock_nested(&dev->mutex, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_lock_interruptibl= e(struct device *dev)=0D {=0D return mutex_lock_interruptible_nested(&dev->mutex, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int device_trylock(struct de= vice *dev)=0D {=0D return mutex_trylock(&dev->mutex);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_unlock(struct de= vice *dev)=0D {=0D mutex_unlock(&dev->mutex);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_lock_assert(stru= ct device *dev)=0D {=0D do { ({ int __ret_warn_on =3D !!(debug_locks && !(lock_is_held(&(&dev->mut= ex)->dep_map) !=3D 0)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/device.h"), "i" (787), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(= struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }= ); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct device_node *dev_of_n= ode(struct device *dev)=0D {=0D if (!1 || !dev)=0D return ((void *)0);=0D return dev->of_node;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_has_sync_state(stru= ct device *dev)=0D {=0D if (!dev)=0D return false;=0D if (dev->driver && dev->driver->sync_state)=0D return true;=0D if (dev->bus && dev->bus->sync_state)=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_set_removable(struc= t device *dev,=0D enum device_removable removable)=0D {=0D dev->removable =3D removable;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_is_removable(struct= device *dev)=0D {=0D return dev->removable =3D=3D DEVICE_REMOVABLE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_removable_is_valid(= struct device *dev)=0D {=0D return dev->removable !=3D DEVICE_REMOVABLE_NOT_SUPPORTED;=0D }=0D =0D =0D =0D =0D int __attribute__((__warn_unused_result__)) device_register(struct device *= dev);=0D void device_unregister(struct device *dev);=0D void device_initialize(struct device *dev);=0D int __attribute__((__warn_unused_result__)) device_add(struct device *dev);= =0D void device_del(struct device *dev);=0D int device_for_each_child(struct device *dev, void *data,=0D int (*fn)(struct device *dev, void *data));=0D int device_for_each_child_reverse(struct device *dev, void *data,=0D int (*fn)(struct device *dev, void *data));=0D struct device *device_find_child(struct device *dev, void *data,=0D int (*match)(struct device *dev, void *data));=0D struct device *device_find_child_by_name(struct device *parent,=0D const char *name);=0D int device_rename(struct device *dev, const char *new_name);=0D int device_move(struct device *dev, struct device *new_parent,=0D enum dpm_order dpm_order);=0D int device_change_owner(struct device *dev, kuid_t kuid, kgid_t kgid);=0D const char *device_get_devnode(struct device *dev, umode_t *mode, kuid_t *u= id,=0D kgid_t *gid, const char **tmp);=0D int device_is_dependent(struct device *dev, void *target);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool device_supports_offline= (struct device *dev)=0D {=0D return dev->bus && dev->bus->offline && dev->bus->online;=0D }=0D =0D void lock_device_hotplug(void);=0D void unlock_device_hotplug(void);=0D int lock_device_hotplug_sysfs(void);=0D int device_offline(struct device *dev);=0D int device_online(struct device *dev);=0D void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode);= =0D void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode)= ;=0D void device_set_of_node_from_dev(struct device *dev, const struct device *d= ev2);=0D void device_set_node(struct device *dev, struct fwnode_handle *fwnode);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_num_vf(struct device= *dev)=0D {=0D if (dev->bus && dev->bus->num_vf)=0D return dev->bus->num_vf(dev);=0D return 0;=0D }=0D =0D =0D =0D =0D struct device *__root_device_register(const char *name, struct module *owne= r);=0D =0D =0D =0D =0D =0D void root_device_unregister(struct device *root);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dev_get_platdata(const= struct device *dev)=0D {=0D return dev->platform_data;=0D }=0D =0D =0D =0D =0D =0D int __attribute__((__warn_unused_result__)) device_driver_attach(struct dev= ice_driver *drv,=0D struct device *dev);=0D int __attribute__((__warn_unused_result__)) device_bind_driver(struct devic= e *dev);=0D void device_release_driver(struct device *dev);=0D int __attribute__((__warn_unused_result__)) device_attach(struct device *de= v);=0D int __attribute__((__warn_unused_result__)) driver_attach(struct device_dri= ver *drv);=0D void device_initial_probe(struct device *dev);=0D int __attribute__((__warn_unused_result__)) device_reprobe(struct device *d= ev);=0D =0D bool device_is_bound(struct device *dev);=0D =0D =0D =0D =0D __attribute__((__format__(printf, 5, 6))) struct device *=0D device_create(struct class *cls, struct device *parent, dev_t devt,=0D void *drvdata, const char *fmt, ...);=0D __attribute__((__format__(printf, 6, 7))) struct device *=0D device_create_with_groups(struct class *cls, struct device *parent, dev_t d= evt,=0D void *drvdata, const struct attribute_group **groups,=0D const char *fmt, ...);=0D void device_destroy(struct class *cls, dev_t devt);=0D =0D int __attribute__((__warn_unused_result__)) device_add_groups(struct device= *dev,=0D const struct attribute_group **groups);=0D void device_remove_groups(struct device *dev,=0D const struct attribute_group **groups);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) device_add_group(struct device *dev,=0D const struct attribute_group *grp)=0D {=0D const struct attribute_group *groups[] =3D { grp, ((void *)0) };=0D =0D return device_add_groups(dev, groups);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void device_remove_group(str= uct device *dev,=0D const struct attribute_group *grp)=0D {=0D const struct attribute_group *groups[] =3D { grp, ((void *)0) };=0D =0D return device_remove_groups(dev, groups);=0D }=0D =0D int __attribute__((__warn_unused_result__)) devm_device_add_groups(struct d= evice *dev,=0D const struct attribute_group **groups);=0D void devm_device_remove_groups(struct device *dev,=0D const struct attribute_group **groups);=0D int __attribute__((__warn_unused_result__)) devm_device_add_group(struct de= vice *dev,=0D const struct attribute_group *grp);=0D void devm_device_remove_group(struct device *dev,=0D const struct attribute_group *grp);=0D =0D =0D =0D =0D =0D =0D =0D extern int (*platform_notify)(struct device *dev);=0D =0D extern int (*platform_notify_remove)(struct device *dev);=0D =0D =0D =0D =0D =0D =0D struct device *get_device(struct device *dev);=0D void put_device(struct device *dev);=0D bool kill_device(struct device *dev);=0D =0D =0D int devtmpfs_mount(void);=0D =0D =0D =0D =0D =0D void device_shutdown(void);=0D =0D =0D const char *dev_driver_string(const struct device *dev);=0D =0D =0D struct device_link *device_link_add(struct device *consumer,=0D struct device *supplier, u32 flags);=0D void device_link_del(struct device_link *link);=0D void device_link_remove(void *consumer, struct device *supplier);=0D void device_links_supplier_sync_state_pause(void);=0D void device_links_supplier_sync_state_resume(void);=0D =0D extern __attribute__((__format__(printf, 3, 4)))=0D int dev_err_probe(const struct device *dev, int err, const char *fmt, ...);= =0D # 8 "./include/linux/dma-mapping.h" 2=0D =0D # 1 "./include/linux/dma-direction.h" 1=0D =0D =0D =0D =0D enum dma_data_direction {=0D DMA_BIDIRECTIONAL =3D 0,=0D DMA_TO_DEVICE =3D 1,=0D DMA_FROM_DEVICE =3D 2,=0D DMA_NONE =3D 3,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int valid_dma_direction(enum= dma_data_direction dir)=0D {=0D return dir =3D=3D DMA_BIDIRECTIONAL || dir =3D=3D DMA_TO_DEVICE ||=0D dir =3D=3D DMA_FROM_DEVICE;=0D }=0D # 10 "./include/linux/dma-mapping.h" 2=0D # 1 "./include/linux/scatterlist.h" 1=0D # 11 "./include/linux/scatterlist.h"=0D struct scatterlist {=0D unsigned long page_link;=0D unsigned int offset;=0D unsigned int length;=0D dma_addr_t dma_address;=0D =0D =0D =0D };=0D # 36 "./include/linux/scatterlist.h"=0D struct sg_table {=0D struct scatterlist *sgl;=0D unsigned int nents;=0D unsigned int orig_nents;=0D };=0D =0D struct sg_append_table {=0D struct sg_table sgt;=0D struct scatterlist *prv;=0D unsigned int total_nents;=0D };=0D # 74 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __sg_flags(stru= ct scatterlist *sg)=0D {=0D return sg->page_link & (0x01UL | 0x02UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct scatterlist *sg_chain= _ptr(struct scatterlist *sg)=0D {=0D return (struct scatterlist *)(sg->page_link & ~(0x01UL | 0x02UL));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sg_is_chain(struct scat= terlist *sg)=0D {=0D return __sg_flags(sg) & 0x01UL;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sg_is_last(struct scatt= erlist *sg)=0D {=0D return __sg_flags(sg) & 0x02UL;=0D }=0D # 104 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_assign_page(struct s= catterlist *sg, struct page *page)=0D {=0D unsigned long page_link =3D sg->page_link & (0x01UL | 0x02UL);=0D =0D =0D =0D =0D =0D do { if (__builtin_expect(!!((unsigned long)page & (0x01UL | 0x02UL)), 0))= do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/scatterlist.h"), "i" (112), "i" (0), "i" (sizeof(st= ruct bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0)= ; } while (0); } while (0);=0D =0D =0D =0D sg->page_link =3D page_link | (unsigned long) page;=0D }=0D # 133 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_set_page(struct scat= terlist *sg, struct page *page,=0D unsigned int len, unsigned int offset)=0D {=0D sg_assign_page(sg, page);=0D sg->offset =3D offset;=0D sg->length =3D len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *sg_page(struct = scatterlist *sg)=0D {=0D =0D =0D =0D return (struct page *)((sg)->page_link & ~(0x01UL | 0x02UL));=0D }=0D # 156 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_set_buf(struct scatt= erlist *sg, const void *buf,=0D unsigned int buflen)=0D {=0D =0D =0D =0D sg_set_page(sg, ((((struct page *)((kernel_map.page_offset - ((((((1UL) <<= (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable= _l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_l5_enabled= ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin_constant_= p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (sizeof(struc= t page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct page)) - 1) = ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((sizeof(struc= t page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __ilog2_u32((= sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1) ) + 1) := __order_base_2(sizeof(struct page)) ))))))) + (((((({ unsigned long _x =3D= (unsigned long)(buf); ((_x) >=3D kernel_map.page_offset && (!1 || (_x) < k= ernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) <<= (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2))) ? ((un= signed long)(_x) - kernel_map.va_pa_offset) : ({ unsigned long _y =3D _x; (= 0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - kernel_map.va_= kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_kernel_pa_offs= et - 0); }); })) >> (12))))))), buflen, ((unsigned long)(buf) & ~(~(((1UL) = << (12)) - 1))));=0D }=0D # 185 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sg_chain(struct scatt= erlist *chain_sg,=0D struct scatterlist *sgl)=0D {=0D =0D =0D =0D chain_sg->offset =3D 0;=0D chain_sg->length =3D 0;=0D =0D =0D =0D =0D =0D chain_sg->page_link =3D ((unsigned long) sgl | 0x01UL) & ~0x02UL;=0D }=0D # 211 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_chain(struct scatter= list *prv, unsigned int prv_nents,=0D struct scatterlist *sgl)=0D {=0D __sg_chain(&prv[prv_nents - 1], sgl);=0D }=0D # 226 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_mark_end(struct scat= terlist *sg)=0D {=0D =0D =0D =0D sg->page_link |=3D 0x02UL;=0D sg->page_link &=3D ~0x01UL;=0D }=0D # 243 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_unmark_end(struct sc= atterlist *sg)=0D {=0D sg->page_link &=3D ~0x02UL;=0D }=0D # 258 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dma_addr_t sg_phys(struct sc= atterlist *sg)=0D {=0D return ((((phys_addr_t)((unsigned long)((sg_page(sg)) - ((struct page *)((= kernel_map.page_offset - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) = << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1))= - ((((1UL))) << (((pgtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39= )) - (12) - 1 + (( __builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(s= truct page)) =3D=3D 0 || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_= constant_p((sizeof(struct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? = 0 : 63 - __builtin_clzll((sizeof(struct page)) - 1)) : (sizeof((sizeof(stru= ct page)) - 1) <=3D 4) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u= 64((sizeof(struct page)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) = ))))))))) << (12)))) + sg->offset;=0D }=0D # 273 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *sg_virt(struct scatter= list *sg)=0D {=0D return lowmem_page_address(sg_page(sg)) + sg->offset;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sg_init_marker(struct s= catterlist *sgl,=0D unsigned int nents)=0D {=0D sg_mark_end(&sgl[nents - 1]);=0D }=0D =0D int sg_nents(struct scatterlist *sg);=0D int sg_nents_for_len(struct scatterlist *sg, u64 len);=0D struct scatterlist *sg_next(struct scatterlist *);=0D struct scatterlist *sg_last(struct scatterlist *s, unsigned int);=0D void sg_init_table(struct scatterlist *, unsigned int);=0D void sg_init_one(struct scatterlist *, const void *, unsigned int);=0D int sg_split(struct scatterlist *in, const int in_mapped_nents,=0D const off_t skip, const int nb_splits,=0D const size_t *split_sizes,=0D struct scatterlist **out, int *out_mapped_nents,=0D gfp_t gfp_mask);=0D =0D typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t);=0D typedef void (sg_free_fn)(struct scatterlist *, unsigned int);=0D =0D void __sg_free_table(struct sg_table *, unsigned int, unsigned int,=0D sg_free_fn *, unsigned int);=0D void sg_free_table(struct sg_table *);=0D void sg_free_append_table(struct sg_append_table *sgt);=0D int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int,=0D struct scatterlist *, unsigned int, gfp_t, sg_alloc_fn *);=0D int sg_alloc_table(struct sg_table *, unsigned int, gfp_t);=0D int sg_alloc_append_table_from_pages(struct sg_append_table *sgt,=0D struct page **pages, unsigned int n_pages,=0D unsigned int offset, unsigned long size,=0D unsigned int max_segment,=0D unsigned int left_pages, gfp_t gfp_mask);=0D int sg_alloc_table_from_pages_segment(struct sg_table *sgt, struct page **p= ages,=0D unsigned int n_pages, unsigned int offset,=0D unsigned long size,=0D unsigned int max_segment, gfp_t gfp_mask);=0D # 342 "./include/linux/scatterlist.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sg_alloc_table_from_page= s(struct sg_table *sgt,=0D struct page **pages,=0D unsigned int n_pages,=0D unsigned int offset,=0D unsigned long size, gfp_t gfp_mask)=0D {=0D return sg_alloc_table_from_pages_segment(sgt, pages, n_pages, offset,=0D size, (~0U), gfp_mask);=0D }=0D =0D =0D struct scatterlist *sgl_alloc_order(unsigned long long length,=0D unsigned int order, bool chainable,=0D gfp_t gfp, unsigned int *nent_p);=0D struct scatterlist *sgl_alloc(unsigned long long length, gfp_t gfp,=0D unsigned int *nent_p);=0D void sgl_free_n_order(struct scatterlist *sgl, int nents, int order);=0D void sgl_free_order(struct scatterlist *sgl, int order);=0D void sgl_free(struct scatterlist *sgl);=0D =0D =0D size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *bu= f,=0D size_t buflen, off_t skip, bool to_buffer);=0D =0D size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents,=0D const void *buf, size_t buflen);=0D size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents,=0D void *buf, size_t buflen);=0D =0D size_t sg_pcopy_from_buffer(struct scatterlist *sgl, unsigned int nents,=0D const void *buf, size_t buflen, off_t skip);=0D size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents,=0D void *buf, size_t buflen, off_t skip);=0D size_t sg_zero_buffer(struct scatterlist *sgl, unsigned int nents,=0D size_t buflen, off_t skip);=0D # 404 "./include/linux/scatterlist.h"=0D void sg_free_table_chained(struct sg_table *table,=0D unsigned nents_first_chunk);=0D int sg_alloc_table_chained(struct sg_table *table, int nents,=0D struct scatterlist *first_chunk,=0D unsigned nents_first_chunk);=0D # 421 "./include/linux/scatterlist.h"=0D struct sg_page_iter {=0D struct scatterlist *sg;=0D unsigned int sg_pgoffset;=0D =0D =0D unsigned int __nents;=0D int __pg_advance;=0D =0D };=0D # 438 "./include/linux/scatterlist.h"=0D struct sg_dma_page_iter {=0D struct sg_page_iter base;=0D };=0D =0D bool __sg_page_iter_next(struct sg_page_iter *piter);=0D bool __sg_page_iter_dma_next(struct sg_dma_page_iter *dma_iter);=0D void __sg_page_iter_start(struct sg_page_iter *piter,=0D struct scatterlist *sglist, unsigned int nents,=0D unsigned long pgoffset);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *sg_page_iter_pa= ge(struct sg_page_iter *piter)=0D {=0D return ((sg_page(piter->sg)) + (piter->sg_pgoffset));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dma_addr_t=0D sg_page_iter_dma_address(struct sg_dma_page_iter *dma_iter)=0D {=0D return ((dma_iter->base.sg)->dma_address) +=0D (dma_iter->base.sg_pgoffset << (12));=0D }=0D # 546 "./include/linux/scatterlist.h"=0D struct sg_mapping_iter {=0D =0D struct page *page;=0D void *addr;=0D size_t length;=0D size_t consumed;=0D struct sg_page_iter piter;=0D =0D =0D unsigned int __offset;=0D unsigned int __remaining;=0D unsigned int __flags;=0D };=0D =0D void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl,= =0D unsigned int nents, unsigned int flags);=0D bool sg_miter_skip(struct sg_mapping_iter *miter, off_t offset);=0D bool sg_miter_next(struct sg_mapping_iter *miter);=0D void sg_miter_stop(struct sg_mapping_iter *miter);=0D # 11 "./include/linux/dma-mapping.h" 2=0D =0D # 1 "./include/linux/mem_encrypt.h" 1=0D # 13 "./include/linux/dma-mapping.h" 2=0D # 83 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_dma_mapping_error= (struct device *dev,=0D dma_addr_t dma_addr)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void debug_dma_map_single(st= ruct device *dev, const void *addr,=0D unsigned long len)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_mapping_error(struct= device *dev, dma_addr_t dma_addr)=0D {=0D debug_dma_mapping_error(dev, dma_addr);=0D =0D if (__builtin_expect(!!(dma_addr =3D=3D (~(dma_addr_t)0)), 0))=0D return -12;=0D return 0;=0D }=0D =0D dma_addr_t dma_map_page_attrs(struct device *dev, struct page *page,=0D size_t offset, size_t size, enum dma_data_direction dir,=0D unsigned long attrs);=0D void dma_unmap_page_attrs(struct device *dev, dma_addr_t addr, size_t size,= =0D enum dma_data_direction dir, unsigned long attrs);=0D unsigned int dma_map_sg_attrs(struct device *dev, struct scatterlist *sg,=0D int nents, enum dma_data_direction dir, unsigned long attrs);=0D void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg,=0D int nents, enum dma_data_direction dir,=0D unsigned long attrs);=0D int dma_map_sgtable(struct device *dev, struct sg_table *sgt,=0D enum dma_data_direction dir, unsigned long attrs);=0D dma_addr_t dma_map_resource(struct device *dev, phys_addr_t phys_addr,=0D size_t size, enum dma_data_direction dir, unsigned long attrs);=0D void dma_unmap_resource(struct device *dev, dma_addr_t addr, size_t size,=0D enum dma_data_direction dir, unsigned long attrs);=0D void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, size_t si= ze,=0D enum dma_data_direction dir);=0D void dma_sync_single_for_device(struct device *dev, dma_addr_t addr,=0D size_t size, enum dma_data_direction dir);=0D void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg,=0D int nelems, enum dma_data_direction dir);=0D void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,=0D int nelems, enum dma_data_direction dir);=0D void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_hand= le,=0D gfp_t flag, unsigned long attrs);=0D void dma_free_attrs(struct device *dev, size_t size, void *cpu_addr,=0D dma_addr_t dma_handle, unsigned long attrs);=0D void *dmam_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_han= dle,=0D gfp_t gfp, unsigned long attrs);=0D void dmam_free_coherent(struct device *dev, size_t size, void *vaddr,=0D dma_addr_t dma_handle);=0D int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt,=0D void *cpu_addr, dma_addr_t dma_addr, size_t size,=0D unsigned long attrs);=0D int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma,=0D void *cpu_addr, dma_addr_t dma_addr, size_t size,=0D unsigned long attrs);=0D bool dma_can_mmap(struct device *dev);=0D int dma_supported(struct device *dev, u64 mask);=0D int dma_set_mask(struct device *dev, u64 mask);=0D int dma_set_coherent_mask(struct device *dev, u64 mask);=0D u64 dma_get_required_mask(struct device *dev);=0D size_t dma_max_mapping_size(struct device *dev);=0D bool dma_need_sync(struct device *dev, dma_addr_t dma_addr);=0D unsigned long dma_get_merge_boundary(struct device *dev);=0D struct sg_table *dma_alloc_noncontiguous(struct device *dev, size_t size,=0D enum dma_data_direction dir, gfp_t gfp, unsigned long attrs);=0D void dma_free_noncontiguous(struct device *dev, size_t size,=0D struct sg_table *sgt, enum dma_data_direction dir);=0D void *dma_vmap_noncontiguous(struct device *dev, size_t size,=0D struct sg_table *sgt);=0D void dma_vunmap_noncontiguous(struct device *dev, void *vaddr);=0D int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,= =0D size_t size, struct sg_table *sgt);=0D # 302 "./include/linux/dma-mapping.h"=0D struct page *dma_alloc_pages(struct device *dev, size_t size,=0D dma_addr_t *dma_handle, enum dma_data_direction dir, gfp_t gfp);=0D void dma_free_pages(struct device *dev, size_t size, struct page *page,=0D dma_addr_t dma_handle, enum dma_data_direction dir);=0D int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,=0D size_t size, struct page *page);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dma_alloc_noncoherent(= struct device *dev, size_t size,=0D dma_addr_t *dma_handle, enum dma_data_direction dir, gfp_t gfp)=0D {=0D struct page *page =3D dma_alloc_pages(dev, size, dma_handle, dir, gfp);=0D return page ? lowmem_page_address(page) : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_free_noncoherent(st= ruct device *dev, size_t size,=0D void *vaddr, dma_addr_t dma_handle, enum dma_data_direction dir)=0D {=0D dma_free_pages(dev, size, ((((struct page *)((kernel_map.page_offset - (((= (((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 = : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgtable_= l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __builtin= _constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 || (si= zeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(struct pa= ge)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzll((si= zeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) ? __i= log2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)) - 1= ) ) + 1) : __order_base_2(sizeof(struct page)) ))))))) + (((((({ unsigned l= ong _x =3D (unsigned long)(vaddr); ((_x) >=3D kernel_map.page_offset && (!1= || (_x) < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) / 2= * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))) /= 2))) ? ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned long = _y =3D _x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) - ke= rnel_map.va_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va_ke= rnel_pa_offset - 0); }); })) >> (12))))))), dma_handle, dir);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dma_addr_t dma_map_single_at= trs(struct device *dev, void *ptr,=0D size_t size, enum dma_data_direction dir, unsigned long attrs)=0D {=0D =0D if (({ static bool __attribute__((__section__(".data.once"))) __already_do= ne; bool __ret_do_once =3D !!(is_vmalloc_addr(ptr)); if (__builtin_expect(!= !(__ret_do_once && !__already_done), 0)) { __already_done =3D true; ({ int = __ret_warn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { d= o { } while(0); __warn_printk("%s %s: " "rejecting DMA map of vmalloc memor= y\n", dev_driver_string(dev), dev_name(dev)); do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/dma-mapping= =2Eh"), "i" (327), "i" ((1 << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(stru= ct bug_entry))); } while (0); do { } while(0); } while (0); __builtin_expec= t(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_do_once), 0); }))= =0D =0D return (~(dma_addr_t)0);=0D debug_dma_map_single(dev, ptr, size);=0D return dma_map_page_attrs(dev, ((((struct page *)((kernel_map.page_offset = - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enabled = ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((pgt= able_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __bu= iltin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0 |= | (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(stru= ct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_clzl= l((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4) = ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct page)= ) - 1) ) + 1) : __order_base_2(sizeof(struct page)) ))))))) + (((((({ unsig= ned long _x =3D (unsigned long)(ptr); ((_x) >=3D kernel_map.page_offset && = (!1 || (_x) < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t)) = / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30)))= ) / 2))) ? ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned lo= ng _y =3D _x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y) -= kernel_map.va_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map.va= _kernel_pa_offset - 0); }); })) >> (12))))))), ((unsigned long)(ptr) & ~(~(= ((1UL) << (12)) - 1))),=0D size, dir, attrs);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_unmap_single_attrs(= struct device *dev, dma_addr_t addr,=0D size_t size, enum dma_data_direction dir, unsigned long attrs)=0D {=0D return dma_unmap_page_attrs(dev, addr, size, dir, attrs);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_sync_single_range_f= or_cpu(struct device *dev,=0D dma_addr_t addr, unsigned long offset, size_t size,=0D enum dma_data_direction dir)=0D {=0D return dma_sync_single_for_cpu(dev, addr + offset, size, dir);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_sync_single_range_f= or_device(struct device *dev,=0D dma_addr_t addr, unsigned long offset, size_t size,=0D enum dma_data_direction dir)=0D {=0D return dma_sync_single_for_device(dev, addr + offset, size, dir);=0D }=0D # 365 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_unmap_sgtable(struc= t device *dev, struct sg_table *sgt,=0D enum dma_data_direction dir, unsigned long attrs)=0D {=0D dma_unmap_sg_attrs(dev, sgt->sgl, sgt->orig_nents, dir, attrs);=0D }=0D # 383 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_sync_sgtable_for_cp= u(struct device *dev,=0D struct sg_table *sgt, enum dma_data_direction dir)=0D {=0D dma_sync_sg_for_cpu(dev, sgt->sgl, sgt->orig_nents, dir);=0D }=0D # 400 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_sync_sgtable_for_de= vice(struct device *dev,=0D struct sg_table *sgt, enum dma_data_direction dir)=0D {=0D dma_sync_sg_for_device(dev, sgt->sgl, sgt->orig_nents, dir);=0D }=0D # 415 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dma_alloc_coherent(str= uct device *dev, size_t size,=0D dma_addr_t *dma_handle, gfp_t gfp)=0D {=0D return dma_alloc_attrs(dev, size, dma_handle, gfp,=0D (gfp & (( gfp_t)0x2000u)) ? (1UL << 8) : 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_free_coherent(struc= t device *dev, size_t size,=0D void *cpu_addr, dma_addr_t dma_handle)=0D {=0D return dma_free_attrs(dev, size, cpu_addr, dma_handle, 0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 dma_get_mask(struct devi= ce *dev)=0D {=0D if (dev->dma_mask && *dev->dma_mask)=0D return *dev->dma_mask;=0D return (((32) =3D=3D 64) ? ~0ULL : ((1ULL<<(32))-1));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_set_mask_and_coheren= t(struct device *dev, u64 mask)=0D {=0D int rc =3D dma_set_mask(dev, mask);=0D if (rc =3D=3D 0)=0D dma_set_coherent_mask(dev, mask);=0D return rc;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_coerce_mask_and_cohe= rent(struct device *dev, u64 mask)=0D {=0D dev->dma_mask =3D &dev->coherent_dma_mask;=0D return dma_set_mask_and_coherent(dev, mask);=0D }=0D # 468 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dma_addressing_limited(= struct device *dev)=0D {=0D return ({ typeof(dma_get_mask(dev)) __x =3D (dma_get_mask(dev)); typeof(de= v->bus_dma_limit) __y =3D (dev->bus_dma_limit); __x =3D=3D 0 ? __y : ((__y = =3D=3D 0) ? __x : __builtin_choose_expr(((!!(sizeof((typeof(__x) *)1 =3D=3D= (typeof(__y) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(= __x) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((lo= ng)(__y) * 0l)) : (int *)8))))), ((__x) < (__y) ? (__x) : (__y)), ({ typeof= (__x) __UNIQUE_ID___x258 =3D (__x); typeof(__y) __UNIQUE_ID___y259 =3D (__y= ); ((__UNIQUE_ID___x258) < (__UNIQUE_ID___y259) ? (__UNIQUE_ID___x258) : (_= _UNIQUE_ID___y259)); }))); }) <=0D dma_get_required_mask(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int dma_get_max_seg= _size(struct device *dev)=0D {=0D if (dev->dma_parms && dev->dma_parms->max_segment_size)=0D return dev->dma_parms->max_segment_size;=0D return 0x00010000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_set_max_seg_size(str= uct device *dev, unsigned int size)=0D {=0D if (dev->dma_parms) {=0D dev->dma_parms->max_segment_size =3D size;=0D return 0;=0D }=0D return -5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long dma_get_seg_bo= undary(struct device *dev)=0D {=0D if (dev->dma_parms && dev->dma_parms->segment_boundary_mask)=0D return dev->dma_parms->segment_boundary_mask;=0D return (~0UL);=0D }=0D # 508 "./include/linux/dma-mapping.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long dma_get_seg_bo= undary_nr_pages(struct device *dev,=0D unsigned int page_shift)=0D {=0D if (!dev)=0D return (((u32)~0U) >> page_shift) + 1;=0D return (dma_get_seg_boundary(dev) >> page_shift) + 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_set_seg_boundary(str= uct device *dev, unsigned long mask)=0D {=0D if (dev->dma_parms) {=0D dev->dma_parms->segment_boundary_mask =3D mask;=0D return 0;=0D }=0D return -5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int dma_get_min_ali= gn_mask(struct device *dev)=0D {=0D if (dev->dma_parms)=0D return dev->dma_parms->min_align_mask;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_set_min_align_mask(s= truct device *dev,=0D unsigned int min_align_mask)=0D {=0D if (({ int __ret_warn_on =3D !!(!dev->dma_parms); if (__builtin_expect(!!(= __ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/dma-mapping.h"), "i" (535), "i" ((1 <= < 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0)= ; __builtin_expect(!!(__ret_warn_on), 0); }))=0D return -5;=0D dev->dma_parms->min_align_mask =3D min_align_mask;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_get_cache_alignment(= void)=0D {=0D =0D =0D =0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dmam_alloc_coherent(st= ruct device *dev, size_t size,=0D dma_addr_t *dma_handle, gfp_t gfp)=0D {=0D return dmam_alloc_attrs(dev, size, dma_handle, gfp,=0D (gfp & (( gfp_t)0x2000u)) ? (1UL << 8) : 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dma_alloc_wc(struct de= vice *dev, size_t size,=0D dma_addr_t *dma_addr, gfp_t gfp)=0D {=0D unsigned long attrs =3D (1UL << 2);=0D =0D if (gfp & (( gfp_t)0x2000u))=0D attrs |=3D (1UL << 8);=0D =0D return dma_alloc_attrs(dev, size, dma_addr, gfp, attrs);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dma_free_wc(struct devi= ce *dev, size_t size,=0D void *cpu_addr, dma_addr_t dma_addr)=0D {=0D return dma_free_attrs(dev, size, cpu_addr, dma_addr,=0D (1UL << 2));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dma_mmap_wc(struct devic= e *dev,=0D struct vm_area_struct *vma,=0D void *cpu_addr, dma_addr_t dma_addr,=0D size_t size)=0D {=0D return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size,=0D (1UL << 2));=0D }=0D # 32 "./include/linux/skbuff.h" 2=0D # 1 "./include/linux/netdev_features.h" 1=0D # 12 "./include/linux/netdev_features.h"=0D typedef u64 netdev_features_t;=0D =0D enum {=0D NETIF_F_SG_BIT,=0D NETIF_F_IP_CSUM_BIT,=0D __UNUSED_NETIF_F_1,=0D NETIF_F_HW_CSUM_BIT,=0D NETIF_F_IPV6_CSUM_BIT,=0D NETIF_F_HIGHDMA_BIT,=0D NETIF_F_FRAGLIST_BIT,=0D NETIF_F_HW_VLAN_CTAG_TX_BIT,=0D NETIF_F_HW_VLAN_CTAG_RX_BIT,=0D NETIF_F_HW_VLAN_CTAG_FILTER_BIT,=0D NETIF_F_VLAN_CHALLENGED_BIT,=0D NETIF_F_GSO_BIT,=0D NETIF_F_LLTX_BIT,=0D =0D NETIF_F_NETNS_LOCAL_BIT,=0D NETIF_F_GRO_BIT,=0D NETIF_F_LRO_BIT,=0D =0D NETIF_F_GSO_SHIFT,=0D NETIF_F_TSO_BIT=0D =3D NETIF_F_GSO_SHIFT,=0D NETIF_F_GSO_ROBUST_BIT,=0D NETIF_F_TSO_ECN_BIT,=0D NETIF_F_TSO_MANGLEID_BIT,=0D NETIF_F_TSO6_BIT,=0D NETIF_F_FSO_BIT,=0D NETIF_F_GSO_GRE_BIT,=0D NETIF_F_GSO_GRE_CSUM_BIT,=0D NETIF_F_GSO_IPXIP4_BIT,=0D NETIF_F_GSO_IPXIP6_BIT,=0D NETIF_F_GSO_UDP_TUNNEL_BIT,=0D NETIF_F_GSO_UDP_TUNNEL_CSUM_BIT,=0D NETIF_F_GSO_PARTIAL_BIT,=0D =0D =0D =0D NETIF_F_GSO_TUNNEL_REMCSUM_BIT,=0D NETIF_F_GSO_SCTP_BIT,=0D NETIF_F_GSO_ESP_BIT,=0D NETIF_F_GSO_UDP_BIT,=0D NETIF_F_GSO_UDP_L4_BIT,=0D NETIF_F_GSO_FRAGLIST_BIT,=0D NETIF_F_GSO_LAST =3D=0D NETIF_F_GSO_FRAGLIST_BIT,=0D =0D NETIF_F_FCOE_CRC_BIT,=0D NETIF_F_SCTP_CRC_BIT,=0D NETIF_F_FCOE_MTU_BIT,=0D NETIF_F_NTUPLE_BIT,=0D NETIF_F_RXHASH_BIT,=0D NETIF_F_RXCSUM_BIT,=0D NETIF_F_NOCACHE_COPY_BIT,=0D NETIF_F_LOOPBACK_BIT,=0D NETIF_F_RXFCS_BIT,=0D NETIF_F_RXALL_BIT,=0D NETIF_F_HW_VLAN_STAG_TX_BIT,=0D NETIF_F_HW_VLAN_STAG_RX_BIT,=0D NETIF_F_HW_VLAN_STAG_FILTER_BIT,=0D NETIF_F_HW_L2FW_DOFFLOAD_BIT,=0D =0D NETIF_F_HW_TC_BIT,=0D NETIF_F_HW_ESP_BIT,=0D NETIF_F_HW_ESP_TX_CSUM_BIT,=0D NETIF_F_RX_UDP_TUNNEL_PORT_BIT,=0D NETIF_F_HW_TLS_TX_BIT,=0D NETIF_F_HW_TLS_RX_BIT,=0D =0D NETIF_F_GRO_HW_BIT,=0D NETIF_F_HW_TLS_RECORD_BIT,=0D NETIF_F_GRO_FRAGLIST_BIT,=0D =0D NETIF_F_HW_MACSEC_BIT,=0D NETIF_F_GRO_UDP_FWD_BIT,=0D =0D NETIF_F_HW_HSR_TAG_INS_BIT,=0D NETIF_F_HW_HSR_TAG_RM_BIT,=0D NETIF_F_HW_HSR_FWD_BIT,=0D NETIF_F_HW_HSR_DUP_BIT,=0D # 101 "./include/linux/netdev_features.h"=0D NETDEV_FEATURE_COUNT=0D };=0D # 174 "./include/linux/netdev_features.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int find_next_netdev_feature= (u64 feature, unsigned long start)=0D {=0D =0D =0D =0D feature &=3D ~0ULL >> (-start & ((sizeof(feature) * 8) - 1));=0D =0D return fls64(feature) - 1;=0D }=0D # 33 "./include/linux/skbuff.h" 2=0D =0D # 1 "./include/linux/sched/clock.h" 1=0D # 15 "./include/linux/sched/clock.h"=0D extern unsigned long long __attribute__((patchable_function_entry(0, 0))) s= ched_clock(void);=0D =0D =0D =0D =0D extern u64 running_clock(void);=0D extern u64 sched_clock_cpu(int cpu);=0D =0D =0D extern void sched_clock_init(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sched_clock_tick(void)= =0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_sched_clock_stabl= e(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sched_clock_idle_sleep_= event(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sched_clock_idle_wakeup= _event(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 cpu_clock(int cpu)=0D {=0D return sched_clock();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 local_clock(void)=0D {=0D return sched_clock();=0D }=0D # 94 "./include/linux/sched/clock.h"=0D extern void enable_sched_clock_irqtime(void);=0D extern void disable_sched_clock_irqtime(void);=0D # 35 "./include/linux/skbuff.h" 2=0D =0D # 1 "./include/linux/splice.h" 1=0D # 12 "./include/linux/splice.h"=0D # 1 "./include/linux/pipe_fs_i.h" 1=0D # 26 "./include/linux/pipe_fs_i.h"=0D struct pipe_buffer {=0D struct page *page;=0D unsigned int offset, len;=0D const struct pipe_buf_operations *ops;=0D unsigned int flags;=0D unsigned long private;=0D };=0D # 58 "./include/linux/pipe_fs_i.h"=0D struct pipe_inode_info {=0D struct mutex mutex;=0D wait_queue_head_t rd_wait, wr_wait;=0D unsigned int head;=0D unsigned int tail;=0D unsigned int max_usage;=0D unsigned int ring_size;=0D =0D =0D =0D unsigned int nr_accounted;=0D unsigned int readers;=0D unsigned int writers;=0D unsigned int files;=0D unsigned int r_counter;=0D unsigned int w_counter;=0D unsigned int poll_usage;=0D struct page *tmp_page;=0D struct fasync_struct *fasync_readers;=0D struct fasync_struct *fasync_writers;=0D struct pipe_buffer *bufs;=0D struct user_struct *user;=0D =0D =0D =0D };=0D # 95 "./include/linux/pipe_fs_i.h"=0D struct pipe_buf_operations {=0D =0D =0D =0D =0D =0D =0D =0D int (*confirm)(struct pipe_inode_info *, struct pipe_buffer *);=0D =0D =0D =0D =0D =0D void (*release)(struct pipe_inode_info *, struct pipe_buffer *);=0D # 119 "./include/linux/pipe_fs_i.h"=0D bool (*try_steal)(struct pipe_inode_info *, struct pipe_buffer *);=0D =0D =0D =0D =0D bool (*get)(struct pipe_inode_info *, struct pipe_buffer *);=0D };=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pipe_empty(unsigned int= head, unsigned int tail)=0D {=0D return head =3D=3D tail;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int pipe_occupancy(= unsigned int head, unsigned int tail)=0D {=0D return head - tail;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pipe_full(unsigned int = head, unsigned int tail,=0D unsigned int limit)=0D {=0D return pipe_occupancy(head, tail) >=3D limit;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int pipe_space_for_= user(unsigned int head, unsigned int tail,=0D struct pipe_inode_info *pipe)=0D {=0D unsigned int p_occupancy, p_space;=0D =0D p_occupancy =3D pipe_occupancy(head, tail);=0D if (p_occupancy >=3D pipe->max_usage)=0D return 0;=0D p_space =3D pipe->ring_size - p_occupancy;=0D if (p_space > pipe->max_usage)=0D p_space =3D pipe->max_usage;=0D return p_space;=0D }=0D # 186 "./include/linux/pipe_fs_i.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool pipe_buf_get(struct pipe_inode_info *pipe,=0D struct pipe_buffer *buf)=0D {=0D return buf->ops->get(pipe, buf);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pipe_buf_release(struct= pipe_inode_info *pipe,=0D struct pipe_buffer *buf)=0D {=0D const struct pipe_buf_operations *ops =3D buf->ops;=0D =0D buf->ops =3D ((void *)0);=0D ops->release(pipe, buf);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pipe_buf_confirm(struct = pipe_inode_info *pipe,=0D struct pipe_buffer *buf)=0D {=0D if (!buf->ops->confirm)=0D return 0;=0D return buf->ops->confirm(pipe, buf);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pipe_buf_try_steal(stru= ct pipe_inode_info *pipe,=0D struct pipe_buffer *buf)=0D {=0D if (!buf->ops->try_steal)=0D return false;=0D return buf->ops->try_steal(pipe, buf);=0D }=0D =0D =0D =0D =0D =0D =0D void pipe_lock(struct pipe_inode_info *);=0D void pipe_unlock(struct pipe_inode_info *);=0D void pipe_double_lock(struct pipe_inode_info *, struct pipe_inode_info *);= =0D =0D =0D void pipe_wait_readable(struct pipe_inode_info *);=0D void pipe_wait_writable(struct pipe_inode_info *);=0D =0D struct pipe_inode_info *alloc_pipe_info(void);=0D void free_pipe_info(struct pipe_inode_info *);=0D =0D =0D bool generic_pipe_buf_get(struct pipe_inode_info *, struct pipe_buffer *);= =0D bool generic_pipe_buf_try_steal(struct pipe_inode_info *, struct pipe_buffe= r *);=0D void generic_pipe_buf_release(struct pipe_inode_info *, struct pipe_buffer = *);=0D =0D extern const struct pipe_buf_operations nosteal_pipe_buf_ops;=0D # 267 "./include/linux/pipe_fs_i.h"=0D long pipe_fcntl(struct file *, unsigned int, unsigned long arg);=0D struct pipe_inode_info *get_pipe_info(struct file *file, bool for_splice);= =0D =0D int create_pipe_files(struct file **, int);=0D unsigned int round_pipe_size(unsigned long size);=0D # 13 "./include/linux/splice.h" 2=0D # 29 "./include/linux/splice.h"=0D struct splice_desc {=0D size_t total_len;=0D unsigned int len;=0D unsigned int flags;=0D =0D =0D =0D union {=0D void *userptr;=0D struct file *file;=0D void *data;=0D } u;=0D loff_t pos;=0D loff_t *opos;=0D size_t num_spliced;=0D bool need_wakeup;=0D };=0D =0D struct partial_page {=0D unsigned int offset;=0D unsigned int len;=0D unsigned long private;=0D };=0D =0D =0D =0D =0D struct splice_pipe_desc {=0D struct page **pages;=0D struct partial_page *partial;=0D int nr_pages;=0D unsigned int nr_pages_max;=0D const struct pipe_buf_operations *ops;=0D void (*spd_release)(struct splice_pipe_desc *, unsigned int);=0D };=0D =0D typedef int (splice_actor)(struct pipe_inode_info *, struct pipe_buffer *,= =0D struct splice_desc *);=0D typedef int (splice_direct_actor)(struct pipe_inode_info *,=0D struct splice_desc *);=0D =0D extern ssize_t splice_from_pipe(struct pipe_inode_info *, struct file *,=0D loff_t *, size_t, unsigned int,=0D splice_actor *);=0D extern ssize_t __splice_from_pipe(struct pipe_inode_info *,=0D struct splice_desc *, splice_actor *);=0D extern ssize_t splice_to_pipe(struct pipe_inode_info *,=0D struct splice_pipe_desc *);=0D extern ssize_t add_to_pipe(struct pipe_inode_info *,=0D struct pipe_buffer *);=0D extern ssize_t splice_direct_to_actor(struct file *, struct splice_desc *,= =0D splice_direct_actor *);=0D extern long do_splice(struct file *in, loff_t *off_in,=0D struct file *out, loff_t *off_out,=0D size_t len, unsigned int flags);=0D =0D extern long do_tee(struct file *in, struct file *out, size_t len,=0D unsigned int flags);=0D =0D =0D =0D =0D extern int splice_grow_spd(const struct pipe_inode_info *, struct splice_pi= pe_desc *);=0D extern void splice_shrink_spd(struct splice_pipe_desc *);=0D =0D extern const struct pipe_buf_operations page_cache_pipe_buf_ops;=0D extern const struct pipe_buf_operations default_pipe_buf_ops;=0D # 37 "./include/linux/skbuff.h" 2=0D =0D # 1 "./include/uapi/linux/if_packet.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct sockaddr_pkt {=0D unsigned short spkt_family;=0D unsigned char spkt_device[14];=0D __be16 spkt_protocol;=0D };=0D =0D struct sockaddr_ll {=0D unsigned short sll_family;=0D __be16 sll_protocol;=0D int sll_ifindex;=0D unsigned short sll_hatype;=0D unsigned char sll_pkttype;=0D unsigned char sll_halen;=0D unsigned char sll_addr[8];=0D };=0D # 75 "./include/uapi/linux/if_packet.h"=0D struct tpacket_stats {=0D unsigned int tp_packets;=0D unsigned int tp_drops;=0D };=0D =0D struct tpacket_stats_v3 {=0D unsigned int tp_packets;=0D unsigned int tp_drops;=0D unsigned int tp_freeze_q_cnt;=0D };=0D =0D struct tpacket_rollover_stats {=0D __u64 __attribute__((aligned(8))) tp_all;=0D __u64 __attribute__((aligned(8))) tp_huge;=0D __u64 __attribute__((aligned(8))) tp_failed;=0D };=0D =0D union tpacket_stats_u {=0D struct tpacket_stats stats1;=0D struct tpacket_stats_v3 stats3;=0D };=0D =0D struct tpacket_auxdata {=0D __u32 tp_status;=0D __u32 tp_len;=0D __u32 tp_snaplen;=0D __u16 tp_mac;=0D __u16 tp_net;=0D __u16 tp_vlan_tci;=0D __u16 tp_vlan_tpid;=0D };=0D # 132 "./include/uapi/linux/if_packet.h"=0D struct tpacket_hdr {=0D unsigned long tp_status;=0D unsigned int tp_len;=0D unsigned int tp_snaplen;=0D unsigned short tp_mac;=0D unsigned short tp_net;=0D unsigned int tp_sec;=0D unsigned int tp_usec;=0D };=0D =0D =0D =0D =0D =0D struct tpacket2_hdr {=0D __u32 tp_status;=0D __u32 tp_len;=0D __u32 tp_snaplen;=0D __u16 tp_mac;=0D __u16 tp_net;=0D __u32 tp_sec;=0D __u32 tp_nsec;=0D __u16 tp_vlan_tci;=0D __u16 tp_vlan_tpid;=0D __u8 tp_padding[4];=0D };=0D =0D struct tpacket_hdr_variant1 {=0D __u32 tp_rxhash;=0D __u32 tp_vlan_tci;=0D __u16 tp_vlan_tpid;=0D __u16 tp_padding;=0D };=0D =0D struct tpacket3_hdr {=0D __u32 tp_next_offset;=0D __u32 tp_sec;=0D __u32 tp_nsec;=0D __u32 tp_snaplen;=0D __u32 tp_len;=0D __u32 tp_status;=0D __u16 tp_mac;=0D __u16 tp_net;=0D =0D union {=0D struct tpacket_hdr_variant1 hv1;=0D };=0D __u8 tp_padding[8];=0D };=0D =0D struct tpacket_bd_ts {=0D unsigned int ts_sec;=0D union {=0D unsigned int ts_usec;=0D unsigned int ts_nsec;=0D };=0D };=0D =0D struct tpacket_hdr_v1 {=0D __u32 block_status;=0D __u32 num_pkts;=0D __u32 offset_to_first_pkt;=0D =0D =0D =0D =0D __u32 blk_len;=0D # 209 "./include/uapi/linux/if_packet.h"=0D __u64 __attribute__((aligned(8))) seq_num;=0D # 236 "./include/uapi/linux/if_packet.h"=0D struct tpacket_bd_ts ts_first_pkt, ts_last_pkt;=0D };=0D =0D union tpacket_bd_header_u {=0D struct tpacket_hdr_v1 bh1;=0D };=0D =0D struct tpacket_block_desc {=0D __u32 version;=0D __u32 offset_to_priv;=0D union tpacket_bd_header_u hdr;=0D };=0D =0D =0D =0D =0D enum tpacket_versions {=0D TPACKET_V1,=0D TPACKET_V2,=0D TPACKET_V3=0D };=0D # 271 "./include/uapi/linux/if_packet.h"=0D struct tpacket_req {=0D unsigned int tp_block_size;=0D unsigned int tp_block_nr;=0D unsigned int tp_frame_size;=0D unsigned int tp_frame_nr;=0D };=0D =0D struct tpacket_req3 {=0D unsigned int tp_block_size;=0D unsigned int tp_block_nr;=0D unsigned int tp_frame_size;=0D unsigned int tp_frame_nr;=0D unsigned int tp_retire_blk_tov;=0D unsigned int tp_sizeof_priv;=0D unsigned int tp_feature_req_word;=0D };=0D =0D union tpacket_req_u {=0D struct tpacket_req req;=0D struct tpacket_req3 req3;=0D };=0D =0D struct packet_mreq {=0D int mr_ifindex;=0D unsigned short mr_type;=0D unsigned short mr_alen;=0D unsigned char mr_address[8];=0D };=0D =0D struct fanout_args {=0D =0D __u16 id;=0D __u16 type_flags;=0D =0D =0D =0D =0D __u32 max_num_members;=0D };=0D # 39 "./include/linux/skbuff.h" 2=0D =0D =0D # 1 "./include/net/page_pool.h" 1=0D # 34 "./include/net/page_pool.h"=0D # 1 "./include/linux/ptr_ring.h" 1=0D # 27 "./include/linux/ptr_ring.h"=0D # 1 "./arch/riscv/include/generated/uapi/asm/errno.h" 1=0D # 28 "./include/linux/ptr_ring.h" 2=0D =0D =0D struct ptr_ring {=0D int producer __attribute__((__aligned__((1 << 6))));=0D spinlock_t producer_lock;=0D int consumer_head __attribute__((__aligned__((1 << 6))));=0D int consumer_tail;=0D spinlock_t consumer_lock;=0D =0D =0D int size __attribute__((__aligned__((1 << 6))));=0D int batch;=0D void **queue;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __ptr_ring_full(struct = ptr_ring *r)=0D {=0D return r->queue[r->producer];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_full(struct pt= r_ring *r)=0D {=0D bool ret;=0D =0D spin_lock(&r->producer_lock);=0D ret =3D __ptr_ring_full(r);=0D spin_unlock(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_full_irq(struc= t ptr_ring *r)=0D {=0D bool ret;=0D =0D spin_lock_irq(&r->producer_lock);=0D ret =3D __ptr_ring_full(r);=0D spin_unlock_irq(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_full_any(struc= t ptr_ring *r)=0D {=0D unsigned long flags;=0D bool ret;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->producer_lock)); } while (0); } while (0);=0D ret =3D __ptr_ring_full(r);=0D spin_unlock_irqrestore(&r->producer_lock, flags);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_full_bh(struct= ptr_ring *r)=0D {=0D bool ret;=0D =0D spin_lock_bh(&r->producer_lock);=0D ret =3D __ptr_ring_full(r);=0D spin_unlock_bh(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ptr_ring_produce(struc= t ptr_ring *r, void *ptr)=0D {=0D if (__builtin_expect(!!(!r->size), 0) || r->queue[r->producer])=0D return -28;=0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "w" "," "w" : : : "m= emory"); } while (0);=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 60(void) ; if (!((sizeof(r->queue[r->producer++]) =3D=3D sizeof(char) || si= zeof(r->queue[r->producer++]) =3D=3D sizeof(short) || sizeof(r->queue[r->pr= oducer++]) =3D=3D sizeof(int) || sizeof(r->queue[r->producer++]) =3D=3D siz= eof(long)) || sizeof(r->queue[r->producer++]) =3D=3D sizeof(long long))) __= compiletime_assert_260(); } while (0); do { *(volatile typeof(r->queue[r->p= roducer++]) *)&(r->queue[r->producer++]) =3D (ptr); } while (0); } while (0= );=0D if (__builtin_expect(!!(r->producer >=3D r->size), 0))=0D r->producer =3D 0;=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_produce(struct = ptr_ring *r, void *ptr)=0D {=0D int ret;=0D =0D spin_lock(&r->producer_lock);=0D ret =3D __ptr_ring_produce(r, ptr);=0D spin_unlock(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_produce_irq(str= uct ptr_ring *r, void *ptr)=0D {=0D int ret;=0D =0D spin_lock_irq(&r->producer_lock);=0D ret =3D __ptr_ring_produce(r, ptr);=0D spin_unlock_irq(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_produce_any(str= uct ptr_ring *r, void *ptr)=0D {=0D unsigned long flags;=0D int ret;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->producer_lock)); } while (0); } while (0);=0D ret =3D __ptr_ring_produce(r, ptr);=0D spin_unlock_irqrestore(&r->producer_lock, flags);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_produce_bh(stru= ct ptr_ring *r, void *ptr)=0D {=0D int ret;=0D =0D spin_lock_bh(&r->producer_lock);=0D ret =3D __ptr_ring_produce(r, ptr);=0D spin_unlock_bh(&r->producer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__ptr_ring_peek(struct= ptr_ring *r)=0D {=0D if (__builtin_expect(!!(r->size), 1))=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_261(void) ; if (!((sizeof(r->queue[r->consumer_head]) =3D=3D sizeof(ch= ar) || sizeof(r->queue[r->consumer_head]) =3D=3D sizeof(short) || sizeof(r-= >queue[r->consumer_head]) =3D=3D sizeof(int) || sizeof(r->queue[r->consumer= _head]) =3D=3D sizeof(long)) || sizeof(r->queue[r->consumer_head]) =3D=3D s= izeof(long long))) __compiletime_assert_261(); } while (0); (*(const volati= le typeof( _Generic((r->queue[r->consumer_head]), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: (r->queue[r->consumer_head]))) *)&(r->queue[r-= >consumer_head])); });=0D return ((void *)0);=0D }=0D # 194 "./include/linux/ptr_ring.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __ptr_ring_empty(struct= ptr_ring *r)=0D {=0D if (__builtin_expect(!!(r->size), 1))=0D return !r->queue[({ do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_262(void) ; if (!((sizeof(r->consumer_head) =3D=3D sizeof(ch= ar) || sizeof(r->consumer_head) =3D=3D sizeof(short) || sizeof(r->consumer_= head) =3D=3D sizeof(int) || sizeof(r->consumer_head) =3D=3D sizeof(long)) |= | sizeof(r->consumer_head) =3D=3D sizeof(long long))) __compiletime_assert_= 262(); } while (0); (*(const volatile typeof( _Generic((r->consumer_head), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (r->consumer_head))) = *)&(r->consumer_head)); })];=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_empty(struct p= tr_ring *r)=0D {=0D bool ret;=0D =0D spin_lock(&r->consumer_lock);=0D ret =3D __ptr_ring_empty(r);=0D spin_unlock(&r->consumer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_empty_irq(stru= ct ptr_ring *r)=0D {=0D bool ret;=0D =0D spin_lock_irq(&r->consumer_lock);=0D ret =3D __ptr_ring_empty(r);=0D spin_unlock_irq(&r->consumer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_empty_any(stru= ct ptr_ring *r)=0D {=0D unsigned long flags;=0D bool ret;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->consumer_lock)); } while (0); } while (0);=0D ret =3D __ptr_ring_empty(r);=0D spin_unlock_irqrestore(&r->consumer_lock, flags);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptr_ring_empty_bh(struc= t ptr_ring *r)=0D {=0D bool ret;=0D =0D spin_lock_bh(&r->consumer_lock);=0D ret =3D __ptr_ring_empty(r);=0D spin_unlock_bh(&r->consumer_lock);=0D =0D return ret;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ptr_ring_discard_one(= struct ptr_ring *r)=0D {=0D # 264 "./include/linux/ptr_ring.h"=0D int consumer_head =3D r->consumer_head;=0D int head =3D consumer_head++;=0D =0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(consumer_head - r->consumer_tail >=3D r->batch || = consumer_head >=3D r->size), 0)) {=0D =0D =0D =0D =0D =0D =0D while (__builtin_expect(!!(head >=3D r->consumer_tail), 1))=0D r->queue[head--] =3D ((void *)0);=0D r->consumer_tail =3D consumer_head;=0D }=0D if (__builtin_expect(!!(consumer_head >=3D r->size), 0)) {=0D consumer_head =3D 0;=0D r->consumer_tail =3D 0;=0D }=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 63(void) ; if (!((sizeof(r->consumer_head) =3D=3D sizeof(char) || sizeof(r-= >consumer_head) =3D=3D sizeof(short) || sizeof(r->consumer_head) =3D=3D siz= eof(int) || sizeof(r->consumer_head) =3D=3D sizeof(long)) || sizeof(r->cons= umer_head) =3D=3D sizeof(long long))) __compiletime_assert_263(); } while (= 0); do { *(volatile typeof(r->consumer_head) *)&(r->consumer_head) =3D (con= sumer_head); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__ptr_ring_consume(str= uct ptr_ring *r)=0D {=0D void *ptr;=0D =0D =0D =0D =0D =0D ptr =3D __ptr_ring_peek(r);=0D if (ptr)=0D __ptr_ring_discard_one(r);=0D =0D return ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ptr_ring_consume_batch= ed(struct ptr_ring *r,=0D void **array, int n)=0D {=0D void *ptr;=0D int i;=0D =0D for (i =3D 0; i < n; i++) {=0D ptr =3D __ptr_ring_consume(r);=0D if (!ptr)=0D break;=0D array[i] =3D ptr;=0D }=0D =0D return i;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ptr_ring_consume(struc= t ptr_ring *r)=0D {=0D void *ptr;=0D =0D spin_lock(&r->consumer_lock);=0D ptr =3D __ptr_ring_consume(r);=0D spin_unlock(&r->consumer_lock);=0D =0D return ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ptr_ring_consume_irq(s= truct ptr_ring *r)=0D {=0D void *ptr;=0D =0D spin_lock_irq(&r->consumer_lock);=0D ptr =3D __ptr_ring_consume(r);=0D spin_unlock_irq(&r->consumer_lock);=0D =0D return ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ptr_ring_consume_any(s= truct ptr_ring *r)=0D {=0D unsigned long flags;=0D void *ptr;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->consumer_lock)); } while (0); } while (0);=0D ptr =3D __ptr_ring_consume(r);=0D spin_unlock_irqrestore(&r->consumer_lock, flags);=0D =0D return ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ptr_ring_consume_bh(st= ruct ptr_ring *r)=0D {=0D void *ptr;=0D =0D spin_lock_bh(&r->consumer_lock);=0D ptr =3D __ptr_ring_consume(r);=0D spin_unlock_bh(&r->consumer_lock);=0D =0D return ptr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_consume_batched= (struct ptr_ring *r,=0D void **array, int n)=0D {=0D int ret;=0D =0D spin_lock(&r->consumer_lock);=0D ret =3D __ptr_ring_consume_batched(r, array, n);=0D spin_unlock(&r->consumer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_consume_batched= _irq(struct ptr_ring *r,=0D void **array, int n)=0D {=0D int ret;=0D =0D spin_lock_irq(&r->consumer_lock);=0D ret =3D __ptr_ring_consume_batched(r, array, n);=0D spin_unlock_irq(&r->consumer_lock);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_consume_batched= _any(struct ptr_ring *r,=0D void **array, int n)=0D {=0D unsigned long flags;=0D int ret;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->consumer_lock)); } while (0); } while (0);=0D ret =3D __ptr_ring_consume_batched(r, array, n);=0D spin_unlock_irqrestore(&r->consumer_lock, flags);=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_consume_batched= _bh(struct ptr_ring *r,=0D void **array, int n)=0D {=0D int ret;=0D =0D spin_lock_bh(&r->consumer_lock);=0D ret =3D __ptr_ring_consume_batched(r, array, n);=0D spin_unlock_bh(&r->consumer_lock);=0D =0D return ret;=0D }=0D # 467 "./include/linux/ptr_ring.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void **__ptr_ring_init_queue= _alloc(unsigned int size, gfp_t gfp)=0D {=0D if (size > (1UL << (11 + (12) - 1)) / sizeof(void *))=0D return ((void *)0);=0D return kvmalloc_array(size, sizeof(void *), gfp | (( gfp_t)0x100u));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ptr_ring_set_size(str= uct ptr_ring *r, int size)=0D {=0D r->size =3D size;=0D r->batch =3D (1 << 6) * 2 / sizeof(*(r->queue));=0D =0D =0D =0D =0D =0D if (r->batch > r->size / 2 || !r->batch)=0D r->batch =3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_init(struct ptr= _ring *r, int size, gfp_t gfp)=0D {=0D r->queue =3D __ptr_ring_init_queue_alloc(size, gfp);=0D if (!r->queue)=0D return -12;=0D =0D __ptr_ring_set_size(r, size);=0D r->producer =3D r->consumer_head =3D r->consumer_tail =3D 0;=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_che= ck(&r->producer_lock), "&r->producer_lock", &__key, LD_WAIT_CONFIG); } whil= e (0);=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_che= ck(&r->consumer_lock), "&r->consumer_lock", &__key, LD_WAIT_CONFIG); } whil= e (0);=0D =0D return 0;=0D }=0D # 511 "./include/linux/ptr_ring.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptr_ring_unconsume(stru= ct ptr_ring *r, void **batch, int n,=0D void (*destroy)(void *))=0D {=0D unsigned long flags;=0D int head;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&r->consumer_lock)); } while (0); } while (0);=0D spin_lock(&r->producer_lock);=0D =0D if (!r->size)=0D goto done;=0D =0D =0D =0D =0D =0D head =3D r->consumer_head - 1;=0D while (__builtin_expect(!!(head >=3D r->consumer_tail), 1))=0D r->queue[head--] =3D ((void *)0);=0D r->consumer_tail =3D r->consumer_head;=0D =0D =0D =0D =0D =0D while (n) {=0D head =3D r->consumer_head - 1;=0D if (head < 0)=0D head =3D r->size - 1;=0D if (r->queue[head]) {=0D =0D goto done;=0D }=0D r->queue[head] =3D batch[--n];=0D r->consumer_tail =3D head;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 264(void) ; if (!((sizeof(r->consumer_head) =3D=3D sizeof(char) || sizeof(r= ->consumer_head) =3D=3D sizeof(short) || sizeof(r->consumer_head) =3D=3D si= zeof(int) || sizeof(r->consumer_head) =3D=3D sizeof(long)) || sizeof(r->con= sumer_head) =3D=3D sizeof(long long))) __compiletime_assert_264(); } while = (0); do { *(volatile typeof(r->consumer_head) *)&(r->consumer_head) =3D (he= ad); } while (0); } while (0);=0D }=0D =0D done:=0D =0D while (n)=0D destroy(batch[--n]);=0D spin_unlock(&r->producer_lock);=0D spin_unlock_irqrestore(&r->consumer_lock, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void **__ptr_ring_swap_queue= (struct ptr_ring *r, void **queue,=0D int size, gfp_t gfp,=0D void (*destroy)(void *))=0D {=0D int producer =3D 0;=0D void **old;=0D void *ptr;=0D =0D while ((ptr =3D __ptr_ring_consume(r)))=0D if (producer < size)=0D queue[producer++] =3D ptr;=0D else if (destroy)=0D destroy(ptr);=0D =0D if (producer >=3D size)=0D producer =3D 0;=0D __ptr_ring_set_size(r, size);=0D r->producer =3D producer;=0D r->consumer_head =3D 0;=0D r->consumer_tail =3D 0;=0D old =3D r->queue;=0D r->queue =3D queue;=0D =0D return old;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_resize(struct p= tr_ring *r, int size, gfp_t gfp,=0D void (*destroy)(void *))=0D {=0D unsigned long flags;=0D void **queue =3D __ptr_ring_init_queue_alloc(size, gfp);=0D void **old;=0D =0D if (!queue)=0D return -12;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_check= (&(r)->consumer_lock)); } while (0); } while (0);=0D spin_lock(&(r)->producer_lock);=0D =0D old =3D __ptr_ring_swap_queue(r, queue, size, gfp, destroy);=0D =0D spin_unlock(&(r)->producer_lock);=0D spin_unlock_irqrestore(&(r)->consumer_lock, flags);=0D =0D kvfree(old);=0D =0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptr_ring_resize_multiple= (struct ptr_ring **rings,=0D unsigned int nrings,=0D int size,=0D gfp_t gfp, void (*destroy)(void *))=0D {=0D unsigned long flags;=0D void ***queues;=0D int i;=0D =0D queues =3D kmalloc_array(nrings, sizeof(*queues), gfp);=0D if (!queues)=0D goto noqueues;=0D =0D for (i =3D 0; i < nrings; ++i) {=0D queues[i] =3D __ptr_ring_init_queue_alloc(size, gfp);=0D if (!queues[i])=0D goto nomem;=0D }=0D =0D for (i =3D 0; i < nrings; ++i) {=0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dum= my =3D=3D &__dummy2); 1; }); flags =3D _raw_spin_lock_irqsave(spinlock_chec= k(&(rings[i])->consumer_lock)); } while (0); } while (0);=0D spin_lock(&(rings[i])->producer_lock);=0D queues[i] =3D __ptr_ring_swap_queue(rings[i], queues[i],=0D size, gfp, destroy);=0D spin_unlock(&(rings[i])->producer_lock);=0D spin_unlock_irqrestore(&(rings[i])->consumer_lock, flags);=0D }=0D =0D for (i =3D 0; i < nrings; ++i)=0D kvfree(queues[i]);=0D =0D kfree(queues);=0D =0D return 0;=0D =0D nomem:=0D while (--i >=3D 0)=0D kvfree(queues[i]);=0D =0D kfree(queues);=0D =0D noqueues:=0D return -12;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptr_ring_cleanup(struct= ptr_ring *r, void (*destroy)(void *))=0D {=0D void *ptr;=0D =0D if (destroy)=0D while ((ptr =3D ptr_ring_consume(r)))=0D destroy(ptr);=0D kvfree(r->queue);=0D }=0D # 35 "./include/net/page_pool.h" 2=0D # 69 "./include/net/page_pool.h"=0D struct pp_alloc_cache {=0D u32 count;=0D struct page *cache[128];=0D };=0D =0D struct page_pool_params {=0D unsigned int flags;=0D unsigned int order;=0D unsigned int pool_size;=0D int nid;=0D struct device *dev;=0D enum dma_data_direction dma_dir;=0D unsigned int max_len;=0D unsigned int offset;=0D void (*init_callback)(struct page *page, void *arg);=0D void *init_arg;=0D };=0D # 129 "./include/net/page_pool.h"=0D struct page_pool {=0D struct page_pool_params p;=0D =0D struct delayed_work release_dw;=0D void (*disconnect)(void *);=0D unsigned long defer_start;=0D unsigned long defer_warn;=0D =0D u32 pages_state_hold_cnt;=0D unsigned int frag_offset;=0D struct page *frag_page;=0D long frag_users;=0D =0D =0D =0D =0D =0D u32 xdp_mem_id;=0D # 161 "./include/net/page_pool.h"=0D struct pp_alloc_cache alloc __attribute__((__aligned__((1 << 6))));=0D # 174 "./include/net/page_pool.h"=0D struct ptr_ring ring;=0D =0D =0D =0D =0D =0D atomic_t pages_state_release_cnt;=0D =0D =0D =0D =0D =0D refcount_t user_cnt;=0D =0D u64 destroy_cnt;=0D };=0D =0D struct page *page_pool_alloc_pages(struct page_pool *pool, gfp_t gfp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *page_pool_dev_a= lloc_pages(struct page_pool *pool)=0D {=0D gfp_t gfp =3D (((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)) | (( gf= p_t)0x2000u));=0D =0D return page_pool_alloc_pages(pool, gfp);=0D }=0D =0D struct page *page_pool_alloc_frag(struct page_pool *pool, unsigned int *off= set,=0D unsigned int size, gfp_t gfp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *page_pool_dev_a= lloc_frag(struct page_pool *pool,=0D unsigned int *offset,=0D unsigned int size)=0D {=0D gfp_t gfp =3D (((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)) | (( gf= p_t)0x2000u));=0D =0D return page_pool_alloc_frag(pool, offset, size, gfp);=0D }=0D =0D =0D =0D =0D static=0D inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attrib= ute__((patchable_function_entry(0, 0))) enum dma_data_direction page_pool_g= et_dma_dir(struct page_pool *pool)=0D {=0D return pool->p.dma_dir;=0D }=0D =0D bool page_pool_return_skb_page(struct page *page);=0D =0D struct page_pool *page_pool_create(const struct page_pool_params *params);= =0D =0D struct xdp_mem_info;=0D =0D =0D void page_pool_destroy(struct page_pool *pool);=0D void page_pool_use_xdp_mem(struct page_pool *pool, void (*disconnect)(void = *),=0D struct xdp_mem_info *mem);=0D void page_pool_release_page(struct page_pool *pool, struct page *page);=0D void page_pool_put_page_bulk(struct page_pool *pool, void **data,=0D int count);=0D # 255 "./include/net/page_pool.h"=0D void page_pool_put_defragged_page(struct page_pool *pool, struct page *page= ,=0D unsigned int dma_sync_size,=0D bool allow_direct);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_fragment_page= (struct page *page, long nr)=0D {=0D atomic_long_set(&page->pp_frag_count, nr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long page_pool_defrag_page(s= truct page *page, long nr)=0D {=0D long ret;=0D # 277 "./include/net/page_pool.h"=0D if (atomic_long_read(&page->pp_frag_count) =3D=3D nr)=0D return 0;=0D =0D ret =3D atomic_long_sub_return(nr, &page->pp_frag_count);=0D ({ int __ret_warn_on =3D !!(ret < 0); if (__builtin_expect(!!(__ret_warn_o= n), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/net/page_pool.h"), "i" (281), "i" ((1 << 0)|(((9) << 8)= )), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret= _warn_on), 0); });=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_pool_is_last_frag(= struct page_pool *pool,=0D struct page *page)=0D {=0D =0D return !(pool->p.flags & ((((1UL))) << (2))) ||=0D (page_pool_defrag_page(page, 1) =3D=3D 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_put_page(stru= ct page_pool *pool,=0D struct page *page,=0D unsigned int dma_sync_size,=0D bool allow_direct)=0D {=0D =0D =0D =0D =0D if (!page_pool_is_last_frag(pool, page))=0D return;=0D =0D page_pool_put_defragged_page(pool, page, dma_sync_size, allow_direct);=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_put_full_page= (struct page_pool *pool,=0D struct page *page, bool allow_direct)=0D {=0D page_pool_put_page(pool, page, -1, allow_direct);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_recycle_direc= t(struct page_pool *pool,=0D struct page *page)=0D {=0D page_pool_put_full_page(pool, page, true);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dma_addr_t page_pool_get_dma= _addr(struct page *page)=0D {=0D dma_addr_t ret =3D page->dma_addr;=0D =0D if ((sizeof(dma_addr_t) > sizeof(unsigned long)))=0D ret |=3D (dma_addr_t)page->dma_addr_upper << 16 << 16;=0D =0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_set_dma_addr(= struct page *page, dma_addr_t addr)=0D {=0D page->dma_addr =3D addr;=0D if ((sizeof(dma_addr_t) > sizeof(unsigned long)))=0D page->dma_addr_upper =3D ((u32)(((addr) >> 16) >> 16));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_page_pool_compiled_i= n(void)=0D {=0D =0D return true;=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool page_pool_put(struct pa= ge_pool *pool)=0D {=0D return refcount_dec_and_test(&pool->user_cnt);=0D }=0D =0D =0D void page_pool_update_nid(struct page_pool *pool, int new_nid);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_nid_changed(s= truct page_pool *pool, int new_nid)=0D {=0D if (__builtin_expect(!!(pool->p.nid !=3D new_nid), 0))=0D page_pool_update_nid(pool, new_nid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_ring_lock(str= uct page_pool *pool)=0D =0D {=0D if (((preempt_count() & (((1UL << (8))-1) << (0 + 8))) & (1UL << (0 + 8)))= )=0D spin_lock(&pool->ring.producer_lock);=0D else=0D spin_lock_bh(&pool->ring.producer_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_pool_ring_unlock(s= truct page_pool *pool)=0D =0D {=0D if (((preempt_count() & (((1UL << (8))-1) << (0 + 8))) & (1UL << (0 + 8)))= )=0D spin_unlock(&pool->ring.producer_lock);=0D else=0D spin_unlock_bh(&pool->ring.producer_lock);=0D }=0D # 42 "./include/linux/skbuff.h" 2=0D # 243 "./include/linux/skbuff.h"=0D struct ahash_request;=0D struct net_device;=0D struct scatterlist;=0D struct pipe_inode_info;=0D struct iov_iter;=0D struct napi_struct;=0D struct bpf_prog;=0D union bpf_attr;=0D struct skb_ext;=0D # 297 "./include/linux/skbuff.h"=0D struct sk_buff_head {=0D =0D union { struct { struct sk_buff *next; struct sk_buff *prev; } ; struct sk= _buff_list { struct sk_buff *next; struct sk_buff *prev; } list; };=0D =0D =0D =0D =0D __u32 qlen;=0D spinlock_t lock;=0D };=0D =0D struct sk_buff;=0D =0D =0D =0D =0D =0D =0D =0D enum skb_drop_reason {=0D SKB_NOT_DROPPED_YET =3D 0,=0D SKB_DROP_REASON_NOT_SPECIFIED,=0D SKB_DROP_REASON_NO_SOCKET,=0D SKB_DROP_REASON_PKT_TOO_SMALL,=0D SKB_DROP_REASON_TCP_CSUM,=0D SKB_DROP_REASON_SOCKET_FILTER,=0D SKB_DROP_REASON_UDP_CSUM,=0D SKB_DROP_REASON_NETFILTER_DROP,=0D SKB_DROP_REASON_OTHERHOST,=0D =0D =0D =0D SKB_DROP_REASON_IP_CSUM,=0D SKB_DROP_REASON_IP_INHDR,=0D =0D =0D =0D SKB_DROP_REASON_IP_RPFILTER,=0D =0D =0D =0D =0D SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,=0D =0D =0D =0D SKB_DROP_REASON_XFRM_POLICY,=0D SKB_DROP_REASON_IP_NOPROTO,=0D SKB_DROP_REASON_SOCKET_RCVBUFF,=0D SKB_DROP_REASON_PROTO_MEM,=0D =0D =0D =0D SKB_DROP_REASON_TCP_MD5NOTFOUND,=0D =0D =0D =0D SKB_DROP_REASON_TCP_MD5UNEXPECTED,=0D =0D =0D =0D SKB_DROP_REASON_TCP_MD5FAILURE,=0D =0D =0D =0D SKB_DROP_REASON_SOCKET_BACKLOG,=0D =0D =0D =0D SKB_DROP_REASON_TCP_FLAGS,=0D SKB_DROP_REASON_TCP_ZEROWINDOW,=0D =0D =0D SKB_DROP_REASON_TCP_OLD_DATA,=0D =0D =0D =0D =0D SKB_DROP_REASON_TCP_OVERWINDOW,=0D =0D =0D =0D =0D SKB_DROP_REASON_TCP_OFOMERGE,=0D =0D =0D =0D SKB_DROP_REASON_IP_OUTNOROUTES,=0D SKB_DROP_REASON_BPF_CGROUP_EGRESS,=0D =0D =0D =0D SKB_DROP_REASON_IPV6DISABLED,=0D SKB_DROP_REASON_NEIGH_CREATEFAIL,=0D =0D =0D SKB_DROP_REASON_NEIGH_FAILED,=0D SKB_DROP_REASON_NEIGH_QUEUEFULL,=0D =0D =0D SKB_DROP_REASON_NEIGH_DEAD,=0D SKB_DROP_REASON_TC_EGRESS,=0D SKB_DROP_REASON_QDISC_DROP,=0D =0D =0D =0D SKB_DROP_REASON_CPU_BACKLOG,=0D =0D =0D =0D =0D =0D SKB_DROP_REASON_XDP,=0D SKB_DROP_REASON_TC_INGRESS,=0D SKB_DROP_REASON_PTYPE_ABSENT,=0D =0D =0D =0D =0D SKB_DROP_REASON_SKB_CSUM,=0D =0D =0D SKB_DROP_REASON_SKB_GSO_SEG,=0D SKB_DROP_REASON_SKB_UCOPY_FAULT,=0D =0D =0D =0D =0D SKB_DROP_REASON_DEV_HDR,=0D =0D =0D =0D =0D =0D =0D SKB_DROP_REASON_DEV_READY,=0D SKB_DROP_REASON_FULL_RING,=0D SKB_DROP_REASON_NOMEM,=0D SKB_DROP_REASON_HDR_TRUNC,=0D =0D =0D =0D =0D SKB_DROP_REASON_TAP_FILTER,=0D =0D =0D =0D SKB_DROP_REASON_TAP_TXFILTER,=0D =0D =0D SKB_DROP_REASON_MAX,=0D };=0D # 462 "./include/linux/skbuff.h"=0D extern int sysctl_max_skb_frags;=0D =0D =0D =0D =0D =0D =0D typedef struct bio_vec skb_frag_t;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_frag_size(c= onst skb_frag_t *frag)=0D {=0D return frag->bv_len;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_size_set(skb_f= rag_t *frag, unsigned int size)=0D {=0D frag->bv_len =3D size;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_size_add(skb_f= rag_t *frag, int delta)=0D {=0D frag->bv_len +=3D delta;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_size_sub(skb_f= rag_t *frag, int delta)=0D {=0D frag->bv_len -=3D delta;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_frag_must_loop(stru= ct page *p)=0D {=0D =0D =0D =0D =0D return false;=0D }=0D # 566 "./include/linux/skbuff.h"=0D struct skb_shared_hwtstamps {=0D ktime_t hwtstamp;=0D };=0D =0D =0D enum {=0D =0D SKBTX_HW_TSTAMP =3D 1 << 0,=0D =0D =0D SKBTX_SW_TSTAMP =3D 1 << 1,=0D =0D =0D SKBTX_IN_PROGRESS =3D 1 << 2,=0D =0D =0D SKBTX_WIFI_STATUS =3D 1 << 4,=0D =0D =0D SKBTX_SCHED_TSTAMP =3D 1 << 6,=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D =0D SKBFL_ZEROCOPY_ENABLE =3D ((((1UL))) << (0)),=0D =0D =0D =0D =0D =0D =0D SKBFL_SHARED_FRAG =3D ((((1UL))) << (1)),=0D =0D =0D =0D =0D SKBFL_PURE_ZEROCOPY =3D ((((1UL))) << (2)),=0D };=0D # 621 "./include/linux/skbuff.h"=0D struct ubuf_info {=0D void (*callback)(struct sk_buff *, struct ubuf_info *,=0D bool zerocopy_success);=0D union {=0D struct {=0D unsigned long desc;=0D void *ctx;=0D };=0D struct {=0D u32 id;=0D u16 len;=0D u16 zerocopy:1;=0D u32 bytelen;=0D };=0D };=0D refcount_t refcnt;=0D u8 flags;=0D =0D struct mmpin {=0D struct user_struct *user;=0D unsigned int num_pg;=0D } mmp;=0D };=0D =0D =0D =0D int mm_account_pinned_pages(struct mmpin *mmp, size_t size);=0D void mm_unaccount_pinned_pages(struct mmpin *mmp);=0D =0D struct ubuf_info *msg_zerocopy_alloc(struct sock *sk, size_t size);=0D struct ubuf_info *msg_zerocopy_realloc(struct sock *sk, size_t size,=0D struct ubuf_info *uarg);=0D =0D void msg_zerocopy_put_abort(struct ubuf_info *uarg, bool have_uref);=0D =0D void msg_zerocopy_callback(struct sk_buff *skb, struct ubuf_info *uarg,=0D bool success);=0D =0D int skb_zerocopy_iter_dgram(struct sk_buff *skb, struct msghdr *msg, int le= n);=0D int skb_zerocopy_iter_stream(struct sock *sk, struct sk_buff *skb,=0D struct msghdr *msg, int len,=0D struct ubuf_info *uarg);=0D =0D =0D =0D =0D struct skb_shared_info {=0D __u8 flags;=0D __u8 meta_len;=0D __u8 nr_frags;=0D __u8 tx_flags;=0D unsigned short gso_size;=0D =0D unsigned short gso_segs;=0D struct sk_buff *frag_list;=0D struct skb_shared_hwtstamps hwtstamps;=0D unsigned int gso_type;=0D u32 tskey;=0D =0D =0D =0D =0D atomic_t dataref;=0D unsigned int xdp_frags_size;=0D =0D =0D =0D void * destructor_arg;=0D =0D =0D skb_frag_t frags[(65536/((1UL) << (12)) + 1)];=0D };=0D # 709 "./include/linux/skbuff.h"=0D enum {=0D SKB_FCLONE_UNAVAILABLE,=0D SKB_FCLONE_ORIG,=0D SKB_FCLONE_CLONE,=0D };=0D =0D enum {=0D SKB_GSO_TCPV4 =3D 1 << 0,=0D =0D =0D SKB_GSO_DODGY =3D 1 << 1,=0D =0D =0D SKB_GSO_TCP_ECN =3D 1 << 2,=0D =0D SKB_GSO_TCP_FIXEDID =3D 1 << 3,=0D =0D SKB_GSO_TCPV6 =3D 1 << 4,=0D =0D SKB_GSO_FCOE =3D 1 << 5,=0D =0D SKB_GSO_GRE =3D 1 << 6,=0D =0D SKB_GSO_GRE_CSUM =3D 1 << 7,=0D =0D SKB_GSO_IPXIP4 =3D 1 << 8,=0D =0D SKB_GSO_IPXIP6 =3D 1 << 9,=0D =0D SKB_GSO_UDP_TUNNEL =3D 1 << 10,=0D =0D SKB_GSO_UDP_TUNNEL_CSUM =3D 1 << 11,=0D =0D SKB_GSO_PARTIAL =3D 1 << 12,=0D =0D SKB_GSO_TUNNEL_REMCSUM =3D 1 << 13,=0D =0D SKB_GSO_SCTP =3D 1 << 14,=0D =0D SKB_GSO_ESP =3D 1 << 15,=0D =0D SKB_GSO_UDP =3D 1 << 16,=0D =0D SKB_GSO_UDP_L4 =3D 1 << 17,=0D =0D SKB_GSO_FRAGLIST =3D 1 << 18,=0D };=0D =0D =0D =0D =0D =0D =0D typedef unsigned int sk_buff_data_t;=0D # 880 "./include/linux/skbuff.h"=0D struct sk_buff {=0D union {=0D struct {=0D =0D struct sk_buff *next;=0D struct sk_buff *prev;=0D =0D union {=0D struct net_device *dev;=0D =0D =0D =0D =0D unsigned long dev_scratch;=0D };=0D };=0D struct rb_node rbnode;=0D struct list_head list;=0D struct llist_node ll_node;=0D };=0D =0D union {=0D struct sock *sk;=0D int ip_defrag_offset;=0D };=0D =0D union {=0D ktime_t tstamp;=0D u64 skb_mstamp_ns;=0D };=0D =0D =0D =0D =0D =0D =0D char cb[48] __attribute__((__aligned__(8)));=0D =0D union {=0D struct {=0D unsigned long _skb_refdst;=0D void (*destructor)(struct sk_buff *skb);=0D };=0D struct list_head tcp_tsorted_anchor;=0D =0D unsigned long _sk_redir;=0D =0D };=0D =0D =0D =0D =0D unsigned int len,=0D data_len;=0D __u16 mac_len,=0D hdr_len;=0D =0D =0D =0D =0D __u16 queue_mapping;=0D # 951 "./include/linux/skbuff.h"=0D __u8 __cloned_offset[0];=0D =0D __u8 cloned:1,=0D nohdr:1,=0D fclone:2,=0D peeked:1,=0D head_frag:1,=0D pfmemalloc:1,=0D pp_recycle:1;=0D =0D =0D =0D =0D =0D =0D =0D union { struct { __u8 __pkt_type_offset[0]; __u8 pkt_type:3; __u8 ignore_d= f:1; __u8 nf_trace:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8 l4_hash:1; __= u8 sw_hash:1; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; __u8 no_fcs:1; __= u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1; __u8 __pkt_vl= an_present_offset[0]; __u8 vlan_present:1; __u8 csum_complete_sw:1; __u8 cs= um_level:2; __u8 dst_pending_confirm:1; __u8 mono_delivery_time:1; __u8 ndi= sc_nodetype:2; __u8 ipvs_property:1; __u8 inner_protocol_type:1; __u8 remcs= um_offload:1; __u8 redirected:1; __u8 slow_gro:1; __u8 csum_not_inet:1; uni= on { __wsum csum; struct { __u16 csum_start; __u16 csum_offset; }; }; __u32= priority; int skb_iif; __u32 hash; __be16 vlan_proto; __u16 vlan_tci; unio= n { unsigned int napi_id; unsigned int sender_cpu; }; union { __u32 mark; _= _u32 reserved_tailroom; }; union { __be16 inner_protocol; __u8 inner_ipprot= o; }; __u16 inner_transport_header; __u16 inner_network_header; __u16 inner= _mac_header; __be16 protocol; __u16 transport_header; __u16 network_header;= __u16 mac_header; } ; struct { __u8 __pkt_type_offset[0]; __u8 pkt_type:3;= __u8 ignore_df:1; __u8 nf_trace:1; __u8 ip_summed:2; __u8 ooo_okay:1; __u8= l4_hash:1; __u8 sw_hash:1; __u8 wifi_acked_valid:1; __u8 wifi_acked:1; __u= 8 no_fcs:1; __u8 encapsulation:1; __u8 encap_hdr_csum:1; __u8 csum_valid:1;= __u8 __pkt_vlan_present_offset[0]; __u8 vlan_present:1; __u8 csum_complete= _sw:1; __u8 csum_level:2; __u8 dst_pending_confirm:1; __u8 mono_delivery_ti= me:1; __u8 ndisc_nodetype:2; __u8 ipvs_property:1; __u8 inner_protocol_type= :1; __u8 remcsum_offload:1; __u8 redirected:1; __u8 slow_gro:1; __u8 csum_n= ot_inet:1; union { __wsum csum; struct { __u16 csum_start; __u16 csum_offse= t; }; }; __u32 priority; int skb_iif; __u32 hash; __be16 vlan_proto; __u16 = vlan_tci; union { unsigned int napi_id; unsigned int sender_cpu; }; union {= __u32 mark; __u32 reserved_tailroom; }; union { __be16 inner_protocol; __u= 8 inner_ipproto; }; __u16 inner_transport_header; __u16 inner_network_heade= r; __u16 inner_mac_header; __be16 protocol; __u16 transport_header; __u16 n= etwork_header; __u16 mac_header; } headers; };=0D # 1076 "./include/linux/skbuff.h"=0D sk_buff_data_t tail;=0D sk_buff_data_t end;=0D unsigned char *head,=0D *data;=0D unsigned int truesize;=0D refcount_t users;=0D =0D =0D =0D =0D =0D };=0D # 1124 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_pfmemalloc(const st= ruct sk_buff *skb)=0D {=0D return __builtin_expect(!!(skb->pfmemalloc), 0);=0D }=0D # 1142 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *skb_dst(co= nst struct sk_buff *skb)=0D {=0D =0D =0D =0D ({ int __ret_warn_on =3D !!((skb->_skb_refdst & 1UL) && !rcu_read_lock_hel= d() && !rcu_read_lock_bh_held()); if (__builtin_expect(!!(__ret_warn_on), 0= )) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tabl= e,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" = ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : := "i" ("include/linux/skbuff.h"), "i" (1149), "i" ((1 << 0)|(((9) << 8))), "= i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn= _on), 0); });=0D =0D =0D return (struct dst_entry *)(skb->_skb_refdst & ~(1UL));=0D }=0D # 1161 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_set(struct sk_b= uff *skb, struct dst_entry *dst)=0D {=0D skb->slow_gro |=3D !!dst;=0D skb->_skb_refdst =3D (unsigned long)dst;=0D }=0D # 1177 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_set_noref(struc= t sk_buff *skb, struct dst_entry *dst)=0D {=0D ({ int __ret_warn_on =3D !!(!rcu_read_lock_held() && !rcu_read_lock_bh_hel= d()); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.= h"), "i" (1179), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry)= )); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D skb->slow_gro |=3D !!dst;=0D skb->_skb_refdst =3D (unsigned long)dst | 1UL;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_dst_is_noref(const = struct sk_buff *skb)=0D {=0D return (skb->_skb_refdst & 1UL) && skb_dst(skb);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *skb_rtable(co= nst struct sk_buff *skb)=0D {=0D return (struct rtable *)skb_dst(skb);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_pkt_type_ok(u32 pty= pe)=0D {=0D return ptype <=3D 3;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_napi_id(con= st struct sk_buff *skb)=0D {=0D =0D return skb->napi_id;=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_unref(struct sk_buf= f *skb)=0D {=0D if (__builtin_expect(!!(!skb), 0))=0D return false;=0D if (__builtin_expect(!!(refcount_read(&skb->users) =3D=3D 1), 1))=0D do { do { } while (0); __asm__ __volatile__ ("fence " "r" "," "r" : : : "= memory"); } while (0);=0D else if (__builtin_expect(!!(!refcount_dec_and_test(&skb->users)), 1))=0D return false;=0D =0D return true;=0D }=0D =0D void kfree_skb_reason(struct sk_buff *skb, enum skb_drop_reason reason);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kfree_skb(struct sk_buf= f *skb)=0D {=0D kfree_skb_reason(skb, SKB_DROP_REASON_NOT_SPECIFIED);=0D }=0D =0D void skb_release_head_state(struct sk_buff *skb);=0D void kfree_skb_list_reason(struct sk_buff *segs,=0D enum skb_drop_reason reason);=0D void skb_dump(const char *level, const struct sk_buff *skb, bool full_pkt);= =0D void skb_tx_error(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kfree_skb_list(struct s= k_buff *segs)=0D {=0D kfree_skb_list_reason(segs, SKB_DROP_REASON_NOT_SPECIFIED);=0D }=0D =0D =0D void consume_skb(struct sk_buff *skb);=0D =0D =0D =0D =0D =0D =0D =0D void __consume_stateless_skb(struct sk_buff *skb);=0D void __kfree_skb(struct sk_buff *skb);=0D extern struct kmem_cache *skbuff_head_cache;=0D =0D void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);=0D bool skb_try_coalesce(struct sk_buff *to, struct sk_buff *from,=0D bool *fragstolen, int *delta_truesize);=0D =0D struct sk_buff *__alloc_skb(unsigned int size, gfp_t priority, int flags,=0D int node);=0D struct sk_buff *__build_skb(void *data, unsigned int frag_size);=0D struct sk_buff *build_skb(void *data, unsigned int frag_size);=0D struct sk_buff *build_skb_around(struct sk_buff *skb,=0D void *data, unsigned int frag_size);=0D =0D struct sk_buff *napi_build_skb(void *data, unsigned int frag_size);=0D # 1297 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *alloc_skb(un= signed int size,=0D gfp_t priority)=0D {=0D return __alloc_skb(size, priority, 0, (-1));=0D }=0D =0D struct sk_buff *alloc_skb_with_frags(unsigned long header_len,=0D unsigned long data_len,=0D int max_page_order,=0D int *errcode,=0D gfp_t gfp_mask);=0D struct sk_buff *alloc_skb_for_msg(struct sk_buff *first);=0D =0D =0D struct sk_buff_fclones {=0D struct sk_buff skb1;=0D =0D struct sk_buff skb2;=0D =0D refcount_t fclone_ref;=0D };=0D # 1328 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_fclone_busy(const s= truct sock *sk,=0D const struct sk_buff *skb)=0D {=0D const struct sk_buff_fclones *fclones;=0D =0D fclones =3D ({ void *__mptr =3D (void *)(skb); _Static_assert(__builtin_ty= pes_compatible_p(typeof(*(skb)), typeof(((struct sk_buff_fclones *)0)->skb1= )) || __builtin_types_compatible_p(typeof(*(skb)), typeof(void)), "pointer = type mismatch in container_of()"); ((struct sk_buff_fclones *)(__mptr - __b= uiltin_offsetof(struct sk_buff_fclones, skb1))); });=0D =0D return skb->fclone =3D=3D SKB_FCLONE_ORIG &&=0D refcount_read(&fclones->fclone_ref) > 1 &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_265(void) ; if (!((sizeof(fclones->skb2.sk) =3D=3D sizeof(char) || size= of(fclones->skb2.sk) =3D=3D sizeof(short) || sizeof(fclones->skb2.sk) =3D= =3D sizeof(int) || sizeof(fclones->skb2.sk) =3D=3D sizeof(long)) || sizeof(= fclones->skb2.sk) =3D=3D sizeof(long long))) __compiletime_assert_265(); } = while (0); (*(const volatile typeof( _Generic((fclones->skb2.sk), char: (ch= ar)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigne= d short: (unsigned short)0, signed short: (signed short)0, unsigned int: (u= nsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, = signed long: (signed long)0, unsigned long long: (unsigned long long)0, sig= ned long long: (signed long long)0, default: (fclones->skb2.sk))) *)&(fclon= es->skb2.sk)); }) =3D=3D sk;=0D }=0D # 1347 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *alloc_skb_fc= lone(unsigned int size,=0D gfp_t priority)=0D {=0D return __alloc_skb(size, priority, 0x01, (-1));=0D }=0D =0D struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);=0D void skb_headers_offset_update(struct sk_buff *skb, int off);=0D int skb_copy_ubufs(struct sk_buff *skb, gfp_t gfp_mask);=0D struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t priority);=0D void skb_copy_header(struct sk_buff *new, const struct sk_buff *old);=0D struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t priority);=0D struct sk_buff *__pskb_copy_fclone(struct sk_buff *skb, int headroom,=0D gfp_t gfp_mask, bool fclone);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__pskb_copy(= struct sk_buff *skb, int headroom,=0D gfp_t gfp_mask)=0D {=0D return __pskb_copy_fclone(skb, headroom, gfp_mask, false);=0D }=0D =0D int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, gfp_t gfp_m= ask);=0D struct sk_buff *skb_realloc_headroom(struct sk_buff *skb,=0D unsigned int headroom);=0D struct sk_buff *skb_expand_head(struct sk_buff *skb, unsigned int headroom)= ;=0D struct sk_buff *skb_copy_expand(const struct sk_buff *skb, int newheadroom,= =0D int newtailroom, gfp_t priority);=0D int __attribute__((__warn_unused_result__)) skb_to_sgvec_nomark(struct sk_b= uff *skb, struct scatterlist *sg,=0D int offset, int len);=0D int __attribute__((__warn_unused_result__)) skb_to_sgvec(struct sk_buff *sk= b, struct scatterlist *sg,=0D int offset, int len);=0D int skb_cow_data(struct sk_buff *skb, int tailbits, struct sk_buff **traile= r);=0D int __skb_pad(struct sk_buff *skb, int pad, bool free_on_error);=0D # 1391 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_pad(struct sk_buff *= skb, int pad)=0D {=0D return __skb_pad(skb, pad, true);=0D }=0D =0D =0D int skb_append_pagefrags(struct sk_buff *skb, struct page *page,=0D int offset, size_t size);=0D =0D struct skb_seq_state {=0D __u32 lower_offset;=0D __u32 upper_offset;=0D __u32 frag_idx;=0D __u32 stepped_offset;=0D struct sk_buff *root_skb;=0D struct sk_buff *cur_skb;=0D __u8 *frag_data;=0D __u32 frag_off;=0D };=0D =0D void skb_prepare_seq_read(struct sk_buff *skb, unsigned int from,=0D unsigned int to, struct skb_seq_state *st);=0D unsigned int skb_seq_read(unsigned int consumed, const u8 **data,=0D struct skb_seq_state *st);=0D void skb_abort_seq_read(struct skb_seq_state *st);=0D =0D unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,=0D unsigned int to, struct ts_config *config);=0D # 1446 "./include/linux/skbuff.h"=0D enum pkt_hash_types {=0D PKT_HASH_TYPE_NONE,=0D PKT_HASH_TYPE_L2,=0D PKT_HASH_TYPE_L3,=0D PKT_HASH_TYPE_L4,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_clear_hash(struct s= k_buff *skb)=0D {=0D skb->hash =3D 0;=0D skb->sw_hash =3D 0;=0D skb->l4_hash =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_clear_hash_if_not_l= 4(struct sk_buff *skb)=0D {=0D if (!skb->l4_hash)=0D skb_clear_hash(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __skb_set_hash(struct sk_buff *skb, __u32 hash, bool is_sw, bool is_l4)=0D {=0D skb->l4_hash =3D is_l4;=0D skb->sw_hash =3D is_sw;=0D skb->hash =3D hash;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D skb_set_hash(struct sk_buff *skb, __u32 hash, enum pkt_hash_types type)=0D {=0D =0D __skb_set_hash(skb, hash, false, type =3D=3D PKT_HASH_TYPE_L4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __skb_set_sw_hash(struct sk_buff *skb, __u32 hash, bool is_l4)=0D {=0D __skb_set_hash(skb, hash, true, is_l4);=0D }=0D =0D void __skb_get_hash(struct sk_buff *skb);=0D u32 __skb_get_hash_symmetric(const struct sk_buff *skb);=0D u32 skb_get_poff(const struct sk_buff *skb);=0D u32 __skb_get_poff(const struct sk_buff *skb, const void *data,=0D const struct flow_keys_basic *keys, int hlen);=0D __be32 __skb_flow_get_ports(const struct sk_buff *skb, int thoff, u8 ip_pro= to,=0D const void *data, int hlen_proto);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 skb_flow_get_ports(co= nst struct sk_buff *skb,=0D int thoff, u8 ip_proto)=0D {=0D return __skb_flow_get_ports(skb, thoff, ip_proto, ((void *)0), 0);=0D }=0D =0D void skb_flow_dissector_init(struct flow_dissector *flow_dissector,=0D const struct flow_dissector_key *key,=0D unsigned int key_count);=0D =0D struct bpf_flow_dissector;=0D bool bpf_flow_dissect(struct bpf_prog *prog, struct bpf_flow_dissector *ctx= ,=0D __be16 proto, int nhoff, int hlen, unsigned int flags);=0D =0D bool __skb_flow_dissect(const struct net *net,=0D const struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container, const void *data,=0D __be16 proto, int nhoff, int hlen, unsigned int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_flow_dissect(const = struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container, unsigned int flags)=0D {=0D return __skb_flow_dissect(((void *)0), skb, flow_dissector,=0D target_container, ((void *)0), 0, 0, 0, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_flow_dissect_flow_k= eys(const struct sk_buff *skb,=0D struct flow_keys *flow,=0D unsigned int flags)=0D {=0D memset(flow, 0, sizeof(*flow));=0D return __skb_flow_dissect(((void *)0), skb, &flow_keys_dissector,=0D flow, ((void *)0), 0, 0, 0, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D skb_flow_dissect_flow_keys_basic(const struct net *net,=0D const struct sk_buff *skb,=0D struct flow_keys_basic *flow,=0D const void *data, __be16 proto,=0D int nhoff, int hlen, unsigned int flags)=0D {=0D memset(flow, 0, sizeof(*flow));=0D return __skb_flow_dissect(net, skb, &flow_keys_basic_dissector, flow,=0D data, proto, nhoff, hlen, flags);=0D }=0D =0D void skb_flow_dissect_meta(const struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container);=0D =0D =0D =0D =0D =0D void=0D skb_flow_dissect_ct(const struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container,=0D u16 *ctinfo_map, size_t mapsize,=0D bool post_ct, u16 zone);=0D void=0D skb_flow_dissect_tunnel_info(const struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container);=0D =0D void skb_flow_dissect_hash(const struct sk_buff *skb,=0D struct flow_dissector *flow_dissector,=0D void *target_container);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 skb_get_hash(struct sk= _buff *skb)=0D {=0D if (!skb->l4_hash && !skb->sw_hash)=0D __skb_get_hash(skb);=0D =0D return skb->hash;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 skb_get_hash_flowi6(st= ruct sk_buff *skb, const struct flowi6 *fl6)=0D {=0D if (!skb->l4_hash && !skb->sw_hash) {=0D struct flow_keys keys;=0D __u32 hash =3D __get_hash_from_flowi6(fl6, &keys);=0D =0D __skb_set_sw_hash(skb, hash, flow_keys_have_l4(&keys));=0D }=0D =0D return skb->hash;=0D }=0D =0D __u32 skb_get_hash_perturb(const struct sk_buff *skb,=0D const siphash_key_t *perturb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 skb_get_hash_raw(const= struct sk_buff *skb)=0D {=0D return skb->hash;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_hash(struct sk= _buff *to, const struct sk_buff *from)=0D {=0D to->hash =3D from->hash;=0D to->sw_hash =3D from->sw_hash;=0D to->l4_hash =3D from->l4_hash;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_decrypted(stru= ct sk_buff *to,=0D const struct sk_buff *from)=0D {=0D =0D =0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_end_point= er(const struct sk_buff *skb)=0D {=0D return skb->head + skb->end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_end_offset(= const struct sk_buff *skb)=0D {=0D return skb->end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_end_offset(stru= ct sk_buff *skb, unsigned int offset)=0D {=0D skb->end =3D offset;=0D }=0D # 1645 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct skb_shared_hwtstamps = *skb_hwtstamps(struct sk_buff *skb)=0D {=0D return &((struct skb_shared_info *)(skb_end_pointer(skb)))->hwtstamps;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ubuf_info *skb_zcopy(= struct sk_buff *skb)=0D {=0D bool is_zcopy =3D skb && ((struct skb_shared_info *)(skb_end_pointer(skb))= )->flags & SKBFL_ZEROCOPY_ENABLE;=0D =0D return is_zcopy ? ((struct ubuf_info *)(((struct skb_shared_info *)(skb_en= d_pointer(skb)))->destructor_arg)) : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_zcopy_pure(const st= ruct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->flags & SKBFL_P= URE_ZEROCOPY;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_pure_zcopy_same(con= st struct sk_buff *skb1,=0D const struct sk_buff *skb2)=0D {=0D return skb_zcopy_pure(skb1) =3D=3D skb_zcopy_pure(skb2);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void net_zcopy_get(struct ub= uf_info *uarg)=0D {=0D refcount_inc(&uarg->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_zcopy_init(struct s= k_buff *skb, struct ubuf_info *uarg)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg =3D uar= g;=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->flags |=3D uarg->flags= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_zcopy_set(struct sk= _buff *skb, struct ubuf_info *uarg,=0D bool *have_ref)=0D {=0D if (skb && uarg && !skb_zcopy(skb)) {=0D if (__builtin_expect(!!(have_ref && *have_ref), 0))=0D *have_ref =3D false;=0D else=0D net_zcopy_get(uarg);=0D skb_zcopy_init(skb, uarg);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_zcopy_set_nouarg(st= ruct sk_buff *skb, void *val)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->destructor_arg =3D (vo= id *)((uintptr_t) val | 0x1UL);=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->flags |=3D (SKBFL_ZERO= COPY_ENABLE | SKBFL_SHARED_FRAG);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_zcopy_is_nouarg(str= uct sk_buff *skb)=0D {=0D return (uintptr_t) ((struct skb_shared_info *)(skb_end_pointer(skb)))->des= tructor_arg & 0x1UL;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_zcopy_get_nouarg(s= truct sk_buff *skb)=0D {=0D return (void *)((uintptr_t) ((struct skb_shared_info *)(skb_end_pointer(sk= b)))->destructor_arg & ~0x1UL);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void net_zcopy_put(struct ub= uf_info *uarg)=0D {=0D if (uarg)=0D uarg->callback(((void *)0), uarg, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void net_zcopy_put_abort(str= uct ubuf_info *uarg, bool have_uref)=0D {=0D if (uarg) {=0D if (uarg->callback =3D=3D msg_zerocopy_callback)=0D msg_zerocopy_put_abort(uarg, have_uref);=0D else if (have_uref)=0D net_zcopy_put(uarg);=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_zcopy_clear(struct = sk_buff *skb, bool zerocopy_success)=0D {=0D struct ubuf_info *uarg =3D skb_zcopy(skb);=0D =0D if (uarg) {=0D if (!skb_zcopy_is_nouarg(skb))=0D uarg->callback(skb, uarg, zerocopy_success);=0D =0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->flags &=3D ~((SKBFL_Z= EROCOPY_ENABLE | SKBFL_SHARED_FRAG) | SKBFL_PURE_ZEROCOPY);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_mark_not_on_list(st= ruct sk_buff *skb)=0D {=0D skb->next =3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_list_del_init(struc= t sk_buff *skb)=0D {=0D __list_del_entry(&skb->list);=0D skb_mark_not_on_list(skb);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_queue_empty(const st= ruct sk_buff_head *list)=0D {=0D return list->next =3D=3D (const struct sk_buff *) list;=0D }=0D # 1770 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_queue_empty_lockles= s(const struct sk_buff_head *list)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_266(void) ; if (!((sizeof(list->next) =3D=3D sizeof(char) || sizeof(lis= t->next) =3D=3D sizeof(short) || sizeof(list->next) =3D=3D sizeof(int) || s= izeof(list->next) =3D=3D sizeof(long)) || sizeof(list->next) =3D=3D sizeof(= long long))) __compiletime_assert_266(); } while (0); (*(const volatile typ= eof( _Generic((list->next), char: (char)0, unsigned char: (unsigned char)0,= signed char: (signed char)0, unsigned short: (unsigned short)0, signed sho= rt: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int= )0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned = long long: (unsigned long long)0, signed long long: (signed long long)0, de= fault: (list->next))) *)&(list->next)); }) =3D=3D (const struct sk_buff *) = list;=0D }=0D # 1783 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_queue_is_last(const= struct sk_buff_head *list,=0D const struct sk_buff *skb)=0D {=0D return skb->next =3D=3D (const struct sk_buff *) list;=0D }=0D # 1796 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_queue_is_first(cons= t struct sk_buff_head *list,=0D const struct sk_buff *skb)=0D {=0D return skb->prev =3D=3D (const struct sk_buff *) list;=0D }=0D # 1810 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_queue_ne= xt(const struct sk_buff_head *list,=0D const struct sk_buff *skb)=0D {=0D =0D =0D =0D do { if (__builtin_expect(!!(skb_queue_is_last(list, skb)), 0)) do { do { = __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"= \n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" = " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("i= nclude/linux/skbuff.h"), "i" (1816), "i" (0), "i" (sizeof(struct bug_entry)= )); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); = } while (0);=0D return skb->next;=0D }=0D # 1828 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_queue_pr= ev(const struct sk_buff_head *list,=0D const struct sk_buff *skb)=0D {=0D =0D =0D =0D do { if (__builtin_expect(!!(skb_queue_is_first(list, skb)), 0)) do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/skbuff.h"), "i" (1834), "i" (0), "i" (sizeof(struct bug_entry= ))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0);= } while (0);=0D return skb->prev;=0D }=0D # 1845 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_get(stru= ct sk_buff *skb)=0D {=0D refcount_inc(&skb->users);=0D return skb;=0D }=0D # 1863 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_cloned(const struct = sk_buff *skb)=0D {=0D return skb->cloned &&=0D (atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb)))->d= ataref) & ((1 << 16) - 1)) !=3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_unclone(struct sk_bu= ff *skb, gfp_t pri)=0D {=0D do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("include/linux/s= kbuff.h", 1871); __cond_resched(); } while (0); } while (0);=0D =0D if (skb_cloned(skb))=0D return pskb_expand_head(skb, 0, 0, pri);=0D =0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D int __skb_unclone_keeptruesize(struct sk_buff *skb, gfp_t pri);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_unclone_keeptruesize= (struct sk_buff *skb, gfp_t pri)=0D {=0D do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("include/linux/s= kbuff.h", 1888); __cond_resched(); } while (0); } while (0);=0D =0D if (skb_cloned(skb))=0D return __skb_unclone_keeptruesize(skb, pri);=0D return 0;=0D }=0D # 1902 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_header_cloned(const = struct sk_buff *skb)=0D {=0D int dataref;=0D =0D if (!skb->cloned)=0D return 0;=0D =0D dataref =3D atomic_read(&((struct skb_shared_info *)(skb_end_pointer(skb))= )->dataref);=0D dataref =3D (dataref & ((1 << 16) - 1)) - (dataref >> 16);=0D return dataref !=3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_header_unclone(struc= t sk_buff *skb, gfp_t pri)=0D {=0D do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("include/linux/s= kbuff.h", 1916); __cond_resched(); } while (0); } while (0);=0D =0D if (skb_header_cloned(skb))=0D return pskb_expand_head(skb, 0, 0, pri);=0D =0D return 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_header_release(st= ruct sk_buff *skb)=0D {=0D skb->nohdr =3D 1;=0D atomic_set(&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref, 1= + (1 << 16));=0D }=0D # 1942 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_shared(const struct = sk_buff *skb)=0D {=0D return refcount_read(&skb->users) !=3D 1;=0D }=0D # 1960 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_share_ch= eck(struct sk_buff *skb, gfp_t pri)=0D {=0D do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("include/linux/s= kbuff.h", 1962); __cond_resched(); } while (0); } while (0);=0D if (skb_shared(skb)) {=0D struct sk_buff *nskb =3D skb_clone(skb, pri);=0D =0D if (__builtin_expect(!!(nskb), 1))=0D consume_skb(skb);=0D else=0D kfree_skb(skb);=0D skb =3D nskb;=0D }=0D return skb;=0D }=0D # 1995 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_unshare(= struct sk_buff *skb,=0D gfp_t pri)=0D {=0D do { if (gfpflags_allow_blocking(pri)) do { __might_sleep("include/linux/s= kbuff.h", 1998); __cond_resched(); } while (0); } while (0);=0D if (skb_cloned(skb)) {=0D struct sk_buff *nskb =3D skb_copy(skb, pri);=0D =0D =0D if (__builtin_expect(!!(nskb), 1))=0D consume_skb(skb);=0D else=0D kfree_skb(skb);=0D skb =3D nskb;=0D }=0D return skb;=0D }=0D # 2025 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_peek(con= st struct sk_buff_head *list_)=0D {=0D struct sk_buff *skb =3D list_->next;=0D =0D if (skb =3D=3D (struct sk_buff *)list_)=0D skb =3D ((void *)0);=0D return skb;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__skb_peek(c= onst struct sk_buff_head *list_)=0D {=0D return list_->next;=0D }=0D # 2054 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_peek_nex= t(struct sk_buff *skb,=0D const struct sk_buff_head *list_)=0D {=0D struct sk_buff *next =3D skb->next;=0D =0D if (next =3D=3D (struct sk_buff *)list_)=0D next =3D ((void *)0);=0D return next;=0D }=0D # 2077 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *skb_peek_tai= l(const struct sk_buff_head *list_)=0D {=0D struct sk_buff *skb =3D ({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_267(void) ; if (!((sizeof(list_->prev) =3D=3D sizeof(c= har) || sizeof(list_->prev) =3D=3D sizeof(short) || sizeof(list_->prev) =3D= =3D sizeof(int) || sizeof(list_->prev) =3D=3D sizeof(long)) || sizeof(list_= ->prev) =3D=3D sizeof(long long))) __compiletime_assert_267(); } while (0);= (*(const volatile typeof( _Generic((list_->prev), char: (char)0, unsigned = char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsig= ned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, = signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (s= igned long)0, unsigned long long: (unsigned long long)0, signed long long: = (signed long long)0, default: (list_->prev))) *)&(list_->prev)); });=0D =0D if (skb =3D=3D (struct sk_buff *)list_)=0D skb =3D ((void *)0);=0D return skb;=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 skb_queue_len(const st= ruct sk_buff_head *list_)=0D {=0D return list_->qlen;=0D }=0D # 2105 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 skb_queue_len_lockless= (const struct sk_buff_head *list_)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_268(void) ; if (!((sizeof(list_->qlen) =3D=3D sizeof(char) || sizeof(li= st_->qlen) =3D=3D sizeof(short) || sizeof(list_->qlen) =3D=3D sizeof(int) |= | sizeof(list_->qlen) =3D=3D sizeof(long)) || sizeof(list_->qlen) =3D=3D si= zeof(long long))) __compiletime_assert_268(); } while (0); (*(const volatil= e typeof( _Generic((list_->qlen), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: (list_->qlen))) *)&(list_->qlen)); });=0D }=0D # 2120 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_head_init(s= truct sk_buff_head *list)=0D {=0D list->prev =3D list->next =3D (struct sk_buff *)list;=0D list->qlen =3D 0;=0D }=0D # 2134 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_head_init(str= uct sk_buff_head *list)=0D {=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_che= ck(&list->lock), "&list->lock", &__key, LD_WAIT_CONFIG); } while (0);=0D __skb_queue_head_init(list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_head_init_cla= ss(struct sk_buff_head *list,=0D struct lock_class_key *class)=0D {=0D skb_queue_head_init(list);=0D lockdep_init_map_waits(&(&list->lock)->dep_map, "class", class, 0, (&list-= >lock)->dep_map.wait_type_inner, (&list->lock)->dep_map.wait_type_outer);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_insert(struct sk_= buff *newsk,=0D struct sk_buff *prev, struct sk_buff *next,=0D struct sk_buff_head *list)=0D {=0D =0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 69(void) ; if (!((sizeof(newsk->next) =3D=3D sizeof(char) || sizeof(newsk->= next) =3D=3D sizeof(short) || sizeof(newsk->next) =3D=3D sizeof(int) || siz= eof(newsk->next) =3D=3D sizeof(long)) || sizeof(newsk->next) =3D=3D sizeof(= long long))) __compiletime_assert_269(); } while (0); do { *(volatile typeo= f(newsk->next) *)&(newsk->next) =3D (next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 70(void) ; if (!((sizeof(newsk->prev) =3D=3D sizeof(char) || sizeof(newsk->= prev) =3D=3D sizeof(short) || sizeof(newsk->prev) =3D=3D sizeof(int) || siz= eof(newsk->prev) =3D=3D sizeof(long)) || sizeof(newsk->prev) =3D=3D sizeof(= long long))) __compiletime_assert_270(); } while (0); do { *(volatile typeo= f(newsk->prev) *)&(newsk->prev) =3D (prev); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 71(void) ; if (!((sizeof(((struct sk_buff_list *)next)->prev) =3D=3D sizeof= (char) || sizeof(((struct sk_buff_list *)next)->prev) =3D=3D sizeof(short) = || sizeof(((struct sk_buff_list *)next)->prev) =3D=3D sizeof(int) || sizeof= (((struct sk_buff_list *)next)->prev) =3D=3D sizeof(long)) || sizeof(((stru= ct sk_buff_list *)next)->prev) =3D=3D sizeof(long long))) __compiletime_ass= ert_271(); } while (0); do { *(volatile typeof(((struct sk_buff_list *)next= )->prev) *)&(((struct sk_buff_list *)next)->prev) =3D (newsk); } while (0);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 72(void) ; if (!((sizeof(((struct sk_buff_list *)prev)->next) =3D=3D sizeof= (char) || sizeof(((struct sk_buff_list *)prev)->next) =3D=3D sizeof(short) = || sizeof(((struct sk_buff_list *)prev)->next) =3D=3D sizeof(int) || sizeof= (((struct sk_buff_list *)prev)->next) =3D=3D sizeof(long)) || sizeof(((stru= ct sk_buff_list *)prev)->next) =3D=3D sizeof(long long))) __compiletime_ass= ert_272(); } while (0); do { *(volatile typeof(((struct sk_buff_list *)prev= )->next) *)&(((struct sk_buff_list *)prev)->next) =3D (newsk); } while (0);= } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 73(void) ; if (!((sizeof(list->qlen) =3D=3D sizeof(char) || sizeof(list->ql= en) =3D=3D sizeof(short) || sizeof(list->qlen) =3D=3D sizeof(int) || sizeof= (list->qlen) =3D=3D sizeof(long)) || sizeof(list->qlen) =3D=3D sizeof(long = long))) __compiletime_assert_273(); } while (0); do { *(volatile typeof(lis= t->qlen) *)&(list->qlen) =3D (list->qlen + 1); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_splice(cons= t struct sk_buff_head *list,=0D struct sk_buff *prev,=0D struct sk_buff *next)=0D {=0D struct sk_buff *first =3D list->next;=0D struct sk_buff *last =3D list->prev;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 74(void) ; if (!((sizeof(first->prev) =3D=3D sizeof(char) || sizeof(first->= prev) =3D=3D sizeof(short) || sizeof(first->prev) =3D=3D sizeof(int) || siz= eof(first->prev) =3D=3D sizeof(long)) || sizeof(first->prev) =3D=3D sizeof(= long long))) __compiletime_assert_274(); } while (0); do { *(volatile typeo= f(first->prev) *)&(first->prev) =3D (prev); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 75(void) ; if (!((sizeof(prev->next) =3D=3D sizeof(char) || sizeof(prev->ne= xt) =3D=3D sizeof(short) || sizeof(prev->next) =3D=3D sizeof(int) || sizeof= (prev->next) =3D=3D sizeof(long)) || sizeof(prev->next) =3D=3D sizeof(long = long))) __compiletime_assert_275(); } while (0); do { *(volatile typeof(pre= v->next) *)&(prev->next) =3D (first); } while (0); } while (0);=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 76(void) ; if (!((sizeof(last->next) =3D=3D sizeof(char) || sizeof(last->ne= xt) =3D=3D sizeof(short) || sizeof(last->next) =3D=3D sizeof(int) || sizeof= (last->next) =3D=3D sizeof(long)) || sizeof(last->next) =3D=3D sizeof(long = long))) __compiletime_assert_276(); } while (0); do { *(volatile typeof(las= t->next) *)&(last->next) =3D (next); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 77(void) ; if (!((sizeof(next->prev) =3D=3D sizeof(char) || sizeof(next->pr= ev) =3D=3D sizeof(short) || sizeof(next->prev) =3D=3D sizeof(int) || sizeof= (next->prev) =3D=3D sizeof(long)) || sizeof(next->prev) =3D=3D sizeof(long = long))) __compiletime_assert_277(); } while (0); do { *(volatile typeof(nex= t->prev) *)&(next->prev) =3D (last); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_splice(const = struct sk_buff_head *list,=0D struct sk_buff_head *head)=0D {=0D if (!skb_queue_empty(list)) {=0D __skb_queue_splice(list, (struct sk_buff *) head, head->next);=0D head->qlen +=3D list->qlen;=0D }=0D }=0D # 2202 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_splice_init(s= truct sk_buff_head *list,=0D struct sk_buff_head *head)=0D {=0D if (!skb_queue_empty(list)) {=0D __skb_queue_splice(list, (struct sk_buff *) head, head->next);=0D head->qlen +=3D list->qlen;=0D __skb_queue_head_init(list);=0D }=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_splice_tail(c= onst struct sk_buff_head *list,=0D struct sk_buff_head *head)=0D {=0D if (!skb_queue_empty(list)) {=0D __skb_queue_splice(list, head->prev, (struct sk_buff *) head);=0D head->qlen +=3D list->qlen;=0D }=0D }=0D # 2234 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_queue_splice_tail_i= nit(struct sk_buff_head *list,=0D struct sk_buff_head *head)=0D {=0D if (!skb_queue_empty(list)) {=0D __skb_queue_splice(list, head->prev, (struct sk_buff *) head);=0D head->qlen +=3D list->qlen;=0D __skb_queue_head_init(list);=0D }=0D }=0D # 2255 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_after(struc= t sk_buff_head *list,=0D struct sk_buff *prev,=0D struct sk_buff *newsk)=0D {=0D __skb_insert(newsk, prev, ((struct sk_buff_list *)prev)->next, list);=0D }=0D =0D void skb_append(struct sk_buff *old, struct sk_buff *newsk,=0D struct sk_buff_head *list);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_before(stru= ct sk_buff_head *list,=0D struct sk_buff *next,=0D struct sk_buff *newsk)=0D {=0D __skb_insert(newsk, ((struct sk_buff_list *)next)->prev, next, list);=0D }=0D # 2282 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_head(struct= sk_buff_head *list,=0D struct sk_buff *newsk)=0D {=0D __skb_queue_after(list, (struct sk_buff *)list, newsk);=0D }=0D void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk);=0D # 2299 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_tail(struct= sk_buff_head *list,=0D struct sk_buff *newsk)=0D {=0D __skb_queue_before(list, (struct sk_buff *)list, newsk);=0D }=0D void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);=0D =0D =0D =0D =0D =0D void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_unlink(struct sk_= buff *skb, struct sk_buff_head *list)=0D {=0D struct sk_buff *next, *prev;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 78(void) ; if (!((sizeof(list->qlen) =3D=3D sizeof(char) || sizeof(list->ql= en) =3D=3D sizeof(short) || sizeof(list->qlen) =3D=3D sizeof(int) || sizeof= (list->qlen) =3D=3D sizeof(long)) || sizeof(list->qlen) =3D=3D sizeof(long = long))) __compiletime_assert_278(); } while (0); do { *(volatile typeof(lis= t->qlen) *)&(list->qlen) =3D (list->qlen - 1); } while (0); } while (0);=0D next =3D skb->next;=0D prev =3D skb->prev;=0D skb->next =3D skb->prev =3D ((void *)0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 79(void) ; if (!((sizeof(next->prev) =3D=3D sizeof(char) || sizeof(next->pr= ev) =3D=3D sizeof(short) || sizeof(next->prev) =3D=3D sizeof(int) || sizeof= (next->prev) =3D=3D sizeof(long)) || sizeof(next->prev) =3D=3D sizeof(long = long))) __compiletime_assert_279(); } while (0); do { *(volatile typeof(nex= t->prev) *)&(next->prev) =3D (prev); } while (0); } while (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_2= 80(void) ; if (!((sizeof(prev->next) =3D=3D sizeof(char) || sizeof(prev->ne= xt) =3D=3D sizeof(short) || sizeof(prev->next) =3D=3D sizeof(int) || sizeof= (prev->next) =3D=3D sizeof(long)) || sizeof(prev->next) =3D=3D sizeof(long = long))) __compiletime_assert_280(); } while (0); do { *(volatile typeof(pre= v->next) *)&(prev->next) =3D (next); } while (0); } while (0);=0D }=0D # 2331 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__skb_dequeu= e(struct sk_buff_head *list)=0D {=0D struct sk_buff *skb =3D skb_peek(list);=0D if (skb)=0D __skb_unlink(skb, list);=0D return skb;=0D }=0D struct sk_buff *skb_dequeue(struct sk_buff_head *list);=0D # 2348 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__skb_dequeu= e_tail(struct sk_buff_head *list)=0D {=0D struct sk_buff *skb =3D skb_peek_tail(list);=0D if (skb)=0D __skb_unlink(skb, list);=0D return skb;=0D }=0D struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_nonlinear(const = struct sk_buff *skb)=0D {=0D return skb->data_len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_headlen(con= st struct sk_buff *skb)=0D {=0D return skb->len - skb->data_len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __skb_pagelen(c= onst struct sk_buff *skb)=0D {=0D unsigned int i, len =3D 0;=0D =0D for (i =3D ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags - = 1; (int)i >=3D 0; i--)=0D len +=3D skb_frag_size(&((struct skb_shared_info *)(skb_end_pointer(skb))= )->frags[i]);=0D return len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_pagelen(con= st struct sk_buff *skb)=0D {=0D return skb_headlen(skb) + __skb_pagelen(skb);=0D }=0D # 2395 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_fill_page_desc(st= ruct sk_buff *skb, int i,=0D struct page *page, int off, int size)=0D {=0D skb_frag_t *frag =3D &((struct skb_shared_info *)(skb_end_pointer(skb)))->= frags[i];=0D =0D =0D =0D =0D =0D =0D frag->bv_page =3D page;=0D frag->bv_offset =3D off;=0D skb_frag_size_set(frag, size);=0D =0D page =3D ((typeof(page))_compound_head(page));=0D if (page_is_pfmemalloc(page))=0D skb->pfmemalloc =3D true;=0D }=0D # 2428 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_fill_page_desc(stru= ct sk_buff *skb, int i,=0D struct page *page, int off, int size)=0D {=0D __skb_fill_page_desc(skb, i, page, off, size);=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags =3D i + 1;=0D }=0D =0D void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off= ,=0D int size, unsigned int truesize);=0D =0D void skb_coalesce_rx_frag(struct sk_buff *skb, int i, int size,=0D unsigned int truesize);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_tail_poin= ter(const struct sk_buff *skb)=0D {=0D return skb->head + skb->tail;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_tail_pointer(= struct sk_buff *skb)=0D {=0D skb->tail =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_tail_pointer(st= ruct sk_buff *skb, const int offset)=0D {=0D skb_reset_tail_pointer(skb);=0D skb->tail +=3D offset;=0D }=0D # 2481 "./include/linux/skbuff.h"=0D void *pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len);=0D void *skb_put(struct sk_buff *skb, unsigned int len);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__skb_put(struct sk_bu= ff *skb, unsigned int len)=0D {=0D void *tmp =3D skb_tail_pointer(skb);=0D do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/skbuff.h"), "i" (2486), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while= (0);=0D skb->tail +=3D len;=0D skb->len +=3D len;=0D return tmp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__skb_put_zero(struct = sk_buff *skb, unsigned int len)=0D {=0D void *tmp =3D __skb_put(skb, len);=0D =0D memset(tmp, 0, len);=0D return tmp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__skb_put_data(struct = sk_buff *skb, const void *data,=0D unsigned int len)=0D {=0D void *tmp =3D __skb_put(skb, len);=0D =0D memcpy(tmp, data, len);=0D return tmp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_put_u8(struct sk_= buff *skb, u8 val)=0D {=0D *(u8 *)__skb_put(skb, 1) =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_put_zero(struct sk= _buff *skb, unsigned int len)=0D {=0D void *tmp =3D skb_put(skb, len);=0D =0D memset(tmp, 0, len);=0D =0D return tmp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_put_data(struct sk= _buff *skb, const void *data,=0D unsigned int len)=0D {=0D void *tmp =3D skb_put(skb, len);=0D =0D memcpy(tmp, data, len);=0D =0D return tmp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_put_u8(struct sk_bu= ff *skb, u8 val)=0D {=0D *(u8 *)skb_put(skb, 1) =3D val;=0D }=0D =0D void *skb_push(struct sk_buff *skb, unsigned int len);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__skb_push(struct sk_b= uff *skb, unsigned int len)=0D {=0D skb->data -=3D len;=0D skb->len +=3D len;=0D return skb->data;=0D }=0D =0D void *skb_pull(struct sk_buff *skb, unsigned int len);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__skb_pull(struct sk_b= uff *skb, unsigned int len)=0D {=0D skb->len -=3D len;=0D do { if (__builtin_expect(!!(skb->len < skb->data_len), 0)) do { do { __as= m__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t= " "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1= \n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inclu= de/linux/skbuff.h"), "i" (2550), "i" (0), "i" (sizeof(struct bug_entry))); = } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } wh= ile (0);=0D return skb->data +=3D len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_pull_inline(struct= sk_buff *skb, unsigned int len)=0D {=0D return __builtin_expect(!!(len > skb->len), 0) ? ((void *)0) : __skb_pull(= skb, len);=0D }=0D =0D void *skb_pull_data(struct sk_buff *skb, size_t len);=0D =0D void *__pskb_pull_tail(struct sk_buff *skb, int delta);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *__pskb_pull(struct sk_= buff *skb, unsigned int len)=0D {=0D if (len > skb_headlen(skb) &&=0D !__pskb_pull_tail(skb, len - skb_headlen(skb)))=0D return ((void *)0);=0D skb->len -=3D len;=0D return skb->data +=3D len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *pskb_pull(struct sk_bu= ff *skb, unsigned int len)=0D {=0D return __builtin_expect(!!(len > skb->len), 0) ? ((void *)0) : __pskb_pull= (skb, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pskb_may_pull(struct sk= _buff *skb, unsigned int len)=0D {=0D if (__builtin_expect(!!(len <=3D skb_headlen(skb)), 1))=0D return true;=0D if (__builtin_expect(!!(len > skb->len), 0))=0D return false;=0D return __pskb_pull_tail(skb, len - skb_headlen(skb)) !=3D ((void *)0);=0D }=0D =0D void skb_condense(struct sk_buff *skb);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_headroom(co= nst struct sk_buff *skb)=0D {=0D return skb->data - skb->head;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_tailroom(const struc= t sk_buff *skb)=0D {=0D return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail;=0D }=0D # 2617 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_availroom(const stru= ct sk_buff *skb)=0D {=0D if (skb_is_nonlinear(skb))=0D return 0;=0D =0D return skb->end - skb->tail - skb->reserved_tailroom;=0D }=0D # 2633 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reserve(struct sk_b= uff *skb, int len)=0D {=0D skb->data +=3D len;=0D skb->tail +=3D len;=0D }=0D # 2651 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_tailroom_reserve(st= ruct sk_buff *skb, unsigned int mtu,=0D unsigned int needed_tailroom)=0D {=0D do { if (__builtin_expect(!!(skb_is_nonlinear(skb)), 0)) do { do { __asm__= __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "= 2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\= t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/= linux/skbuff.h"), "i" (2654), "i" (0), "i" (sizeof(struct bug_entry))); } w= hile (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while= (0);=0D if (mtu < skb_tailroom(skb) - needed_tailroom)=0D =0D skb->reserved_tailroom =3D skb_tailroom(skb) - mtu;=0D else=0D =0D skb->reserved_tailroom =3D needed_tailroom;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_inner_protocol(= struct sk_buff *skb,=0D __be16 protocol)=0D {=0D skb->inner_protocol =3D protocol;=0D skb->inner_protocol_type =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_inner_ipproto(s= truct sk_buff *skb,=0D __u8 ipproto)=0D {=0D skb->inner_ipproto =3D ipproto;=0D skb->inner_protocol_type =3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_inner_headers= (struct sk_buff *skb)=0D {=0D skb->inner_mac_header =3D skb->mac_header;=0D skb->inner_network_header =3D skb->network_header;=0D skb->inner_transport_header =3D skb->transport_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_mac_len(struc= t sk_buff *skb)=0D {=0D skb->mac_len =3D skb->network_header - skb->mac_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_inner_tra= nsport_header(const struct sk_buff=0D *skb)=0D {=0D return skb->head + skb->inner_transport_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_inner_transport_offs= et(const struct sk_buff *skb)=0D {=0D return skb_inner_transport_header(skb) - skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_inner_transpo= rt_header(struct sk_buff *skb)=0D {=0D skb->inner_transport_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_inner_transport= _header(struct sk_buff *skb,=0D const int offset)=0D {=0D skb_reset_inner_transport_header(skb);=0D skb->inner_transport_header +=3D offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_inner_net= work_header(const struct sk_buff *skb)=0D {=0D return skb->head + skb->inner_network_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_inner_network= _header(struct sk_buff *skb)=0D {=0D skb->inner_network_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_inner_network_h= eader(struct sk_buff *skb,=0D const int offset)=0D {=0D skb_reset_inner_network_header(skb);=0D skb->inner_network_header +=3D offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_inner_mac= _header(const struct sk_buff *skb)=0D {=0D return skb->head + skb->inner_mac_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_inner_mac_hea= der(struct sk_buff *skb)=0D {=0D skb->inner_mac_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_inner_mac_heade= r(struct sk_buff *skb,=0D const int offset)=0D {=0D skb_reset_inner_mac_header(skb);=0D skb->inner_mac_header +=3D offset;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_transport_header_wa= s_set(const struct sk_buff *skb)=0D {=0D return skb->transport_header !=3D (typeof(skb->transport_header))~0U;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_transport= _header(const struct sk_buff *skb)=0D {=0D return skb->head + skb->transport_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_transport_hea= der(struct sk_buff *skb)=0D {=0D skb->transport_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_transport_heade= r(struct sk_buff *skb,=0D const int offset)=0D {=0D skb_reset_transport_header(skb);=0D skb->transport_header +=3D offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_network_h= eader(const struct sk_buff *skb)=0D {=0D return skb->head + skb->network_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_network_heade= r(struct sk_buff *skb)=0D {=0D skb->network_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_network_header(= struct sk_buff *skb, const int offset)=0D {=0D skb_reset_network_header(skb);=0D skb->network_header +=3D offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_mac_heade= r(const struct sk_buff *skb)=0D {=0D return skb->head + skb->mac_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_mac_offset(const str= uct sk_buff *skb)=0D {=0D return skb_mac_header(skb) - skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 skb_mac_header_len(const= struct sk_buff *skb)=0D {=0D return skb->network_header - skb->mac_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_mac_header_was_set(c= onst struct sk_buff *skb)=0D {=0D return skb->mac_header !=3D (typeof(skb->mac_header))~0U;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_unset_mac_header(st= ruct sk_buff *skb)=0D {=0D skb->mac_header =3D (typeof(skb->mac_header))~0U;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_mac_header(st= ruct sk_buff *skb)=0D {=0D skb->mac_header =3D skb->data - skb->head;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_mac_header(stru= ct sk_buff *skb, const int offset)=0D {=0D skb_reset_mac_header(skb);=0D skb->mac_header +=3D offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_pop_mac_header(stru= ct sk_buff *skb)=0D {=0D skb->mac_header =3D skb->network_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_probe_transport_hea= der(struct sk_buff *skb)=0D {=0D struct flow_keys_basic keys;=0D =0D if (skb_transport_header_was_set(skb))=0D return;=0D =0D if (skb_flow_dissect_flow_keys_basic(((void *)0), skb, &keys,=0D ((void *)0), 0, 0, 0, 0))=0D skb_set_transport_header(skb, keys.control.thoff);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_mac_header_rebuild(= struct sk_buff *skb)=0D {=0D if (skb_mac_header_was_set(skb)) {=0D const unsigned char *old_mac =3D skb_mac_header(skb);=0D =0D skb_set_mac_header(skb, -skb->mac_len);=0D memmove(skb_mac_header(skb), old_mac, skb->mac_len);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_checksum_start_offse= t(const struct sk_buff *skb)=0D {=0D return skb->csum_start - skb_headroom(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char *skb_checksum_= start(const struct sk_buff *skb)=0D {=0D return skb->head + skb->csum_start;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_transport_offset(con= st struct sk_buff *skb)=0D {=0D return skb_transport_header(skb) - skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 skb_network_header_len(c= onst struct sk_buff *skb)=0D {=0D return skb->transport_header - skb->network_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 skb_inner_network_header= _len(const struct sk_buff *skb)=0D {=0D return skb->inner_transport_header - skb->inner_network_header;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_network_offset(const= struct sk_buff *skb)=0D {=0D return skb_network_header(skb) - skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_inner_network_offset= (const struct sk_buff *skb)=0D {=0D return skb_inner_network_header(skb) - skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pskb_network_may_pull(st= ruct sk_buff *skb, unsigned int len)=0D {=0D return pskb_may_pull(skb, skb_network_offset(skb) + len);=0D }=0D # 2937 "./include/linux/skbuff.h"=0D int ___pskb_trim(struct sk_buff *skb, unsigned int len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_set_length(struct= sk_buff *skb, unsigned int len)=0D {=0D if (({ int __ret_warn_on =3D !!(skb_is_nonlinear(skb)); if (__builtin_expe= ct(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" "= =2Epushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.h"), "i" (2941), "i"= ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __b= uiltin_expect(!!(__ret_warn_on), 0); }))=0D return;=0D skb->len =3D len;=0D skb_set_tail_pointer(skb, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_trim(struct sk_bu= ff *skb, unsigned int len)=0D {=0D __skb_set_length(skb, len);=0D }=0D =0D void skb_trim(struct sk_buff *skb, unsigned int len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __pskb_trim(struct sk_bu= ff *skb, unsigned int len)=0D {=0D if (skb->data_len)=0D return ___pskb_trim(skb, len);=0D __skb_trim(skb, len);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pskb_trim(struct sk_buff= *skb, unsigned int len)=0D {=0D return (len < skb->len) ? __pskb_trim(skb, len) : 0;=0D }=0D # 2976 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pskb_trim_unique(struct= sk_buff *skb, unsigned int len)=0D {=0D int err =3D pskb_trim(skb, len);=0D do { if (__builtin_expect(!!(err), 0)) do { do { __asm__ __volatile__ ( "1= :\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " = 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "= \n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.h"), = "i" (2979), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; _= _builtin_unreachable(); } while (0); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __skb_grow(struct sk_buf= f *skb, unsigned int len)=0D {=0D unsigned int diff =3D len - skb->len;=0D =0D if (skb_tailroom(skb) < diff) {=0D int ret =3D pskb_expand_head(skb, 0, diff - skb_tailroom(skb),=0D ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D if (ret)=0D return ret;=0D }=0D __skb_set_length(skb, len);=0D return 0;=0D }=0D # 3004 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_orphan(struct sk_bu= ff *skb)=0D {=0D if (skb->destructor) {=0D skb->destructor(skb);=0D skb->destructor =3D ((void *)0);=0D skb->sk =3D ((void *)0);=0D } else {=0D do { if (__builtin_expect(!!(skb->sk), 0)) do { do { __asm__ __volatile__= ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".wor= d" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " = %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.= h"), "i" (3011), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do = { ; __builtin_unreachable(); } while (0); } while (0); } while (0);=0D }=0D }=0D # 3024 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_orphan_frags(struct = sk_buff *skb, gfp_t gfp_mask)=0D {=0D if (__builtin_expect(!!(!skb_zcopy(skb)), 1))=0D return 0;=0D if (!skb_zcopy_is_nouarg(skb) &&=0D ((struct ubuf_info *)(((struct skb_shared_info *)(skb_end_pointer(skb)= ))->destructor_arg))->callback =3D=3D msg_zerocopy_callback)=0D return 0;=0D return skb_copy_ubufs(skb, gfp_mask);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_orphan_frags_rx(stru= ct sk_buff *skb, gfp_t gfp_mask)=0D {=0D if (__builtin_expect(!!(!skb_zcopy(skb)), 1))=0D return 0;=0D return skb_copy_ubufs(skb, gfp_mask);=0D }=0D # 3050 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_queue_purge(struc= t sk_buff_head *list)=0D {=0D struct sk_buff *skb;=0D while ((skb =3D __skb_dequeue(list)) !=3D ((void *)0))=0D kfree_skb(skb);=0D }=0D void skb_queue_purge(struct sk_buff_head *list);=0D =0D unsigned int skb_rbtree_purge(struct rb_root *root);=0D =0D void *__netdev_alloc_frag_align(unsigned int fragsz, unsigned int align_mas= k);=0D # 3069 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *netdev_alloc_frag(unsi= gned int fragsz)=0D {=0D return __netdev_alloc_frag_align(fragsz, ~0u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *netdev_alloc_frag_alig= n(unsigned int fragsz,=0D unsigned int align)=0D {=0D ({ int __ret_warn_on =3D !!(!is_power_of_2(align)); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/skbuff.h"), "i" (3077), "i" ((1 << = 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); = __builtin_expect(!!(__ret_warn_on), 0); });=0D return __netdev_alloc_frag_align(fragsz, -align);=0D }=0D =0D struct sk_buff *__netdev_alloc_skb(struct net_device *dev, unsigned int len= gth,=0D gfp_t gfp_mask);=0D # 3097 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *netdev_alloc= _skb(struct net_device *dev,=0D unsigned int length)=0D {=0D return __netdev_alloc_skb(dev, length, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(= ( gfp_t)0x800u)));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__dev_alloc_= skb(unsigned int length,=0D gfp_t gfp_mask)=0D {=0D return __netdev_alloc_skb(((void *)0), length, gfp_mask);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *dev_alloc_sk= b(unsigned int length)=0D {=0D return netdev_alloc_skb(((void *)0), length);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__netdev_all= oc_skb_ip_align(struct net_device *dev,=0D unsigned int length, gfp_t gfp)=0D {=0D struct sk_buff *skb =3D __netdev_alloc_skb(dev, length + 2, gfp);=0D =0D if (2 && skb)=0D skb_reserve(skb, 2);=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *netdev_alloc= _skb_ip_align(struct net_device *dev,=0D unsigned int length)=0D {=0D return __netdev_alloc_skb_ip_align(dev, length, ((( gfp_t)0x20u)|(( gfp_t)= 0x200u)|(( gfp_t)0x800u)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_free_frag(void *add= r)=0D {=0D page_frag_free(addr);=0D }=0D =0D void *__napi_alloc_frag_align(unsigned int fragsz, unsigned int align_mask)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *napi_alloc_frag(unsign= ed int fragsz)=0D {=0D return __napi_alloc_frag_align(fragsz, ~0u);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *napi_alloc_frag_align(= unsigned int fragsz,=0D unsigned int align)=0D {=0D ({ int __ret_warn_on =3D !!(!is_power_of_2(align)); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/skbuff.h"), "i" (3148), "i" ((1 << = 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); = __builtin_expect(!!(__ret_warn_on), 0); });=0D return __napi_alloc_frag_align(fragsz, -align);=0D }=0D =0D struct sk_buff *__napi_alloc_skb(struct napi_struct *napi,=0D unsigned int length, gfp_t gfp_mask);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *napi_alloc_s= kb(struct napi_struct *napi,=0D unsigned int length)=0D {=0D return __napi_alloc_skb(napi, length, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|((= gfp_t)0x800u)));=0D }=0D void napi_consume_skb(struct sk_buff *skb, int budget);=0D =0D void napi_skb_free_stolen_head(struct sk_buff *skb);=0D void __kfree_skb_defer(struct sk_buff *skb);=0D # 3173 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *__dev_alloc_pag= es(gfp_t gfp_mask,=0D unsigned int order)=0D {=0D # 3184 "./include/linux/skbuff.h"=0D gfp_mask |=3D (( gfp_t)0x40000u) | (( gfp_t)0x20000u);=0D =0D return alloc_pages_node((-1), gfp_mask, order);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *dev_alloc_pages= (unsigned int order)=0D {=0D return __dev_alloc_pages(((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u= )) | (( gfp_t)0x2000u), order);=0D }=0D # 3202 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *__dev_alloc_pag= e(gfp_t gfp_mask)=0D {=0D return __dev_alloc_pages(gfp_mask, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *dev_alloc_page(= void)=0D {=0D return dev_alloc_pages(0);=0D }=0D # 3222 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_page_is_reusable(co= nst struct page *page)=0D {=0D return __builtin_expect(!!(page_to_nid(page) =3D=3D numa_mem_id() && !page= _is_pfmemalloc(page)), 1);=0D =0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_propagate_pfmemallo= c(const struct page *page,=0D struct sk_buff *skb)=0D {=0D if (page_is_pfmemalloc(page))=0D skb->pfmemalloc =3D true;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int skb_frag_off(co= nst skb_frag_t *frag)=0D {=0D return frag->bv_offset;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_off_add(skb_fr= ag_t *frag, int delta)=0D {=0D frag->bv_offset +=3D delta;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_off_set(skb_fr= ag_t *frag, unsigned int offset)=0D {=0D frag->bv_offset =3D offset;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_off_copy(skb_f= rag_t *fragto,=0D const skb_frag_t *fragfrom)=0D {=0D fragto->bv_offset =3D fragfrom->bv_offset;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page *skb_frag_page(c= onst skb_frag_t *frag)=0D {=0D return frag->bv_page;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_frag_ref(skb_frag= _t *frag)=0D {=0D get_page(skb_frag_page(frag));=0D }=0D # 3309 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_ref(struct sk_= buff *skb, int f)=0D {=0D __skb_frag_ref(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[= f]);=0D }=0D # 3322 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_frag_unref(skb_fr= ag_t *frag, bool recycle)=0D {=0D struct page *page =3D skb_frag_page(frag);=0D =0D =0D if (recycle && page_pool_return_skb_page(page))=0D return;=0D =0D put_page(page);=0D }=0D # 3340 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_unref(struct s= k_buff *skb, int f)=0D {=0D __skb_frag_unref(&((struct skb_shared_info *)(skb_end_pointer(skb)))->frag= s[f], skb->pp_recycle);=0D }=0D # 3352 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_frag_address(const= skb_frag_t *frag)=0D {=0D return lowmem_page_address(skb_frag_page(frag)) + skb_frag_off(frag);=0D }=0D # 3364 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_frag_address_safe(= const skb_frag_t *frag)=0D {=0D void *ptr =3D lowmem_page_address(skb_frag_page(frag));=0D if (__builtin_expect(!!(!ptr), 0))=0D return ((void *)0);=0D =0D return ptr + skb_frag_off(frag);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_page_copy(skb_= frag_t *fragto,=0D const skb_frag_t *fragfrom)=0D {=0D fragto->bv_page =3D fragfrom->bv_page;=0D }=0D # 3391 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_frag_set_page(skb= _frag_t *frag, struct page *page)=0D {=0D frag->bv_page =3D page;=0D }=0D # 3404 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_set_page(struc= t sk_buff *skb, int f,=0D struct page *page)=0D {=0D __skb_frag_set_page(&((struct skb_shared_info *)(skb_end_pointer(skb)))->f= rags[f], page);=0D }=0D =0D bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t p= rio);=0D # 3423 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dma_addr_t skb_frag_dma_map(= struct device *dev,=0D const skb_frag_t *frag,=0D size_t offset, size_t size,=0D enum dma_data_direction dir)=0D {=0D return dma_map_page_attrs(dev, skb_frag_page(frag), skb_frag_off(frag) + o= ffset, size, dir, 0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *pskb_copy(st= ruct sk_buff *skb,=0D gfp_t gfp_mask)=0D {=0D return __pskb_copy(skb, skb_headroom(skb), gfp_mask);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *pskb_copy_fo= r_clone(struct sk_buff *skb,=0D gfp_t gfp_mask)=0D {=0D return __pskb_copy_fclone(skb, skb_headroom(skb), gfp_mask, true);=0D }=0D # 3454 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_clone_writable(const= struct sk_buff *skb, unsigned int len)=0D {=0D return !skb_header_cloned(skb) &&=0D skb_headroom(skb) + len <=3D skb->hdr_len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_try_make_writable(st= ruct sk_buff *skb,=0D unsigned int write_len)=0D {=0D return skb_cloned(skb) && !skb_clone_writable(skb, write_len) &&=0D pskb_expand_head(skb, 0, 0, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gf= p_t)0x800u)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __skb_cow(struct sk_buff= *skb, unsigned int headroom,=0D int cloned)=0D {=0D int delta =3D 0;=0D =0D if (headroom > skb_headroom(skb))=0D delta =3D headroom - skb_headroom(skb);=0D =0D if (delta || cloned)=0D return pskb_expand_head(skb, ((((delta)) + ((typeof((delta)))((__builtin_= choose_expr(((!!(sizeof((typeof(32) *)1 =3D=3D (typeof((1 << 6)) *)1))) && = ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(32) * 0l)) : (int *)8)))= && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((1 << 6)) * 0l)) : (i= nt *)8))))), ((32) > ((1 << 6)) ? (32) : ((1 << 6))), ({ typeof(32) __UNIQU= E_ID___x281 =3D (32); typeof((1 << 6)) __UNIQUE_ID___y282 =3D ((1 << 6)); (= (__UNIQUE_ID___x281) > (__UNIQUE_ID___y282) ? (__UNIQUE_ID___x281) : (__UNI= QUE_ID___y282)); })))) - 1)) & ~((typeof((delta)))((__builtin_choose_expr((= (!!(sizeof((typeof(32) *)1 =3D=3D (typeof((1 << 6)) *)1))) && ((sizeof(int)= =3D=3D sizeof(*(8 ? ((void *)((long)(32) * 0l)) : (int *)8))) && (sizeof(i= nt) =3D=3D sizeof(*(8 ? ((void *)((long)((1 << 6)) * 0l)) : (int *)8))))), = ((32) > ((1 << 6)) ? (32) : ((1 << 6))), ({ typeof(32) __UNIQUE_ID___x281 = =3D (32); typeof((1 << 6)) __UNIQUE_ID___y282 =3D ((1 << 6)); ((__UNIQUE_ID= ___x281) > (__UNIQUE_ID___y282) ? (__UNIQUE_ID___x281) : (__UNIQUE_ID___y28= 2)); })))) - 1)), 0,=0D ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D return 0;=0D }=0D # 3493 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_cow(struct sk_buff *= skb, unsigned int headroom)=0D {=0D return __skb_cow(skb, headroom, skb_cloned(skb));=0D }=0D # 3508 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_cow_head(struct sk_b= uff *skb, unsigned int headroom)=0D {=0D return __skb_cow(skb, headroom, skb_header_cloned(skb));=0D }=0D # 3523 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_padto(struct sk_buff= *skb, unsigned int len)=0D {=0D unsigned int size =3D skb->len;=0D if (__builtin_expect(!!(size >=3D len), 1))=0D return 0;=0D return skb_pad(skb, len - size);=0D }=0D # 3542 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) __skb_put_padto(struct sk_buff *skb,=0D unsigned int len,=0D bool free_on_error)=0D {=0D unsigned int size =3D skb->len;=0D =0D if (__builtin_expect(!!(size < len), 0)) {=0D len -=3D size;=0D if (__skb_pad(skb, len, free_on_error))=0D return -12;=0D __skb_put(skb, len);=0D }=0D return 0;=0D }=0D # 3567 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __attribute__((__warn_un= used_result__)) skb_put_padto(struct sk_buff *skb, unsigned int len)=0D {=0D return __skb_put_padto(skb, len, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_add_data(struct sk_b= uff *skb,=0D struct iov_iter *from, int copy)=0D {=0D const int off =3D skb->len;=0D =0D if (skb->ip_summed =3D=3D 0) {=0D __wsum csum =3D 0;=0D if (csum_and_copy_from_iter_full(skb_put(skb, copy), copy,=0D &csum, from)) {=0D skb->csum =3D csum_block_add(skb->csum, csum, off);=0D return 0;=0D }=0D } else if (copy_from_iter_full(skb_put(skb, copy), copy, from))=0D return 0;=0D =0D __skb_trim(skb, off);=0D return -14;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_can_coalesce(struct= sk_buff *skb, int i,=0D const struct page *page, int off)=0D {=0D if (skb_zcopy(skb))=0D return false;=0D if (i) {=0D const skb_frag_t *frag =3D &((struct skb_shared_info *)(skb_end_pointer(s= kb)))->frags[i - 1];=0D =0D return page =3D=3D skb_frag_page(frag) &&=0D off =3D=3D skb_frag_off(frag) + skb_frag_size(frag);=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __skb_linearize(struct s= k_buff *skb)=0D {=0D return __pskb_pull_tail(skb, skb->data_len) ? 0 : -12;=0D }=0D # 3617 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_linearize(struct sk_= buff *skb)=0D {=0D return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0;=0D }=0D # 3629 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_has_shared_frag(con= st struct sk_buff *skb)=0D {=0D return skb_is_nonlinear(skb) &&=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->flags & SKBFL_S= HARED_FRAG;=0D }=0D # 3642 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_linearize_cow(struct= sk_buff *skb)=0D {=0D return skb_is_nonlinear(skb) || skb_cloned(skb) ?=0D __skb_linearize(skb) : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D __skb_postpull_rcsum(struct sk_buff *skb, const void *start, unsigned int l= en,=0D unsigned int off)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->csum =3D csum_block_sub(skb->csum,=0D csum_partial(start, len, 0), off);=0D else if (skb->ip_summed =3D=3D 3 &&=0D skb_checksum_start_offset(skb) < 0)=0D skb->ip_summed =3D 0;=0D }=0D # 3670 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_postpull_rcsum(stru= ct sk_buff *skb,=0D const void *start, unsigned int len)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->csum =3D wsum_negate(csum_partial(start, len,=0D wsum_negate(skb->csum)));=0D else if (skb->ip_summed =3D=3D 3 &&=0D skb_checksum_start_offset(skb) < 0)=0D skb->ip_summed =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D __skb_postpush_rcsum(struct sk_buff *skb, const void *start, unsigned int l= en,=0D unsigned int off)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->csum =3D csum_block_add(skb->csum,=0D csum_partial(start, len, 0), off);=0D }=0D # 3699 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_postpush_rcsum(stru= ct sk_buff *skb,=0D const void *start, unsigned int len)=0D {=0D __skb_postpush_rcsum(skb, start, len, 0);=0D }=0D =0D void *skb_pull_rcsum(struct sk_buff *skb, unsigned int len);=0D # 3718 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_push_rcsum(struct = sk_buff *skb, unsigned int len)=0D {=0D skb_push(skb, len);=0D skb_postpush_rcsum(skb, skb->data, len);=0D return skb->data;=0D }=0D =0D int pskb_trim_rcsum_slow(struct sk_buff *skb, unsigned int len);=0D # 3736 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int pskb_trim_rcsum(struct s= k_buff *skb, unsigned int len)=0D {=0D if (__builtin_expect(!!(len >=3D skb->len), 1))=0D return 0;=0D return pskb_trim_rcsum_slow(skb, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __skb_trim_rcsum(struct = sk_buff *skb, unsigned int len)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->ip_summed =3D 0;=0D __skb_trim(skb, len);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __skb_grow_rcsum(struct = sk_buff *skb, unsigned int len)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->ip_summed =3D 0;=0D return __skb_grow(skb, len);=0D }=0D # 3810 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_has_frag_list(const= struct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list !=3D = ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_frag_list_init(stru= ct sk_buff *skb)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->frag_list =3D ((void *= )0);=0D }=0D =0D =0D =0D =0D =0D int __skb_wait_for_more_packets(struct sock *sk, struct sk_buff_head *queue= ,=0D int *err, long *timeo_p,=0D const struct sk_buff *skb);=0D struct sk_buff *__skb_try_recv_from_queue(struct sock *sk,=0D struct sk_buff_head *queue,=0D unsigned int flags,=0D int *off, int *err,=0D struct sk_buff **last);=0D struct sk_buff *__skb_try_recv_datagram(struct sock *sk,=0D struct sk_buff_head *queue,=0D unsigned int flags, int *off, int *err,=0D struct sk_buff **last);=0D struct sk_buff *__skb_recv_datagram(struct sock *sk,=0D struct sk_buff_head *sk_queue,=0D unsigned int flags, int *off, int *err);=0D struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, int nobl= ock,=0D int *err);=0D __poll_t datagram_poll(struct file *file, struct socket *sock,=0D struct poll_table_struct *wait);=0D int skb_copy_datagram_iter(const struct sk_buff *from, int offset,=0D struct iov_iter *to, int size);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_copy_datagram_msg(co= nst struct sk_buff *from, int offset,=0D struct msghdr *msg, int size)=0D {=0D return skb_copy_datagram_iter(from, offset, &msg->msg_iter, size);=0D }=0D int skb_copy_and_csum_datagram_msg(struct sk_buff *skb, int hlen,=0D struct msghdr *msg);=0D int skb_copy_and_hash_datagram_iter(const struct sk_buff *skb, int offset,= =0D struct iov_iter *to, int len,=0D struct ahash_request *hash);=0D int skb_copy_datagram_from_iter(struct sk_buff *skb, int offset,=0D struct iov_iter *from, int len);=0D int zerocopy_sg_from_iter(struct sk_buff *skb, struct iov_iter *frm);=0D void skb_free_datagram(struct sock *sk, struct sk_buff *skb);=0D void __skb_free_datagram_locked(struct sock *sk, struct sk_buff *skb, int l= en);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_free_datagram_locke= d(struct sock *sk,=0D struct sk_buff *skb)=0D {=0D __skb_free_datagram_locked(sk, skb, 0);=0D }=0D int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, unsigned int fl= ags);=0D int skb_copy_bits(const struct sk_buff *skb, int offset, void *to, int len)= ;=0D int skb_store_bits(struct sk_buff *skb, int offset, const void *from, int l= en);=0D __wsum skb_copy_and_csum_bits(const struct sk_buff *skb, int offset, u8 *to= ,=0D int len);=0D int skb_splice_bits(struct sk_buff *skb, struct sock *sk, unsigned int offs= et,=0D struct pipe_inode_info *pipe, unsigned int len,=0D unsigned int flags);=0D int skb_send_sock_locked(struct sock *sk, struct sk_buff *skb, int offset,= =0D int len);=0D int skb_send_sock(struct sock *sk, struct sk_buff *skb, int offset, int len= );=0D void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);=0D unsigned int skb_zerocopy_headlen(const struct sk_buff *from);=0D int skb_zerocopy(struct sk_buff *to, struct sk_buff *from,=0D int len, int hlen);=0D void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len);=0D int skb_shift(struct sk_buff *tgt, struct sk_buff *skb, int shiftlen);=0D void skb_scrub_packet(struct sk_buff *skb, bool xnet);=0D bool skb_gso_validate_network_len(const struct sk_buff *skb, unsigned int m= tu);=0D bool skb_gso_validate_mac_len(const struct sk_buff *skb, unsigned int len);= =0D struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features= );=0D struct sk_buff *skb_segment_list(struct sk_buff *skb, netdev_features_t fea= tures,=0D unsigned int offset);=0D struct sk_buff *skb_vlan_untag(struct sk_buff *skb);=0D int skb_ensure_writable(struct sk_buff *skb, int write_len);=0D int __skb_vlan_pop(struct sk_buff *skb, u16 *vlan_tci);=0D int skb_vlan_pop(struct sk_buff *skb);=0D int skb_vlan_push(struct sk_buff *skb, __be16 vlan_proto, u16 vlan_tci);=0D int skb_eth_pop(struct sk_buff *skb);=0D int skb_eth_push(struct sk_buff *skb, const unsigned char *dst,=0D const unsigned char *src);=0D int skb_mpls_push(struct sk_buff *skb, __be32 mpls_lse, __be16 mpls_proto,= =0D int mac_len, bool ethernet);=0D int skb_mpls_pop(struct sk_buff *skb, __be16 next_proto, int mac_len,=0D bool ethernet);=0D int skb_mpls_update_lse(struct sk_buff *skb, __be32 mpls_lse);=0D int skb_mpls_dec_ttl(struct sk_buff *skb);=0D struct sk_buff *pskb_extract(struct sk_buff *skb, int off, int to_copy,=0D gfp_t gfp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int memcpy_from_msg(void *da= ta, struct msghdr *msg, int len)=0D {=0D return copy_from_iter_full(data, len, &msg->msg_iter) ? 0 : -14;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int memcpy_to_msg(struct msg= hdr *msg, void *data, int len)=0D {=0D return copy_to_iter(data, len, &msg->msg_iter) =3D=3D len ? 0 : -14;=0D }=0D =0D struct skb_checksum_ops {=0D __wsum (*update)(const void *mem, int len, __wsum wsum);=0D __wsum (*combine)(__wsum csum, __wsum csum2, int offset, int len);=0D };=0D =0D extern const struct skb_checksum_ops *crc32c_csum_stub ;=0D =0D __wsum __skb_checksum(const struct sk_buff *skb, int offset, int len,=0D __wsum csum, const struct skb_checksum_ops *ops);=0D __wsum skb_checksum(const struct sk_buff *skb, int offset, int len,=0D __wsum csum);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void * __attribute__((__warn= _unused_result__))=0D __skb_header_pointer(const struct sk_buff *skb, int offset, int len,=0D const void *data, int hlen, void *buffer)=0D {=0D if (__builtin_expect(!!(hlen - offset >=3D len), 1))=0D return (void *)data + offset;=0D =0D if (!skb || __builtin_expect(!!(skb_copy_bits(skb, offset, buffer, len) < = 0), 0))=0D return ((void *)0);=0D =0D return buffer;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void * __attribute__((__warn= _unused_result__))=0D skb_header_pointer(const struct sk_buff *skb, int offset, int len, void *bu= ffer)=0D {=0D return __skb_header_pointer(skb, offset, len, skb->data,=0D skb_headlen(skb), buffer);=0D }=0D # 3957 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_needs_linearize(str= uct sk_buff *skb,=0D netdev_features_t features)=0D {=0D return skb_is_nonlinear(skb) &&=0D ((skb_has_frag_list(skb) && !(features & ((netdev_features_t)1 << (= NETIF_F_FRAGLIST_BIT)))) ||=0D (((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags && !(featur= es & ((netdev_features_t)1 << (NETIF_F_SG_BIT)))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_from_linear_da= ta(const struct sk_buff *skb,=0D void *to,=0D const unsigned int len)=0D {=0D memcpy(to, skb->data, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_from_linear_da= ta_offset(const struct sk_buff *skb,=0D const int offset, void *to,=0D const unsigned int len)=0D {=0D memcpy(to, skb->data + offset, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_to_linear_data= (struct sk_buff *skb,=0D const void *from,=0D const unsigned int len)=0D {=0D memcpy(skb->data, from, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_to_linear_data= _offset(struct sk_buff *skb,=0D const int offset,=0D const void *from,=0D const unsigned int len)=0D {=0D memcpy(skb->data + offset, from, len);=0D }=0D =0D void skb_init(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t skb_get_ktime(const = struct sk_buff *skb)=0D {=0D return skb->tstamp;=0D }=0D # 4010 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_get_timestamp(const= struct sk_buff *skb,=0D struct __kernel_old_timeval *stamp)=0D {=0D *stamp =3D ns_to_kernel_old_timeval(skb->tstamp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_get_new_timestamp(c= onst struct sk_buff *skb,=0D struct __kernel_sock_timeval *stamp)=0D {=0D struct timespec64 ts =3D ns_to_timespec64((skb->tstamp));=0D =0D stamp->tv_sec =3D ts.tv_sec;=0D stamp->tv_usec =3D ts.tv_nsec / 1000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_get_timestampns(con= st struct sk_buff *skb,=0D struct __kernel_old_timespec *stamp)=0D {=0D struct timespec64 ts =3D ns_to_timespec64((skb->tstamp));=0D =0D stamp->tv_sec =3D ts.tv_sec;=0D stamp->tv_nsec =3D ts.tv_nsec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_get_new_timestampns= (const struct sk_buff *skb,=0D struct __kernel_timespec *stamp)=0D {=0D struct timespec64 ts =3D ns_to_timespec64((skb->tstamp));=0D =0D stamp->tv_sec =3D ts.tv_sec;=0D stamp->tv_nsec =3D ts.tv_nsec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __net_timestamp(struct = sk_buff *skb)=0D {=0D skb->tstamp =3D ktime_get_real();=0D skb->mono_delivery_time =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t net_timedelta(ktime_= t t)=0D {=0D return ((ktime_get_real()) - (t));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_delivery_time(s= truct sk_buff *skb, ktime_t kt,=0D bool mono)=0D {=0D skb->tstamp =3D kt;=0D skb->mono_delivery_time =3D kt && mono;=0D }=0D =0D extern struct static_key_false netstamp_needed_key;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_clear_delivery_time= (struct sk_buff *skb)=0D {=0D if (skb->mono_delivery_time) {=0D skb->mono_delivery_time =3D 0;=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&n= etstamp_needed_key)->key), struct static_key) && !__builtin_types_compatibl= e_p(typeof(*&(&netstamp_needed_key)->key), struct static_key_true) && !__bu= iltin_types_compatible_p(typeof(*&(&netstamp_needed_key)->key), struct stat= ic_key_false)) ____wrong_branch_error(); static_key_count((struct static_ke= y *)&(&netstamp_needed_key)->key) > 0; })), 0))=0D skb->tstamp =3D ktime_get_real();=0D else=0D skb->tstamp =3D 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_clear_tstamp(struct= sk_buff *skb)=0D {=0D if (skb->mono_delivery_time)=0D return;=0D =0D skb->tstamp =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t skb_tstamp(const str= uct sk_buff *skb)=0D {=0D if (skb->mono_delivery_time)=0D return 0;=0D =0D return skb->tstamp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t skb_tstamp_cond(cons= t struct sk_buff *skb, bool cond)=0D {=0D if (!skb->mono_delivery_time && skb->tstamp)=0D return skb->tstamp;=0D =0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&ne= tstamp_needed_key)->key), struct static_key) && !__builtin_types_compatible= _p(typeof(*&(&netstamp_needed_key)->key), struct static_key_true) && !__bui= ltin_types_compatible_p(typeof(*&(&netstamp_needed_key)->key), struct stati= c_key_false)) ____wrong_branch_error(); static_key_count((struct static_key= *)&(&netstamp_needed_key)->key) > 0; })), 0) || cond)=0D return ktime_get_real();=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 skb_metadata_len(const st= ruct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->meta_len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *skb_metadata_end(const= struct sk_buff *skb)=0D {=0D return skb_mac_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __skb_metadata_differs(= const struct sk_buff *skb_a,=0D const struct sk_buff *skb_b,=0D u8 meta_len)=0D {=0D const void *a =3D skb_metadata_end(skb_a);=0D const void *b =3D skb_metadata_end(skb_b);=0D # 4146 "./include/linux/skbuff.h"=0D return memcmp(a - meta_len, b - meta_len, meta_len);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_metadata_differs(co= nst struct sk_buff *skb_a,=0D const struct sk_buff *skb_b)=0D {=0D u8 len_a =3D skb_metadata_len(skb_a);=0D u8 len_b =3D skb_metadata_len(skb_b);=0D =0D if (!(len_a | len_b))=0D return false;=0D =0D return len_a !=3D len_b ?=0D true : __skb_metadata_differs(skb_a, skb_b, len_a);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_metadata_set(struct= sk_buff *skb, u8 meta_len)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->meta_len =3D meta_len;= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_metadata_clear(stru= ct sk_buff *skb)=0D {=0D skb_metadata_set(skb, 0);=0D }=0D =0D struct sk_buff *skb_clone_sk(struct sk_buff *skb);=0D # 4182 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_clone_tx_timestamp(= struct sk_buff *skb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_defer_rx_timestamp(= struct sk_buff *skb)=0D {=0D return false;=0D }=0D # 4205 "./include/linux/skbuff.h"=0D void skb_complete_tx_timestamp(struct sk_buff *skb,=0D struct skb_shared_hwtstamps *hwtstamps);=0D =0D void __skb_tstamp_tx(struct sk_buff *orig_skb, const struct sk_buff *ack_sk= b,=0D struct skb_shared_hwtstamps *hwtstamps,=0D struct sock *sk, int tstype);=0D # 4223 "./include/linux/skbuff.h"=0D void skb_tstamp_tx(struct sk_buff *orig_skb,=0D struct skb_shared_hwtstamps *hwtstamps);=0D # 4238 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_tx_timestamp(struct= sk_buff *skb)=0D {=0D skb_clone_tx_timestamp(skb);=0D if (((struct skb_shared_info *)(skb_end_pointer(skb)))->tx_flags & SKBTX_S= W_TSTAMP)=0D skb_tstamp_tx(skb, ((void *)0));=0D }=0D # 4252 "./include/linux/skbuff.h"=0D void skb_complete_wifi_ack(struct sk_buff *skb, bool acked);=0D =0D __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);=0D __sum16 __skb_checksum_complete(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_csum_unnecessary(con= st struct sk_buff *skb)=0D {=0D return ((skb->ip_summed =3D=3D 1) ||=0D skb->csum_valid ||=0D (skb->ip_summed =3D=3D 3 &&=0D skb_checksum_start_offset(skb) >=3D 0));=0D }=0D # 4281 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16 skb_checksum_complet= e(struct sk_buff *skb)=0D {=0D return skb_csum_unnecessary(skb) ?=0D 0 : __skb_checksum_complete(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_decr_checksum_unn= ecessary(struct sk_buff *skb)=0D {=0D if (skb->ip_summed =3D=3D 1) {=0D if (skb->csum_level =3D=3D 0)=0D skb->ip_summed =3D 0;=0D else=0D skb->csum_level--;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_incr_checksum_unn= ecessary(struct sk_buff *skb)=0D {=0D if (skb->ip_summed =3D=3D 1) {=0D if (skb->csum_level < 3)=0D skb->csum_level++;=0D } else if (skb->ip_summed =3D=3D 0) {=0D skb->ip_summed =3D 1;=0D skb->csum_level =3D 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_reset_checksum_un= necessary(struct sk_buff *skb)=0D {=0D if (skb->ip_summed =3D=3D 1) {=0D skb->ip_summed =3D 0;=0D skb->csum_level =3D 0;=0D }=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __skb_checksum_validate= _needed(struct sk_buff *skb,=0D bool zero_okay,=0D __sum16 check)=0D {=0D if (skb_csum_unnecessary(skb) || (zero_okay && !check)) {=0D skb->csum_valid =3D 1;=0D __skb_decr_checksum_unnecessary(skb);=0D return false;=0D }=0D =0D return true;=0D }=0D # 4345 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_checksum_complete_u= nset(struct sk_buff *skb)=0D {=0D if (skb->ip_summed =3D=3D 2)=0D skb->ip_summed =3D 0;=0D }=0D # 4360 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16 __skb_checksum_valid= ate_complete(struct sk_buff *skb,=0D bool complete,=0D __wsum psum)=0D {=0D if (skb->ip_summed =3D=3D 2) {=0D if (!csum_fold(csum_add(psum, skb->csum))) {=0D skb->csum_valid =3D 1;=0D return 0;=0D }=0D }=0D =0D skb->csum =3D psum;=0D =0D if (complete || skb->len <=3D 76) {=0D __sum16 csum;=0D =0D csum =3D __skb_checksum_complete(skb);=0D skb->csum_valid =3D !csum;=0D return csum;=0D }=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __wsum null_compute_pseudo(s= truct sk_buff *skb, int proto)=0D {=0D return 0;=0D }=0D # 4426 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __skb_checksum_convert_= check(struct sk_buff *skb)=0D {=0D return (skb->ip_summed =3D=3D 0 && skb->csum_valid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_checksum_convert(= struct sk_buff *skb, __wsum pseudo)=0D {=0D skb->csum =3D ~pseudo;=0D skb->ip_summed =3D 2;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_remcsum_adjust_part= ial(struct sk_buff *skb, void *ptr,=0D u16 start, u16 offset)=0D {=0D skb->ip_summed =3D 3;=0D skb->csum_start =3D ((unsigned char *)ptr + start) - skb->head;=0D skb->csum_offset =3D offset - start;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_remcsum_process(str= uct sk_buff *skb, void *ptr,=0D int start, int offset, bool nopartial)=0D {=0D __wsum delta;=0D =0D if (!nopartial) {=0D skb_remcsum_adjust_partial(skb, ptr, start, offset);=0D return;=0D }=0D =0D if (__builtin_expect(!!(skb->ip_summed !=3D 2), 0)) {=0D __skb_checksum_complete(skb);=0D skb_postpull_rcsum(skb, skb->data, ptr - (void *)skb->data);=0D }=0D =0D delta =3D remcsum_adjust(ptr, skb->csum, start, offset);=0D =0D =0D skb->csum =3D csum_add(skb->csum, delta);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nf_conntrack *skb_nfc= t(const struct sk_buff *skb)=0D {=0D =0D =0D =0D return ((void *)0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long skb_get_nfct(c= onst struct sk_buff *skb)=0D {=0D =0D =0D =0D return 0UL;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_nfct(struct sk_= buff *skb, unsigned long nfct)=0D {=0D =0D =0D =0D =0D }=0D # 4612 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_ext_put(struct sk_b= uff *skb) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_ext_reset(struct sk= _buff *skb) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_ext_del(struct sk_b= uff *skb, int unused) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_ext_copy(struct s= k_buff *d, const struct sk_buff *s) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_ext_copy(struct sk_= buff *dst, const struct sk_buff *s) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_has_extensions(stru= ct sk_buff *skb) { return false; }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nf_reset_ct(struct sk_b= uff *skb)=0D {=0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nf_reset_trace(struct s= k_buff *skb)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipvs_reset(struct sk_bu= ff *skb)=0D {=0D =0D =0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __nf_copy(struct sk_buf= f *dst, const struct sk_buff *src,=0D bool copy)=0D {=0D # 4654 "./include/linux/skbuff.h"=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nf_copy(struct sk_buff = *dst, const struct sk_buff *src)=0D {=0D =0D =0D =0D dst->slow_gro =3D src->slow_gro;=0D __nf_copy(dst, src, true);=0D }=0D # 4676 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_secmark(struct= sk_buff *to, const struct sk_buff *from)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_init_secmark(struct= sk_buff *skb)=0D { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int secpath_exists(const str= uct sk_buff *skb)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_irq_freeable(const = struct sk_buff *skb)=0D {=0D return !skb->destructor &&=0D !secpath_exists(skb) &&=0D !skb_nfct(skb) &&=0D !skb->_skb_refdst &&=0D !skb_has_frag_list(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_queue_mapping(s= truct sk_buff *skb, u16 queue_mapping)=0D {=0D skb->queue_mapping =3D queue_mapping;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 skb_get_queue_mapping(co= nst struct sk_buff *skb)=0D {=0D return skb->queue_mapping;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_copy_queue_mapping(= struct sk_buff *to, const struct sk_buff *from)=0D {=0D to->queue_mapping =3D from->queue_mapping;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_record_rx_queue(str= uct sk_buff *skb, u16 rx_queue)=0D {=0D skb->queue_mapping =3D rx_queue + 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 skb_get_rx_queue(const s= truct sk_buff *skb)=0D {=0D return skb->queue_mapping - 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_rx_queue_recorded(c= onst struct sk_buff *skb)=0D {=0D return skb->queue_mapping !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_dst_pending_con= firm(struct sk_buff *skb, u32 val)=0D {=0D skb->dst_pending_confirm =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_get_dst_pending_con= firm(const struct sk_buff *skb)=0D {=0D return skb->dst_pending_confirm !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sec_path *skb_sec_pat= h(const struct sk_buff *skb)=0D {=0D =0D =0D =0D return ((void *)0);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D struct skb_gso_cb {=0D union {=0D int mac_offset;=0D int data_offset;=0D };=0D int encap_level;=0D __wsum csum;=0D __u16 csum_start;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_tnl_header_len(const= struct sk_buff *inner_skb)=0D {=0D return (skb_mac_header(inner_skb) - inner_skb->head) -=0D ((struct skb_gso_cb *)((inner_skb)->cb + 32))->mac_offset;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int gso_pskb_expand_head(str= uct sk_buff *skb, int extra)=0D {=0D int new_headroom, headroom;=0D int ret;=0D =0D headroom =3D skb_headroom(skb);=0D ret =3D pskb_expand_head(skb, extra, 0, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|= (( gfp_t)0x800u)));=0D if (ret)=0D return ret;=0D =0D new_headroom =3D skb_headroom(skb);=0D ((struct skb_gso_cb *)((skb)->cb + 32))->mac_offset +=3D (new_headroom - h= eadroom);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void gso_reset_checksum(stru= ct sk_buff *skb, __wsum res)=0D {=0D =0D if (skb->remcsum_offload)=0D return;=0D =0D ((struct skb_gso_cb *)((skb)->cb + 32))->csum =3D res;=0D ((struct skb_gso_cb *)((skb)->cb + 32))->csum_start =3D skb_checksum_start= (skb) - skb->head;=0D }=0D # 4807 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16 gso_make_checksum(st= ruct sk_buff *skb, __wsum res)=0D {=0D unsigned char *csum_start =3D skb_transport_header(skb);=0D int plen =3D (skb->head + ((struct skb_gso_cb *)((skb)->cb + 32))->csum_st= art) - csum_start;=0D __wsum partial =3D ((struct skb_gso_cb *)((skb)->cb + 32))->csum;=0D =0D ((struct skb_gso_cb *)((skb)->cb + 32))->csum =3D res;=0D ((struct skb_gso_cb *)((skb)->cb + 32))->csum_start =3D csum_start - skb->= head;=0D =0D return csum_fold(csum_partial(csum_start, plen, partial));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_gso(const struct= sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_gso_v6(const str= uct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_= GSO_TCPV6;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_gso_sctp(const s= truct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_= GSO_SCTP;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_gso_tcp(const st= ruct sk_buff *skb)=0D {=0D return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & (SKB= _GSO_TCPV4 | SKB_GSO_TCPV6);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_gso_reset(struct sk= _buff *skb)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size =3D 0;=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs =3D 0;=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_increase_gso_size(s= truct skb_shared_info *shinfo,=0D u16 increment)=0D {=0D if (({ int __ret_warn_on =3D !!(shinfo->gso_size =3D=3D 0xFFFF); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.h"), "i" (4852)= , "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); = } while (0); __builtin_expect(!!(__ret_warn_on), 0); }))=0D return;=0D shinfo->gso_size +=3D increment;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_decrease_gso_size(s= truct skb_shared_info *shinfo,=0D u16 decrement)=0D {=0D if (({ int __ret_warn_on =3D !!(shinfo->gso_size =3D=3D 0xFFFF); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/skbuff.h"), "i" (4860)= , "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); = } while (0); __builtin_expect(!!(__ret_warn_on), 0); }))=0D return;=0D shinfo->gso_size -=3D decrement;=0D }=0D =0D void __skb_warn_lro_forwarding(const struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_warn_if_lro(const s= truct sk_buff *skb)=0D {=0D =0D =0D const struct skb_shared_info *shinfo =3D ((struct skb_shared_info *)(skb_e= nd_pointer(skb)));=0D =0D if (skb_is_nonlinear(skb) && shinfo->gso_size !=3D 0 &&=0D __builtin_expect(!!(shinfo->gso_type =3D=3D 0), 0)) {=0D __skb_warn_lro_forwarding(skb);=0D return true;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_forward_csum(struct= sk_buff *skb)=0D {=0D =0D if (skb->ip_summed =3D=3D 2)=0D skb->ip_summed =3D 0;=0D }=0D # 4896 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_checksum_none_asser= t(const struct sk_buff *skb)=0D {=0D =0D =0D =0D }=0D =0D bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);=0D =0D int skb_checksum_setup(struct sk_buff *skb, bool recalculate);=0D struct sk_buff *skb_checksum_trimmed(struct sk_buff *skb,=0D unsigned int transport_len,=0D __sum16(*skb_chkf)(struct sk_buff *skb));=0D # 4919 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_head_is_locked(cons= t struct sk_buff *skb)=0D {=0D return !skb->head_frag || skb_cloned(skb);=0D }=0D # 4933 "./include/linux/skbuff.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __wsum lco_csum(struct sk_bu= ff *skb)=0D {=0D unsigned char *csum_start =3D skb_checksum_start(skb);=0D unsigned char *l4_hdr =3D skb_transport_header(skb);=0D __wsum partial;=0D =0D =0D partial =3D ~csum_unfold(*( __sum16 *)(csum_start +=0D skb->csum_offset));=0D =0D =0D =0D =0D return csum_partial(l4_hdr, csum_start - l4_hdr, partial);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_redirected(const= struct sk_buff *skb)=0D {=0D return skb->redirected;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_redirected(stru= ct sk_buff *skb, bool from_ingress)=0D {=0D skb->redirected =3D 1;=0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_reset_redirect(stru= ct sk_buff *skb)=0D {=0D skb->redirected =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_csum_is_sctp(struct= sk_buff *skb)=0D {=0D return skb->csum_not_inet;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_kcov_handle(str= uct sk_buff *skb,=0D const u64 kcov_handle)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 skb_get_kcov_handle(stru= ct sk_buff *skb)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_mark_for_recycle(st= ruct sk_buff *skb)=0D {=0D skb->pp_recycle =3D 1;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_pp_recycle(struct s= k_buff *skb, void *data)=0D {=0D if (!1 || !skb->pp_recycle)=0D return false;=0D return page_pool_return_skb_page(((((struct page *)((kernel_map.page_offse= t - ((((((1UL) << (12)) / sizeof(pgd_t)) / 2 * ((1UL) << (pgtable_l5_enable= d ? 48 : (pgtable_l4_enabled ? 39 : 30)))) / 2) >> 1)) - ((((1UL))) << (((p= gtable_l5_enabled ? 57 : (pgtable_l4_enabled ? 48 : 39)) - (12) - 1 + (( __= builtin_constant_p(sizeof(struct page)) ? ( ((sizeof(struct page)) =3D=3D 0= || (sizeof(struct page)) =3D=3D 1) ? 0 : ( __builtin_constant_p((sizeof(st= ruct page)) - 1) ? (((sizeof(struct page)) - 1) < 2 ? 0 : 63 - __builtin_cl= zll((sizeof(struct page)) - 1)) : (sizeof((sizeof(struct page)) - 1) <=3D 4= ) ? __ilog2_u32((sizeof(struct page)) - 1) : __ilog2_u64((sizeof(struct pag= e)) - 1) ) + 1) : __order_base_2(sizeof(struct page)) ))))))) + (((((({ uns= igned long _x =3D (unsigned long)(data); ((_x) >=3D kernel_map.page_offset = && (!1 || (_x) < kernel_map.page_offset + (((((1UL) << (12)) / sizeof(pgd_t= )) / 2 * ((1UL) << (pgtable_l5_enabled ? 48 : (pgtable_l4_enabled ? 39 : 30= )))) / 2))) ? ((unsigned long)(_x) - kernel_map.va_pa_offset) : ({ unsigned= long _y =3D _x; (0 && _y < kernel_map.virt_addr + 0) ? ((unsigned long)(_y= ) - kernel_map.va_kernel_xip_pa_offset) : ((unsigned long)(_y) - kernel_map= =2Eva_kernel_pa_offset - 0); }); })) >> (12))))))));=0D }=0D # 41 "./include/net/net_namespace.h" 2=0D =0D =0D struct user_namespace;=0D struct proc_dir_entry;=0D struct net_device;=0D struct sock;=0D struct ctl_table_header;=0D struct net_generic;=0D struct uevent_sock;=0D struct netns_ipvs;=0D struct bpf_prog;=0D =0D =0D =0D =0D =0D struct net {=0D =0D =0D =0D refcount_t passive;=0D =0D =0D spinlock_t rules_mod_lock;=0D =0D atomic_t dev_unreg_count;=0D =0D unsigned int dev_base_seq;=0D int ifindex;=0D =0D spinlock_t nsid_lock;=0D atomic_t fnhe_genid;=0D =0D struct list_head list;=0D struct list_head exit_list;=0D =0D =0D =0D =0D =0D struct llist_node cleanup_list;=0D =0D =0D struct key_tag *key_domain;=0D =0D struct user_namespace *user_ns;=0D struct ucounts *ucounts;=0D struct idr netns_ids;=0D =0D struct ns_common ns;=0D struct ref_tracker_dir refcnt_tracker;=0D =0D struct list_head dev_base_head;=0D struct proc_dir_entry *proc_net;=0D struct proc_dir_entry *proc_net_stat;=0D =0D =0D struct ctl_table_set sysctls;=0D =0D =0D struct sock *rtnl;=0D struct sock *genl_sock;=0D =0D struct uevent_sock *uevent_sock;=0D =0D struct hlist_head *dev_name_head;=0D struct hlist_head *dev_index_head;=0D struct raw_notifier_head netdev_chain;=0D =0D =0D =0D =0D u32 hash_mix;=0D =0D struct net_device *loopback_dev;=0D =0D =0D struct list_head rules_ops;=0D =0D struct netns_core core;=0D struct netns_mib mib;=0D struct netns_packet packet;=0D struct netns_unix unx;=0D struct netns_nexthop nexthop;=0D struct netns_ipv4 ipv4;=0D =0D struct netns_ipv6 ipv6;=0D # 147 "./include/net/net_namespace.h"=0D struct net_generic *gen;=0D =0D =0D struct netns_bpf bpf;=0D =0D =0D =0D =0D =0D =0D u64 net_cookie;=0D # 177 "./include/net/net_namespace.h"=0D struct sock *diag_nlsk;=0D =0D =0D =0D } ;=0D =0D =0D # 1 "./include/linux/seq_file_net.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/seq_file.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/string_helpers.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/ctype.h" 1=0D # 21 "./include/linux/ctype.h"=0D extern const unsigned char _ctype[];=0D # 43 "./include/linux/ctype.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int isdigit(int c)=0D {=0D return '0' <=3D c && c <=3D '9';=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char __tolower(unsi= gned char c)=0D {=0D if ((((_ctype[(int)(unsigned char)(c)])&(0x01)) !=3D 0))=0D c -=3D 'A'-'a';=0D return c;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned char __toupper(unsi= gned char c)=0D {=0D if ((((_ctype[(int)(unsigned char)(c)])&(0x02)) !=3D 0))=0D c -=3D 'a'-'A';=0D return c;=0D }=0D # 70 "./include/linux/ctype.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char _tolower(const char c)= =0D {=0D return c | 0x20;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int isodigit(const char c)=0D {=0D return c >=3D '0' && c <=3D '7';=0D }=0D # 7 "./include/linux/string_helpers.h" 2=0D =0D =0D =0D struct device;=0D struct file;=0D struct task_struct;=0D =0D =0D =0D enum string_size_units {=0D STRING_UNITS_10,=0D STRING_UNITS_2,=0D };=0D =0D void string_get_size(u64 size, u64 blk_size, enum string_size_units units,= =0D char *buf, int len);=0D # 33 "./include/linux/string_helpers.h"=0D int string_unescape(char *src, char *dst, size_t size, unsigned int flags);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_unescape_inplace(= char *buf, unsigned int flags)=0D {=0D return string_unescape(buf, buf, 0, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_unescape_any(char= *src, char *dst, size_t size)=0D {=0D return string_unescape(src, dst, size, (((((1UL))) << (0)) | ((((1UL))) <<= (1)) | ((((1UL))) << (2)) | ((((1UL))) << (3))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_unescape_any_inpl= ace(char *buf)=0D {=0D return string_unescape_any(buf, buf, 0);=0D }=0D # 65 "./include/linux/string_helpers.h"=0D int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,=0D unsigned int flags, const char *only);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_escape_mem_any_np= (const char *src, size_t isz,=0D char *dst, size_t osz, const char *only)=0D {=0D return string_escape_mem(src, isz, dst, osz, ((((((1UL))) << (0)) | ((((1U= L))) << (3)) | ((((1UL))) << (1)) | ((((1UL))) << (2))) | ((((1UL))) << (4)= )), only);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_escape_str(const = char *src, char *dst, size_t sz,=0D unsigned int flags, const char *only)=0D {=0D return string_escape_mem(src, strlen(src), dst, sz, flags, only);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int string_escape_str_any_np= (const char *src, char *dst,=0D size_t sz, const char *only)=0D {=0D return string_escape_str(src, dst, sz, ((((((1UL))) << (0)) | ((((1UL))) <= < (3)) | ((((1UL))) << (1)) | ((((1UL))) << (2))) | ((((1UL))) << (4))), on= ly);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void string_upper(char *dst,= const char *src)=0D {=0D do {=0D *dst++ =3D __toupper(*src);=0D } while (*src++);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void string_lower(char *dst,= const char *src)=0D {=0D do {=0D *dst++ =3D __tolower(*src);=0D } while (*src++);=0D }=0D =0D char *kstrdup_quotable(const char *src, gfp_t gfp);=0D char *kstrdup_quotable_cmdline(struct task_struct *task, gfp_t gfp);=0D char *kstrdup_quotable_file(struct file *file, gfp_t gfp);=0D =0D char **kasprintf_strarray(gfp_t gfp, const char *prefix, size_t n);=0D void kfree_strarray(char **array, size_t n);=0D =0D char **devm_kasprintf_strarray(struct device *dev, const char *prefix, size= _t n);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *str_yes_no(bool = v)=0D {=0D return v ? "yes" : "no";=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *str_on_off(bool = v)=0D {=0D return v ? "on" : "off";=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *str_enable_disab= le(bool v)=0D {=0D return v ? "enable" : "disable";=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *str_enabled_disa= bled(bool v)=0D {=0D return v ? "enabled" : "disabled";=0D }=0D # 8 "./include/linux/seq_file.h" 2=0D =0D =0D =0D =0D =0D =0D =0D struct seq_operations;=0D =0D struct seq_file {=0D char *buf;=0D size_t size;=0D size_t from;=0D size_t count;=0D size_t pad_until;=0D loff_t index;=0D loff_t read_pos;=0D struct mutex lock;=0D const struct seq_operations *op;=0D int poll_event;=0D const struct file *file;=0D void *private;=0D };=0D =0D struct seq_operations {=0D void * (*start) (struct seq_file *m, loff_t *pos);=0D void (*stop) (struct seq_file *m, void *v);=0D void * (*next) (struct seq_file *m, void *v, loff_t *pos);=0D int (*show) (struct seq_file *m, void *v);=0D };=0D # 51 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool seq_has_overflowed(stru= ct seq_file *m)=0D {=0D return m->count =3D=3D m->size;=0D }=0D # 64 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t seq_get_buf(struct se= q_file *m, char **bufp)=0D {=0D do { if (__builtin_expect(!!(m->count > m->size), 0)) do { do { __asm__ __= volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\= n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" = ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/lin= ux/seq_file.h"), "i" (66), "i" (0), "i" (sizeof(struct bug_entry))); } whil= e (0); do { ; __builtin_unreachable(); } while (0); } while (0); } while (0= );=0D if (m->count < m->size)=0D *bufp =3D m->buf + m->count;=0D else=0D *bufp =3D ((void *)0);=0D =0D return m->size - m->count;=0D }=0D # 84 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_commit(struct seq_f= ile *m, int num)=0D {=0D if (num < 0) {=0D m->count =3D m->size;=0D } else {=0D do { if (__builtin_expect(!!(m->count + num > m->size), 0)) do { do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/seq_file.h"), "i" (89), "i" (0), "i" (sizeof(struct bug_entry)));= } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } w= hile (0);=0D m->count +=3D num;=0D }=0D }=0D # 102 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_setwidth(struct seq= _file *m, size_t size)=0D {=0D m->pad_until =3D m->count + size;=0D }=0D void seq_pad(struct seq_file *m, char c);=0D =0D char *mangle_path(char *s, const char *p, const char *esc);=0D int seq_open(struct file *, const struct seq_operations *);=0D ssize_t seq_read(struct file *, char *, size_t, loff_t *);=0D ssize_t seq_read_iter(struct kiocb *iocb, struct iov_iter *iter);=0D loff_t seq_lseek(struct file *, loff_t, int);=0D int seq_release(struct inode *, struct file *);=0D int seq_write(struct seq_file *seq, const void *data, size_t len);=0D =0D __attribute__((__format__(printf, 2, 0)))=0D void seq_vprintf(struct seq_file *m, const char *fmt, va_list args);=0D __attribute__((__format__(printf, 2, 3)))=0D void seq_printf(struct seq_file *m, const char *fmt, ...);=0D void seq_putc(struct seq_file *m, char c);=0D void seq_puts(struct seq_file *m, const char *s);=0D void seq_put_decimal_ull_width(struct seq_file *m, const char *delimiter,=0D unsigned long long num, unsigned int width);=0D void seq_put_decimal_ull(struct seq_file *m, const char *delimiter,=0D unsigned long long num);=0D void seq_put_decimal_ll(struct seq_file *m, const char *delimiter, long lon= g num);=0D void seq_put_hex_ll(struct seq_file *m, const char *delimiter,=0D unsigned long long v, unsigned int width);=0D =0D void seq_escape_mem(struct seq_file *m, const char *src, size_t len,=0D unsigned int flags, const char *esc);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_escape_str(struct s= eq_file *m, const char *src,=0D unsigned int flags, const char *esc)=0D {=0D seq_escape_mem(m, src, strlen(src), flags, esc);=0D }=0D # 150 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_escape(struct seq_f= ile *m, const char *s, const char *esc)=0D {=0D seq_escape_str(m, s, ((((1UL))) << (3)), esc);=0D }=0D =0D void seq_hex_dump(struct seq_file *m, const char *prefix_str, int prefix_ty= pe,=0D int rowsize, int groupsize, const void *buf, size_t len,=0D bool ascii);=0D =0D int seq_path(struct seq_file *, const struct path *, const char *);=0D int seq_file_path(struct seq_file *, struct file *, const char *);=0D int seq_dentry(struct seq_file *, struct dentry *, const char *);=0D int seq_path_root(struct seq_file *m, const struct path *path,=0D const struct path *root, const char *esc);=0D =0D void *single_start(struct seq_file *, loff_t *);=0D int single_open(struct file *, int (*)(struct seq_file *, void *), void *);= =0D int single_open_size(struct file *, int (*)(struct seq_file *, void *), voi= d *, size_t);=0D int single_release(struct inode *, struct file *);=0D void *__seq_open_private(struct file *, const struct seq_operations *, int)= ;=0D int seq_open_private(struct file *, const struct seq_operations *, int);=0D int seq_release_private(struct inode *, struct file *);=0D =0D =0D void seq_bprintf(struct seq_file *m, const char *f, const u32 *binary);=0D # 223 "./include/linux/seq_file.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *seq_u= ser_ns(struct seq_file *seq)=0D {=0D =0D return seq->file->f_cred->user_ns;=0D =0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_show_option(struct = seq_file *m, const char *name,=0D const char *value)=0D {=0D seq_putc(m, ',');=0D seq_escape(m, name, ",=3D \t\n\\");=0D if (value) {=0D seq_putc(m, '=3D');=0D seq_escape(m, value, ", \t\n\\");=0D }=0D }=0D # 273 "./include/linux/seq_file.h"=0D extern struct list_head *seq_list_start(struct list_head *head,=0D loff_t pos);=0D extern struct list_head *seq_list_start_head(struct list_head *head,=0D loff_t pos);=0D extern struct list_head *seq_list_next(void *v, struct list_head *head,=0D loff_t *ppos);=0D =0D =0D =0D =0D =0D extern struct hlist_node *seq_hlist_start(struct hlist_head *head,=0D loff_t pos);=0D extern struct hlist_node *seq_hlist_start_head(struct hlist_head *head,=0D loff_t pos);=0D extern struct hlist_node *seq_hlist_next(void *v, struct hlist_head *head,= =0D loff_t *ppos);=0D =0D extern struct hlist_node *seq_hlist_start_rcu(struct hlist_head *head,=0D loff_t pos);=0D extern struct hlist_node *seq_hlist_start_head_rcu(struct hlist_head *head,= =0D loff_t pos);=0D extern struct hlist_node *seq_hlist_next_rcu(void *v,=0D struct hlist_head *head,=0D loff_t *ppos);=0D =0D =0D extern struct hlist_node *seq_hlist_start_percpu(struct hlist_head *head, i= nt *cpu, loff_t pos);=0D =0D extern struct hlist_node *seq_hlist_next_percpu(void *v, struct hlist_head = *head, int *cpu, loff_t *pos);=0D =0D void seq_file_init(void);=0D # 6 "./include/linux/seq_file_net.h" 2=0D =0D struct net;=0D extern struct net init_net;=0D =0D struct seq_net_private {=0D =0D struct net *net;=0D netns_tracker ns_tracker;=0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *seq_file_net(str= uct seq_file *seq)=0D {=0D =0D return ((struct seq_net_private *)seq->private)->net;=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *seq_file_single_= net(struct seq_file *seq)=0D {=0D =0D return (struct net *)seq->private;=0D =0D =0D =0D }=0D # 184 "./include/net/net_namespace.h" 2=0D =0D =0D extern struct net init_net;=0D =0D =0D struct net *copy_net_ns(unsigned long flags, struct user_namespace *user_ns= ,=0D struct net *old_net);=0D =0D void net_ns_get_ownership(const struct net *net, kuid_t *uid, kgid_t *gid);= =0D =0D void net_ns_barrier(void);=0D =0D struct ns_common *get_net_ns(struct ns_common *ns);=0D struct net *get_net_ns_by_fd(int fd);=0D # 230 "./include/net/net_namespace.h"=0D extern struct list_head net_namespace_list;=0D =0D struct net *get_net_ns_by_pid(pid_t pid);=0D =0D =0D void ipx_register_sysctl(void);=0D void ipx_unregister_sysctl(void);=0D =0D =0D =0D =0D =0D =0D void __put_net(struct net *net);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *get_net(struct n= et *net)=0D {=0D refcount_inc(&net->ns.count);=0D return net;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *maybe_get_net(st= ruct net *net)=0D {=0D =0D =0D =0D =0D =0D if (!refcount_inc_not_zero(&net->ns.count))=0D net =3D ((void *)0);=0D return net;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_net(struct net *net= )=0D {=0D if (refcount_dec_and_test(&net->ns.count))=0D __put_net(net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int net_eq(const struct net *net1, const struct net *net2)=0D {=0D return net1 =3D=3D net2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int check_net(const struct n= et *net)=0D {=0D return refcount_read(&net->ns.count) !=3D 0;=0D }=0D =0D void net_drop_ns(void *);=0D # 315 "./include/net/net_namespace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netns_tracker_alloc(str= uct net *net,=0D netns_tracker *tracker, gfp_t gfp)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netns_tracker_free(stru= ct net *net,=0D netns_tracker *tracker)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *get_net_track(st= ruct net *net,=0D netns_tracker *tracker, gfp_t gfp)=0D {=0D get_net(net);=0D netns_tracker_alloc(net, tracker, gfp);=0D return net;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_net_track(struct ne= t *net, netns_tracker *tracker)=0D {=0D netns_tracker_free(net, tracker);=0D put_net(net);=0D }=0D =0D typedef struct {=0D =0D struct net *net;=0D =0D } possible_net_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void write_pnet(possible_net= _t *pnet, struct net *net)=0D {=0D =0D pnet->net =3D net;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *read_pnet(const = possible_net_t *pnet)=0D {=0D =0D return pnet->net;=0D =0D =0D =0D }=0D # 387 "./include/net/net_namespace.h"=0D int peernet2id_alloc(struct net *net, struct net *peer, gfp_t gfp);=0D int peernet2id(const struct net *net, struct net *peer);=0D bool peernet_has_id(const struct net *net, struct net *peer);=0D struct net *get_net_ns_by_id(const struct net *net, int id);=0D =0D struct pernet_operations {=0D struct list_head list;=0D # 416 "./include/net/net_namespace.h"=0D int (*init)(struct net *net);=0D void (*pre_exit)(struct net *net);=0D void (*exit)(struct net *net);=0D void (*exit_batch)(struct list_head *net_exit_list);=0D unsigned int *id;=0D size_t size;=0D };=0D # 443 "./include/net/net_namespace.h"=0D int register_pernet_subsys(struct pernet_operations *);=0D void unregister_pernet_subsys(struct pernet_operations *);=0D int register_pernet_device(struct pernet_operations *);=0D void unregister_pernet_device(struct pernet_operations *);=0D =0D struct ctl_table;=0D =0D =0D int net_sysctl_init(void);=0D struct ctl_table_header *register_net_sysctl(struct net *net, const char *p= ath,=0D struct ctl_table *table);=0D void unregister_net_sysctl_table(struct ctl_table_header *header);=0D # 467 "./include/net/net_namespace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rt_genid_ipv4(const stru= ct net *net)=0D {=0D return atomic_read(&net->ipv4.rt_genid);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rt_genid_ipv6(const stru= ct net *net)=0D {=0D return atomic_read(&net->ipv6.fib6_sernum);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rt_genid_bump_ipv4(stru= ct net *net)=0D {=0D atomic_inc(&net->ipv4.rt_genid);=0D }=0D =0D extern void (*__fib6_flush_trees)(struct net *net);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rt_genid_bump_ipv6(stru= ct net *net)=0D {=0D if (__fib6_flush_trees)=0D __fib6_flush_trees(net);=0D }=0D # 500 "./include/net/net_namespace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rt_genid_bump_all(struc= t net *net)=0D {=0D rt_genid_bump_ipv4(net);=0D rt_genid_bump_ipv6(net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fnhe_genid(const struct = net *net)=0D {=0D return atomic_read(&net->fnhe_genid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fnhe_genid_bump(struct = net *net)=0D {=0D atomic_inc(&net->fnhe_genid);=0D }=0D =0D =0D void net_ns_init(void);=0D # 39 "./include/linux/netdevice.h" 2=0D =0D =0D =0D # 1 "./include/net/netprio_cgroup.h" 1=0D # 11 "./include/net/netprio_cgroup.h"=0D # 1 "./include/linux/cgroup.h" 1=0D # 16 "./include/linux/cgroup.h"=0D # 1 "./include/uapi/linux/cgroupstats.h" 1=0D # 20 "./include/uapi/linux/cgroupstats.h"=0D # 1 "./include/uapi/linux/taskstats.h" 1=0D # 41 "./include/uapi/linux/taskstats.h"=0D struct taskstats {=0D =0D =0D =0D =0D =0D __u16 version;=0D __u32 ac_exitcode;=0D =0D =0D =0D =0D __u8 ac_flag;=0D __u8 ac_nice;=0D # 72 "./include/uapi/linux/taskstats.h"=0D __u64 cpu_count __attribute__((aligned(8)));=0D __u64 cpu_delay_total;=0D =0D =0D =0D =0D =0D =0D __u64 blkio_count;=0D __u64 blkio_delay_total;=0D =0D =0D __u64 swapin_count;=0D __u64 swapin_delay_total;=0D =0D =0D =0D =0D =0D =0D =0D __u64 cpu_run_real_total;=0D =0D =0D =0D =0D =0D =0D =0D __u64 cpu_run_virtual_total;=0D =0D =0D =0D =0D char ac_comm[32];=0D __u8 ac_sched __attribute__((aligned(8)));=0D =0D __u8 ac_pad[3];=0D __u32 ac_uid __attribute__((aligned(8)));=0D =0D __u32 ac_gid;=0D __u32 ac_pid;=0D __u32 ac_ppid;=0D =0D __u32 ac_btime;=0D __u64 ac_etime __attribute__((aligned(8)));=0D =0D __u64 ac_utime;=0D __u64 ac_stime;=0D __u64 ac_minflt;=0D __u64 ac_majflt;=0D # 132 "./include/uapi/linux/taskstats.h"=0D __u64 coremem;=0D =0D =0D =0D __u64 virtmem;=0D =0D =0D =0D =0D __u64 hiwater_rss;=0D __u64 hiwater_vm;=0D =0D =0D __u64 read_char;=0D __u64 write_char;=0D __u64 read_syscalls;=0D __u64 write_syscalls;=0D =0D =0D =0D =0D __u64 read_bytes;=0D __u64 write_bytes;=0D __u64 cancelled_write_bytes;=0D =0D __u64 nvcsw;=0D __u64 nivcsw;=0D =0D =0D __u64 ac_utimescaled;=0D __u64 ac_stimescaled;=0D __u64 cpu_scaled_run_real_total;=0D =0D =0D __u64 freepages_count;=0D __u64 freepages_delay_total;=0D =0D =0D __u64 thrashing_count;=0D __u64 thrashing_delay_total;=0D =0D =0D __u64 ac_btime64;=0D =0D =0D __u64 compact_count;=0D __u64 compact_delay_total;=0D };=0D # 188 "./include/uapi/linux/taskstats.h"=0D enum {=0D TASKSTATS_CMD_UNSPEC =3D 0,=0D TASKSTATS_CMD_GET,=0D TASKSTATS_CMD_NEW,=0D __TASKSTATS_CMD_MAX,=0D };=0D =0D =0D =0D enum {=0D TASKSTATS_TYPE_UNSPEC =3D 0,=0D TASKSTATS_TYPE_PID,=0D TASKSTATS_TYPE_TGID,=0D TASKSTATS_TYPE_STATS,=0D TASKSTATS_TYPE_AGGR_PID,=0D TASKSTATS_TYPE_AGGR_TGID,=0D TASKSTATS_TYPE_NULL,=0D __TASKSTATS_TYPE_MAX,=0D };=0D =0D =0D =0D enum {=0D TASKSTATS_CMD_ATTR_UNSPEC =3D 0,=0D TASKSTATS_CMD_ATTR_PID,=0D TASKSTATS_CMD_ATTR_TGID,=0D TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,=0D TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,=0D __TASKSTATS_CMD_ATTR_MAX,=0D };=0D # 21 "./include/uapi/linux/cgroupstats.h" 2=0D # 32 "./include/uapi/linux/cgroupstats.h"=0D struct cgroupstats {=0D __u64 nr_sleeping;=0D __u64 nr_running;=0D __u64 nr_stopped;=0D __u64 nr_uninterruptible;=0D =0D __u64 nr_io_wait;=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D CGROUPSTATS_CMD_UNSPEC =3D __TASKSTATS_CMD_MAX,=0D CGROUPSTATS_CMD_GET,=0D CGROUPSTATS_CMD_NEW,=0D __CGROUPSTATS_CMD_MAX,=0D };=0D =0D =0D =0D enum {=0D CGROUPSTATS_TYPE_UNSPEC =3D 0,=0D CGROUPSTATS_TYPE_CGROUP_STATS,=0D __CGROUPSTATS_TYPE_MAX,=0D };=0D =0D =0D =0D enum {=0D CGROUPSTATS_CMD_ATTR_UNSPEC =3D 0,=0D CGROUPSTATS_CMD_ATTR_FD,=0D __CGROUPSTATS_CMD_ATTR_MAX,=0D };=0D # 17 "./include/linux/cgroup.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/nsproxy.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct mnt_namespace;=0D struct uts_namespace;=0D struct ipc_namespace;=0D struct pid_namespace;=0D struct cgroup_namespace;=0D struct fs_struct;=0D # 31 "./include/linux/nsproxy.h"=0D struct nsproxy {=0D atomic_t count;=0D struct uts_namespace *uts_ns;=0D struct ipc_namespace *ipc_ns;=0D struct mnt_namespace *mnt_ns;=0D struct pid_namespace *pid_ns_for_children;=0D struct net *net_ns;=0D struct time_namespace *time_ns;=0D struct time_namespace *time_ns_for_children;=0D struct cgroup_namespace *cgroup_ns;=0D };=0D extern struct nsproxy init_nsproxy;=0D # 53 "./include/linux/nsproxy.h"=0D struct nsset {=0D unsigned flags;=0D struct nsproxy *nsproxy;=0D struct fs_struct *fs;=0D const struct cred *cred;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cred *nsset_cred(stru= ct nsset *set)=0D {=0D if (set->flags & 0x10000000)=0D return (struct cred *)set->cred;=0D =0D return ((void *)0);=0D }=0D # 94 "./include/linux/nsproxy.h"=0D int copy_namespaces(unsigned long flags, struct task_struct *tsk);=0D void exit_task_namespaces(struct task_struct *tsk);=0D void switch_task_namespaces(struct task_struct *tsk, struct nsproxy *new);= =0D void free_nsproxy(struct nsproxy *ns);=0D int unshare_nsproxy_namespaces(unsigned long, struct nsproxy **,=0D struct cred *, struct fs_struct *);=0D int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __= attribute__((__no_sanitize__("cfi"))) nsproxy_cache_init(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_nsproxy(struct nspr= oxy *ns)=0D {=0D if (atomic_dec_and_test(&ns->count)) {=0D free_nsproxy(ns);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void get_nsproxy(struct nspr= oxy *ns)=0D {=0D atomic_inc(&ns->count);=0D }=0D # 24 "./include/linux/cgroup.h" 2=0D # 1 "./include/linux/user_namespace.h" 1=0D # 17 "./include/linux/user_namespace.h"=0D struct uid_gid_extent {=0D u32 first;=0D u32 lower_first;=0D u32 count;=0D };=0D =0D struct uid_gid_map {=0D u32 nr_extents;=0D union {=0D struct uid_gid_extent extent[5];=0D struct {=0D struct uid_gid_extent *forward;=0D struct uid_gid_extent *reverse;=0D };=0D };=0D };=0D =0D =0D =0D =0D =0D struct ucounts;=0D =0D enum ucount_type {=0D UCOUNT_USER_NAMESPACES,=0D UCOUNT_PID_NAMESPACES,=0D UCOUNT_UTS_NAMESPACES,=0D UCOUNT_IPC_NAMESPACES,=0D UCOUNT_NET_NAMESPACES,=0D UCOUNT_MNT_NAMESPACES,=0D UCOUNT_CGROUP_NAMESPACES,=0D UCOUNT_TIME_NAMESPACES,=0D =0D UCOUNT_INOTIFY_INSTANCES,=0D UCOUNT_INOTIFY_WATCHES,=0D =0D =0D =0D =0D =0D UCOUNT_RLIMIT_NPROC,=0D UCOUNT_RLIMIT_MSGQUEUE,=0D UCOUNT_RLIMIT_SIGPENDING,=0D UCOUNT_RLIMIT_MEMLOCK,=0D UCOUNT_COUNTS,=0D };=0D =0D =0D =0D struct user_namespace {=0D struct uid_gid_map uid_map;=0D struct uid_gid_map gid_map;=0D struct uid_gid_map projid_map;=0D struct user_namespace *parent;=0D int level;=0D kuid_t owner;=0D kgid_t group;=0D struct ns_common ns;=0D unsigned long flags;=0D =0D =0D bool parent_could_setfcap;=0D =0D =0D =0D =0D =0D =0D =0D struct list_head keyring_name_list;=0D struct key *user_keyring_register;=0D struct rw_semaphore keyring_sem;=0D =0D =0D =0D =0D =0D =0D struct work_struct work;=0D =0D struct ctl_table_set set;=0D struct ctl_table_header *sysctls;=0D =0D struct ucounts *ucounts;=0D long ucount_max[UCOUNT_COUNTS];=0D } ;=0D =0D struct ucounts {=0D struct hlist_node node;=0D struct user_namespace *ns;=0D kuid_t uid;=0D atomic_t count;=0D atomic_long_t ucount[UCOUNT_COUNTS];=0D };=0D =0D extern struct user_namespace init_user_ns;=0D extern struct ucounts init_ucounts;=0D =0D bool setup_userns_sysctls(struct user_namespace *ns);=0D void retire_userns_sysctls(struct user_namespace *ns);=0D struct ucounts *inc_ucount(struct user_namespace *ns, kuid_t uid, enum ucou= nt_type type);=0D void dec_ucount(struct ucounts *ucounts, enum ucount_type type);=0D struct ucounts *alloc_ucounts(struct user_namespace *ns, kuid_t uid);=0D struct ucounts * __attribute__((__warn_unused_result__)) get_ucounts(struct= ucounts *ucounts);=0D void put_ucounts(struct ucounts *ucounts);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long get_ucounts_value(struc= t ucounts *ucounts, enum ucount_type type)=0D {=0D return atomic_long_read(&ucounts->ucount[type]);=0D }=0D =0D long inc_rlimit_ucounts(struct ucounts *ucounts, enum ucount_type type, lon= g v);=0D bool dec_rlimit_ucounts(struct ucounts *ucounts, enum ucount_type type, lon= g v);=0D long inc_rlimit_get_ucounts(struct ucounts *ucounts, enum ucount_type type)= ;=0D void dec_rlimit_put_ucounts(struct ucounts *ucounts, enum ucount_type type)= ;=0D bool is_ucounts_overlimit(struct ucounts *ucounts, enum ucount_type type, u= nsigned long max);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_rlimit_ucount_max(s= truct user_namespace *ns,=0D enum ucount_type type, unsigned long max)=0D {=0D ns->ucount_max[type] =3D max <=3D ((long)(~0UL >> 1)) ? max : ((long)(~0UL= >> 1));=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *get_u= ser_ns(struct user_namespace *ns)=0D {=0D if (ns)=0D refcount_inc(&ns->ns.count);=0D return ns;=0D }=0D =0D extern int create_user_ns(struct cred *new);=0D extern int unshare_userns(unsigned long unshare_flags, struct cred **new_cr= ed);=0D extern void __put_user_ns(struct user_namespace *ns);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_user_ns(struct user= _namespace *ns)=0D {=0D if (ns && refcount_dec_and_test(&ns->ns.count))=0D __put_user_ns(ns);=0D }=0D =0D struct seq_operations;=0D extern const struct seq_operations proc_uid_seq_operations;=0D extern const struct seq_operations proc_gid_seq_operations;=0D extern const struct seq_operations proc_projid_seq_operations;=0D extern ssize_t proc_uid_map_write(struct file *, const char *, size_t, loff= _t *);=0D extern ssize_t proc_gid_map_write(struct file *, const char *, size_t, loff= _t *);=0D extern ssize_t proc_projid_map_write(struct file *, const char *, size_t, l= off_t *);=0D extern ssize_t proc_setgroups_write(struct file *, const char *, size_t, lo= ff_t *);=0D extern int proc_setgroups_show(struct seq_file *m, void *v);=0D extern bool userns_may_setgroups(const struct user_namespace *ns);=0D extern bool in_userns(const struct user_namespace *ancestor,=0D const struct user_namespace *child);=0D extern bool current_in_userns(const struct user_namespace *target_ns);=0D struct ns_common *ns_get_owner(struct ns_common *ns);=0D # 25 "./include/linux/cgroup.h" 2=0D =0D # 1 "./include/linux/kernel_stat.h" 1=0D # 20 "./include/linux/kernel_stat.h"=0D enum cpu_usage_stat {=0D CPUTIME_USER,=0D CPUTIME_NICE,=0D CPUTIME_SYSTEM,=0D CPUTIME_SOFTIRQ,=0D CPUTIME_IRQ,=0D CPUTIME_IDLE,=0D CPUTIME_IOWAIT,=0D CPUTIME_STEAL,=0D CPUTIME_GUEST,=0D CPUTIME_GUEST_NICE,=0D NR_STATS,=0D };=0D =0D struct kernel_cpustat {=0D u64 cpustat[NR_STATS];=0D };=0D =0D struct kernel_stat {=0D unsigned long irqs_sum;=0D unsigned int softirqs[NR_SOFTIRQS];=0D };=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct kerne= l_stat) kstat;=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct kerne= l_cpustat) kernel_cpustat;=0D =0D =0D =0D =0D =0D =0D =0D extern unsigned long long nr_context_switches(void);=0D =0D extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu);=0D extern void kstat_incr_irq_this_cpu(unsigned int irq);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kstat_incr_softirqs_thi= s_cpu(unsigned int irq)=0D {=0D ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify =3D= (typeof((&(kstat.softirqs[irq])) + 0))((void *)0); (void)__vpp_verify; } w= hile (0); switch(sizeof(kstat.softirqs[irq])) { case 1: do { *({ do { const= void *__vpp_verify =3D (typeof((&(kstat.softirqs[irq])) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(kstat.softirqs[irq]))) *)(&(kstat.softirqs[irq]))); (t= ypeof((typeof(*(&(kstat.softirqs[irq]))) *)(&(kstat.softirqs[irq])))) (__pt= r + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); = }); }) +=3D 1; } while (0);break; case 2: do { *({ do { const void *__vpp_v= erify =3D (typeof((&(kstat.softirqs[irq])) + 0))((void *)0); (void)__vpp_ve= rify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((type= of(*(&(kstat.softirqs[irq]))) *)(&(kstat.softirqs[irq]))); (typeof((typeof(= *(&(kstat.softirqs[irq]))) *)(&(kstat.softirqs[irq])))) (__ptr + (((__per_c= pu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1;= } while (0);break; case 4: do { *({ do { const void *__vpp_verify =3D (typ= eof((&(kstat.softirqs[irq])) + 0))((void *)0); (void)__vpp_verify; } while = (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(kstat.s= oftirqs[irq]))) *)(&(kstat.softirqs[irq]))); (typeof((typeof(*(&(kstat.soft= irqs[irq]))) *)(&(kstat.softirqs[irq])))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);b= reak; case 8: do { *({ do { const void *__vpp_verify =3D (typeof((&(kstat.s= oftirqs[irq])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsign= ed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(kstat.softirqs[irq]))= ) *)(&(kstat.softirqs[irq]))); (typeof((typeof(*(&(kstat.softirqs[irq]))) *= )(&(kstat.softirqs[irq])))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);break; default:= __bad_size_call_parameter();break; } } while (0); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int kstat_softirqs_= cpu(unsigned int irq, int cpu)=0D {=0D return (*({ do { const void *__vpp_verify =3D (typeof((&(kstat)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __p= tr =3D (unsigned long) ((typeof(*((&(kstat)))) *)((&(kstat)))); (typeof((ty= peof(*((&(kstat)))) *)((&(kstat))))) (__ptr + (((__per_cpu_offset[(cpu)])))= ); }); })).softirqs[irq];=0D }=0D =0D =0D =0D =0D extern unsigned int kstat_irqs_usr(unsigned int irq);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int kstat_cpu_irqs_= sum(unsigned int cpu)=0D {=0D return (*({ do { const void *__vpp_verify =3D (typeof((&(kstat)) + 0))((vo= id *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D= (unsigned long) ((typeof(*((&(kstat)))) *)((&(kstat)))); (typeof((typeof(*= ((&(kstat)))) *)((&(kstat))))) (__ptr + (((__per_cpu_offset[(cpu)])))); });= })).irqs_sum;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 kcpustat_field(struct ke= rnel_cpustat *kcpustat,=0D enum cpu_usage_stat usage, int cpu)=0D {=0D return kcpustat->cpustat[usage];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kcpustat_cpu_fetch(stru= ct kernel_cpustat *dst, int cpu)=0D {=0D *dst =3D (*({ do { const void *__vpp_verify =3D (typeof((&(kernel_cpustat)= ) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr= ; __ptr =3D (unsigned long) ((typeof(*((&(kernel_cpustat)))) *)((&(kernel_c= pustat)))); (typeof((typeof(*((&(kernel_cpustat)))) *)((&(kernel_cpustat)))= )) (__ptr + (((__per_cpu_offset[(cpu)])))); }); }));=0D }=0D =0D =0D =0D extern void account_user_time(struct task_struct *, u64);=0D extern void account_guest_time(struct task_struct *, u64);=0D extern void account_system_time(struct task_struct *, int, u64);=0D extern void account_system_index_time(struct task_struct *, u64,=0D enum cpu_usage_stat);=0D extern void account_steal_time(u64);=0D extern void account_idle_time(u64);=0D extern u64 get_idle_time(struct kernel_cpustat *kcs, int cpu);=0D =0D =0D =0D =0D =0D =0D =0D extern void account_process_tick(struct task_struct *, int user);=0D =0D =0D extern void account_idle_ticks(unsigned long ticks);=0D # 27 "./include/linux/cgroup.h" 2=0D =0D # 1 "./include/linux/cgroup-defs.h" 1=0D # 22 "./include/linux/cgroup-defs.h"=0D # 1 "./include/linux/bpf-cgroup-defs.h" 1=0D # 11 "./include/linux/bpf-cgroup-defs.h"=0D struct bpf_prog_array;=0D =0D enum cgroup_bpf_attach_type {=0D CGROUP_BPF_ATTACH_TYPE_INVALID =3D -1,=0D CGROUP_INET_INGRESS =3D 0,=0D CGROUP_INET_EGRESS,=0D CGROUP_INET_SOCK_CREATE,=0D CGROUP_SOCK_OPS,=0D CGROUP_DEVICE,=0D CGROUP_INET4_BIND,=0D CGROUP_INET6_BIND,=0D CGROUP_INET4_CONNECT,=0D CGROUP_INET6_CONNECT,=0D CGROUP_INET4_POST_BIND,=0D CGROUP_INET6_POST_BIND,=0D CGROUP_UDP4_SENDMSG,=0D CGROUP_UDP6_SENDMSG,=0D CGROUP_SYSCTL,=0D CGROUP_UDP4_RECVMSG,=0D CGROUP_UDP6_RECVMSG,=0D CGROUP_GETSOCKOPT,=0D CGROUP_SETSOCKOPT,=0D CGROUP_INET4_GETPEERNAME,=0D CGROUP_INET6_GETPEERNAME,=0D CGROUP_INET4_GETSOCKNAME,=0D CGROUP_INET6_GETSOCKNAME,=0D CGROUP_INET_SOCK_RELEASE,=0D MAX_CGROUP_BPF_ATTACH_TYPE=0D };=0D =0D struct cgroup_bpf {=0D =0D struct bpf_prog_array *effective[MAX_CGROUP_BPF_ATTACH_TYPE];=0D =0D =0D =0D =0D =0D =0D struct list_head progs[MAX_CGROUP_BPF_ATTACH_TYPE];=0D u32 flags[MAX_CGROUP_BPF_ATTACH_TYPE];=0D =0D =0D struct list_head storages;=0D =0D =0D struct bpf_prog_array *inactive;=0D =0D =0D struct percpu_ref refcnt;=0D =0D =0D struct work_struct release_work;=0D };=0D # 23 "./include/linux/cgroup-defs.h" 2=0D # 1 "./include/linux/psi_types.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/kthread.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct mm_struct;=0D =0D __attribute__((__format__(printf, 4, 5)))=0D struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),=0D void *data,=0D int node,=0D const char namefmt[], ...);=0D # 31 "./include/linux/kthread.h"=0D struct task_struct *kthread_create_on_cpu(int (*threadfn)(void *data),=0D void *data,=0D unsigned int cpu,=0D const char *namefmt);=0D =0D void get_kthread_comm(char *buf, size_t buf_size, struct task_struct *tsk);= =0D bool set_kthread_struct(struct task_struct *p);=0D =0D void kthread_set_per_cpu(struct task_struct *k, int cpu);=0D bool kthread_is_per_cpu(struct task_struct *k);=0D # 72 "./include/linux/kthread.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *=0D kthread_run_on_cpu(int (*threadfn)(void *data), void *data,=0D unsigned int cpu, const char *namefmt)=0D {=0D struct task_struct *p;=0D =0D p =3D kthread_create_on_cpu(threadfn, data, cpu, namefmt);=0D if (!IS_ERR(p))=0D wake_up_process(p);=0D =0D return p;=0D }=0D =0D void free_kthread_struct(struct task_struct *k);=0D void kthread_bind(struct task_struct *k, unsigned int cpu);=0D void kthread_bind_mask(struct task_struct *k, const struct cpumask *mask);= =0D int kthread_stop(struct task_struct *k);=0D bool kthread_should_stop(void);=0D bool kthread_should_park(void);=0D bool __kthread_should_park(struct task_struct *k);=0D bool kthread_freezable_should_stop(bool *was_frozen);=0D void *kthread_func(struct task_struct *k);=0D void *kthread_data(struct task_struct *k);=0D void *kthread_probe_data(struct task_struct *k);=0D int kthread_park(struct task_struct *k);=0D void kthread_unpark(struct task_struct *k);=0D void kthread_parkme(void);=0D void kthread_exit(long result) __attribute__((__noreturn__));=0D void kthread_complete_and_exit(struct completion *, long) __attribute__((__= noreturn__));=0D =0D int kthreadd(void *unused);=0D extern struct task_struct *kthreadd_task;=0D extern int tsk_fork_get_node(struct task_struct *tsk);=0D # 114 "./include/linux/kthread.h"=0D struct kthread_work;=0D typedef void (*kthread_work_func_t)(struct kthread_work *work);=0D void kthread_delayed_work_timer_fn(struct timer_list *t);=0D =0D enum {=0D KTW_FREEZABLE =3D 1 << 0,=0D };=0D =0D struct kthread_worker {=0D unsigned int flags;=0D raw_spinlock_t lock;=0D struct list_head work_list;=0D struct list_head delayed_work_list;=0D struct task_struct *task;=0D struct kthread_work *current_work;=0D };=0D =0D struct kthread_work {=0D struct list_head node;=0D kthread_work_func_t func;=0D struct kthread_worker *worker;=0D =0D int canceling;=0D };=0D =0D struct kthread_delayed_work {=0D struct kthread_work work;=0D struct timer_list timer;=0D };=0D # 162 "./include/linux/kthread.h"=0D extern void __kthread_init_worker(struct kthread_worker *worker,=0D const char *name, struct lock_class_key *key);=0D # 186 "./include/linux/kthread.h"=0D int kthread_worker_fn(void *worker_ptr);=0D =0D __attribute__((__format__(printf, 2, 3)))=0D struct kthread_worker *=0D kthread_create_worker(unsigned int flags, const char namefmt[], ...);=0D =0D __attribute__((__format__(printf, 3, 4))) struct kthread_worker *=0D kthread_create_worker_on_cpu(int cpu, unsigned int flags,=0D const char namefmt[], ...);=0D =0D bool kthread_queue_work(struct kthread_worker *worker,=0D struct kthread_work *work);=0D =0D bool kthread_queue_delayed_work(struct kthread_worker *worker,=0D struct kthread_delayed_work *dwork,=0D unsigned long delay);=0D =0D bool kthread_mod_delayed_work(struct kthread_worker *worker,=0D struct kthread_delayed_work *dwork,=0D unsigned long delay);=0D =0D void kthread_flush_work(struct kthread_work *work);=0D void kthread_flush_worker(struct kthread_worker *worker);=0D =0D bool kthread_cancel_work_sync(struct kthread_work *work);=0D bool kthread_cancel_delayed_work_sync(struct kthread_delayed_work *work);=0D =0D void kthread_destroy_worker(struct kthread_worker *worker);=0D =0D void kthread_use_mm(struct mm_struct *mm);=0D void kthread_unuse_mm(struct mm_struct *mm);=0D =0D struct cgroup_subsys_state;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void kthread_associate_blkcg= (struct cgroup_subsys_state *css) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup_subsys_state *= kthread_blkcg(void)=0D {=0D return ((void *)0);=0D }=0D # 6 "./include/linux/psi_types.h" 2=0D # 191 "./include/linux/psi_types.h"=0D struct psi_group { };=0D # 24 "./include/linux/cgroup-defs.h" 2=0D =0D =0D =0D struct cgroup;=0D struct cgroup_root;=0D struct cgroup_subsys;=0D struct cgroup_taskset;=0D struct kernfs_node;=0D struct kernfs_ops;=0D struct kernfs_open_file;=0D struct seq_file;=0D struct poll_table_struct;=0D =0D =0D =0D =0D =0D =0D =0D enum cgroup_subsys_id {=0D =0D # 1 "./include/linux/cgroup_subsys.h" 1=0D # 17 "./include/linux/cgroup_subsys.h"=0D cpu_cgrp_id,=0D # 45 "./include/linux/cgroup-defs.h" 2=0D CGROUP_SUBSYS_COUNT,=0D };=0D =0D =0D =0D enum {=0D CSS_NO_REF =3D (1 << 0),=0D CSS_ONLINE =3D (1 << 1),=0D CSS_RELEASED =3D (1 << 2),=0D CSS_VISIBLE =3D (1 << 3),=0D CSS_DYING =3D (1 << 4),=0D };=0D =0D =0D enum {=0D =0D CGRP_NOTIFY_ON_RELEASE,=0D =0D =0D =0D =0D =0D CGRP_CPUSET_CLONE_CHILDREN,=0D =0D =0D CGRP_FREEZE,=0D =0D =0D CGRP_FROZEN,=0D =0D =0D CGRP_KILL,=0D };=0D =0D =0D enum {=0D CGRP_ROOT_NOPREFIX =3D (1 << 1),=0D CGRP_ROOT_XATTR =3D (1 << 2),=0D =0D =0D =0D =0D =0D =0D CGRP_ROOT_NS_DELEGATE =3D (1 << 3),=0D =0D =0D =0D =0D CGRP_ROOT_CPUSET_V2_MODE =3D (1 << 4),=0D =0D =0D =0D =0D CGRP_ROOT_MEMORY_LOCAL_EVENTS =3D (1 << 5),=0D =0D =0D =0D =0D CGRP_ROOT_MEMORY_RECURSIVE_PROT =3D (1 << 6),=0D };=0D =0D =0D enum {=0D CFTYPE_ONLY_ON_ROOT =3D (1 << 0),=0D CFTYPE_NOT_ON_ROOT =3D (1 << 1),=0D CFTYPE_NS_DELEGATABLE =3D (1 << 2),=0D =0D CFTYPE_NO_PREFIX =3D (1 << 3),=0D CFTYPE_WORLD_WRITABLE =3D (1 << 4),=0D CFTYPE_DEBUG =3D (1 << 5),=0D CFTYPE_PRESSURE =3D (1 << 6),=0D =0D =0D __CFTYPE_ONLY_ON_DFL =3D (1 << 16),=0D __CFTYPE_NOT_ON_DFL =3D (1 << 17),=0D };=0D =0D =0D =0D =0D =0D =0D struct cgroup_file {=0D =0D struct kernfs_node *kn;=0D unsigned long notified_at;=0D struct timer_list notify_timer;=0D };=0D # 142 "./include/linux/cgroup-defs.h"=0D struct cgroup_subsys_state {=0D =0D struct cgroup *cgroup;=0D =0D =0D struct cgroup_subsys *ss;=0D =0D =0D struct percpu_ref refcnt;=0D =0D =0D struct list_head sibling;=0D struct list_head children;=0D =0D =0D struct list_head rstat_css_node;=0D =0D =0D =0D =0D =0D int id;=0D =0D unsigned int flags;=0D =0D =0D =0D =0D =0D =0D =0D u64 serial_nr;=0D =0D =0D =0D =0D =0D atomic_t online_cnt;=0D =0D =0D struct work_struct destroy_work;=0D struct rcu_work destroy_rwork;=0D =0D =0D =0D =0D =0D struct cgroup_subsys_state *parent;=0D };=0D # 199 "./include/linux/cgroup-defs.h"=0D struct css_set {=0D =0D =0D =0D =0D =0D struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT];=0D =0D =0D refcount_t refcount;=0D =0D =0D =0D =0D =0D =0D =0D struct css_set *dom_cset;=0D =0D =0D struct cgroup *dfl_cgrp;=0D =0D =0D int nr_tasks;=0D # 231 "./include/linux/cgroup-defs.h"=0D struct list_head tasks;=0D struct list_head mg_tasks;=0D struct list_head dying_tasks;=0D =0D =0D struct list_head task_iters;=0D # 245 "./include/linux/cgroup-defs.h"=0D struct list_head e_cset_node[CGROUP_SUBSYS_COUNT];=0D =0D =0D struct list_head threaded_csets;=0D struct list_head threaded_csets_node;=0D =0D =0D =0D =0D =0D struct hlist_node hlist;=0D =0D =0D =0D =0D =0D struct list_head cgrp_links;=0D =0D =0D =0D =0D =0D struct list_head mg_preload_node;=0D struct list_head mg_node;=0D # 277 "./include/linux/cgroup-defs.h"=0D struct cgroup *mg_src_cgrp;=0D struct cgroup *mg_dst_cgrp;=0D struct css_set *mg_dst_cset;=0D =0D =0D bool dead;=0D =0D =0D struct callback_head callback_head;=0D };=0D =0D struct cgroup_base_stat {=0D struct task_cputime cputime;=0D };=0D # 312 "./include/linux/cgroup-defs.h"=0D struct cgroup_rstat_cpu {=0D =0D =0D =0D =0D struct u64_stats_sync bsync;=0D struct cgroup_base_stat bstat;=0D =0D =0D =0D =0D =0D struct cgroup_base_stat last_bstat;=0D # 337 "./include/linux/cgroup-defs.h"=0D struct cgroup *updated_children;=0D struct cgroup *updated_next;=0D };=0D =0D struct cgroup_freezer_state {=0D =0D bool freeze;=0D =0D =0D int e_freeze;=0D =0D =0D =0D =0D int nr_frozen_descendants;=0D =0D =0D =0D =0D =0D int nr_frozen_tasks;=0D };=0D =0D struct cgroup {=0D =0D struct cgroup_subsys_state self;=0D =0D unsigned long flags;=0D =0D =0D =0D =0D =0D =0D =0D int level;=0D =0D =0D int max_depth;=0D # 388 "./include/linux/cgroup-defs.h"=0D int nr_descendants;=0D int nr_dying_descendants;=0D int max_descendants;=0D # 403 "./include/linux/cgroup-defs.h"=0D int nr_populated_csets;=0D int nr_populated_domain_children;=0D int nr_populated_threaded_children;=0D =0D int nr_threaded_children;=0D =0D struct kernfs_node *kn;=0D struct cgroup_file procs_file;=0D struct cgroup_file events_file;=0D # 420 "./include/linux/cgroup-defs.h"=0D u16 subtree_control;=0D u16 subtree_ss_mask;=0D u16 old_subtree_control;=0D u16 old_subtree_ss_mask;=0D =0D =0D struct cgroup_subsys_state *subsys[CGROUP_SUBSYS_COUNT];=0D =0D struct cgroup_root *root;=0D =0D =0D =0D =0D =0D struct list_head cset_links;=0D # 443 "./include/linux/cgroup-defs.h"=0D struct list_head e_csets[CGROUP_SUBSYS_COUNT];=0D # 452 "./include/linux/cgroup-defs.h"=0D struct cgroup *dom_cgrp;=0D struct cgroup *old_dom_cgrp;=0D =0D =0D struct cgroup_rstat_cpu *rstat_cpu;=0D struct list_head rstat_css_list;=0D =0D =0D struct cgroup_base_stat last_bstat;=0D struct cgroup_base_stat bstat;=0D struct prev_cputime prev_cputime;=0D =0D =0D =0D =0D =0D struct list_head pidlists;=0D struct mutex pidlist_mutex;=0D =0D =0D wait_queue_head_t offline_waitq;=0D =0D =0D struct work_struct release_agent_work;=0D =0D =0D struct psi_group psi;=0D =0D =0D struct cgroup_bpf bpf;=0D =0D =0D atomic_t congestion_count;=0D =0D =0D struct cgroup_freezer_state freezer;=0D =0D =0D u64 ancestor_ids[];=0D };=0D =0D =0D =0D =0D =0D =0D struct cgroup_root {=0D struct kernfs_root *kf_root;=0D =0D =0D unsigned int subsys_mask;=0D =0D =0D int hierarchy_id;=0D =0D =0D struct cgroup cgrp;=0D =0D =0D u64 cgrp_ancestor_id_storage;=0D =0D =0D atomic_t nr_cgrps;=0D =0D =0D struct list_head root_list;=0D =0D =0D unsigned int flags;=0D =0D =0D char release_agent_path[4096];=0D =0D =0D char name[64];=0D };=0D # 536 "./include/linux/cgroup-defs.h"=0D struct cftype {=0D =0D =0D =0D =0D =0D char name[64];=0D unsigned long private;=0D =0D =0D =0D =0D =0D size_t max_write_len;=0D =0D =0D unsigned int flags;=0D =0D =0D =0D =0D =0D =0D =0D unsigned int file_offset;=0D =0D =0D =0D =0D =0D struct cgroup_subsys *ss;=0D struct list_head node;=0D struct kernfs_ops *kf_ops;=0D =0D int (*open)(struct kernfs_open_file *of);=0D void (*release)(struct kernfs_open_file *of);=0D =0D =0D =0D =0D =0D u64 (*read_u64)(struct cgroup_subsys_state *css, struct cftype *cft);=0D =0D =0D =0D s64 (*read_s64)(struct cgroup_subsys_state *css, struct cftype *cft);=0D =0D =0D int (*seq_show)(struct seq_file *sf, void *v);=0D =0D =0D void *(*seq_start)(struct seq_file *sf, loff_t *ppos);=0D void *(*seq_next)(struct seq_file *sf, void *v, loff_t *ppos);=0D void (*seq_stop)(struct seq_file *sf, void *v);=0D =0D =0D =0D =0D =0D =0D int (*write_u64)(struct cgroup_subsys_state *css, struct cftype *cft,=0D u64 val);=0D =0D =0D =0D int (*write_s64)(struct cgroup_subsys_state *css, struct cftype *cft,=0D s64 val);=0D =0D =0D =0D =0D =0D =0D =0D ssize_t (*write)(struct kernfs_open_file *of,=0D char *buf, size_t nbytes, loff_t off);=0D =0D __poll_t (*poll)(struct kernfs_open_file *of,=0D struct poll_table_struct *pt);=0D =0D =0D struct lock_class_key lockdep_key;=0D =0D };=0D =0D =0D =0D =0D =0D struct cgroup_subsys {=0D struct cgroup_subsys_state *(*css_alloc)(struct cgroup_subsys_state *paren= t_css);=0D int (*css_online)(struct cgroup_subsys_state *css);=0D void (*css_offline)(struct cgroup_subsys_state *css);=0D void (*css_released)(struct cgroup_subsys_state *css);=0D void (*css_free)(struct cgroup_subsys_state *css);=0D void (*css_reset)(struct cgroup_subsys_state *css);=0D void (*css_rstat_flush)(struct cgroup_subsys_state *css, int cpu);=0D int (*css_extra_stat_show)(struct seq_file *seq,=0D struct cgroup_subsys_state *css);=0D =0D int (*can_attach)(struct cgroup_taskset *tset);=0D void (*cancel_attach)(struct cgroup_taskset *tset);=0D void (*attach)(struct cgroup_taskset *tset);=0D void (*post_attach)(void);=0D int (*can_fork)(struct task_struct *task,=0D struct css_set *cset);=0D void (*cancel_fork)(struct task_struct *task, struct css_set *cset);=0D void (*fork)(struct task_struct *task);=0D void (*exit)(struct task_struct *task);=0D void (*release)(struct task_struct *task);=0D void (*bind)(struct cgroup_subsys_state *root_css);=0D =0D bool early_init:1;=0D # 661 "./include/linux/cgroup-defs.h"=0D bool implicit_on_dfl:1;=0D # 673 "./include/linux/cgroup-defs.h"=0D bool threaded:1;=0D =0D =0D int id;=0D const char *name;=0D =0D =0D const char *legacy_name;=0D =0D =0D struct cgroup_root *root;=0D =0D =0D struct idr css_idr;=0D =0D =0D =0D =0D =0D struct list_head cfts;=0D =0D =0D =0D =0D =0D struct cftype *dfl_cftypes;=0D struct cftype *legacy_cftypes;=0D # 708 "./include/linux/cgroup-defs.h"=0D unsigned int depends_on;=0D };=0D =0D extern struct percpu_rw_semaphore cgroup_threadgroup_rwsem;=0D # 720 "./include/linux/cgroup-defs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_threadgroup_chan= ge_begin(struct task_struct *tsk)=0D {=0D percpu_down_read(&cgroup_threadgroup_rwsem);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_threadgroup_chan= ge_end(struct task_struct *tsk)=0D {=0D percpu_up_read(&cgroup_threadgroup_rwsem);=0D }=0D # 761 "./include/linux/cgroup-defs.h"=0D struct sock_cgroup_data {=0D struct cgroup *cgroup;=0D =0D =0D =0D =0D =0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 sock_cgroup_prioidx(cons= t struct sock_cgroup_data *skcd)=0D {=0D =0D =0D =0D return 1;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 sock_cgroup_classid(cons= t struct sock_cgroup_data *skcd)=0D {=0D =0D =0D =0D return 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_cgroup_set_prioidx= (struct sock_cgroup_data *skcd,=0D u16 prioidx)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_cgroup_set_classid= (struct sock_cgroup_data *skcd,=0D u32 classid)=0D {=0D =0D =0D =0D }=0D # 29 "./include/linux/cgroup.h" 2=0D =0D struct kernel_clone_args;=0D # 52 "./include/linux/cgroup.h"=0D struct css_task_iter {=0D struct cgroup_subsys *ss;=0D unsigned int flags;=0D =0D struct list_head *cset_pos;=0D struct list_head *cset_head;=0D =0D struct list_head *tcset_pos;=0D struct list_head *tcset_head;=0D =0D struct list_head *task_pos;=0D =0D struct list_head *cur_tasks_head;=0D struct css_set *cur_cset;=0D struct css_set *cur_dcset;=0D struct task_struct *cur_task;=0D struct list_head iters_node;=0D };=0D =0D extern struct cgroup_root cgrp_dfl_root;=0D extern struct css_set init_css_set;=0D =0D =0D =0D # 1 "./include/linux/cgroup_subsys.h" 1=0D # 17 "./include/linux/cgroup_subsys.h"=0D extern struct cgroup_subsys cpu_cgrp_subsys;=0D # 76 "./include/linux/cgroup.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/cgroup_subsys.h" 1=0D # 17 "./include/linux/cgroup_subsys.h"=0D extern struct static_key_true cpu_cgrp_subsys_enabled_key; extern struct st= atic_key_true cpu_cgrp_subsys_on_dfl_key;=0D # 82 "./include/linux/cgroup.h" 2=0D # 98 "./include/linux/cgroup.h"=0D bool css_has_online_children(struct cgroup_subsys_state *css);=0D struct cgroup_subsys_state *css_from_id(int id, struct cgroup_subsys *ss);= =0D struct cgroup_subsys_state *cgroup_e_css(struct cgroup *cgroup,=0D struct cgroup_subsys *ss);=0D struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgroup,=0D struct cgroup_subsys *ss);=0D struct cgroup_subsys_state *css_tryget_online_from_dir(struct dentry *dentr= y,=0D struct cgroup_subsys *ss);=0D =0D struct cgroup *cgroup_get_from_path(const char *path);=0D struct cgroup *cgroup_get_from_fd(int fd);=0D =0D int cgroup_attach_task_all(struct task_struct *from, struct task_struct *);= =0D int cgroup_transfer_tasks(struct cgroup *to, struct cgroup *from);=0D =0D int cgroup_add_dfl_cftypes(struct cgroup_subsys *ss, struct cftype *cfts);= =0D int cgroup_add_legacy_cftypes(struct cgroup_subsys *ss, struct cftype *cfts= );=0D int cgroup_rm_cftypes(struct cftype *cfts);=0D void cgroup_file_notify(struct cgroup_file *cfile);=0D =0D int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen);=0D int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry);=0D int proc_cgroup_show(struct seq_file *m, struct pid_namespace *ns,=0D struct pid *pid, struct task_struct *tsk);=0D =0D void cgroup_fork(struct task_struct *p);=0D extern int cgroup_can_fork(struct task_struct *p,=0D struct kernel_clone_args *kargs);=0D extern void cgroup_cancel_fork(struct task_struct *p,=0D struct kernel_clone_args *kargs);=0D extern void cgroup_post_fork(struct task_struct *p,=0D struct kernel_clone_args *kargs);=0D void cgroup_exit(struct task_struct *p);=0D void cgroup_release(struct task_struct *p);=0D void cgroup_free(struct task_struct *p);=0D =0D int cgroup_init_early(void);=0D int cgroup_init(void);=0D =0D int cgroup_parse_float(const char *input, unsigned dec_shift, s64 *v);=0D =0D =0D =0D =0D =0D struct cgroup_subsys_state *css_next_child(struct cgroup_subsys_state *pos,= =0D struct cgroup_subsys_state *parent);=0D struct cgroup_subsys_state *css_next_descendant_pre(struct cgroup_subsys_st= ate *pos,=0D struct cgroup_subsys_state *css);=0D struct cgroup_subsys_state *css_rightmost_descendant(struct cgroup_subsys_s= tate *pos);=0D struct cgroup_subsys_state *css_next_descendant_post(struct cgroup_subsys_s= tate *pos,=0D struct cgroup_subsys_state *css);=0D =0D struct task_struct *cgroup_taskset_first(struct cgroup_taskset *tset,=0D struct cgroup_subsys_state **dst_cssp);=0D struct task_struct *cgroup_taskset_next(struct cgroup_taskset *tset,=0D struct cgroup_subsys_state **dst_cssp);=0D =0D void css_task_iter_start(struct cgroup_subsys_state *css, unsigned int flag= s,=0D struct css_task_iter *it);=0D struct task_struct *css_task_iter_next(struct css_task_iter *it);=0D void css_task_iter_end(struct css_task_iter *it);=0D # 310 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 cgroup_id(const struct c= group *cgrp)=0D {=0D return cgrp->kn->id;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void css_get(struct cgroup_s= ubsys_state *css)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D percpu_ref_get(&css->refcnt);=0D }=0D # 334 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void css_get_many(struct cgr= oup_subsys_state *css, unsigned int n)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D percpu_ref_get_many(&css->refcnt, n);=0D }=0D # 351 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool css_tryget(struct cgrou= p_subsys_state *css)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D return percpu_ref_tryget(&css->refcnt);=0D return true;=0D }=0D # 368 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool css_tryget_online(struc= t cgroup_subsys_state *css)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D return percpu_ref_tryget_live(&css->refcnt);=0D return true;=0D }=0D # 390 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool css_is_dying(struct cgr= oup_subsys_state *css)=0D {=0D return !(css->flags & CSS_NO_REF) && percpu_ref_is_dying(&css->refcnt);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void css_put(struct cgroup_s= ubsys_state *css)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D percpu_ref_put(&css->refcnt);=0D }=0D # 414 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void css_put_many(struct cgr= oup_subsys_state *css, unsigned int n)=0D {=0D if (!(css->flags & CSS_NO_REF))=0D percpu_ref_put_many(&css->refcnt, n);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_get(struct cgrou= p *cgrp)=0D {=0D css_get(&cgrp->self);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cgroup_tryget(struct cg= roup *cgrp)=0D {=0D return css_tryget(&cgrp->self);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_put(struct cgrou= p *cgrp)=0D {=0D css_put(&cgrp->self);=0D }=0D # 480 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct css_set *task_css_set= (struct task_struct *task)=0D {=0D return ({ typeof(*((task)->cgroups)) *__UNIQUE_ID_rcu283 =3D (typeof(*((ta= sk)->cgroups)) *)({ do { __attribute__((__noreturn__)) extern void __compil= etime_assert_284(void) ; if (!((sizeof(((task)->cgroups)) =3D=3D sizeof(cha= r) || sizeof(((task)->cgroups)) =3D=3D sizeof(short) || sizeof(((task)->cgr= oups)) =3D=3D sizeof(int) || sizeof(((task)->cgroups)) =3D=3D sizeof(long))= || sizeof(((task)->cgroups)) =3D=3D sizeof(long long))) __compiletime_asse= rt_284(); } while (0); (*(const volatile typeof( _Generic((((task)->cgroups= )), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed ch= ar)0, unsigned short: (unsigned short)0, signed short: (signed short)0, uns= igned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsi= gned long)0, signed long: (signed long)0, unsigned long long: (unsigned lon= g long)0, signed long long: (signed long long)0, default: (((task)->cgroups= )))) *)&(((task)->cgroups))); }); do { } while (0 && (!((0) || rcu_read_loc= k_held()))); ; ((typeof(*((task)->cgroups)) *)(__UNIQUE_ID_rcu283)); });=0D }=0D # 492 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup_subsys_state *= task_css(struct task_struct *task,=0D int subsys_id)=0D {=0D return ({ typeof(*(((task))->cgroups)) *__UNIQUE_ID_rcu285 =3D (typeof(*((= (task))->cgroups)) *)({ do { __attribute__((__noreturn__)) extern void __co= mpiletime_assert_286(void) ; if (!((sizeof((((task))->cgroups)) =3D=3D size= of(char) || sizeof((((task))->cgroups)) =3D=3D sizeof(short) || sizeof((((t= ask))->cgroups)) =3D=3D sizeof(int) || sizeof((((task))->cgroups)) =3D=3D s= izeof(long)) || sizeof((((task))->cgroups)) =3D=3D sizeof(long long))) __co= mpiletime_assert_286(); } while (0); (*(const volatile typeof( _Generic((((= (task))->cgroups)), char: (char)0, unsigned char: (unsigned char)0, signed = char: (signed char)0, unsigned short: (unsigned short)0, signed short: (sig= ned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsi= gned long: (unsigned long)0, signed long: (signed long)0, unsigned long lon= g: (unsigned long long)0, signed long long: (signed long long)0, default: (= (((task))->cgroups)))) *)&((((task))->cgroups))); }); do { } while (0 && (!= ((0) || rcu_read_lock_held()))); ; ((typeof(*(((task))->cgroups)) *)(__UNIQ= UE_ID_rcu285)); })->subsys[(subsys_id)];=0D }=0D # 507 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup_subsys_state *= =0D task_get_css(struct task_struct *task, int subsys_id)=0D {=0D struct cgroup_subsys_state *css;=0D =0D rcu_read_lock();=0D while (true) {=0D css =3D task_css(task, subsys_id);=0D =0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(css_tryget(css)), 1))=0D break;=0D cpu_relax();=0D }=0D rcu_read_unlock();=0D return css;=0D }=0D # 537 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_css_is_root(struct= task_struct *task, int subsys_id)=0D {=0D return ({ typeof(*(((task))->cgroups)) *__UNIQUE_ID_rcu287 =3D (typeof(*((= (task))->cgroups)) *)({ do { __attribute__((__noreturn__)) extern void __co= mpiletime_assert_288(void) ; if (!((sizeof((((task))->cgroups)) =3D=3D size= of(char) || sizeof((((task))->cgroups)) =3D=3D sizeof(short) || sizeof((((t= ask))->cgroups)) =3D=3D sizeof(int) || sizeof((((task))->cgroups)) =3D=3D s= izeof(long)) || sizeof((((task))->cgroups)) =3D=3D sizeof(long long))) __co= mpiletime_assert_288(); } while (0); (*(const volatile typeof( _Generic((((= (task))->cgroups)), char: (char)0, unsigned char: (unsigned char)0, signed = char: (signed char)0, unsigned short: (unsigned short)0, signed short: (sig= ned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsi= gned long: (unsigned long)0, signed long: (signed long)0, unsigned long lon= g: (unsigned long long)0, signed long long: (signed long long)0, default: (= (((task))->cgroups)))) *)&((((task))->cgroups))); }); do { } while (0 && (!= ((0) || rcu_read_lock_held()))); ; ((typeof(*(((task))->cgroups)) *)(__UNIQ= UE_ID_rcu287)); })->subsys[(subsys_id)] =3D=3D=0D init_css_set.subsys[subsys_id];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup *task_cgroup(s= truct task_struct *task,=0D int subsys_id)=0D {=0D return task_css(task, subsys_id)->cgroup;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup *task_dfl_cgro= up(struct task_struct *task)=0D {=0D return task_css_set(task)->dfl_cgrp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup *cgroup_parent= (struct cgroup *cgrp)=0D {=0D struct cgroup_subsys_state *parent_css =3D cgrp->self.parent;=0D =0D if (parent_css)=0D return ({ void *__mptr =3D (void *)(parent_css); _Static_assert(__builtin= _types_compatible_p(typeof(*(parent_css)), typeof(((struct cgroup *)0)->sel= f)) || __builtin_types_compatible_p(typeof(*(parent_css)), typeof(void)), "= pointer type mismatch in container_of()"); ((struct cgroup *)(__mptr - __bu= iltin_offsetof(struct cgroup, self))); });=0D return ((void *)0);=0D }=0D # 572 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cgroup_is_descendant(st= ruct cgroup *cgrp,=0D struct cgroup *ancestor)=0D {=0D if (cgrp->root !=3D ancestor->root || cgrp->level < ancestor->level)=0D return false;=0D return cgrp->ancestor_ids[ancestor->level] =3D=3D cgroup_id(ancestor);=0D }=0D # 591 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup *cgroup_ancest= or(struct cgroup *cgrp,=0D int ancestor_level)=0D {=0D if (cgrp->level < ancestor_level)=0D return ((void *)0);=0D while (cgrp && cgrp->level > ancestor_level)=0D cgrp =3D cgroup_parent(cgrp);=0D return cgrp;=0D }=0D # 610 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_under_cgroup_hiera= rchy(struct task_struct *task,=0D struct cgroup *ancestor)=0D {=0D struct css_set *cset =3D task_css_set(task);=0D =0D return cgroup_is_descendant(cset->dfl_cgrp, ancestor);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cgroup_is_populated(str= uct cgroup *cgrp)=0D {=0D return cgrp->nr_populated_csets + cgrp->nr_populated_domain_children +=0D cgrp->nr_populated_threaded_children;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ino_t cgroup_ino(struct cgro= up *cgrp)=0D {=0D return kernfs_ino(cgrp->kn);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cftype *of_cft(struct= kernfs_open_file *of)=0D {=0D return of->kn->priv;=0D }=0D =0D struct cgroup_subsys_state *of_css(struct kernfs_open_file *of);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cftype *seq_cft(struc= t seq_file *seq)=0D {=0D return of_cft(seq->private);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup_subsys_state *= seq_css(struct seq_file *seq)=0D {=0D return of_css(seq->private);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cgroup_name(struct cgrou= p *cgrp, char *buf, size_t buflen)=0D {=0D return kernfs_name(cgrp->kn, buf, buflen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cgroup_path(struct cgrou= p *cgrp, char *buf, size_t buflen)=0D {=0D return kernfs_path(cgrp->kn, buf, buflen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pr_cont_cgroup_name(str= uct cgroup *cgrp)=0D {=0D pr_cont_kernfs_name(cgrp->kn);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pr_cont_cgroup_path(str= uct cgroup *cgrp)=0D {=0D pr_cont_kernfs_path(cgrp->kn);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct psi_group *cgroup_psi= (struct cgroup *cgrp)=0D {=0D return &cgrp->psi;=0D }=0D =0D bool cgroup_psi_enabled(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_init_kthreadd(vo= id)=0D {=0D =0D =0D =0D =0D =0D get_current()->no_cgroup_migration =3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_kthread_ready(vo= id)=0D {=0D =0D =0D =0D =0D get_current()->no_cgroup_migration =3D 0;=0D }=0D =0D void cgroup_path_from_kernfs_id(u64 id, char *buf, size_t buflen);=0D struct cgroup *cgroup_get_from_id(u64 id);=0D # 766 "./include/linux/cgroup.h"=0D void cgroup_rstat_updated(struct cgroup *cgrp, int cpu);=0D void cgroup_rstat_flush(struct cgroup *cgrp);=0D void cgroup_rstat_flush_irqsafe(struct cgroup *cgrp);=0D void cgroup_rstat_flush_hold(struct cgroup *cgrp);=0D void cgroup_rstat_flush_release(void);=0D # 779 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuacct_charge(struct t= ask_struct *tsk, u64 cputime) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuacct_account_field(s= truct task_struct *tsk, int index,=0D u64 val) {}=0D =0D =0D void __cgroup_account_cputime(struct cgroup *cgrp, u64 delta_exec);=0D void __cgroup_account_cputime_field(struct cgroup *cgrp,=0D enum cpu_usage_stat index, u64 delta_exec);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_account_cputime(= struct task_struct *task,=0D u64 delta_exec)=0D {=0D struct cgroup *cgrp;=0D =0D cpuacct_charge(task, delta_exec);=0D =0D cgrp =3D task_dfl_cgroup(task);=0D if (cgroup_parent(cgrp))=0D __cgroup_account_cputime(cgrp, delta_exec);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_account_cputime_= field(struct task_struct *task,=0D enum cpu_usage_stat index,=0D u64 delta_exec)=0D {=0D struct cgroup *cgrp;=0D =0D cpuacct_account_field(task, index, delta_exec);=0D =0D cgrp =3D task_dfl_cgroup(task);=0D if (cgroup_parent(cgrp))=0D __cgroup_account_cputime_field(cgrp, index, delta_exec);=0D }=0D # 829 "./include/linux/cgroup.h"=0D void cgroup_sk_alloc(struct sock_cgroup_data *skcd);=0D void cgroup_sk_clone(struct sock_cgroup_data *skcd);=0D void cgroup_sk_free(struct sock_cgroup_data *skcd);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct cgroup *sock_cgroup_p= tr(struct sock_cgroup_data *skcd)=0D {=0D return skcd->cgroup;=0D }=0D # 846 "./include/linux/cgroup.h"=0D struct cgroup_namespace {=0D struct ns_common ns;=0D struct user_namespace *user_ns;=0D struct ucounts *ucounts;=0D struct css_set *root_cset;=0D };=0D =0D extern struct cgroup_namespace init_cgroup_ns;=0D =0D =0D =0D void free_cgroup_ns(struct cgroup_namespace *ns);=0D =0D struct cgroup_namespace *copy_cgroup_ns(unsigned long flags,=0D struct user_namespace *user_ns,=0D struct cgroup_namespace *old_ns);=0D =0D int cgroup_path_ns(struct cgroup *cgrp, char *buf, size_t buflen,=0D struct cgroup_namespace *ns);=0D # 878 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void get_cgroup_ns(struct cg= roup_namespace *ns)=0D {=0D if (ns)=0D refcount_inc(&ns->ns.count);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_cgroup_ns(struct cg= roup_namespace *ns)=0D {=0D if (ns && refcount_dec_and_test(&ns->ns.count))=0D free_cgroup_ns(ns);=0D }=0D =0D =0D =0D void cgroup_enter_frozen(void);=0D void cgroup_leave_frozen(bool always_leave);=0D void cgroup_update_frozen(struct cgroup *cgrp);=0D void cgroup_freeze(struct cgroup *cgrp, bool freeze);=0D void cgroup_freezer_migrate_task(struct task_struct *task, struct cgroup *s= rc,=0D struct cgroup *dst);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cgroup_task_frozen(stru= ct task_struct *task)=0D {=0D return task->frozen;=0D }=0D # 916 "./include/linux/cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_bpf_get(struct c= group *cgrp)=0D {=0D percpu_ref_get(&cgrp->bpf.refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_bpf_put(struct c= group *cgrp)=0D {=0D percpu_ref_put(&cgrp->bpf.refcnt);=0D }=0D # 12 "./include/net/netprio_cgroup.h" 2=0D # 44 "./include/net/netprio_cgroup.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 task_netprioidx(struct t= ask_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_update_netprioidx(= struct sock_cgroup_data *skcd)=0D {=0D }=0D # 43 "./include/linux/netdevice.h" 2=0D # 1 "./include/net/xdp.h" 1=0D # 38 "./include/net/xdp.h"=0D enum xdp_mem_type {=0D MEM_TYPE_PAGE_SHARED =3D 0,=0D MEM_TYPE_PAGE_ORDER0,=0D MEM_TYPE_PAGE_POOL,=0D MEM_TYPE_XSK_BUFF_POOL,=0D MEM_TYPE_MAX,=0D };=0D =0D =0D =0D =0D =0D struct xdp_mem_info {=0D u32 type;=0D u32 id;=0D };=0D =0D struct page_pool;=0D =0D struct xdp_rxq_info {=0D struct net_device *dev;=0D u32 queue_index;=0D u32 reg_state;=0D struct xdp_mem_info mem;=0D unsigned int napi_id;=0D u32 frag_size;=0D } __attribute__((__aligned__((1 << 6))));=0D =0D struct xdp_txq_info {=0D struct net_device *dev;=0D };=0D =0D enum xdp_buff_flags {=0D XDP_FLAGS_HAS_FRAGS =3D ((((1UL))) << (0)),=0D XDP_FLAGS_FRAGS_PF_MEMALLOC =3D ((((1UL))) << (1)),=0D =0D =0D };=0D =0D struct xdp_buff {=0D void *data;=0D void *data_end;=0D void *data_meta;=0D void *data_hard_start;=0D struct xdp_rxq_info *rxq;=0D struct xdp_txq_info *txq;=0D u32 frame_sz;=0D u32 flags;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool xdp_buff_has_frags(struct xdp_buff *xdp)=0D {=0D return !!(xdp->flags & XDP_FLAGS_HAS_FRAGS);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void xdp_buff_set_frags_flag(struct xdp_buff *xdp)=0D {=0D xdp->flags |=3D XDP_FLAGS_HAS_FRAGS;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void xdp_buff_clear_frags_flag(struct xdp_buff *xdp)=0D {=0D xdp->flags &=3D ~XDP_FLAGS_HAS_FRAGS;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool xdp_buff_is_frag_pfmemalloc(struct xdp_buff *xdp)=0D {=0D return !!(xdp->flags & XDP_FLAGS_FRAGS_PF_MEMALLOC);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void xdp_buff_set_frag_pfmemalloc(struct xdp_buff *xdp)=0D {=0D xdp->flags |=3D XDP_FLAGS_FRAGS_PF_MEMALLOC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D xdp_init_buff(struct xdp_buff *xdp, u32 frame_sz, struct xdp_rxq_info *rxq)= =0D {=0D xdp->frame_sz =3D frame_sz;=0D xdp->rxq =3D rxq;=0D xdp->flags =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D xdp_prepare_buff(struct xdp_buff *xdp, unsigned char *hard_start,=0D int headroom, int data_len, const bool meta_valid)=0D {=0D unsigned char *data =3D hard_start + headroom;=0D =0D xdp->data_hard_start =3D hard_start;=0D xdp->data =3D data;=0D xdp->data_end =3D data + data_len;=0D xdp->data_meta =3D meta_valid ? data : data + 1;=0D }=0D # 143 "./include/net/xdp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct skb_shared_info *=0D xdp_get_shared_info_from_buff(struct xdp_buff *xdp)=0D {=0D return (struct skb_shared_info *)((xdp)->data_hard_start + (xdp)->frame_sz= - ((((sizeof(struct skb_shared_info))) + ((typeof((sizeof(struct skb_share= d_info))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct skb_shared_info))))= (((1 << 6))) - 1)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned int xdp_get_buff_len(struct xdp_buff *xdp)=0D {=0D unsigned int len =3D xdp->data_end - xdp->data;=0D struct skb_shared_info *sinfo;=0D =0D if (__builtin_expect(!!(!xdp_buff_has_frags(xdp)), 1))=0D goto out;=0D =0D sinfo =3D xdp_get_shared_info_from_buff(xdp);=0D len +=3D sinfo->xdp_frags_size;=0D out:=0D return len;=0D }=0D =0D struct xdp_frame {=0D void *data;=0D u16 len;=0D u16 headroom;=0D u32 metasize:8;=0D u32 frame_sz:24;=0D =0D =0D =0D struct xdp_mem_info mem;=0D struct net_device *dev_rx;=0D u32 flags;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool xdp_frame_has_frags(struct xdp_frame *frame)=0D {=0D return !!(frame->flags & XDP_FLAGS_HAS_FRAGS);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool xdp_frame_is_frag_pfmemalloc(struct xdp_frame *frame)=0D {=0D return !!(frame->flags & XDP_FLAGS_FRAGS_PF_MEMALLOC);=0D }=0D =0D =0D struct xdp_frame_bulk {=0D int count;=0D void *xa;=0D void *q[16];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void xdp_frame_bulk_init(struct xdp_frame_bulk *bq)=0D {=0D =0D bq->xa =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct skb_shared_info *=0D xdp_get_shared_info_from_frame(struct xdp_frame *frame)=0D {=0D void *data_hard_start =3D frame->data - frame->headroom - sizeof(*frame);= =0D =0D return (struct skb_shared_info *)(data_hard_start + frame->frame_sz -=0D ((((sizeof(struct skb_shared_info))) + ((typeof((sizeof(struct skb_shar= ed_info))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct skb_shared_info)))= )(((1 << 6))) - 1)));=0D }=0D =0D struct xdp_cpumap_stats {=0D unsigned int redirect;=0D unsigned int pass;=0D unsigned int drop;=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xdp_scrub_frame(struct = xdp_frame *frame)=0D {=0D frame->data =3D ((void *)0);=0D frame->dev_rx =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D xdp_update_skb_shared_info(struct sk_buff *skb, u8 nr_frags,=0D unsigned int size, unsigned int truesize,=0D bool pfmemalloc)=0D {=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags =3D nr_frags;= =0D =0D skb->len +=3D size;=0D skb->data_len +=3D size;=0D skb->truesize +=3D truesize;=0D skb->pfmemalloc |=3D pfmemalloc;=0D }=0D =0D =0D void xdp_warn(const char *msg, const char *func, const int line);=0D =0D =0D struct xdp_frame *xdp_convert_zc_to_xdp_frame(struct xdp_buff *xdp);=0D struct sk_buff *__xdp_build_skb_from_frame(struct xdp_frame *xdpf,=0D struct sk_buff *skb,=0D struct net_device *dev);=0D struct sk_buff *xdp_build_skb_from_frame(struct xdp_frame *xdpf,=0D struct net_device *dev);=0D int xdp_alloc_skb_bulk(void **skbs, int n_skb, gfp_t gfp);=0D struct xdp_frame *xdpf_clone(struct xdp_frame *xdpf);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void xdp_convert_frame_to_buff(struct xdp_frame *frame, struct xdp_buff *xd= p)=0D {=0D xdp->data_hard_start =3D frame->data - frame->headroom - sizeof(*frame);=0D xdp->data =3D frame->data;=0D xdp->data_end =3D frame->data + frame->len;=0D xdp->data_meta =3D frame->data - frame->metasize;=0D xdp->frame_sz =3D frame->frame_sz;=0D xdp->flags =3D frame->flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int xdp_update_frame_from_buff(struct xdp_buff *xdp,=0D struct xdp_frame *xdp_frame)=0D {=0D int metasize, headroom;=0D =0D =0D headroom =3D xdp->data - xdp->data_hard_start;=0D metasize =3D xdp->data - xdp->data_meta;=0D metasize =3D metasize > 0 ? metasize : 0;=0D if (__builtin_expect(!!((headroom - metasize) < sizeof(*xdp_frame)), 0))=0D return -28;=0D =0D =0D if (__builtin_expect(!!(xdp->data_end > ((xdp)->data_hard_start + (xdp)->f= rame_sz - ((((sizeof(struct skb_shared_info))) + ((typeof((sizeof(struct sk= b_shared_info))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct skb_shared_i= nfo))))(((1 << 6))) - 1)))), 0)) {=0D xdp_warn("Driver BUG: missing reserved tailroom", __func__, 274);=0D return -28;=0D }=0D =0D xdp_frame->data =3D xdp->data;=0D xdp_frame->len =3D xdp->data_end - xdp->data;=0D xdp_frame->headroom =3D headroom - sizeof(*xdp_frame);=0D xdp_frame->metasize =3D metasize;=0D xdp_frame->frame_sz =3D xdp->frame_sz;=0D xdp_frame->flags =3D xdp->flags;=0D =0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct xdp_frame *xdp_convert_buff_to_frame(struct xdp_buff *xdp)=0D {=0D struct xdp_frame *xdp_frame;=0D =0D if (xdp->rxq->mem.type =3D=3D MEM_TYPE_XSK_BUFF_POOL)=0D return xdp_convert_zc_to_xdp_frame(xdp);=0D =0D =0D xdp_frame =3D xdp->data_hard_start;=0D if (__builtin_expect(!!(xdp_update_frame_from_buff(xdp, xdp_frame) < 0), 0= ))=0D return ((void *)0);=0D =0D =0D xdp_frame->mem =3D xdp->rxq->mem;=0D =0D return xdp_frame;=0D }=0D =0D void __xdp_return(void *data, struct xdp_mem_info *mem, bool napi_direct,=0D struct xdp_buff *xdp);=0D void xdp_return_frame(struct xdp_frame *xdpf);=0D void xdp_return_frame_rx_napi(struct xdp_frame *xdpf);=0D void xdp_return_buff(struct xdp_buff *xdp);=0D void xdp_flush_frame_bulk(struct xdp_frame_bulk *bq);=0D void xdp_return_frame_bulk(struct xdp_frame *xdpf,=0D struct xdp_frame_bulk *bq);=0D =0D =0D =0D =0D =0D =0D void __xdp_release_frame(void *data, struct xdp_mem_info *mem);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xdp_release_frame(struc= t xdp_frame *xdpf)=0D {=0D struct xdp_mem_info *mem =3D &xdpf->mem;=0D struct skb_shared_info *sinfo;=0D int i;=0D =0D =0D if (mem->type !=3D MEM_TYPE_PAGE_POOL)=0D return;=0D =0D if (__builtin_expect(!!(!xdp_frame_has_frags(xdpf)), 1))=0D goto out;=0D =0D sinfo =3D xdp_get_shared_info_from_frame(xdpf);=0D for (i =3D 0; i < sinfo->nr_frags; i++) {=0D struct page *page =3D skb_frag_page(&sinfo->frags[i]);=0D =0D __xdp_release_frame(lowmem_page_address(page), mem);=0D }=0D out:=0D __xdp_release_frame(xdpf->data, mem);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) unsigned int xdp_get_frame_len(struct xdp_frame *xdpf)=0D {=0D struct skb_shared_info *sinfo;=0D unsigned int len =3D xdpf->len;=0D =0D if (__builtin_expect(!!(!xdp_frame_has_frags(xdpf)), 1))=0D goto out;=0D =0D sinfo =3D xdp_get_shared_info_from_frame(xdpf);=0D len +=3D sinfo->xdp_frags_size;=0D out:=0D return len;=0D }=0D =0D int __xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq,=0D struct net_device *dev, u32 queue_index,=0D unsigned int napi_id, u32 frag_size);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq,=0D struct net_device *dev, u32 queue_index,=0D unsigned int napi_id)=0D {=0D return __xdp_rxq_info_reg(xdp_rxq, dev, queue_index, napi_id, 0);=0D }=0D =0D void xdp_rxq_info_unreg(struct xdp_rxq_info *xdp_rxq);=0D void xdp_rxq_info_unused(struct xdp_rxq_info *xdp_rxq);=0D bool xdp_rxq_info_is_reg(struct xdp_rxq_info *xdp_rxq);=0D int xdp_rxq_info_reg_mem_model(struct xdp_rxq_info *xdp_rxq,=0D enum xdp_mem_type type, void *allocator);=0D void xdp_rxq_info_unreg_mem_model(struct xdp_rxq_info *xdp_rxq);=0D int xdp_reg_mem_model(struct xdp_mem_info *mem,=0D enum xdp_mem_type type, void *allocator);=0D void xdp_unreg_mem_model(struct xdp_mem_info *mem);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D xdp_set_data_meta_invalid(struct xdp_buff *xdp)=0D {=0D xdp->data_meta =3D xdp->data + 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D xdp_data_meta_unsupported(const struct xdp_buff *xdp)=0D {=0D return __builtin_expect(!!(xdp->data_meta > xdp->data), 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xdp_metalen_invalid(uns= igned long metalen)=0D {=0D return (metalen & (sizeof(__u32) - 1)) || (metalen > 32);=0D }=0D =0D struct xdp_attachment_info {=0D struct bpf_prog *prog;=0D u32 flags;=0D };=0D =0D struct netdev_bpf;=0D void xdp_attachment_setup(struct xdp_attachment_info *info,=0D struct netdev_bpf *bpf);=0D # 44 "./include/linux/netdevice.h" 2=0D =0D =0D # 1 "./include/uapi/linux/neighbour.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/netlink.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/net/scm.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/security.h" 1=0D # 26 "./include/linux/security.h"=0D # 1 "./include/linux/kernel_read_file.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/file.h" 1=0D # 14 "./include/linux/file.h"=0D struct file;=0D =0D extern void fput(struct file *);=0D extern void fput_many(struct file *, unsigned int);=0D =0D struct file_operations;=0D struct task_struct;=0D struct vfsmount;=0D struct dentry;=0D struct inode;=0D struct path;=0D extern struct file *alloc_file_pseudo(struct inode *, struct vfsmount *,=0D const char *, int flags, const struct file_operations *);=0D extern struct file *alloc_file_clone(struct file *, int flags,=0D const struct file_operations *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fput_light(struct file = *file, int fput_needed)=0D {=0D if (fput_needed)=0D fput(file);=0D }=0D =0D struct fd {=0D struct file *file;=0D unsigned int flags;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fdput(struct fd fd)=0D {=0D if (fd.flags & 1)=0D fput(fd.file);=0D }=0D =0D extern struct file *fget(unsigned int fd);=0D extern struct file *fget_many(unsigned int fd, unsigned int refs);=0D extern struct file *fget_raw(unsigned int fd);=0D extern struct file *fget_task(struct task_struct *task, unsigned int fd);=0D extern unsigned long __fdget(unsigned int fd);=0D extern unsigned long __fdget_raw(unsigned int fd);=0D extern unsigned long __fdget_pos(unsigned int fd);=0D extern void __f_unlock_pos(struct file *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fd __to_fd(unsigned l= ong v)=0D {=0D return (struct fd){(struct file *)(v & ~3),v & 3};=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fd fdget(unsigned int= fd)=0D {=0D return __to_fd(__fdget(fd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fd fdget_raw(unsigned= int fd)=0D {=0D return __to_fd(__fdget_raw(fd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fd fdget_pos(int fd)= =0D {=0D return __to_fd(__fdget_pos(fd));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fdput_pos(struct fd f)= =0D {=0D if (f.flags & 2)=0D __f_unlock_pos(f.file);=0D fdput(f);=0D }=0D =0D extern int f_dupfd(unsigned int from, struct file *file, unsigned flags);=0D extern int replace_fd(unsigned fd, struct file *file, unsigned flags);=0D extern void set_close_on_exec(unsigned int fd, int flag);=0D extern bool get_close_on_exec(unsigned int fd);=0D extern int __get_unused_fd_flags(unsigned flags, unsigned long nofile);=0D extern int get_unused_fd_flags(unsigned flags);=0D extern void put_unused_fd(unsigned int fd);=0D =0D extern void fd_install(unsigned int fd, struct file *file);=0D =0D extern int __receive_fd(struct file *file, int *ufd,=0D unsigned int o_flags);=0D =0D extern int receive_fd(struct file *file, unsigned int o_flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int receive_fd_user(struct f= ile *file, int *ufd,=0D unsigned int o_flags)=0D {=0D if (ufd =3D=3D ((void *)0))=0D return -14;=0D return __receive_fd(file, ufd, o_flags);=0D }=0D int receive_fd_replace(int new_fd, struct file *file, unsigned int o_flags)= ;=0D =0D extern void flush_delayed_fput(void);=0D extern void __fput_sync(struct file *);=0D =0D extern unsigned int sysctl_nr_open_min, sysctl_nr_open_max;=0D # 6 "./include/linux/kernel_read_file.h" 2=0D # 22 "./include/linux/kernel_read_file.h"=0D enum kernel_read_file_id {=0D READING_UNKNOWN, READING_FIRMWARE, READING_MODULE, READING_KEXEC_IMAGE, RE= ADING_KEXEC_INITRAMFS, READING_POLICY, READING_X509_CERTIFICATE, READING_MA= X_ID,=0D };=0D =0D static const char * const kernel_read_file_str[] =3D {=0D "unknown", "firmware", "kernel-module", "kexec-image", "kexec-initramfs", = "security-policy", "x509-certificate", "",=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *kernel_read_file= _id_str(enum kernel_read_file_id id)=0D {=0D if ((unsigned int)id >=3D READING_MAX_ID)=0D return kernel_read_file_str[READING_UNKNOWN];=0D =0D return kernel_read_file_str[id];=0D }=0D =0D int kernel_read_file(struct file *file, loff_t offset,=0D void **buf, size_t buf_size,=0D size_t *file_size,=0D enum kernel_read_file_id id);=0D int kernel_read_file_from_path(const char *path, loff_t offset,=0D void **buf, size_t buf_size,=0D size_t *file_size,=0D enum kernel_read_file_id id);=0D int kernel_read_file_from_path_initns(const char *path, loff_t offset,=0D void **buf, size_t buf_size,=0D size_t *file_size,=0D enum kernel_read_file_id id);=0D int kernel_read_file_from_fd(int fd, loff_t offset,=0D void **buf, size_t buf_size,=0D size_t *file_size,=0D enum kernel_read_file_id id);=0D # 27 "./include/linux/security.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D struct linux_binprm;=0D struct cred;=0D struct rlimit;=0D struct kernel_siginfo;=0D struct sembuf;=0D struct kern_ipc_perm;=0D struct audit_context;=0D struct super_block;=0D struct inode;=0D struct dentry;=0D struct file;=0D struct vfsmount;=0D struct path;=0D struct qstr;=0D struct iattr;=0D struct fown_struct;=0D struct file_operations;=0D struct msg_msg;=0D struct xattr;=0D struct kernfs_node;=0D struct xfrm_sec_ctx;=0D struct mm_struct;=0D struct fs_context;=0D struct fs_parameter;=0D enum fs_value_type;=0D struct watch;=0D struct watch_notification;=0D # 73 "./include/linux/security.h"=0D struct ctl_table;=0D struct audit_krule;=0D struct user_namespace;=0D struct timezone;=0D =0D enum lsm_event {=0D LSM_POLICY_CHANGE,=0D };=0D # 106 "./include/linux/security.h"=0D enum lockdown_reason {=0D LOCKDOWN_NONE,=0D LOCKDOWN_MODULE_SIGNATURE,=0D LOCKDOWN_DEV_MEM,=0D LOCKDOWN_EFI_TEST,=0D LOCKDOWN_KEXEC,=0D LOCKDOWN_HIBERNATION,=0D LOCKDOWN_PCI_ACCESS,=0D LOCKDOWN_IOPORT,=0D LOCKDOWN_MSR,=0D LOCKDOWN_ACPI_TABLES,=0D LOCKDOWN_PCMCIA_CIS,=0D LOCKDOWN_TIOCSSERIAL,=0D LOCKDOWN_MODULE_PARAMETERS,=0D LOCKDOWN_MMIOTRACE,=0D LOCKDOWN_DEBUGFS,=0D LOCKDOWN_XMON_WR,=0D LOCKDOWN_BPF_WRITE_USER,=0D LOCKDOWN_INTEGRITY_MAX,=0D LOCKDOWN_KCORE,=0D LOCKDOWN_KPROBES,=0D LOCKDOWN_BPF_READ_KERNEL,=0D LOCKDOWN_PERF,=0D LOCKDOWN_TRACEFS,=0D LOCKDOWN_XMON_RW,=0D LOCKDOWN_XFRM_SECRET,=0D LOCKDOWN_CONFIDENTIALITY_MAX,=0D };=0D =0D extern const char *const lockdown_reasons[LOCKDOWN_CONFIDENTIALITY_MAX+1];= =0D =0D =0D extern int cap_capable(const struct cred *cred, struct user_namespace *ns,= =0D int cap, unsigned int opts);=0D extern int cap_settime(const struct timespec64 *ts, const struct timezone *= tz);=0D extern int cap_ptrace_access_check(struct task_struct *child, unsigned int = mode);=0D extern int cap_ptrace_traceme(struct task_struct *parent);=0D extern int cap_capget(struct task_struct *target, kernel_cap_t *effective, = kernel_cap_t *inheritable, kernel_cap_t *permitted);=0D extern int cap_capset(struct cred *new, const struct cred *old,=0D const kernel_cap_t *effective,=0D const kernel_cap_t *inheritable,=0D const kernel_cap_t *permitted);=0D extern int cap_bprm_creds_from_file(struct linux_binprm *bprm, struct file = *file);=0D int cap_inode_setxattr(struct dentry *dentry, const char *name,=0D const void *value, size_t size, int flags);=0D int cap_inode_removexattr(struct user_namespace *mnt_userns,=0D struct dentry *dentry, const char *name);=0D int cap_inode_need_killpriv(struct dentry *dentry);=0D int cap_inode_killpriv(struct user_namespace *mnt_userns,=0D struct dentry *dentry);=0D int cap_inode_getsecurity(struct user_namespace *mnt_userns,=0D struct inode *inode, const char *name, void **buffer,=0D bool alloc);=0D extern int cap_mmap_addr(unsigned long addr);=0D extern int cap_mmap_file(struct file *file, unsigned long reqprot,=0D unsigned long prot, unsigned long flags);=0D extern int cap_task_fix_setuid(struct cred *new, const struct cred *old, in= t flags);=0D extern int cap_task_prctl(int option, unsigned long arg2, unsigned long arg= 3,=0D unsigned long arg4, unsigned long arg5);=0D extern int cap_task_setscheduler(struct task_struct *p);=0D extern int cap_task_setioprio(struct task_struct *p, int ioprio);=0D extern int cap_task_setnice(struct task_struct *p, int nice);=0D extern int cap_vm_enough_memory(struct mm_struct *mm, long pages);=0D =0D struct msghdr;=0D struct sk_buff;=0D struct sock;=0D struct sockaddr;=0D struct socket;=0D struct flowi_common;=0D struct dst_entry;=0D struct xfrm_selector;=0D struct xfrm_policy;=0D struct xfrm_state;=0D struct xfrm_user_sec_ctx;=0D struct seq_file;=0D struct sctp_association;=0D =0D =0D extern unsigned long mmap_min_addr;=0D extern unsigned long dac_mmap_min_addr;=0D # 212 "./include/linux/security.h"=0D struct sched_param;=0D struct request_sock;=0D =0D =0D =0D =0D =0D =0D =0D extern int mmap_min_addr_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D =0D =0D typedef int (*initxattrs) (struct inode *inode,=0D const struct xattr *xattr_array, void *fs_data);=0D =0D =0D =0D =0D =0D =0D enum kernel_load_data_id {=0D LOADING_UNKNOWN, LOADING_FIRMWARE, LOADING_MODULE, LOADING_KEXEC_IMAGE, LO= ADING_KEXEC_INITRAMFS, LOADING_POLICY, LOADING_X509_CERTIFICATE, LOADING_MA= X_ID,=0D };=0D =0D static const char * const kernel_load_data_str[] =3D {=0D "unknown", "firmware", "kernel-module", "kexec-image", "kexec-initramfs", = "security-policy", "x509-certificate", "",=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *kernel_load_data= _id_str(enum kernel_load_data_id id)=0D {=0D if ((unsigned)id >=3D LOADING_MAX_ID)=0D return kernel_load_data_str[LOADING_UNKNOWN];=0D =0D return kernel_load_data_str[id];=0D }=0D # 476 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int call_blocking_lsm_notifi= er(enum lsm_event event, void *data)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_blocking_lsm_no= tifier(struct notifier_block *nb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_blocking_lsm_= notifier(struct notifier_block *nb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_free_mnt_opts(= void **mnt_opts)=0D {=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_init(void)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int early_security_init(void= )=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_binder_set_cont= ext_mgr(const struct cred *mgr)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_binder_transact= ion(const struct cred *from,=0D const struct cred *to)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_binder_transfer= _binder(const struct cred *from,=0D const struct cred *to)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_binder_transfer= _file(const struct cred *from,=0D const struct cred *to,=0D struct file *file)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ptrace_access_c= heck(struct task_struct *child,=0D unsigned int mode)=0D {=0D return cap_ptrace_access_check(child, mode);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ptrace_traceme(= struct task_struct *parent)=0D {=0D return cap_ptrace_traceme(parent);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_capget(struct t= ask_struct *target,=0D kernel_cap_t *effective,=0D kernel_cap_t *inheritable,=0D kernel_cap_t *permitted)=0D {=0D return cap_capget(target, effective, inheritable, permitted);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_capset(struct c= red *new,=0D const struct cred *old,=0D const kernel_cap_t *effective,=0D const kernel_cap_t *inheritable,=0D const kernel_cap_t *permitted)=0D {=0D return cap_capset(new, old, effective, inheritable, permitted);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_capable(const s= truct cred *cred,=0D struct user_namespace *ns,=0D int cap,=0D unsigned int opts)=0D {=0D return cap_capable(cred, ns, cap, opts);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_quotactl(int cm= ds, int type, int id,=0D struct super_block *sb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_quota_on(struct= dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_syslog(int type= )=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_settime64(const= struct timespec64 *ts,=0D const struct timezone *tz)=0D {=0D return cap_settime(ts, tz);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_vm_enough_memor= y_mm(struct mm_struct *mm, long pages)=0D {=0D return __vm_enough_memory(mm, pages, cap_vm_enough_memory(mm, pages));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bprm_creds_for_= exec(struct linux_binprm *bprm)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bprm_creds_from= _file(struct linux_binprm *bprm,=0D struct file *file)=0D {=0D return cap_bprm_creds_from_file(bprm, file);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bprm_check(stru= ct linux_binprm *bprm)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_bprm_committin= g_creds(struct linux_binprm *bprm)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_bprm_committed= _creds(struct linux_binprm *bprm)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_fs_context_dup(= struct fs_context *fc,=0D struct fs_context *src_fc)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_fs_context_pars= e_param(struct fs_context *fc,=0D struct fs_parameter *param)=0D {=0D return -519;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_alloc(struct= super_block *sb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sb_delete(stru= ct super_block *sb)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sb_free(struct= super_block *sb)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_eat_lsm_opts= (char *options,=0D void **mnt_opts)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_remount(stru= ct super_block *sb,=0D void *mnt_opts)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_mnt_opts_com= pat(struct super_block *sb,=0D void *mnt_opts)=0D {=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_kern_mount(s= truct super_block *sb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_show_options= (struct seq_file *m,=0D struct super_block *sb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_statfs(struc= t dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_mount(const = char *dev_name, const struct path *path,=0D const char *type, unsigned long flags,=0D void *data)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_umount(struc= t vfsmount *mnt, int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_pivotroot(co= nst struct path *old_path,=0D const struct path *new_path)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_set_mnt_opts= (struct super_block *sb,=0D void *mnt_opts,=0D unsigned long kern_flags,=0D unsigned long *set_kern_flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sb_clone_mnt_op= ts(const struct super_block *oldsb,=0D struct super_block *newsb,=0D unsigned long kern_flags,=0D unsigned long *set_kern_flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_move_mount(cons= t struct path *from_path,=0D const struct path *to_path)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_notify(con= st struct path *path, u64 mask,=0D unsigned int obj_type)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_alloc(str= uct inode *inode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inode_free(str= uct inode *inode)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_dentry_init_sec= urity(struct dentry *dentry,=0D int mode,=0D const struct qstr *name,=0D const char **xattr_name,=0D void **ctx,=0D u32 *ctxlen)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_dentry_create_f= iles_as(struct dentry *dentry,=0D int mode, struct qstr *name,=0D const struct cred *old,=0D struct cred *new)=0D {=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_init_secu= rity(struct inode *inode,=0D struct inode *dir,=0D const struct qstr *qstr,=0D const initxattrs xattrs,=0D void *fs_data)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_init_secu= rity_anon(struct inode *inode,=0D const struct qstr *name,=0D const struct inode *context_inode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_old_inode_init_= security(struct inode *inode,=0D struct inode *dir,=0D const struct qstr *qstr,=0D const char **name,=0D void **value, size_t *len)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_create(st= ruct inode *dir,=0D struct dentry *dentry,=0D umode_t mode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_link(stru= ct dentry *old_dentry,=0D struct inode *dir,=0D struct dentry *new_dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_unlink(st= ruct inode *dir,=0D struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_symlink(s= truct inode *dir,=0D struct dentry *dentry,=0D const char *old_name)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_mkdir(str= uct inode *dir,=0D struct dentry *dentry,=0D int mode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_rmdir(str= uct inode *dir,=0D struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_mknod(str= uct inode *dir,=0D struct dentry *dentry,=0D int mode, dev_t dev)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_rename(st= ruct inode *old_dir,=0D struct dentry *old_dentry,=0D struct inode *new_dir,=0D struct dentry *new_dentry,=0D unsigned int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_readlink(= struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_follow_li= nk(struct dentry *dentry,=0D struct inode *inode,=0D bool rcu)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_permissio= n(struct inode *inode, int mask)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_setattr(s= truct dentry *dentry,=0D struct iattr *attr)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_getattr(c= onst struct path *path)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_setxattr(= struct user_namespace *mnt_userns,=0D struct dentry *dentry, const char *name, const void *value,=0D size_t size, int flags)=0D {=0D return cap_inode_setxattr(dentry, name, value, size, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inode_post_set= xattr(struct dentry *dentry,=0D const char *name, const void *value, size_t size, int flags)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_getxattr(= struct dentry *dentry,=0D const char *name)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_listxattr= (struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_removexat= tr(struct user_namespace *mnt_userns,=0D struct dentry *dentry,=0D const char *name)=0D {=0D return cap_inode_removexattr(mnt_userns, dentry, name);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_need_kill= priv(struct dentry *dentry)=0D {=0D return cap_inode_need_killpriv(dentry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_killpriv(= struct user_namespace *mnt_userns,=0D struct dentry *dentry)=0D {=0D return cap_inode_killpriv(mnt_userns, dentry);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_getsecuri= ty(struct user_namespace *mnt_userns,=0D struct inode *inode,=0D const char *name, void **buffer,=0D bool alloc)=0D {=0D return cap_inode_getsecurity(mnt_userns, inode, name, buffer, alloc);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_setsecuri= ty(struct inode *inode, const char *name, const void *value, size_t size, i= nt flags)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_listsecur= ity(struct inode *inode, char *buffer, size_t buffer_size)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inode_getsecid= (struct inode *inode, u32 *secid)=0D {=0D *secid =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_copy_up(s= truct dentry *src, struct cred **new)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernfs_init_sec= urity(struct kernfs_node *kn_dir,=0D struct kernfs_node *kn)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_copy_up_x= attr(const char *name)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_permission= (struct file *file, int mask)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_alloc(stru= ct file *file)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_file_free(stru= ct file *file)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_ioctl(stru= ct file *file, unsigned int cmd,=0D unsigned long arg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_mmap_file(struc= t file *file, unsigned long prot,=0D unsigned long flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_mmap_addr(unsig= ned long addr)=0D {=0D return cap_mmap_addr(addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_mprotect(s= truct vm_area_struct *vma,=0D unsigned long reqprot,=0D unsigned long prot)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_lock(struc= t file *file, unsigned int cmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_fcntl(stru= ct file *file, unsigned int cmd,=0D unsigned long arg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_file_set_fowne= r(struct file *file)=0D {=0D return;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_send_sigio= task(struct task_struct *tsk,=0D struct fown_struct *fown,=0D int sig)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_receive(st= ruct file *file)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_file_open(struc= t file *file)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_alloc(stru= ct task_struct *task,=0D unsigned long clone_flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_task_free(stru= ct task_struct *task)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_cred_alloc_blan= k(struct cred *cred, gfp_t gfp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_cred_free(stru= ct cred *cred)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_prepare_creds(s= truct cred *new,=0D const struct cred *old,=0D gfp_t gfp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_transfer_creds= (struct cred *new,=0D const struct cred *old)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_cred_getsecid(= const struct cred *c, u32 *secid)=0D {=0D *secid =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_act_as(s= truct cred *cred, u32 secid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_create_f= iles_as(struct cred *cred,=0D struct inode *inode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_module_r= equest(char *kmod_name)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_load_dat= a(enum kernel_load_data_id id, bool contents)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_post_loa= d_data(char *buf, loff_t size,=0D enum kernel_load_data_id id,=0D char *description)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_read_fil= e(struct file *file,=0D enum kernel_read_file_id id,=0D bool contents)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_kernel_post_rea= d_file(struct file *file,=0D char *buf, loff_t size,=0D enum kernel_read_file_id id)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_fix_setuid= (struct cred *new,=0D const struct cred *old,=0D int flags)=0D {=0D return cap_task_fix_setuid(new, old, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_fix_setgid= (struct cred *new,=0D const struct cred *old,=0D int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_setpgid(st= ruct task_struct *p, pid_t pgid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_getpgid(st= ruct task_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_getsid(str= uct task_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_current_getsec= id_subj(u32 *secid)=0D {=0D *secid =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_task_getsecid_= obj(struct task_struct *p, u32 *secid)=0D {=0D *secid =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_setnice(st= ruct task_struct *p, int nice)=0D {=0D return cap_task_setnice(p, nice);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_setioprio(= struct task_struct *p, int ioprio)=0D {=0D return cap_task_setioprio(p, ioprio);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_getioprio(= struct task_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_prlimit(co= nst struct cred *cred,=0D const struct cred *tcred,=0D unsigned int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_setrlimit(= struct task_struct *p,=0D unsigned int resource,=0D struct rlimit *new_rlim)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_setschedul= er(struct task_struct *p)=0D {=0D return cap_task_setscheduler(p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_getschedul= er(struct task_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_movememory= (struct task_struct *p)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_kill(struc= t task_struct *p,=0D struct kernel_siginfo *info, int sig,=0D const struct cred *cred)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_task_prctl(int = option, unsigned long arg2,=0D unsigned long arg3,=0D unsigned long arg4,=0D unsigned long arg5)=0D {=0D return cap_task_prctl(option, arg2, arg3, arg4, arg5);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_task_to_inode(= struct task_struct *p, struct inode *inode)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ipc_permission(= struct kern_ipc_perm *ipcp,=0D short flag)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_ipc_getsecid(s= truct kern_ipc_perm *ipcp, u32 *secid)=0D {=0D *secid =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_msg_alloc(s= truct msg_msg *msg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_msg_msg_free(s= truct msg_msg *msg)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_queue_alloc= (struct kern_ipc_perm *msq)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_msg_queue_free= (struct kern_ipc_perm *msq)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_queue_assoc= iate(struct kern_ipc_perm *msq,=0D int msqflg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_queue_msgct= l(struct kern_ipc_perm *msq, int cmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_queue_msgsn= d(struct kern_ipc_perm *msq,=0D struct msg_msg *msg, int msqflg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_msg_queue_msgrc= v(struct kern_ipc_perm *msq,=0D struct msg_msg *msg,=0D struct task_struct *target,=0D long type, int mode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_shm_alloc(struc= t kern_ipc_perm *shp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_shm_free(struc= t kern_ipc_perm *shp)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_shm_associate(s= truct kern_ipc_perm *shp,=0D int shmflg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_shm_shmctl(stru= ct kern_ipc_perm *shp, int cmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_shm_shmat(struc= t kern_ipc_perm *shp,=0D char *shmaddr, int shmflg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sem_alloc(struc= t kern_ipc_perm *sma)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sem_free(struc= t kern_ipc_perm *sma)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sem_associate(s= truct kern_ipc_perm *sma, int semflg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sem_semctl(stru= ct kern_ipc_perm *sma, int cmd)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sem_semop(struc= t kern_ipc_perm *sma,=0D struct sembuf *sops, unsigned nsops,=0D int alter)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_d_instantiate(= struct dentry *dentry,=0D struct inode *inode)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_getprocattr(str= uct task_struct *p, const char *lsm,=0D char *name, char **value)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_setprocattr(con= st char *lsm, char *name,=0D void *value, size_t size)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_netlink_send(st= ruct sock *sk, struct sk_buff *skb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ismaclabel(cons= t char *name)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_secid_to_secctx= (u32 secid, char **secdata, u32 *seclen)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_secctx_to_secid= (const char *secdata,=0D u32 seclen,=0D u32 *secid)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_release_secctx= (char *secdata, u32 seclen)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inode_invalida= te_secctx(struct inode *inode)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_notifysec= ctx(struct inode *inode, void *ctx, u32 ctxlen)=0D {=0D return -95;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_setsecctx= (struct dentry *dentry, void *ctx, u32 ctxlen)=0D {=0D return -95;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inode_getsecctx= (struct inode *inode, void **ctx, u32 *ctxlen)=0D {=0D return -95;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_locked_down(enu= m lockdown_reason what)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_post_notificati= on(const struct cred *w_cred,=0D const struct cred *cred,=0D struct watch_notification *n)=0D {=0D return 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_watch_key(struc= t key *key)=0D {=0D return 0;=0D }=0D # 1429 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_unix_stream_con= nect(struct sock *sock,=0D struct sock *other,=0D struct sock *newsk)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_unix_may_send(s= truct socket *sock,=0D struct socket *other)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_create(i= nt family, int type,=0D int protocol, int kern)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_post_cre= ate(struct socket *sock,=0D int family,=0D int type,=0D int protocol, int kern)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_socketpa= ir(struct socket *socka,=0D struct socket *sockb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_bind(str= uct socket *sock,=0D struct sockaddr *address,=0D int addrlen)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_connect(= struct socket *sock,=0D struct sockaddr *address,=0D int addrlen)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_listen(s= truct socket *sock, int backlog)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_accept(s= truct socket *sock,=0D struct socket *newsock)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_sendmsg(= struct socket *sock,=0D struct msghdr *msg, int size)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_recvmsg(= struct socket *sock,=0D struct msghdr *msg, int size,=0D int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_getsockn= ame(struct socket *sock)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_getpeern= ame(struct socket *sock)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_getsocko= pt(struct socket *sock,=0D int level, int optname)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_setsocko= pt(struct socket *sock,=0D int level, int optname)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_shutdown= (struct socket *sock, int how)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sock_rcv_skb(st= ruct sock *sk,=0D struct sk_buff *skb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_getpeers= ec_stream(struct socket *sock, char *optval,=0D int *optlen, unsigned len)=0D {=0D return -92;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_socket_getpeers= ec_dgram(struct socket *sock, struct sk_buff *skb, u32 *secid)=0D {=0D return -92;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sk_alloc(struct= sock *sk, int family, gfp_t priority)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sk_free(struct= sock *sk)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sk_clone(const= struct sock *sk, struct sock *newsk)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sk_classify_fl= ow(struct sock *sk,=0D struct flowi_common *flic)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_req_classify_f= low(const struct request_sock *req,=0D struct flowi_common *flic)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sock_graft(str= uct sock *sk, struct socket *parent)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_inet_conn_reque= st(const struct sock *sk,=0D struct sk_buff *skb, struct request_sock *req)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inet_csk_clone= (struct sock *newsk,=0D const struct request_sock *req)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_inet_conn_esta= blished(struct sock *sk,=0D struct sk_buff *skb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_secmark_relabel= _packet(u32 secid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_secmark_refcou= nt_inc(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_secmark_refcou= nt_dec(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_tun_dev_alloc_s= ecurity(void **security)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_tun_dev_free_s= ecurity(void *security)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_tun_dev_create(= void)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_tun_dev_attach_= queue(void *security)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_tun_dev_attach(= struct sock *sk, void *security)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_tun_dev_open(vo= id *security)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sctp_assoc_requ= est(struct sctp_association *asoc,=0D struct sk_buff *skb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sctp_bind_conne= ct(struct sock *sk, int optname,=0D struct sockaddr *address,=0D int addrlen)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_sctp_sk_clone(= struct sctp_association *asoc,=0D struct sock *sk,=0D struct sock *newsk)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_sctp_assoc_esta= blished(struct sctp_association *asoc,=0D struct sk_buff *skb)=0D {=0D return 0;=0D }=0D # 1660 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ib_pkey_access(= void *sec, u64 subnet_prefix, u16 pkey)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ib_endport_mana= ge_subnet(void *sec, const char *dev_name, u8 port_num)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_ib_alloc_securi= ty(void **sec)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_ib_free_securi= ty(void *sec)=0D {=0D }=0D # 1701 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_policy_all= oc(struct xfrm_sec_ctx **ctxp,=0D struct xfrm_user_sec_ctx *sec_ctx,=0D gfp_t gfp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_policy_clo= ne(struct xfrm_sec_ctx *old, struct xfrm_sec_ctx **new_ctxp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_xfrm_policy_fr= ee(struct xfrm_sec_ctx *ctx)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_policy_del= ete(struct xfrm_sec_ctx *ctx)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_state_allo= c(struct xfrm_state *x,=0D struct xfrm_user_sec_ctx *sec_ctx)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_state_allo= c_acquire(struct xfrm_state *x,=0D struct xfrm_sec_ctx *polsec, u32 secid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_xfrm_state_fre= e(struct xfrm_state *x)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_state_dele= te(struct xfrm_state *x)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_policy_loo= kup(struct xfrm_sec_ctx *ctx, u32 fl_secid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_state_pol_= flow_match(struct xfrm_state *x,=0D struct xfrm_policy *xp,=0D const struct flowi_common *flic)=0D {=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_xfrm_decode_ses= sion(struct sk_buff *skb, u32 *secid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_skb_classify_f= low(struct sk_buff *skb,=0D struct flowi_common *flic)=0D {=0D }=0D # 1785 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_unlink(con= st struct path *dir, struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_mkdir(cons= t struct path *dir, struct dentry *dentry,=0D umode_t mode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_rmdir(cons= t struct path *dir, struct dentry *dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_mknod(cons= t struct path *dir, struct dentry *dentry,=0D umode_t mode, unsigned int dev)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_truncate(c= onst struct path *path)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_symlink(co= nst struct path *dir, struct dentry *dentry,=0D const char *old_name)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_link(struc= t dentry *old_dentry,=0D const struct path *new_dir,=0D struct dentry *new_dentry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_rename(con= st struct path *old_dir,=0D struct dentry *old_dentry,=0D const struct path *new_dir,=0D struct dentry *new_dentry,=0D unsigned int flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_chmod(cons= t struct path *path, umode_t mode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_chown(cons= t struct path *path, kuid_t uid, kgid_t gid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_path_chroot(con= st struct path *path)=0D {=0D return 0;=0D }=0D # 1861 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_key_alloc(struc= t key *key,=0D const struct cred *cred,=0D unsigned long flags)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_key_free(struc= t key *key)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_key_permission(= key_ref_t key_ref,=0D const struct cred *cred,=0D enum key_need_perm need_perm)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_key_getsecurity= (struct key *key, char **_buffer)=0D {=0D *_buffer =3D ((void *)0);=0D return 0;=0D }=0D # 1934 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *securityfs_cr= eate_dir(const char *name,=0D struct dentry *parent)=0D {=0D return ERR_PTR(-19);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *securityfs_cr= eate_file(const char *name,=0D umode_t mode,=0D struct dentry *parent,=0D void *data,=0D const struct file_operations *fops)=0D {=0D return ERR_PTR(-19);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dentry *securityfs_cr= eate_symlink(const char *name,=0D struct dentry *parent,=0D const char *target,=0D const struct inode_operations *iops)=0D {=0D return ERR_PTR(-19);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void securityfs_remove(struc= t dentry *dentry)=0D {}=0D =0D =0D =0D =0D union bpf_attr;=0D struct bpf_map;=0D struct bpf_prog;=0D struct bpf_prog_aux;=0D # 1976 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bpf(int cmd, un= ion bpf_attr *attr,=0D unsigned int size)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bpf_map(struct = bpf_map *map, fmode_t fmode)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bpf_prog(struct= bpf_prog *prog)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bpf_map_alloc(s= truct bpf_map *map)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_bpf_map_free(s= truct bpf_map *map)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_bpf_prog_alloc(= struct bpf_prog_aux *aux)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_bpf_prog_free(= struct bpf_prog_aux *aux)=0D { }=0D =0D =0D =0D =0D struct perf_event_attr;=0D struct perf_event;=0D # 2021 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_perf_event_open= (struct perf_event_attr *attr,=0D int type)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_perf_event_allo= c(struct perf_event *event)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void security_perf_event_fre= e(struct perf_event *event)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_perf_event_read= (struct perf_event *event)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_perf_event_writ= e(struct perf_event *event)=0D {=0D return 0;=0D }=0D # 2053 "./include/linux/security.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_uring_override_= creds(const struct cred *new)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int security_uring_sqpoll(vo= id)=0D {=0D return 0;=0D }=0D # 9 "./include/net/scm.h" 2=0D # 18 "./include/net/scm.h"=0D struct scm_creds {=0D u32 pid;=0D kuid_t uid;=0D kgid_t gid;=0D };=0D =0D struct scm_fp_list {=0D short count;=0D short max;=0D struct user_struct *user;=0D struct file *fp[253];=0D };=0D =0D struct scm_cookie {=0D struct pid *pid;=0D struct scm_fp_list *fp;=0D struct scm_creds creds;=0D =0D =0D =0D };=0D =0D void scm_detach_fds(struct msghdr *msg, struct scm_cookie *scm);=0D void scm_detach_fds_compat(struct msghdr *msg, struct scm_cookie *scm);=0D int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *= scm);=0D void __scm_destroy(struct scm_cookie *scm);=0D struct scm_fp_list *scm_fp_dup(struct scm_fp_list *fpl);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unix_get_peersec_dgram(= struct socket *sock, struct scm_cookie *scm)=0D { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void scm_set_cred(struct scm= _cookie *scm,=0D struct pid *pid, kuid_t uid, kgid_t gid)=0D {=0D scm->pid =3D get_pid(pid);=0D scm->creds.pid =3D pid_vnr(pid);=0D scm->creds.uid =3D uid;=0D scm->creds.gid =3D gid;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void scm_destroy_cred(struct= scm_cookie *scm)=0D {=0D put_pid(scm->pid);=0D scm->pid =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void scm_destroy(struct scm_= cookie *scm)=0D {=0D scm_destroy_cred(scm);=0D if (scm->fp)=0D __scm_destroy(scm);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int scm_send(struct socket *= sock, struct msghdr *msg,=0D struct scm_cookie *scm, bool forcecreds)=0D {=0D memset(scm, 0, sizeof(*scm));=0D scm->creds.uid =3D (kuid_t){ -1 };=0D scm->creds.gid =3D (kgid_t){ -1 };=0D if (forcecreds)=0D scm_set_cred(scm, task_tgid(get_current()), (({ ({ do { } while (0 && (!(= (1)))); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->= uid; })), (({ ({ do { } while (0 && (!((1)))); ; ((typeof(*(get_current()->= cred)) *)((get_current()->cred))); })->gid; })));=0D unix_get_peersec_dgram(sock, scm);=0D if (msg->msg_controllen <=3D 0)=0D return 0;=0D return __scm_send(sock, msg, scm);=0D }=0D # 109 "./include/net/scm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void scm_passec(struct socke= t *sock, struct msghdr *msg, struct scm_cookie *scm)=0D { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void scm_recv(struct socket = *sock, struct msghdr *msg,=0D struct scm_cookie *scm, int flags)=0D {=0D if (!msg->msg_control) {=0D if (arch_test_bit(3, &sock->flags) || scm->fp)=0D msg->msg_flags |=3D 8;=0D scm_destroy(scm);=0D return;=0D }=0D =0D if (arch_test_bit(3, &sock->flags)) {=0D struct user_namespace *current_ns =3D (({ ({ do { } while (0 && (!((1))))= ; ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->user_n= s; }));=0D struct ucred ucreds =3D {=0D .pid =3D scm->creds.pid,=0D .uid =3D from_kuid_munged(current_ns, scm->creds.uid),=0D .gid =3D from_kgid_munged(current_ns, scm->creds.gid),=0D };=0D put_cmsg(msg, 1, 0x02, sizeof(ucreds), &ucreds);=0D }=0D =0D scm_destroy_cred(scm);=0D =0D scm_passec(sock, msg, scm);=0D =0D if (!scm->fp)=0D return;=0D =0D scm_detach_fds(msg, scm);=0D }=0D # 10 "./include/linux/netlink.h" 2=0D # 1 "./include/uapi/linux/netlink.h" 1=0D # 37 "./include/uapi/linux/netlink.h"=0D struct sockaddr_nl {=0D __kernel_sa_family_t nl_family;=0D unsigned short nl_pad;=0D __u32 nl_pid;=0D __u32 nl_groups;=0D };=0D =0D struct nlmsghdr {=0D __u32 nlmsg_len;=0D __u16 nlmsg_type;=0D __u16 nlmsg_flags;=0D __u32 nlmsg_seq;=0D __u32 nlmsg_pid;=0D };=0D # 110 "./include/uapi/linux/netlink.h"=0D struct nlmsgerr {=0D int error;=0D struct nlmsghdr msg;=0D # 122 "./include/uapi/linux/netlink.h"=0D };=0D # 137 "./include/uapi/linux/netlink.h"=0D enum nlmsgerr_attrs {=0D NLMSGERR_ATTR_UNUSED,=0D NLMSGERR_ATTR_MSG,=0D NLMSGERR_ATTR_OFFS,=0D NLMSGERR_ATTR_COOKIE,=0D NLMSGERR_ATTR_POLICY,=0D =0D __NLMSGERR_ATTR_MAX,=0D NLMSGERR_ATTR_MAX =3D __NLMSGERR_ATTR_MAX - 1=0D };=0D # 163 "./include/uapi/linux/netlink.h"=0D struct nl_pktinfo {=0D __u32 group;=0D };=0D =0D struct nl_mmap_req {=0D unsigned int nm_block_size;=0D unsigned int nm_block_nr;=0D unsigned int nm_frame_size;=0D unsigned int nm_frame_nr;=0D };=0D =0D struct nl_mmap_hdr {=0D unsigned int nm_status;=0D unsigned int nm_len;=0D __u32 nm_group;=0D =0D __u32 nm_pid;=0D __u32 nm_uid;=0D __u32 nm_gid;=0D };=0D # 200 "./include/uapi/linux/netlink.h"=0D enum {=0D NETLINK_UNCONNECTED =3D 0,=0D NETLINK_CONNECTED,=0D };=0D # 214 "./include/uapi/linux/netlink.h"=0D struct nlattr {=0D __u16 nla_len;=0D __u16 nla_type;=0D };=0D # 250 "./include/uapi/linux/netlink.h"=0D struct nla_bitfield32 {=0D __u32 value;=0D __u32 selector;=0D };=0D # 287 "./include/uapi/linux/netlink.h"=0D enum netlink_attribute_type {=0D NL_ATTR_TYPE_INVALID,=0D =0D NL_ATTR_TYPE_FLAG,=0D =0D NL_ATTR_TYPE_U8,=0D NL_ATTR_TYPE_U16,=0D NL_ATTR_TYPE_U32,=0D NL_ATTR_TYPE_U64,=0D =0D NL_ATTR_TYPE_S8,=0D NL_ATTR_TYPE_S16,=0D NL_ATTR_TYPE_S32,=0D NL_ATTR_TYPE_S64,=0D =0D NL_ATTR_TYPE_BINARY,=0D NL_ATTR_TYPE_STRING,=0D NL_ATTR_TYPE_NUL_STRING,=0D =0D NL_ATTR_TYPE_NESTED,=0D NL_ATTR_TYPE_NESTED_ARRAY,=0D =0D NL_ATTR_TYPE_BITFIELD32,=0D };=0D # 340 "./include/uapi/linux/netlink.h"=0D enum netlink_policy_type_attr {=0D NL_POLICY_TYPE_ATTR_UNSPEC,=0D NL_POLICY_TYPE_ATTR_TYPE,=0D NL_POLICY_TYPE_ATTR_MIN_VALUE_S,=0D NL_POLICY_TYPE_ATTR_MAX_VALUE_S,=0D NL_POLICY_TYPE_ATTR_MIN_VALUE_U,=0D NL_POLICY_TYPE_ATTR_MAX_VALUE_U,=0D NL_POLICY_TYPE_ATTR_MIN_LENGTH,=0D NL_POLICY_TYPE_ATTR_MAX_LENGTH,=0D NL_POLICY_TYPE_ATTR_POLICY_IDX,=0D NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE,=0D NL_POLICY_TYPE_ATTR_BITFIELD32_MASK,=0D NL_POLICY_TYPE_ATTR_PAD,=0D NL_POLICY_TYPE_ATTR_MASK,=0D =0D =0D __NL_POLICY_TYPE_ATTR_MAX,=0D NL_POLICY_TYPE_ATTR_MAX =3D __NL_POLICY_TYPE_ATTR_MAX - 1=0D };=0D # 11 "./include/linux/netlink.h" 2=0D =0D struct net;=0D =0D void do_trace_netlink_extack(const char *msg);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlmsghdr *nlmsg_hdr(c= onst struct sk_buff *skb)=0D {=0D return (struct nlmsghdr *)skb->data;=0D }=0D =0D enum netlink_skb_flags {=0D NETLINK_SKB_DST =3D 0x8,=0D };=0D =0D struct netlink_skb_parms {=0D struct scm_creds creds;=0D __u32 portid;=0D __u32 dst_group;=0D __u32 flags;=0D struct sock *sk;=0D bool nsid_is_set;=0D int nsid;=0D };=0D =0D =0D =0D =0D =0D void netlink_table_grab(void);=0D void netlink_table_ungrab(void);=0D =0D =0D =0D =0D =0D struct netlink_kernel_cfg {=0D unsigned int groups;=0D unsigned int flags;=0D void (*input)(struct sk_buff *skb);=0D struct mutex *cb_mutex;=0D int (*bind)(struct net *net, int group);=0D void (*unbind)(struct net *net, int group);=0D bool (*compare)(struct net *net, struct sock *sk);=0D };=0D =0D struct sock *__netlink_kernel_create(struct net *net, int unit,=0D struct module *module,=0D struct netlink_kernel_cfg *cfg);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *=0D netlink_kernel_create(struct net *net, int unit, struct netlink_kernel_cfg = *cfg)=0D {=0D return __netlink_kernel_create(net, unit, ((struct module *)0), cfg);=0D }=0D # 77 "./include/linux/netlink.h"=0D struct netlink_ext_ack {=0D const char *_msg;=0D const struct nlattr *bad_attr;=0D const struct nla_policy *policy;=0D u8 cookie[20];=0D u8 cookie_len;=0D };=0D # 129 "./include/linux/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nl_set_extack_cookie_u6= 4(struct netlink_ext_ack *extack,=0D u64 cookie)=0D {=0D if (!extack)=0D return;=0D memcpy(extack->cookie, &cookie, sizeof(cookie));=0D extack->cookie_len =3D sizeof(cookie);=0D }=0D =0D void netlink_kernel_release(struct sock *sk);=0D int __netlink_change_ngroups(struct sock *sk, unsigned int groups);=0D int netlink_change_ngroups(struct sock *sk, unsigned int groups);=0D void __netlink_clear_multicast_users(struct sock *sk, unsigned int group);= =0D void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err,=0D const struct netlink_ext_ack *extack);=0D int netlink_has_listeners(struct sock *sk, unsigned int group);=0D bool netlink_strict_get_check(struct sk_buff *skb);=0D =0D int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 portid, in= t nonblock);=0D int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 portid,= =0D __u32 group, gfp_t allocation);=0D int netlink_set_err(struct sock *ssk, __u32 portid, __u32 group, int code);= =0D int netlink_register_notifier(struct notifier_block *nb);=0D int netlink_unregister_notifier(struct notifier_block *nb);=0D =0D =0D struct sock *netlink_getsockbyfilp(struct file *filp);=0D int netlink_attachskb(struct sock *sk, struct sk_buff *skb,=0D long *timeo, struct sock *ssk);=0D void netlink_detachskb(struct sock *sk, struct sk_buff *skb);=0D int netlink_sendskb(struct sock *sk, struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *=0D netlink_skb_clone(struct sk_buff *skb, gfp_t gfp_mask)=0D {=0D struct sk_buff *nskb;=0D =0D nskb =3D skb_clone(skb, gfp_mask);=0D if (!nskb)=0D return ((void *)0);=0D =0D =0D if (is_vmalloc_addr(skb->head))=0D nskb->destructor =3D skb->destructor;=0D =0D return nskb;=0D }=0D # 192 "./include/linux/netlink.h"=0D struct netlink_callback {=0D struct sk_buff *skb;=0D const struct nlmsghdr *nlh;=0D int (*dump)(struct sk_buff * skb,=0D struct netlink_callback *cb);=0D int (*done)(struct netlink_callback *cb);=0D void *data;=0D =0D struct module *module;=0D struct netlink_ext_ack *extack;=0D u16 family;=0D u16 answer_flags;=0D u32 min_dump_alloc;=0D unsigned int prev_seq, seq;=0D bool strict_check;=0D union {=0D u8 ctx[48];=0D =0D =0D =0D =0D long args[6];=0D };=0D };=0D =0D struct netlink_notify {=0D struct net *net;=0D u32 portid;=0D int protocol;=0D };=0D =0D struct nlmsghdr *=0D __nlmsg_put(struct sk_buff *skb, u32 portid, u32 seq, int type, int len, in= t flags);=0D =0D struct netlink_dump_control {=0D int (*start)(struct netlink_callback *);=0D int (*dump)(struct sk_buff *skb, struct netlink_callback *);=0D int (*done)(struct netlink_callback *);=0D void *data;=0D struct module *module;=0D u32 min_dump_alloc;=0D };=0D =0D int __netlink_dump_start(struct sock *ssk, struct sk_buff *skb,=0D const struct nlmsghdr *nlh,=0D struct netlink_dump_control *control);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int netlink_dump_start(struc= t sock *ssk, struct sk_buff *skb,=0D const struct nlmsghdr *nlh,=0D struct netlink_dump_control *control)=0D {=0D if (!control->module)=0D control->module =3D ((struct module *)0);=0D =0D return __netlink_dump_start(ssk, skb, nlh, control);=0D }=0D =0D struct netlink_tap {=0D struct net_device *dev;=0D struct module *module;=0D struct list_head list;=0D };=0D =0D int netlink_add_tap(struct netlink_tap *nt);=0D int netlink_remove_tap(struct netlink_tap *nt);=0D =0D bool __netlink_ns_capable(const struct netlink_skb_parms *nsp,=0D struct user_namespace *ns, int cap);=0D bool netlink_ns_capable(const struct sk_buff *skb,=0D struct user_namespace *ns, int cap);=0D bool netlink_capable(const struct sk_buff *skb, int cap);=0D bool netlink_net_capable(const struct sk_buff *skb, int cap);=0D # 7 "./include/uapi/linux/neighbour.h" 2=0D =0D struct ndmsg {=0D __u8 ndm_family;=0D __u8 ndm_pad1;=0D __u16 ndm_pad2;=0D __s32 ndm_ifindex;=0D __u16 ndm_state;=0D __u8 ndm_flags;=0D __u8 ndm_type;=0D };=0D =0D enum {=0D NDA_UNSPEC,=0D NDA_DST,=0D NDA_LLADDR,=0D NDA_CACHEINFO,=0D NDA_PROBES,=0D NDA_VLAN,=0D NDA_PORT,=0D NDA_VNI,=0D NDA_IFINDEX,=0D NDA_MASTER,=0D NDA_LINK_NETNSID,=0D NDA_SRC_VNI,=0D NDA_PROTOCOL,=0D NDA_NH_ID,=0D NDA_FDB_EXT_ATTRS,=0D NDA_FLAGS_EXT,=0D __NDA_MAX=0D };=0D # 89 "./include/uapi/linux/neighbour.h"=0D struct nda_cacheinfo {=0D __u32 ndm_confirmed;=0D __u32 ndm_used;=0D __u32 ndm_updated;=0D __u32 ndm_refcnt;=0D };=0D # 121 "./include/uapi/linux/neighbour.h"=0D struct ndt_stats {=0D __u64 ndts_allocs;=0D __u64 ndts_destroys;=0D __u64 ndts_hash_grows;=0D __u64 ndts_res_failed;=0D __u64 ndts_lookups;=0D __u64 ndts_hits;=0D __u64 ndts_rcv_probes_mcast;=0D __u64 ndts_rcv_probes_ucast;=0D __u64 ndts_periodic_gc_runs;=0D __u64 ndts_forced_gc_runs;=0D __u64 ndts_table_fulls;=0D };=0D =0D enum {=0D NDTPA_UNSPEC,=0D NDTPA_IFINDEX,=0D NDTPA_REFCNT,=0D NDTPA_REACHABLE_TIME,=0D NDTPA_BASE_REACHABLE_TIME,=0D NDTPA_RETRANS_TIME,=0D NDTPA_GC_STALETIME,=0D NDTPA_DELAY_PROBE_TIME,=0D NDTPA_QUEUE_LEN,=0D NDTPA_APP_PROBES,=0D NDTPA_UCAST_PROBES,=0D NDTPA_MCAST_PROBES,=0D NDTPA_ANYCAST_DELAY,=0D NDTPA_PROXY_DELAY,=0D NDTPA_PROXY_QLEN,=0D NDTPA_LOCKTIME,=0D NDTPA_QUEUE_LENBYTES,=0D NDTPA_MCAST_REPROBES,=0D NDTPA_PAD,=0D __NDTPA_MAX=0D };=0D =0D =0D struct ndtmsg {=0D __u8 ndtm_family;=0D __u8 ndtm_pad1;=0D __u16 ndtm_pad2;=0D };=0D =0D struct ndt_config {=0D __u16 ndtc_key_len;=0D __u16 ndtc_entry_size;=0D __u32 ndtc_entries;=0D __u32 ndtc_last_flush;=0D __u32 ndtc_last_rand;=0D __u32 ndtc_hash_rnd;=0D __u32 ndtc_hash_mask;=0D __u32 ndtc_hash_chain_gc;=0D __u32 ndtc_proxy_qlen;=0D };=0D =0D enum {=0D NDTA_UNSPEC,=0D NDTA_NAME,=0D NDTA_THRESH1,=0D NDTA_THRESH2,=0D NDTA_THRESH3,=0D NDTA_CONFIG,=0D NDTA_PARMS,=0D NDTA_STATS,=0D NDTA_GC_INTERVAL,=0D NDTA_PAD,=0D __NDTA_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D FDB_NOTIFY_BIT =3D (1 << 0),=0D FDB_NOTIFY_INACTIVE_BIT =3D (1 << 1)=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D NFEA_UNSPEC,=0D NFEA_ACTIVITY_NOTIFY,=0D NFEA_DONT_REFRESH,=0D __NFEA_MAX=0D };=0D # 47 "./include/linux/netdevice.h" 2=0D # 1 "./include/uapi/linux/netdevice.h" 1=0D # 30 "./include/uapi/linux/netdevice.h"=0D # 1 "./include/linux/if_ether.h" 1=0D # 22 "./include/linux/if_ether.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ethhdr *eth_hdr(const= struct sk_buff *skb)=0D {=0D return (struct ethhdr *)skb_mac_header(skb);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ethhdr *skb_eth_hdr(c= onst struct sk_buff *skb)=0D {=0D return (struct ethhdr *)skb->data;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ethhdr *inner_eth_hdr= (const struct sk_buff *skb)=0D {=0D return (struct ethhdr *)skb_inner_mac_header(skb);=0D }=0D =0D int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);=0D =0D extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int l= en);=0D # 31 "./include/uapi/linux/netdevice.h" 2=0D =0D # 1 "./include/linux/if_link.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/if_link.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct rtnl_link_stats {=0D __u32 rx_packets;=0D __u32 tx_packets;=0D __u32 rx_bytes;=0D __u32 tx_bytes;=0D __u32 rx_errors;=0D __u32 tx_errors;=0D __u32 rx_dropped;=0D __u32 tx_dropped;=0D __u32 multicast;=0D __u32 collisions;=0D =0D __u32 rx_length_errors;=0D __u32 rx_over_errors;=0D __u32 rx_crc_errors;=0D __u32 rx_frame_errors;=0D __u32 rx_fifo_errors;=0D __u32 rx_missed_errors;=0D =0D =0D __u32 tx_aborted_errors;=0D __u32 tx_carrier_errors;=0D __u32 tx_fifo_errors;=0D __u32 tx_heartbeat_errors;=0D __u32 tx_window_errors;=0D =0D =0D __u32 rx_compressed;=0D __u32 tx_compressed;=0D =0D __u32 rx_nohandler;=0D };=0D # 215 "./include/uapi/linux/if_link.h"=0D struct rtnl_link_stats64 {=0D __u64 rx_packets;=0D __u64 tx_packets;=0D __u64 rx_bytes;=0D __u64 tx_bytes;=0D __u64 rx_errors;=0D __u64 tx_errors;=0D __u64 rx_dropped;=0D __u64 tx_dropped;=0D __u64 multicast;=0D __u64 collisions;=0D =0D =0D __u64 rx_length_errors;=0D __u64 rx_over_errors;=0D __u64 rx_crc_errors;=0D __u64 rx_frame_errors;=0D __u64 rx_fifo_errors;=0D __u64 rx_missed_errors;=0D =0D =0D __u64 tx_aborted_errors;=0D __u64 tx_carrier_errors;=0D __u64 tx_fifo_errors;=0D __u64 tx_heartbeat_errors;=0D __u64 tx_window_errors;=0D =0D =0D __u64 rx_compressed;=0D __u64 tx_compressed;=0D __u64 rx_nohandler;=0D };=0D =0D =0D =0D =0D struct rtnl_hw_stats64 {=0D __u64 rx_packets;=0D __u64 tx_packets;=0D __u64 rx_bytes;=0D __u64 tx_bytes;=0D __u64 rx_errors;=0D __u64 tx_errors;=0D __u64 rx_dropped;=0D __u64 tx_dropped;=0D __u64 multicast;=0D };=0D =0D =0D struct rtnl_link_ifmap {=0D __u64 mem_start;=0D __u64 mem_end;=0D __u64 base_addr;=0D __u16 irq;=0D __u8 dma;=0D __u8 port;=0D };=0D # 291 "./include/uapi/linux/if_link.h"=0D enum {=0D IFLA_UNSPEC,=0D IFLA_ADDRESS,=0D IFLA_BROADCAST,=0D IFLA_IFNAME,=0D IFLA_MTU,=0D IFLA_LINK,=0D IFLA_QDISC,=0D IFLA_STATS,=0D IFLA_COST,=0D =0D IFLA_PRIORITY,=0D =0D IFLA_MASTER,=0D =0D IFLA_WIRELESS,=0D =0D IFLA_PROTINFO,=0D =0D IFLA_TXQLEN,=0D =0D IFLA_MAP,=0D =0D IFLA_WEIGHT,=0D =0D IFLA_OPERSTATE,=0D IFLA_LINKMODE,=0D IFLA_LINKINFO,=0D =0D IFLA_NET_NS_PID,=0D IFLA_IFALIAS,=0D IFLA_NUM_VF,=0D IFLA_VFINFO_LIST,=0D IFLA_STATS64,=0D IFLA_VF_PORTS,=0D IFLA_PORT_SELF,=0D IFLA_AF_SPEC,=0D IFLA_GROUP,=0D IFLA_NET_NS_FD,=0D IFLA_EXT_MASK,=0D IFLA_PROMISCUITY,=0D =0D IFLA_NUM_TX_QUEUES,=0D IFLA_NUM_RX_QUEUES,=0D IFLA_CARRIER,=0D IFLA_PHYS_PORT_ID,=0D IFLA_CARRIER_CHANGES,=0D IFLA_PHYS_SWITCH_ID,=0D IFLA_LINK_NETNSID,=0D IFLA_PHYS_PORT_NAME,=0D IFLA_PROTO_DOWN,=0D IFLA_GSO_MAX_SEGS,=0D IFLA_GSO_MAX_SIZE,=0D IFLA_PAD,=0D IFLA_XDP,=0D IFLA_EVENT,=0D IFLA_NEW_NETNSID,=0D IFLA_IF_NETNSID,=0D IFLA_TARGET_NETNSID =3D IFLA_IF_NETNSID,=0D IFLA_CARRIER_UP_COUNT,=0D IFLA_CARRIER_DOWN_COUNT,=0D IFLA_NEW_IFINDEX,=0D IFLA_MIN_MTU,=0D IFLA_MAX_MTU,=0D IFLA_PROP_LIST,=0D IFLA_ALT_IFNAME,=0D IFLA_PERM_ADDRESS,=0D IFLA_PROTO_DOWN_REASON,=0D =0D =0D =0D =0D IFLA_PARENT_DEV_NAME,=0D IFLA_PARENT_DEV_BUS_NAME,=0D IFLA_GRO_MAX_SIZE,=0D =0D __IFLA_MAX=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_PROTO_DOWN_REASON_UNSPEC,=0D IFLA_PROTO_DOWN_REASON_MASK,=0D IFLA_PROTO_DOWN_REASON_VALUE,=0D =0D __IFLA_PROTO_DOWN_REASON_CNT,=0D IFLA_PROTO_DOWN_REASON_MAX =3D __IFLA_PROTO_DOWN_REASON_CNT - 1=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D IFLA_INET_UNSPEC,=0D IFLA_INET_CONF,=0D __IFLA_INET_MAX,=0D };=0D # 426 "./include/uapi/linux/if_link.h"=0D enum {=0D IFLA_INET6_UNSPEC,=0D IFLA_INET6_FLAGS,=0D IFLA_INET6_CONF,=0D IFLA_INET6_STATS,=0D IFLA_INET6_MCAST,=0D IFLA_INET6_CACHEINFO,=0D IFLA_INET6_ICMP6STATS,=0D IFLA_INET6_TOKEN,=0D IFLA_INET6_ADDR_GEN_MODE,=0D IFLA_INET6_RA_MTU,=0D __IFLA_INET6_MAX=0D };=0D =0D =0D =0D enum in6_addr_gen_mode {=0D IN6_ADDR_GEN_MODE_EUI64,=0D IN6_ADDR_GEN_MODE_NONE,=0D IN6_ADDR_GEN_MODE_STABLE_PRIVACY,=0D IN6_ADDR_GEN_MODE_RANDOM,=0D };=0D =0D =0D =0D enum {=0D IFLA_BR_UNSPEC,=0D IFLA_BR_FORWARD_DELAY,=0D IFLA_BR_HELLO_TIME,=0D IFLA_BR_MAX_AGE,=0D IFLA_BR_AGEING_TIME,=0D IFLA_BR_STP_STATE,=0D IFLA_BR_PRIORITY,=0D IFLA_BR_VLAN_FILTERING,=0D IFLA_BR_VLAN_PROTOCOL,=0D IFLA_BR_GROUP_FWD_MASK,=0D IFLA_BR_ROOT_ID,=0D IFLA_BR_BRIDGE_ID,=0D IFLA_BR_ROOT_PORT,=0D IFLA_BR_ROOT_PATH_COST,=0D IFLA_BR_TOPOLOGY_CHANGE,=0D IFLA_BR_TOPOLOGY_CHANGE_DETECTED,=0D IFLA_BR_HELLO_TIMER,=0D IFLA_BR_TCN_TIMER,=0D IFLA_BR_TOPOLOGY_CHANGE_TIMER,=0D IFLA_BR_GC_TIMER,=0D IFLA_BR_GROUP_ADDR,=0D IFLA_BR_FDB_FLUSH,=0D IFLA_BR_MCAST_ROUTER,=0D IFLA_BR_MCAST_SNOOPING,=0D IFLA_BR_MCAST_QUERY_USE_IFADDR,=0D IFLA_BR_MCAST_QUERIER,=0D IFLA_BR_MCAST_HASH_ELASTICITY,=0D IFLA_BR_MCAST_HASH_MAX,=0D IFLA_BR_MCAST_LAST_MEMBER_CNT,=0D IFLA_BR_MCAST_STARTUP_QUERY_CNT,=0D IFLA_BR_MCAST_LAST_MEMBER_INTVL,=0D IFLA_BR_MCAST_MEMBERSHIP_INTVL,=0D IFLA_BR_MCAST_QUERIER_INTVL,=0D IFLA_BR_MCAST_QUERY_INTVL,=0D IFLA_BR_MCAST_QUERY_RESPONSE_INTVL,=0D IFLA_BR_MCAST_STARTUP_QUERY_INTVL,=0D IFLA_BR_NF_CALL_IPTABLES,=0D IFLA_BR_NF_CALL_IP6TABLES,=0D IFLA_BR_NF_CALL_ARPTABLES,=0D IFLA_BR_VLAN_DEFAULT_PVID,=0D IFLA_BR_PAD,=0D IFLA_BR_VLAN_STATS_ENABLED,=0D IFLA_BR_MCAST_STATS_ENABLED,=0D IFLA_BR_MCAST_IGMP_VERSION,=0D IFLA_BR_MCAST_MLD_VERSION,=0D IFLA_BR_VLAN_STATS_PER_PORT,=0D IFLA_BR_MULTI_BOOLOPT,=0D IFLA_BR_MCAST_QUERIER_STATE,=0D __IFLA_BR_MAX,=0D };=0D =0D =0D =0D struct ifla_bridge_id {=0D __u8 prio[2];=0D __u8 addr[6];=0D };=0D =0D enum {=0D BRIDGE_MODE_UNSPEC,=0D BRIDGE_MODE_HAIRPIN,=0D };=0D =0D enum {=0D IFLA_BRPORT_UNSPEC,=0D IFLA_BRPORT_STATE,=0D IFLA_BRPORT_PRIORITY,=0D IFLA_BRPORT_COST,=0D IFLA_BRPORT_MODE,=0D IFLA_BRPORT_GUARD,=0D IFLA_BRPORT_PROTECT,=0D IFLA_BRPORT_FAST_LEAVE,=0D IFLA_BRPORT_LEARNING,=0D IFLA_BRPORT_UNICAST_FLOOD,=0D IFLA_BRPORT_PROXYARP,=0D IFLA_BRPORT_LEARNING_SYNC,=0D IFLA_BRPORT_PROXYARP_WIFI,=0D IFLA_BRPORT_ROOT_ID,=0D IFLA_BRPORT_BRIDGE_ID,=0D IFLA_BRPORT_DESIGNATED_PORT,=0D IFLA_BRPORT_DESIGNATED_COST,=0D IFLA_BRPORT_ID,=0D IFLA_BRPORT_NO,=0D IFLA_BRPORT_TOPOLOGY_CHANGE_ACK,=0D IFLA_BRPORT_CONFIG_PENDING,=0D IFLA_BRPORT_MESSAGE_AGE_TIMER,=0D IFLA_BRPORT_FORWARD_DELAY_TIMER,=0D IFLA_BRPORT_HOLD_TIMER,=0D IFLA_BRPORT_FLUSH,=0D IFLA_BRPORT_MULTICAST_ROUTER,=0D IFLA_BRPORT_PAD,=0D IFLA_BRPORT_MCAST_FLOOD,=0D IFLA_BRPORT_MCAST_TO_UCAST,=0D IFLA_BRPORT_VLAN_TUNNEL,=0D IFLA_BRPORT_BCAST_FLOOD,=0D IFLA_BRPORT_GROUP_FWD_MASK,=0D IFLA_BRPORT_NEIGH_SUPPRESS,=0D IFLA_BRPORT_ISOLATED,=0D IFLA_BRPORT_BACKUP_PORT,=0D IFLA_BRPORT_MRP_RING_OPEN,=0D IFLA_BRPORT_MRP_IN_OPEN,=0D IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,=0D IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,=0D IFLA_BRPORT_LOCKED,=0D __IFLA_BRPORT_MAX=0D };=0D =0D =0D struct ifla_cacheinfo {=0D __u32 max_reasm_len;=0D __u32 tstamp;=0D __u32 reachable_time;=0D __u32 retrans_time;=0D };=0D =0D enum {=0D IFLA_INFO_UNSPEC,=0D IFLA_INFO_KIND,=0D IFLA_INFO_DATA,=0D IFLA_INFO_XSTATS,=0D IFLA_INFO_SLAVE_KIND,=0D IFLA_INFO_SLAVE_DATA,=0D __IFLA_INFO_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D IFLA_VLAN_UNSPEC,=0D IFLA_VLAN_ID,=0D IFLA_VLAN_FLAGS,=0D IFLA_VLAN_EGRESS_QOS,=0D IFLA_VLAN_INGRESS_QOS,=0D IFLA_VLAN_PROTOCOL,=0D __IFLA_VLAN_MAX,=0D };=0D =0D =0D =0D struct ifla_vlan_flags {=0D __u32 flags;=0D __u32 mask;=0D };=0D =0D enum {=0D IFLA_VLAN_QOS_UNSPEC,=0D IFLA_VLAN_QOS_MAPPING,=0D __IFLA_VLAN_QOS_MAX=0D };=0D =0D =0D =0D struct ifla_vlan_qos_mapping {=0D __u32 from;=0D __u32 to;=0D };=0D =0D =0D enum {=0D IFLA_MACVLAN_UNSPEC,=0D IFLA_MACVLAN_MODE,=0D IFLA_MACVLAN_FLAGS,=0D IFLA_MACVLAN_MACADDR_MODE,=0D IFLA_MACVLAN_MACADDR,=0D IFLA_MACVLAN_MACADDR_DATA,=0D IFLA_MACVLAN_MACADDR_COUNT,=0D IFLA_MACVLAN_BC_QUEUE_LEN,=0D IFLA_MACVLAN_BC_QUEUE_LEN_USED,=0D __IFLA_MACVLAN_MAX,=0D };=0D =0D =0D =0D enum macvlan_mode {=0D MACVLAN_MODE_PRIVATE =3D 1,=0D MACVLAN_MODE_VEPA =3D 2,=0D MACVLAN_MODE_BRIDGE =3D 4,=0D MACVLAN_MODE_PASSTHRU =3D 8,=0D MACVLAN_MODE_SOURCE =3D 16,=0D };=0D =0D enum macvlan_macaddr_mode {=0D MACVLAN_MACADDR_ADD,=0D MACVLAN_MACADDR_DEL,=0D MACVLAN_MACADDR_FLUSH,=0D MACVLAN_MACADDR_SET,=0D };=0D =0D =0D =0D =0D =0D enum {=0D IFLA_VRF_UNSPEC,=0D IFLA_VRF_TABLE,=0D __IFLA_VRF_MAX=0D };=0D =0D =0D =0D enum {=0D IFLA_VRF_PORT_UNSPEC,=0D IFLA_VRF_PORT_TABLE,=0D __IFLA_VRF_PORT_MAX=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_MACSEC_UNSPEC,=0D IFLA_MACSEC_SCI,=0D IFLA_MACSEC_PORT,=0D IFLA_MACSEC_ICV_LEN,=0D IFLA_MACSEC_CIPHER_SUITE,=0D IFLA_MACSEC_WINDOW,=0D IFLA_MACSEC_ENCODING_SA,=0D IFLA_MACSEC_ENCRYPT,=0D IFLA_MACSEC_PROTECT,=0D IFLA_MACSEC_INC_SCI,=0D IFLA_MACSEC_ES,=0D IFLA_MACSEC_SCB,=0D IFLA_MACSEC_REPLAY_PROTECT,=0D IFLA_MACSEC_VALIDATION,=0D IFLA_MACSEC_PAD,=0D IFLA_MACSEC_OFFLOAD,=0D __IFLA_MACSEC_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_XFRM_UNSPEC,=0D IFLA_XFRM_LINK,=0D IFLA_XFRM_IF_ID,=0D __IFLA_XFRM_MAX=0D };=0D =0D =0D =0D enum macsec_validation_type {=0D MACSEC_VALIDATE_DISABLED =3D 0,=0D MACSEC_VALIDATE_CHECK =3D 1,=0D MACSEC_VALIDATE_STRICT =3D 2,=0D __MACSEC_VALIDATE_END,=0D MACSEC_VALIDATE_MAX =3D __MACSEC_VALIDATE_END - 1,=0D };=0D =0D enum macsec_offload {=0D MACSEC_OFFLOAD_OFF =3D 0,=0D MACSEC_OFFLOAD_PHY =3D 1,=0D MACSEC_OFFLOAD_MAC =3D 2,=0D __MACSEC_OFFLOAD_END,=0D MACSEC_OFFLOAD_MAX =3D __MACSEC_OFFLOAD_END - 1,=0D };=0D =0D =0D enum {=0D IFLA_IPVLAN_UNSPEC,=0D IFLA_IPVLAN_MODE,=0D IFLA_IPVLAN_FLAGS,=0D __IFLA_IPVLAN_MAX=0D };=0D =0D =0D =0D enum ipvlan_mode {=0D IPVLAN_MODE_L2 =3D 0,=0D IPVLAN_MODE_L3,=0D IPVLAN_MODE_L3S,=0D IPVLAN_MODE_MAX=0D };=0D =0D =0D =0D =0D =0D struct tunnel_msg {=0D __u8 family;=0D __u8 flags;=0D __u16 reserved2;=0D __u32 ifindex;=0D };=0D # 747 "./include/uapi/linux/if_link.h"=0D enum {=0D VNIFILTER_ENTRY_STATS_UNSPEC,=0D VNIFILTER_ENTRY_STATS_RX_BYTES,=0D VNIFILTER_ENTRY_STATS_RX_PKTS,=0D VNIFILTER_ENTRY_STATS_RX_DROPS,=0D VNIFILTER_ENTRY_STATS_RX_ERRORS,=0D VNIFILTER_ENTRY_STATS_TX_BYTES,=0D VNIFILTER_ENTRY_STATS_TX_PKTS,=0D VNIFILTER_ENTRY_STATS_TX_DROPS,=0D VNIFILTER_ENTRY_STATS_TX_ERRORS,=0D VNIFILTER_ENTRY_STATS_PAD,=0D __VNIFILTER_ENTRY_STATS_MAX=0D };=0D =0D =0D enum {=0D VXLAN_VNIFILTER_ENTRY_UNSPEC,=0D VXLAN_VNIFILTER_ENTRY_START,=0D VXLAN_VNIFILTER_ENTRY_END,=0D VXLAN_VNIFILTER_ENTRY_GROUP,=0D VXLAN_VNIFILTER_ENTRY_GROUP6,=0D VXLAN_VNIFILTER_ENTRY_STATS,=0D __VXLAN_VNIFILTER_ENTRY_MAX=0D };=0D =0D =0D enum {=0D VXLAN_VNIFILTER_UNSPEC,=0D VXLAN_VNIFILTER_ENTRY,=0D __VXLAN_VNIFILTER_MAX=0D };=0D =0D =0D enum {=0D IFLA_VXLAN_UNSPEC,=0D IFLA_VXLAN_ID,=0D IFLA_VXLAN_GROUP,=0D IFLA_VXLAN_LINK,=0D IFLA_VXLAN_LOCAL,=0D IFLA_VXLAN_TTL,=0D IFLA_VXLAN_TOS,=0D IFLA_VXLAN_LEARNING,=0D IFLA_VXLAN_AGEING,=0D IFLA_VXLAN_LIMIT,=0D IFLA_VXLAN_PORT_RANGE,=0D IFLA_VXLAN_PROXY,=0D IFLA_VXLAN_RSC,=0D IFLA_VXLAN_L2MISS,=0D IFLA_VXLAN_L3MISS,=0D IFLA_VXLAN_PORT,=0D IFLA_VXLAN_GROUP6,=0D IFLA_VXLAN_LOCAL6,=0D IFLA_VXLAN_UDP_CSUM,=0D IFLA_VXLAN_UDP_ZERO_CSUM6_TX,=0D IFLA_VXLAN_UDP_ZERO_CSUM6_RX,=0D IFLA_VXLAN_REMCSUM_TX,=0D IFLA_VXLAN_REMCSUM_RX,=0D IFLA_VXLAN_GBP,=0D IFLA_VXLAN_REMCSUM_NOPARTIAL,=0D IFLA_VXLAN_COLLECT_METADATA,=0D IFLA_VXLAN_LABEL,=0D IFLA_VXLAN_GPE,=0D IFLA_VXLAN_TTL_INHERIT,=0D IFLA_VXLAN_DF,=0D IFLA_VXLAN_VNIFILTER,=0D __IFLA_VXLAN_MAX=0D };=0D =0D =0D struct ifla_vxlan_port_range {=0D __be16 low;=0D __be16 high;=0D };=0D =0D enum ifla_vxlan_df {=0D VXLAN_DF_UNSET =3D 0,=0D VXLAN_DF_SET,=0D VXLAN_DF_INHERIT,=0D __VXLAN_DF_END,=0D VXLAN_DF_MAX =3D __VXLAN_DF_END - 1,=0D };=0D =0D =0D enum {=0D IFLA_GENEVE_UNSPEC,=0D IFLA_GENEVE_ID,=0D IFLA_GENEVE_REMOTE,=0D IFLA_GENEVE_TTL,=0D IFLA_GENEVE_TOS,=0D IFLA_GENEVE_PORT,=0D IFLA_GENEVE_COLLECT_METADATA,=0D IFLA_GENEVE_REMOTE6,=0D IFLA_GENEVE_UDP_CSUM,=0D IFLA_GENEVE_UDP_ZERO_CSUM6_TX,=0D IFLA_GENEVE_UDP_ZERO_CSUM6_RX,=0D IFLA_GENEVE_LABEL,=0D IFLA_GENEVE_TTL_INHERIT,=0D IFLA_GENEVE_DF,=0D IFLA_GENEVE_INNER_PROTO_INHERIT,=0D __IFLA_GENEVE_MAX=0D };=0D =0D =0D enum ifla_geneve_df {=0D GENEVE_DF_UNSET =3D 0,=0D GENEVE_DF_SET,=0D GENEVE_DF_INHERIT,=0D __GENEVE_DF_END,=0D GENEVE_DF_MAX =3D __GENEVE_DF_END - 1,=0D };=0D =0D =0D enum {=0D IFLA_BAREUDP_UNSPEC,=0D IFLA_BAREUDP_PORT,=0D IFLA_BAREUDP_ETHERTYPE,=0D IFLA_BAREUDP_SRCPORT_MIN,=0D IFLA_BAREUDP_MULTIPROTO_MODE,=0D __IFLA_BAREUDP_MAX=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_PPP_UNSPEC,=0D IFLA_PPP_DEV_FD,=0D __IFLA_PPP_MAX=0D };=0D =0D =0D =0D =0D enum ifla_gtp_role {=0D GTP_ROLE_GGSN =3D 0,=0D GTP_ROLE_SGSN,=0D };=0D =0D enum {=0D IFLA_GTP_UNSPEC,=0D IFLA_GTP_FD0,=0D IFLA_GTP_FD1,=0D IFLA_GTP_PDP_HASHSIZE,=0D IFLA_GTP_ROLE,=0D IFLA_GTP_CREATE_SOCKETS,=0D IFLA_GTP_RESTART_COUNT,=0D __IFLA_GTP_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_BOND_UNSPEC,=0D IFLA_BOND_MODE,=0D IFLA_BOND_ACTIVE_SLAVE,=0D IFLA_BOND_MIIMON,=0D IFLA_BOND_UPDELAY,=0D IFLA_BOND_DOWNDELAY,=0D IFLA_BOND_USE_CARRIER,=0D IFLA_BOND_ARP_INTERVAL,=0D IFLA_BOND_ARP_IP_TARGET,=0D IFLA_BOND_ARP_VALIDATE,=0D IFLA_BOND_ARP_ALL_TARGETS,=0D IFLA_BOND_PRIMARY,=0D IFLA_BOND_PRIMARY_RESELECT,=0D IFLA_BOND_FAIL_OVER_MAC,=0D IFLA_BOND_XMIT_HASH_POLICY,=0D IFLA_BOND_RESEND_IGMP,=0D IFLA_BOND_NUM_PEER_NOTIF,=0D IFLA_BOND_ALL_SLAVES_ACTIVE,=0D IFLA_BOND_MIN_LINKS,=0D IFLA_BOND_LP_INTERVAL,=0D IFLA_BOND_PACKETS_PER_SLAVE,=0D IFLA_BOND_AD_LACP_RATE,=0D IFLA_BOND_AD_SELECT,=0D IFLA_BOND_AD_INFO,=0D IFLA_BOND_AD_ACTOR_SYS_PRIO,=0D IFLA_BOND_AD_USER_PORT_KEY,=0D IFLA_BOND_AD_ACTOR_SYSTEM,=0D IFLA_BOND_TLB_DYNAMIC_LB,=0D IFLA_BOND_PEER_NOTIF_DELAY,=0D IFLA_BOND_AD_LACP_ACTIVE,=0D IFLA_BOND_MISSED_MAX,=0D IFLA_BOND_NS_IP6_TARGET,=0D __IFLA_BOND_MAX,=0D };=0D =0D =0D =0D enum {=0D IFLA_BOND_AD_INFO_UNSPEC,=0D IFLA_BOND_AD_INFO_AGGREGATOR,=0D IFLA_BOND_AD_INFO_NUM_PORTS,=0D IFLA_BOND_AD_INFO_ACTOR_KEY,=0D IFLA_BOND_AD_INFO_PARTNER_KEY,=0D IFLA_BOND_AD_INFO_PARTNER_MAC,=0D __IFLA_BOND_AD_INFO_MAX,=0D };=0D =0D =0D =0D enum {=0D IFLA_BOND_SLAVE_UNSPEC,=0D IFLA_BOND_SLAVE_STATE,=0D IFLA_BOND_SLAVE_MII_STATUS,=0D IFLA_BOND_SLAVE_LINK_FAILURE_COUNT,=0D IFLA_BOND_SLAVE_PERM_HWADDR,=0D IFLA_BOND_SLAVE_QUEUE_ID,=0D IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,=0D IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,=0D IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,=0D __IFLA_BOND_SLAVE_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D IFLA_VF_INFO_UNSPEC,=0D IFLA_VF_INFO,=0D __IFLA_VF_INFO_MAX,=0D };=0D =0D =0D =0D enum {=0D IFLA_VF_UNSPEC,=0D IFLA_VF_MAC,=0D IFLA_VF_VLAN,=0D IFLA_VF_TX_RATE,=0D IFLA_VF_SPOOFCHK,=0D IFLA_VF_LINK_STATE,=0D IFLA_VF_RATE,=0D IFLA_VF_RSS_QUERY_EN,=0D =0D =0D IFLA_VF_STATS,=0D IFLA_VF_TRUST,=0D IFLA_VF_IB_NODE_GUID,=0D IFLA_VF_IB_PORT_GUID,=0D IFLA_VF_VLAN_LIST,=0D IFLA_VF_BROADCAST,=0D __IFLA_VF_MAX,=0D };=0D =0D =0D =0D struct ifla_vf_mac {=0D __u32 vf;=0D __u8 mac[32];=0D };=0D =0D struct ifla_vf_broadcast {=0D __u8 broadcast[32];=0D };=0D =0D struct ifla_vf_vlan {=0D __u32 vf;=0D __u32 vlan;=0D __u32 qos;=0D };=0D =0D enum {=0D IFLA_VF_VLAN_INFO_UNSPEC,=0D IFLA_VF_VLAN_INFO,=0D __IFLA_VF_VLAN_INFO_MAX,=0D };=0D =0D =0D =0D =0D struct ifla_vf_vlan_info {=0D __u32 vf;=0D __u32 vlan;=0D __u32 qos;=0D __be16 vlan_proto;=0D };=0D =0D struct ifla_vf_tx_rate {=0D __u32 vf;=0D __u32 rate;=0D };=0D =0D struct ifla_vf_rate {=0D __u32 vf;=0D __u32 min_tx_rate;=0D __u32 max_tx_rate;=0D };=0D =0D struct ifla_vf_spoofchk {=0D __u32 vf;=0D __u32 setting;=0D };=0D =0D struct ifla_vf_guid {=0D __u32 vf;=0D __u64 guid;=0D };=0D =0D enum {=0D IFLA_VF_LINK_STATE_AUTO,=0D IFLA_VF_LINK_STATE_ENABLE,=0D IFLA_VF_LINK_STATE_DISABLE,=0D __IFLA_VF_LINK_STATE_MAX,=0D };=0D =0D struct ifla_vf_link_state {=0D __u32 vf;=0D __u32 link_state;=0D };=0D =0D struct ifla_vf_rss_query_en {=0D __u32 vf;=0D __u32 setting;=0D };=0D =0D enum {=0D IFLA_VF_STATS_RX_PACKETS,=0D IFLA_VF_STATS_TX_PACKETS,=0D IFLA_VF_STATS_RX_BYTES,=0D IFLA_VF_STATS_TX_BYTES,=0D IFLA_VF_STATS_BROADCAST,=0D IFLA_VF_STATS_MULTICAST,=0D IFLA_VF_STATS_PAD,=0D IFLA_VF_STATS_RX_DROPPED,=0D IFLA_VF_STATS_TX_DROPPED,=0D __IFLA_VF_STATS_MAX,=0D };=0D =0D =0D =0D struct ifla_vf_trust {=0D __u32 vf;=0D __u32 setting;=0D };=0D # 1100 "./include/uapi/linux/if_link.h"=0D enum {=0D IFLA_VF_PORT_UNSPEC,=0D IFLA_VF_PORT,=0D __IFLA_VF_PORT_MAX,=0D };=0D =0D =0D =0D enum {=0D IFLA_PORT_UNSPEC,=0D IFLA_PORT_VF,=0D IFLA_PORT_PROFILE,=0D IFLA_PORT_VSI_TYPE,=0D IFLA_PORT_INSTANCE_UUID,=0D IFLA_PORT_HOST_UUID,=0D IFLA_PORT_REQUEST,=0D IFLA_PORT_RESPONSE,=0D __IFLA_PORT_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D PORT_REQUEST_PREASSOCIATE =3D 0,=0D PORT_REQUEST_PREASSOCIATE_RR,=0D PORT_REQUEST_ASSOCIATE,=0D PORT_REQUEST_DISASSOCIATE,=0D };=0D =0D enum {=0D PORT_VDP_RESPONSE_SUCCESS =3D 0,=0D PORT_VDP_RESPONSE_INVALID_FORMAT,=0D PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,=0D PORT_VDP_RESPONSE_UNUSED_VTID,=0D PORT_VDP_RESPONSE_VTID_VIOLATION,=0D PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,=0D PORT_VDP_RESPONSE_OUT_OF_SYNC,=0D =0D PORT_PROFILE_RESPONSE_SUCCESS =3D 0x100,=0D PORT_PROFILE_RESPONSE_INPROGRESS,=0D PORT_PROFILE_RESPONSE_INVALID,=0D PORT_PROFILE_RESPONSE_BADSTATE,=0D PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,=0D PORT_PROFILE_RESPONSE_ERROR,=0D };=0D =0D struct ifla_port_vsi {=0D __u8 vsi_mgr_id;=0D __u8 vsi_type_id[3];=0D __u8 vsi_type_version;=0D __u8 pad[3];=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_IPOIB_UNSPEC,=0D IFLA_IPOIB_PKEY,=0D IFLA_IPOIB_MODE,=0D IFLA_IPOIB_UMCAST,=0D __IFLA_IPOIB_MAX=0D };=0D =0D enum {=0D IPOIB_MODE_DATAGRAM =3D 0,=0D IPOIB_MODE_CONNECTED =3D 1,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D HSR_PROTOCOL_HSR,=0D HSR_PROTOCOL_PRP,=0D HSR_PROTOCOL_MAX,=0D };=0D =0D enum {=0D IFLA_HSR_UNSPEC,=0D IFLA_HSR_SLAVE1,=0D IFLA_HSR_SLAVE2,=0D IFLA_HSR_MULTICAST_SPEC,=0D IFLA_HSR_SUPERVISION_ADDR,=0D IFLA_HSR_SEQ_NR,=0D IFLA_HSR_VERSION,=0D IFLA_HSR_PROTOCOL,=0D =0D =0D __IFLA_HSR_MAX,=0D };=0D =0D =0D =0D =0D =0D struct if_stats_msg {=0D __u8 family;=0D __u8 pad1;=0D __u16 pad2;=0D __u32 ifindex;=0D __u32 filter_mask;=0D };=0D =0D =0D =0D =0D enum {=0D IFLA_STATS_UNSPEC,=0D IFLA_STATS_LINK_64,=0D IFLA_STATS_LINK_XSTATS,=0D IFLA_STATS_LINK_XSTATS_SLAVE,=0D IFLA_STATS_LINK_OFFLOAD_XSTATS,=0D IFLA_STATS_AF_SPEC,=0D __IFLA_STATS_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D IFLA_STATS_GETSET_UNSPEC,=0D IFLA_STATS_GET_FILTERS,=0D =0D =0D IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS,=0D __IFLA_STATS_GETSET_MAX,=0D };=0D # 1244 "./include/uapi/linux/if_link.h"=0D enum {=0D LINK_XSTATS_TYPE_UNSPEC,=0D LINK_XSTATS_TYPE_BRIDGE,=0D LINK_XSTATS_TYPE_BOND,=0D __LINK_XSTATS_TYPE_MAX=0D };=0D =0D =0D =0D enum {=0D IFLA_OFFLOAD_XSTATS_UNSPEC,=0D IFLA_OFFLOAD_XSTATS_CPU_HIT,=0D IFLA_OFFLOAD_XSTATS_HW_S_INFO,=0D IFLA_OFFLOAD_XSTATS_L3_STATS,=0D __IFLA_OFFLOAD_XSTATS_MAX=0D };=0D =0D =0D enum {=0D IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,=0D IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST,=0D IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED,=0D __IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,=0D };=0D # 1285 "./include/uapi/linux/if_link.h"=0D enum {=0D XDP_ATTACHED_NONE =3D 0,=0D XDP_ATTACHED_DRV,=0D XDP_ATTACHED_SKB,=0D XDP_ATTACHED_HW,=0D XDP_ATTACHED_MULTI,=0D };=0D =0D enum {=0D IFLA_XDP_UNSPEC,=0D IFLA_XDP_FD,=0D IFLA_XDP_ATTACHED,=0D IFLA_XDP_FLAGS,=0D IFLA_XDP_PROG_ID,=0D IFLA_XDP_DRV_PROG_ID,=0D IFLA_XDP_SKB_PROG_ID,=0D IFLA_XDP_HW_PROG_ID,=0D IFLA_XDP_EXPECTED_FD,=0D __IFLA_XDP_MAX,=0D };=0D =0D =0D =0D enum {=0D IFLA_EVENT_NONE,=0D IFLA_EVENT_REBOOT,=0D IFLA_EVENT_FEATURES,=0D IFLA_EVENT_BONDING_FAILOVER,=0D IFLA_EVENT_NOTIFY_PEERS,=0D IFLA_EVENT_IGMP_RESEND,=0D IFLA_EVENT_BONDING_OPTIONS,=0D };=0D =0D =0D =0D enum {=0D IFLA_TUN_UNSPEC,=0D IFLA_TUN_OWNER,=0D IFLA_TUN_GROUP,=0D IFLA_TUN_TYPE,=0D IFLA_TUN_PI,=0D IFLA_TUN_VNET_HDR,=0D IFLA_TUN_PERSIST,=0D IFLA_TUN_MULTI_QUEUE,=0D IFLA_TUN_NUM_QUEUES,=0D IFLA_TUN_NUM_DISABLED_QUEUES,=0D __IFLA_TUN_MAX,=0D };=0D # 1345 "./include/uapi/linux/if_link.h"=0D enum {=0D IFLA_RMNET_UNSPEC,=0D IFLA_RMNET_MUX_ID,=0D IFLA_RMNET_FLAGS,=0D __IFLA_RMNET_MAX,=0D };=0D =0D =0D =0D struct ifla_rmnet_flags {=0D __u32 flags;=0D __u32 mask;=0D };=0D =0D =0D =0D enum {=0D IFLA_MCTP_UNSPEC,=0D IFLA_MCTP_NET,=0D __IFLA_MCTP_MAX,=0D };=0D # 6 "./include/linux/if_link.h" 2=0D =0D =0D =0D struct ifla_vf_stats {=0D __u64 rx_packets;=0D __u64 tx_packets;=0D __u64 rx_bytes;=0D __u64 tx_bytes;=0D __u64 broadcast;=0D __u64 multicast;=0D __u64 rx_dropped;=0D __u64 tx_dropped;=0D };=0D =0D struct ifla_vf_info {=0D __u32 vf;=0D __u8 mac[32];=0D __u32 vlan;=0D __u32 qos;=0D __u32 spoofchk;=0D __u32 linkstate;=0D __u32 min_tx_rate;=0D __u32 max_tx_rate;=0D __u32 rss_query_en;=0D __u32 trusted;=0D __be16 vlan_proto;=0D };=0D # 33 "./include/uapi/linux/netdevice.h" 2=0D # 49 "./include/uapi/linux/netdevice.h"=0D enum {=0D IF_PORT_UNKNOWN =3D 0,=0D IF_PORT_10BASE2,=0D IF_PORT_10BASET,=0D IF_PORT_AUI,=0D IF_PORT_100BASET,=0D IF_PORT_100BASETX,=0D IF_PORT_100BASEFX=0D };=0D # 48 "./include/linux/netdevice.h" 2=0D # 1 "./include/uapi/linux/if_bonding.h" 1=0D # 109 "./include/uapi/linux/if_bonding.h"=0D typedef struct ifbond {=0D __s32 bond_mode;=0D __s32 num_slaves;=0D __s32 miimon;=0D } ifbond;=0D =0D typedef struct ifslave {=0D __s32 slave_id;=0D char slave_name[16];=0D __s8 link;=0D __s8 state;=0D __u32 link_failure_count;=0D } ifslave;=0D =0D struct ad_info {=0D __u16 aggregator_id;=0D __u16 ports;=0D __u16 actor_key;=0D __u16 partner_key;=0D __u8 partner_system[6];=0D };=0D =0D =0D enum {=0D BOND_XSTATS_UNSPEC,=0D BOND_XSTATS_3AD,=0D __BOND_XSTATS_MAX=0D };=0D =0D =0D =0D enum {=0D BOND_3AD_STAT_LACPDU_RX,=0D BOND_3AD_STAT_LACPDU_TX,=0D BOND_3AD_STAT_LACPDU_UNKNOWN_RX,=0D BOND_3AD_STAT_LACPDU_ILLEGAL_RX,=0D BOND_3AD_STAT_MARKER_RX,=0D BOND_3AD_STAT_MARKER_TX,=0D BOND_3AD_STAT_MARKER_RESP_RX,=0D BOND_3AD_STAT_MARKER_RESP_TX,=0D BOND_3AD_STAT_MARKER_UNKNOWN_RX,=0D BOND_3AD_STAT_PAD,=0D __BOND_3AD_STAT_MAX=0D };=0D # 49 "./include/linux/netdevice.h" 2=0D # 1 "./include/uapi/linux/pkt_cls.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/pkt_sched.h" 1=0D # 34 "./include/uapi/linux/pkt_sched.h"=0D struct tc_stats {=0D __u64 bytes;=0D __u32 packets;=0D __u32 drops;=0D __u32 overlimits;=0D =0D __u32 bps;=0D __u32 pps;=0D __u32 qlen;=0D __u32 backlog;=0D };=0D =0D struct tc_estimator {=0D signed char interval;=0D unsigned char ewma_log;=0D };=0D # 84 "./include/uapi/linux/pkt_sched.h"=0D enum tc_link_layer {=0D TC_LINKLAYER_UNAWARE,=0D TC_LINKLAYER_ETHERNET,=0D TC_LINKLAYER_ATM,=0D };=0D =0D =0D struct tc_ratespec {=0D unsigned char cell_log;=0D __u8 linklayer;=0D unsigned short overhead;=0D short cell_align;=0D unsigned short mpu;=0D __u32 rate;=0D };=0D =0D =0D =0D struct tc_sizespec {=0D unsigned char cell_log;=0D unsigned char size_log;=0D short cell_align;=0D int overhead;=0D unsigned int linklayer;=0D unsigned int mpu;=0D unsigned int mtu;=0D unsigned int tsize;=0D };=0D =0D enum {=0D TCA_STAB_UNSPEC,=0D TCA_STAB_BASE,=0D TCA_STAB_DATA,=0D __TCA_STAB_MAX=0D };=0D =0D =0D =0D =0D =0D struct tc_fifo_qopt {=0D __u32 limit;=0D };=0D # 139 "./include/uapi/linux/pkt_sched.h"=0D struct tc_skbprio_qopt {=0D __u32 limit;=0D };=0D =0D =0D =0D =0D =0D =0D struct tc_prio_qopt {=0D int bands;=0D __u8 priomap[15 +1];=0D };=0D =0D =0D =0D struct tc_multiq_qopt {=0D __u16 bands;=0D __u16 max_bands;=0D };=0D # 167 "./include/uapi/linux/pkt_sched.h"=0D struct tc_plug_qopt {=0D # 177 "./include/uapi/linux/pkt_sched.h"=0D int action;=0D __u32 limit;=0D };=0D =0D =0D =0D struct tc_tbf_qopt {=0D struct tc_ratespec rate;=0D struct tc_ratespec peakrate;=0D __u32 limit;=0D __u32 buffer;=0D __u32 mtu;=0D };=0D =0D enum {=0D TCA_TBF_UNSPEC,=0D TCA_TBF_PARMS,=0D TCA_TBF_RTAB,=0D TCA_TBF_PTAB,=0D TCA_TBF_RATE64,=0D TCA_TBF_PRATE64,=0D TCA_TBF_BURST,=0D TCA_TBF_PBURST,=0D TCA_TBF_PAD,=0D __TCA_TBF_MAX,=0D };=0D # 213 "./include/uapi/linux/pkt_sched.h"=0D struct tc_sfq_qopt {=0D unsigned quantum;=0D int perturb_period;=0D __u32 limit;=0D unsigned divisor;=0D unsigned flows;=0D };=0D =0D struct tc_sfqred_stats {=0D __u32 prob_drop;=0D __u32 forced_drop;=0D __u32 prob_mark;=0D __u32 forced_mark;=0D __u32 prob_mark_head;=0D __u32 forced_mark_head;=0D };=0D =0D struct tc_sfq_qopt_v1 {=0D struct tc_sfq_qopt v0;=0D unsigned int depth;=0D unsigned int headdrop;=0D =0D __u32 limit;=0D __u32 qth_min;=0D __u32 qth_max;=0D unsigned char Wlog;=0D unsigned char Plog;=0D unsigned char Scell_log;=0D unsigned char flags;=0D __u32 max_P;=0D =0D struct tc_sfqred_stats stats;=0D };=0D =0D =0D struct tc_sfq_xstats {=0D __s32 allot;=0D };=0D =0D =0D =0D enum {=0D TCA_RED_UNSPEC,=0D TCA_RED_PARMS,=0D TCA_RED_STAB,=0D TCA_RED_MAX_P,=0D TCA_RED_FLAGS,=0D TCA_RED_EARLY_DROP_BLOCK,=0D TCA_RED_MARK_BLOCK,=0D __TCA_RED_MAX,=0D };=0D =0D =0D =0D struct tc_red_qopt {=0D __u32 limit;=0D __u32 qth_min;=0D __u32 qth_max;=0D unsigned char Wlog;=0D unsigned char Plog;=0D unsigned char Scell_log;=0D # 287 "./include/uapi/linux/pkt_sched.h"=0D unsigned char flags;=0D =0D =0D =0D =0D };=0D =0D =0D =0D struct tc_red_xstats {=0D __u32 early;=0D __u32 pdrop;=0D __u32 other;=0D __u32 marked;=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_GRED_UNSPEC,=0D TCA_GRED_PARMS,=0D TCA_GRED_STAB,=0D TCA_GRED_DPS,=0D TCA_GRED_MAX_P,=0D TCA_GRED_LIMIT,=0D TCA_GRED_VQ_LIST,=0D __TCA_GRED_MAX,=0D };=0D =0D =0D =0D enum {=0D TCA_GRED_VQ_ENTRY_UNSPEC,=0D TCA_GRED_VQ_ENTRY,=0D __TCA_GRED_VQ_ENTRY_MAX,=0D };=0D =0D =0D enum {=0D TCA_GRED_VQ_UNSPEC,=0D TCA_GRED_VQ_PAD,=0D TCA_GRED_VQ_DP,=0D TCA_GRED_VQ_STAT_BYTES,=0D TCA_GRED_VQ_STAT_PACKETS,=0D TCA_GRED_VQ_STAT_BACKLOG,=0D TCA_GRED_VQ_STAT_PROB_DROP,=0D TCA_GRED_VQ_STAT_PROB_MARK,=0D TCA_GRED_VQ_STAT_FORCED_DROP,=0D TCA_GRED_VQ_STAT_FORCED_MARK,=0D TCA_GRED_VQ_STAT_PDROP,=0D TCA_GRED_VQ_STAT_OTHER,=0D TCA_GRED_VQ_FLAGS,=0D __TCA_GRED_VQ_MAX=0D };=0D =0D =0D =0D struct tc_gred_qopt {=0D __u32 limit;=0D __u32 qth_min;=0D __u32 qth_max;=0D __u32 DP;=0D __u32 backlog;=0D __u32 qave;=0D __u32 forced;=0D __u32 early;=0D __u32 other;=0D __u32 pdrop;=0D __u8 Wlog;=0D __u8 Plog;=0D __u8 Scell_log;=0D __u8 prio;=0D __u32 packets;=0D __u32 bytesin;=0D };=0D =0D =0D struct tc_gred_sopt {=0D __u32 DPs;=0D __u32 def_DP;=0D __u8 grio;=0D __u8 flags;=0D __u16 pad1;=0D };=0D =0D =0D =0D enum {=0D TCA_CHOKE_UNSPEC,=0D TCA_CHOKE_PARMS,=0D TCA_CHOKE_STAB,=0D TCA_CHOKE_MAX_P,=0D __TCA_CHOKE_MAX,=0D };=0D =0D =0D =0D struct tc_choke_qopt {=0D __u32 limit;=0D __u32 qth_min;=0D __u32 qth_max;=0D unsigned char Wlog;=0D unsigned char Plog;=0D unsigned char Scell_log;=0D unsigned char flags;=0D };=0D =0D struct tc_choke_xstats {=0D __u32 early;=0D __u32 pdrop;=0D __u32 other;=0D __u32 marked;=0D __u32 matched;=0D };=0D =0D =0D =0D =0D =0D =0D struct tc_htb_opt {=0D struct tc_ratespec rate;=0D struct tc_ratespec ceil;=0D __u32 buffer;=0D __u32 cbuffer;=0D __u32 quantum;=0D __u32 level;=0D __u32 prio;=0D };=0D struct tc_htb_glob {=0D __u32 version;=0D __u32 rate2quantum;=0D __u32 defcls;=0D __u32 debug;=0D =0D =0D __u32 direct_pkts;=0D };=0D enum {=0D TCA_HTB_UNSPEC,=0D TCA_HTB_PARMS,=0D TCA_HTB_INIT,=0D TCA_HTB_CTAB,=0D TCA_HTB_RTAB,=0D TCA_HTB_DIRECT_QLEN,=0D TCA_HTB_RATE64,=0D TCA_HTB_CEIL64,=0D TCA_HTB_PAD,=0D TCA_HTB_OFFLOAD,=0D __TCA_HTB_MAX,=0D };=0D =0D =0D =0D struct tc_htb_xstats {=0D __u32 lends;=0D __u32 borrows;=0D __u32 giants;=0D __s32 tokens;=0D __s32 ctokens;=0D };=0D =0D =0D =0D struct tc_hfsc_qopt {=0D __u16 defcls;=0D };=0D =0D struct tc_service_curve {=0D __u32 m1;=0D __u32 d;=0D __u32 m2;=0D };=0D =0D struct tc_hfsc_stats {=0D __u64 work;=0D __u64 rtwork;=0D __u32 period;=0D __u32 level;=0D };=0D =0D enum {=0D TCA_HFSC_UNSPEC,=0D TCA_HFSC_RSC,=0D TCA_HFSC_FSC,=0D TCA_HFSC_USC,=0D __TCA_HFSC_MAX,=0D };=0D # 487 "./include/uapi/linux/pkt_sched.h"=0D struct tc_cbq_lssopt {=0D unsigned char change;=0D unsigned char flags;=0D =0D =0D unsigned char ewma_log;=0D unsigned char level;=0D =0D =0D =0D =0D =0D =0D __u32 maxidle;=0D __u32 minidle;=0D __u32 offtime;=0D __u32 avpkt;=0D };=0D =0D struct tc_cbq_wrropt {=0D unsigned char flags;=0D unsigned char priority;=0D unsigned char cpriority;=0D unsigned char __reserved;=0D __u32 allot;=0D __u32 weight;=0D };=0D =0D struct tc_cbq_ovl {=0D unsigned char strategy;=0D =0D =0D =0D =0D =0D unsigned char priority2;=0D __u16 pad;=0D __u32 penalty;=0D };=0D =0D struct tc_cbq_police {=0D unsigned char police;=0D unsigned char __res1;=0D unsigned short __res2;=0D };=0D =0D struct tc_cbq_fopt {=0D __u32 split;=0D __u32 defmap;=0D __u32 defchange;=0D };=0D =0D struct tc_cbq_xstats {=0D __u32 borrows;=0D __u32 overactions;=0D __s32 avgidle;=0D __s32 undertime;=0D };=0D =0D enum {=0D TCA_CBQ_UNSPEC,=0D TCA_CBQ_LSSOPT,=0D TCA_CBQ_WRROPT,=0D TCA_CBQ_FOPT,=0D TCA_CBQ_OVL_STRATEGY,=0D TCA_CBQ_RATE,=0D TCA_CBQ_RTAB,=0D TCA_CBQ_POLICE,=0D __TCA_CBQ_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_DSMARK_UNSPEC,=0D TCA_DSMARK_INDICES,=0D TCA_DSMARK_DEFAULT_INDEX,=0D TCA_DSMARK_SET_TC_INDEX,=0D TCA_DSMARK_MASK,=0D TCA_DSMARK_VALUE,=0D __TCA_DSMARK_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_ATM_UNSPEC,=0D TCA_ATM_FD,=0D TCA_ATM_PTR,=0D TCA_ATM_HDR,=0D TCA_ATM_EXCESS,=0D TCA_ATM_ADDR,=0D TCA_ATM_STATE,=0D __TCA_ATM_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_NETEM_UNSPEC,=0D TCA_NETEM_CORR,=0D TCA_NETEM_DELAY_DIST,=0D TCA_NETEM_REORDER,=0D TCA_NETEM_CORRUPT,=0D TCA_NETEM_LOSS,=0D TCA_NETEM_RATE,=0D TCA_NETEM_ECN,=0D TCA_NETEM_RATE64,=0D TCA_NETEM_PAD,=0D TCA_NETEM_LATENCY64,=0D TCA_NETEM_JITTER64,=0D TCA_NETEM_SLOT,=0D TCA_NETEM_SLOT_DIST,=0D __TCA_NETEM_MAX,=0D };=0D =0D =0D =0D struct tc_netem_qopt {=0D __u32 latency;=0D __u32 limit;=0D __u32 loss;=0D __u32 gap;=0D __u32 duplicate;=0D __u32 jitter;=0D };=0D =0D struct tc_netem_corr {=0D __u32 delay_corr;=0D __u32 loss_corr;=0D __u32 dup_corr;=0D };=0D =0D struct tc_netem_reorder {=0D __u32 probability;=0D __u32 correlation;=0D };=0D =0D struct tc_netem_corrupt {=0D __u32 probability;=0D __u32 correlation;=0D };=0D =0D struct tc_netem_rate {=0D __u32 rate;=0D __s32 packet_overhead;=0D __u32 cell_size;=0D __s32 cell_overhead;=0D };=0D =0D struct tc_netem_slot {=0D __s64 min_delay;=0D __s64 max_delay;=0D __s32 max_packets;=0D __s32 max_bytes;=0D __s64 dist_delay;=0D __s64 dist_jitter;=0D };=0D =0D enum {=0D NETEM_LOSS_UNSPEC,=0D NETEM_LOSS_GI,=0D NETEM_LOSS_GE,=0D __NETEM_LOSS_MAX=0D };=0D =0D =0D =0D struct tc_netem_gimodel {=0D __u32 p13;=0D __u32 p31;=0D __u32 p32;=0D __u32 p14;=0D __u32 p23;=0D };=0D =0D =0D struct tc_netem_gemodel {=0D __u32 p;=0D __u32 r;=0D __u32 h;=0D __u32 k1;=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_DRR_UNSPEC,=0D TCA_DRR_QUANTUM,=0D __TCA_DRR_MAX=0D };=0D =0D =0D =0D struct tc_drr_stats {=0D __u32 deficit;=0D };=0D =0D =0D =0D =0D =0D enum {=0D TC_MQPRIO_HW_OFFLOAD_NONE,=0D TC_MQPRIO_HW_OFFLOAD_TCS,=0D __TC_MQPRIO_HW_OFFLOAD_MAX=0D };=0D =0D =0D =0D enum {=0D TC_MQPRIO_MODE_DCB,=0D TC_MQPRIO_MODE_CHANNEL,=0D __TC_MQPRIO_MODE_MAX=0D };=0D =0D =0D =0D enum {=0D TC_MQPRIO_SHAPER_DCB,=0D TC_MQPRIO_SHAPER_BW_RATE,=0D __TC_MQPRIO_SHAPER_MAX=0D };=0D =0D =0D =0D struct tc_mqprio_qopt {=0D __u8 num_tc;=0D __u8 prio_tc_map[15 + 1];=0D __u8 hw;=0D __u16 count[16];=0D __u16 offset[16];=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_MQPRIO_UNSPEC,=0D TCA_MQPRIO_MODE,=0D TCA_MQPRIO_SHAPER,=0D TCA_MQPRIO_MIN_RATE64,=0D TCA_MQPRIO_MAX_RATE64,=0D __TCA_MQPRIO_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_SFB_UNSPEC,=0D TCA_SFB_PARMS,=0D __TCA_SFB_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D struct tc_sfb_qopt {=0D __u32 rehash_interval;=0D __u32 warmup_time;=0D __u32 max;=0D __u32 bin_size;=0D __u32 increment;=0D __u32 decrement;=0D __u32 limit;=0D __u32 penalty_rate;=0D __u32 penalty_burst;=0D };=0D =0D struct tc_sfb_xstats {=0D __u32 earlydrop;=0D __u32 penaltydrop;=0D __u32 bucketdrop;=0D __u32 queuedrop;=0D __u32 childdrop;=0D __u32 marked;=0D __u32 maxqlen;=0D __u32 maxprob;=0D __u32 avgprob;=0D };=0D =0D =0D =0D =0D enum {=0D TCA_QFQ_UNSPEC,=0D TCA_QFQ_WEIGHT,=0D TCA_QFQ_LMAX,=0D __TCA_QFQ_MAX=0D };=0D =0D =0D =0D struct tc_qfq_stats {=0D __u32 weight;=0D __u32 lmax;=0D };=0D =0D =0D =0D enum {=0D TCA_CODEL_UNSPEC,=0D TCA_CODEL_TARGET,=0D TCA_CODEL_LIMIT,=0D TCA_CODEL_INTERVAL,=0D TCA_CODEL_ECN,=0D TCA_CODEL_CE_THRESHOLD,=0D __TCA_CODEL_MAX=0D };=0D =0D =0D =0D struct tc_codel_xstats {=0D __u32 maxpacket;=0D __u32 count;=0D =0D =0D __u32 lastcount;=0D __u32 ldelay;=0D __s32 drop_next;=0D __u32 drop_overlimit;=0D __u32 ecn_mark;=0D __u32 dropping;=0D __u32 ce_mark;=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_FQ_CODEL_UNSPEC,=0D TCA_FQ_CODEL_TARGET,=0D TCA_FQ_CODEL_LIMIT,=0D TCA_FQ_CODEL_INTERVAL,=0D TCA_FQ_CODEL_ECN,=0D TCA_FQ_CODEL_FLOWS,=0D TCA_FQ_CODEL_QUANTUM,=0D TCA_FQ_CODEL_CE_THRESHOLD,=0D TCA_FQ_CODEL_DROP_BATCH_SIZE,=0D TCA_FQ_CODEL_MEMORY_LIMIT,=0D TCA_FQ_CODEL_CE_THRESHOLD_SELECTOR,=0D TCA_FQ_CODEL_CE_THRESHOLD_MASK,=0D __TCA_FQ_CODEL_MAX=0D };=0D =0D =0D =0D enum {=0D TCA_FQ_CODEL_XSTATS_QDISC,=0D TCA_FQ_CODEL_XSTATS_CLASS,=0D };=0D =0D struct tc_fq_codel_qd_stats {=0D __u32 maxpacket;=0D __u32 drop_overlimit;=0D =0D =0D __u32 ecn_mark;=0D =0D =0D __u32 new_flow_count;=0D =0D =0D __u32 new_flows_len;=0D __u32 old_flows_len;=0D __u32 ce_mark;=0D __u32 memory_usage;=0D __u32 drop_overmemory;=0D };=0D =0D struct tc_fq_codel_cl_stats {=0D __s32 deficit;=0D __u32 ldelay;=0D =0D =0D __u32 count;=0D __u32 lastcount;=0D __u32 dropping;=0D __s32 drop_next;=0D };=0D =0D struct tc_fq_codel_xstats {=0D __u32 type;=0D union {=0D struct tc_fq_codel_qd_stats qdisc_stats;=0D struct tc_fq_codel_cl_stats class_stats;=0D };=0D };=0D =0D =0D =0D enum {=0D TCA_FQ_UNSPEC,=0D =0D TCA_FQ_PLIMIT,=0D =0D TCA_FQ_FLOW_PLIMIT,=0D =0D TCA_FQ_QUANTUM,=0D =0D TCA_FQ_INITIAL_QUANTUM,=0D =0D TCA_FQ_RATE_ENABLE,=0D =0D TCA_FQ_FLOW_DEFAULT_RATE,=0D =0D TCA_FQ_FLOW_MAX_RATE,=0D =0D TCA_FQ_BUCKETS_LOG,=0D =0D TCA_FQ_FLOW_REFILL_DELAY,=0D =0D TCA_FQ_ORPHAN_MASK,=0D =0D TCA_FQ_LOW_RATE_THRESHOLD,=0D =0D TCA_FQ_CE_THRESHOLD,=0D =0D TCA_FQ_TIMER_SLACK,=0D =0D TCA_FQ_HORIZON,=0D =0D TCA_FQ_HORIZON_DROP,=0D =0D __TCA_FQ_MAX=0D };=0D =0D =0D =0D struct tc_fq_qd_stats {=0D __u64 gc_flows;=0D __u64 highprio_packets;=0D __u64 tcp_retrans;=0D __u64 throttled;=0D __u64 flows_plimit;=0D __u64 pkts_too_long;=0D __u64 allocation_errors;=0D __s64 time_next_delayed_flow;=0D __u32 flows;=0D __u32 inactive_flows;=0D __u32 throttled_flows;=0D __u32 unthrottle_latency_ns;=0D __u64 ce_mark;=0D __u64 horizon_drops;=0D __u64 horizon_caps;=0D };=0D =0D =0D =0D enum {=0D TCA_HHF_UNSPEC,=0D TCA_HHF_BACKLOG_LIMIT,=0D TCA_HHF_QUANTUM,=0D TCA_HHF_HH_FLOWS_LIMIT,=0D TCA_HHF_RESET_TIMEOUT,=0D TCA_HHF_ADMIT_BYTES,=0D TCA_HHF_EVICT_TIMEOUT,=0D TCA_HHF_NON_HH_WEIGHT,=0D __TCA_HHF_MAX=0D };=0D =0D =0D =0D struct tc_hhf_xstats {=0D __u32 drop_overlimit;=0D =0D =0D __u32 hh_overlimit;=0D __u32 hh_tot_count;=0D __u32 hh_cur_count;=0D };=0D =0D =0D enum {=0D TCA_PIE_UNSPEC,=0D TCA_PIE_TARGET,=0D TCA_PIE_LIMIT,=0D TCA_PIE_TUPDATE,=0D TCA_PIE_ALPHA,=0D TCA_PIE_BETA,=0D TCA_PIE_ECN,=0D TCA_PIE_BYTEMODE,=0D TCA_PIE_DQ_RATE_ESTIMATOR,=0D __TCA_PIE_MAX=0D };=0D =0D =0D struct tc_pie_xstats {=0D __u64 prob;=0D __u32 delay;=0D __u32 avg_dq_rate;=0D =0D =0D __u32 dq_rate_estimating;=0D __u32 packets_in;=0D __u32 dropped;=0D __u32 overlimit;=0D =0D =0D __u32 maxq;=0D __u32 ecn_mark;=0D };=0D =0D =0D enum {=0D TCA_FQ_PIE_UNSPEC,=0D TCA_FQ_PIE_LIMIT,=0D TCA_FQ_PIE_FLOWS,=0D TCA_FQ_PIE_TARGET,=0D TCA_FQ_PIE_TUPDATE,=0D TCA_FQ_PIE_ALPHA,=0D TCA_FQ_PIE_BETA,=0D TCA_FQ_PIE_QUANTUM,=0D TCA_FQ_PIE_MEMORY_LIMIT,=0D TCA_FQ_PIE_ECN_PROB,=0D TCA_FQ_PIE_ECN,=0D TCA_FQ_PIE_BYTEMODE,=0D TCA_FQ_PIE_DQ_RATE_ESTIMATOR,=0D __TCA_FQ_PIE_MAX=0D };=0D =0D =0D struct tc_fq_pie_xstats {=0D __u32 packets_in;=0D __u32 dropped;=0D __u32 overlimit;=0D __u32 overmemory;=0D __u32 ecn_mark;=0D __u32 new_flow_count;=0D __u32 new_flows_len;=0D __u32 old_flows_len;=0D __u32 memory_usage;=0D };=0D =0D =0D struct tc_cbs_qopt {=0D __u8 offload;=0D __u8 _pad[3];=0D __s32 hicredit;=0D __s32 locredit;=0D __s32 idleslope;=0D __s32 sendslope;=0D };=0D =0D enum {=0D TCA_CBS_UNSPEC,=0D TCA_CBS_PARMS,=0D __TCA_CBS_MAX,=0D };=0D =0D =0D =0D =0D =0D struct tc_etf_qopt {=0D __s32 delta;=0D __s32 clockid;=0D __u32 flags;=0D =0D =0D =0D };=0D =0D enum {=0D TCA_ETF_UNSPEC,=0D TCA_ETF_PARMS,=0D __TCA_ETF_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_CAKE_UNSPEC,=0D TCA_CAKE_PAD,=0D TCA_CAKE_BASE_RATE64,=0D TCA_CAKE_DIFFSERV_MODE,=0D TCA_CAKE_ATM,=0D TCA_CAKE_FLOW_MODE,=0D TCA_CAKE_OVERHEAD,=0D TCA_CAKE_RTT,=0D TCA_CAKE_TARGET,=0D TCA_CAKE_AUTORATE,=0D TCA_CAKE_MEMORY,=0D TCA_CAKE_NAT,=0D TCA_CAKE_RAW,=0D TCA_CAKE_WASH,=0D TCA_CAKE_MPU,=0D TCA_CAKE_INGRESS,=0D TCA_CAKE_ACK_FILTER,=0D TCA_CAKE_SPLIT_GSO,=0D TCA_CAKE_FWMARK,=0D __TCA_CAKE_MAX=0D };=0D =0D =0D enum {=0D __TCA_CAKE_STATS_INVALID,=0D TCA_CAKE_STATS_PAD,=0D TCA_CAKE_STATS_CAPACITY_ESTIMATE64,=0D TCA_CAKE_STATS_MEMORY_LIMIT,=0D TCA_CAKE_STATS_MEMORY_USED,=0D TCA_CAKE_STATS_AVG_NETOFF,=0D TCA_CAKE_STATS_MIN_NETLEN,=0D TCA_CAKE_STATS_MAX_NETLEN,=0D TCA_CAKE_STATS_MIN_ADJLEN,=0D TCA_CAKE_STATS_MAX_ADJLEN,=0D TCA_CAKE_STATS_TIN_STATS,=0D TCA_CAKE_STATS_DEFICIT,=0D TCA_CAKE_STATS_COBALT_COUNT,=0D TCA_CAKE_STATS_DROPPING,=0D TCA_CAKE_STATS_DROP_NEXT_US,=0D TCA_CAKE_STATS_P_DROP,=0D TCA_CAKE_STATS_BLUE_TIMER_US,=0D __TCA_CAKE_STATS_MAX=0D };=0D =0D =0D enum {=0D __TCA_CAKE_TIN_STATS_INVALID,=0D TCA_CAKE_TIN_STATS_PAD,=0D TCA_CAKE_TIN_STATS_SENT_PACKETS,=0D TCA_CAKE_TIN_STATS_SENT_BYTES64,=0D TCA_CAKE_TIN_STATS_DROPPED_PACKETS,=0D TCA_CAKE_TIN_STATS_DROPPED_BYTES64,=0D TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,=0D TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,=0D TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,=0D TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,=0D TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,=0D TCA_CAKE_TIN_STATS_BACKLOG_BYTES,=0D TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,=0D TCA_CAKE_TIN_STATS_TARGET_US,=0D TCA_CAKE_TIN_STATS_INTERVAL_US,=0D TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,=0D TCA_CAKE_TIN_STATS_WAY_MISSES,=0D TCA_CAKE_TIN_STATS_WAY_COLLISIONS,=0D TCA_CAKE_TIN_STATS_PEAK_DELAY_US,=0D TCA_CAKE_TIN_STATS_AVG_DELAY_US,=0D TCA_CAKE_TIN_STATS_BASE_DELAY_US,=0D TCA_CAKE_TIN_STATS_SPARSE_FLOWS,=0D TCA_CAKE_TIN_STATS_BULK_FLOWS,=0D TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,=0D TCA_CAKE_TIN_STATS_MAX_SKBLEN,=0D TCA_CAKE_TIN_STATS_FLOW_QUANTUM,=0D __TCA_CAKE_TIN_STATS_MAX=0D };=0D =0D =0D =0D enum {=0D CAKE_FLOW_NONE =3D 0,=0D CAKE_FLOW_SRC_IP,=0D CAKE_FLOW_DST_IP,=0D CAKE_FLOW_HOSTS,=0D CAKE_FLOW_FLOWS,=0D CAKE_FLOW_DUAL_SRC,=0D CAKE_FLOW_DUAL_DST,=0D CAKE_FLOW_TRIPLE,=0D CAKE_FLOW_MAX,=0D };=0D =0D enum {=0D CAKE_DIFFSERV_DIFFSERV3 =3D 0,=0D CAKE_DIFFSERV_DIFFSERV4,=0D CAKE_DIFFSERV_DIFFSERV8,=0D CAKE_DIFFSERV_BESTEFFORT,=0D CAKE_DIFFSERV_PRECEDENCE,=0D CAKE_DIFFSERV_MAX=0D };=0D =0D enum {=0D CAKE_ACK_NONE =3D 0,=0D CAKE_ACK_FILTER,=0D CAKE_ACK_AGGRESSIVE,=0D CAKE_ACK_MAX=0D };=0D =0D enum {=0D CAKE_ATM_NONE =3D 0,=0D CAKE_ATM_ATM,=0D CAKE_ATM_PTM,=0D CAKE_ATM_MAX=0D };=0D =0D =0D =0D enum {=0D TC_TAPRIO_CMD_SET_GATES =3D 0x00,=0D TC_TAPRIO_CMD_SET_AND_HOLD =3D 0x01,=0D TC_TAPRIO_CMD_SET_AND_RELEASE =3D 0x02,=0D };=0D =0D enum {=0D TCA_TAPRIO_SCHED_ENTRY_UNSPEC,=0D TCA_TAPRIO_SCHED_ENTRY_INDEX,=0D TCA_TAPRIO_SCHED_ENTRY_CMD,=0D TCA_TAPRIO_SCHED_ENTRY_GATE_MASK,=0D TCA_TAPRIO_SCHED_ENTRY_INTERVAL,=0D __TCA_TAPRIO_SCHED_ENTRY_MAX,=0D };=0D # 1214 "./include/uapi/linux/pkt_sched.h"=0D enum {=0D TCA_TAPRIO_SCHED_UNSPEC,=0D TCA_TAPRIO_SCHED_ENTRY,=0D __TCA_TAPRIO_SCHED_MAX,=0D };=0D # 1235 "./include/uapi/linux/pkt_sched.h"=0D enum {=0D TCA_TAPRIO_ATTR_UNSPEC,=0D TCA_TAPRIO_ATTR_PRIOMAP,=0D TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,=0D TCA_TAPRIO_ATTR_SCHED_BASE_TIME,=0D TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY,=0D TCA_TAPRIO_ATTR_SCHED_CLOCKID,=0D TCA_TAPRIO_PAD,=0D TCA_TAPRIO_ATTR_ADMIN_SCHED,=0D TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME,=0D TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,=0D TCA_TAPRIO_ATTR_FLAGS,=0D TCA_TAPRIO_ATTR_TXTIME_DELAY,=0D __TCA_TAPRIO_ATTR_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_ETS_UNSPEC,=0D TCA_ETS_NBANDS,=0D TCA_ETS_NSTRICT,=0D TCA_ETS_QUANTA,=0D TCA_ETS_QUANTA_BAND,=0D TCA_ETS_PRIOMAP,=0D TCA_ETS_PRIOMAP_BAND,=0D __TCA_ETS_MAX,=0D };=0D # 7 "./include/uapi/linux/pkt_cls.h" 2=0D =0D =0D =0D =0D enum {=0D TCA_ACT_UNSPEC,=0D TCA_ACT_KIND,=0D TCA_ACT_OPTIONS,=0D TCA_ACT_INDEX,=0D TCA_ACT_STATS,=0D TCA_ACT_PAD,=0D TCA_ACT_COOKIE,=0D TCA_ACT_FLAGS,=0D TCA_ACT_HW_STATS,=0D TCA_ACT_USED_HW_STATS,=0D TCA_ACT_IN_HW_COUNT,=0D __TCA_ACT_MAX=0D };=0D # 119 "./include/uapi/linux/pkt_cls.h"=0D enum tca_id {=0D TCA_ID_UNSPEC =3D 0,=0D TCA_ID_POLICE =3D 1,=0D TCA_ID_GACT =3D 5,=0D TCA_ID_IPT =3D 6,=0D TCA_ID_PEDIT =3D 7,=0D TCA_ID_MIRRED =3D 8,=0D TCA_ID_NAT =3D 9,=0D TCA_ID_XT =3D 10,=0D TCA_ID_SKBEDIT =3D 11,=0D TCA_ID_VLAN =3D 12,=0D TCA_ID_BPF =3D 13,=0D TCA_ID_CONNMARK =3D 14,=0D TCA_ID_SKBMOD =3D 15,=0D TCA_ID_CSUM =3D 16,=0D TCA_ID_TUNNEL_KEY =3D 17,=0D TCA_ID_SIMP =3D 22,=0D TCA_ID_IFE =3D 25,=0D TCA_ID_SAMPLE =3D 26,=0D TCA_ID_CTINFO,=0D TCA_ID_MPLS,=0D TCA_ID_CT,=0D TCA_ID_GATE,=0D =0D __TCA_ID_MAX =3D 255=0D };=0D =0D =0D =0D struct tc_police {=0D __u32 index;=0D int action;=0D =0D =0D =0D =0D =0D =0D __u32 limit;=0D __u32 burst;=0D __u32 mtu;=0D struct tc_ratespec rate;=0D struct tc_ratespec peakrate;=0D int refcnt;=0D int bindcnt;=0D __u32 capab;=0D };=0D =0D struct tcf_t {=0D __u64 install;=0D __u64 lastuse;=0D __u64 expires;=0D __u64 firstuse;=0D };=0D =0D struct tc_cnt {=0D int refcnt;=0D int bindcnt;=0D };=0D # 186 "./include/uapi/linux/pkt_cls.h"=0D enum {=0D TCA_POLICE_UNSPEC,=0D TCA_POLICE_TBF,=0D TCA_POLICE_RATE,=0D TCA_POLICE_PEAKRATE,=0D TCA_POLICE_AVRATE,=0D TCA_POLICE_RESULT,=0D TCA_POLICE_TM,=0D TCA_POLICE_PAD,=0D TCA_POLICE_RATE64,=0D TCA_POLICE_PEAKRATE64,=0D TCA_POLICE_PKTRATE64,=0D TCA_POLICE_PKTBURST64,=0D __TCA_POLICE_MAX=0D =0D };=0D # 222 "./include/uapi/linux/pkt_cls.h"=0D enum {=0D TCA_U32_UNSPEC,=0D TCA_U32_CLASSID,=0D TCA_U32_HASH,=0D TCA_U32_LINK,=0D TCA_U32_DIVISOR,=0D TCA_U32_SEL,=0D TCA_U32_POLICE,=0D TCA_U32_ACT,=0D TCA_U32_INDEV,=0D TCA_U32_PCNT,=0D TCA_U32_MARK,=0D TCA_U32_FLAGS,=0D TCA_U32_PAD,=0D __TCA_U32_MAX=0D };=0D =0D =0D =0D struct tc_u32_key {=0D __be32 mask;=0D __be32 val;=0D int off;=0D int offmask;=0D };=0D =0D struct tc_u32_sel {=0D unsigned char flags;=0D unsigned char offshift;=0D unsigned char nkeys;=0D =0D __be16 offmask;=0D __u16 off;=0D short offoff;=0D =0D short hoff;=0D __be32 hmask;=0D struct tc_u32_key keys[0];=0D };=0D =0D struct tc_u32_mark {=0D __u32 val;=0D __u32 mask;=0D __u32 success;=0D };=0D =0D struct tc_u32_pcnt {=0D __u64 rcnt;=0D __u64 rhit;=0D __u64 kcnts[0];=0D };=0D # 286 "./include/uapi/linux/pkt_cls.h"=0D enum {=0D TCA_RSVP_UNSPEC,=0D TCA_RSVP_CLASSID,=0D TCA_RSVP_DST,=0D TCA_RSVP_SRC,=0D TCA_RSVP_PINFO,=0D TCA_RSVP_POLICE,=0D TCA_RSVP_ACT,=0D __TCA_RSVP_MAX=0D };=0D =0D =0D =0D struct tc_rsvp_gpi {=0D __u32 key;=0D __u32 mask;=0D int offset;=0D };=0D =0D struct tc_rsvp_pinfo {=0D struct tc_rsvp_gpi dpi;=0D struct tc_rsvp_gpi spi;=0D __u8 protocol;=0D __u8 tunnelid;=0D __u8 tunnelhdr;=0D __u8 pad;=0D };=0D =0D =0D =0D enum {=0D TCA_ROUTE4_UNSPEC,=0D TCA_ROUTE4_CLASSID,=0D TCA_ROUTE4_TO,=0D TCA_ROUTE4_FROM,=0D TCA_ROUTE4_IIF,=0D TCA_ROUTE4_POLICE,=0D TCA_ROUTE4_ACT,=0D __TCA_ROUTE4_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_FW_UNSPEC,=0D TCA_FW_CLASSID,=0D TCA_FW_POLICE,=0D TCA_FW_INDEV,=0D TCA_FW_ACT,=0D TCA_FW_MASK,=0D __TCA_FW_MAX=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_TCINDEX_UNSPEC,=0D TCA_TCINDEX_HASH,=0D TCA_TCINDEX_MASK,=0D TCA_TCINDEX_SHIFT,=0D TCA_TCINDEX_FALL_THROUGH,=0D TCA_TCINDEX_CLASSID,=0D TCA_TCINDEX_POLICE,=0D TCA_TCINDEX_ACT,=0D __TCA_TCINDEX_MAX=0D };=0D =0D =0D =0D =0D =0D enum {=0D FLOW_KEY_SRC,=0D FLOW_KEY_DST,=0D FLOW_KEY_PROTO,=0D FLOW_KEY_PROTO_SRC,=0D FLOW_KEY_PROTO_DST,=0D FLOW_KEY_IIF,=0D FLOW_KEY_PRIORITY,=0D FLOW_KEY_MARK,=0D FLOW_KEY_NFCT,=0D FLOW_KEY_NFCT_SRC,=0D FLOW_KEY_NFCT_DST,=0D FLOW_KEY_NFCT_PROTO_SRC,=0D FLOW_KEY_NFCT_PROTO_DST,=0D FLOW_KEY_RTCLASSID,=0D FLOW_KEY_SKUID,=0D FLOW_KEY_SKGID,=0D FLOW_KEY_VLAN_TAG,=0D FLOW_KEY_RXHASH,=0D __FLOW_KEY_MAX,=0D };=0D =0D =0D =0D enum {=0D FLOW_MODE_MAP,=0D FLOW_MODE_HASH,=0D };=0D =0D enum {=0D TCA_FLOW_UNSPEC,=0D TCA_FLOW_KEYS,=0D TCA_FLOW_MODE,=0D TCA_FLOW_BASECLASS,=0D TCA_FLOW_RSHIFT,=0D TCA_FLOW_ADDEND,=0D TCA_FLOW_MASK,=0D TCA_FLOW_XOR,=0D TCA_FLOW_DIVISOR,=0D TCA_FLOW_ACT,=0D TCA_FLOW_POLICE,=0D TCA_FLOW_EMATCHES,=0D TCA_FLOW_PERTURB,=0D __TCA_FLOW_MAX=0D };=0D =0D =0D =0D =0D =0D struct tc_basic_pcnt {=0D __u64 rcnt;=0D __u64 rhit;=0D };=0D =0D enum {=0D TCA_BASIC_UNSPEC,=0D TCA_BASIC_CLASSID,=0D TCA_BASIC_EMATCHES,=0D TCA_BASIC_ACT,=0D TCA_BASIC_POLICE,=0D TCA_BASIC_PCNT,=0D TCA_BASIC_PAD,=0D __TCA_BASIC_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_CGROUP_UNSPEC,=0D TCA_CGROUP_ACT,=0D TCA_CGROUP_POLICE,=0D TCA_CGROUP_EMATCHES,=0D __TCA_CGROUP_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_BPF_UNSPEC,=0D TCA_BPF_ACT,=0D TCA_BPF_POLICE,=0D TCA_BPF_CLASSID,=0D TCA_BPF_OPS_LEN,=0D TCA_BPF_OPS,=0D TCA_BPF_FD,=0D TCA_BPF_NAME,=0D TCA_BPF_FLAGS,=0D TCA_BPF_FLAGS_GEN,=0D TCA_BPF_TAG,=0D TCA_BPF_ID,=0D __TCA_BPF_MAX,=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_UNSPEC,=0D TCA_FLOWER_CLASSID,=0D TCA_FLOWER_INDEV,=0D TCA_FLOWER_ACT,=0D TCA_FLOWER_KEY_ETH_DST,=0D TCA_FLOWER_KEY_ETH_DST_MASK,=0D TCA_FLOWER_KEY_ETH_SRC,=0D TCA_FLOWER_KEY_ETH_SRC_MASK,=0D TCA_FLOWER_KEY_ETH_TYPE,=0D TCA_FLOWER_KEY_IP_PROTO,=0D TCA_FLOWER_KEY_IPV4_SRC,=0D TCA_FLOWER_KEY_IPV4_SRC_MASK,=0D TCA_FLOWER_KEY_IPV4_DST,=0D TCA_FLOWER_KEY_IPV4_DST_MASK,=0D TCA_FLOWER_KEY_IPV6_SRC,=0D TCA_FLOWER_KEY_IPV6_SRC_MASK,=0D TCA_FLOWER_KEY_IPV6_DST,=0D TCA_FLOWER_KEY_IPV6_DST_MASK,=0D TCA_FLOWER_KEY_TCP_SRC,=0D TCA_FLOWER_KEY_TCP_DST,=0D TCA_FLOWER_KEY_UDP_SRC,=0D TCA_FLOWER_KEY_UDP_DST,=0D =0D TCA_FLOWER_FLAGS,=0D TCA_FLOWER_KEY_VLAN_ID,=0D TCA_FLOWER_KEY_VLAN_PRIO,=0D TCA_FLOWER_KEY_VLAN_ETH_TYPE,=0D =0D TCA_FLOWER_KEY_ENC_KEY_ID,=0D TCA_FLOWER_KEY_ENC_IPV4_SRC,=0D TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,=0D TCA_FLOWER_KEY_ENC_IPV4_DST,=0D TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,=0D TCA_FLOWER_KEY_ENC_IPV6_SRC,=0D TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,=0D TCA_FLOWER_KEY_ENC_IPV6_DST,=0D TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,=0D =0D TCA_FLOWER_KEY_TCP_SRC_MASK,=0D TCA_FLOWER_KEY_TCP_DST_MASK,=0D TCA_FLOWER_KEY_UDP_SRC_MASK,=0D TCA_FLOWER_KEY_UDP_DST_MASK,=0D TCA_FLOWER_KEY_SCTP_SRC_MASK,=0D TCA_FLOWER_KEY_SCTP_DST_MASK,=0D =0D TCA_FLOWER_KEY_SCTP_SRC,=0D TCA_FLOWER_KEY_SCTP_DST,=0D =0D TCA_FLOWER_KEY_ENC_UDP_SRC_PORT,=0D TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK,=0D TCA_FLOWER_KEY_ENC_UDP_DST_PORT,=0D TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK,=0D =0D TCA_FLOWER_KEY_FLAGS,=0D TCA_FLOWER_KEY_FLAGS_MASK,=0D =0D TCA_FLOWER_KEY_ICMPV4_CODE,=0D TCA_FLOWER_KEY_ICMPV4_CODE_MASK,=0D TCA_FLOWER_KEY_ICMPV4_TYPE,=0D TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,=0D TCA_FLOWER_KEY_ICMPV6_CODE,=0D TCA_FLOWER_KEY_ICMPV6_CODE_MASK,=0D TCA_FLOWER_KEY_ICMPV6_TYPE,=0D TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,=0D =0D TCA_FLOWER_KEY_ARP_SIP,=0D TCA_FLOWER_KEY_ARP_SIP_MASK,=0D TCA_FLOWER_KEY_ARP_TIP,=0D TCA_FLOWER_KEY_ARP_TIP_MASK,=0D TCA_FLOWER_KEY_ARP_OP,=0D TCA_FLOWER_KEY_ARP_OP_MASK,=0D TCA_FLOWER_KEY_ARP_SHA,=0D TCA_FLOWER_KEY_ARP_SHA_MASK,=0D TCA_FLOWER_KEY_ARP_THA,=0D TCA_FLOWER_KEY_ARP_THA_MASK,=0D =0D TCA_FLOWER_KEY_MPLS_TTL,=0D TCA_FLOWER_KEY_MPLS_BOS,=0D TCA_FLOWER_KEY_MPLS_TC,=0D TCA_FLOWER_KEY_MPLS_LABEL,=0D =0D TCA_FLOWER_KEY_TCP_FLAGS,=0D TCA_FLOWER_KEY_TCP_FLAGS_MASK,=0D =0D TCA_FLOWER_KEY_IP_TOS,=0D TCA_FLOWER_KEY_IP_TOS_MASK,=0D TCA_FLOWER_KEY_IP_TTL,=0D TCA_FLOWER_KEY_IP_TTL_MASK,=0D =0D TCA_FLOWER_KEY_CVLAN_ID,=0D TCA_FLOWER_KEY_CVLAN_PRIO,=0D TCA_FLOWER_KEY_CVLAN_ETH_TYPE,=0D =0D TCA_FLOWER_KEY_ENC_IP_TOS,=0D TCA_FLOWER_KEY_ENC_IP_TOS_MASK,=0D TCA_FLOWER_KEY_ENC_IP_TTL,=0D TCA_FLOWER_KEY_ENC_IP_TTL_MASK,=0D =0D TCA_FLOWER_KEY_ENC_OPTS,=0D TCA_FLOWER_KEY_ENC_OPTS_MASK,=0D =0D TCA_FLOWER_IN_HW_COUNT,=0D =0D TCA_FLOWER_KEY_PORT_SRC_MIN,=0D TCA_FLOWER_KEY_PORT_SRC_MAX,=0D TCA_FLOWER_KEY_PORT_DST_MIN,=0D TCA_FLOWER_KEY_PORT_DST_MAX,=0D =0D TCA_FLOWER_KEY_CT_STATE,=0D TCA_FLOWER_KEY_CT_STATE_MASK,=0D TCA_FLOWER_KEY_CT_ZONE,=0D TCA_FLOWER_KEY_CT_ZONE_MASK,=0D TCA_FLOWER_KEY_CT_MARK,=0D TCA_FLOWER_KEY_CT_MARK_MASK,=0D TCA_FLOWER_KEY_CT_LABELS,=0D TCA_FLOWER_KEY_CT_LABELS_MASK,=0D =0D TCA_FLOWER_KEY_MPLS_OPTS,=0D =0D TCA_FLOWER_KEY_HASH,=0D TCA_FLOWER_KEY_HASH_MASK,=0D =0D __TCA_FLOWER_MAX,=0D };=0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_CT_FLAGS_NEW =3D 1 << 0,=0D TCA_FLOWER_KEY_CT_FLAGS_ESTABLISHED =3D 1 << 1,=0D TCA_FLOWER_KEY_CT_FLAGS_RELATED =3D 1 << 2,=0D TCA_FLOWER_KEY_CT_FLAGS_TRACKED =3D 1 << 3,=0D TCA_FLOWER_KEY_CT_FLAGS_INVALID =3D 1 << 4,=0D TCA_FLOWER_KEY_CT_FLAGS_REPLY =3D 1 << 5,=0D __TCA_FLOWER_KEY_CT_FLAGS_MAX,=0D };=0D =0D enum {=0D TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,=0D TCA_FLOWER_KEY_ENC_OPTS_GENEVE,=0D =0D =0D =0D TCA_FLOWER_KEY_ENC_OPTS_VXLAN,=0D =0D =0D =0D TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,=0D =0D =0D =0D TCA_FLOWER_KEY_ENC_OPTS_GTP,=0D =0D =0D =0D __TCA_FLOWER_KEY_ENC_OPTS_MAX,=0D };=0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC,=0D TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS,=0D TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE,=0D TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA,=0D =0D __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,=0D TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP,=0D __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,=0D TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER,=0D TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX,=0D TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR,=0D TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID,=0D __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,=0D TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE,=0D TCA_FLOWER_KEY_ENC_OPT_GTP_QFI,=0D =0D __TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,=0D TCA_FLOWER_KEY_MPLS_OPTS_LSE,=0D __TCA_FLOWER_KEY_MPLS_OPTS_MAX,=0D };=0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_UNSPEC,=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_DEPTH,=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_TTL,=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_BOS,=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_TC,=0D TCA_FLOWER_KEY_MPLS_OPT_LSE_LABEL,=0D __TCA_FLOWER_KEY_MPLS_OPT_LSE_MAX,=0D };=0D =0D =0D =0D =0D enum {=0D TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT =3D (1 << 0),=0D TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST =3D (1 << 1),=0D };=0D =0D =0D =0D =0D =0D struct tc_matchall_pcnt {=0D __u64 rhit;=0D };=0D =0D enum {=0D TCA_MATCHALL_UNSPEC,=0D TCA_MATCHALL_CLASSID,=0D TCA_MATCHALL_ACT,=0D TCA_MATCHALL_FLAGS,=0D TCA_MATCHALL_PCNT,=0D TCA_MATCHALL_PAD,=0D __TCA_MATCHALL_MAX,=0D };=0D =0D =0D =0D =0D =0D struct tcf_ematch_tree_hdr {=0D __u16 nmatches;=0D __u16 progid;=0D };=0D =0D enum {=0D TCA_EMATCH_TREE_UNSPEC,=0D TCA_EMATCH_TREE_HDR,=0D TCA_EMATCH_TREE_LIST,=0D __TCA_EMATCH_TREE_MAX=0D };=0D =0D =0D struct tcf_ematch_hdr {=0D __u16 matchid;=0D __u16 kind;=0D __u16 flags;=0D __u16 pad;=0D };=0D # 763 "./include/uapi/linux/pkt_cls.h"=0D enum {=0D TCF_LAYER_LINK,=0D TCF_LAYER_NETWORK,=0D TCF_LAYER_TRANSPORT,=0D __TCF_LAYER_MAX=0D };=0D # 787 "./include/uapi/linux/pkt_cls.h"=0D enum {=0D TCF_EM_PROG_TC=0D };=0D =0D enum {=0D TCF_EM_OPND_EQ,=0D TCF_EM_OPND_GT,=0D TCF_EM_OPND_LT=0D };=0D # 50 "./include/linux/netdevice.h" 2=0D # 1 "./include/linux/hashtable.h" 1=0D # 34 "./include/linux/hashtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __hash_init(struct hlis= t_head *ht, unsigned int sz)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < sz; i++)=0D ((&ht[i])->first =3D ((void *)0));=0D }=0D # 76 "./include/linux/hashtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool hash_hashed(struct hlis= t_node *node)=0D {=0D return !hlist_unhashed(node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __hash_empty(struct hli= st_head *ht, unsigned int sz)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < sz; i++)=0D if (!hlist_empty(&ht[i]))=0D return false;=0D =0D return true;=0D }=0D # 105 "./include/linux/hashtable.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hash_del(struct hlist_n= ode *node)=0D {=0D hlist_del_init(node);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hash_del_rcu(struct hli= st_node *node)=0D {=0D hlist_del_init_rcu(node);=0D }=0D # 51 "./include/linux/netdevice.h" 2=0D =0D =0D =0D struct netpoll_info;=0D struct device;=0D struct ethtool_ops;=0D struct phy_device;=0D struct dsa_port;=0D struct ip_tunnel_parm;=0D struct macsec_context;=0D struct macsec_ops;=0D =0D struct sfp_bus;=0D =0D struct wireless_dev;=0D =0D struct wpan_dev;=0D struct mpls_dev;=0D =0D struct udp_tunnel_info;=0D struct udp_tunnel_nic_info;=0D struct udp_tunnel_nic;=0D struct bpf_prog;=0D struct xdp_buff;=0D =0D void synchronize_net(void);=0D void netdev_set_default_ethtool_ops(struct net_device *dev,=0D const struct ethtool_ops *ops);=0D # 118 "./include/linux/netdevice.h"=0D enum netdev_tx {=0D __NETDEV_TX_MIN =3D (-((int)(~0U >> 1)) - 1),=0D NETDEV_TX_OK =3D 0x00,=0D NETDEV_TX_BUSY =3D 0x10,=0D };=0D typedef enum netdev_tx netdev_tx_t;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_xmit_complete(int r= c)=0D {=0D =0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(rc < 0x0f), 1))=0D return true;=0D =0D return false;=0D }=0D # 172 "./include/linux/netdevice.h"=0D struct net_device_stats {=0D unsigned long rx_packets;=0D unsigned long tx_packets;=0D unsigned long rx_bytes;=0D unsigned long tx_bytes;=0D unsigned long rx_errors;=0D unsigned long tx_errors;=0D unsigned long rx_dropped;=0D unsigned long tx_dropped;=0D unsigned long multicast;=0D unsigned long collisions;=0D unsigned long rx_length_errors;=0D unsigned long rx_over_errors;=0D unsigned long rx_crc_errors;=0D unsigned long rx_frame_errors;=0D unsigned long rx_fifo_errors;=0D unsigned long rx_missed_errors;=0D unsigned long tx_aborted_errors;=0D unsigned long tx_carrier_errors;=0D unsigned long tx_fifo_errors;=0D unsigned long tx_heartbeat_errors;=0D unsigned long tx_window_errors;=0D unsigned long rx_compressed;=0D unsigned long tx_compressed;=0D };=0D =0D =0D =0D =0D struct net_device_core_stats {=0D unsigned long rx_dropped;=0D unsigned long tx_dropped;=0D unsigned long rx_nohandler;=0D } __attribute__((__aligned__(4 * sizeof(unsigned long))));=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/static_key.h" 1=0D # 212 "./include/linux/netdevice.h" 2=0D extern struct static_key_false rps_needed;=0D extern struct static_key_false rfs_needed;=0D =0D =0D struct neighbour;=0D struct neigh_parms;=0D struct sk_buff;=0D =0D struct netdev_hw_addr {=0D struct list_head list;=0D struct rb_node node;=0D unsigned char addr[32];=0D unsigned char type;=0D =0D =0D =0D =0D bool global_use;=0D int sync_cnt;=0D int refcount;=0D int synced;=0D struct callback_head callback_head;=0D };=0D =0D struct netdev_hw_addr_list {=0D struct list_head list;=0D int count;=0D =0D =0D struct rb_root tree;=0D };=0D # 259 "./include/linux/netdevice.h"=0D struct hh_cache {=0D unsigned int hh_len;=0D seqlock_t hh_lock;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long hh_data[(((32)+(16 -1))&~(16 - 1)) / sizeof(long)];=0D };=0D # 285 "./include/linux/netdevice.h"=0D struct header_ops {=0D int (*create) (struct sk_buff *skb, struct net_device *dev,=0D unsigned short type, const void *daddr,=0D const void *saddr, unsigned int len);=0D int (*parse)(const struct sk_buff *skb, unsigned char *haddr);=0D int (*cache)(const struct neighbour *neigh, struct hh_cache *hh, __be16 ty= pe);=0D void (*cache_update)(struct hh_cache *hh,=0D const struct net_device *dev,=0D const unsigned char *haddr);=0D bool (*validate)(const char *ll_header, unsigned int len);=0D __be16 (*parse_protocol)(const struct sk_buff *skb);=0D };=0D =0D =0D =0D =0D =0D =0D enum netdev_state_t {=0D __LINK_STATE_START,=0D __LINK_STATE_PRESENT,=0D __LINK_STATE_NOCARRIER,=0D __LINK_STATE_LINKWATCH_PENDING,=0D __LINK_STATE_DORMANT,=0D __LINK_STATE_TESTING,=0D };=0D =0D struct gro_list {=0D struct list_head list;=0D int count;=0D };=0D # 326 "./include/linux/netdevice.h"=0D struct napi_struct {=0D =0D =0D =0D =0D =0D =0D struct list_head poll_list;=0D =0D unsigned long state;=0D int weight;=0D int defer_hard_irqs_count;=0D unsigned long gro_bitmask;=0D int (*poll)(struct napi_struct *, int);=0D =0D =0D =0D struct net_device *dev;=0D struct gro_list gro_hash[8];=0D struct sk_buff *skb;=0D struct list_head rx_list;=0D int rx_count;=0D struct hrtimer timer;=0D struct list_head dev_list;=0D struct hlist_node napi_hash_node;=0D unsigned int napi_id;=0D struct task_struct *thread;=0D };=0D =0D enum {=0D NAPI_STATE_SCHED,=0D NAPI_STATE_MISSED,=0D NAPI_STATE_DISABLE,=0D NAPI_STATE_NPSVC,=0D NAPI_STATE_LISTED,=0D NAPI_STATE_NO_BUSY_POLL,=0D NAPI_STATE_IN_BUSY_POLL,=0D NAPI_STATE_PREFER_BUSY_POLL,=0D NAPI_STATE_THREADED,=0D NAPI_STATE_SCHED_THREADED,=0D };=0D =0D enum {=0D NAPIF_STATE_SCHED =3D ((((1UL))) << (NAPI_STATE_SCHED)),=0D NAPIF_STATE_MISSED =3D ((((1UL))) << (NAPI_STATE_MISSED)),=0D NAPIF_STATE_DISABLE =3D ((((1UL))) << (NAPI_STATE_DISABLE)),=0D NAPIF_STATE_NPSVC =3D ((((1UL))) << (NAPI_STATE_NPSVC)),=0D NAPIF_STATE_LISTED =3D ((((1UL))) << (NAPI_STATE_LISTED)),=0D NAPIF_STATE_NO_BUSY_POLL =3D ((((1UL))) << (NAPI_STATE_NO_BUSY_POLL)),=0D NAPIF_STATE_IN_BUSY_POLL =3D ((((1UL))) << (NAPI_STATE_IN_BUSY_POLL)),=0D NAPIF_STATE_PREFER_BUSY_POLL =3D ((((1UL))) << (NAPI_STATE_PREFER_BUSY_POL= L)),=0D NAPIF_STATE_THREADED =3D ((((1UL))) << (NAPI_STATE_THREADED)),=0D NAPIF_STATE_SCHED_THREADED =3D ((((1UL))) << (NAPI_STATE_SCHED_THREADED)),= =0D };=0D =0D enum gro_result {=0D GRO_MERGED,=0D GRO_MERGED_FREE,=0D GRO_HELD,=0D GRO_NORMAL,=0D GRO_CONSUMED,=0D };=0D typedef enum gro_result gro_result_t;=0D # 431 "./include/linux/netdevice.h"=0D enum rx_handler_result {=0D RX_HANDLER_CONSUMED,=0D RX_HANDLER_ANOTHER,=0D RX_HANDLER_EXACT,=0D RX_HANDLER_PASS,=0D };=0D typedef enum rx_handler_result rx_handler_result_t;=0D typedef rx_handler_result_t rx_handler_func_t(struct sk_buff **pskb);=0D =0D void __napi_schedule(struct napi_struct *n);=0D void __napi_schedule_irqoff(struct napi_struct *n);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool napi_disable_pending(st= ruct napi_struct *n)=0D {=0D return arch_test_bit(NAPI_STATE_DISABLE, &n->state);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool napi_prefer_busy_poll(s= truct napi_struct *n)=0D {=0D return arch_test_bit(NAPI_STATE_PREFER_BUSY_POLL, &n->state);=0D }=0D =0D bool napi_schedule_prep(struct napi_struct *n);=0D # 462 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void napi_schedule(struct na= pi_struct *n)=0D {=0D if (napi_schedule_prep(n))=0D __napi_schedule(n);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void napi_schedule_irqoff(st= ruct napi_struct *n)=0D {=0D if (napi_schedule_prep(n))=0D __napi_schedule_irqoff(n);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool napi_reschedule(struct = napi_struct *napi)=0D {=0D if (napi_schedule_prep(napi)) {=0D __napi_schedule(napi);=0D return true;=0D }=0D return false;=0D }=0D =0D bool napi_complete_done(struct napi_struct *n, int work_done);=0D # 499 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool napi_complete(struct na= pi_struct *n)=0D {=0D return napi_complete_done(n, 0);=0D }=0D =0D int dev_set_threaded(struct net_device *dev, bool threaded);=0D # 513 "./include/linux/netdevice.h"=0D void napi_disable(struct napi_struct *n);=0D =0D void napi_enable(struct napi_struct *n);=0D # 525 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void napi_synchronize(const = struct napi_struct *n)=0D {=0D if (1)=0D while (arch_test_bit(NAPI_STATE_SCHED, &n->state))=0D msleep(1);=0D else=0D __asm__ __volatile__("": : :"memory");=0D }=0D # 542 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool napi_if_scheduled_mark_= missed(struct napi_struct *n)=0D {=0D unsigned long val, new;=0D =0D do {=0D val =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_289(void) ; if (!((sizeof(n->state) =3D=3D sizeof(char) || sizeof(n->= state) =3D=3D sizeof(short) || sizeof(n->state) =3D=3D sizeof(int) || sizeo= f(n->state) =3D=3D sizeof(long)) || sizeof(n->state) =3D=3D sizeof(long lon= g))) __compiletime_assert_289(); } while (0); (*(const volatile typeof( _Ge= neric((n->state), char: (char)0, unsigned char: (unsigned char)0, signed ch= ar: (signed char)0, unsigned short: (unsigned short)0, signed short: (signe= d short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsign= ed long: (unsigned long)0, signed long: (signed long)0, unsigned long long:= (unsigned long long)0, signed long long: (signed long long)0, default: (n-= >state))) *)&(n->state)); });=0D if (val & NAPIF_STATE_DISABLE)=0D return true;=0D =0D if (!(val & NAPIF_STATE_SCHED))=0D return false;=0D =0D new =3D val | NAPIF_STATE_MISSED;=0D } while (({ typeof(&n->state) __ai_ptr =3D (&n->state); do { } while (0); = instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_= ptr)) _o_ =3D (val); __typeof__(*(__ai_ptr)) _n_ =3D (new); (__typeof__(*(_= _ai_ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D ((__ai_ptr)); __typeof__(*((= __ai_ptr))) __old =3D (_o_); __typeof__(*((__ai_ptr))) __new =3D (_n_); __t= ypeof__(*((__ai_ptr))) __ret; register unsigned int __rc; switch (sizeof(*(= __ai_ptr))) { case 4: __asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0, = %z3, 1f\n" " sc.w.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fence rw, rw\n" "1:\= n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "= rJ" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( "0: lr.d %0,= %2\n" " bne %0, %z3, 1f\n" " sc.d.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fen= ce rw, rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ"= (__old), "rJ" (__new) : "memory"); break; default: do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_290(void) ; if (!(!(1))) __com= piletime_assert_290(); } while (0); } __ret; }); }); }) !=3D val);=0D =0D return true;=0D }=0D =0D enum netdev_queue_state_t {=0D __QUEUE_STATE_DRV_XOFF,=0D __QUEUE_STATE_STACK_XOFF,=0D __QUEUE_STATE_FROZEN,=0D };=0D # 586 "./include/linux/netdevice.h"=0D struct netdev_queue {=0D =0D =0D =0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D =0D struct Qdisc *qdisc;=0D struct Qdisc *qdisc_sleeping;=0D =0D struct kobject kobj;=0D =0D =0D =0D =0D unsigned long tx_maxrate;=0D =0D =0D =0D =0D atomic_long_t trans_timeout;=0D =0D =0D struct net_device *sb_dev;=0D =0D =0D =0D =0D =0D =0D spinlock_t _xmit_lock __attribute__((__aligned__((1 << 6))));=0D int xmit_lock_owner;=0D =0D =0D =0D unsigned long trans_start;=0D =0D unsigned long state;=0D =0D =0D struct dql dql;=0D =0D } __attribute__((__aligned__((1 << 6))));=0D =0D extern int sysctl_fb_tunnels_only_for_init_net;=0D extern int sysctl_devconf_inherit_init_net;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool net_has_fallback_tunnel= s(const struct net *net)=0D {=0D return !1 ||=0D !sysctl_fb_tunnels_only_for_init_net ||=0D (net =3D=3D &init_net && sysctl_fb_tunnels_only_for_init_net =3D=3D= 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int netdev_queue_numa_node_r= ead(const struct netdev_queue *q)=0D {=0D =0D =0D =0D return (-1);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_queue_numa_node_= write(struct netdev_queue *q, int node)=0D {=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D struct rps_map {=0D unsigned int len;=0D struct callback_head rcu;=0D u16 cpus[];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct rps_dev_flow {=0D u16 cpu;=0D u16 filter;=0D unsigned int last_qtail;=0D };=0D =0D =0D =0D =0D =0D struct rps_dev_flow_table {=0D unsigned int mask;=0D struct callback_head rcu;=0D struct rps_dev_flow flows[];=0D };=0D # 706 "./include/linux/netdevice.h"=0D struct rps_sock_flow_table {=0D u32 mask;=0D =0D u32 ents[] __attribute__((__aligned__((1 << 6))));=0D };=0D =0D =0D =0D =0D extern u32 rps_cpu_mask;=0D extern struct rps_sock_flow_table *rps_sock_flow_table;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rps_record_sock_flow(st= ruct rps_sock_flow_table *table,=0D u32 hash)=0D {=0D if (table && hash) {=0D unsigned int index =3D hash & table->mask;=0D u32 val =3D hash & ~rps_cpu_mask;=0D =0D =0D val |=3D (((struct thread_info *)get_current())->cpu);=0D =0D if (table->ents[index] !=3D val)=0D table->ents[index] =3D val;=0D }=0D }=0D =0D =0D bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index, u32 flow_id= ,=0D u16 filter_id);=0D =0D =0D =0D =0D struct netdev_rx_queue {=0D struct xdp_rxq_info xdp_rxq;=0D =0D struct rps_map *rps_map;=0D struct rps_dev_flow_table *rps_flow_table;=0D =0D struct kobject kobj;=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D =0D =0D =0D =0D } __attribute__((__aligned__((1 << 6))));=0D =0D =0D =0D =0D struct rx_queue_attribute {=0D struct attribute attr;=0D ssize_t (*show)(struct netdev_rx_queue *queue, char *buf);=0D ssize_t (*store)(struct netdev_rx_queue *queue,=0D const char *buf, size_t len);=0D };=0D =0D =0D enum xps_map_type {=0D XPS_CPUS =3D 0,=0D XPS_RXQS,=0D XPS_MAPS_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D struct xps_map {=0D unsigned int len;=0D unsigned int alloc_len;=0D struct callback_head rcu;=0D u16 queues[];=0D };=0D # 798 "./include/linux/netdevice.h"=0D struct xps_dev_maps {=0D struct callback_head rcu;=0D unsigned int nr_ids;=0D s16 num_tc;=0D struct xps_map *attr_map[];=0D };=0D # 816 "./include/linux/netdevice.h"=0D struct netdev_tc_txq {=0D u16 count;=0D u16 offset;=0D };=0D # 843 "./include/linux/netdevice.h"=0D struct netdev_phys_item_id {=0D unsigned char id[32];=0D unsigned char id_len;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netdev_phys_item_id_sam= e(struct netdev_phys_item_id *a,=0D struct netdev_phys_item_id *b)=0D {=0D return a->id_len =3D=3D b->id_len &&=0D memcmp(a->id, b->id, a->id_len) =3D=3D 0;=0D }=0D =0D typedef u16 (*select_queue_fallback_t)(struct net_device *dev,=0D struct sk_buff *skb,=0D struct net_device *sb_dev);=0D =0D enum net_device_path_type {=0D DEV_PATH_ETHERNET =3D 0,=0D DEV_PATH_VLAN,=0D DEV_PATH_BRIDGE,=0D DEV_PATH_PPPOE,=0D DEV_PATH_DSA,=0D };=0D =0D struct net_device_path {=0D enum net_device_path_type type;=0D const struct net_device *dev;=0D union {=0D struct {=0D u16 id;=0D __be16 proto;=0D u8 h_dest[6];=0D } encap;=0D struct {=0D enum {=0D DEV_PATH_BR_VLAN_KEEP,=0D DEV_PATH_BR_VLAN_TAG,=0D DEV_PATH_BR_VLAN_UNTAG,=0D DEV_PATH_BR_VLAN_UNTAG_HW,=0D } vlan_mode;=0D u16 vlan_id;=0D __be16 vlan_proto;=0D } bridge;=0D struct {=0D int port;=0D u16 proto;=0D } dsa;=0D };=0D };=0D =0D =0D =0D =0D struct net_device_path_stack {=0D int num_paths;=0D struct net_device_path path[5];=0D };=0D =0D struct net_device_path_ctx {=0D const struct net_device *dev;=0D const u8 *daddr;=0D =0D int num_vlans;=0D struct {=0D u16 id;=0D __be16 proto;=0D } vlan[2];=0D };=0D =0D enum tc_setup_type {=0D TC_SETUP_QDISC_MQPRIO,=0D TC_SETUP_CLSU32,=0D TC_SETUP_CLSFLOWER,=0D TC_SETUP_CLSMATCHALL,=0D TC_SETUP_CLSBPF,=0D TC_SETUP_BLOCK,=0D TC_SETUP_QDISC_CBS,=0D TC_SETUP_QDISC_RED,=0D TC_SETUP_QDISC_PRIO,=0D TC_SETUP_QDISC_MQ,=0D TC_SETUP_QDISC_ETF,=0D TC_SETUP_ROOT_QDISC,=0D TC_SETUP_QDISC_GRED,=0D TC_SETUP_QDISC_TAPRIO,=0D TC_SETUP_FT,=0D TC_SETUP_QDISC_ETS,=0D TC_SETUP_QDISC_TBF,=0D TC_SETUP_QDISC_FIFO,=0D TC_SETUP_QDISC_HTB,=0D TC_SETUP_ACT,=0D };=0D =0D =0D =0D =0D enum bpf_netdev_command {=0D =0D =0D =0D =0D =0D =0D =0D XDP_SETUP_PROG,=0D XDP_SETUP_PROG_HW,=0D =0D BPF_OFFLOAD_MAP_ALLOC,=0D BPF_OFFLOAD_MAP_FREE,=0D XDP_SETUP_XSK_POOL,=0D };=0D =0D struct bpf_prog_offload_ops;=0D struct netlink_ext_ack;=0D struct xdp_umem;=0D struct xdp_dev_bulk_queue;=0D struct bpf_xdp_link;=0D =0D enum bpf_xdp_mode {=0D XDP_MODE_SKB =3D 0,=0D XDP_MODE_DRV =3D 1,=0D XDP_MODE_HW =3D 2,=0D __MAX_XDP_MODE=0D };=0D =0D struct bpf_xdp_entity {=0D struct bpf_prog *prog;=0D struct bpf_xdp_link *link;=0D };=0D =0D struct netdev_bpf {=0D enum bpf_netdev_command command;=0D union {=0D =0D struct {=0D u32 flags;=0D struct bpf_prog *prog;=0D struct netlink_ext_ack *extack;=0D };=0D =0D struct {=0D struct bpf_offloaded_map *offmap;=0D };=0D =0D struct {=0D struct xsk_buff_pool *pool;=0D u16 queue_id;=0D } xsk;=0D };=0D };=0D # 1008 "./include/linux/netdevice.h"=0D struct dev_ifalias {=0D struct callback_head rcuhead;=0D char ifalias[];=0D };=0D =0D struct devlink;=0D struct tlsdev_ops;=0D =0D struct netdev_name_node {=0D struct hlist_node hlist;=0D struct list_head list;=0D struct net_device *dev;=0D const char *name;=0D };=0D =0D int netdev_name_node_alt_create(struct net_device *dev, const char *name);= =0D int netdev_name_node_alt_destroy(struct net_device *dev, const char *name);= =0D =0D struct netdev_net_notifier {=0D struct list_head list;=0D struct notifier_block *nb;=0D };=0D # 1357 "./include/linux/netdevice.h"=0D struct net_device_ops {=0D int (*ndo_init)(struct net_device *dev);=0D void (*ndo_uninit)(struct net_device *dev);=0D int (*ndo_open)(struct net_device *dev);=0D int (*ndo_stop)(struct net_device *dev);=0D netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,=0D struct net_device *dev);=0D netdev_features_t (*ndo_features_check)(struct sk_buff *skb,=0D struct net_device *dev,=0D netdev_features_t features);=0D u16 (*ndo_select_queue)(struct net_device *dev,=0D struct sk_buff *skb,=0D struct net_device *sb_dev);=0D void (*ndo_change_rx_flags)(struct net_device *dev,=0D int flags);=0D void (*ndo_set_rx_mode)(struct net_device *dev);=0D int (*ndo_set_mac_address)(struct net_device *dev,=0D void *addr);=0D int (*ndo_validate_addr)(struct net_device *dev);=0D int (*ndo_do_ioctl)(struct net_device *dev,=0D struct ifreq *ifr, int cmd);=0D int (*ndo_eth_ioctl)(struct net_device *dev,=0D struct ifreq *ifr, int cmd);=0D int (*ndo_siocbond)(struct net_device *dev,=0D struct ifreq *ifr, int cmd);=0D int (*ndo_siocwandev)(struct net_device *dev,=0D struct if_settings *ifs);=0D int (*ndo_siocdevprivate)(struct net_device *dev,=0D struct ifreq *ifr,=0D void *data, int cmd);=0D int (*ndo_set_config)(struct net_device *dev,=0D struct ifmap *map);=0D int (*ndo_change_mtu)(struct net_device *dev,=0D int new_mtu);=0D int (*ndo_neigh_setup)(struct net_device *dev,=0D struct neigh_parms *);=0D void (*ndo_tx_timeout) (struct net_device *dev,=0D unsigned int txqueue);=0D =0D void (*ndo_get_stats64)(struct net_device *dev,=0D struct rtnl_link_stats64 *storage);=0D bool (*ndo_has_offload_stats)(const struct net_device *dev, int attr_id);= =0D int (*ndo_get_offload_stats)(int attr_id,=0D const struct net_device *dev,=0D void *attr_data);=0D struct net_device_stats* (*ndo_get_stats)(struct net_device *dev);=0D =0D int (*ndo_vlan_rx_add_vid)(struct net_device *dev,=0D __be16 proto, u16 vid);=0D int (*ndo_vlan_rx_kill_vid)(struct net_device *dev,=0D __be16 proto, u16 vid);=0D =0D =0D =0D =0D =0D =0D int (*ndo_set_vf_mac)(struct net_device *dev,=0D int queue, u8 *mac);=0D int (*ndo_set_vf_vlan)(struct net_device *dev,=0D int queue, u16 vlan,=0D u8 qos, __be16 proto);=0D int (*ndo_set_vf_rate)(struct net_device *dev,=0D int vf, int min_tx_rate,=0D int max_tx_rate);=0D int (*ndo_set_vf_spoofchk)(struct net_device *dev,=0D int vf, bool setting);=0D int (*ndo_set_vf_trust)(struct net_device *dev,=0D int vf, bool setting);=0D int (*ndo_get_vf_config)(struct net_device *dev,=0D int vf,=0D struct ifla_vf_info *ivf);=0D int (*ndo_set_vf_link_state)(struct net_device *dev,=0D int vf, int link_state);=0D int (*ndo_get_vf_stats)(struct net_device *dev,=0D int vf,=0D struct ifla_vf_stats=0D *vf_stats);=0D int (*ndo_set_vf_port)(struct net_device *dev,=0D int vf,=0D struct nlattr *port[]);=0D int (*ndo_get_vf_port)(struct net_device *dev,=0D int vf, struct sk_buff *skb);=0D int (*ndo_get_vf_guid)(struct net_device *dev,=0D int vf,=0D struct ifla_vf_guid *node_guid,=0D struct ifla_vf_guid *port_guid);=0D int (*ndo_set_vf_guid)(struct net_device *dev,=0D int vf, u64 guid,=0D int guid_type);=0D int (*ndo_set_vf_rss_query_en)(=0D struct net_device *dev,=0D int vf, bool setting);=0D int (*ndo_setup_tc)(struct net_device *dev,=0D enum tc_setup_type type,=0D void *type_data);=0D # 1478 "./include/linux/netdevice.h"=0D int (*ndo_rx_flow_steer)(struct net_device *dev,=0D const struct sk_buff *skb,=0D u16 rxq_index,=0D u32 flow_id);=0D =0D int (*ndo_add_slave)(struct net_device *dev,=0D struct net_device *slave_dev,=0D struct netlink_ext_ack *extack);=0D int (*ndo_del_slave)(struct net_device *dev,=0D struct net_device *slave_dev);=0D struct net_device* (*ndo_get_xmit_slave)(struct net_device *dev,=0D struct sk_buff *skb,=0D bool all_slaves);=0D struct net_device* (*ndo_sk_get_lower_dev)(struct net_device *dev,=0D struct sock *sk);=0D netdev_features_t (*ndo_fix_features)(struct net_device *dev,=0D netdev_features_t features);=0D int (*ndo_set_features)(struct net_device *dev,=0D netdev_features_t features);=0D int (*ndo_neigh_construct)(struct net_device *dev,=0D struct neighbour *n);=0D void (*ndo_neigh_destroy)(struct net_device *dev,=0D struct neighbour *n);=0D =0D int (*ndo_fdb_add)(struct ndmsg *ndm,=0D struct nlattr *tb[],=0D struct net_device *dev,=0D const unsigned char *addr,=0D u16 vid,=0D u16 flags,=0D struct netlink_ext_ack *extack);=0D int (*ndo_fdb_del)(struct ndmsg *ndm,=0D struct nlattr *tb[],=0D struct net_device *dev,=0D const unsigned char *addr,=0D u16 vid);=0D int (*ndo_fdb_dump)(struct sk_buff *skb,=0D struct netlink_callback *cb,=0D struct net_device *dev,=0D struct net_device *filter_dev,=0D int *idx);=0D int (*ndo_fdb_get)(struct sk_buff *skb,=0D struct nlattr *tb[],=0D struct net_device *dev,=0D const unsigned char *addr,=0D u16 vid, u32 portid, u32 seq,=0D struct netlink_ext_ack *extack);=0D int (*ndo_bridge_setlink)(struct net_device *dev,=0D struct nlmsghdr *nlh,=0D u16 flags,=0D struct netlink_ext_ack *extack);=0D int (*ndo_bridge_getlink)(struct sk_buff *skb,=0D u32 pid, u32 seq,=0D struct net_device *dev,=0D u32 filter_mask,=0D int nlflags);=0D int (*ndo_bridge_dellink)(struct net_device *dev,=0D struct nlmsghdr *nlh,=0D u16 flags);=0D int (*ndo_change_carrier)(struct net_device *dev,=0D bool new_carrier);=0D int (*ndo_get_phys_port_id)(struct net_device *dev,=0D struct netdev_phys_item_id *ppid);=0D int (*ndo_get_port_parent_id)(struct net_device *dev,=0D struct netdev_phys_item_id *ppid);=0D int (*ndo_get_phys_port_name)(struct net_device *dev,=0D char *name, size_t len);=0D void* (*ndo_dfwd_add_station)(struct net_device *pdev,=0D struct net_device *dev);=0D void (*ndo_dfwd_del_station)(struct net_device *pdev,=0D void *priv);=0D =0D int (*ndo_set_tx_maxrate)(struct net_device *dev,=0D int queue_index,=0D u32 maxrate);=0D int (*ndo_get_iflink)(const struct net_device *dev);=0D int (*ndo_fill_metadata_dst)(struct net_device *dev,=0D struct sk_buff *skb);=0D void (*ndo_set_rx_headroom)(struct net_device *dev,=0D int needed_headroom);=0D int (*ndo_bpf)(struct net_device *dev,=0D struct netdev_bpf *bpf);=0D int (*ndo_xdp_xmit)(struct net_device *dev, int n,=0D struct xdp_frame **xdp,=0D u32 flags);=0D struct net_device * (*ndo_xdp_get_xmit_slave)(struct net_device *dev,=0D struct xdp_buff *xdp);=0D int (*ndo_xsk_wakeup)(struct net_device *dev,=0D u32 queue_id, u32 flags);=0D struct devlink_port * (*ndo_get_devlink_port)(struct net_device *dev);=0D int (*ndo_tunnel_ctl)(struct net_device *dev,=0D struct ip_tunnel_parm *p, int cmd);=0D struct net_device * (*ndo_get_peer_dev)(struct net_device *dev);=0D int (*ndo_fill_forward_path)(struct net_device_path_ctx *ctx,=0D struct net_device_= path *path);=0D };=0D # 1624 "./include/linux/netdevice.h"=0D enum netdev_priv_flags {=0D IFF_802_1Q_VLAN =3D 1<<0,=0D IFF_EBRIDGE =3D 1<<1,=0D IFF_BONDING =3D 1<<2,=0D IFF_ISATAP =3D 1<<3,=0D IFF_WAN_HDLC =3D 1<<4,=0D IFF_XMIT_DST_RELEASE =3D 1<<5,=0D IFF_DONT_BRIDGE =3D 1<<6,=0D IFF_DISABLE_NETPOLL =3D 1<<7,=0D IFF_MACVLAN_PORT =3D 1<<8,=0D IFF_BRIDGE_PORT =3D 1<<9,=0D IFF_OVS_DATAPATH =3D 1<<10,=0D IFF_TX_SKB_SHARING =3D 1<<11,=0D IFF_UNICAST_FLT =3D 1<<12,=0D IFF_TEAM_PORT =3D 1<<13,=0D IFF_SUPP_NOFCS =3D 1<<14,=0D IFF_LIVE_ADDR_CHANGE =3D 1<<15,=0D IFF_MACVLAN =3D 1<<16,=0D IFF_XMIT_DST_RELEASE_PERM =3D 1<<17,=0D IFF_L3MDEV_MASTER =3D 1<<18,=0D IFF_NO_QUEUE =3D 1<<19,=0D IFF_OPENVSWITCH =3D 1<<20,=0D IFF_L3MDEV_SLAVE =3D 1<<21,=0D IFF_TEAM =3D 1<<22,=0D IFF_RXFH_CONFIGURED =3D 1<<23,=0D IFF_PHONY_HEADROOM =3D 1<<24,=0D IFF_MACSEC =3D 1<<25,=0D IFF_NO_RX_HANDLER =3D 1<<26,=0D IFF_FAILOVER =3D 1<<27,=0D IFF_FAILOVER_SLAVE =3D 1<<28,=0D IFF_L3MDEV_RX_HANDLER =3D 1<<29,=0D IFF_LIVE_RENAME_OK =3D 1<<30,=0D IFF_TX_SKB_NO_LINEAR =3D 1<<31,=0D IFF_CHANGE_PROTO_DOWN =3D ((((1ULL))) << (32)),=0D };=0D # 1694 "./include/linux/netdevice.h"=0D enum netdev_ml_priv_type {=0D ML_PRIV_NONE,=0D ML_PRIV_CAN,=0D };=0D # 1966 "./include/linux/netdevice.h"=0D struct net_device {=0D char name[16];=0D struct netdev_name_node *name_node;=0D struct dev_ifalias *ifalias;=0D =0D =0D =0D =0D unsigned long mem_end;=0D unsigned long mem_start;=0D unsigned long base_addr;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long state;=0D =0D struct list_head dev_list;=0D struct list_head napi_list;=0D struct list_head unreg_list;=0D struct list_head close_list;=0D struct list_head ptype_all;=0D struct list_head ptype_specific;=0D =0D struct {=0D struct list_head upper;=0D struct list_head lower;=0D } adj_list;=0D =0D =0D unsigned int flags;=0D unsigned long long priv_flags;=0D const struct net_device_ops *netdev_ops;=0D int ifindex;=0D unsigned short gflags;=0D unsigned short hard_header_len;=0D =0D =0D =0D =0D =0D =0D unsigned int mtu;=0D unsigned short needed_headroom;=0D unsigned short needed_tailroom;=0D =0D netdev_features_t features;=0D netdev_features_t hw_features;=0D netdev_features_t wanted_features;=0D netdev_features_t vlan_features;=0D netdev_features_t hw_enc_features;=0D netdev_features_t mpls_features;=0D netdev_features_t gso_partial_features;=0D =0D unsigned int min_mtu;=0D unsigned int max_mtu;=0D unsigned short type;=0D unsigned char min_header_len;=0D unsigned char name_assign_type;=0D =0D int group;=0D =0D struct net_device_stats stats;=0D =0D struct net_device_core_stats *core_stats;=0D =0D =0D atomic_t carrier_up_count;=0D atomic_t carrier_down_count;=0D =0D =0D =0D =0D =0D const struct ethtool_ops *ethtool_ops;=0D =0D =0D =0D =0D const struct ndisc_ops *ndisc_ops;=0D # 2059 "./include/linux/netdevice.h"=0D const struct header_ops *header_ops;=0D =0D unsigned char operstate;=0D unsigned char link_mode;=0D =0D unsigned char if_port;=0D unsigned char dma;=0D =0D =0D unsigned char perm_addr[32];=0D unsigned char addr_assign_type;=0D unsigned char addr_len;=0D unsigned char upper_level;=0D unsigned char lower_level;=0D =0D unsigned short neigh_priv_len;=0D unsigned short dev_id;=0D unsigned short dev_port;=0D unsigned short padded;=0D =0D spinlock_t addr_list_lock;=0D int irq;=0D =0D struct netdev_hw_addr_list uc;=0D struct netdev_hw_addr_list mc;=0D struct netdev_hw_addr_list dev_addrs;=0D =0D =0D struct kset *queues_kset;=0D =0D =0D struct list_head unlink_list;=0D =0D unsigned int promiscuity;=0D unsigned int allmulti;=0D bool uc_promisc;=0D =0D unsigned char nested_level;=0D # 2114 "./include/linux/netdevice.h"=0D struct in_device *ip_ptr;=0D =0D =0D =0D struct inet6_dev *ip6_ptr;=0D =0D =0D =0D struct wireless_dev *ieee80211_ptr;=0D struct wpan_dev *ieee802154_ptr;=0D # 2135 "./include/linux/netdevice.h"=0D const unsigned char *dev_addr;=0D =0D struct netdev_rx_queue *_rx;=0D unsigned int num_rx_queues;=0D unsigned int real_num_rx_queues;=0D =0D struct bpf_prog *xdp_prog;=0D unsigned long gro_flush_timeout;=0D int napi_defer_hard_irqs;=0D =0D unsigned int gro_max_size;=0D rx_handler_func_t *rx_handler;=0D void *rx_handler_data;=0D =0D =0D =0D =0D struct netdev_queue *ingress_queue;=0D =0D =0D =0D =0D unsigned char broadcast[32];=0D =0D struct cpu_rmap *rx_cpu_rmap;=0D =0D struct hlist_node index_hlist;=0D =0D =0D =0D =0D struct netdev_queue *_tx __attribute__((__aligned__((1 << 6))));=0D unsigned int num_tx_queues;=0D unsigned int real_num_tx_queues;=0D struct Qdisc *qdisc;=0D unsigned int tx_queue_len;=0D spinlock_t tx_global_lock;=0D =0D struct xdp_dev_bulk_queue *xdp_bulkq;=0D =0D =0D struct xps_dev_maps *xps_maps[XPS_MAPS_MAX];=0D # 2189 "./include/linux/netdevice.h"=0D struct timer_list watchdog_timer;=0D int watchdog_timeo;=0D =0D u32 proto_down_reason;=0D =0D struct list_head todo_list;=0D =0D =0D int *pcpu_refcnt;=0D =0D =0D =0D struct ref_tracker_dir refcnt_tracker;=0D =0D struct list_head link_watch_list;=0D =0D enum { NETREG_UNINITIALIZED=3D0,=0D NETREG_REGISTERED,=0D NETREG_UNREGISTERING,=0D NETREG_UNREGISTERED,=0D NETREG_RELEASED,=0D NETREG_DUMMY,=0D } reg_state:8;=0D =0D bool dismantle;=0D =0D enum {=0D RTNL_LINK_INITIALIZED,=0D RTNL_LINK_INITIALIZING,=0D } rtnl_link_state:16;=0D =0D bool needs_free_netdev;=0D void (*priv_destructor)(struct net_device *dev);=0D =0D =0D =0D =0D =0D possible_net_t nd_net;=0D =0D =0D void *ml_priv;=0D enum netdev_ml_priv_type ml_priv_type;=0D =0D union {=0D struct pcpu_lstats *lstats;=0D struct pcpu_sw_netstats *tstats;=0D struct pcpu_dstats *dstats;=0D };=0D # 2248 "./include/linux/netdevice.h"=0D struct device dev;=0D const struct attribute_group *sysfs_groups[4];=0D const struct attribute_group *sysfs_rx_queue_group;=0D =0D const struct rtnl_link_ops *rtnl_link_ops;=0D =0D =0D =0D unsigned int gso_max_size;=0D =0D u16 gso_max_segs;=0D =0D =0D =0D =0D s16 num_tc;=0D struct netdev_tc_txq tc_to_txq[16];=0D u8 prio_tc_map[15 + 1];=0D =0D =0D =0D =0D =0D =0D =0D struct phy_device *phydev;=0D struct sfp_bus *sfp_bus;=0D struct lock_class_key *qdisc_tx_busylock;=0D bool proto_down;=0D unsigned wol_enabled:1;=0D unsigned threaded:1;=0D =0D struct list_head net_notifier_list;=0D =0D =0D =0D =0D =0D const struct udp_tunnel_nic_info *udp_tunnel_nic_info;=0D struct udp_tunnel_nic *udp_tunnel_nic;=0D =0D =0D struct bpf_xdp_entity xdp_state[__MAX_XDP_MODE];=0D =0D u8 dev_addr_shadow[32];=0D netdevice_tracker linkwatch_dev_tracker;=0D netdevice_tracker watchdog_dev_tracker;=0D netdevice_tracker dev_registered_tracker;=0D struct rtnl_hw_stats64 *offload_xstats_l3;=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_elide_gro(const s= truct net_device *dev)=0D {=0D if (!(dev->features & ((netdev_features_t)1 << (NETIF_F_GRO_BIT))) || dev-= >xdp_prog)=0D return true;=0D return false;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int netdev_get_prio_tc_map(const struct net_device *dev, u32 prio)=0D {=0D return dev->prio_tc_map[prio & 15];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int netdev_set_prio_tc_map(struct net_device *dev, u8 prio, u8 tc)=0D {=0D if (tc >=3D dev->num_tc)=0D return -22;=0D =0D dev->prio_tc_map[prio & 15] =3D tc & 15;=0D return 0;=0D }=0D =0D int netdev_txq_to_tc(struct net_device *dev, unsigned int txq);=0D void netdev_reset_tc(struct net_device *dev);=0D int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offse= t);=0D int netdev_set_num_tc(struct net_device *dev, u8 num_tc);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int netdev_get_num_tc(struct net_device *dev)=0D {=0D return dev->num_tc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void net_prefetch(void *p)=0D {=0D __builtin_prefetch(p);=0D =0D __builtin_prefetch((u8 *)p + (1 << 6));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void net_prefetchw(void *p)= =0D {=0D __builtin_prefetch(p,1);=0D =0D __builtin_prefetch((u8 *)p + (1 << 6),1);=0D =0D }=0D =0D void netdev_unbind_sb_channel(struct net_device *dev,=0D struct net_device *sb_dev);=0D int netdev_bind_sb_channel_queue(struct net_device *dev,=0D struct net_device *sb_dev,=0D u8 tc, u16 count, u16 offset);=0D int netdev_set_sb_channel(struct net_device *dev, u16 channel);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int netdev_get_sb_channel(st= ruct net_device *dev)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)(-dev->num_tc)) *)1 = =3D=3D (typeof((int)(0)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void= *)((long)((int)(-dev->num_tc)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D= sizeof(*(8 ? ((void *)((long)((int)(0)) * 0l)) : (int *)8))))), (((int)(-d= ev->num_tc)) > ((int)(0)) ? ((int)(-dev->num_tc)) : ((int)(0))), ({ typeof(= (int)(-dev->num_tc)) __UNIQUE_ID___x291 =3D ((int)(-dev->num_tc)); typeof((= int)(0)) __UNIQUE_ID___y292 =3D ((int)(0)); ((__UNIQUE_ID___x291) > (__UNIQ= UE_ID___y292) ? (__UNIQUE_ID___x291) : (__UNIQUE_ID___y292)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev,=0D unsigned int index)=0D {=0D return &dev->_tx[index];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct netdev_queue *skb_get= _tx_queue(const struct net_device *dev,=0D const struct sk_buff *skb)=0D {=0D return netdev_get_tx_queue(dev, skb_get_queue_mapping(skb));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_for_each_tx_queu= e(struct net_device *dev,=0D void (*f)(struct net_device *,=0D struct netdev_queue *,=0D void *),=0D void *arg)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++)=0D f(dev, &dev->_tx[i], arg);=0D }=0D # 2403 "./include/linux/netdevice.h"=0D u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,=0D struct net_device *sb_dev);=0D struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,=0D struct sk_buff *skb,=0D struct net_device *sb_dev);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned netdev_get_fwd_head= room(struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_PHONY_HEADROOM ? 0 : dev->needed_headroom;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_set_rx_headroom(= struct net_device *dev, int new_hr)=0D {=0D if (dev->netdev_ops->ndo_set_rx_headroom)=0D dev->netdev_ops->ndo_set_rx_headroom(dev, new_hr);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_reset_rx_headroo= m(struct net_device *dev)=0D {=0D netdev_set_rx_headroom(dev, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *netdev_get_ml_priv(str= uct net_device *dev,=0D enum netdev_ml_priv_type type)=0D {=0D if (dev->ml_priv_type !=3D type)=0D return ((void *)0);=0D =0D return dev->ml_priv;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_set_ml_priv(stru= ct net_device *dev,=0D void *ml_priv,=0D enum netdev_ml_priv_type type)=0D {=0D ({ int __ret_warn_on =3D !!(dev->ml_priv_type && dev->ml_priv_type !=3D ty= pe); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } while(0); __wa= rn_printk("Overwriting already set ml_priv_type (%u) with different ml_priv= _type (%u)!\n", dev->ml_priv_type, type); do { __asm__ __volatile__ ( "1:\n= \t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b = - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\= t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/linux/netdevice.h"), = "i" (2444), "i" ((1 << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_= entry))); } while (0); do { } while(0); } while (0); __builtin_expect(!!(__= ret_warn_on), 0); });=0D =0D =0D ({ int __ret_warn_on =3D !!(!dev->ml_priv_type && dev->ml_priv); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("Ove= rwriting already set ml_priv and ml_priv_type is ML_PRIV_NONE!\n"); do { __= asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n= \t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " = %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("inc= lude/linux/netdevice.h"), "i" (2446), "i" ((1 << 0)|((1 << 3) | ((9) << 8))= ), "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (= 0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D =0D dev->ml_priv =3D ml_priv;=0D dev->ml_priv_type =3D type;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct net *dev_net(const struct net_device *dev)=0D {=0D return read_pnet(&dev->nd_net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void dev_net_set(struct net_device *dev, struct net *net)=0D {=0D write_pnet(&dev->nd_net, net);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *netdev_priv(const stru= ct net_device *dev)=0D {=0D return (char *)dev + ((((sizeof(struct net_device))) + ((typeof((sizeof(st= ruct net_device))))((32)) - 1)) & ~((typeof((sizeof(struct net_device))))((= 32)) - 1));=0D }=0D # 2504 "./include/linux/netdevice.h"=0D void netif_napi_add(struct net_device *dev, struct napi_struct *napi,=0D int (*poll)(struct napi_struct *, int), int weight);=0D # 2518 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_napi_add(struc= t net_device *dev,=0D struct napi_struct *napi,=0D int (*poll)(struct napi_struct *, int),=0D int weight)=0D {=0D set_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state);=0D netif_napi_add(dev, napi, poll, weight);=0D }=0D # 2535 "./include/linux/netdevice.h"=0D void __netif_napi_del(struct napi_struct *napi);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_napi_del(struct n= api_struct *napi)=0D {=0D __netif_napi_del(napi);=0D synchronize_net();=0D }=0D =0D struct packet_type {=0D __be16 type;=0D bool ignore_outgoing;=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D int (*func) (struct sk_buff *,=0D struct net_device *,=0D struct packet_type *,=0D struct net_device *);=0D void (*list_func) (struct list_head *,=0D struct packet_type *,=0D struct net_device *);=0D bool (*id_match)(struct packet_type *ptype,=0D struct sock *sk);=0D struct net *af_packet_net;=0D void *af_packet_priv;=0D struct list_head list;=0D };=0D =0D struct offload_callbacks {=0D struct sk_buff *(*gso_segment)(struct sk_buff *skb,=0D netdev_features_t features);=0D struct sk_buff *(*gro_receive)(struct list_head *head,=0D struct sk_buff *skb);=0D int (*gro_complete)(struct sk_buff *skb, int nhoff);=0D };=0D =0D struct packet_offload {=0D __be16 type;=0D u16 priority;=0D struct offload_callbacks callbacks;=0D struct list_head list;=0D };=0D =0D =0D struct pcpu_sw_netstats {=0D u64 rx_packets;=0D u64 rx_bytes;=0D u64 tx_packets;=0D u64 tx_bytes;=0D struct u64_stats_sync syncp;=0D } __attribute__((__aligned__(4 * sizeof(u64))));=0D =0D struct pcpu_lstats {=0D u64_stats_t packets;=0D u64_stats_t bytes;=0D struct u64_stats_sync syncp;=0D } __attribute__((__aligned__(2 * sizeof(u64))));=0D =0D void dev_lstats_read(struct net_device *dev, u64 *packets, u64 *bytes);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_sw_netstats_rx_add(= struct net_device *dev, unsigned int len)=0D {=0D struct pcpu_sw_netstats *tstats =3D ({ do { const void *__vpp_verify =3D (= typeof((dev->tstats) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ = unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(dev->tstats)) *)(= dev->tstats)); (typeof((typeof(*(dev->tstats)) *)(dev->tstats))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= );=0D =0D u64_stats_update_begin(&tstats->syncp);=0D tstats->rx_bytes +=3D len;=0D tstats->rx_packets++;=0D u64_stats_update_end(&tstats->syncp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_sw_netstats_tx_add(= struct net_device *dev,=0D unsigned int packets,=0D unsigned int len)=0D {=0D struct pcpu_sw_netstats *tstats =3D ({ do { const void *__vpp_verify =3D (= typeof((dev->tstats) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ = unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(dev->tstats)) *)(= dev->tstats)); (typeof((typeof(*(dev->tstats)) *)(dev->tstats))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= );=0D =0D u64_stats_update_begin(&tstats->syncp);=0D tstats->tx_bytes +=3D len;=0D tstats->tx_packets +=3D packets;=0D u64_stats_update_end(&tstats->syncp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_lstats_add(struct n= et_device *dev, unsigned int len)=0D {=0D struct pcpu_lstats *lstats =3D ({ do { const void *__vpp_verify =3D (typeo= f((dev->lstats) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(dev->lstats)) *)(dev->= lstats)); (typeof((typeof(*(dev->lstats)) *)(dev->lstats))) (__ptr + (((__p= er_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); });=0D =0D u64_stats_update_begin(&lstats->syncp);=0D u64_stats_add(&lstats->bytes, len);=0D u64_stats_inc(&lstats->packets);=0D u64_stats_update_end(&lstats->syncp);=0D }=0D # 2663 "./include/linux/netdevice.h"=0D enum netdev_lag_tx_type {=0D NETDEV_LAG_TX_TYPE_UNKNOWN,=0D NETDEV_LAG_TX_TYPE_RANDOM,=0D NETDEV_LAG_TX_TYPE_BROADCAST,=0D NETDEV_LAG_TX_TYPE_ROUNDROBIN,=0D NETDEV_LAG_TX_TYPE_ACTIVEBACKUP,=0D NETDEV_LAG_TX_TYPE_HASH,=0D };=0D =0D enum netdev_lag_hash {=0D NETDEV_LAG_HASH_NONE,=0D NETDEV_LAG_HASH_L2,=0D NETDEV_LAG_HASH_L34,=0D NETDEV_LAG_HASH_L23,=0D NETDEV_LAG_HASH_E23,=0D NETDEV_LAG_HASH_E34,=0D NETDEV_LAG_HASH_VLAN_SRCMAC,=0D NETDEV_LAG_HASH_UNKNOWN,=0D };=0D =0D struct netdev_lag_upper_info {=0D enum netdev_lag_tx_type tx_type;=0D enum netdev_lag_hash hash_type;=0D };=0D =0D struct netdev_lag_lower_state_info {=0D u8 link_up : 1,=0D tx_enabled : 1;=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum netdev_cmd {=0D NETDEV_UP =3D 1,=0D NETDEV_DOWN,=0D NETDEV_REBOOT,=0D =0D =0D =0D NETDEV_CHANGE,=0D NETDEV_REGISTER,=0D NETDEV_UNREGISTER,=0D NETDEV_CHANGEMTU,=0D NETDEV_CHANGEADDR,=0D NETDEV_PRE_CHANGEADDR,=0D NETDEV_GOING_DOWN,=0D NETDEV_CHANGENAME,=0D NETDEV_FEAT_CHANGE,=0D NETDEV_BONDING_FAILOVER,=0D NETDEV_PRE_UP,=0D NETDEV_PRE_TYPE_CHANGE,=0D NETDEV_POST_TYPE_CHANGE,=0D NETDEV_POST_INIT,=0D NETDEV_RELEASE,=0D NETDEV_NOTIFY_PEERS,=0D NETDEV_JOIN,=0D NETDEV_CHANGEUPPER,=0D NETDEV_RESEND_IGMP,=0D NETDEV_PRECHANGEMTU,=0D NETDEV_CHANGEINFODATA,=0D NETDEV_BONDING_INFO,=0D NETDEV_PRECHANGEUPPER,=0D NETDEV_CHANGELOWERSTATE,=0D NETDEV_UDP_TUNNEL_PUSH_INFO,=0D NETDEV_UDP_TUNNEL_DROP_INFO,=0D NETDEV_CHANGE_TX_QUEUE_LEN,=0D NETDEV_CVLAN_FILTER_PUSH_INFO,=0D NETDEV_CVLAN_FILTER_DROP_INFO,=0D NETDEV_SVLAN_FILTER_PUSH_INFO,=0D NETDEV_SVLAN_FILTER_DROP_INFO,=0D NETDEV_OFFLOAD_XSTATS_ENABLE,=0D NETDEV_OFFLOAD_XSTATS_DISABLE,=0D NETDEV_OFFLOAD_XSTATS_REPORT_USED,=0D NETDEV_OFFLOAD_XSTATS_REPORT_DELTA,=0D };=0D const char *netdev_cmd_to_name(enum netdev_cmd cmd);=0D =0D int register_netdevice_notifier(struct notifier_block *nb);=0D int unregister_netdevice_notifier(struct notifier_block *nb);=0D int register_netdevice_notifier_net(struct net *net, struct notifier_block = *nb);=0D int unregister_netdevice_notifier_net(struct net *net,=0D struct notifier_block *nb);=0D int register_netdevice_notifier_dev_net(struct net_device *dev,=0D struct notifier_block *nb,=0D struct netdev_net_notifier *nn);=0D int unregister_netdevice_notifier_dev_net(struct net_device *dev,=0D struct notifier_block *nb,=0D struct netdev_net_notifier *nn);=0D =0D struct netdev_notifier_info {=0D struct net_device *dev;=0D struct netlink_ext_ack *extack;=0D };=0D =0D struct netdev_notifier_info_ext {=0D struct netdev_notifier_info info;=0D union {=0D u32 mtu;=0D } ext;=0D };=0D =0D struct netdev_notifier_change_info {=0D struct netdev_notifier_info info;=0D unsigned int flags_changed;=0D };=0D =0D struct netdev_notifier_changeupper_info {=0D struct netdev_notifier_info info;=0D struct net_device *upper_dev;=0D bool master;=0D bool linking;=0D void *upper_info;=0D };=0D =0D struct netdev_notifier_changelowerstate_info {=0D struct netdev_notifier_info info;=0D void *lower_state_info;=0D };=0D =0D struct netdev_notifier_pre_changeaddr_info {=0D struct netdev_notifier_info info;=0D const unsigned char *dev_addr;=0D };=0D =0D enum netdev_offload_xstats_type {=0D NETDEV_OFFLOAD_XSTATS_TYPE_L3 =3D 1,=0D };=0D =0D struct netdev_notifier_offload_xstats_info {=0D struct netdev_notifier_info info;=0D enum netdev_offload_xstats_type type;=0D =0D union {=0D =0D struct netdev_notifier_offload_xstats_rd *report_delta;=0D =0D struct netdev_notifier_offload_xstats_ru *report_used;=0D };=0D };=0D =0D int netdev_offload_xstats_enable(struct net_device *dev,=0D enum netdev_offload_xstats_type type,=0D struct netlink_ext_ack *extack);=0D int netdev_offload_xstats_disable(struct net_device *dev,=0D enum netdev_offload_xstats_type type);=0D bool netdev_offload_xstats_enabled(const struct net_device *dev,=0D enum netdev_offload_xstats_type type);=0D int netdev_offload_xstats_get(struct net_device *dev,=0D enum netdev_offload_xstats_type type,=0D struct rtnl_hw_stats64 *stats, bool *used,=0D struct netlink_ext_ack *extack);=0D void=0D netdev_offload_xstats_report_delta(struct netdev_notifier_offload_xstats_rd= *rd,=0D const struct rtnl_hw_stats64 *stats);=0D void=0D netdev_offload_xstats_report_used(struct netdev_notifier_offload_xstats_ru = *ru);=0D void netdev_offload_xstats_push_delta(struct net_device *dev,=0D enum netdev_offload_xstats_type type,=0D const struct rtnl_hw_stats64 *stats);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_notifier_info_in= it(struct netdev_notifier_info *info,=0D struct net_device *dev)=0D {=0D info->dev =3D dev;=0D info->extack =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *=0D netdev_notifier_info_to_dev(const struct netdev_notifier_info *info)=0D {=0D return info->dev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct netlink_ext_ack *=0D netdev_notifier_info_to_extack(const struct netdev_notifier_info *info)=0D {=0D return info->extack;=0D }=0D =0D int call_netdevice_notifiers(unsigned long val, struct net_device *dev);=0D =0D =0D extern rwlock_t dev_base_lock;=0D # 2871 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *next_net_= device(struct net_device *dev)=0D {=0D struct list_head *lh;=0D struct net *net;=0D =0D net =3D dev_net(dev);=0D lh =3D dev->dev_list.next;=0D return lh =3D=3D &net->dev_base_head ? ((void *)0) : ({ void *__mptr =3D (= void *)(lh); _Static_assert(__builtin_types_compatible_p(typeof(*(lh)), typ= eof(((struct net_device *)0)->dev_list)) || __builtin_types_compatible_p(ty= peof(*(lh)), typeof(void)), "pointer type mismatch in container_of()"); ((s= truct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list= ))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *next_net_= device_rcu(struct net_device *dev)=0D {=0D struct list_head *lh;=0D struct net *net;=0D =0D net =3D dev_net(dev);=0D lh =3D ({ typeof(*((*((struct list_head **)(&(&dev->dev_list)->next))))) *= __UNIQUE_ID_rcu293 =3D (typeof(*((*((struct list_head **)(&(&dev->dev_list)= ->next))))) *)({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_294(void) ; if (!((sizeof(((*((struct list_head **)(&(&dev->dev_l= ist)->next))))) =3D=3D sizeof(char) || sizeof(((*((struct list_head **)(&(&= dev->dev_list)->next))))) =3D=3D sizeof(short) || sizeof(((*((struct list_h= ead **)(&(&dev->dev_list)->next))))) =3D=3D sizeof(int) || sizeof(((*((stru= ct list_head **)(&(&dev->dev_list)->next))))) =3D=3D sizeof(long)) || sizeo= f(((*((struct list_head **)(&(&dev->dev_list)->next))))) =3D=3D sizeof(long= long))) __compiletime_assert_294(); } while (0); (*(const volatile typeof(= _Generic((((*((struct list_head **)(&(&dev->dev_list)->next))))), char: (c= har)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsign= ed short: (unsigned short)0, signed short: (signed short)0, unsigned int: (= unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0,= signed long: (signed long)0, unsigned long long: (unsigned long long)0, si= gned long long: (signed long long)0, default: (((*((struct list_head **)(&(= &dev->dev_list)->next))))))) *)&(((*((struct list_head **)(&(&dev->dev_list= )->next)))))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; = ((typeof(*((*((struct list_head **)(&(&dev->dev_list)->next))))) *)(__UNIQU= E_ID_rcu293)); });=0D return lh =3D=3D &net->dev_base_head ? ((void *)0) : ({ void *__mptr =3D (= void *)(lh); _Static_assert(__builtin_types_compatible_p(typeof(*(lh)), typ= eof(((struct net_device *)0)->dev_list)) || __builtin_types_compatible_p(ty= peof(*(lh)), typeof(void)), "pointer type mismatch in container_of()"); ((s= truct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list= ))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *first_net= _device(struct net *net)=0D {=0D return list_empty(&net->dev_base_head) ? ((void *)0) :=0D ({ void *__mptr =3D (void *)(net->dev_base_head.next); _Static_assert(__b= uiltin_types_compatible_p(typeof(*(net->dev_base_head.next)), typeof(((stru= ct net_device *)0)->dev_list)) || __builtin_types_compatible_p(typeof(*(net= ->dev_base_head.next)), typeof(void)), "pointer type mismatch in container_= of()"); ((struct net_device *)(__mptr - __builtin_offsetof(struct net_devic= e, dev_list))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *first_net= _device_rcu(struct net *net)=0D {=0D struct list_head *lh =3D ({ typeof(*((*((struct list_head **)(&(&net->dev_= base_head)->next))))) *__UNIQUE_ID_rcu295 =3D (typeof(*((*((struct list_hea= d **)(&(&net->dev_base_head)->next))))) *)({ do { __attribute__((__noreturn= __)) extern void __compiletime_assert_296(void) ; if (!((sizeof(((*((struct= list_head **)(&(&net->dev_base_head)->next))))) =3D=3D sizeof(char) || siz= eof(((*((struct list_head **)(&(&net->dev_base_head)->next))))) =3D=3D size= of(short) || sizeof(((*((struct list_head **)(&(&net->dev_base_head)->next)= )))) =3D=3D sizeof(int) || sizeof(((*((struct list_head **)(&(&net->dev_bas= e_head)->next))))) =3D=3D sizeof(long)) || sizeof(((*((struct list_head **)= (&(&net->dev_base_head)->next))))) =3D=3D sizeof(long long))) __compiletime= _assert_296(); } while (0); (*(const volatile typeof( _Generic((((*((struct= list_head **)(&(&net->dev_base_head)->next))))), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: (((*((struct list_head **)(&(&net->dev_base_he= ad)->next))))))) *)&(((*((struct list_head **)(&(&net->dev_base_head)->next= )))))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeo= f(*((*((struct list_head **)(&(&net->dev_base_head)->next))))) *)(__UNIQUE_= ID_rcu295)); });=0D =0D return lh =3D=3D &net->dev_base_head ? ((void *)0) : ({ void *__mptr =3D (= void *)(lh); _Static_assert(__builtin_types_compatible_p(typeof(*(lh)), typ= eof(((struct net_device *)0)->dev_list)) || __builtin_types_compatible_p(ty= peof(*(lh)), typeof(void)), "pointer type mismatch in container_of()"); ((s= truct net_device *)(__mptr - __builtin_offsetof(struct net_device, dev_list= ))); });=0D }=0D =0D int netdev_boot_setup_check(struct net_device *dev);=0D struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type= ,=0D const char *hwaddr);=0D struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short typ= e);=0D void dev_add_pack(struct packet_type *pt);=0D void dev_remove_pack(struct packet_type *pt);=0D void __dev_remove_pack(struct packet_type *pt);=0D void dev_add_offload(struct packet_offload *po);=0D void dev_remove_offload(struct packet_offload *po);=0D =0D int dev_get_iflink(const struct net_device *dev);=0D int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb);=0D int dev_fill_forward_path(const struct net_device *dev, const u8 *daddr,=0D struct net_device_path_stack *stack);=0D struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags= ,=0D unsigned short mask);=0D struct net_device *dev_get_by_name(struct net *net, const char *name);=0D struct net_device *dev_get_by_name_rcu(struct net *net, const char *name);= =0D struct net_device *__dev_get_by_name(struct net *net, const char *name);=0D bool netdev_name_in_use(struct net *net, const char *name);=0D int dev_alloc_name(struct net_device *dev, const char *name);=0D int dev_open(struct net_device *dev, struct netlink_ext_ack *extack);=0D void dev_close(struct net_device *dev);=0D void dev_close_many(struct list_head *head, bool unlink);=0D void dev_disable_lro(struct net_device *dev);=0D int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *new= skb);=0D u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,=0D struct net_device *sb_dev);=0D u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,=0D struct net_device *sb_dev);=0D =0D int dev_queue_xmit(struct sk_buff *skb);=0D int dev_queue_xmit_accel(struct sk_buff *skb, struct net_device *sb_dev);=0D int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_direct_xmit(struct s= k_buff *skb, u16 queue_id)=0D {=0D int ret;=0D =0D ret =3D __dev_direct_xmit(skb, queue_id);=0D if (!dev_xmit_complete(ret))=0D kfree_skb(skb);=0D return ret;=0D }=0D =0D int register_netdevice(struct net_device *dev);=0D void unregister_netdevice_queue(struct net_device *dev, struct list_head *h= ead);=0D void unregister_netdevice_many(struct list_head *head);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unregister_netdevice(st= ruct net_device *dev)=0D {=0D unregister_netdevice_queue(dev, ((void *)0));=0D }=0D =0D int netdev_refcnt_read(const struct net_device *dev);=0D void free_netdev(struct net_device *dev);=0D void netdev_freemem(struct net_device *dev);=0D int init_dummy_netdev(struct net_device *dev);=0D =0D struct net_device *netdev_get_xmit_slave(struct net_device *dev,=0D struct sk_buff *skb,=0D bool all_slaves);=0D struct net_device *netdev_sk_get_lowest_dev(struct net_device *dev,=0D struct sock *sk);=0D struct net_device *dev_get_by_index(struct net *net, int ifindex);=0D struct net_device *__dev_get_by_index(struct net *net, int ifindex);=0D struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex);=0D struct net_device *dev_get_by_napi_id(unsigned int napi_id);=0D int netdev_get_name(struct net *net, char *name, int ifindex);=0D int dev_restart(struct net_device *dev);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_hard_header(struct s= k_buff *skb, struct net_device *dev,=0D unsigned short type,=0D const void *daddr, const void *saddr,=0D unsigned int len)=0D {=0D if (!dev->header_ops || !dev->header_ops->create)=0D return 0;=0D =0D return dev->header_ops->create(skb, dev, type, daddr, saddr, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_parse_header(const s= truct sk_buff *skb,=0D unsigned char *haddr)=0D {=0D const struct net_device *dev =3D skb->dev;=0D =0D if (!dev->header_ops || !dev->header_ops->parse)=0D return 0;=0D return dev->header_ops->parse(skb, haddr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 dev_parse_header_prot= ocol(const struct sk_buff *skb)=0D {=0D const struct net_device *dev =3D skb->dev;=0D =0D if (!dev->header_ops || !dev->header_ops->parse_protocol)=0D return 0;=0D return dev->header_ops->parse_protocol(skb);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_validate_header(con= st struct net_device *dev,=0D char *ll_header, int len)=0D {=0D if (__builtin_expect(!!(len >=3D dev->hard_header_len), 1))=0D return true;=0D if (len < dev->min_header_len)=0D return false;=0D =0D if (capable(17)) {=0D memset(ll_header + len, 0, dev->hard_header_len - len);=0D return true;=0D }=0D =0D if (dev->header_ops && dev->header_ops->validate)=0D return dev->header_ops->validate(ll_header, len);=0D =0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_has_header(const st= ruct net_device *dev)=0D {=0D return dev->header_ops && dev->header_ops->create;=0D }=0D =0D =0D =0D struct sd_flow_limit {=0D u64 count;=0D unsigned int num_buckets;=0D unsigned int history_head;=0D u16 history[(1 << 7)];=0D u8 buckets[];=0D };=0D =0D extern int netdev_flow_limit_table_len;=0D =0D =0D =0D =0D =0D struct softnet_data {=0D struct list_head poll_list;=0D struct sk_buff_head process_queue;=0D =0D =0D unsigned int processed;=0D unsigned int time_squeeze;=0D unsigned int received_rps;=0D =0D struct softnet_data *rps_ipi_list;=0D =0D =0D struct sd_flow_limit *flow_limit;=0D =0D struct Qdisc *output_queue;=0D struct Qdisc **output_queue_tailp;=0D struct sk_buff *completion_queue;=0D =0D =0D =0D =0D struct {=0D u16 recursion;=0D u8 more;=0D } xmit;=0D =0D =0D =0D =0D unsigned int input_queue_head __attribute__((__aligned__((1 << 6))));=0D =0D =0D call_single_data_t csd __attribute__((__aligned__((1 << 6))));=0D struct softnet_data *rps_ipi_next;=0D unsigned int cpu;=0D unsigned int input_queue_tail;=0D =0D unsigned int dropped;=0D struct sk_buff_head input_pkt_queue;=0D struct napi_struct backlog;=0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void input_queue_head_incr(s= truct softnet_data *sd)=0D {=0D =0D sd->input_queue_head++;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void input_queue_tail_incr_s= ave(struct softnet_data *sd,=0D unsigned int *qtail)=0D {=0D =0D *qtail =3D ++sd->input_queue_tail;=0D =0D }=0D =0D extern __attribute__((section(".data..percpu" "..shared_aligned"))) __typeo= f__(struct softnet_data) softnet_data __attribute__((__aligned__((1 << 6)))= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dev_recursion_level(void= )=0D {=0D return ({ typeof(softnet_data.xmit.recursion) pscr_ret__; do { const void = *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); switch(sizeof(softnet_data.xmit.recursio= n)) { case 1: pscr_ret__ =3D ({ typeof(softnet_data.xmit.recursion) __ret; = if ((sizeof(softnet_data.xmit.recursion) =3D=3D sizeof(char) || sizeof(soft= net_data.xmit.recursion) =3D=3D sizeof(short) || sizeof(softnet_data.xmit.r= ecursion) =3D=3D sizeof(int) || sizeof(softnet_data.xmit.recursion) =3D=3D = sizeof(long))) __ret =3D ({ typeof(softnet_data.xmit.recursion) ___ret; do = { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0= ); ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_297(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (= typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (ty= peof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recu= rsion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *_= _vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.= recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softn= et_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ = do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(= softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recur= sion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int= ) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.x= mit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.re= cursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet= _data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(s= oftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof(= (typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); })) =3D=3D sizeof(long long))) __compiletime_assert_297(); } = while (0); (*(const volatile typeof( _Generic((*({ do { const void *__vpp_v= erify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recurs= ion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_dat= a.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); })), char: (char)0, unsigned char: (unsigned = char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sig= ned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sig= ned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, un= signed long long: (unsigned long long)0, signed long long: (signed long lon= g)0, default: (*({ do { const void *__vpp_verify =3D (typeof((&(softnet_dat= a.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(so= ftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = })))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmi= t.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recu= rsion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_d= ata.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__pe= r_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }))); }= ); do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } wh= ile (0); ___ret; }); else __ret =3D ({ typeof(softnet_data.xmit.recursion) = ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch_= local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_ver= ify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursio= n))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.= xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(_= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (= 0); arch_local_irq_restore(___flags); } while (0); ___ret; }); __ret; }); b= reak; case 2: pscr_ret__ =3D ({ typeof(softnet_data.xmit.recursion) __ret; = if ((sizeof(softnet_data.xmit.recursion) =3D=3D sizeof(char) || sizeof(soft= net_data.xmit.recursion) =3D=3D sizeof(short) || sizeof(softnet_data.xmit.r= ecursion) =3D=3D sizeof(int) || sizeof(softnet_data.xmit.recursion) =3D=3D = sizeof(long))) __ret =3D ({ typeof(softnet_data.xmit.recursion) ___ret; do = { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0= ); ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_298(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (= typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (ty= peof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recu= rsion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *_= _vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.= recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softn= et_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ = do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(= softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recur= sion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int= ) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.x= mit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.re= cursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet= _data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(s= oftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof(= (typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); })) =3D=3D sizeof(long long))) __compiletime_assert_298(); } = while (0); (*(const volatile typeof( _Generic((*({ do { const void *__vpp_v= erify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recurs= ion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_dat= a.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); })), char: (char)0, unsigned char: (unsigned = char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sig= ned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sig= ned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, un= signed long long: (unsigned long long)0, signed long long: (signed long lon= g)0, default: (*({ do { const void *__vpp_verify =3D (typeof((&(softnet_dat= a.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(so= ftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = })))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmi= t.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recu= rsion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_d= ata.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__pe= r_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }))); }= ); do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } wh= ile (0); ___ret; }); else __ret =3D ({ typeof(softnet_data.xmit.recursion) = ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch_= local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_ver= ify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursio= n))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.= xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(_= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (= 0); arch_local_irq_restore(___flags); } while (0); ___ret; }); __ret; }); b= reak; case 4: pscr_ret__ =3D ({ typeof(softnet_data.xmit.recursion) __ret; = if ((sizeof(softnet_data.xmit.recursion) =3D=3D sizeof(char) || sizeof(soft= net_data.xmit.recursion) =3D=3D sizeof(short) || sizeof(softnet_data.xmit.r= ecursion) =3D=3D sizeof(int) || sizeof(softnet_data.xmit.recursion) =3D=3D = sizeof(long))) __ret =3D ({ typeof(softnet_data.xmit.recursion) ___ret; do = { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0= ); ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_299(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (= typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (ty= peof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recu= rsion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *_= _vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.= recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softn= et_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ = do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(= softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recur= sion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int= ) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.x= mit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.re= cursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet= _data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(s= oftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof(= (typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); })) =3D=3D sizeof(long long))) __compiletime_assert_299(); } = while (0); (*(const volatile typeof( _Generic((*({ do { const void *__vpp_v= erify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recurs= ion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_dat= a.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); })), char: (char)0, unsigned char: (unsigned = char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sig= ned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sig= ned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, un= signed long long: (unsigned long long)0, signed long long: (signed long lon= g)0, default: (*({ do { const void *__vpp_verify =3D (typeof((&(softnet_dat= a.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(so= ftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = })))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmi= t.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recu= rsion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_d= ata.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__pe= r_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }))); }= ); do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } wh= ile (0); ___ret; }); else __ret =3D ({ typeof(softnet_data.xmit.recursion) = ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch_= local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_ver= ify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursio= n))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.= xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(_= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (= 0); arch_local_irq_restore(___flags); } while (0); ___ret; }); __ret; }); b= reak; case 8: pscr_ret__ =3D ({ typeof(softnet_data.xmit.recursion) __ret; = if ((sizeof(softnet_data.xmit.recursion) =3D=3D sizeof(char) || sizeof(soft= net_data.xmit.recursion) =3D=3D sizeof(short) || sizeof(softnet_data.xmit.r= ecursion) =3D=3D sizeof(int) || sizeof(softnet_data.xmit.recursion) =3D=3D = sizeof(long))) __ret =3D ({ typeof(softnet_data.xmit.recursion) ___ret; do = { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0= ); ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_300(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (= typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (ty= peof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recu= rsion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *_= _vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.= recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softn= et_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ = do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(= softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recur= sion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int= ) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.x= mit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.re= cursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet= _data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(s= oftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof(= (typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); })) =3D=3D sizeof(long long))) __compiletime_assert_300(); } = while (0); (*(const volatile typeof( _Generic((*({ do { const void *__vpp_v= erify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recurs= ion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_dat= a.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); })), char: (char)0, unsigned char: (unsigned = char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sig= ned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sig= ned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, un= signed long long: (unsigned long long)0, signed long long: (signed long lon= g)0, default: (*({ do { const void *__vpp_verify =3D (typeof((&(softnet_dat= a.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(so= ftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = })))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmi= t.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recu= rsion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_d= ata.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__pe= r_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }))); }= ); do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } wh= ile (0); ___ret; }); else __ret =3D ({ typeof(softnet_data.xmit.recursion) = ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch_= local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_ver= ify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursio= n))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.= xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }); }); do { ({ unsigned long __dummy; typeof(_= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (= 0); arch_local_irq_restore(___flags); } while (0); ___ret; }); __ret; }); b= reak; default: __bad_size_call_parameter(); break; } pscr_ret__; });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_xmit_recursion(void= )=0D {=0D return __builtin_expect(!!(({ __this_cpu_preempt_check("read"); ({ typeof(= softnet_data.xmit.recursion) pscr_ret__; do { const void *__vpp_verify =3D = (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: pscr= _ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data= =2Exmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmi= t.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(sof= tnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= ); }); break; case 2: pscr_ret__ =3D ({ *({ do { const void *__vpp_verify = =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_= verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((ty= peof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))= ; (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit= =2Erecursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_c= urrent())->cpu)])))); }); }); }); break; case 4: pscr_ret__ =3D ({ *({ do {= const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __pt= r =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(soft= net_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion= ))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); }); }); break; case 8: ps= cr_ret__ =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(softnet_da= ta.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmi= t.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(sof= tnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= ); }); break; default: __bad_size_call_parameter(); break; } pscr_ret__; })= ; }) > 8), 0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_xmit_recursion_inc(= void)=0D {=0D ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify =3D= (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_ver= ify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: do = { *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recurs= ion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long _= _ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion)))= *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_= offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } = while (0);break; case 2: do { *({ do { const void *__vpp_verify =3D (typeof= ((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_verify; } w= hile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(so= ftnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion))); (typeof((= typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.recursion)= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); }) +=3D 1; } while (0);break; case 4: do { *({ do { const void= *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0= ); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsi= gned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xm= it.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(so= ftnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);break; case 8= : do { *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.r= ecursion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned l= ong __ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursi= on))) *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data= =2Exmit.recursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per= _cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D = 1; } while (0);break; default: __bad_size_call_parameter();break; } } while= (0); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_xmit_recursion_dec(= void)=0D {=0D ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify =3D= (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (void)__vpp_ver= ify; } while (0); switch(sizeof(softnet_data.xmit.recursion)) { case 1: do = { *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recurs= ion)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long _= _ptr; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion)))= *)(&(softnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit= =2Erecursion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_= offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typ= eof(softnet_data.xmit.recursion))(1); } while (0);break; case 2: do { *({ d= o { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(s= oftnet_data.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recurs= ion))) *)(&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(softn= et_data.xmit.recursion))(1); } while (0);break; case 4: do { *({ do { const= void *__vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((voi= d *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D = (unsigned long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_da= ta.xmit.recursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)= (&(softnet_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct t= hread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(softnet_data.x= mit.recursion))(1); } while (0);break; case 8: do { *({ do { const void *__= vpp_verify =3D (typeof((&(softnet_data.xmit.recursion)) + 0))((void *)0); (= void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned= long) ((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softnet_data.xmit.r= ecursion))); (typeof((typeof(*(&(softnet_data.xmit.recursion))) *)(&(softne= t_data.xmit.recursion)))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); }) +=3D -(typeof(softnet_data.xmit.recur= sion))(1); } while (0);break; default: __bad_size_call_parameter();break; }= } while (0); });=0D }=0D =0D void __netif_schedule(struct Qdisc *q);=0D void netif_schedule_queue(struct netdev_queue *txq);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_schedule_all(s= truct net_device *dev)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++)=0D netif_schedule_queue(netdev_get_tx_queue(dev, i));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void netif_tx_start_queue(struct netdev_queue *dev_queue)=0D {=0D clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_start_queue(struc= t net_device *dev)=0D {=0D netif_tx_start_queue(netdev_get_tx_queue(dev, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_start_all_queu= es(struct net_device *dev)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D netif_tx_start_queue(txq);=0D }=0D }=0D =0D void netif_tx_wake_queue(struct netdev_queue *dev_queue);=0D # 3174 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_wake_queue(struct= net_device *dev)=0D {=0D netif_tx_wake_queue(netdev_get_tx_queue(dev, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_wake_all_queue= s(struct net_device *dev)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D netif_tx_wake_queue(txq);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void netif_tx_stop_queue(struct netdev_queue *dev_queue)=0D {=0D set_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);=0D }=0D # 3201 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_stop_queue(struct= net_device *dev)=0D {=0D netif_tx_stop_queue(netdev_get_tx_queue(dev, 0));=0D }=0D =0D void netif_tx_stop_all_queues(struct net_device *dev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_tx_queue_stopped(= const struct netdev_queue *dev_queue)=0D {=0D return arch_test_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_queue_stopped(con= st struct net_device *dev)=0D {=0D return netif_tx_queue_stopped(netdev_get_tx_queue(dev, 0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_xmit_stopped(cons= t struct netdev_queue *dev_queue)=0D {=0D return dev_queue->state & ((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_S= TATE_STACK_XOFF));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D netif_xmit_frozen_or_stopped(const struct netdev_queue *dev_queue)=0D {=0D return dev_queue->state & (((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_= STATE_STACK_XOFF)) | (1 << __QUEUE_STATE_FROZEN));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D netif_xmit_frozen_or_drv_stopped(const struct netdev_queue *dev_queue)=0D {=0D return dev_queue->state & ((1 << __QUEUE_STATE_DRV_XOFF) | (1 << __QUEUE_S= TATE_FROZEN));=0D }=0D # 3251 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_queue_set_dql_mi= n_limit(struct netdev_queue *dev_queue,=0D unsigned int min_limit)=0D {=0D =0D dev_queue->dql.min_limit =3D min_limit;=0D =0D }=0D # 3266 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_txq_bql_enqueue_= prefetchw(struct netdev_queue *dev_queue)=0D {=0D =0D __builtin_prefetch(&dev_queue->dql.num_queued,1);=0D =0D }=0D # 3280 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_txq_bql_complete= _prefetchw(struct netdev_queue *dev_queue)=0D {=0D =0D __builtin_prefetch(&dev_queue->dql.limit,1);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_tx_sent_queue(st= ruct netdev_queue *dev_queue,=0D unsigned int bytes)=0D {=0D =0D dql_queued(&dev_queue->dql, bytes);=0D =0D if (__builtin_expect(!!(dql_avail(&dev_queue->dql) >=3D 0), 1))=0D return;=0D =0D set_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state);=0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D =0D =0D if (__builtin_expect(!!(dql_avail(&dev_queue->dql) >=3D 0), 0))=0D clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __netdev_tx_sent_queue(= struct netdev_queue *dev_queue,=0D unsigned int bytes,=0D bool xmit_more)=0D {=0D if (xmit_more) {=0D =0D dql_queued(&dev_queue->dql, bytes);=0D =0D return netif_tx_queue_stopped(dev_queue);=0D }=0D netdev_tx_sent_queue(dev_queue, bytes);=0D return true;=0D }=0D # 3340 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_sent_queue(struc= t net_device *dev, unsigned int bytes)=0D {=0D netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __netdev_sent_queue(str= uct net_device *dev,=0D unsigned int bytes,=0D bool xmit_more)=0D {=0D return __netdev_tx_sent_queue(netdev_get_tx_queue(dev, 0), bytes,=0D xmit_more);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_tx_completed_que= ue(struct netdev_queue *dev_queue,=0D unsigned int pkts, unsigned int bytes)=0D {=0D =0D if (__builtin_expect(!!(!bytes), 0))=0D return;=0D =0D dql_completed(&dev_queue->dql, bytes);=0D =0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : : = "memory"); } while (0);=0D =0D if (__builtin_expect(!!(dql_avail(&dev_queue->dql) < 0), 0))=0D return;=0D =0D if (test_and_clear_bit(__QUEUE_STATE_STACK_XOFF, &dev_queue->state))=0D netif_schedule_queue(dev_queue);=0D =0D }=0D # 3387 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_completed_queue(= struct net_device *dev,=0D unsigned int pkts, unsigned int bytes)=0D {=0D netdev_tx_completed_queue(netdev_get_tx_queue(dev, 0), pkts, bytes);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_tx_reset_queue(s= truct netdev_queue *q)=0D {=0D =0D clear_bit(__QUEUE_STATE_STACK_XOFF, &q->state);=0D dql_reset(&q->dql);=0D =0D }=0D # 3408 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_reset_queue(stru= ct net_device *dev_queue)=0D {=0D netdev_tx_reset_queue(netdev_get_tx_queue(dev_queue, 0));=0D }=0D # 3421 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 netdev_cap_txqueue(struc= t net_device *dev, u16 queue_index)=0D {=0D if (__builtin_expect(!!(queue_index >=3D dev->real_num_tx_queues), 0)) {=0D do { if (net_ratelimit()) ({ do {} while (0); _printk("\001" "4" "IPv6: "= "%s selects TX queue %d, but real number of TX queues is %d\n", dev->name,= queue_index, dev->real_num_tx_queues); }); } while (0);=0D =0D =0D return 0;=0D }=0D =0D return queue_index;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_running(const str= uct net_device *dev)=0D {=0D return arch_test_bit(__LINK_STATE_START, &dev->state);=0D }=0D # 3458 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_start_subqueue(st= ruct net_device *dev, u16 queue_index)=0D {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, queue_index);=0D =0D netif_tx_start_queue(txq);=0D }=0D # 3472 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_stop_subqueue(str= uct net_device *dev, u16 queue_index)=0D {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, queue_index);=0D netif_tx_stop_queue(txq);=0D }=0D # 3485 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __netif_subqueue_stoppe= d(const struct net_device *dev,=0D u16 queue_index)=0D {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, queue_index);=0D =0D return netif_tx_queue_stopped(txq);=0D }=0D # 3500 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_subqueue_stopped(= const struct net_device *dev,=0D struct sk_buff *skb)=0D {=0D return __netif_subqueue_stopped(dev, skb_get_queue_mapping(skb));=0D }=0D # 3513 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_wake_subqueue(str= uct net_device *dev, u16 queue_index)=0D {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, queue_index);=0D =0D netif_tx_wake_queue(txq);=0D }=0D =0D =0D int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask,= =0D u16 index);=0D int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask= ,=0D u16 index, enum xps_map_type type);=0D # 3534 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_attr_test_mask(un= signed long j,=0D const unsigned long *mask,=0D unsigned int nr_bits)=0D {=0D cpu_max_bits_warn(j, nr_bits);=0D return arch_test_bit(j, mask);=0D }=0D # 3550 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_attr_test_online(= unsigned long j,=0D const unsigned long *online_mask,=0D unsigned int nr_bits)=0D {=0D cpu_max_bits_warn(j, nr_bits);=0D =0D if (online_mask)=0D return arch_test_bit(j, online_mask);=0D =0D return (j < nr_bits);=0D }=0D # 3570 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int netif_attrmask_= next(int n, const unsigned long *srcp,=0D unsigned int nr_bits)=0D {=0D =0D if (n !=3D -1)=0D cpu_max_bits_warn(n, nr_bits);=0D =0D if (srcp)=0D return find_next_bit(srcp, nr_bits, n + 1);=0D =0D return n + 1;=0D }=0D # 3592 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int netif_attrmask_next_and(= int n, const unsigned long *src1p,=0D const unsigned long *src2p,=0D unsigned int nr_bits)=0D {=0D =0D if (n !=3D -1)=0D cpu_max_bits_warn(n, nr_bits);=0D =0D if (src1p && src2p)=0D return find_next_and_bit(src1p, src2p, nr_bits, n + 1);=0D else if (src1p)=0D return find_next_bit(src1p, nr_bits, n + 1);=0D else if (src2p)=0D return find_next_bit(src2p, nr_bits, n + 1);=0D =0D return n + 1;=0D }=0D # 3631 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_multiqueue(con= st struct net_device *dev)=0D {=0D return dev->num_tx_queues > 1;=0D }=0D =0D int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq);= =0D =0D =0D int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq);= =0D # 3648 "./include/linux/netdevice.h"=0D int netif_set_real_num_queues(struct net_device *dev,=0D unsigned int txq, unsigned int rxq);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct netdev_rx_queue *=0D __netif_get_rx_queue(struct net_device *dev, unsigned int rxq)=0D {=0D return dev->_rx + rxq;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int get_netdev_rx_q= ueue_index(=0D struct netdev_rx_queue *queue)=0D {=0D struct net_device *dev =3D queue->dev;=0D int index =3D queue - dev->_rx;=0D =0D do { if (__builtin_expect(!!(index >=3D dev->num_rx_queues), 0)) do { do {= __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\= "\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half"= " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("= include/linux/netdevice.h"), "i" (3664), "i" (0), "i" (sizeof(struct bug_en= try))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (= 0); } while (0);=0D return index;=0D }=0D =0D =0D int netif_get_num_default_rss_queues(void);=0D =0D enum skb_free_reason {=0D SKB_REASON_CONSUMED,=0D SKB_REASON_DROPPED,=0D };=0D =0D void __dev_kfree_skb_irq(struct sk_buff *skb, enum skb_free_reason reason);= =0D void __dev_kfree_skb_any(struct sk_buff *skb, enum skb_free_reason reason);= =0D # 3698 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_kfree_skb_irq(struc= t sk_buff *skb)=0D {=0D __dev_kfree_skb_irq(skb, SKB_REASON_DROPPED);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_consume_skb_irq(str= uct sk_buff *skb)=0D {=0D __dev_kfree_skb_irq(skb, SKB_REASON_CONSUMED);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_kfree_skb_any(struc= t sk_buff *skb)=0D {=0D __dev_kfree_skb_any(skb, SKB_REASON_DROPPED);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_consume_skb_any(str= uct sk_buff *skb)=0D {=0D __dev_kfree_skb_any(skb, SKB_REASON_CONSUMED);=0D }=0D =0D u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp,=0D struct bpf_prog *xdp_prog);=0D void generic_xdp_tx(struct sk_buff *skb, struct bpf_prog *xdp_prog);=0D int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb);=0D int netif_rx(struct sk_buff *skb);=0D int __netif_rx(struct sk_buff *skb);=0D =0D int netif_receive_skb(struct sk_buff *skb);=0D int netif_receive_skb_core(struct sk_buff *skb);=0D void netif_receive_skb_list_internal(struct list_head *head);=0D void netif_receive_skb_list(struct list_head *head);=0D gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb= );=0D void napi_gro_flush(struct napi_struct *napi, bool flush_old);=0D struct sk_buff *napi_get_frags(struct napi_struct *napi);=0D gro_result_t napi_gro_frags(struct napi_struct *napi);=0D struct packet_offload *gro_find_receive_by_type(__be16 type);=0D struct packet_offload *gro_find_complete_by_type(__be16 type);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void napi_free_frags(struct = napi_struct *napi)=0D {=0D kfree_skb(napi->skb);=0D napi->skb =3D ((void *)0);=0D }=0D =0D bool netdev_is_rx_handler_busy(struct net_device *dev);=0D int netdev_rx_handler_register(struct net_device *dev,=0D rx_handler_func_t *rx_handler,=0D void *rx_handler_data);=0D void netdev_rx_handler_unregister(struct net_device *dev);=0D =0D bool dev_valid_name(const char *name);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_socket_ioctl_cmd(uns= igned int cmd)=0D {=0D return (((cmd) >> (0 +8)) & ((1 << 8)-1)) =3D=3D 0x89;=0D }=0D int get_user_ifreq(struct ifreq *ifr, void **ifrdata, void *arg);=0D int put_user_ifreq(struct ifreq *ifr, void *arg);=0D int dev_ioctl(struct net *net, unsigned int cmd, struct ifreq *ifr,=0D void *data, bool *need_copyout);=0D int dev_ifconf(struct net *net, struct ifconf *ifc);=0D int dev_ethtool(struct net *net, struct ifreq *ifr, void *userdata);=0D unsigned int dev_get_flags(const struct net_device *);=0D int __dev_change_flags(struct net_device *dev, unsigned int flags,=0D struct netlink_ext_ack *extack);=0D int dev_change_flags(struct net_device *dev, unsigned int flags,=0D struct netlink_ext_ack *extack);=0D void __dev_notify_flags(struct net_device *, unsigned int old_flags,=0D unsigned int gchanges);=0D int dev_change_name(struct net_device *, const char *);=0D int dev_set_alias(struct net_device *, const char *, size_t);=0D int dev_get_alias(const struct net_device *, char *, size_t);=0D int __dev_change_net_namespace(struct net_device *dev, struct net *net,=0D const char *pat, int new_ifindex);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int dev_change_net_namespace(struct net_device *dev, struct net *net,=0D const char *pat)=0D {=0D return __dev_change_net_namespace(dev, net, pat, 0);=0D }=0D int __dev_set_mtu(struct net_device *, int);=0D int dev_validate_mtu(struct net_device *dev, int mtu,=0D struct netlink_ext_ack *extack);=0D int dev_set_mtu_ext(struct net_device *dev, int mtu,=0D struct netlink_ext_ack *extack);=0D int dev_set_mtu(struct net_device *, int);=0D int dev_change_tx_queue_len(struct net_device *, unsigned long);=0D void dev_set_group(struct net_device *, int);=0D int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,=0D struct netlink_ext_ack *extack);=0D int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,=0D struct netlink_ext_ack *extack);=0D int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,=0D struct netlink_ext_ack *extack);=0D int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_nam= e);=0D int dev_change_carrier(struct net_device *, bool new_carrier);=0D int dev_get_phys_port_id(struct net_device *dev,=0D struct netdev_phys_item_id *ppid);=0D int dev_get_phys_port_name(struct net_device *dev,=0D char *name, size_t len);=0D int dev_get_port_parent_id(struct net_device *dev,=0D struct netdev_phys_item_id *ppid, bool recurse);=0D bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b)= ;=0D int dev_change_proto_down(struct net_device *dev, bool proto_down);=0D void dev_change_proto_down_reason(struct net_device *dev, unsigned long mas= k,=0D u32 value);=0D struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_devi= ce *dev, bool *again);=0D struct sk_buff *dev_hard_start_xmit(struct sk_buff *skb, struct net_device = *dev,=0D struct netdev_queue *txq, int *ret);=0D =0D typedef int (*bpf_op_t)(struct net_device *dev, struct netdev_bpf *bpf);=0D int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extac= k,=0D int fd, int expected_fd, u32 flags);=0D int bpf_xdp_link_attach(const union bpf_attr *attr, struct bpf_prog *prog);= =0D u8 dev_xdp_prog_count(struct net_device *dev);=0D u32 dev_xdp_prog_id(struct net_device *dev, enum bpf_xdp_mode mode);=0D =0D int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb);=0D int dev_forward_skb(struct net_device *dev, struct sk_buff *skb);=0D int dev_forward_skb_nomtu(struct net_device *dev, struct sk_buff *skb);=0D bool is_skb_forwardable(const struct net_device *dev,=0D const struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool __is_skb_forwardable(const struct net_device *dev,=0D const struct sk_buff *skb,=0D const bool check_mtu)=0D {=0D const u32 vlan_hdr_len =3D 4;=0D unsigned int len;=0D =0D if (!(dev->flags & IFF_UP))=0D return false;=0D =0D if (!check_mtu)=0D return true;=0D =0D len =3D dev->mtu + dev->hard_header_len + vlan_hdr_len;=0D if (skb->len <=3D len)=0D return true;=0D =0D =0D =0D =0D if (skb_is_gso(skb))=0D return true;=0D =0D return false;=0D }=0D =0D struct net_device_core_stats *netdev_core_stats_alloc(struct net_device *de= v);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device_core_stats= *dev_core_stats(struct net_device *dev)=0D {=0D =0D struct net_device_core_stats *p =3D ({ do { __attribute__((__noreturn__)) = extern void __compiletime_assert_301(void) ; if (!((sizeof(dev->core_stats)= =3D=3D sizeof(char) || sizeof(dev->core_stats) =3D=3D sizeof(short) || siz= eof(dev->core_stats) =3D=3D sizeof(int) || sizeof(dev->core_stats) =3D=3D s= izeof(long)) || sizeof(dev->core_stats) =3D=3D sizeof(long long))) __compil= etime_assert_301(); } while (0); (*(const volatile typeof( _Generic((dev->c= ore_stats), char: (char)0, unsigned char: (unsigned char)0, signed char: (s= igned char)0, unsigned short: (unsigned short)0, signed short: (signed shor= t)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lon= g: (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsi= gned long long)0, signed long long: (signed long long)0, default: (dev->cor= e_stats))) *)&(dev->core_stats)); });=0D =0D if (__builtin_expect(!!(p), 1))=0D return p;=0D =0D return netdev_core_stats_alloc(dev);=0D }=0D # 3868 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_core_stats_rx_dropp= ed_inc(struct net_device *dev) { struct net_device_core_stats *p; p =3D dev= _core_stats(dev); if (p) do { do { const void *__vpp_verify =3D (typeof((&(= p->rx_dropped)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(s= izeof(p->rx_dropped)) { case 1: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(p->rx_dropped)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped))); (typeof((typeof(*(&= (p->rx_dropped))) *)(&(p->rx_dropped)))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(p->rx_dropped)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsig= ned long) ((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped))); (typeof((typ= eof(*(&(p->rx_dropped))) *)(&(p->rx_dropped)))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while= (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__fl= ags); } while (0); } while (0);break; case 4: do { unsigned long __flags; d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(p->rx_dropped)) + 0))((vo= id *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D= (unsigned long) ((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped))); (type= of((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped)))) (__ptr + (((__per_cp= u_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; = } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_resto= re(__flags); } while (0); } while (0);break; case 8: do { unsigned long __f= lags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0= ); do { *({ do { const void *__vpp_verify =3D (typeof((&(p->rx_dropped)) + = 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __= ptr =3D (unsigned long) ((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped)))= ; (typeof((typeof(*(&(p->rx_dropped))) *)(&(p->rx_dropped)))) (__ptr + (((_= _per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2= ; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_ir= q_restore(__flags); } while (0); } while (0);break; default: __bad_size_cal= l_parameter();break; } } while (0); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_core_stats_tx_dropp= ed_inc(struct net_device *dev) { struct net_device_core_stats *p; p =3D dev= _core_stats(dev); if (p) do { do { const void *__vpp_verify =3D (typeof((&(= p->tx_dropped)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(s= izeof(p->tx_dropped)) { case 1: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(p->tx_dropped)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped))); (typeof((typeof(*(&= (p->tx_dropped))) *)(&(p->tx_dropped)))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(p->tx_dropped)) + 0))((void *)0)= ; (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsig= ned long) ((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped))); (typeof((typ= eof(*(&(p->tx_dropped))) *)(&(p->tx_dropped)))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while= (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__fl= ags); } while (0); } while (0);break; case 4: do { unsigned long __flags; d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(p->tx_dropped)) + 0))((vo= id *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D= (unsigned long) ((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped))); (type= of((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped)))) (__ptr + (((__per_cp= u_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; = } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_resto= re(__flags); } while (0); } while (0);break; case 8: do { unsigned long __f= lags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0= ); do { *({ do { const void *__vpp_verify =3D (typeof((&(p->tx_dropped)) + = 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __= ptr =3D (unsigned long) ((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped)))= ; (typeof((typeof(*(&(p->tx_dropped))) *)(&(p->tx_dropped)))) (__ptr + (((_= _per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2= ; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_ir= q_restore(__flags); } while (0); } while (0);break; default: __bad_size_cal= l_parameter();break; } } while (0); }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_core_stats_rx_nohan= dler_inc(struct net_device *dev) { struct net_device_core_stats *p; p =3D d= ev_core_stats(dev); if (p) do { do { const void *__vpp_verify =3D (typeof((= &(p->rx_nohandler)) + 0))((void *)0); (void)__vpp_verify; } while (0); swit= ch(sizeof(p->rx_nohandler)) { case 1: do { unsigned long __flags; do { ({ u= nsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__d= ummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do = { const void *__vpp_verify =3D (typeof((&(p->rx_nohandler)) + 0))((void *)0= ); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsi= gned long) ((typeof(*(&(p->rx_nohandler))) *)(&(p->rx_nohandler))); (typeof= ((typeof(*(&(p->rx_nohandler))) *)(&(p->rx_nohandler)))) (__ptr + (((__per_= cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1= ; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (vo= id)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_res= tore(__flags); } while (0); } while (0);break; case 2: do { unsigned long _= _flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while = (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(p->rx_nohandler)= ) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr= ; __ptr =3D (unsigned long) ((typeof(*(&(p->rx_nohandler))) *)(&(p->rx_noha= ndler))); (typeof((typeof(*(&(p->rx_nohandler))) *)(&(p->rx_nohandler)))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__fla= gs) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); a= rch_local_irq_restore(__flags); } while (0); } while (0);break; case 4: do = { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __d= ummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq= _save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&= (p->rx_nohandler)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(p->rx_nohandler))= ) *)(&(p->rx_nohandler))); (typeof((typeof(*(&(p->rx_nohandler))) *)(&(p->r= x_nohandler)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __du= mmy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do= { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);b= reak; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; ty= peof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(p->rx_nohandler)) + 0))((void *)0); (void)__vpp_verify; = } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&= (p->rx_nohandler))) *)(&(p->rx_nohandler))); (typeof((typeof(*(&(p->rx_noha= ndler))) *)(&(p->rx_nohandler)))) (__ptr + (((__per_cpu_offset[(((struct th= read_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while = (0); } while (0);break; default: __bad_size_call_parameter();break; } } whi= le (0); }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int ____dev_forward_skb(struct net_device *dev,=0D struct sk_buff *skb,=0D const bool check_mtu)=0D {=0D if (skb_orphan_frags(skb, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800= u))) ||=0D __builtin_expect(!!(!__is_skb_forwardable(dev, skb, check_mtu)), 0)) {= =0D dev_core_stats_rx_dropped_inc(dev);=0D kfree_skb(skb);=0D return 1;=0D }=0D =0D skb_scrub_packet(skb, !net_eq(dev_net(dev), dev_net(skb->dev)));=0D skb->priority =3D 0;=0D return 0;=0D }=0D =0D bool dev_nit_active(struct net_device *dev);=0D void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev);=0D =0D extern int netdev_budget;=0D extern unsigned int netdev_budget_usecs;=0D =0D =0D void netdev_run_todo(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dev_put(struct net_de= vice *dev)=0D {=0D if (dev) {=0D =0D do { do { const void *__vpp_verify =3D (typeof((&(*dev->pcpu_refcnt)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*dev->pcpu_re= fcnt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy;= typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flag= s =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_v= erify =3D (typeof((&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt))); (typeof((typeof(*(&(*d= ev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt)))) (__ptr + (((__per_cpu_offset[= (((struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(*de= v->pcpu_refcnt))(1); } while (0); do { ({ unsigned long __dummy; typeof(__f= lags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0);= arch_local_irq_restore(__flags); } while (0); } while (0);break; case 2: d= o { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) _= _dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_i= rq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof(= (&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_verify; } while (0); (= { unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*dev->pcpu_re= fcnt))) *)(&(*dev->pcpu_refcnt))); (typeof((typeof(*(&(*dev->pcpu_refcnt)))= *)(&(*dev->pcpu_refcnt)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D -(typeof(*dev->pcpu_refcnt))(1= ); } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (v= oid)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_re= store(__flags); } while (0); } while (0);break; case 4: do { unsigned long = __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&_= _dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while= (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*dev->pcpu_refc= nt)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __= ptr; __ptr =3D (unsigned long) ((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev-= >pcpu_refcnt))); (typeof((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_r= efcnt)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D -(typeof(*dev->pcpu_refcnt))(1); } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(*dev->pcpu_refcnt)) + 0))((void = *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (u= nsigned long) ((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt))); = (typeof((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt)))) (__ptr = + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); })= ; }) +=3D -(typeof(*dev->pcpu_refcnt))(1); } while (0); do { ({ unsigned lo= ng __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1;= }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whil= e (0);break; default: __bad_size_call_parameter();break; } } while (0);=0D =0D =0D =0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dev_hold(struct net_d= evice *dev)=0D {=0D if (dev) {=0D =0D do { do { const void *__vpp_verify =3D (typeof((&(*dev->pcpu_refcnt)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(*dev->pcpu_re= fcnt)) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy;= typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flag= s =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_v= erify =3D (typeof((&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt))); (typeof((typeof(*(&(*d= ev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt)))) (__ptr + (((__per_cpu_offset[= (((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (= 0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flag= s); } while (0); } while (0);break; case 2: do { unsigned long __flags; do = { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(*dev->pcpu_refcnt)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refc= nt))); (typeof((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt)))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); = arch_local_irq_restore(__flags); } while (0); } while (0);break; case 4: do= { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_ir= q_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((= &(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*dev->pcpu_ref= cnt))) *)(&(*dev->pcpu_refcnt))); (typeof((typeof(*(&(*dev->pcpu_refcnt))) = *)(&(*dev->pcpu_refcnt)))) (__ptr + (((__per_cpu_offset[(((struct thread_in= fo *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } = while (0);break; case 8: do { unsigned long __flags; do { ({ unsigned long = __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; })= ; __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void = *__vpp_verify =3D (typeof((&(*dev->pcpu_refcnt)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt))); (typeof((typeo= f(*(&(*dev->pcpu_refcnt))) *)(&(*dev->pcpu_refcnt)))) (__ptr + (((__per_cpu= _offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; }= while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(__flags); } while (0); } while (0);break; default: __bad_size_call_parame= ter();break; } } while (0);=0D =0D =0D =0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netdev_tracker_alloc(= struct net_device *dev,=0D netdevice_tracker *tracker,=0D gfp_t gfp)=0D {=0D =0D =0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_tracker_alloc(st= ruct net_device *dev,=0D netdevice_tracker *tracker, gfp_t gfp)=0D {=0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netdev_tracker_free(str= uct net_device *dev,=0D netdevice_tracker *tracker)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_hold_track(struct n= et_device *dev,=0D netdevice_tracker *tracker, gfp_t gfp)=0D {=0D if (dev) {=0D __dev_hold(dev);=0D __netdev_tracker_alloc(dev, tracker, gfp);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_put_track(struct ne= t_device *dev,=0D netdevice_tracker *tracker)=0D {=0D if (dev) {=0D netdev_tracker_free(dev, tracker);=0D __dev_put(dev);=0D }=0D }=0D # 3973 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_hold(struct net_dev= ice *dev)=0D {=0D dev_hold_track(dev, ((void *)0), ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_= t)0x800u)));=0D }=0D # 3985 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_put(struct net_devi= ce *dev)=0D {=0D dev_put_track(dev, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_replace_track(struc= t net_device *odev,=0D struct net_device *ndev,=0D netdevice_tracker *tracker,=0D gfp_t gfp)=0D {=0D if (odev)=0D netdev_tracker_free(odev, tracker);=0D =0D __dev_hold(ndev);=0D __dev_put(odev);=0D =0D if (ndev)=0D __netdev_tracker_alloc(ndev, tracker, gfp);=0D }=0D # 4014 "./include/linux/netdevice.h"=0D void linkwatch_init_dev(struct net_device *dev);=0D void linkwatch_fire_event(struct net_device *dev);=0D void linkwatch_forget_dev(struct net_device *dev);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_carrier_ok(const = struct net_device *dev)=0D {=0D return !arch_test_bit(__LINK_STATE_NOCARRIER, &dev->state);=0D }=0D =0D unsigned long dev_trans_start(struct net_device *dev);=0D =0D void __netdev_watchdog_up(struct net_device *dev);=0D =0D void netif_carrier_on(struct net_device *dev);=0D void netif_carrier_off(struct net_device *dev);=0D void netif_carrier_event(struct net_device *dev);=0D # 4049 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_dormant_on(struct= net_device *dev)=0D {=0D if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state))=0D linkwatch_fire_event(dev);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_dormant_off(struc= t net_device *dev)=0D {=0D if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state))=0D linkwatch_fire_event(dev);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_dormant(const str= uct net_device *dev)=0D {=0D return arch_test_bit(__LINK_STATE_DORMANT, &dev->state);=0D }=0D # 4089 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_testing_on(struct= net_device *dev)=0D {=0D if (!test_and_set_bit(__LINK_STATE_TESTING, &dev->state))=0D linkwatch_fire_event(dev);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_testing_off(struc= t net_device *dev)=0D {=0D if (test_and_clear_bit(__LINK_STATE_TESTING, &dev->state))=0D linkwatch_fire_event(dev);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_testing(const str= uct net_device *dev)=0D {=0D return arch_test_bit(__LINK_STATE_TESTING, &dev->state);=0D }=0D # 4125 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_oper_up(const str= uct net_device *dev)=0D {=0D return (dev->operstate =3D=3D IF_OPER_UP ||=0D dev->operstate =3D=3D IF_OPER_UNKNOWN );=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_device_present(co= nst struct net_device *dev)=0D {=0D return arch_test_bit(__LINK_STATE_PRESENT, &dev->state);=0D }=0D =0D void netif_device_detach(struct net_device *dev);=0D =0D void netif_device_attach(struct net_device *dev);=0D =0D =0D =0D =0D =0D enum {=0D NETIF_MSG_DRV_BIT,=0D NETIF_MSG_PROBE_BIT,=0D NETIF_MSG_LINK_BIT,=0D NETIF_MSG_TIMER_BIT,=0D NETIF_MSG_IFDOWN_BIT,=0D NETIF_MSG_IFUP_BIT,=0D NETIF_MSG_RX_ERR_BIT,=0D NETIF_MSG_TX_ERR_BIT,=0D NETIF_MSG_TX_QUEUED_BIT,=0D NETIF_MSG_INTR_BIT,=0D NETIF_MSG_TX_DONE_BIT,=0D NETIF_MSG_RX_STATUS_BIT,=0D NETIF_MSG_PKTDATA_BIT,=0D NETIF_MSG_HW_BIT,=0D NETIF_MSG_WOL_BIT,=0D =0D =0D =0D =0D NETIF_MSG_CLASS_COUNT,=0D };=0D =0D _Static_assert(NETIF_MSG_CLASS_COUNT <=3D 32, "NETIF_MSG_CLASS_COUNT <=3D 3= 2");=0D # 4210 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 netif_msg_init(int debug= _value, int default_msg_enable_bits)=0D {=0D =0D if (debug_value < 0 || debug_value >=3D (sizeof(u32) * 8))=0D return default_msg_enable_bits;=0D if (debug_value =3D=3D 0)=0D return 0;=0D =0D return (1U << debug_value) - 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netif_tx_lock(struct = netdev_queue *txq, int cpu)=0D {=0D spin_lock(&txq->_xmit_lock);=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 02(void) ; if (!((sizeof(txq->xmit_lock_owner) =3D=3D sizeof(char) || sizeo= f(txq->xmit_lock_owner) =3D=3D sizeof(short) || sizeof(txq->xmit_lock_owner= ) =3D=3D sizeof(int) || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long)) |= | sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long long))) __compiletime_ass= ert_302(); } while (0); do { *(volatile typeof(txq->xmit_lock_owner) *)&(tx= q->xmit_lock_owner) =3D (cpu); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __netif_tx_acquire(stru= ct netdev_queue *txq)=0D {=0D (void)0;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netif_tx_release(stru= ct netdev_queue *txq)=0D {=0D (void)0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netif_tx_lock_bh(stru= ct netdev_queue *txq)=0D {=0D spin_lock_bh(&txq->_xmit_lock);=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 03(void) ; if (!((sizeof(txq->xmit_lock_owner) =3D=3D sizeof(char) || sizeo= f(txq->xmit_lock_owner) =3D=3D sizeof(short) || sizeof(txq->xmit_lock_owner= ) =3D=3D sizeof(int) || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long)) |= | sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long long))) __compiletime_ass= ert_303(); } while (0); do { *(volatile typeof(txq->xmit_lock_owner) *)&(tx= q->xmit_lock_owner) =3D ((((struct thread_info *)get_current())->cpu)); } w= hile (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __netif_tx_trylock(stru= ct netdev_queue *txq)=0D {=0D bool ok =3D spin_trylock(&txq->_xmit_lock);=0D =0D if (__builtin_expect(!!(ok), 1)) {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 304(void) ; if (!((sizeof(txq->xmit_lock_owner) =3D=3D sizeof(char) || size= of(txq->xmit_lock_owner) =3D=3D sizeof(short) || sizeof(txq->xmit_lock_owne= r) =3D=3D sizeof(int) || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long)) = || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long long))) __compiletime_as= sert_304(); } while (0); do { *(volatile typeof(txq->xmit_lock_owner) *)&(t= xq->xmit_lock_owner) =3D ((((struct thread_info *)get_current())->cpu)); } = while (0); } while (0);=0D }=0D return ok;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netif_tx_unlock(struc= t netdev_queue *txq)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 05(void) ; if (!((sizeof(txq->xmit_lock_owner) =3D=3D sizeof(char) || sizeo= f(txq->xmit_lock_owner) =3D=3D sizeof(short) || sizeof(txq->xmit_lock_owner= ) =3D=3D sizeof(int) || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long)) |= | sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long long))) __compiletime_ass= ert_305(); } while (0); do { *(volatile typeof(txq->xmit_lock_owner) *)&(tx= q->xmit_lock_owner) =3D (-1); } while (0); } while (0);=0D spin_unlock(&txq->_xmit_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __netif_tx_unlock_bh(st= ruct netdev_queue *txq)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 06(void) ; if (!((sizeof(txq->xmit_lock_owner) =3D=3D sizeof(char) || sizeo= f(txq->xmit_lock_owner) =3D=3D sizeof(short) || sizeof(txq->xmit_lock_owner= ) =3D=3D sizeof(int) || sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long)) |= | sizeof(txq->xmit_lock_owner) =3D=3D sizeof(long long))) __compiletime_ass= ert_306(); } while (0); do { *(volatile typeof(txq->xmit_lock_owner) *)&(tx= q->xmit_lock_owner) =3D (-1); } while (0); } while (0);=0D spin_unlock_bh(&txq->_xmit_lock);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void txq_trans_update(struct= netdev_queue *txq)=0D {=0D if (txq->xmit_lock_owner !=3D -1)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 307(void) ; if (!((sizeof(txq->trans_start) =3D=3D sizeof(char) || sizeof(t= xq->trans_start) =3D=3D sizeof(short) || sizeof(txq->trans_start) =3D=3D si= zeof(int) || sizeof(txq->trans_start) =3D=3D sizeof(long)) || sizeof(txq->t= rans_start) =3D=3D sizeof(long long))) __compiletime_assert_307(); } while = (0); do { *(volatile typeof(txq->trans_start) *)&(txq->trans_start) =3D (ji= ffies); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void txq_trans_cond_update(s= truct netdev_queue *txq)=0D {=0D unsigned long now =3D jiffies;=0D =0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _308(void) ; if (!((sizeof(txq->trans_start) =3D=3D sizeof(char) || sizeof(= txq->trans_start) =3D=3D sizeof(short) || sizeof(txq->trans_start) =3D=3D s= izeof(int) || sizeof(txq->trans_start) =3D=3D sizeof(long)) || sizeof(txq->= trans_start) =3D=3D sizeof(long long))) __compiletime_assert_308(); } while= (0); (*(const volatile typeof( _Generic((txq->trans_start), char: (char)0,= unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned sho= rt: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsign= ed int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signe= d long: (signed long)0, unsigned long long: (unsigned long long)0, signed l= ong long: (signed long long)0, default: (txq->trans_start))) *)&(txq->trans= _start)); }) !=3D now)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 309(void) ; if (!((sizeof(txq->trans_start) =3D=3D sizeof(char) || sizeof(t= xq->trans_start) =3D=3D sizeof(short) || sizeof(txq->trans_start) =3D=3D si= zeof(int) || sizeof(txq->trans_start) =3D=3D sizeof(long)) || sizeof(txq->t= rans_start) =3D=3D sizeof(long long))) __compiletime_assert_309(); } while = (0); do { *(volatile typeof(txq->trans_start) *)&(txq->trans_start) =3D (no= w); } while (0); } while (0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_trans_update(stru= ct net_device *dev)=0D {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, 0);=0D =0D txq_trans_cond_update(txq);=0D }=0D =0D =0D =0D =0D =0D =0D =0D void netif_tx_lock(struct net_device *dev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_lock_bh(struct= net_device *dev)=0D {=0D local_bh_disable();=0D netif_tx_lock(dev);=0D }=0D =0D void netif_tx_unlock(struct net_device *dev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_unlock_bh(stru= ct net_device *dev)=0D {=0D netif_tx_unlock(dev);=0D local_bh_enable();=0D }=0D # 4339 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_tx_disable(struct= net_device *dev)=0D {=0D unsigned int i;=0D int cpu;=0D =0D local_bh_disable();=0D cpu =3D (((struct thread_info *)get_current())->cpu);=0D spin_lock(&dev->tx_global_lock);=0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D =0D __netif_tx_lock(txq, cpu);=0D netif_tx_stop_queue(txq);=0D __netif_tx_unlock(txq);=0D }=0D spin_unlock(&dev->tx_global_lock);=0D local_bh_enable();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_addr_lock(struct = net_device *dev)=0D {=0D unsigned char nest_level =3D 0;=0D =0D =0D nest_level =3D dev->nested_level;=0D =0D do { _raw_spin_lock_nested(spinlock_check(&dev->addr_list_lock), nest_leve= l); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_addr_lock_bh(stru= ct net_device *dev)=0D {=0D unsigned char nest_level =3D 0;=0D =0D =0D nest_level =3D dev->nested_level;=0D =0D local_bh_disable();=0D do { _raw_spin_lock_nested(spinlock_check(&dev->addr_list_lock), nest_leve= l); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_addr_unlock(struc= t net_device *dev)=0D {=0D spin_unlock(&dev->addr_list_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_addr_unlock_bh(st= ruct net_device *dev)=0D {=0D spin_unlock_bh(&dev->addr_list_lock);=0D }=0D # 4398 "./include/linux/netdevice.h"=0D void ether_setup(struct net_device *dev);=0D =0D =0D struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,=0D unsigned char name_assign_type,=0D void (*setup)(struct net_device *),=0D unsigned int txqs, unsigned int rxqs);=0D =0D =0D =0D =0D =0D =0D =0D int register_netdev(struct net_device *dev);=0D void unregister_netdev(struct net_device *dev);=0D =0D int devm_register_netdev(struct device *dev, struct net_device *ndev);=0D =0D =0D int __hw_addr_sync(struct netdev_hw_addr_list *to_list,=0D struct netdev_hw_addr_list *from_list, int addr_len);=0D void __hw_addr_unsync(struct netdev_hw_addr_list *to_list,=0D struct netdev_hw_addr_list *from_list, int addr_len);=0D int __hw_addr_sync_dev(struct netdev_hw_addr_list *list,=0D struct net_device *dev,=0D int (*sync)(struct net_device *, const unsigned char *),=0D int (*unsync)(struct net_device *,=0D const unsigned char *));=0D int __hw_addr_ref_sync_dev(struct netdev_hw_addr_list *list,=0D struct net_device *dev,=0D int (*sync)(struct net_device *,=0D const unsigned char *, int),=0D int (*unsync)(struct net_device *,=0D const unsigned char *, int));=0D void __hw_addr_ref_unsync_dev(struct netdev_hw_addr_list *list,=0D struct net_device *dev,=0D int (*unsync)(struct net_device *,=0D const unsigned char *, int));=0D void __hw_addr_unsync_dev(struct netdev_hw_addr_list *list,=0D struct net_device *dev,=0D int (*unsync)(struct net_device *,=0D const unsigned char *));=0D void __hw_addr_init(struct netdev_hw_addr_list *list);=0D =0D =0D void dev_addr_mod(struct net_device *dev, unsigned int offset,=0D const void *addr, size_t len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __dev_addr_set(struct net_device *dev, const void *addr, size_t len)=0D {=0D dev_addr_mod(dev, 0, addr, len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dev_addr_set(struct net= _device *dev, const u8 *addr)=0D {=0D __dev_addr_set(dev, addr, dev->addr_len);=0D }=0D =0D int dev_addr_add(struct net_device *dev, const unsigned char *addr,=0D unsigned char addr_type);=0D int dev_addr_del(struct net_device *dev, const unsigned char *addr,=0D unsigned char addr_type);=0D void dev_addr_flush(struct net_device *dev);=0D int dev_addr_init(struct net_device *dev);=0D void dev_addr_check(struct net_device *dev);=0D =0D =0D int dev_uc_add(struct net_device *dev, const unsigned char *addr);=0D int dev_uc_add_excl(struct net_device *dev, const unsigned char *addr);=0D int dev_uc_del(struct net_device *dev, const unsigned char *addr);=0D int dev_uc_sync(struct net_device *to, struct net_device *from);=0D int dev_uc_sync_multiple(struct net_device *to, struct net_device *from);=0D void dev_uc_unsync(struct net_device *to, struct net_device *from);=0D void dev_uc_flush(struct net_device *dev);=0D void dev_uc_init(struct net_device *dev);=0D # 4485 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __dev_uc_sync(struct net= _device *dev,=0D int (*sync)(struct net_device *,=0D const unsigned char *),=0D int (*unsync)(struct net_device *,=0D const unsigned char *))=0D {=0D return __hw_addr_sync_dev(&dev->uc, dev, sync, unsync);=0D }=0D # 4501 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dev_uc_unsync(struct = net_device *dev,=0D int (*unsync)(struct net_device *,=0D const unsigned char *))=0D {=0D __hw_addr_unsync_dev(&dev->uc, dev, unsync);=0D }=0D =0D =0D int dev_mc_add(struct net_device *dev, const unsigned char *addr);=0D int dev_mc_add_global(struct net_device *dev, const unsigned char *addr);=0D int dev_mc_add_excl(struct net_device *dev, const unsigned char *addr);=0D int dev_mc_del(struct net_device *dev, const unsigned char *addr);=0D int dev_mc_del_global(struct net_device *dev, const unsigned char *addr);=0D int dev_mc_sync(struct net_device *to, struct net_device *from);=0D int dev_mc_sync_multiple(struct net_device *to, struct net_device *from);=0D void dev_mc_unsync(struct net_device *to, struct net_device *from);=0D void dev_mc_flush(struct net_device *dev);=0D void dev_mc_init(struct net_device *dev);=0D # 4529 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __dev_mc_sync(struct net= _device *dev,=0D int (*sync)(struct net_device *,=0D const unsigned char *),=0D int (*unsync)(struct net_device *,=0D const unsigned char *))=0D {=0D return __hw_addr_sync_dev(&dev->mc, dev, sync, unsync);=0D }=0D # 4545 "./include/linux/netdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dev_mc_unsync(struct = net_device *dev,=0D int (*unsync)(struct net_device *,=0D const unsigned char *))=0D {=0D __hw_addr_unsync_dev(&dev->mc, dev, unsync);=0D }=0D =0D =0D void dev_set_rx_mode(struct net_device *dev);=0D void __dev_set_rx_mode(struct net_device *dev);=0D int dev_set_promiscuity(struct net_device *dev, int inc);=0D int dev_set_allmulti(struct net_device *dev, int inc);=0D void netdev_state_change(struct net_device *dev);=0D void __netdev_notify_peers(struct net_device *dev);=0D void netdev_notify_peers(struct net_device *dev);=0D void netdev_features_change(struct net_device *dev);=0D =0D void dev_load(struct net *net, const char *name);=0D struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,=0D struct rtnl_link_stats64 *storage);=0D void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,=0D const struct net_device_stats *netdev_stats);=0D void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,=0D const struct pcpu_sw_netstats *netstats);=0D void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s);= =0D =0D extern int netdev_max_backlog;=0D extern int netdev_tstamp_prequeue;=0D extern int netdev_unregister_timeout_secs;=0D extern int weight_p;=0D extern int dev_weight_rx_bias;=0D extern int dev_weight_tx_bias;=0D extern int dev_rx_weight;=0D extern int dev_tx_weight;=0D extern int gro_normal_batch;=0D =0D enum {=0D NESTED_SYNC_IMM_BIT,=0D NESTED_SYNC_TODO_BIT,=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct netdev_nested_priv {=0D unsigned char flags;=0D void *data;=0D };=0D =0D bool netdev_has_upper_dev(struct net_device *dev, struct net_device *upper_= dev);=0D struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,=0D struct list_head **iter);=0D # 4608 "./include/linux/netdevice.h"=0D int netdev_walk_all_upper_dev_rcu(struct net_device *dev,=0D int (*fn)(struct net_device *upper_dev,=0D struct netdev_nested_priv *priv),=0D struct netdev_nested_priv *priv);=0D =0D bool netdev_has_upper_dev_all_rcu(struct net_device *dev,=0D struct net_device *upper_dev);=0D =0D bool netdev_has_any_upper_dev(struct net_device *dev);=0D =0D void *netdev_lower_get_next_private(struct net_device *dev,=0D struct list_head **iter);=0D void *netdev_lower_get_next_private_rcu(struct net_device *dev,=0D struct list_head **iter);=0D # 4635 "./include/linux/netdevice.h"=0D void *netdev_lower_get_next(struct net_device *dev,=0D struct list_head **iter);=0D =0D =0D =0D =0D =0D =0D =0D struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev,=0D struct list_head **iter);=0D int netdev_walk_all_lower_dev(struct net_device *dev,=0D int (*fn)(struct net_device *lower_dev,=0D struct netdev_nested_priv *priv),=0D struct netdev_nested_priv *priv);=0D int netdev_walk_all_lower_dev_rcu(struct net_device *dev,=0D int (*fn)(struct net_device *lower_dev,=0D struct netdev_nested_priv *priv),=0D struct netdev_nested_priv *priv);=0D =0D void *netdev_adjacent_get_private(struct list_head *adj_list);=0D void *netdev_lower_get_first_private_rcu(struct net_device *dev);=0D struct net_device *netdev_master_upper_dev_get(struct net_device *dev);=0D struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev);= =0D int netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_= dev,=0D struct netlink_ext_ack *extack);=0D int netdev_master_upper_dev_link(struct net_device *dev,=0D struct net_device *upper_dev,=0D void *upper_priv, void *upper_info,=0D struct netlink_ext_ack *extack);=0D void netdev_upper_dev_unlink(struct net_device *dev,=0D struct net_device *upper_dev);=0D int netdev_adjacent_change_prepare(struct net_device *old_dev,=0D struct net_device *new_dev,=0D struct net_device *dev,=0D struct netlink_ext_ack *extack);=0D void netdev_adjacent_change_commit(struct net_device *old_dev,=0D struct net_device *new_dev,=0D struct net_device *dev);=0D void netdev_adjacent_change_abort(struct net_device *old_dev,=0D struct net_device *new_dev,=0D struct net_device *dev);=0D void netdev_adjacent_rename_links(struct net_device *dev, char *oldname);=0D void *netdev_lower_dev_get_private(struct net_device *dev,=0D struct net_device *lower_dev);=0D void netdev_lower_state_changed(struct net_device *lower_dev,=0D void *lower_state_info);=0D =0D =0D =0D extern u8 netdev_rss_key[52] ;=0D void netdev_rss_key_fill(void *buffer, size_t len);=0D =0D int skb_checksum_help(struct sk_buff *skb);=0D int skb_crc32c_csum_help(struct sk_buff *skb);=0D int skb_csum_hwoffload_help(struct sk_buff *skb,=0D const netdev_features_t features);=0D =0D struct sk_buff *__skb_gso_segment(struct sk_buff *skb,=0D netdev_features_t features, bool tx_path);=0D struct sk_buff *skb_eth_gso_segment(struct sk_buff *skb,=0D netdev_features_t features, __be16 type);=0D struct sk_buff *skb_mac_gso_segment(struct sk_buff *skb,=0D netdev_features_t features);=0D =0D struct netdev_bonding_info {=0D ifslave slave;=0D ifbond master;=0D };=0D =0D struct netdev_notifier_bonding_info {=0D struct netdev_notifier_info info;=0D struct netdev_bonding_info bonding_info;=0D };=0D =0D void netdev_bonding_info_change(struct net_device *dev,=0D struct netdev_bonding_info *bonding_info);=0D =0D =0D void ethtool_notify(struct net_device *dev, unsigned int cmd, const void *d= ata);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct sk_buff *skb_gso_segment(struct sk_buff *skb, netdev_features_t feat= ures)=0D {=0D return __skb_gso_segment(skb, features, true);=0D }=0D __be16 skb_network_protocol(struct sk_buff *skb, int *depth);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool can_checksum_protocol(n= etdev_features_t features,=0D __be16 protocol)=0D {=0D if (protocol =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x8906))) ? (= (__u16)( (((__u16)((0x8906)) & (__u16)0x00ffU) << 8) | (((__u16)((0x8906)) = & (__u16)0xff00U) >> 8))) : __fswab16((0x8906)))))=0D return !!(features & ((netdev_features_t)1 << (NETIF_F_FCOE_CRC_BIT)));=0D =0D =0D =0D if (features & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT))) {=0D =0D return true;=0D }=0D =0D switch (protocol) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D return !!(features & ((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT)));=0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D return !!(features & ((netdev_features_t)1 << (NETIF_F_IPV6_CSUM_BIT)));= =0D default:=0D return false;=0D }=0D }=0D =0D =0D void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb);=0D =0D =0D =0D =0D =0D =0D =0D void net_enable_timestamp(void);=0D void net_disable_timestamp(void);=0D =0D =0D int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __= attribute__((__no_sanitize__("cfi"))) dev_proc_init(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_tx_t __netdev_start_x= mit(const struct net_device_ops *ops,=0D struct sk_buff *skb, struct net_device *dev,=0D bool more)=0D {=0D ({ __this_cpu_preempt_check("write"); do { do { const void *__vpp_verify = =3D (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); switch(sizeof(softnet_data.xmit.more)) { case 1: do { *({ d= o { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_dat= a.xmit.more))); (typeof((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_= data.xmit.more)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }) =3D more; } while (0);break; case 2: do { *(= { do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0= ))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __p= tr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_= data.xmit.more))); (typeof((typeof(*(&(softnet_data.xmit.more))) *)(&(softn= et_data.xmit.more)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)= get_current())->cpu)])))); }); }) =3D more; } while (0);break; case 4: do {= *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.more)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softn= et_data.xmit.more))); (typeof((typeof(*(&(softnet_data.xmit.more))) *)(&(so= ftnet_data.xmit.more)))) (__ptr + (((__per_cpu_offset[(((struct thread_info= *)get_current())->cpu)])))); }); }) =3D more; } while (0);break; case 8: d= o { *({ do { const void *__vpp_verify =3D (typeof((&(softnet_data.xmit.more= )) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(&(softnet_data.xmit.more))) *)(&(so= ftnet_data.xmit.more))); (typeof((typeof(*(&(softnet_data.xmit.more))) *)(&= (softnet_data.xmit.more)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) =3D more; } while (0);break; defaul= t: __bad_size_call_parameter();break; } } while (0); });=0D return ops->ndo_start_xmit(skb, dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netdev_xmit_more(void)= =0D {=0D return ({ __this_cpu_preempt_check("read"); ({ typeof(softnet_data.xmit.mo= re) pscr_ret__; do { const void *__vpp_verify =3D (typeof((&(softnet_data.x= mit.more)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof= (softnet_data.xmit.more)) { case 1: pscr_ret__ =3D ({ *({ do { const void *= __vpp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (voi= d)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lo= ng) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))); = (typeof((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))= )) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu= )])))); }); }); }); break; case 2: pscr_ret__ =3D ({ *({ do { const void *_= _vpp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))); (= typeof((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more)))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); }); }); break; case 4: pscr_ret__ =3D ({ *({ do { const void *__= vpp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))); (t= ypeof((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))))= (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]= )))); }); }); }); break; case 8: pscr_ret__ =3D ({ *({ do { const void *__v= pp_verify =3D (typeof((&(softnet_data.xmit.more)) + 0))((void *)0); (void)_= _vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long)= ((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more))); (ty= peof((typeof(*(&(softnet_data.xmit.more))) *)(&(softnet_data.xmit.more)))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }); }); break; default: __bad_size_call_parameter(); break; } pscr= _ret__; }); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_tx_t netdev_start_xmi= t(struct sk_buff *skb, struct net_device *dev,=0D struct netdev_queue *txq, bool more)=0D {=0D const struct net_device_ops *ops =3D dev->netdev_ops;=0D netdev_tx_t rc;=0D =0D rc =3D __netdev_start_xmit(ops, skb, dev, more);=0D if (rc =3D=3D NETDEV_TX_OK)=0D txq_trans_update(txq);=0D =0D return rc;=0D }=0D =0D int netdev_class_create_file_ns(const struct class_attribute *class_attr,=0D const void *ns);=0D void netdev_class_remove_file_ns(const struct class_attribute *class_attr,= =0D const void *ns);=0D =0D extern const struct kobj_ns_type_operations net_ns_type_operations;=0D =0D const char *netdev_drivername(const struct net_device *dev);=0D =0D void linkwatch_run_queue(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_features_t netdev_int= ersect_features(netdev_features_t f1,=0D netdev_features_t f2)=0D {=0D if ((f1 ^ f2) & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT))) {=0D if (f1 & ((netdev_features_t)1 << (NETIF_F_HW_CSUM_BIT)))=0D f1 |=3D (((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT))|((netdev_featur= es_t)1 << (NETIF_F_IPV6_CSUM_BIT)));=0D else=0D f2 |=3D (((netdev_features_t)1 << (NETIF_F_IP_CSUM_BIT))|((netdev_featur= es_t)1 << (NETIF_F_IPV6_CSUM_BIT)));=0D }=0D =0D return f1 & f2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_features_t netdev_get= _wanted_features(=0D struct net_device *dev)=0D {=0D return (dev->features & ~dev->hw_features) | dev->wanted_features;=0D }=0D netdev_features_t netdev_increment_features(netdev_features_t all,=0D netdev_features_t one, netdev_features_t mask);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_features_t netdev_add= _tso_features(netdev_features_t features,=0D netdev_features_t mask)=0D {=0D return netdev_increment_features(features, (((netdev_features_t)1 << (NETI= F_F_TSO_BIT)) | ((netdev_features_t)1 << (NETIF_F_TSO6_BIT)) | ((netdev_fea= tures_t)1 << (NETIF_F_TSO_ECN_BIT)) | ((netdev_features_t)1 << (NETIF_F_TSO= _MANGLEID_BIT))), mask);=0D }=0D =0D int __netdev_update_features(struct net_device *dev);=0D void netdev_update_features(struct net_device *dev);=0D void netdev_change_features(struct net_device *dev);=0D =0D void netif_stacked_transfer_operstate(const struct net_device *rootdev,=0D struct net_device *dev);=0D =0D netdev_features_t passthru_features_check(struct sk_buff *skb,=0D struct net_device *dev,=0D netdev_features_t features);=0D netdev_features_t netif_skb_features(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool net_gso_ok(netdev_featu= res_t features, int gso_type)=0D {=0D netdev_features_t feature =3D (netdev_features_t)gso_type << NETIF_F_GSO_S= HIFT;=0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_310(vo= id) ; if (!(!(SKB_GSO_TCPV4 !=3D (((netdev_features_t)1 << (NETIF_F_TSO_BIT= )) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_310(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_311(vo= id) ; if (!(!(SKB_GSO_DODGY !=3D (((netdev_features_t)1 << (NETIF_F_GSO_ROB= UST_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_311(); } while (0);= =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_312(vo= id) ; if (!(!(SKB_GSO_TCP_ECN !=3D (((netdev_features_t)1 << (NETIF_F_TSO_E= CN_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_312(); } while (0);= =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_313(vo= id) ; if (!(!(SKB_GSO_TCP_FIXEDID !=3D (((netdev_features_t)1 << (NETIF_F_T= SO_MANGLEID_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_313(); } wh= ile (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_314(vo= id) ; if (!(!(SKB_GSO_TCPV6 !=3D (((netdev_features_t)1 << (NETIF_F_TSO6_BI= T)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_314(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_315(vo= id) ; if (!(!(SKB_GSO_FCOE !=3D (((netdev_features_t)1 << (NETIF_F_FSO_BIT)= ) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_315(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_316(vo= id) ; if (!(!(SKB_GSO_GRE !=3D (((netdev_features_t)1 << (NETIF_F_GSO_GRE_B= IT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_316(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_317(vo= id) ; if (!(!(SKB_GSO_GRE_CSUM !=3D (((netdev_features_t)1 << (NETIF_F_GSO_= GRE_CSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_317(); } while= (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_318(vo= id) ; if (!(!(SKB_GSO_IPXIP4 !=3D (((netdev_features_t)1 << (NETIF_F_GSO_IP= XIP4_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_318(); } while (0)= ;=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_319(vo= id) ; if (!(!(SKB_GSO_IPXIP6 !=3D (((netdev_features_t)1 << (NETIF_F_GSO_IP= XIP6_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_319(); } while (0)= ;=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_320(vo= id) ; if (!(!(SKB_GSO_UDP_TUNNEL !=3D (((netdev_features_t)1 << (NETIF_F_GS= O_UDP_TUNNEL_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_320(); } w= hile (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_321(vo= id) ; if (!(!(SKB_GSO_UDP_TUNNEL_CSUM !=3D (((netdev_features_t)1 << (NETIF= _F_GSO_UDP_TUNNEL_CSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_= 321(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_322(vo= id) ; if (!(!(SKB_GSO_PARTIAL !=3D (((netdev_features_t)1 << (NETIF_F_GSO_P= ARTIAL_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_322(); } while (= 0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_323(vo= id) ; if (!(!(SKB_GSO_TUNNEL_REMCSUM !=3D (((netdev_features_t)1 << (NETIF_= F_GSO_TUNNEL_REMCSUM_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_32= 3(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_324(vo= id) ; if (!(!(SKB_GSO_SCTP !=3D (((netdev_features_t)1 << (NETIF_F_GSO_SCTP= _BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_324(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_325(vo= id) ; if (!(!(SKB_GSO_ESP !=3D (((netdev_features_t)1 << (NETIF_F_GSO_ESP_B= IT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_325(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_326(vo= id) ; if (!(!(SKB_GSO_UDP !=3D (((netdev_features_t)1 << (NETIF_F_GSO_UDP_B= IT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_326(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_327(vo= id) ; if (!(!(SKB_GSO_UDP_L4 !=3D (((netdev_features_t)1 << (NETIF_F_GSO_UD= P_L4_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_327(); } while (0)= ;=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_328(vo= id) ; if (!(!(SKB_GSO_FRAGLIST !=3D (((netdev_features_t)1 << (NETIF_F_GSO_= FRAGLIST_BIT)) >> NETIF_F_GSO_SHIFT)))) __compiletime_assert_328(); } while= (0);=0D =0D return (features & feature) =3D=3D feature;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_gso_ok(struct sk_bu= ff *skb, netdev_features_t features)=0D {=0D return net_gso_ok(features, ((struct skb_shared_info *)(skb_end_pointer(sk= b)))->gso_type) &&=0D (!skb_has_frag_list(skb) || (features & ((netdev_features_t)1 << (N= ETIF_F_FRAGLIST_BIT))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_needs_gso(struct = sk_buff *skb,=0D netdev_features_t features)=0D {=0D return skb_is_gso(skb) && (!skb_gso_ok(skb, features) ||=0D __builtin_expect(!!((skb->ip_summed !=3D 3) && (skb->ip_summed !=3D 1)), = 0));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_set_gso_max_size(= struct net_device *dev,=0D unsigned int size)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 29(void) ; if (!((sizeof(dev->gso_max_size) =3D=3D sizeof(char) || sizeof(d= ev->gso_max_size) =3D=3D sizeof(short) || sizeof(dev->gso_max_size) =3D=3D = sizeof(int) || sizeof(dev->gso_max_size) =3D=3D sizeof(long)) || sizeof(dev= ->gso_max_size) =3D=3D sizeof(long long))) __compiletime_assert_329(); } wh= ile (0); do { *(volatile typeof(dev->gso_max_size) *)&(dev->gso_max_size) = =3D (size); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_set_gso_max_segs(= struct net_device *dev,=0D unsigned int segs)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 30(void) ; if (!((sizeof(dev->gso_max_segs) =3D=3D sizeof(char) || sizeof(d= ev->gso_max_segs) =3D=3D sizeof(short) || sizeof(dev->gso_max_segs) =3D=3D = sizeof(int) || sizeof(dev->gso_max_segs) =3D=3D sizeof(long)) || sizeof(dev= ->gso_max_segs) =3D=3D sizeof(long long))) __compiletime_assert_330(); } wh= ile (0); do { *(volatile typeof(dev->gso_max_segs) *)&(dev->gso_max_segs) = =3D (segs); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_set_gro_max_size(= struct net_device *dev,=0D unsigned int size)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 31(void) ; if (!((sizeof(dev->gro_max_size) =3D=3D sizeof(char) || sizeof(d= ev->gro_max_size) =3D=3D sizeof(short) || sizeof(dev->gro_max_size) =3D=3D = sizeof(int) || sizeof(dev->gro_max_size) =3D=3D sizeof(long)) || sizeof(dev= ->gro_max_size) =3D=3D sizeof(long long))) __compiletime_assert_331(); } wh= ile (0); do { *(volatile typeof(dev->gro_max_size) *)&(dev->gro_max_size) = =3D (size); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_gso_error_unwind(st= ruct sk_buff *skb, __be16 protocol,=0D int pulled_hlen, u16 mac_offset,=0D int mac_len)=0D {=0D skb->protocol =3D protocol;=0D skb->encapsulation =3D 1;=0D skb_push(skb, pulled_hlen);=0D skb_reset_transport_header(skb);=0D skb->mac_header =3D mac_offset;=0D skb->network_header =3D skb->mac_header + mac_len;=0D skb->mac_len =3D mac_len;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_macsec(const s= truct net_device *dev)=0D {=0D return dev->priv_flags & IFF_MACSEC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_macvlan(const = struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_MACVLAN;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_macvlan_port(c= onst struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_MACVLAN_PORT;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_bond_master(co= nst struct net_device *dev)=0D {=0D return dev->flags & IFF_MASTER && dev->priv_flags & IFF_BONDING;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_bond_slave(con= st struct net_device *dev)=0D {=0D return dev->flags & IFF_SLAVE && dev->priv_flags & IFF_BONDING;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_supports_nofcs(st= ruct net_device *dev)=0D {=0D return dev->priv_flags & IFF_SUPP_NOFCS;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_has_l3_rx_handler= (const struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_L3MDEV_RX_HANDLER;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_l3_master(cons= t struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_L3MDEV_MASTER;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_l3_slave(const= struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_L3MDEV_SLAVE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_bridge_master(= const struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_EBRIDGE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_bridge_port(co= nst struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_BRIDGE_PORT;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_ovs_master(con= st struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_OPENVSWITCH;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_ovs_port(const= struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_OVS_DATAPATH;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_any_bridge_por= t(const struct net_device *dev)=0D {=0D return netif_is_bridge_port(dev) || netif_is_ovs_port(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_team_master(co= nst struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_TEAM;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_team_port(cons= t struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_TEAM_PORT;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_lag_master(con= st struct net_device *dev)=0D {=0D return netif_is_bond_master(dev) || netif_is_team_master(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_lag_port(const= struct net_device *dev)=0D {=0D return netif_is_bond_slave(dev) || netif_is_team_port(dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_rxfh_configure= d(const struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_RXFH_CONFIGURED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_failover(const= struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_FAILOVER;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_is_failover_slave= (const struct net_device *dev)=0D {=0D return dev->priv_flags & IFF_FAILOVER_SLAVE;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void netif_keep_dst(struct n= et_device *dev)=0D {=0D dev->priv_flags &=3D ~(IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM);= =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_reduces_vlan_mtu(= struct net_device *dev)=0D {=0D =0D return netif_is_macsec(dev);=0D }=0D =0D extern struct pernet_operations loopback_net_ops;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *netdev_name(cons= t struct net_device *dev)=0D {=0D if (!dev->name[0] || strchr(dev->name, '%'))=0D return "(unnamed net_device)";=0D return dev->name;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netdev_unregistering(co= nst struct net_device *dev)=0D {=0D return dev->reg_state =3D=3D NETREG_UNREGISTERING;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *netdev_reg_state= (const struct net_device *dev)=0D {=0D switch (dev->reg_state) {=0D case NETREG_UNINITIALIZED: return " (uninitialized)";=0D case NETREG_REGISTERED: return "";=0D case NETREG_UNREGISTERING: return " (unregistering)";=0D case NETREG_UNREGISTERED: return " (unregistered)";=0D case NETREG_RELEASED: return " (released)";=0D case NETREG_DUMMY: return " (dummy)";=0D }=0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(1); if (__builtin_expect(!!(__ret_do_once && !__a= lready_done), 0)) { __already_done =3D true; ({ int __ret_warn_on =3D !!(1)= ; if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } while(0); __warn_= printk("%s: unknown reg_state %d\n", dev->name, dev->reg_state); do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/netdevice.h"), "i" (5073), "i" ((1 << 0)|((1 << 3) | ((9) << 8))), = "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); } while (0);= __builtin_expect(!!(__ret_warn_on), 0); }); } __builtin_expect(!!(__ret_do= _once), 0); });=0D return " (unknown)";=0D }=0D =0D __attribute__((__format__(printf, 3, 4))) __attribute__((__cold__))=0D void netdev_printk(const char *level, const struct net_device *dev,=0D const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_emerg(const struct net_device *dev, const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_alert(const struct net_device *dev, const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_crit(const struct net_device *dev, const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_err(const struct net_device *dev, const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_warn(const struct net_device *dev, const char *format, ...);=0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_notice(const struct net_device *dev, const char *format, ...);= =0D __attribute__((__format__(printf, 2, 3))) __attribute__((__cold__))=0D void netdev_info(const struct net_device *dev, const char *format, ...);=0D # 5255 "./include/linux/netdevice.h"=0D extern struct list_head ptype_all ;=0D extern struct list_head ptype_base[(16)] ;=0D =0D extern struct net_device *blackhole_netdev;=0D # 35 "net/ipv6/route.c" 2=0D =0D # 1 "./include/linux/mroute6.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/pim.h" 1=0D # 33 "./include/linux/pim.h"=0D enum {=0D PIM_TYPE_HELLO,=0D PIM_TYPE_REGISTER,=0D PIM_TYPE_REGISTER_STOP,=0D PIM_TYPE_JOIN_PRUNE,=0D PIM_TYPE_BOOTSTRAP,=0D PIM_TYPE_ASSERT,=0D PIM_TYPE_GRAFT,=0D PIM_TYPE_GRAFT_ACK,=0D PIM_TYPE_CANDIDATE_RP_ADV=0D };=0D # 55 "./include/linux/pim.h"=0D struct pimhdr {=0D __u8 type;=0D __u8 reserved;=0D __be16 csum;=0D };=0D =0D =0D struct pimreghdr {=0D __u8 type;=0D __u8 reserved;=0D __be16 csum;=0D __be32 flags;=0D };=0D =0D int pim_rcv_v1(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipmr_pimsm_enabled(void= )=0D {=0D return 0 || 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pimhdr *pim_hdr(const= struct sk_buff *skb)=0D {=0D return (struct pimhdr *)skb_transport_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 pim_hdr_version(const str= uct pimhdr *pimhdr)=0D {=0D return pimhdr->type >> 4;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 pim_hdr_type(const struct= pimhdr *pimhdr)=0D {=0D return pimhdr->type & 0xf;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pim_ipv4_all_pim_router= s(__be32 addr)=0D {=0D return addr =3D=3D (( __be32)(__builtin_constant_p((__u32)((0xE000000D))) = ? ((__u32)( (((__u32)((0xE000000D)) & (__u32)0x000000ffUL) << 24) | (((__u3= 2)((0xE000000D)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xE000000D)) & (= __u32)0x00ff0000UL) >> 8) | (((__u32)((0xE000000D)) & (__u32)0xff000000UL) = >> 24))) : __fswab32((0xE000000D))));=0D }=0D # 7 "./include/linux/mroute6.h" 2=0D =0D =0D # 1 "./include/uapi/linux/mroute6.h" 1=0D # 48 "./include/uapi/linux/mroute6.h"=0D typedef unsigned long mifbitmap_t;=0D typedef unsigned short mifi_t;=0D =0D =0D =0D =0D =0D =0D typedef __u32 if_mask;=0D =0D =0D typedef struct if_set {=0D if_mask ifs_bits[(((256) + ((sizeof(if_mask) * 8)) - 1) / ((sizeof(if_mask= ) * 8)))];=0D } if_set;=0D # 74 "./include/uapi/linux/mroute6.h"=0D struct mif6ctl {=0D mifi_t mif6c_mifi;=0D unsigned char mif6c_flags;=0D unsigned char vifc_threshold;=0D __u16 mif6c_pifi;=0D unsigned int vifc_rate_limit;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct mf6cctl {=0D struct sockaddr_in6 mf6cc_origin;=0D struct sockaddr_in6 mf6cc_mcastgrp;=0D mifi_t mf6cc_parent;=0D struct if_set mf6cc_ifset;=0D };=0D =0D =0D =0D =0D =0D struct sioc_sg_req6 {=0D struct sockaddr_in6 src;=0D struct sockaddr_in6 grp;=0D unsigned long pktcnt;=0D unsigned long bytecnt;=0D unsigned long wrong_if;=0D };=0D =0D =0D =0D =0D =0D struct sioc_mif_req6 {=0D mifi_t mifi;=0D unsigned long icount;=0D unsigned long ocount;=0D unsigned long ibytes;=0D unsigned long obytes;=0D };=0D # 133 "./include/uapi/linux/mroute6.h"=0D struct mrt6msg {=0D =0D =0D =0D =0D __u8 im6_mbz;=0D __u8 im6_msgtype;=0D __u16 im6_mif;=0D __u32 im6_pad;=0D struct in6_addr im6_src, im6_dst;=0D };=0D =0D =0D enum {=0D IP6MRA_CREPORT_UNSPEC,=0D IP6MRA_CREPORT_MSGTYPE,=0D IP6MRA_CREPORT_MIF_ID,=0D IP6MRA_CREPORT_SRC_ADDR,=0D IP6MRA_CREPORT_DST_ADDR,=0D IP6MRA_CREPORT_PKT,=0D __IP6MRA_CREPORT_MAX=0D };=0D # 10 "./include/linux/mroute6.h" 2=0D # 1 "./include/linux/mroute_base.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/net/sock.h" 1=0D # 41 "./include/net/sock.h"=0D # 1 "./include/linux/list_nulls.h" 1=0D # 21 "./include/linux/list_nulls.h"=0D struct hlist_nulls_head {=0D struct hlist_nulls_node *first;=0D };=0D =0D struct hlist_nulls_node {=0D struct hlist_nulls_node *next, **pprev;=0D };=0D # 43 "./include/linux/list_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_a_nulls(const struct = hlist_nulls_node *ptr)=0D {=0D return ((unsigned long)ptr & 1);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_nulls_valu= e(const struct hlist_nulls_node *ptr)=0D {=0D return ((unsigned long)ptr) >> 1;=0D }=0D # 67 "./include/linux/list_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_nulls_unhashed(con= st struct hlist_nulls_node *h)=0D {=0D return !h->pprev;=0D }=0D # 81 "./include/linux/list_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_nulls_unhashed_loc= kless(const struct hlist_nulls_node *h)=0D {=0D return !({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_332(void) ; if (!((sizeof(h->pprev) =3D=3D sizeof(char) || sizeof(h->p= prev) =3D=3D sizeof(short) || sizeof(h->pprev) =3D=3D sizeof(int) || sizeof= (h->pprev) =3D=3D sizeof(long)) || sizeof(h->pprev) =3D=3D sizeof(long long= ))) __compiletime_assert_332(); } while (0); (*(const volatile typeof( _Gen= eric((h->pprev), char: (char)0, unsigned char: (unsigned char)0, signed cha= r: (signed char)0, unsigned short: (unsigned short)0, signed short: (signed= short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigne= d long: (unsigned long)0, signed long: (signed long)0, unsigned long long: = (unsigned long long)0, signed long long: (signed long long)0, default: (h->= pprev))) *)&(h->pprev)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int hlist_nulls_empty(const = struct hlist_nulls_head *h)=0D {=0D return is_a_nulls(({ do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_333(void) ; if (!((sizeof(h->first) =3D=3D sizeof(char) || s= izeof(h->first) =3D=3D sizeof(short) || sizeof(h->first) =3D=3D sizeof(int)= || sizeof(h->first) =3D=3D sizeof(long)) || sizeof(h->first) =3D=3D sizeof= (long long))) __compiletime_assert_333(); } while (0); (*(const volatile ty= peof( _Generic((h->first), char: (char)0, unsigned char: (unsigned char)0, = signed char: (signed char)0, unsigned short: (unsigned short)0, signed shor= t: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)= 0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned l= ong long: (unsigned long long)0, signed long long: (signed long long)0, def= ault: (h->first))) *)&(h->first)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_add_head(st= ruct hlist_nulls_node *n,=0D struct hlist_nulls_head *h)=0D {=0D struct hlist_nulls_node *first =3D h->first;=0D =0D n->next =3D first;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 34(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_334(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (&h->first); } while (0); } while (0);=0D h->first =3D n;=0D if (!is_a_nulls(first))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 335(void) ; if (!((sizeof(first->pprev) =3D=3D sizeof(char) || sizeof(first= ->pprev) =3D=3D sizeof(short) || sizeof(first->pprev) =3D=3D sizeof(int) ||= sizeof(first->pprev) =3D=3D sizeof(long)) || sizeof(first->pprev) =3D=3D s= izeof(long long))) __compiletime_assert_335(); } while (0); do { *(volatile= typeof(first->pprev) *)&(first->pprev) =3D (&n->next); } while (0); } whil= e (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __hlist_nulls_del(struc= t hlist_nulls_node *n)=0D {=0D struct hlist_nulls_node *next =3D n->next;=0D struct hlist_nulls_node **pprev =3D n->pprev;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 36(void) ; if (!((sizeof(*pprev) =3D=3D sizeof(char) || sizeof(*pprev) =3D= =3D sizeof(short) || sizeof(*pprev) =3D=3D sizeof(int) || sizeof(*pprev) = =3D=3D sizeof(long)) || sizeof(*pprev) =3D=3D sizeof(long long))) __compile= time_assert_336(); } while (0); do { *(volatile typeof(*pprev) *)&(*pprev) = =3D (next); } while (0); } while (0);=0D if (!is_a_nulls(next))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 337(void) ; if (!((sizeof(next->pprev) =3D=3D sizeof(char) || sizeof(next->= pprev) =3D=3D sizeof(short) || sizeof(next->pprev) =3D=3D sizeof(int) || si= zeof(next->pprev) =3D=3D sizeof(long)) || sizeof(next->pprev) =3D=3D sizeof= (long long))) __compiletime_assert_337(); } while (0); do { *(volatile type= of(next->pprev) *)&(next->pprev) =3D (pprev); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_del(struct = hlist_nulls_node *n)=0D {=0D __hlist_nulls_del(n);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 38(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_338(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (((void *) 0x122 + 0)); } while (0); } while (0);=0D }=0D # 42 "./include/net/sock.h" 2=0D # 52 "./include/net/sock.h"=0D # 1 "./include/linux/page_counter.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct page_counter {=0D atomic_long_t usage;=0D unsigned long min;=0D unsigned long low;=0D unsigned long high;=0D unsigned long max;=0D =0D =0D unsigned long emin;=0D atomic_long_t min_usage;=0D atomic_long_t children_min_usage;=0D =0D =0D unsigned long elow;=0D atomic_long_t low_usage;=0D atomic_long_t children_low_usage;=0D =0D =0D unsigned long watermark;=0D unsigned long failcnt;=0D =0D =0D =0D =0D =0D =0D =0D struct page_counter *parent;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_counter_init(struc= t page_counter *counter,=0D struct page_counter *parent)=0D {=0D atomic_long_set(&counter->usage, 0);=0D counter->max =3D (((long)(~0UL >> 1)) / ((1UL) << (12)));=0D counter->parent =3D parent;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long page_counter_r= ead(struct page_counter *counter)=0D {=0D return atomic_long_read(&counter->usage);=0D }=0D =0D void page_counter_cancel(struct page_counter *counter, unsigned long nr_pag= es);=0D void page_counter_charge(struct page_counter *counter, unsigned long nr_pag= es);=0D bool page_counter_try_charge(struct page_counter *counter,=0D unsigned long nr_pages,=0D struct page_counter **fail);=0D void page_counter_uncharge(struct page_counter *counter, unsigned long nr_p= ages);=0D void page_counter_set_min(struct page_counter *counter, unsigned long nr_pa= ges);=0D void page_counter_set_low(struct page_counter *counter, unsigned long nr_pa= ges);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_counter_set_high(s= truct page_counter *counter,=0D unsigned long nr_pages)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 39(void) ; if (!((sizeof(counter->high) =3D=3D sizeof(char) || sizeof(count= er->high) =3D=3D sizeof(short) || sizeof(counter->high) =3D=3D sizeof(int) = || sizeof(counter->high) =3D=3D sizeof(long)) || sizeof(counter->high) =3D= =3D sizeof(long long))) __compiletime_assert_339(); } while (0); do { *(vol= atile typeof(counter->high) *)&(counter->high) =3D (nr_pages); } while (0);= } while (0);=0D }=0D =0D int page_counter_set_max(struct page_counter *counter, unsigned long nr_pag= es);=0D int page_counter_memparse(const char *buf, const char *max,=0D unsigned long *nr_pages);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void page_counter_reset_wate= rmark(struct page_counter *counter)=0D {=0D counter->watermark =3D page_counter_read(counter);=0D }=0D # 53 "./include/net/sock.h" 2=0D # 1 "./include/linux/memcontrol.h" 1=0D # 18 "./include/linux/memcontrol.h"=0D # 1 "./include/linux/vmpressure.h" 1=0D # 11 "./include/linux/vmpressure.h"=0D # 1 "./include/linux/eventfd.h" 1=0D # 33 "./include/linux/eventfd.h"=0D struct eventfd_ctx;=0D struct file;=0D =0D =0D =0D void eventfd_ctx_put(struct eventfd_ctx *ctx);=0D struct file *eventfd_fget(int fd);=0D struct eventfd_ctx *eventfd_ctx_fdget(int fd);=0D struct eventfd_ctx *eventfd_ctx_fileget(struct file *file);=0D __u64 eventfd_signal(struct eventfd_ctx *ctx, __u64 n);=0D int eventfd_ctx_remove_wait_queue(struct eventfd_ctx *ctx, wait_queue_entry= _t *wait,=0D __u64 *cnt);=0D void eventfd_ctx_do_read(struct eventfd_ctx *ctx, __u64 *cnt);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool eventfd_signal_allowed(= void)=0D {=0D return !get_current()->in_eventfd_signal;=0D }=0D # 12 "./include/linux/vmpressure.h" 2=0D =0D struct vmpressure {=0D unsigned long scanned;=0D unsigned long reclaimed;=0D =0D unsigned long tree_scanned;=0D unsigned long tree_reclaimed;=0D =0D spinlock_t sr_lock;=0D =0D =0D struct list_head events;=0D =0D struct mutex events_lock;=0D =0D struct work_struct work;=0D };=0D =0D struct mem_cgroup;=0D # 47 "./include/linux/vmpressure.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vmpressure(gfp_t gfp, s= truct mem_cgroup *memcg, bool tree,=0D unsigned long scanned, unsigned long reclaimed) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vmpressure_prio(gfp_t g= fp, struct mem_cgroup *memcg,=0D int prio) {}=0D # 19 "./include/linux/memcontrol.h" 2=0D =0D =0D =0D # 1 "./include/linux/writeback.h" 1=0D # 11 "./include/linux/writeback.h"=0D # 1 "./include/linux/flex_proportions.h" 1=0D # 28 "./include/linux/flex_proportions.h"=0D struct fprop_global {=0D =0D struct percpu_counter events;=0D =0D unsigned int period;=0D =0D seqcount_t sequence;=0D };=0D =0D int fprop_global_init(struct fprop_global *p, gfp_t gfp);=0D void fprop_global_destroy(struct fprop_global *p);=0D bool fprop_new_period(struct fprop_global *p, int periods);=0D =0D =0D =0D =0D struct fprop_local_single {=0D =0D unsigned long events;=0D =0D unsigned int period;=0D raw_spinlock_t lock;=0D };=0D =0D =0D =0D =0D =0D int fprop_local_init_single(struct fprop_local_single *pl);=0D void fprop_local_destroy_single(struct fprop_local_single *pl);=0D void __fprop_inc_single(struct fprop_global *p, struct fprop_local_single *= pl);=0D void fprop_fraction_single(struct fprop_global *p,=0D struct fprop_local_single *pl, unsigned long *numerator,=0D unsigned long *denominator);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void fprop_inc_single(struct fprop_global *p, struct fprop_local_single *pl= )=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D __fprop_inc_single(p, pl);=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D struct fprop_local_percpu {=0D =0D struct percpu_counter events;=0D =0D unsigned int period;=0D raw_spinlock_t lock;=0D };=0D =0D int fprop_local_init_percpu(struct fprop_local_percpu *pl, gfp_t gfp);=0D void fprop_local_destroy_percpu(struct fprop_local_percpu *pl);=0D void __fprop_add_percpu(struct fprop_global *p, struct fprop_local_percpu *= pl,=0D long nr);=0D void __fprop_add_percpu_max(struct fprop_global *p,=0D struct fprop_local_percpu *pl, int max_frac, long nr);=0D void fprop_fraction_percpu(struct fprop_global *p,=0D struct fprop_local_percpu *pl, unsigned long *numerator,=0D unsigned long *denominator);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void fprop_inc_percpu(struct fprop_global *p, struct fprop_local_percpu *pl= )=0D {=0D unsigned long flags;=0D =0D do { do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dumm= y =3D=3D &__dummy2); 1; }); flags =3D arch_local_irq_save(); } while (0); i= f (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_hardir= qs_off(); } while (0);=0D __fprop_add_percpu(p, pl, 1);=0D do { if (!({ ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flags(flags); })) trace_h= ardirqs_on(); do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)= (&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restor= e(flags); } while (0); } while (0);=0D }=0D # 12 "./include/linux/writeback.h" 2=0D # 1 "./include/linux/backing-dev-defs.h" 1=0D # 17 "./include/linux/backing-dev-defs.h"=0D struct page;=0D struct device;=0D struct dentry;=0D =0D =0D =0D =0D enum wb_state {=0D WB_registered,=0D WB_writeback_running,=0D WB_has_dirty_io,=0D WB_start_all,=0D };=0D =0D enum wb_congested_state {=0D WB_async_congested,=0D WB_sync_congested,=0D };=0D =0D enum wb_stat_item {=0D WB_RECLAIMABLE,=0D WB_WRITEBACK,=0D WB_DIRTIED,=0D WB_WRITTEN,=0D NR_WB_STAT_ITEMS=0D };=0D =0D =0D =0D =0D =0D =0D enum wb_reason {=0D WB_REASON_BACKGROUND,=0D WB_REASON_VMSCAN,=0D WB_REASON_SYNC,=0D WB_REASON_PERIODIC,=0D WB_REASON_LAPTOP_TIMER,=0D WB_REASON_FS_FREE_SPACE,=0D =0D =0D =0D =0D =0D =0D WB_REASON_FORKER_THREAD,=0D WB_REASON_FOREIGN_FLUSH,=0D =0D WB_REASON_MAX,=0D };=0D =0D struct wb_completion {=0D atomic_t cnt;=0D wait_queue_head_t *waitq;=0D };=0D # 110 "./include/linux/backing-dev-defs.h"=0D struct bdi_writeback {=0D struct backing_dev_info *bdi;=0D =0D unsigned long state;=0D unsigned long last_old_flush;=0D =0D struct list_head b_dirty;=0D struct list_head b_io;=0D struct list_head b_more_io;=0D struct list_head b_dirty_time;=0D spinlock_t list_lock;=0D =0D atomic_t writeback_inodes;=0D struct percpu_counter stat[NR_WB_STAT_ITEMS];=0D =0D unsigned long congested;=0D =0D unsigned long bw_time_stamp;=0D unsigned long dirtied_stamp;=0D unsigned long written_stamp;=0D unsigned long write_bandwidth;=0D unsigned long avg_write_bandwidth;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long dirty_ratelimit;=0D unsigned long balanced_dirty_ratelimit;=0D =0D struct fprop_local_percpu completions;=0D int dirty_exceeded;=0D enum wb_reason start_all_reason;=0D =0D spinlock_t work_lock;=0D struct list_head work_list;=0D struct delayed_work dwork;=0D struct delayed_work bw_dwork;=0D =0D unsigned long dirty_sleep;=0D =0D struct list_head bdi_node;=0D # 170 "./include/linux/backing-dev-defs.h"=0D };=0D =0D struct backing_dev_info {=0D u64 id;=0D struct rb_node rb_node;=0D struct list_head bdi_list;=0D unsigned long ra_pages;=0D unsigned long io_pages;=0D =0D struct kref refcnt;=0D unsigned int capabilities;=0D unsigned int min_ratio;=0D unsigned int max_ratio, max_prop_frac;=0D =0D =0D =0D =0D =0D atomic_long_t tot_write_bandwidth;=0D =0D struct bdi_writeback wb;=0D struct list_head wb_list;=0D =0D =0D =0D =0D =0D wait_queue_head_t wb_waitq;=0D =0D struct device *dev;=0D char dev_name[64];=0D struct device *owner;=0D =0D struct timer_list laptop_mode_wb_timer;=0D =0D =0D struct dentry *debug_dir;=0D =0D };=0D =0D struct wb_lock_cookie {=0D bool locked;=0D unsigned long flags;=0D };=0D # 279 "./include/linux/backing-dev-defs.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool wb_tryget(struct bdi_wr= iteback *wb)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wb_get(struct bdi_write= back *wb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wb_put(struct bdi_write= back *wb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wb_put_many(struct bdi_= writeback *wb, unsigned long nr)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool wb_dying(struct bdi_wri= teback *wb)=0D {=0D return false;=0D }=0D # 13 "./include/linux/writeback.h" 2=0D # 1 "./include/linux/blk_types.h" 1=0D # 14 "./include/linux/blk_types.h"=0D struct bio_set;=0D struct bio;=0D struct bio_integrity_payload;=0D struct page;=0D struct io_context;=0D struct cgroup_subsys_state;=0D typedef void (bio_end_io_t) (struct bio *);=0D struct bio_crypt_ctx;=0D # 40 "./include/linux/blk_types.h"=0D struct block_device {=0D sector_t bd_start_sect;=0D sector_t bd_nr_sectors;=0D struct disk_stats *bd_stats;=0D unsigned long bd_stamp;=0D bool bd_read_only;=0D dev_t bd_dev;=0D int bd_openers;=0D struct inode * bd_inode;=0D struct super_block * bd_super;=0D void * bd_claiming;=0D struct device bd_device;=0D void * bd_holder;=0D int bd_holders;=0D bool bd_write_holder;=0D struct kobject *bd_holder_dir;=0D u8 bd_partno;=0D spinlock_t bd_size_lock;=0D struct gendisk * bd_disk;=0D struct request_queue * bd_queue;=0D =0D =0D int bd_fsfreeze_count;=0D =0D struct mutex bd_fsfreeze_mutex;=0D struct super_block *bd_fsfreeze_sb;=0D =0D struct partition_meta_info *bd_meta_info;=0D =0D =0D =0D } ;=0D # 90 "./include/linux/blk_types.h"=0D typedef u8 blk_status_t;=0D typedef u16 blk_short_t;=0D # 177 "./include/linux/blk_types.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool blk_path_error(blk_stat= us_t error)=0D {=0D switch (error) {=0D case (( blk_status_t)1):=0D case (( blk_status_t)3):=0D case (( blk_status_t)5):=0D case (( blk_status_t)6):=0D case (( blk_status_t)7):=0D case (( blk_status_t)8):=0D return false;=0D }=0D =0D =0D return true;=0D }=0D # 211 "./include/linux/blk_types.h"=0D struct bio_issue {=0D u64 value;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 __bio_issue_time(u64 tim= e)=0D {=0D return time & ((1ULL << ((64 - 1) - 12)) - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 bio_issue_time(struct bi= o_issue *issue)=0D {=0D return __bio_issue_time(issue->value);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) sector_t bio_issue_size(stru= ct bio_issue *issue)=0D {=0D return ((issue->value & (((1ULL << 12) - 1) << ((64 - 1) - 12))) >> ((64 -= 1) - 12));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bio_issue_init(struct b= io_issue *issue,=0D sector_t size)=0D {=0D size &=3D (1ULL << 12) - 1;=0D issue->value =3D ((issue->value & (~((1ULL << (64 - 1)) - 1))) |=0D (ktime_get_ns() & ((1ULL << ((64 - 1) - 12)) - 1)) |=0D ((u64)size << ((64 - 1) - 12)));=0D }=0D =0D typedef unsigned int blk_qc_t;=0D =0D =0D =0D =0D =0D =0D struct bio {=0D struct bio *bi_next;=0D struct block_device *bi_bdev;=0D unsigned int bi_opf;=0D =0D =0D =0D unsigned short bi_flags;=0D unsigned short bi_ioprio;=0D blk_status_t bi_status;=0D atomic_t __bi_remaining;=0D =0D struct bvec_iter bi_iter;=0D =0D blk_qc_t bi_cookie;=0D bio_end_io_t *bi_end_io;=0D void *bi_private;=0D # 281 "./include/linux/blk_types.h"=0D union {=0D =0D =0D =0D };=0D =0D unsigned short bi_vcnt;=0D =0D =0D =0D =0D =0D unsigned short bi_max_vecs;=0D =0D atomic_t __bi_cnt;=0D =0D struct bio_vec *bi_io_vec;=0D =0D struct bio_set *bi_pool;=0D =0D =0D =0D =0D =0D =0D struct bio_vec bi_inline_vecs[];=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D BIO_NO_PAGE_REF,=0D BIO_CLONED,=0D BIO_BOUNCED,=0D BIO_WORKINGSET,=0D BIO_QUIET,=0D BIO_CHAIN,=0D BIO_REFFED,=0D BIO_THROTTLED,=0D =0D BIO_TRACE_COMPLETION,=0D =0D BIO_CGROUP_ACCT,=0D BIO_QOS_THROTTLED,=0D BIO_QOS_MERGED,=0D BIO_REMAPPED,=0D BIO_ZONE_WRITE_LOCKED,=0D BIO_PERCPU_CACHE,=0D BIO_FLAG_LAST=0D };=0D =0D typedef __u32 blk_mq_req_flags_t;=0D # 355 "./include/linux/blk_types.h"=0D enum req_opf {=0D =0D REQ_OP_READ =3D 0,=0D =0D REQ_OP_WRITE =3D 1,=0D =0D REQ_OP_FLUSH =3D 2,=0D =0D REQ_OP_DISCARD =3D 3,=0D =0D REQ_OP_SECURE_ERASE =3D 5,=0D =0D REQ_OP_WRITE_ZEROES =3D 9,=0D =0D REQ_OP_ZONE_OPEN =3D 10,=0D =0D REQ_OP_ZONE_CLOSE =3D 11,=0D =0D REQ_OP_ZONE_FINISH =3D 12,=0D =0D REQ_OP_ZONE_APPEND =3D 13,=0D =0D REQ_OP_ZONE_RESET =3D 15,=0D =0D REQ_OP_ZONE_RESET_ALL =3D 17,=0D =0D =0D REQ_OP_DRV_IN =3D 34,=0D REQ_OP_DRV_OUT =3D 35,=0D =0D REQ_OP_LAST,=0D };=0D =0D enum req_flag_bits {=0D __REQ_FAILFAST_DEV =3D=0D 8,=0D __REQ_FAILFAST_TRANSPORT,=0D __REQ_FAILFAST_DRIVER,=0D __REQ_SYNC,=0D __REQ_META,=0D __REQ_PRIO,=0D __REQ_NOMERGE,=0D __REQ_IDLE,=0D __REQ_INTEGRITY,=0D __REQ_FUA,=0D __REQ_PREFLUSH,=0D __REQ_RAHEAD,=0D __REQ_BACKGROUND,=0D __REQ_NOWAIT,=0D =0D =0D =0D =0D =0D =0D =0D __REQ_CGROUP_PUNT,=0D =0D =0D __REQ_NOUNMAP,=0D =0D __REQ_POLLED,=0D =0D =0D __REQ_DRV,=0D __REQ_SWAP,=0D __REQ_NR_BITS,=0D };=0D # 452 "./include/linux/blk_types.h"=0D enum stat_group {=0D STAT_READ,=0D STAT_WRITE,=0D STAT_DISCARD,=0D STAT_FLUSH,=0D =0D NR_STAT_GROUPS=0D };=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bio_set_op_attrs(struct= bio *bio, unsigned op,=0D unsigned op_flags)=0D {=0D bio->bi_opf =3D op | op_flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool op_is_write(unsigned in= t op)=0D {=0D return (op & 1);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool op_is_flush(unsigned in= t op)=0D {=0D return op & ((1ULL << __REQ_FUA) | (1ULL << __REQ_PREFLUSH));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool op_is_sync(unsigned int= op)=0D {=0D return (op & ((1 << 8) - 1)) =3D=3D REQ_OP_READ ||=0D (op & ((1ULL << __REQ_SYNC) | (1ULL << __REQ_FUA) | (1ULL << __REQ_PREFLU= SH)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool op_is_discard(unsigned = int op)=0D {=0D return (op & ((1 << 8) - 1)) =3D=3D REQ_OP_DISCARD;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool op_is_zone_mgmt(enum re= q_opf op)=0D {=0D switch (op & ((1 << 8) - 1)) {=0D case REQ_OP_ZONE_RESET:=0D case REQ_OP_ZONE_OPEN:=0D case REQ_OP_ZONE_CLOSE:=0D case REQ_OP_ZONE_FINISH:=0D return true;=0D default:=0D return false;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int op_stat_group(unsigned i= nt op)=0D {=0D if (op_is_discard(op))=0D return STAT_DISCARD;=0D return op_is_write(op);=0D }=0D =0D struct blk_rq_stat {=0D u64 mean;=0D u64 min;=0D u64 max;=0D u32 nr_samples;=0D u64 batch;=0D };=0D # 14 "./include/linux/writeback.h" 2=0D =0D struct bio;=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) dirty_t= hrottle_leaks;=0D # 35 "./include/linux/writeback.h"=0D struct backing_dev_info;=0D =0D =0D =0D =0D enum writeback_sync_modes {=0D WB_SYNC_NONE,=0D WB_SYNC_ALL,=0D };=0D =0D =0D =0D =0D =0D =0D struct writeback_control {=0D long nr_to_write;=0D =0D long pages_skipped;=0D =0D =0D =0D =0D =0D =0D loff_t range_start;=0D loff_t range_end;=0D =0D enum writeback_sync_modes sync_mode;=0D =0D unsigned for_kupdate:1;=0D unsigned for_background:1;=0D unsigned tagged_writepages:1;=0D unsigned for_reclaim:1;=0D unsigned range_cyclic:1;=0D unsigned for_sync:1;=0D unsigned unpinned_fscache_wb:1;=0D =0D =0D =0D =0D =0D =0D =0D unsigned no_cgroup_owner:1;=0D =0D unsigned punt_to_cgroup:1;=0D # 95 "./include/linux/writeback.h"=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int wbc_to_write_flags(struc= t writeback_control *wbc)=0D {=0D int flags =3D 0;=0D =0D if (wbc->punt_to_cgroup)=0D flags =3D (1ULL << __REQ_CGROUP_PUNT);=0D =0D if (wbc->sync_mode =3D=3D WB_SYNC_ALL)=0D flags |=3D (1ULL << __REQ_SYNC);=0D else if (wbc->for_kupdate || wbc->for_background)=0D flags |=3D (1ULL << __REQ_BACKGROUND);=0D =0D return flags;=0D }=0D # 126 "./include/linux/writeback.h"=0D struct wb_domain {=0D spinlock_t lock;=0D # 146 "./include/linux/writeback.h"=0D struct fprop_global completions;=0D struct timer_list period_timer;=0D unsigned long period_time;=0D # 160 "./include/linux/writeback.h"=0D unsigned long dirty_limit_tstamp;=0D unsigned long dirty_limit;=0D };=0D # 176 "./include/linux/writeback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wb_domain_size_changed(= struct wb_domain *dom)=0D {=0D spin_lock(&dom->lock);=0D dom->dirty_limit_tstamp =3D jiffies;=0D dom->dirty_limit =3D 0;=0D spin_unlock(&dom->lock);=0D }=0D =0D =0D =0D =0D struct bdi_writeback;=0D void writeback_inodes_sb(struct super_block *, enum wb_reason reason);=0D void writeback_inodes_sb_nr(struct super_block *, unsigned long nr,=0D enum wb_reason reason);=0D void try_to_writeback_inodes_sb(struct super_block *sb, enum wb_reason reas= on);=0D void sync_inodes_sb(struct super_block *);=0D void wakeup_flusher_threads(enum wb_reason reason);=0D void wakeup_flusher_threads_bdi(struct backing_dev_info *bdi,=0D enum wb_reason reason);=0D void inode_wait_for_writeback(struct inode *inode);=0D void inode_io_list_del(struct inode *inode);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wait_on_inode(struct in= ode *inode)=0D {=0D do { __might_sleep("include/linux/writeback.h", 202); __cond_resched(); } = while (0);=0D wait_on_bit(&inode->i_state, 3, 0x0002);=0D }=0D # 294 "./include/linux/writeback.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_attach_wb(struct = inode *inode, struct page *page)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inode_detach_wb(struct = inode *inode)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wbc_attach_and_unlock_i= node(struct writeback_control *wbc,=0D struct inode *inode)=0D =0D {=0D spin_unlock(&inode->i_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wbc_attach_fdatawrite_i= node(struct writeback_control *wbc,=0D struct inode *inode)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wbc_detach_inode(struct= writeback_control *wbc)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wbc_init_bio(struct wri= teback_control *wbc, struct bio *bio)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void wbc_account_cgroup_owne= r(struct writeback_control *wbc,=0D struct page *page, size_t bytes)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cgroup_writeback_umount= (void)=0D {=0D }=0D =0D =0D =0D =0D =0D =0D void laptop_io_completion(struct backing_dev_info *info);=0D void laptop_sync_completion(void);=0D void laptop_mode_timer_fn(struct timer_list *t);=0D bool node_dirty_ok(struct pglist_data *pgdat);=0D int wb_domain_init(struct wb_domain *dom, gfp_t gfp);=0D =0D =0D =0D =0D extern struct wb_domain global_wb_domain;=0D =0D =0D extern int dirty_background_ratio;=0D extern unsigned long dirty_background_bytes;=0D extern int vm_dirty_ratio;=0D extern unsigned long vm_dirty_bytes;=0D extern unsigned int dirty_writeback_interval;=0D extern unsigned int dirty_expire_interval;=0D extern unsigned int dirtytime_expire_interval;=0D extern int vm_highmem_is_dirtyable;=0D extern int laptop_mode;=0D =0D int dirty_background_ratio_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int dirty_background_bytes_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int dirty_ratio_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int dirty_bytes_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int dirtytime_interval_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int dirty_writeback_centisecs_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D void global_dirty_limits(unsigned long *pbackground, unsigned long *pdirty)= ;=0D unsigned long wb_calc_thresh(struct bdi_writeback *wb, unsigned long thresh= );=0D =0D void wb_update_bandwidth(struct bdi_writeback *wb);=0D void balance_dirty_pages_ratelimited(struct address_space *mapping);=0D bool wb_over_bg_thresh(struct bdi_writeback *wb);=0D =0D typedef int (*writepage_t)(struct page *page, struct writeback_control *wbc= ,=0D void *data);=0D =0D int generic_writepages(struct address_space *mapping,=0D struct writeback_control *wbc);=0D void tag_pages_for_writeback(struct address_space *mapping,=0D unsigned long start, unsigned long end);=0D int write_cache_pages(struct address_space *mapping,=0D struct writeback_control *wbc, writepage_t writepage,=0D void *data);=0D int do_writepages(struct address_space *mapping, struct writeback_control *= wbc);=0D void writeback_set_ratelimit(void);=0D void tag_pages_for_writeback(struct address_space *mapping,=0D unsigned long start, unsigned long end);=0D =0D bool filemap_dirty_folio(struct address_space *mapping, struct folio *folio= );=0D void folio_account_redirty(struct folio *folio);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void account_page_redirty(st= ruct page *page)=0D {=0D folio_account_redirty((_Generic((page), const struct page *: (const struct= folio *)_compound_head(page), struct page *: (struct folio *)_compound_hea= d(page))));=0D }=0D bool folio_redirty_for_writepage(struct writeback_control *, struct folio *= );=0D bool redirty_page_for_writepage(struct writeback_control *, struct page *);= =0D =0D void sb_mark_inode_writeback(struct inode *inode);=0D void sb_clear_inode_writeback(struct inode *inode);=0D # 23 "./include/linux/memcontrol.h" 2=0D =0D =0D struct mem_cgroup;=0D struct obj_cgroup;=0D struct page;=0D struct mm_struct;=0D struct kmem_cache;=0D =0D =0D enum memcg_stat_item {=0D MEMCG_SWAP =3D NR_VM_NODE_STAT_ITEMS,=0D MEMCG_SOCK,=0D MEMCG_PERCPU_B,=0D MEMCG_VMALLOC,=0D MEMCG_KMEM,=0D MEMCG_NR_STAT,=0D };=0D =0D enum memcg_memory_event {=0D MEMCG_LOW,=0D MEMCG_HIGH,=0D MEMCG_MAX,=0D MEMCG_OOM,=0D MEMCG_OOM_KILL,=0D MEMCG_OOM_GROUP_KILL,=0D MEMCG_SWAP_HIGH,=0D MEMCG_SWAP_MAX,=0D MEMCG_SWAP_FAIL,=0D MEMCG_NR_MEMORY_EVENTS,=0D };=0D =0D struct mem_cgroup_reclaim_cookie {=0D pg_data_t *pgdat;=0D unsigned int generation;=0D };=0D # 1130 "./include/linux/memcontrol.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *folio_mem= cg(struct folio *folio)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *page_memc= g(struct page *page)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *folio_mem= cg_rcu(struct folio *folio)=0D {=0D ({ int __ret_warn_on =3D !!(!rcu_read_lock_held()); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/linux/memcontrol.h"), "i" (1142), "i" ((1= << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (= 0); __builtin_expect(!!(__ret_warn_on), 0); });=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *page_memc= g_check(struct page *page)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_memcg_kmem(struct= folio *folio)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool PageMemcgKmem(struct pa= ge *page)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_is_root(stru= ct mem_cgroup *memcg)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_disabled(voi= d)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcg_memory_event(stru= ct mem_cgroup *memcg,=0D enum memcg_memory_event event)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcg_memory_event_mm(s= truct mm_struct *mm,=0D enum memcg_memory_event event)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_protection(s= truct mem_cgroup *root,=0D struct mem_cgroup *memcg,=0D unsigned long *min,=0D unsigned long *low)=0D {=0D *min =3D *low =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_calculate_pr= otection(struct mem_cgroup *root,=0D struct mem_cgroup *memcg)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_below_low(st= ruct mem_cgroup *memcg)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_below_min(st= ruct mem_cgroup *memcg)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mem_cgroup_charge(struct= folio *folio,=0D struct mm_struct *mm, gfp_t gfp)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mem_cgroup_swapin_charge= _page(struct page *page,=0D struct mm_struct *mm, gfp_t gfp, swp_entry_t entry)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_swapin_uncha= rge_swap(swp_entry_t entry)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_uncharge(str= uct folio *folio)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_uncharge_lis= t(struct list_head *page_list)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_migrate(stru= ct folio *old, struct folio *new)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *mem_cgroup_lr= uvec(struct mem_cgroup *memcg,=0D struct pglist_data *pgdat)=0D {=0D return &pgdat->__lruvec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec(= struct folio *folio)=0D {=0D struct pglist_data *pgdat =3D folio_pgdat(folio);=0D return &pgdat->__lruvec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void lruvec_memcg_debug(struct lruvec *lruvec, struct folio *folio)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *parent_me= m_cgroup(struct mem_cgroup *memcg)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mm_match_cgroup(struct = mm_struct *mm,=0D struct mem_cgroup *memcg)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *get_mem_c= group_from_mm(struct mm_struct *mm)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct mem_cgroup *mem_cgroup_from_css(struct cgroup_subsys_state *css)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_put(struct m= em_cgroup *memcg)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec_= lock(struct folio *folio)=0D {=0D struct pglist_data *pgdat =3D folio_pgdat(folio);=0D =0D spin_lock(&pgdat->__lruvec.lru_lock);=0D return &pgdat->__lruvec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec_= lock_irq(struct folio *folio)=0D {=0D struct pglist_data *pgdat =3D folio_pgdat(folio);=0D =0D spin_lock_irq(&pgdat->__lruvec.lru_lock);=0D return &pgdat->__lruvec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec_= lock_irqsave(struct folio *folio,=0D unsigned long *flagsp)=0D {=0D struct pglist_data *pgdat =3D folio_pgdat(folio);=0D =0D do { do { ({ unsigned long __dummy; typeof(*flagsp) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); *flagsp =3D _raw_spin_lock_irqsave(spinlock_c= heck(&pgdat->__lruvec.lru_lock)); } while (0); } while (0);=0D return &pgdat->__lruvec;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *=0D mem_cgroup_iter(struct mem_cgroup *root,=0D struct mem_cgroup *prev,=0D struct mem_cgroup_reclaim_cookie *reclaim)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_iter_break(s= truct mem_cgroup *root,=0D struct mem_cgroup *prev)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mem_cgroup_scan_tasks(st= ruct mem_cgroup *memcg,=0D int (*fn)(struct task_struct *, void *), void *arg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned short mem_cgroup_id= (struct mem_cgroup *memcg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *mem_cgrou= p_from_id(unsigned short id)=0D {=0D ({ int __ret_warn_on =3D !!(id); if (__builtin_expect(!!(__ret_warn_on), 0= )) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_tabl= e,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" = ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : := "i" ("include/linux/memcontrol.h"), "i" (1326), "i" ((1 << 0)|((1 << 1) | = ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expec= t(!!(__ret_warn_on), 0); });=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *mem_cgrou= p_from_seq(struct seq_file *m)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *lruvec_me= mcg(struct lruvec *lruvec)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_online(struc= t mem_cgroup *memcg)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long mem_cgroup_get_zone_lru_size(struct lruvec *lruvec,=0D enum lru_list lru, int zone_idx)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long mem_cgroup_get= _max(struct mem_cgroup *memcg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long mem_cgroup_siz= e(struct mem_cgroup *memcg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D mem_cgroup_print_oom_context(struct mem_cgroup *memcg, struct task_struct *= p)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D mem_cgroup_print_oom_meminfo(struct mem_cgroup *memcg)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lock_page_memcg(struct = page *page)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_page_memcg(struc= t page *page)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_memcg_lock(struct= folio *folio)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void folio_memcg_unlock(stru= ct folio *folio)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_handle_over_= high(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_enter_user_f= ault(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_exit_user_fa= ult(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_in_memcg_oom(struc= t task_struct *p)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_oom_synchron= ize(bool wait)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *mem_cgrou= p_get_oom_group(=0D struct task_struct *victim, struct mem_cgroup *oom_domain)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_print_oom_gr= oup(struct mem_cgroup *memcg)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_memcg_state(struc= t mem_cgroup *memcg,=0D int idx,=0D int nr)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mod_memcg_state(struct = mem_cgroup *memcg,=0D int idx,=0D int nr)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mod_memcg_page_state(st= ruct page *page,=0D int idx, int val)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long memcg_page_sta= te(struct mem_cgroup *memcg, int idx)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long lruvec_page_st= ate(struct lruvec *lruvec,=0D enum node_stat_item idx)=0D {=0D return global_node_page_state(idx);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long lruvec_page_st= ate_local(struct lruvec *lruvec,=0D enum node_stat_item idx)=0D {=0D return global_node_page_state(idx);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_flush_stats(= void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_flush_stats_= delayed(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_memcg_lruvec_stat= e(struct lruvec *lruvec,=0D enum node_stat_item idx, int val)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __mod_lruvec_kmem_state= (void *p, enum node_stat_item idx,=0D int val)=0D {=0D struct page *page =3D virt_to_head_page(p);=0D =0D __mod_node_page_state(page_pgdat(page), idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mod_lruvec_kmem_state(v= oid *p, enum node_stat_item idx,=0D int val)=0D {=0D struct page *page =3D virt_to_head_page(p);=0D =0D mod_node_page_state(page_pgdat(page), idx, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void count_memcg_events(stru= ct mem_cgroup *memcg,=0D enum vm_event_item idx,=0D unsigned long count)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __count_memcg_events(st= ruct mem_cgroup *memcg,=0D enum vm_event_item idx,=0D unsigned long count)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void count_memcg_page_event(= struct page *page,=0D int idx)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void count_memcg_event_mm(struct mm_struct *mm, enum vm_event_item idx)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void split_page_memcg(struct= page *head, unsigned int nr)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order,=0D gfp_t gfp_mask,=0D unsigned long *total_scanned)=0D {=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __inc_lruvec_kmem_state= (void *p, enum node_stat_item idx)=0D {=0D __mod_lruvec_kmem_state(p, idx, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dec_lruvec_kmem_state= (void *p, enum node_stat_item idx)=0D {=0D __mod_lruvec_kmem_state(p, idx, -1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *parent_lruvec= (struct lruvec *lruvec)=0D {=0D struct mem_cgroup *memcg;=0D =0D memcg =3D lruvec_memcg(lruvec);=0D if (!memcg)=0D return ((void *)0);=0D memcg =3D parent_mem_cgroup(memcg);=0D if (!memcg)=0D return ((void *)0);=0D return mem_cgroup_lruvec(memcg, lruvec_pgdat(lruvec));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_page_lruvec(stru= ct lruvec *lruvec)=0D {=0D spin_unlock(&lruvec->lru_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_page_lruvec_irq(= struct lruvec *lruvec)=0D {=0D spin_unlock_irq(&lruvec->lru_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_page_lruvec_irqr= estore(struct lruvec *lruvec,=0D unsigned long flags)=0D {=0D spin_unlock_irqrestore(&lruvec->lru_lock, flags);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool folio_matches_lruvec(st= ruct folio *folio,=0D struct lruvec *lruvec)=0D {=0D return lruvec_pgdat(lruvec) =3D=3D folio_pgdat(folio) &&=0D lruvec_memcg(lruvec) =3D=3D folio_memcg(folio);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec_= relock_irq(struct folio *folio,=0D struct lruvec *locked_lruvec)=0D {=0D if (locked_lruvec) {=0D if (folio_matches_lruvec(folio, locked_lruvec))=0D return locked_lruvec;=0D =0D unlock_page_lruvec_irq(locked_lruvec);=0D }=0D =0D return folio_lruvec_lock_irq(folio);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lruvec *folio_lruvec_= relock_irqsave(struct folio *folio,=0D struct lruvec *locked_lruvec, unsigned long *flags)=0D {=0D if (locked_lruvec) {=0D if (folio_matches_lruvec(folio, locked_lruvec))=0D return locked_lruvec;=0D =0D unlock_page_lruvec_irqrestore(locked_lruvec, *flags);=0D }=0D =0D return folio_lruvec_lock_irqsave(folio, flags);=0D }=0D # 1618 "./include/linux/memcontrol.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct wb_domain *mem_cgroup= _wb_domain(struct bdi_writeback *wb)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_wb_stats(str= uct bdi_writeback *wb,=0D unsigned long *pfilepages,=0D unsigned long *pheadroom,=0D unsigned long *pdirty,=0D unsigned long *pwriteback)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_track_foreig= n_dirty(struct folio *folio,=0D struct bdi_writeback *wb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_flush_foreig= n(struct bdi_writeback *wb)=0D {=0D }=0D =0D =0D =0D struct sock;=0D bool mem_cgroup_charge_skmem(struct mem_cgroup *memcg, unsigned int nr_page= s,=0D gfp_t gfp_mask);=0D void mem_cgroup_uncharge_skmem(struct mem_cgroup *memcg, unsigned int nr_pa= ges);=0D # 1668 "./include/linux/memcontrol.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_sk_alloc(str= uct sock *sk) { };=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mem_cgroup_sk_free(stru= ct sock *sk) { };=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_under_socket= _pressure(struct mem_cgroup *memcg)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_shrinker_bit(struct= mem_cgroup *memcg,=0D int nid, int shrinker_id)=0D {=0D }=0D # 1724 "./include/linux/memcontrol.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mem_cgroup_kmem_disable= d(void)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int memcg_kmem_charge_page(s= truct page *page, gfp_t gfp,=0D int order)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memcg_kmem_uncharge_pag= e(struct page *page, int order)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __memcg_kmem_charge_page= (struct page *page, gfp_t gfp,=0D int order)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __memcg_kmem_uncharge_p= age(struct page *page, int order)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool memcg_kmem_enabled(void= )=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int memcg_kmem_id(struct mem= _cgroup *memcg)=0D {=0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *mem_cgrou= p_from_obj(void *p)=0D {=0D return ((void *)0);=0D }=0D # 54 "./include/net/sock.h" 2=0D # 1 "./include/linux/static_key.h" 1=0D # 55 "./include/net/sock.h" 2=0D =0D =0D =0D =0D # 1 "./include/linux/rculist_nulls.h" 1=0D # 33 "./include/linux/rculist_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_del_init_rc= u(struct hlist_nulls_node *n)=0D {=0D if (!hlist_nulls_unhashed(n)) {=0D __hlist_nulls_del(n);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 340(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev)= =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->p= prev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) _= _compiletime_assert_340(); } while (0); do { *(volatile typeof(n->pprev) *)= &(n->pprev) =3D (((void *)0)); } while (0); } while (0);=0D }=0D }=0D # 74 "./include/linux/rculist_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_del_rcu(str= uct hlist_nulls_node *n)=0D {=0D __hlist_nulls_del(n);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 41(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_341(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (((void *) 0x122 + 0)); } while (0); } while (0);=0D }=0D # 99 "./include/linux/rculist_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_add_head_rc= u(struct hlist_nulls_node *n,=0D struct hlist_nulls_head *h)=0D {=0D struct hlist_nulls_node *first =3D h->first;=0D =0D n->next =3D first;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 42(void) ; if (!((sizeof(n->pprev) =3D=3D sizeof(char) || sizeof(n->pprev) = =3D=3D sizeof(short) || sizeof(n->pprev) =3D=3D sizeof(int) || sizeof(n->pp= rev) =3D=3D sizeof(long)) || sizeof(n->pprev) =3D=3D sizeof(long long))) __= compiletime_assert_342(); } while (0); do { *(volatile typeof(n->pprev) *)&= (n->pprev) =3D (&h->first); } while (0); } while (0);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n)= && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_343(void) ; if (!((sizeof(((*(= (struct hlist_nulls_node **)&(h)->first)))) =3D=3D sizeof(char) || sizeof((= (*((struct hlist_nulls_node **)&(h)->first)))) =3D=3D sizeof(short) || size= of(((*((struct hlist_nulls_node **)&(h)->first)))) =3D=3D sizeof(int) || si= zeof(((*((struct hlist_nulls_node **)&(h)->first)))) =3D=3D sizeof(long)) |= | sizeof(((*((struct hlist_nulls_node **)&(h)->first)))) =3D=3D sizeof(long= long))) __compiletime_assert_343(); } while (0); do { *(volatile typeof(((= *((struct hlist_nulls_node **)&(h)->first)))) *)&(((*((struct hlist_nulls_n= ode **)&(h)->first)))) =3D ((typeof((*((struct hlist_nulls_node **)&(h)->fi= rst))))(_r_a_p__v)); } while (0); } while (0); else do { do { } while (0); = do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_34= 4(void) ; if (!((sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D= =3D sizeof(char) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) = =3D=3D sizeof(short) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->first= ))) =3D=3D sizeof(int) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->fir= st))) =3D=3D sizeof(long)))) __compiletime_assert_344(); } while (0); __asm= __ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do { do { __attribu= te__((__noreturn__)) extern void __compiletime_assert_345(void) ; if (!((si= zeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D=3D sizeof(char) ||= sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D=3D sizeof(short= ) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D=3D sizeof(i= nt) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D=3D sizeof= (long)) || sizeof(*&(*((struct hlist_nulls_node **)&(h)->first))) =3D=3D si= zeof(long long))) __compiletime_assert_345(); } while (0); do { *(volatile = typeof(*&(*((struct hlist_nulls_node **)&(h)->first))) *)&(*&(*((struct hli= st_nulls_node **)&(h)->first))) =3D ((typeof(*((typeof((*((struct hlist_nul= ls_node **)&(h)->first))))_r_a_p__v)) *)((typeof((*((struct hlist_nulls_nod= e **)&(h)->first))))_r_a_p__v)); } while (0); } while (0); } while (0); } w= hile (0); } while (0);=0D if (!is_a_nulls(first))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 346(void) ; if (!((sizeof(first->pprev) =3D=3D sizeof(char) || sizeof(first= ->pprev) =3D=3D sizeof(short) || sizeof(first->pprev) =3D=3D sizeof(int) ||= sizeof(first->pprev) =3D=3D sizeof(long)) || sizeof(first->pprev) =3D=3D s= izeof(long long))) __compiletime_assert_346(); } while (0); do { *(volatile= typeof(first->pprev) *)&(first->pprev) =3D (&n->next); } while (0); } whil= e (0);=0D }=0D # 130 "./include/linux/rculist_nulls.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_add_tail_rc= u(struct hlist_nulls_node *n,=0D struct hlist_nulls_head *h)=0D {=0D struct hlist_nulls_node *i, *last =3D ((void *)0);=0D =0D =0D for (i =3D h->first; !is_a_nulls(i); i =3D i->next)=0D last =3D i;=0D =0D if (last) {=0D n->next =3D last->next;=0D n->pprev =3D &last->next;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(n); ; if (__builtin_constant_p(n= ) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__((__= noreturn__)) extern void __compiletime_assert_347(void) ; if (!((sizeof(((*= ((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(char) || sizeof(((= *((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(short) || sizeof(= ((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(int) || sizeof(= ((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(long)) || sizeo= f(((*((struct hlist_node **)(&(last)->next))))) =3D=3D sizeof(long long))) = __compiletime_assert_347(); } while (0); do { *(volatile typeof(((*((struct= hlist_node **)(&(last)->next))))) *)&(((*((struct hlist_node **)(&(last)->= next))))) =3D ((typeof((*((struct hlist_node **)(&(last)->next)))))(_r_a_p_= _v)); } while (0); } while (0); else do { do { } while (0); do { do { __att= ribute__((__noreturn__)) extern void __compiletime_assert_348(void) ; if (!= ((sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(char) = || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(short= ) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(int= ) || sizeof(*&(*((struct hlist_node **)(&(last)->next)))) =3D=3D sizeof(lon= g)))) __compiletime_assert_348(); } while (0); __asm__ __volatile__ ("fence= " "rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_349(void) ; if (!((sizeof(*&(*((struct hlist= _node **)(&(last)->next)))) =3D=3D sizeof(char) || sizeof(*&(*((struct hlis= t_node **)(&(last)->next)))) =3D=3D sizeof(short) || sizeof(*&(*((struct hl= ist_node **)(&(last)->next)))) =3D=3D sizeof(int) || sizeof(*&(*((struct hl= ist_node **)(&(last)->next)))) =3D=3D sizeof(long)) || sizeof(*&(*((struct = hlist_node **)(&(last)->next)))) =3D=3D sizeof(long long))) __compiletime_a= ssert_349(); } while (0); do { *(volatile typeof(*&(*((struct hlist_node **= )(&(last)->next)))) *)&(*&(*((struct hlist_node **)(&(last)->next)))) =3D (= (typeof(*((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)) *= )((typeof((*((struct hlist_node **)(&(last)->next)))))_r_a_p__v)); } while = (0); } while (0); } while (0); } while (0); } while (0);=0D } else {=0D hlist_nulls_add_head_rcu(n, h);=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void hlist_nulls_add_fake(st= ruct hlist_nulls_node *n)=0D {=0D n->pprev =3D &n->next;=0D n->next =3D (struct hlist_nulls_node *)(1UL | (((long)((void *)0)) << 1));= =0D }=0D # 60 "./include/net/sock.h" 2=0D # 1 "./include/linux/poll.h" 1=0D # 12 "./include/linux/poll.h"=0D # 1 "./include/uapi/linux/poll.h" 1=0D # 1 "./arch/riscv/include/generated/uapi/asm/poll.h" 1=0D # 1 "./include/uapi/asm-generic/poll.h" 1=0D # 36 "./include/uapi/asm-generic/poll.h"=0D struct pollfd {=0D int fd;=0D short events;=0D short revents;=0D };=0D # 2 "./arch/riscv/include/generated/uapi/asm/poll.h" 2=0D # 2 "./include/uapi/linux/poll.h" 2=0D # 13 "./include/linux/poll.h" 2=0D # 1 "./include/uapi/linux/eventpoll.h" 1=0D # 77 "./include/uapi/linux/eventpoll.h"=0D struct epoll_event {=0D __poll_t events;=0D __u64 data;=0D } ;=0D # 89 "./include/uapi/linux/eventpoll.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ep_take_care_of_epollwa= keup(struct epoll_event *epev)=0D {=0D epev->events &=3D ~(( __poll_t)(1U << 29));=0D }=0D # 14 "./include/linux/poll.h" 2=0D # 30 "./include/linux/poll.h"=0D struct poll_table_struct;=0D =0D =0D =0D =0D typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct = poll_table_struct *);=0D =0D =0D =0D =0D =0D typedef struct poll_table_struct {=0D poll_queue_proc _qproc;=0D __poll_t _key;=0D } poll_table;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void poll_wait(struct file *= filp, wait_queue_head_t * wait_address, poll_table *p)=0D {=0D if (p && p->_qproc && wait_address)=0D p->_qproc(filp, wait_address, p);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool poll_does_not_wait(cons= t poll_table *p)=0D {=0D return p =3D=3D ((void *)0) || p->_qproc =3D=3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __poll_t poll_requested_even= ts(const poll_table *p)=0D {=0D return p ? p->_key : ~(__poll_t)0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void init_poll_funcptr(poll_= table *pt, poll_queue_proc qproc)=0D {=0D pt->_qproc =3D qproc;=0D pt->_key =3D ~(__poll_t)0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool file_can_poll(struct fi= le *file)=0D {=0D return file->f_op->poll;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __poll_t vfs_poll(struct fil= e *file, struct poll_table_struct *pt)=0D {=0D if (__builtin_expect(!!(!file->f_op->poll), 0))=0D return (( __poll_t)0x00000001 | ( __poll_t)0x00000004 | ( __poll_t)0x0000= 0040 | ( __poll_t)0x00000100);=0D return file->f_op->poll(file, pt);=0D }=0D =0D struct poll_table_entry {=0D struct file *filp;=0D __poll_t key;=0D wait_queue_entry_t wait;=0D wait_queue_head_t *wait_address;=0D };=0D =0D =0D =0D =0D struct poll_wqueues {=0D poll_table pt;=0D struct poll_table_page *table;=0D struct task_struct *polling_task;=0D int triggered;=0D int error;=0D int inline_index;=0D struct poll_table_entry inline_entries[((768 - 256) / sizeof(struct poll_t= able_entry))];=0D };=0D =0D extern void poll_initwait(struct poll_wqueues *pwq);=0D extern void poll_freewait(struct poll_wqueues *pwq);=0D extern u64 select_estimate_accuracy(struct timespec64 *tv);=0D =0D =0D =0D extern int core_sys_select(int n, fd_set *inp, fd_set *outp,=0D fd_set *exp, struct timespec64 *end_time);=0D =0D extern int poll_select_set_timeout(struct timespec64 *to, time64_t sec,=0D long nsec);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u16 mangle_poll(__poll_t v= al)=0D {=0D __u16 v =3D ( __u16)val;=0D =0D return (( __u16)( __poll_t)0x00000001 < 0x0001 ? (v & ( __u16)( __poll_t)0= x00000001) * (0x0001/( __u16)( __poll_t)0x00000001) : (v & ( __u16)( __poll= _t)0x00000001) / (( __u16)( __poll_t)0x00000001/0x0001)) | (( __u16)( __pol= l_t)0x00000004 < 0x0004 ? (v & ( __u16)( __poll_t)0x00000004) * (0x0004/( _= _u16)( __poll_t)0x00000004) : (v & ( __u16)( __poll_t)0x00000004) / (( __u1= 6)( __poll_t)0x00000004/0x0004)) | (( __u16)( __poll_t)0x00000002 < 0x0002 = ? (v & ( __u16)( __poll_t)0x00000002) * (0x0002/( __u16)( __poll_t)0x000000= 02) : (v & ( __u16)( __poll_t)0x00000002) / (( __u16)( __poll_t)0x00000002/= 0x0002)) | (( __u16)( __poll_t)0x00000008 < 0x0008 ? (v & ( __u16)( __poll_= t)0x00000008) * (0x0008/( __u16)( __poll_t)0x00000008) : (v & ( __u16)( __p= oll_t)0x00000008) / (( __u16)( __poll_t)0x00000008/0x0008)) | (( __u16)( __= poll_t)0x00000020 < 0x0020 ? (v & ( __u16)( __poll_t)0x00000020) * (0x0020/= ( __u16)( __poll_t)0x00000020) : (v & ( __u16)( __poll_t)0x00000020) / (( _= _u16)( __poll_t)0x00000020/0x0020)) |=0D (( __u16)( __poll_t)0x00000040 < 0x0040 ? (v & ( __u16)( __poll_t)0x00000= 040) * (0x0040/( __u16)( __poll_t)0x00000040) : (v & ( __u16)( __poll_t)0x0= 0000040) / (( __u16)( __poll_t)0x00000040/0x0040)) | (( __u16)( __poll_t)0x= 00000080 < 0x0080 ? (v & ( __u16)( __poll_t)0x00000080) * (0x0080/( __u16)(= __poll_t)0x00000080) : (v & ( __u16)( __poll_t)0x00000080) / (( __u16)( __= poll_t)0x00000080/0x0080)) | (( __u16)( __poll_t)0x00000100 < 0x0100 ? (v &= ( __u16)( __poll_t)0x00000100) * (0x0100/( __u16)( __poll_t)0x00000100) : = (v & ( __u16)( __poll_t)0x00000100) / (( __u16)( __poll_t)0x00000100/0x0100= )) | (( __u16)( __poll_t)0x00000200 < 0x0200 ? (v & ( __u16)( __poll_t)0x00= 000200) * (0x0200/( __u16)( __poll_t)0x00000200) : (v & ( __u16)( __poll_t)= 0x00000200) / (( __u16)( __poll_t)0x00000200/0x0200)) |=0D (( __u16)( __poll_t)0x00000010 < 0x0010 ? (v & ( __u16)( __poll_t)0x00000= 010) * (0x0010/( __u16)( __poll_t)0x00000010) : (v & ( __u16)( __poll_t)0x0= 0000010) / (( __u16)( __poll_t)0x00000010/0x0010)) | (( __u16)( __poll_t)0x= 00002000 < 0x2000 ? (v & ( __u16)( __poll_t)0x00002000) * (0x2000/( __u16)(= __poll_t)0x00002000) : (v & ( __u16)( __poll_t)0x00002000) / (( __u16)( __= poll_t)0x00002000/0x2000)) | (( __u16)( __poll_t)0x00000400 < 0x0400 ? (v &= ( __u16)( __poll_t)0x00000400) * (0x0400/( __u16)( __poll_t)0x00000400) : = (v & ( __u16)( __poll_t)0x00000400) / (( __u16)( __poll_t)0x00000400/0x0400= ));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __poll_t demangle_poll(u16 v= al)=0D {=0D =0D return ( __poll_t)(0x0001 < ( __u16)( __poll_t)0x00000001 ? (val & 0x0001)= * (( __u16)( __poll_t)0x00000001/0x0001) : (val & 0x0001) / (0x0001/( __u1= 6)( __poll_t)0x00000001)) | ( __poll_t)(0x0004 < ( __u16)( __poll_t)0x00000= 004 ? (val & 0x0004) * (( __u16)( __poll_t)0x00000004/0x0004) : (val & 0x00= 04) / (0x0004/( __u16)( __poll_t)0x00000004)) | ( __poll_t)(0x0002 < ( __u1= 6)( __poll_t)0x00000002 ? (val & 0x0002) * (( __u16)( __poll_t)0x00000002/0= x0002) : (val & 0x0002) / (0x0002/( __u16)( __poll_t)0x00000002)) | ( __pol= l_t)(0x0008 < ( __u16)( __poll_t)0x00000008 ? (val & 0x0008) * (( __u16)( _= _poll_t)0x00000008/0x0008) : (val & 0x0008) / (0x0008/( __u16)( __poll_t)0x= 00000008)) | ( __poll_t)(0x0020 < ( __u16)( __poll_t)0x00000020 ? (val & 0x= 0020) * (( __u16)( __poll_t)0x00000020/0x0020) : (val & 0x0020) / (0x0020/(= __u16)( __poll_t)0x00000020)) |=0D ( __poll_t)(0x0040 < ( __u16)( __poll_t)0x00000040 ? (val & 0x0040) * (( = __u16)( __poll_t)0x00000040/0x0040) : (val & 0x0040) / (0x0040/( __u16)( __= poll_t)0x00000040)) | ( __poll_t)(0x0080 < ( __u16)( __poll_t)0x00000080 ? = (val & 0x0080) * (( __u16)( __poll_t)0x00000080/0x0080) : (val & 0x0080) / = (0x0080/( __u16)( __poll_t)0x00000080)) | ( __poll_t)(0x0100 < ( __u16)( __= poll_t)0x00000100 ? (val & 0x0100) * (( __u16)( __poll_t)0x00000100/0x0100)= : (val & 0x0100) / (0x0100/( __u16)( __poll_t)0x00000100)) | ( __poll_t)(0= x0200 < ( __u16)( __poll_t)0x00000200 ? (val & 0x0200) * (( __u16)( __poll_= t)0x00000200/0x0200) : (val & 0x0200) / (0x0200/( __u16)( __poll_t)0x000002= 00)) |=0D ( __poll_t)(0x0010 < ( __u16)( __poll_t)0x00000010 ? (val & 0x0010) * (( = __u16)( __poll_t)0x00000010/0x0010) : (val & 0x0010) / (0x0010/( __u16)( __= poll_t)0x00000010)) | ( __poll_t)(0x2000 < ( __u16)( __poll_t)0x00002000 ? = (val & 0x2000) * (( __u16)( __poll_t)0x00002000/0x2000) : (val & 0x2000) / = (0x2000/( __u16)( __poll_t)0x00002000)) | ( __poll_t)(0x0400 < ( __u16)( __= poll_t)0x00000400 ? (val & 0x0400) * (( __u16)( __poll_t)0x00000400/0x0400)= : (val & 0x0400) / (0x0400/( __u16)( __poll_t)0x00000400));=0D =0D }=0D # 61 "./include/net/sock.h" 2=0D =0D # 1 "./include/linux/indirect_call_wrapper.h" 1=0D # 63 "./include/net/sock.h" 2=0D =0D =0D =0D # 1 "./include/net/dst.h" 1=0D # 14 "./include/net/dst.h"=0D # 1 "./include/linux/rtnetlink.h" 1=0D # 10 "./include/linux/rtnetlink.h"=0D # 1 "./include/uapi/linux/rtnetlink.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/if_addr.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct ifaddrmsg {=0D __u8 ifa_family;=0D __u8 ifa_prefixlen;=0D __u8 ifa_flags;=0D __u8 ifa_scope;=0D __u32 ifa_index;=0D };=0D # 26 "./include/uapi/linux/if_addr.h"=0D enum {=0D IFA_UNSPEC,=0D IFA_ADDRESS,=0D IFA_LOCAL,=0D IFA_LABEL,=0D IFA_BROADCAST,=0D IFA_ANYCAST,=0D IFA_CACHEINFO,=0D IFA_MULTICAST,=0D IFA_FLAGS,=0D IFA_RT_PRIORITY,=0D IFA_TARGET_NETNSID,=0D IFA_PROTO,=0D __IFA_MAX,=0D };=0D # 60 "./include/uapi/linux/if_addr.h"=0D struct ifa_cacheinfo {=0D __u32 ifa_prefered;=0D __u32 ifa_valid;=0D __u32 cstamp;=0D __u32 tstamp;=0D };=0D # 9 "./include/uapi/linux/rtnetlink.h" 2=0D # 24 "./include/uapi/linux/rtnetlink.h"=0D enum {=0D RTM_BASE =3D 16,=0D =0D =0D RTM_NEWLINK =3D 16,=0D =0D RTM_DELLINK,=0D =0D RTM_GETLINK,=0D =0D RTM_SETLINK,=0D =0D =0D RTM_NEWADDR =3D 20,=0D =0D RTM_DELADDR,=0D =0D RTM_GETADDR,=0D =0D =0D RTM_NEWROUTE =3D 24,=0D =0D RTM_DELROUTE,=0D =0D RTM_GETROUTE,=0D =0D =0D RTM_NEWNEIGH =3D 28,=0D =0D RTM_DELNEIGH,=0D =0D RTM_GETNEIGH,=0D =0D =0D RTM_NEWRULE =3D 32,=0D =0D RTM_DELRULE,=0D =0D RTM_GETRULE,=0D =0D =0D RTM_NEWQDISC =3D 36,=0D =0D RTM_DELQDISC,=0D =0D RTM_GETQDISC,=0D =0D =0D RTM_NEWTCLASS =3D 40,=0D =0D RTM_DELTCLASS,=0D =0D RTM_GETTCLASS,=0D =0D =0D RTM_NEWTFILTER =3D 44,=0D =0D RTM_DELTFILTER,=0D =0D RTM_GETTFILTER,=0D =0D =0D RTM_NEWACTION =3D 48,=0D =0D RTM_DELACTION,=0D =0D RTM_GETACTION,=0D =0D =0D RTM_NEWPREFIX =3D 52,=0D =0D =0D RTM_GETMULTICAST =3D 58,=0D =0D =0D RTM_GETANYCAST =3D 62,=0D =0D =0D RTM_NEWNEIGHTBL =3D 64,=0D =0D RTM_GETNEIGHTBL =3D 66,=0D =0D RTM_SETNEIGHTBL,=0D =0D =0D RTM_NEWNDUSEROPT =3D 68,=0D =0D =0D RTM_NEWADDRLABEL =3D 72,=0D =0D RTM_DELADDRLABEL,=0D =0D RTM_GETADDRLABEL,=0D =0D =0D RTM_GETDCB =3D 78,=0D =0D RTM_SETDCB,=0D =0D =0D RTM_NEWNETCONF =3D 80,=0D =0D RTM_DELNETCONF,=0D =0D RTM_GETNETCONF =3D 82,=0D =0D =0D RTM_NEWMDB =3D 84,=0D =0D RTM_DELMDB =3D 85,=0D =0D RTM_GETMDB =3D 86,=0D =0D =0D RTM_NEWNSID =3D 88,=0D =0D RTM_DELNSID =3D 89,=0D =0D RTM_GETNSID =3D 90,=0D =0D =0D RTM_NEWSTATS =3D 92,=0D =0D RTM_GETSTATS =3D 94,=0D =0D RTM_SETSTATS,=0D =0D =0D RTM_NEWCACHEREPORT =3D 96,=0D =0D =0D RTM_NEWCHAIN =3D 100,=0D =0D RTM_DELCHAIN,=0D =0D RTM_GETCHAIN,=0D =0D =0D RTM_NEWNEXTHOP =3D 104,=0D =0D RTM_DELNEXTHOP,=0D =0D RTM_GETNEXTHOP,=0D =0D =0D RTM_NEWLINKPROP =3D 108,=0D =0D RTM_DELLINKPROP,=0D =0D RTM_GETLINKPROP,=0D =0D =0D RTM_NEWVLAN =3D 112,=0D =0D RTM_DELVLAN,=0D =0D RTM_GETVLAN,=0D =0D =0D RTM_NEWNEXTHOPBUCKET =3D 116,=0D =0D RTM_DELNEXTHOPBUCKET,=0D =0D RTM_GETNEXTHOPBUCKET,=0D =0D =0D RTM_NEWTUNNEL =3D 120,=0D =0D RTM_DELTUNNEL,=0D =0D RTM_GETTUNNEL,=0D =0D =0D __RTM_MAX,=0D =0D };=0D # 211 "./include/uapi/linux/rtnetlink.h"=0D struct rtattr {=0D unsigned short rta_len;=0D unsigned short rta_type;=0D };=0D # 237 "./include/uapi/linux/rtnetlink.h"=0D struct rtmsg {=0D unsigned char rtm_family;=0D unsigned char rtm_dst_len;=0D unsigned char rtm_src_len;=0D unsigned char rtm_tos;=0D =0D unsigned char rtm_table;=0D unsigned char rtm_protocol;=0D unsigned char rtm_scope;=0D unsigned char rtm_type;=0D =0D unsigned rtm_flags;=0D };=0D =0D =0D =0D enum {=0D RTN_UNSPEC,=0D RTN_UNICAST,=0D RTN_LOCAL,=0D RTN_BROADCAST,=0D =0D RTN_ANYCAST,=0D =0D RTN_MULTICAST,=0D RTN_BLACKHOLE,=0D RTN_UNREACHABLE,=0D RTN_PROHIBIT,=0D RTN_THROW,=0D RTN_NAT,=0D RTN_XRESOLVE,=0D __RTN_MAX=0D };=0D # 320 "./include/uapi/linux/rtnetlink.h"=0D enum rt_scope_t {=0D RT_SCOPE_UNIVERSE=3D0,=0D =0D RT_SCOPE_SITE=3D200,=0D RT_SCOPE_LINK=3D253,=0D RT_SCOPE_HOST=3D254,=0D RT_SCOPE_NOWHERE=3D255=0D };=0D # 347 "./include/uapi/linux/rtnetlink.h"=0D enum rt_class_t {=0D RT_TABLE_UNSPEC=3D0,=0D =0D RT_TABLE_COMPAT=3D252,=0D RT_TABLE_DEFAULT=3D253,=0D RT_TABLE_MAIN=3D254,=0D RT_TABLE_LOCAL=3D255,=0D RT_TABLE_MAX=3D0xFFFFFFFF=0D };=0D =0D =0D =0D =0D enum rtattr_type_t {=0D RTA_UNSPEC,=0D RTA_DST,=0D RTA_SRC,=0D RTA_IIF,=0D RTA_OIF,=0D RTA_GATEWAY,=0D RTA_PRIORITY,=0D RTA_PREFSRC,=0D RTA_METRICS,=0D RTA_MULTIPATH,=0D RTA_PROTOINFO,=0D RTA_FLOW,=0D RTA_CACHEINFO,=0D RTA_SESSION,=0D RTA_MP_ALGO,=0D RTA_TABLE,=0D RTA_MARK,=0D RTA_MFC_STATS,=0D RTA_VIA,=0D RTA_NEWDST,=0D RTA_PREF,=0D RTA_ENCAP_TYPE,=0D RTA_ENCAP,=0D RTA_EXPIRES,=0D RTA_PAD,=0D RTA_UID,=0D RTA_TTL_PROPAGATE,=0D RTA_IP_PROTO,=0D RTA_SPORT,=0D RTA_DPORT,=0D RTA_NH_ID,=0D __RTA_MAX=0D };=0D # 409 "./include/uapi/linux/rtnetlink.h"=0D struct rtnexthop {=0D unsigned short rtnh_len;=0D unsigned char rtnh_flags;=0D unsigned char rtnh_hops;=0D int rtnh_ifindex;=0D };=0D # 441 "./include/uapi/linux/rtnetlink.h"=0D struct rtvia {=0D __kernel_sa_family_t rtvia_family;=0D __u8 rtvia_addr[0];=0D };=0D =0D =0D =0D struct rta_cacheinfo {=0D __u32 rta_clntref;=0D __u32 rta_lastuse;=0D __s32 rta_expires;=0D __u32 rta_error;=0D __u32 rta_used;=0D =0D =0D __u32 rta_id;=0D __u32 rta_ts;=0D __u32 rta_tsage;=0D };=0D =0D =0D =0D enum {=0D RTAX_UNSPEC,=0D =0D RTAX_LOCK,=0D =0D RTAX_MTU,=0D =0D RTAX_WINDOW,=0D =0D RTAX_RTT,=0D =0D RTAX_RTTVAR,=0D =0D RTAX_SSTHRESH,=0D =0D RTAX_CWND,=0D =0D RTAX_ADVMSS,=0D =0D RTAX_REORDERING,=0D =0D RTAX_HOPLIMIT,=0D =0D RTAX_INITCWND,=0D =0D RTAX_FEATURES,=0D =0D RTAX_RTO_MIN,=0D =0D RTAX_INITRWND,=0D =0D RTAX_QUICKACK,=0D =0D RTAX_CC_ALGO,=0D =0D RTAX_FASTOPEN_NO_COOKIE,=0D =0D __RTAX_MAX=0D };=0D # 513 "./include/uapi/linux/rtnetlink.h"=0D struct rta_session {=0D __u8 proto;=0D __u8 pad1;=0D __u16 pad2;=0D =0D union {=0D struct {=0D __u16 sport;=0D __u16 dport;=0D } ports;=0D =0D struct {=0D __u8 type;=0D __u8 code;=0D __u16 ident;=0D } icmpt;=0D =0D __u32 spi;=0D } u;=0D };=0D =0D struct rta_mfc_stats {=0D __u64 mfcs_packets;=0D __u64 mfcs_bytes;=0D __u64 mfcs_wrong_if;=0D };=0D =0D =0D =0D =0D =0D struct rtgenmsg {=0D unsigned char rtgen_family;=0D };=0D # 557 "./include/uapi/linux/rtnetlink.h"=0D struct ifinfomsg {=0D unsigned char ifi_family;=0D unsigned char __ifi_pad;=0D unsigned short ifi_type;=0D int ifi_index;=0D unsigned ifi_flags;=0D unsigned ifi_change;=0D };=0D =0D =0D =0D =0D =0D struct prefixmsg {=0D unsigned char prefix_family;=0D unsigned char prefix_pad1;=0D unsigned short prefix_pad2;=0D int prefix_ifindex;=0D unsigned char prefix_type;=0D unsigned char prefix_len;=0D unsigned char prefix_flags;=0D unsigned char prefix_pad3;=0D };=0D =0D enum=0D {=0D PREFIX_UNSPEC,=0D PREFIX_ADDRESS,=0D PREFIX_CACHEINFO,=0D __PREFIX_MAX=0D };=0D =0D =0D =0D struct prefix_cacheinfo {=0D __u32 preferred_time;=0D __u32 valid_time;=0D };=0D =0D =0D =0D =0D =0D =0D struct tcmsg {=0D unsigned char tcm_family;=0D unsigned char tcm__pad1;=0D unsigned short tcm__pad2;=0D int tcm_ifindex;=0D __u32 tcm_handle;=0D __u32 tcm_parent;=0D =0D =0D =0D =0D __u32 tcm_info;=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_UNSPEC,=0D TCA_KIND,=0D TCA_OPTIONS,=0D TCA_STATS,=0D TCA_XSTATS,=0D TCA_RATE,=0D TCA_FCNT,=0D TCA_STATS2,=0D TCA_STAB,=0D TCA_PAD,=0D TCA_DUMP_INVISIBLE,=0D TCA_CHAIN,=0D TCA_HW_OFFLOAD,=0D TCA_INGRESS_BLOCK,=0D TCA_EGRESS_BLOCK,=0D TCA_DUMP_FLAGS,=0D __TCA_MAX=0D };=0D # 655 "./include/uapi/linux/rtnetlink.h"=0D struct nduseroptmsg {=0D unsigned char nduseropt_family;=0D unsigned char nduseropt_pad1;=0D unsigned short nduseropt_opts_len;=0D int nduseropt_ifindex;=0D __u8 nduseropt_icmp_type;=0D __u8 nduseropt_icmp_code;=0D unsigned short nduseropt_pad2;=0D unsigned int nduseropt_pad3;=0D =0D };=0D =0D enum {=0D NDUSEROPT_UNSPEC,=0D NDUSEROPT_SRCADDR,=0D __NDUSEROPT_MAX=0D };=0D # 699 "./include/uapi/linux/rtnetlink.h"=0D enum rtnetlink_groups {=0D RTNLGRP_NONE,=0D =0D RTNLGRP_LINK,=0D =0D RTNLGRP_NOTIFY,=0D =0D RTNLGRP_NEIGH,=0D =0D RTNLGRP_TC,=0D =0D RTNLGRP_IPV4_IFADDR,=0D =0D RTNLGRP_IPV4_MROUTE,=0D =0D RTNLGRP_IPV4_ROUTE,=0D =0D RTNLGRP_IPV4_RULE,=0D =0D RTNLGRP_IPV6_IFADDR,=0D =0D RTNLGRP_IPV6_MROUTE,=0D =0D RTNLGRP_IPV6_ROUTE,=0D =0D RTNLGRP_IPV6_IFINFO,=0D =0D RTNLGRP_DECnet_IFADDR,=0D =0D RTNLGRP_NOP2,=0D RTNLGRP_DECnet_ROUTE,=0D =0D RTNLGRP_DECnet_RULE,=0D =0D RTNLGRP_NOP4,=0D RTNLGRP_IPV6_PREFIX,=0D =0D RTNLGRP_IPV6_RULE,=0D =0D RTNLGRP_ND_USEROPT,=0D =0D RTNLGRP_PHONET_IFADDR,=0D =0D RTNLGRP_PHONET_ROUTE,=0D =0D RTNLGRP_DCB,=0D =0D RTNLGRP_IPV4_NETCONF,=0D =0D RTNLGRP_IPV6_NETCONF,=0D =0D RTNLGRP_MDB,=0D =0D RTNLGRP_MPLS_ROUTE,=0D =0D RTNLGRP_NSID,=0D =0D RTNLGRP_MPLS_NETCONF,=0D =0D RTNLGRP_IPV4_MROUTE_R,=0D =0D RTNLGRP_IPV6_MROUTE_R,=0D =0D RTNLGRP_NEXTHOP,=0D =0D RTNLGRP_BRVLAN,=0D =0D RTNLGRP_MCTP_IFADDR,=0D =0D RTNLGRP_TUNNEL,=0D =0D RTNLGRP_STATS,=0D =0D __RTNLGRP_MAX=0D };=0D =0D =0D =0D struct tcamsg {=0D unsigned char tca_family;=0D unsigned char tca__pad1;=0D unsigned short tca__pad2;=0D };=0D =0D enum {=0D TCA_ROOT_UNSPEC,=0D TCA_ROOT_TAB,=0D =0D =0D TCA_ROOT_FLAGS,=0D TCA_ROOT_COUNT,=0D TCA_ROOT_TIME_DELTA,=0D __TCA_ROOT_MAX,=0D =0D };=0D # 11 "./include/linux/rtnetlink.h" 2=0D =0D extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u3= 2 group, int echo);=0D extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid);=0D extern void rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid,=0D u32 group, struct nlmsghdr *nlh, gfp_t flags);=0D extern void rtnl_set_sk_err(struct net *net, u32 group, int error);=0D extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics);=0D extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst,=0D u32 id, long expires, u32 error);=0D =0D void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change, gfp_t = flags);=0D void rtmsg_ifinfo_newnet(int type, struct net_device *dev, unsigned int cha= nge,=0D gfp_t flags, int *new_nsid, int new_ifindex);=0D struct sk_buff *rtmsg_ifinfo_build_skb(int type, struct net_device *dev,=0D unsigned change, u32 event,=0D gfp_t flags, int *new_nsid,=0D int new_ifindex);=0D void rtmsg_ifinfo_send(struct sk_buff *skb, struct net_device *dev,=0D gfp_t flags);=0D =0D =0D =0D extern void rtnl_lock(void);=0D extern void rtnl_unlock(void);=0D extern int rtnl_trylock(void);=0D extern int rtnl_is_locked(void);=0D extern int rtnl_lock_killable(void);=0D extern bool refcount_dec_and_rtnl_lock(refcount_t *r);=0D =0D extern wait_queue_head_t netdev_unregistering_wq;=0D extern struct rw_semaphore pernet_ops_rwsem;=0D extern struct rw_semaphore net_rwsem;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lockdep_rtnl_is_held(vo= id)=0D {=0D return true;=0D }=0D # 83 "./include/linux/rtnetlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct netdev_queue *dev_ing= ress_queue(struct net_device *dev)=0D {=0D return ({ do { } while (0 && (!((lockdep_rtnl_is_held())))); ; ((typeof(*(= dev->ingress_queue)) *)((dev->ingress_queue))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct netdev_queue *dev_ing= ress_queue_rcu(struct net_device *dev)=0D {=0D return ({ typeof(*(dev->ingress_queue)) *__UNIQUE_ID_rcu350 =3D (typeof(*(= dev->ingress_queue)) *)({ do { __attribute__((__noreturn__)) extern void __= compiletime_assert_351(void) ; if (!((sizeof((dev->ingress_queue)) =3D=3D s= izeof(char) || sizeof((dev->ingress_queue)) =3D=3D sizeof(short) || sizeof(= (dev->ingress_queue)) =3D=3D sizeof(int) || sizeof((dev->ingress_queue)) = =3D=3D sizeof(long)) || sizeof((dev->ingress_queue)) =3D=3D sizeof(long lon= g))) __compiletime_assert_351(); } while (0); (*(const volatile typeof( _Ge= neric(((dev->ingress_queue)), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: ((dev->ingress_queue)))) *)&((dev->ingress_queue))); }); do { } wh= ile (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(dev->ingress_queu= e)) *)(__UNIQUE_ID_rcu350)); });=0D }=0D =0D struct netdev_queue *dev_ingress_queue_create(struct net_device *dev);=0D # 105 "./include/linux/rtnetlink.h"=0D void rtnetlink_init(void);=0D void __rtnl_unlock(void);=0D void rtnl_kfree_skbs(struct sk_buff *head, struct sk_buff *tail);=0D =0D =0D =0D =0D =0D extern int ndo_dflt_fdb_dump(struct sk_buff *skb,=0D struct netlink_callback *cb,=0D struct net_device *dev,=0D struct net_device *filter_dev,=0D int *idx);=0D extern int ndo_dflt_fdb_add(struct ndmsg *ndm,=0D struct nlattr *tb[],=0D struct net_device *dev,=0D const unsigned char *addr,=0D u16 vid,=0D u16 flags);=0D extern int ndo_dflt_fdb_del(struct ndmsg *ndm,=0D struct nlattr *tb[],=0D struct net_device *dev,=0D const unsigned char *addr,=0D u16 vid);=0D =0D extern int ndo_dflt_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,=0D struct net_device *dev, u16 mode,=0D u32 flags, u32 mask, int nlflags,=0D u32 filter_mask,=0D int (*vlan_fill)(struct sk_buff *skb,=0D struct net_device *dev,=0D u32 filter_mask));=0D =0D extern void rtnl_offload_xstats_notify(struct net_device *dev);=0D # 15 "./include/net/dst.h" 2=0D =0D =0D =0D =0D # 1 "./include/net/neighbour.h" 1=0D # 31 "./include/net/neighbour.h"=0D # 1 "./include/net/rtnetlink.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/net/netlink.h" 1=0D # 165 "./include/net/netlink.h"=0D enum {=0D NLA_UNSPEC,=0D NLA_U8,=0D NLA_U16,=0D NLA_U32,=0D NLA_U64,=0D NLA_STRING,=0D NLA_FLAG,=0D NLA_MSECS,=0D NLA_NESTED,=0D NLA_NESTED_ARRAY,=0D NLA_NUL_STRING,=0D NLA_BINARY,=0D NLA_S8,=0D NLA_S16,=0D NLA_S32,=0D NLA_S64,=0D NLA_BITFIELD32,=0D NLA_REJECT,=0D __NLA_TYPE_MAX,=0D };=0D =0D =0D =0D struct netlink_range_validation {=0D u64 min, max;=0D };=0D =0D struct netlink_range_validation_signed {=0D s64 min, max;=0D };=0D =0D enum nla_policy_validation {=0D NLA_VALIDATE_NONE,=0D NLA_VALIDATE_RANGE,=0D NLA_VALIDATE_RANGE_WARN_TOO_LONG,=0D NLA_VALIDATE_MIN,=0D NLA_VALIDATE_MAX,=0D NLA_VALIDATE_MASK,=0D NLA_VALIDATE_RANGE_PTR,=0D NLA_VALIDATE_FUNCTION,=0D };=0D # 315 "./include/net/netlink.h"=0D struct nla_policy {=0D u8 type;=0D u8 validation_type;=0D u16 len;=0D union {=0D const u32 bitfield32_valid;=0D const u32 mask;=0D const char *reject_message;=0D const struct nla_policy *nested_policy;=0D struct netlink_range_validation *range;=0D struct netlink_range_validation_signed *range_signed;=0D struct {=0D s16 min, max;=0D };=0D int (*validate)(const struct nlattr *attr,=0D struct netlink_ext_ack *extack);=0D # 349 "./include/net/netlink.h"=0D u16 strict_start_type;=0D };=0D };=0D # 453 "./include/net/netlink.h"=0D struct nl_info {=0D struct nlmsghdr *nlh;=0D struct net *nl_net;=0D u32 portid;=0D u8 skip_notify:1,=0D skip_notify_kernel:1;=0D };=0D # 478 "./include/net/netlink.h"=0D enum netlink_validation {=0D NL_VALIDATE_LIBERAL =3D 0,=0D NL_VALIDATE_TRAILING =3D ((((1UL))) << (0)),=0D NL_VALIDATE_MAXTYPE =3D ((((1UL))) << (1)),=0D NL_VALIDATE_UNSPEC =3D ((((1UL))) << (2)),=0D NL_VALIDATE_STRICT_ATTRS =3D ((((1UL))) << (3)),=0D NL_VALIDATE_NESTED =3D ((((1UL))) << (4)),=0D };=0D # 495 "./include/net/netlink.h"=0D int netlink_rcv_skb(struct sk_buff *skb,=0D int (*cb)(struct sk_buff *, struct nlmsghdr *,=0D struct netlink_ext_ack *));=0D int nlmsg_notify(struct sock *sk, struct sk_buff *skb, u32 portid,=0D unsigned int group, int report, gfp_t flags);=0D =0D int __nla_validate(const struct nlattr *head, int len, int maxtype,=0D const struct nla_policy *policy, unsigned int validate,=0D struct netlink_ext_ack *extack);=0D int __nla_parse(struct nlattr **tb, int maxtype, const struct nlattr *head,= =0D int len, const struct nla_policy *policy, unsigned int validate,=0D struct netlink_ext_ack *extack);=0D int nla_policy_len(const struct nla_policy *, int);=0D struct nlattr *nla_find(const struct nlattr *head, int len, int attrtype);= =0D ssize_t nla_strscpy(char *dst, const struct nlattr *nla, size_t dstsize);=0D char *nla_strdup(const struct nlattr *nla, gfp_t flags);=0D int nla_memcpy(void *dest, const struct nlattr *src, int count);=0D int nla_memcmp(const struct nlattr *nla, const void *data, size_t size);=0D int nla_strcmp(const struct nlattr *nla, const char *str);=0D struct nlattr *__nla_reserve(struct sk_buff *skb, int attrtype, int attrlen= );=0D struct nlattr *__nla_reserve_64bit(struct sk_buff *skb, int attrtype,=0D int attrlen, int padattr);=0D void *__nla_reserve_nohdr(struct sk_buff *skb, int attrlen);=0D struct nlattr *nla_reserve(struct sk_buff *skb, int attrtype, int attrlen);= =0D struct nlattr *nla_reserve_64bit(struct sk_buff *skb, int attrtype,=0D int attrlen, int padattr);=0D void *nla_reserve_nohdr(struct sk_buff *skb, int attrlen);=0D void __nla_put(struct sk_buff *skb, int attrtype, int attrlen,=0D const void *data);=0D void __nla_put_64bit(struct sk_buff *skb, int attrtype, int attrlen,=0D const void *data, int padattr);=0D void __nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data);=0D int nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *dat= a);=0D int nla_put_64bit(struct sk_buff *skb, int attrtype, int attrlen,=0D const void *data, int padattr);=0D int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data);=0D int nla_append(struct sk_buff *skb, int attrlen, const void *data);=0D # 541 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_msg_size(int paylo= ad)=0D {=0D return ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U -1) )) + payload;= =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_total_size(int pay= load)=0D {=0D return ( ((nlmsg_msg_size(payload))+4U -1) & ~(4U -1) );=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_padlen(int payload= )=0D {=0D return nlmsg_total_size(payload) - nlmsg_msg_size(payload);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *nlmsg_data(const struc= t nlmsghdr *nlh)=0D {=0D return (unsigned char *) nlh + ((int) ( ((sizeof(struct nlmsghdr))+4U -1) = & ~(4U -1) ));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_len(const struct n= lmsghdr *nlh)=0D {=0D return nlh->nlmsg_len - ((int) ( ((sizeof(struct nlmsghdr))+4U -1) & ~(4U = -1) ));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *nlmsg_attrdat= a(const struct nlmsghdr *nlh,=0D int hdrlen)=0D {=0D unsigned char *data =3D nlmsg_data(nlh);=0D return (struct nlattr *) (data + ( ((hdrlen)+4U -1) & ~(4U -1) ));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_attrlen(const stru= ct nlmsghdr *nlh, int hdrlen)=0D {=0D return nlmsg_len(nlh) - ( ((hdrlen)+4U -1) & ~(4U -1) );=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_ok(const struct nl= msghdr *nlh, int remaining)=0D {=0D return (remaining >=3D (int) sizeof(struct nlmsghdr) &&=0D nlh->nlmsg_len >=3D sizeof(struct nlmsghdr) &&=0D nlh->nlmsg_len <=3D remaining);=0D }=0D # 624 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlmsghdr *=0D nlmsg_next(const struct nlmsghdr *nlh, int *remaining)=0D {=0D int totlen =3D ( ((nlh->nlmsg_len)+4U -1) & ~(4U -1) );=0D =0D *remaining -=3D totlen;=0D =0D return (struct nlmsghdr *) ((unsigned char *) nlh + totlen);=0D }=0D # 650 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_parse(struct nlattr = **tb, int maxtype,=0D const struct nlattr *head, int len,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_parse(tb, maxtype, head, len, policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE | NL_VALIDATE_UNSPEC | NL= _VALIDATE_STRICT_ATTRS | NL_VALIDATE_NESTED), extack);=0D }=0D # 675 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_parse_deprecated(str= uct nlattr **tb, int maxtype,=0D const struct nlattr *head, int len,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_parse(tb, maxtype, head, len, policy,=0D NL_VALIDATE_LIBERAL, extack);=0D }=0D # 700 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_parse_deprecated_str= ict(struct nlattr **tb, int maxtype,=0D const struct nlattr *head,=0D int len,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_parse(tb, maxtype, head, len, policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE), extack);=0D }=0D # 722 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nlmsg_parse(const stru= ct nlmsghdr *nlh, int hdrlen,=0D struct nlattr *tb[], int maxtype,=0D const struct nla_policy *policy,=0D unsigned int validate,=0D struct netlink_ext_ack *extack)=0D {=0D if (nlh->nlmsg_len < nlmsg_msg_size(hdrlen)) {=0D do { static const char __msg[] =3D "Invalid header length"; struct netlin= k_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__ext= ack) __extack->_msg =3D __msg; } while (0);=0D return -22;=0D }=0D =0D return __nla_parse(tb, maxtype, nlmsg_attrdata(nlh, hdrlen),=0D nlmsg_attrlen(nlh, hdrlen), policy, validate,=0D extack);=0D }=0D # 748 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_parse(const struct= nlmsghdr *nlh, int hdrlen,=0D struct nlattr *tb[], int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nlmsg_parse(nlh, hdrlen, tb, maxtype, policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE | NL_VALIDATE_UNSPEC | = NL_VALIDATE_STRICT_ATTRS | NL_VALIDATE_NESTED), extack);=0D }=0D # 767 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_parse_deprecated(c= onst struct nlmsghdr *nlh, int hdrlen,=0D struct nlattr *tb[], int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nlmsg_parse(nlh, hdrlen, tb, maxtype, policy,=0D NL_VALIDATE_LIBERAL, extack);=0D }=0D # 786 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D nlmsg_parse_deprecated_strict(const struct nlmsghdr *nlh, int hdrlen,=0D struct nlattr *tb[], int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nlmsg_parse(nlh, hdrlen, tb, maxtype, policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE), extack);=0D }=0D # 804 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *nlmsg_find_at= tr(const struct nlmsghdr *nlh,=0D int hdrlen, int attrtype)=0D {=0D return nla_find(nlmsg_attrdata(nlh, hdrlen),=0D nlmsg_attrlen(nlh, hdrlen), attrtype);=0D }=0D # 826 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_validate_deprecated(= const struct nlattr *head, int len,=0D int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_validate(head, len, maxtype, policy, NL_VALIDATE_LIBERAL,=0D extack);=0D }=0D # 849 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_validate(const struc= t nlattr *head, int len, int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_validate(head, len, maxtype, policy, (NL_VALIDATE_TRAILING | = NL_VALIDATE_MAXTYPE | NL_VALIDATE_UNSPEC | NL_VALIDATE_STRICT_ATTRS | NL_VA= LIDATE_NESTED),=0D extack);=0D }=0D # 865 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_validate_deprecate= d(const struct nlmsghdr *nlh,=0D int hdrlen, int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D if (nlh->nlmsg_len < nlmsg_msg_size(hdrlen))=0D return -22;=0D =0D return __nla_validate(nlmsg_attrdata(nlh, hdrlen),=0D nlmsg_attrlen(nlh, hdrlen), maxtype,=0D policy, NL_VALIDATE_LIBERAL, extack);=0D }=0D # 886 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_report(const struc= t nlmsghdr *nlh)=0D {=0D return nlh ? !!(nlh->nlmsg_flags & 0x08) : 0;=0D }=0D # 914 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlmsghdr *nlmsg_put(s= truct sk_buff *skb, u32 portid, u32 seq,=0D int type, int payload, int flags)=0D {=0D if (__builtin_expect(!!(skb_tailroom(skb) < nlmsg_total_size(payload)), 0)= )=0D return ((void *)0);=0D =0D return __nlmsg_put(skb, portid, seq, type, payload, flags);=0D }=0D # 934 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlmsghdr *nlmsg_put_a= nswer(struct sk_buff *skb,=0D struct netlink_callback *cb,=0D int type, int payload,=0D int flags)=0D {=0D return nlmsg_put(skb, (*(struct netlink_skb_parms*)&((cb->skb)->cb)).porti= d, cb->nlh->nlmsg_seq,=0D type, payload, flags);=0D }=0D # 951 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *nlmsg_new(si= ze_t payload, gfp_t flags)=0D {=0D return alloc_skb(nlmsg_total_size(payload), flags);=0D }=0D # 965 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nlmsg_end(struct sk_buf= f *skb, struct nlmsghdr *nlh)=0D {=0D nlh->nlmsg_len =3D skb_tail_pointer(skb) - (unsigned char *)nlh;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *nlmsg_get_pos(struct s= k_buff *skb)=0D {=0D return skb_tail_pointer(skb);=0D }=0D # 988 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nlmsg_trim(struct sk_bu= ff *skb, const void *mark)=0D {=0D if (mark) {=0D ({ int __ret_warn_on =3D !!((unsigned char *) mark < skb->data); if (__bu= iltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "e= break\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" = "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".o= rg 2b + %3\n\t" ".popsection" : : "i" ("include/net/netlink.h"), "i" (991),= "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0);= __builtin_expect(!!(__ret_warn_on), 0); });=0D skb_trim(skb, (unsigned char *) mark - skb->data);=0D }=0D }=0D # 1004 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nlmsg_cancel(struct sk_= buff *skb, struct nlmsghdr *nlh)=0D {=0D nlmsg_trim(skb, nlh);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nlmsg_free(struct sk_bu= ff *skb)=0D {=0D kfree_skb(skb);=0D }=0D # 1026 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_multicast(struct s= ock *sk, struct sk_buff *skb,=0D u32 portid, unsigned int group, gfp_t flags)=0D {=0D int err;=0D =0D (*(struct netlink_skb_parms*)&((skb)->cb)).dst_group =3D group;=0D =0D err =3D netlink_broadcast(sk, skb, portid, group, flags);=0D if (err > 0)=0D err =3D 0;=0D =0D return err;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nlmsg_unicast(struct soc= k *sk, struct sk_buff *skb, u32 portid)=0D {=0D int err;=0D =0D err =3D netlink_unicast(sk, skb, portid, 0x40);=0D if (err > 0)=0D err =3D 0;=0D =0D return err;=0D }=0D # 1084 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D nl_dump_check_consistent(struct netlink_callback *cb,=0D struct nlmsghdr *nlh)=0D {=0D if (cb->prev_seq && cb->seq !=3D cb->prev_seq)=0D nlh->nlmsg_flags |=3D 0x10;=0D cb->prev_seq =3D cb->seq;=0D }=0D # 1101 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_attr_size(int payloa= d)=0D {=0D return ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1))) + payload;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_total_size(int paylo= ad)=0D {=0D return (((nla_attr_size(payload)) + 4 - 1) & ~(4 - 1));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_padlen(int payload)= =0D {=0D return nla_total_size(payload) - nla_attr_size(payload);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_type(const struct nl= attr *nla)=0D {=0D return nla->nla_type & ~((1 << 15) | (1 << 14));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *nla_data(const struct = nlattr *nla)=0D {=0D return (char *) nla + ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1)= ));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_len(const struct nla= ttr *nla)=0D {=0D return nla->nla_len - ((int) (((sizeof(struct nlattr)) + 4 - 1) & ~(4 - 1)= ));=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_ok(const struct nlat= tr *nla, int remaining)=0D {=0D return remaining >=3D (int) sizeof(*nla) &&=0D nla->nla_len >=3D sizeof(*nla) &&=0D nla->nla_len <=3D remaining;=0D }=0D # 1171 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *nla_next(cons= t struct nlattr *nla, int *remaining)=0D {=0D unsigned int totlen =3D (((nla->nla_len) + 4 - 1) & ~(4 - 1));=0D =0D *remaining -=3D totlen;=0D return (struct nlattr *) ((char *) nla + totlen);=0D }=0D # 1186 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *=0D nla_find_nested(const struct nlattr *nla, int attrtype)=0D {=0D return nla_find(nla_data(nla), nla_len(nla), attrtype);=0D }=0D # 1202 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_parse_nested(struct = nlattr *tb[], int maxtype,=0D const struct nlattr *nla,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D if (!(nla->nla_type & (1 << 15))) {=0D do { static const char __msg[] =3D "NLA_F_NESTED is missing"; struct netl= ink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__e= xtack) { __extack->_msg =3D __msg; __extack->bad_attr =3D (nla); __extack->= policy =3D (((void *)0)); } } while (0);=0D return -22;=0D }=0D =0D return __nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE | NL_VALIDATE_UNSPEC | NL= _VALIDATE_STRICT_ATTRS | NL_VALIDATE_NESTED), extack);=0D }=0D # 1226 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_parse_nested_depreca= ted(struct nlattr *tb[], int maxtype,=0D const struct nlattr *nla,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_parse(tb, maxtype, nla_data(nla), nla_len(nla), policy,=0D NL_VALIDATE_LIBERAL, extack);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_u8(struct sk_buf= f *skb, int attrtype, u8 value)=0D {=0D =0D u8 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(u8), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_u16(struct sk_bu= ff *skb, int attrtype, u16 value)=0D {=0D u16 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(u16), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_be16(struct sk_b= uff *skb, int attrtype, __be16 value)=0D {=0D __be16 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(__be16), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_net16(struct sk_= buff *skb, int attrtype, __be16 value)=0D {=0D __be16 tmp =3D value;=0D =0D return nla_put_be16(skb, attrtype | (1 << 14), tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_le16(struct sk_b= uff *skb, int attrtype, __le16 value)=0D {=0D __le16 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(__le16), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_u32(struct sk_bu= ff *skb, int attrtype, u32 value)=0D {=0D u32 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(u32), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_be32(struct sk_b= uff *skb, int attrtype, __be32 value)=0D {=0D __be32 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(__be32), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_net32(struct sk_= buff *skb, int attrtype, __be32 value)=0D {=0D __be32 tmp =3D value;=0D =0D return nla_put_be32(skb, attrtype | (1 << 14), tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_le32(struct sk_b= uff *skb, int attrtype, __le32 value)=0D {=0D __le32 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(__le32), &tmp);=0D }=0D # 1360 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_u64_64bit(struct= sk_buff *skb, int attrtype,=0D u64 value, int padattr)=0D {=0D u64 tmp =3D value;=0D =0D return nla_put_64bit(skb, attrtype, sizeof(u64), &tmp, padattr);=0D }=0D # 1375 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_be64(struct sk_b= uff *skb, int attrtype, __be64 value,=0D int padattr)=0D {=0D __be64 tmp =3D value;=0D =0D return nla_put_64bit(skb, attrtype, sizeof(__be64), &tmp, padattr);=0D }=0D # 1390 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_net64(struct sk_= buff *skb, int attrtype, __be64 value,=0D int padattr)=0D {=0D __be64 tmp =3D value;=0D =0D return nla_put_be64(skb, attrtype | (1 << 14), tmp,=0D padattr);=0D }=0D # 1406 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_le64(struct sk_b= uff *skb, int attrtype, __le64 value,=0D int padattr)=0D {=0D __le64 tmp =3D value;=0D =0D return nla_put_64bit(skb, attrtype, sizeof(__le64), &tmp, padattr);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_s8(struct sk_buf= f *skb, int attrtype, s8 value)=0D {=0D s8 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(s8), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_s16(struct sk_bu= ff *skb, int attrtype, s16 value)=0D {=0D s16 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(s16), &tmp);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_s32(struct sk_bu= ff *skb, int attrtype, s32 value)=0D {=0D s32 tmp =3D value;=0D =0D return nla_put(skb, attrtype, sizeof(s32), &tmp);=0D }=0D # 1460 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_s64(struct sk_bu= ff *skb, int attrtype, s64 value,=0D int padattr)=0D {=0D s64 tmp =3D value;=0D =0D return nla_put_64bit(skb, attrtype, sizeof(s64), &tmp, padattr);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_string(struct sk= _buff *skb, int attrtype,=0D const char *str)=0D {=0D return nla_put(skb, attrtype, strlen(str) + 1, str);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_flag(struct sk_b= uff *skb, int attrtype)=0D {=0D return nla_put(skb, attrtype, 0, ((void *)0));=0D }=0D # 1497 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_msecs(struct sk_= buff *skb, int attrtype,=0D unsigned long njiffies, int padattr)=0D {=0D u64 tmp =3D jiffies_to_msecs(njiffies);=0D =0D return nla_put_64bit(skb, attrtype, sizeof(u64), &tmp, padattr);=0D }=0D # 1512 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_in_addr(struct s= k_buff *skb, int attrtype,=0D __be32 addr)=0D {=0D __be32 tmp =3D addr;=0D =0D return nla_put_be32(skb, attrtype, tmp);=0D }=0D # 1527 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_in6_addr(struct = sk_buff *skb, int attrtype,=0D const struct in6_addr *addr)=0D {=0D return nla_put(skb, attrtype, sizeof(*addr), addr);=0D }=0D # 1540 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_put_bitfield32(struc= t sk_buff *skb, int attrtype,=0D __u32 value, __u32 selector)=0D {=0D struct nla_bitfield32 tmp =3D { value, selector, };=0D =0D return nla_put(skb, attrtype, sizeof(tmp), &tmp);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 nla_get_u32(const struct= nlattr *nla)=0D {=0D return *(u32 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 nla_get_be32(const st= ruct nlattr *nla)=0D {=0D return *(__be32 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __le32 nla_get_le32(const st= ruct nlattr *nla)=0D {=0D return *(__le32 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 nla_get_u16(const struct= nlattr *nla)=0D {=0D return *(u16 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 nla_get_be16(const st= ruct nlattr *nla)=0D {=0D return *(__be16 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __le16 nla_get_le16(const st= ruct nlattr *nla)=0D {=0D return *(__le16 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 nla_get_u8(const struct n= lattr *nla)=0D {=0D return *(u8 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 nla_get_u64(const struct= nlattr *nla)=0D {=0D u64 tmp;=0D =0D nla_memcpy(&tmp, nla, sizeof(tmp));=0D =0D return tmp;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be64 nla_get_be64(const st= ruct nlattr *nla)=0D {=0D __be64 tmp;=0D =0D nla_memcpy(&tmp, nla, sizeof(tmp));=0D =0D return tmp;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __le64 nla_get_le64(const st= ruct nlattr *nla)=0D {=0D return *(__le64 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s32 nla_get_s32(const struct= nlattr *nla)=0D {=0D return *(s32 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s16 nla_get_s16(const struct= nlattr *nla)=0D {=0D return *(s16 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s8 nla_get_s8(const struct n= lattr *nla)=0D {=0D return *(s8 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 nla_get_s64(const struct= nlattr *nla)=0D {=0D s64 tmp;=0D =0D nla_memcpy(&tmp, nla, sizeof(tmp));=0D =0D return tmp;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_get_flag(const struc= t nlattr *nla)=0D {=0D return !!nla;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long nla_get_msecs(= const struct nlattr *nla)=0D {=0D u64 msecs =3D nla_get_u64(nla);=0D =0D return msecs_to_jiffies((unsigned long) msecs);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 nla_get_in_addr(const= struct nlattr *nla)=0D {=0D return *(__be32 *) nla_data(nla);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct in6_addr nla_get_in6_= addr(const struct nlattr *nla)=0D {=0D struct in6_addr tmp;=0D =0D nla_memcpy(&tmp, nla, sizeof(tmp));=0D return tmp;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nla_bitfield32 nla_ge= t_bitfield32(const struct nlattr *nla)=0D {=0D struct nla_bitfield32 tmp;=0D =0D nla_memcpy(&tmp, nla, sizeof(tmp));=0D return tmp;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *nla_memdup(const struc= t nlattr *src, gfp_t gfp)=0D {=0D return kmemdup(nla_data(src), nla_len(src), gfp);=0D }=0D # 1762 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *nla_nest_star= t_noflag(struct sk_buff *skb,=0D int attrtype)=0D {=0D struct nlattr *start =3D (struct nlattr *)skb_tail_pointer(skb);=0D =0D if (nla_put(skb, attrtype, 0, ((void *)0)) < 0)=0D return ((void *)0);=0D =0D return start;=0D }=0D # 1783 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *nla_nest_star= t(struct sk_buff *skb, int attrtype)=0D {=0D return nla_nest_start_noflag(skb, attrtype | (1 << 15));=0D }=0D # 1798 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_nest_end(struct sk_b= uff *skb, struct nlattr *start)=0D {=0D start->nla_len =3D skb_tail_pointer(skb) - (unsigned char *)start;=0D return skb->len;=0D }=0D # 1812 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nla_nest_cancel(struct = sk_buff *skb, struct nlattr *start)=0D {=0D nlmsg_trim(skb, start);=0D }=0D # 1831 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __nla_validate_nested(co= nst struct nlattr *start, int maxtype,=0D const struct nla_policy *policy,=0D unsigned int validate,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_validate(nla_data(start), nla_len(start), maxtype, policy,=0D validate, extack);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D nla_validate_nested(const struct nlattr *start, int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_validate_nested(start, maxtype, policy,=0D (NL_VALIDATE_TRAILING | NL_VALIDATE_MAXTYPE | NL_VALIDATE_UNSPEC |= NL_VALIDATE_STRICT_ATTRS | NL_VALIDATE_NESTED), extack);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D nla_validate_nested_deprecated(const struct nlattr *start, int maxtype,=0D const struct nla_policy *policy,=0D struct netlink_ext_ack *extack)=0D {=0D return __nla_validate_nested(start, maxtype, policy,=0D NL_VALIDATE_LIBERAL, extack);=0D }=0D # 1865 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nla_need_padding_for_64= bit(struct sk_buff *skb)=0D {=0D =0D =0D =0D =0D =0D =0D if (((((unsigned long)skb_tail_pointer(skb)) & ((typeof((unsigned long)skb= _tail_pointer(skb)))(8) - 1)) =3D=3D 0))=0D return true;=0D =0D return false;=0D }=0D # 1891 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_align_64bit(struct s= k_buff *skb, int padattr)=0D {=0D if (nla_need_padding_for_64bit(skb) &&=0D !nla_reserve(skb, padattr, 0))=0D return -90;=0D =0D return 0;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nla_total_size_64bit(int= payload)=0D {=0D return (((nla_attr_size(payload)) + 4 - 1) & ~(4 - 1))=0D =0D + (((nla_attr_size(0)) + 4 - 1) & ~(4 - 1))=0D =0D ;=0D }=0D # 1939 "./include/net/netlink.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nla_is_last(const struc= t nlattr *nla, int rem)=0D {=0D return nla->nla_len =3D=3D rem;=0D }=0D =0D void nla_get_range_unsigned(const struct nla_policy *pt,=0D struct netlink_range_validation *range);=0D void nla_get_range_signed(const struct nla_policy *pt,=0D struct netlink_range_validation_signed *range);=0D =0D struct netlink_policy_dump_state;=0D =0D int netlink_policy_dump_add_policy(struct netlink_policy_dump_state **pstat= e,=0D const struct nla_policy *policy,=0D unsigned int maxtype);=0D int netlink_policy_dump_get_policy_idx(struct netlink_policy_dump_state *st= ate,=0D const struct nla_policy *policy,=0D unsigned int maxtype);=0D bool netlink_policy_dump_loop(struct netlink_policy_dump_state *state);=0D int netlink_policy_dump_write(struct sk_buff *skb,=0D struct netlink_policy_dump_state *state);=0D int netlink_policy_dump_attr_size_estimate(const struct nla_policy *pt);=0D int netlink_policy_dump_write_attr(struct sk_buff *skb,=0D const struct nla_policy *pt,=0D int nestattr);=0D void netlink_policy_dump_free(struct netlink_policy_dump_state *state);=0D # 7 "./include/net/rtnetlink.h" 2=0D =0D typedef int (*rtnl_doit_func)(struct sk_buff *, struct nlmsghdr *,=0D struct netlink_ext_ack *);=0D typedef int (*rtnl_dumpit_func)(struct sk_buff *, struct netlink_callback *= );=0D =0D enum rtnl_link_flags {=0D RTNL_FLAG_DOIT_UNLOCKED =3D 1,=0D };=0D =0D void rtnl_register(int protocol, int msgtype,=0D rtnl_doit_func, rtnl_dumpit_func, unsigned int flags);=0D int rtnl_register_module(struct module *owner, int protocol, int msgtype,=0D rtnl_doit_func, rtnl_dumpit_func, unsigned int flags);=0D int rtnl_unregister(int protocol, int msgtype);=0D void rtnl_unregister_all(int protocol);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rtnl_msg_family(const st= ruct nlmsghdr *nlh)=0D {=0D if (nlmsg_len(nlh) >=3D sizeof(struct rtgenmsg))=0D return ((struct rtgenmsg *) nlmsg_data(nlh))->rtgen_family;=0D else=0D return 0;=0D }=0D # 63 "./include/net/rtnetlink.h"=0D struct rtnl_link_ops {=0D struct list_head list;=0D =0D const char *kind;=0D =0D size_t priv_size;=0D struct net_device *(*alloc)(struct nlattr *tb[],=0D const char *ifname,=0D unsigned char name_assign_type,=0D unsigned int num_tx_queues,=0D unsigned int num_rx_queues);=0D void (*setup)(struct net_device *dev);=0D =0D bool netns_refund;=0D unsigned int maxtype;=0D const struct nla_policy *policy;=0D int (*validate)(struct nlattr *tb[],=0D struct nlattr *data[],=0D struct netlink_ext_ack *extack);=0D =0D int (*newlink)(struct net *src_net,=0D struct net_device *dev,=0D struct nlattr *tb[],=0D struct nlattr *data[],=0D struct netlink_ext_ack *extack);=0D int (*changelink)(struct net_device *dev,=0D struct nlattr *tb[],=0D struct nlattr *data[],=0D struct netlink_ext_ack *extack);=0D void (*dellink)(struct net_device *dev,=0D struct list_head *head);=0D =0D size_t (*get_size)(const struct net_device *dev);=0D int (*fill_info)(struct sk_buff *skb,=0D const struct net_device *dev);=0D =0D size_t (*get_xstats_size)(const struct net_device *dev);=0D int (*fill_xstats)(struct sk_buff *skb,=0D const struct net_device *dev);=0D unsigned int (*get_num_tx_queues)(void);=0D unsigned int (*get_num_rx_queues)(void);=0D =0D unsigned int slave_maxtype;=0D const struct nla_policy *slave_policy;=0D int (*slave_changelink)(struct net_device *dev,=0D struct net_device *slave_dev,=0D struct nlattr *tb[],=0D struct nlattr *data[],=0D struct netlink_ext_ack *extack);=0D size_t (*get_slave_size)(const struct net_device *dev,=0D const struct net_device *slave_dev);=0D int (*fill_slave_info)(struct sk_buff *skb,=0D const struct net_device *dev,=0D const struct net_device *slave_dev);=0D struct net *(*get_link_net)(const struct net_device *dev);=0D size_t (*get_linkxstats_size)(const struct net_device *dev,=0D int attr);=0D int (*fill_linkxstats)(struct sk_buff *skb,=0D const struct net_device *dev,=0D int *prividx, int attr);=0D };=0D =0D int __rtnl_link_register(struct rtnl_link_ops *ops);=0D void __rtnl_link_unregister(struct rtnl_link_ops *ops);=0D =0D int rtnl_link_register(struct rtnl_link_ops *ops);=0D void rtnl_link_unregister(struct rtnl_link_ops *ops);=0D # 145 "./include/net/rtnetlink.h"=0D struct rtnl_af_ops {=0D struct list_head list;=0D int family;=0D =0D int (*fill_link_af)(struct sk_buff *skb,=0D const struct net_device *dev,=0D u32 ext_filter_mask);=0D size_t (*get_link_af_size)(const struct net_device *dev,=0D u32 ext_filter_mask);=0D =0D int (*validate_link_af)(const struct net_device *dev,=0D const struct nlattr *attr,=0D struct netlink_ext_ack *extack);=0D int (*set_link_af)(struct net_device *dev,=0D const struct nlattr *attr,=0D struct netlink_ext_ack *extack);=0D int (*fill_stats_af)(struct sk_buff *skb,=0D const struct net_device *dev);=0D size_t (*get_stats_af_size)(const struct net_device *dev);=0D };=0D =0D void rtnl_af_register(struct rtnl_af_ops *ops);=0D void rtnl_af_unregister(struct rtnl_af_ops *ops);=0D =0D struct net *rtnl_link_get_net(struct net *src_net, struct nlattr *tb[]);=0D struct net_device *rtnl_create_link(struct net *net, const char *ifname,=0D unsigned char name_assign_type,=0D const struct rtnl_link_ops *ops,=0D struct nlattr *tb[],=0D struct netlink_ext_ack *extack);=0D int rtnl_delete_link(struct net_device *dev);=0D int rtnl_configure_link(struct net_device *dev, const struct ifinfomsg *ifm= );=0D =0D int rtnl_nla_parse_ifla(struct nlattr **tb, const struct nlattr *head, int = len,=0D struct netlink_ext_ack *exterr);=0D struct net *rtnl_get_net_ns_capable(struct sock *sk, int netnsid);=0D # 32 "./include/net/neighbour.h" 2=0D # 41 "./include/net/neighbour.h"=0D struct neighbour;=0D =0D enum {=0D NEIGH_VAR_MCAST_PROBES,=0D NEIGH_VAR_UCAST_PROBES,=0D NEIGH_VAR_APP_PROBES,=0D NEIGH_VAR_MCAST_REPROBES,=0D NEIGH_VAR_RETRANS_TIME,=0D NEIGH_VAR_BASE_REACHABLE_TIME,=0D NEIGH_VAR_DELAY_PROBE_TIME,=0D NEIGH_VAR_GC_STALETIME,=0D NEIGH_VAR_QUEUE_LEN_BYTES,=0D NEIGH_VAR_PROXY_QLEN,=0D NEIGH_VAR_ANYCAST_DELAY,=0D NEIGH_VAR_PROXY_DELAY,=0D NEIGH_VAR_LOCKTIME,=0D =0D =0D NEIGH_VAR_QUEUE_LEN,=0D NEIGH_VAR_RETRANS_TIME_MS,=0D NEIGH_VAR_BASE_REACHABLE_TIME_MS,=0D =0D NEIGH_VAR_GC_INTERVAL,=0D NEIGH_VAR_GC_THRESH1,=0D NEIGH_VAR_GC_THRESH2,=0D NEIGH_VAR_GC_THRESH3,=0D NEIGH_VAR_MAX=0D };=0D =0D struct neigh_parms {=0D possible_net_t net;=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D struct list_head list;=0D int (*neigh_setup)(struct neighbour *);=0D struct neigh_table *tbl;=0D =0D void *sysctl_table;=0D =0D int dead;=0D refcount_t refcnt;=0D struct callback_head callback_head;=0D =0D int reachable_time;=0D int data[(NEIGH_VAR_LOCKTIME + 1)];=0D unsigned long data_state[((((NEIGH_VAR_LOCKTIME + 1)) + ((sizeof(long) * 8= )) - 1) / ((sizeof(long) * 8)))];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_var_set(struct ne= igh_parms *p, int index, int val)=0D {=0D set_bit(index, p->data_state);=0D p->data[index] =3D val;=0D }=0D # 103 "./include/net/neighbour.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_parms_data_state_= setall(struct neigh_parms *p)=0D {=0D bitmap_fill(p->data_state, (NEIGH_VAR_LOCKTIME + 1));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_parms_data_state_= cleanall(struct neigh_parms *p)=0D {=0D bitmap_zero(p->data_state, (NEIGH_VAR_LOCKTIME + 1));=0D }=0D =0D struct neigh_statistics {=0D unsigned long allocs;=0D unsigned long destroys;=0D unsigned long hash_grows;=0D =0D unsigned long res_failed;=0D =0D unsigned long lookups;=0D unsigned long hits;=0D =0D unsigned long rcv_probes_mcast;=0D unsigned long rcv_probes_ucast;=0D =0D unsigned long periodic_gc_runs;=0D unsigned long forced_gc_runs;=0D =0D unsigned long unres_discards;=0D unsigned long table_fulls;=0D };=0D =0D =0D =0D struct neighbour {=0D struct neighbour *next;=0D struct neigh_table *tbl;=0D struct neigh_parms *parms;=0D unsigned long confirmed;=0D unsigned long updated;=0D rwlock_t lock;=0D refcount_t refcnt;=0D unsigned int arp_queue_len_bytes;=0D struct sk_buff_head arp_queue;=0D struct timer_list timer;=0D unsigned long used;=0D atomic_t probes;=0D u8 nud_state;=0D u8 type;=0D u8 dead;=0D u8 protocol;=0D u32 flags;=0D seqlock_t ha_lock;=0D unsigned char ha[((((32)) + ((typeof((32)))((sizeof(unsigned long))) - 1))= & ~((typeof((32)))((sizeof(unsigned long))) - 1))] __attribute__((__aligne= d__(8)));=0D struct hh_cache hh;=0D int (*output)(struct neighbour *, struct sk_buff *);=0D const struct neigh_ops *ops;=0D struct list_head gc_list;=0D struct list_head managed_list;=0D struct callback_head rcu;=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D u8 primary_key[0];=0D } ;=0D =0D struct neigh_ops {=0D int family;=0D void (*solicit)(struct neighbour *, struct sk_buff *);=0D void (*error_report)(struct neighbour *, struct sk_buff *);=0D int (*output)(struct neighbour *, struct sk_buff *);=0D int (*connected_output)(struct neighbour *, struct sk_buff *);=0D };=0D =0D struct pneigh_entry {=0D struct pneigh_entry *next;=0D possible_net_t net;=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D u32 flags;=0D u8 protocol;=0D u8 key[];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct neigh_hash_table {=0D struct neighbour **hash_buckets;=0D unsigned int hash_shift;=0D __u32 hash_rnd[4];=0D struct callback_head rcu;=0D };=0D =0D =0D struct neigh_table {=0D int family;=0D unsigned int entry_size;=0D unsigned int key_len;=0D __be16 protocol;=0D __u32 (*hash)(const void *pkey,=0D const struct net_device *dev,=0D __u32 *hash_rnd);=0D bool (*key_eq)(const struct neighbour *, const void *pkey);=0D int (*constructor)(struct neighbour *);=0D int (*pconstructor)(struct pneigh_entry *);=0D void (*pdestructor)(struct pneigh_entry *);=0D void (*proxy_redo)(struct sk_buff *skb);=0D int (*is_multicast)(const void *pkey);=0D bool (*allow_add)(const struct net_device *dev,=0D struct netlink_ext_ack *extack);=0D char *id;=0D struct neigh_parms parms;=0D struct list_head parms_list;=0D int gc_interval;=0D int gc_thresh1;=0D int gc_thresh2;=0D int gc_thresh3;=0D unsigned long last_flush;=0D struct delayed_work gc_work;=0D struct delayed_work managed_work;=0D struct timer_list proxy_timer;=0D struct sk_buff_head proxy_queue;=0D atomic_t entries;=0D atomic_t gc_entries;=0D struct list_head gc_list;=0D struct list_head managed_list;=0D rwlock_t lock;=0D unsigned long last_rand;=0D struct neigh_statistics *stats;=0D struct neigh_hash_table *nht;=0D struct pneigh_entry **phash_buckets;=0D };=0D =0D enum {=0D NEIGH_ARP_TABLE =3D 0,=0D NEIGH_ND_TABLE =3D 1,=0D NEIGH_DN_TABLE =3D 2,=0D NEIGH_NR_TABLES,=0D NEIGH_LINK_TABLE =3D NEIGH_NR_TABLES=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int neigh_parms_family(struc= t neigh_parms *p)=0D {=0D return p->tbl->family;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *neighbour_priv(const s= truct neighbour *n)=0D {=0D return (char *)n + n->tbl->entry_size;=0D }=0D # 275 "./include/net/neighbour.h"=0D extern const struct nla_policy nda_policy[];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool neigh_key_eq16(const st= ruct neighbour *n, const void *pkey)=0D {=0D return *(const u16 *)n->primary_key =3D=3D *(const u16 *)pkey;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool neigh_key_eq32(const st= ruct neighbour *n, const void *pkey)=0D {=0D return *(const u32 *)n->primary_key =3D=3D *(const u32 *)pkey;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool neigh_key_eq128(const s= truct neighbour *n, const void *pkey)=0D {=0D const u32 *n32 =3D (const u32 *)n->primary_key;=0D const u32 *p32 =3D pkey;=0D =0D return ((n32[0] ^ p32[0]) | (n32[1] ^ p32[1]) |=0D (n32[2] ^ p32[2]) | (n32[3] ^ p32[3])) =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *___neigh_l= ookup_noref(=0D struct neigh_table *tbl,=0D bool (*key_eq)(const struct neighbour *n, const void *pkey),=0D __u32 (*hash)(const void *pkey,=0D const struct net_device *dev,=0D __u32 *hash_rnd),=0D const void *pkey,=0D struct net_device *dev)=0D {=0D struct neigh_hash_table *nht =3D ({ typeof(*(tbl->nht)) *__UNIQUE_ID_rcu35= 2 =3D (typeof(*(tbl->nht)) *)({ do { __attribute__((__noreturn__)) extern v= oid __compiletime_assert_353(void) ; if (!((sizeof((tbl->nht)) =3D=3D sizeo= f(char) || sizeof((tbl->nht)) =3D=3D sizeof(short) || sizeof((tbl->nht)) = =3D=3D sizeof(int) || sizeof((tbl->nht)) =3D=3D sizeof(long)) || sizeof((tb= l->nht)) =3D=3D sizeof(long long))) __compiletime_assert_353(); } while (0)= ; (*(const volatile typeof( _Generic(((tbl->nht)), char: (char)0, unsigned = char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsig= ned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, = signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (s= igned long)0, unsigned long long: (unsigned long long)0, signed long long: = (signed long long)0, default: ((tbl->nht)))) *)&((tbl->nht))); }); do { } w= hile (0 && (!((0) || rcu_read_lock_bh_held()))); ; ((typeof(*(tbl->nht)) *)= (__UNIQUE_ID_rcu352)); });=0D struct neighbour *n;=0D u32 hash_val;=0D =0D hash_val =3D hash(pkey, dev, nht->hash_rnd) >> (32 - nht->hash_shift);=0D for (n =3D ({ typeof(*(nht->hash_buckets[hash_val])) *__UNIQUE_ID_rcu354 = =3D (typeof(*(nht->hash_buckets[hash_val])) *)({ do { __attribute__((__nore= turn__)) extern void __compiletime_assert_355(void) ; if (!((sizeof((nht->h= ash_buckets[hash_val])) =3D=3D sizeof(char) || sizeof((nht->hash_buckets[ha= sh_val])) =3D=3D sizeof(short) || sizeof((nht->hash_buckets[hash_val])) =3D= =3D sizeof(int) || sizeof((nht->hash_buckets[hash_val])) =3D=3D sizeof(long= )) || sizeof((nht->hash_buckets[hash_val])) =3D=3D sizeof(long long))) __co= mpiletime_assert_355(); } while (0); (*(const volatile typeof( _Generic(((n= ht->hash_buckets[hash_val])), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: ((nht->hash_buckets[hash_val])))) *)&((nht->hash_buckets[hash_val]= ))); }); do { } while (0 && (!((0) || rcu_read_lock_bh_held()))); ; ((typeo= f(*(nht->hash_buckets[hash_val])) *)(__UNIQUE_ID_rcu354)); });=0D n !=3D ((void *)0);=0D n =3D ({ typeof(*(n->next)) *__UNIQUE_ID_rcu356 =3D (typeof(*(n->next= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _357(void) ; if (!((sizeof((n->next)) =3D=3D sizeof(char) || sizeof((n->nex= t)) =3D=3D sizeof(short) || sizeof((n->next)) =3D=3D sizeof(int) || sizeof(= (n->next)) =3D=3D sizeof(long)) || sizeof((n->next)) =3D=3D sizeof(long lon= g))) __compiletime_assert_357(); } while (0); (*(const volatile typeof( _Ge= neric(((n->next)), char: (char)0, unsigned char: (unsigned char)0, signed c= har: (signed char)0, unsigned short: (unsigned short)0, signed short: (sign= ed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsig= ned long: (unsigned long)0, signed long: (signed long)0, unsigned long long= : (unsigned long long)0, signed long long: (signed long long)0, default: ((= n->next)))) *)&((n->next))); }); do { } while (0 && (!((0) || rcu_read_lock= _bh_held()))); ; ((typeof(*(n->next)) *)(__UNIQUE_ID_rcu356)); })) {=0D if (n->dev =3D=3D dev && key_eq(n, pkey))=0D return n;=0D }=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *__neigh_lo= okup_noref(struct neigh_table *tbl,=0D const void *pkey,=0D struct net_device *dev)=0D {=0D return ___neigh_lookup_noref(tbl, tbl->key_eq, tbl->hash, pkey, dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_confirm(struct ne= ighbour *n)=0D {=0D if (n) {=0D unsigned long now =3D jiffies;=0D =0D =0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_358(void) ; if (!((sizeof(n->confirmed) =3D=3D sizeof(char) || sizeof(n->= confirmed) =3D=3D sizeof(short) || sizeof(n->confirmed) =3D=3D sizeof(int) = || sizeof(n->confirmed) =3D=3D sizeof(long)) || sizeof(n->confirmed) =3D=3D= sizeof(long long))) __compiletime_assert_358(); } while (0); (*(const vola= tile typeof( _Generic((n->confirmed), char: (char)0, unsigned char: (unsign= ed char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, = signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (= signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0,= unsigned long long: (unsigned long long)0, signed long long: (signed long = long)0, default: (n->confirmed))) *)&(n->confirmed)); }) !=3D now)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert= _359(void) ; if (!((sizeof(n->confirmed) =3D=3D sizeof(char) || sizeof(n->c= onfirmed) =3D=3D sizeof(short) || sizeof(n->confirmed) =3D=3D sizeof(int) |= | sizeof(n->confirmed) =3D=3D sizeof(long)) || sizeof(n->confirmed) =3D=3D = sizeof(long long))) __compiletime_assert_359(); } while (0); do { *(volatil= e typeof(n->confirmed) *)&(n->confirmed) =3D (now); } while (0); } while (0= );=0D }=0D }=0D =0D void neigh_table_init(int index, struct neigh_table *tbl);=0D int neigh_table_clear(int index, struct neigh_table *tbl);=0D struct neighbour *neigh_lookup(struct neigh_table *tbl, const void *pkey,=0D struct net_device *dev);=0D struct neighbour *neigh_lookup_nodev(struct neigh_table *tbl, struct net *n= et,=0D const void *pkey);=0D struct neighbour *__neigh_create(struct neigh_table *tbl, const void *pkey,= =0D struct net_device *dev, bool want_ref);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *neigh_crea= te(struct neigh_table *tbl,=0D const void *pkey,=0D struct net_device *dev)=0D {=0D return __neigh_create(tbl, pkey, dev, true);=0D }=0D void neigh_destroy(struct neighbour *neigh);=0D int __neigh_event_send(struct neighbour *neigh, struct sk_buff *skb,=0D const bool immediate_ok);=0D int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, u32 fla= gs,=0D u32 nlmsg_pid);=0D void __neigh_set_probe_once(struct neighbour *neigh);=0D bool neigh_remove_one(struct neighbour *ndel, struct neigh_table *tbl);=0D void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev);=0D int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev);=0D int neigh_carrier_down(struct neigh_table *tbl, struct net_device *dev);=0D int neigh_resolve_output(struct neighbour *neigh, struct sk_buff *skb);=0D int neigh_connected_output(struct neighbour *neigh, struct sk_buff *skb);=0D int neigh_direct_output(struct neighbour *neigh, struct sk_buff *skb);=0D struct neighbour *neigh_event_ns(struct neigh_table *tbl,=0D u8 *lladdr, void *saddr,=0D struct net_device *dev);=0D =0D struct neigh_parms *neigh_parms_alloc(struct net_device *dev,=0D struct neigh_table *tbl);=0D void neigh_parms_release(struct neigh_table *tbl, struct neigh_parms *parms= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct net *neigh_parms_net(const struct neigh_parms *parms)=0D {=0D return read_pnet(&parms->net);=0D }=0D =0D unsigned long neigh_rand_reach_time(unsigned long base);=0D =0D void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p,=0D struct sk_buff *skb);=0D struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net= ,=0D const void *key, struct net_device *dev,=0D int creat);=0D struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, struct net *n= et,=0D const void *key, struct net_device *dev);=0D int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key= ,=0D struct net_device *dev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *pneigh_net(const= struct pneigh_entry *pneigh)=0D {=0D return read_pnet(&pneigh->net);=0D }=0D =0D void neigh_app_ns(struct neighbour *n);=0D void neigh_for_each(struct neigh_table *tbl,=0D void (*cb)(struct neighbour *, void *), void *cookie);=0D void __neigh_for_each_release(struct neigh_table *tbl,=0D int (*cb)(struct neighbour *));=0D int neigh_xmit(int fam, struct net_device *, const void *, struct sk_buff *= );=0D void pneigh_for_each(struct neigh_table *tbl,=0D void (*cb)(struct pneigh_entry *));=0D =0D struct neigh_seq_state {=0D struct seq_net_private p;=0D struct neigh_table *tbl;=0D struct neigh_hash_table *nht;=0D void *(*neigh_sub_iter)(struct neigh_seq_state *state,=0D struct neighbour *n, loff_t *pos);=0D unsigned int bucket;=0D unsigned int flags;=0D =0D =0D =0D };=0D void *neigh_seq_start(struct seq_file *, loff_t *, struct neigh_table *,=0D unsigned int);=0D void *neigh_seq_next(struct seq_file *, void *, loff_t *);=0D void neigh_seq_stop(struct seq_file *, void *);=0D =0D int neigh_proc_dointvec(struct ctl_table *ctl, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int neigh_proc_dointvec_jiffies(struct ctl_table *ctl, int write,=0D void *buffer,=0D size_t *lenp, loff_t *ppos);=0D int neigh_proc_dointvec_ms_jiffies(struct ctl_table *ctl, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D int neigh_sysctl_register(struct net_device *dev, struct neigh_parms *p,=0D proc_handler *proc_handler);=0D void neigh_sysctl_unregister(struct neigh_parms *p);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __neigh_parms_put(struc= t neigh_parms *parms)=0D {=0D refcount_dec(&parms->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neigh_parms *neigh_pa= rms_clone(struct neigh_parms *parms)=0D {=0D refcount_inc(&parms->refcnt);=0D return parms;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_release(struct ne= ighbour *neigh)=0D {=0D if (refcount_dec_and_test(&neigh->refcnt))=0D neigh_destroy(neigh);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour * neigh_clo= ne(struct neighbour *neigh)=0D {=0D if (neigh)=0D refcount_inc(&neigh->refcnt);=0D return neigh;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int neigh_event_send_probe(struct neighbour *neigh,=0D struct sk_buff *skb,=0D const bool immediate_ok)=0D {=0D unsigned long now =3D jiffies;=0D =0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _360(void) ; if (!((sizeof(neigh->used) =3D=3D sizeof(char) || sizeof(neigh= ->used) =3D=3D sizeof(short) || sizeof(neigh->used) =3D=3D sizeof(int) || s= izeof(neigh->used) =3D=3D sizeof(long)) || sizeof(neigh->used) =3D=3D sizeo= f(long long))) __compiletime_assert_360(); } while (0); (*(const volatile t= ypeof( _Generic((neigh->used), char: (char)0, unsigned char: (unsigned char= )0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed = short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed = int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsign= ed long long: (unsigned long long)0, signed long long: (signed long long)0,= default: (neigh->used))) *)&(neigh->used)); }) !=3D now)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 361(void) ; if (!((sizeof(neigh->used) =3D=3D sizeof(char) || sizeof(neigh-= >used) =3D=3D sizeof(short) || sizeof(neigh->used) =3D=3D sizeof(int) || si= zeof(neigh->used) =3D=3D sizeof(long)) || sizeof(neigh->used) =3D=3D sizeof= (long long))) __compiletime_assert_361(); } while (0); do { *(volatile type= of(neigh->used) *)&(neigh->used) =3D (now); } while (0); } while (0);=0D if (!(neigh->nud_state & ((0x80|0x40|0x02) | 0x08 | 0x10)))=0D return __neigh_event_send(neigh, skb, immediate_ok);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int neigh_event_send(struct = neighbour *neigh, struct sk_buff *skb)=0D {=0D return neigh_event_send_probe(neigh, skb, true);=0D }=0D # 496 "./include/net/neighbour.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int neigh_hh_output(const st= ruct hh_cache *hh, struct sk_buff *skb)=0D {=0D unsigned int hh_alen =3D 0;=0D unsigned int seq;=0D unsigned int hh_len;=0D =0D do {=0D seq =3D read_seqbegin(&hh->hh_lock);=0D hh_len =3D ({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_362(void) ; if (!((sizeof(hh->hh_len) =3D=3D sizeof(char) || sizeo= f(hh->hh_len) =3D=3D sizeof(short) || sizeof(hh->hh_len) =3D=3D sizeof(int)= || sizeof(hh->hh_len) =3D=3D sizeof(long)) || sizeof(hh->hh_len) =3D=3D si= zeof(long long))) __compiletime_assert_362(); } while (0); (*(const volatil= e typeof( _Generic((hh->hh_len), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: (hh->hh_len))) *)&(hh->hh_len)); });=0D if (__builtin_expect(!!(hh_len <=3D 16), 1)) {=0D hh_alen =3D 16;=0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(skb_headroom(skb) >=3D 16), 1)) {=0D =0D memcpy(skb->data - 16, hh->hh_data,=0D 16);=0D }=0D } else {=0D hh_alen =3D (((hh_len)+(16 -1))&~(16 - 1));=0D =0D if (__builtin_expect(!!(skb_headroom(skb) >=3D hh_alen), 1)) {=0D memcpy(skb->data - hh_alen, hh->hh_data,=0D hh_alen);=0D }=0D }=0D } while (read_seqretry(&hh->hh_lock, seq));=0D =0D if (({ int __ret_warn_on =3D !!(skb_headroom(skb) < hh_alen); if (__builti= n_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebrea= k\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\= t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2= b + %3\n\t" ".popsection" : : "i" ("include/net/neighbour.h"), "i" (527), "= i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } w= hile (0); __builtin_expect(!!(__ret_warn_on), 0); })) {=0D kfree_skb(skb);=0D return 0x01;=0D }=0D =0D __skb_push(skb, hh_len);=0D return dev_queue_xmit(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int neigh_output(struct neig= hbour *n, struct sk_buff *skb,=0D bool skip_cache)=0D {=0D const struct hh_cache *hh =3D &n->hh;=0D =0D =0D =0D =0D if (!skip_cache &&=0D (({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_363(void) ; if (!((sizeof(n->nud_state) =3D=3D sizeof(char) || sizeof(n->= nud_state) =3D=3D sizeof(short) || sizeof(n->nud_state) =3D=3D sizeof(int) = || sizeof(n->nud_state) =3D=3D sizeof(long)) || sizeof(n->nud_state) =3D=3D= sizeof(long long))) __compiletime_assert_363(); } while (0); (*(const vola= tile typeof( _Generic((n->nud_state), char: (char)0, unsigned char: (unsign= ed char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, = signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (= signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0,= unsigned long long: (unsigned long long)0, signed long long: (signed long = long)0, default: (n->nud_state))) *)&(n->nud_state)); }) & (0x80|0x40|0x02)= ) &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _364(void) ; if (!((sizeof(hh->hh_len) =3D=3D sizeof(char) || sizeof(hh->hh= _len) =3D=3D sizeof(short) || sizeof(hh->hh_len) =3D=3D sizeof(int) || size= of(hh->hh_len) =3D=3D sizeof(long)) || sizeof(hh->hh_len) =3D=3D sizeof(lon= g long))) __compiletime_assert_364(); } while (0); (*(const volatile typeof= ( _Generic((hh->hh_len), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: (hh->hh_len))) *)&(hh->hh_len)); }))=0D return neigh_hh_output(hh, skb);=0D =0D return n->output(n, skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *=0D __neigh_lookup(struct neigh_table *tbl, const void *pkey, struct net_device= *dev, int creat)=0D {=0D struct neighbour *n =3D neigh_lookup(tbl, pkey, dev);=0D =0D if (n || !creat)=0D return n;=0D =0D n =3D neigh_create(tbl, pkey, dev);=0D return IS_ERR(n) ? ((void *)0) : n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *=0D __neigh_lookup_errno(struct neigh_table *tbl, const void *pkey,=0D struct net_device *dev)=0D {=0D struct neighbour *n =3D neigh_lookup(tbl, pkey, dev);=0D =0D if (n)=0D return n;=0D =0D return neigh_create(tbl, pkey, dev);=0D }=0D =0D struct neighbour_cb {=0D unsigned long sched_next;=0D unsigned int flags;=0D };=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_ha_snapshot(char = *dst, const struct neighbour *n,=0D const struct net_device *dev)=0D {=0D unsigned int seq;=0D =0D do {=0D seq =3D read_seqbegin(&n->ha_lock);=0D memcpy(dst, n->ha, dev->addr_len);=0D } while (read_seqretry(&n->ha_lock, seq));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void neigh_update_is_router(= struct neighbour *neigh, u32 flags,=0D int *notify)=0D {=0D u8 ndm_flags =3D 0;=0D =0D ndm_flags |=3D (flags & ((((1UL))) << (6))) ? (1 << 7) : 0;=0D if ((neigh->flags ^ ndm_flags) & (1 << 7)) {=0D if (ndm_flags & (1 << 7))=0D neigh->flags |=3D (1 << 7);=0D else=0D neigh->flags &=3D ~(1 << 7);=0D *notify =3D 1;=0D }=0D }=0D # 20 "./include/net/dst.h" 2=0D =0D =0D =0D struct sk_buff;=0D =0D struct dst_entry {=0D struct net_device *dev;=0D struct dst_ops *ops;=0D unsigned long _metrics;=0D unsigned long expires;=0D =0D =0D =0D void *__pad1;=0D =0D int (*input)(struct sk_buff *);=0D int (*output)(struct net *net, struct sock *sk, struct sk_buff *skb);=0D =0D unsigned short flags;=0D # 55 "./include/net/dst.h"=0D short obsolete;=0D =0D =0D =0D =0D unsigned short header_len;=0D unsigned short trailer_len;=0D =0D =0D =0D =0D =0D =0D atomic_t __refcnt;=0D =0D int __use;=0D unsigned long lastuse;=0D struct lwtunnel_state *lwtstate;=0D struct callback_head callback_head;=0D short error;=0D short __pad;=0D __u32 tclassid;=0D =0D =0D =0D netdevice_tracker dev_tracker;=0D };=0D =0D struct dst_metrics {=0D u32 metrics[(__RTAX_MAX - 1)];=0D refcount_t refcnt;=0D } __attribute__((__aligned__(4)));=0D extern const struct dst_metrics dst_default_metrics;=0D =0D u32 *dst_cow_metrics_generic(struct dst_entry *dst, unsigned long old);=0D # 98 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dst_metrics_read_only(c= onst struct dst_entry *dst)=0D {=0D return dst->_metrics & 0x1UL;=0D }=0D =0D void __dst_destroy_metrics_generic(struct dst_entry *dst, unsigned long old= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_destroy_metrics_gen= eric(struct dst_entry *dst)=0D {=0D unsigned long val =3D dst->_metrics;=0D if (!(val & 0x1UL))=0D __dst_destroy_metrics_generic(dst, val);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 *dst_metrics_write_ptr(s= truct dst_entry *dst)=0D {=0D unsigned long p =3D dst->_metrics;=0D =0D do { if (__builtin_expect(!!(!p), 0)) do { do { __asm__ __volatile__ ( "1:= \n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1= b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\= n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/dst.h"), "i" (1= 16), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __builti= n_unreachable(); } while (0); } while (0); } while (0);=0D =0D if (p & 0x1UL)=0D return dst->ops->cow_metrics(dst, p);=0D return ((u32 *)((p) & ~0x3UL));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_init_metrics(struct= dst_entry *dst,=0D const u32 *src_metrics,=0D bool read_only)=0D {=0D dst->_metrics =3D ((unsigned long) src_metrics) |=0D (read_only ? 0x1UL : 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_copy_metrics(struct= dst_entry *dest, const struct dst_entry *src)=0D {=0D u32 *dst_metrics =3D dst_metrics_write_ptr(dest);=0D =0D if (dst_metrics) {=0D u32 *src_metrics =3D ((u32 *)(((src)->_metrics) & ~0x3UL));=0D =0D memcpy(dst_metrics, src_metrics, (__RTAX_MAX - 1) * sizeof(u32));=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 *dst_metrics_ptr(struct = dst_entry *dst)=0D {=0D return ((u32 *)(((dst)->_metrics) & ~0x3UL));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32=0D dst_metric_raw(const struct dst_entry *dst, const int metric)=0D {=0D u32 *p =3D ((u32 *)(((dst)->_metrics) & ~0x3UL));=0D =0D return p[metric-1];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32=0D dst_metric(const struct dst_entry *dst, const int metric)=0D {=0D ({ int __ret_warn_on =3D !!(metric =3D=3D RTAX_HOPLIMIT || metric =3D=3D R= TAX_ADVMSS || metric =3D=3D RTAX_MTU); if (__builtin_expect(!!(__ret_warn_o= n), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug= _table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\= n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection= " : : "i" ("include/net/dst.h"), "i" (163), "i" ((1 << 0)|((1 << 1) | ((9) = << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(= __ret_warn_on), 0); });=0D =0D =0D return dst_metric_raw(dst, metric);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32=0D dst_metric_advmss(const struct dst_entry *dst)=0D {=0D u32 advmss =3D dst_metric_raw(dst, RTAX_ADVMSS);=0D =0D if (!advmss)=0D advmss =3D dst->ops->default_advmss(dst);=0D =0D return advmss;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_metric_set(struct d= st_entry *dst, int metric, u32 val)=0D {=0D u32 *p =3D dst_metrics_write_ptr(dst);=0D =0D if (p)=0D p[metric-1] =3D val;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32=0D dst_feature(const struct dst_entry *dst, u32 feature)=0D {=0D return dst_metric(dst, RTAX_FEATURES) & feature;=0D }=0D =0D ;= =0D ;= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 dst_mtu(const struct dst= _entry *dst)=0D {=0D return dst->ops->mtu(dst);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long dst_metric_rtt= (const struct dst_entry *dst, int metric)=0D {=0D return msecs_to_jiffies(dst_metric(dst, metric));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32=0D dst_allfrag(const struct dst_entry *dst)=0D {=0D int ret =3D dst_feature(dst, (1 << 3));=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D dst_metric_locked(const struct dst_entry *dst, int metric)=0D {=0D return dst_metric(dst, RTAX_LOCK) & (1 << metric);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_hold(struct dst_ent= ry *dst)=0D {=0D =0D =0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_365(vo= id) ; if (!(!(__builtin_offsetof(struct dst_entry, __refcnt) & 63))) __comp= iletime_assert_365(); } while (0);=0D ({ int __ret_warn_on =3D !!(atomic_inc_not_zero(&dst->__refcnt) =3D=3D 0);= if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1= :\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " = 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "= \n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/dst.h"), "i" (= 231), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while= (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_use_noref(struct ds= t_entry *dst, unsigned long time)=0D {=0D if (__builtin_expect(!!(time !=3D dst->lastuse), 0)) {=0D dst->__use++;=0D dst->lastuse =3D time;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_hold_and_use(struct= dst_entry *dst, unsigned long time)=0D {=0D dst_hold(dst);=0D dst_use_noref(dst, time);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *dst_clone(= struct dst_entry *dst)=0D {=0D if (dst)=0D dst_hold(dst);=0D return dst;=0D }=0D =0D void dst_release(struct dst_entry *dst);=0D =0D void dst_release_immediate(struct dst_entry *dst);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void refdst_drop(unsigned lo= ng refdst)=0D {=0D if (!(refdst & 1UL))=0D dst_release((struct dst_entry *)(refdst & ~(1UL)));=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_drop(struct sk_= buff *skb)=0D {=0D if (skb->_skb_refdst) {=0D refdst_drop(skb->_skb_refdst);=0D skb->_skb_refdst =3D 0UL;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_dst_copy(struct s= k_buff *nskb, unsigned long refdst)=0D {=0D nskb->slow_gro |=3D !!refdst;=0D nskb->_skb_refdst =3D refdst;=0D if (!(nskb->_skb_refdst & 1UL))=0D dst_clone(skb_dst(nskb));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_copy(struct sk_= buff *nskb, const struct sk_buff *oskb)=0D {=0D __skb_dst_copy(nskb, oskb->_skb_refdst);=0D }=0D # 299 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dst_hold_safe(struct ds= t_entry *dst)=0D {=0D return atomic_inc_not_zero(&dst->__refcnt);=0D }=0D # 311 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_dst_force(struct sk= _buff *skb)=0D {=0D if (skb_dst_is_noref(skb)) {=0D struct dst_entry *dst =3D skb_dst(skb);=0D =0D ({ int __ret_warn_on =3D !!(!rcu_read_lock_held()); if (__builtin_expect(= !!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pu= shsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word= " " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\= t" ".popsection" : : "i" ("include/net/dst.h"), "i" (316), "i" ((1 << 0)|((= (9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect= (!!(__ret_warn_on), 0); });=0D if (!dst_hold_safe(dst))=0D dst =3D ((void *)0);=0D =0D skb->_skb_refdst =3D (unsigned long)dst;=0D skb->slow_gro |=3D !!dst;=0D }=0D =0D return skb->_skb_refdst !=3D 0UL;=0D }=0D # 337 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __skb_tunnel_rx(struct = sk_buff *skb, struct net_device *dev,=0D struct net *net)=0D {=0D skb->dev =3D dev;=0D =0D =0D =0D =0D =0D =0D skb_clear_hash_if_not_l4(skb);=0D skb_set_queue_mapping(skb, 0);=0D skb_scrub_packet(skb, !net_eq(net, dev_net(dev)));=0D }=0D # 362 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_tunnel_rx(struct sk= _buff *skb, struct net_device *dev,=0D struct net *net)=0D {=0D =0D dev->stats.rx_packets++;=0D dev->stats.rx_bytes +=3D skb->len;=0D __skb_tunnel_rx(skb, dev, net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 dst_tclassid(const struc= t sk_buff *skb)=0D {=0D =0D =0D =0D =0D =0D =0D =0D return 0;=0D }=0D =0D int dst_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_discard(struct sk_bu= ff *skb)=0D {=0D return dst_discard_out(&init_net, skb->sk, skb);=0D }=0D void *dst_alloc(struct dst_ops *ops, struct net_device *dev, int initial_re= f,=0D int initial_obsolete, unsigned short flags);=0D void dst_init(struct dst_entry *dst, struct dst_ops *ops,=0D struct net_device *dev, int initial_ref, int initial_obsolete,=0D unsigned short flags);=0D struct dst_entry *dst_destroy(struct dst_entry *dst);=0D void dst_dev_put(struct dst_entry *dst);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_confirm(struct dst_= entry *dst)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *dst_neigh_= lookup(const struct dst_entry *dst, const void *daddr)=0D {=0D struct neighbour *n =3D dst->ops->neigh_lookup(dst, ((void *)0), daddr);=0D return IS_ERR(n) ? ((void *)0) : n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *dst_neigh_= lookup_skb(const struct dst_entry *dst,=0D struct sk_buff *skb)=0D {=0D struct neighbour *n;=0D =0D if (({ int __ret_warn_on =3D !!(!dst->ops->neigh_lookup); if (__builtin_ex= pect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n"= ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" "= =2Eword" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b = + %3\n\t" ".popsection" : : "i" ("include/net/dst.h"), "i" (411), "i" ((1 <= < 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0)= ; __builtin_expect(!!(__ret_warn_on), 0); }))=0D return ((void *)0);=0D =0D n =3D dst->ops->neigh_lookup(dst, skb, ((void *)0));=0D =0D return IS_ERR(n) ? ((void *)0) : n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_confirm_neigh(const= struct dst_entry *dst,=0D const void *daddr)=0D {=0D if (dst->ops->confirm_neigh)=0D dst->ops->confirm_neigh(dst, daddr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_link_failure(struct= sk_buff *skb)=0D {=0D struct dst_entry *dst =3D skb_dst(skb);=0D if (dst && dst->ops && dst->ops->link_failure)=0D dst->ops->link_failure(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_set_expires(struct = dst_entry *dst, int timeout)=0D {=0D unsigned long expires =3D jiffies + timeout;=0D =0D if (expires =3D=3D 0)=0D expires =3D 1;=0D =0D if (dst->expires =3D=3D 0 || (({ unsigned long __dummy; typeof(dst->expire= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ({ unsigned long _= _dummy; typeof(expires) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) = && ((long)((expires) - (dst->expires)) < 0)))=0D dst->expires =3D expires;=0D }=0D =0D =0D ;=0D =0D ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_output(struct net *n= et, struct sock *sk, struct sk_buff *skb)=0D {=0D return skb_dst(skb)->output(net, sk, skb);=0D =0D =0D }=0D =0D ;=0D ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int dst_input(struct sk_buff= *skb)=0D {=0D return skb_dst(skb)->input(skb);=0D =0D }=0D =0D =0D ;=0D =0D ;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *dst_check(= struct dst_entry *dst, u32 cookie)=0D {=0D if (dst->obsolete)=0D dst =3D dst->ops->check(dst, cookie);=0D =0D return dst;=0D }=0D =0D =0D enum {=0D XFRM_LOOKUP_ICMP =3D 1 << 0,=0D XFRM_LOOKUP_QUEUE =3D 1 << 1,=0D XFRM_LOOKUP_KEEP_DST_REF =3D 1 << 2,=0D };=0D =0D struct flowi;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *xfrm_looku= p(struct net *net,=0D struct dst_entry *dst_orig,=0D const struct flowi *fl,=0D const struct sock *sk,=0D int flags)=0D {=0D return dst_orig;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *=0D xfrm_lookup_with_ifid(struct net *net, struct dst_entry *dst_orig,=0D const struct flowi *fl, const struct sock *sk,=0D int flags, u32 if_id)=0D {=0D return dst_orig;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *xfrm_looku= p_route(struct net *net,=0D struct dst_entry *dst_orig,=0D const struct flowi *fl,=0D const struct sock *sk,=0D int flags)=0D {=0D return dst_orig;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xfrm_state *dst_xfrm(= const struct dst_entry *dst)=0D {=0D return ((void *)0);=0D }=0D # 539 "./include/net/dst.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_update_pmtu(str= uct sk_buff *skb, u32 mtu)=0D {=0D struct dst_entry *dst =3D skb_dst(skb);=0D =0D if (dst && dst->ops->update_pmtu)=0D dst->ops->update_pmtu(dst, ((void *)0), skb, mtu, true);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_dst_update_pmtu_no_= confirm(struct sk_buff *skb, u32 mtu)=0D {=0D struct dst_entry *dst =3D skb_dst(skb);=0D =0D if (dst && dst->ops->update_pmtu)=0D dst->ops->update_pmtu(dst, ((void *)0), skb, mtu, false);=0D }=0D =0D struct dst_entry *dst_blackhole_check(struct dst_entry *dst, u32 cookie);=0D void dst_blackhole_update_pmtu(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb, u32 mtu, bool confirm_neigh);=0D void dst_blackhole_redirect(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb);=0D u32 *dst_blackhole_cow_metrics(struct dst_entry *dst, unsigned long old);=0D struct neighbour *dst_blackhole_neigh_lookup(const struct dst_entry *dst,=0D struct sk_buff *skb,=0D const void *daddr);=0D unsigned int dst_blackhole_mtu(const struct dst_entry *dst);=0D # 67 "./include/net/sock.h" 2=0D =0D # 1 "./include/net/tcp_states.h" 1=0D # 12 "./include/net/tcp_states.h"=0D enum {=0D TCP_ESTABLISHED =3D 1,=0D TCP_SYN_SENT,=0D TCP_SYN_RECV,=0D TCP_FIN_WAIT1,=0D TCP_FIN_WAIT2,=0D TCP_TIME_WAIT,=0D TCP_CLOSE,=0D TCP_CLOSE_WAIT,=0D TCP_LAST_ACK,=0D TCP_LISTEN,=0D TCP_CLOSING,=0D TCP_NEW_SYN_RECV,=0D =0D TCP_MAX_STATES=0D };=0D =0D =0D =0D =0D =0D enum {=0D TCPF_ESTABLISHED =3D (1 << TCP_ESTABLISHED),=0D TCPF_SYN_SENT =3D (1 << TCP_SYN_SENT),=0D TCPF_SYN_RECV =3D (1 << TCP_SYN_RECV),=0D TCPF_FIN_WAIT1 =3D (1 << TCP_FIN_WAIT1),=0D TCPF_FIN_WAIT2 =3D (1 << TCP_FIN_WAIT2),=0D TCPF_TIME_WAIT =3D (1 << TCP_TIME_WAIT),=0D TCPF_CLOSE =3D (1 << TCP_CLOSE),=0D TCPF_CLOSE_WAIT =3D (1 << TCP_CLOSE_WAIT),=0D TCPF_LAST_ACK =3D (1 << TCP_LAST_ACK),=0D TCPF_LISTEN =3D (1 << TCP_LISTEN),=0D TCPF_CLOSING =3D (1 << TCP_CLOSING),=0D TCPF_NEW_SYN_RECV =3D (1 << TCP_NEW_SYN_RECV),=0D };=0D # 69 "./include/net/sock.h" 2=0D # 1 "./include/uapi/linux/net_tstamp.h" 1=0D # 17 "./include/uapi/linux/net_tstamp.h"=0D enum {=0D SOF_TIMESTAMPING_TX_HARDWARE =3D (1<<0),=0D SOF_TIMESTAMPING_TX_SOFTWARE =3D (1<<1),=0D SOF_TIMESTAMPING_RX_HARDWARE =3D (1<<2),=0D SOF_TIMESTAMPING_RX_SOFTWARE =3D (1<<3),=0D SOF_TIMESTAMPING_SOFTWARE =3D (1<<4),=0D SOF_TIMESTAMPING_SYS_HARDWARE =3D (1<<5),=0D SOF_TIMESTAMPING_RAW_HARDWARE =3D (1<<6),=0D SOF_TIMESTAMPING_OPT_ID =3D (1<<7),=0D SOF_TIMESTAMPING_TX_SCHED =3D (1<<8),=0D SOF_TIMESTAMPING_TX_ACK =3D (1<<9),=0D SOF_TIMESTAMPING_OPT_CMSG =3D (1<<10),=0D SOF_TIMESTAMPING_OPT_TSONLY =3D (1<<11),=0D SOF_TIMESTAMPING_OPT_STATS =3D (1<<12),=0D SOF_TIMESTAMPING_OPT_PKTINFO =3D (1<<13),=0D SOF_TIMESTAMPING_OPT_TX_SWHW =3D (1<<14),=0D SOF_TIMESTAMPING_BIND_PHC =3D (1 << 15),=0D =0D SOF_TIMESTAMPING_LAST =3D SOF_TIMESTAMPING_BIND_PHC,=0D SOF_TIMESTAMPING_MASK =3D (SOF_TIMESTAMPING_LAST - 1) |=0D SOF_TIMESTAMPING_LAST=0D };=0D # 57 "./include/uapi/linux/net_tstamp.h"=0D struct so_timestamping {=0D int flags;=0D int bind_phc;=0D };=0D # 75 "./include/uapi/linux/net_tstamp.h"=0D struct hwtstamp_config {=0D int flags;=0D int tx_type;=0D int rx_filter;=0D };=0D =0D =0D enum hwtstamp_flags {=0D =0D =0D =0D =0D =0D =0D HWTSTAMP_FLAG_BONDED_PHC_INDEX =3D (1<<0),=0D =0D =0D HWTSTAMP_FLAG_LAST =3D HWTSTAMP_FLAG_BONDED_PHC_INDEX,=0D HWTSTAMP_FLAG_MASK =3D (HWTSTAMP_FLAG_LAST - 1) | HWTSTAMP_FLAG_LAST=0D };=0D =0D =0D enum hwtstamp_tx_types {=0D =0D =0D =0D =0D =0D HWTSTAMP_TX_OFF,=0D =0D =0D =0D =0D =0D =0D =0D HWTSTAMP_TX_ON,=0D # 120 "./include/uapi/linux/net_tstamp.h"=0D HWTSTAMP_TX_ONESTEP_SYNC,=0D =0D =0D =0D =0D =0D =0D =0D HWTSTAMP_TX_ONESTEP_P2P,=0D =0D =0D __HWTSTAMP_TX_CNT=0D };=0D =0D =0D enum hwtstamp_rx_filters {=0D =0D HWTSTAMP_FILTER_NONE,=0D =0D =0D HWTSTAMP_FILTER_ALL,=0D =0D =0D HWTSTAMP_FILTER_SOME,=0D =0D =0D HWTSTAMP_FILTER_PTP_V1_L4_EVENT,=0D =0D HWTSTAMP_FILTER_PTP_V1_L4_SYNC,=0D =0D HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ,=0D =0D HWTSTAMP_FILTER_PTP_V2_L4_EVENT,=0D =0D HWTSTAMP_FILTER_PTP_V2_L4_SYNC,=0D =0D HWTSTAMP_FILTER_PTP_V2_L4_DELAY_REQ,=0D =0D =0D HWTSTAMP_FILTER_PTP_V2_L2_EVENT,=0D =0D HWTSTAMP_FILTER_PTP_V2_L2_SYNC,=0D =0D HWTSTAMP_FILTER_PTP_V2_L2_DELAY_REQ,=0D =0D =0D HWTSTAMP_FILTER_PTP_V2_EVENT,=0D =0D HWTSTAMP_FILTER_PTP_V2_SYNC,=0D =0D HWTSTAMP_FILTER_PTP_V2_DELAY_REQ,=0D =0D =0D HWTSTAMP_FILTER_NTP_ALL,=0D =0D =0D __HWTSTAMP_FILTER_CNT=0D };=0D =0D =0D struct scm_ts_pktinfo {=0D __u32 if_index;=0D __u32 pkt_length;=0D __u32 reserved[2];=0D };=0D =0D =0D =0D =0D =0D enum txtime_flags {=0D SOF_TXTIME_DEADLINE_MODE =3D (1 << 0),=0D SOF_TXTIME_REPORT_ERRORS =3D (1 << 1),=0D =0D SOF_TXTIME_FLAGS_LAST =3D SOF_TXTIME_REPORT_ERRORS,=0D SOF_TXTIME_FLAGS_MASK =3D (SOF_TXTIME_FLAGS_LAST - 1) |=0D SOF_TXTIME_FLAGS_LAST=0D };=0D =0D struct sock_txtime {=0D __kernel_clockid_t clockid;=0D __u32 flags;=0D };=0D # 70 "./include/net/sock.h" 2=0D # 1 "./include/net/l3mdev.h" 1=0D # 11 "./include/net/l3mdev.h"=0D # 1 "./include/net/fib_rules.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/fib_rules.h" 1=0D # 19 "./include/uapi/linux/fib_rules.h"=0D struct fib_rule_hdr {=0D __u8 family;=0D __u8 dst_len;=0D __u8 src_len;=0D __u8 tos;=0D =0D __u8 table;=0D __u8 res1;=0D __u8 res2;=0D __u8 action;=0D =0D __u32 flags;=0D };=0D =0D struct fib_rule_uid_range {=0D __u32 start;=0D __u32 end;=0D };=0D =0D struct fib_rule_port_range {=0D __u16 start;=0D __u16 end;=0D };=0D =0D enum {=0D FRA_UNSPEC,=0D FRA_DST,=0D FRA_SRC,=0D FRA_IIFNAME,=0D =0D FRA_GOTO,=0D FRA_UNUSED2,=0D FRA_PRIORITY,=0D FRA_UNUSED3,=0D FRA_UNUSED4,=0D FRA_UNUSED5,=0D FRA_FWMARK,=0D FRA_FLOW,=0D FRA_TUN_ID,=0D FRA_SUPPRESS_IFGROUP,=0D FRA_SUPPRESS_PREFIXLEN,=0D FRA_TABLE,=0D FRA_FWMASK,=0D FRA_OIFNAME,=0D FRA_PAD,=0D FRA_L3MDEV,=0D FRA_UID_RANGE,=0D FRA_PROTOCOL,=0D FRA_IP_PROTO,=0D FRA_SPORT_RANGE,=0D FRA_DPORT_RANGE,=0D __FRA_MAX=0D };=0D =0D =0D =0D enum {=0D FR_ACT_UNSPEC,=0D FR_ACT_TO_TBL,=0D FR_ACT_GOTO,=0D FR_ACT_NOP,=0D FR_ACT_RES3,=0D FR_ACT_RES4,=0D FR_ACT_BLACKHOLE,=0D FR_ACT_UNREACHABLE,=0D FR_ACT_PROHIBIT,=0D __FR_ACT_MAX,=0D };=0D # 9 "./include/net/fib_rules.h" 2=0D =0D =0D =0D # 1 "./include/net/fib_notifier.h" 1=0D =0D =0D =0D =0D =0D =0D =0D struct module;=0D =0D struct fib_notifier_info {=0D int family;=0D struct netlink_ext_ack *extack;=0D };=0D =0D enum fib_event_type {=0D FIB_EVENT_ENTRY_REPLACE,=0D FIB_EVENT_ENTRY_APPEND,=0D FIB_EVENT_ENTRY_ADD,=0D FIB_EVENT_ENTRY_DEL,=0D FIB_EVENT_RULE_ADD,=0D FIB_EVENT_RULE_DEL,=0D FIB_EVENT_NH_ADD,=0D FIB_EVENT_NH_DEL,=0D FIB_EVENT_VIF_ADD,=0D FIB_EVENT_VIF_DEL,=0D };=0D =0D struct fib_notifier_ops {=0D int family;=0D struct list_head list;=0D unsigned int (*fib_seq_read)(struct net *net);=0D int (*fib_dump)(struct net *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack);=0D struct module *owner;=0D struct callback_head rcu;=0D };=0D =0D int call_fib_notifier(struct notifier_block *nb,=0D enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D int call_fib_notifiers(struct net *net, enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D int register_fib_notifier(struct net *net, struct notifier_block *nb,=0D void (*cb)(struct notifier_block *nb),=0D struct netlink_ext_ack *extack);=0D int unregister_fib_notifier(struct net *net, struct notifier_block *nb);=0D struct fib_notifier_ops *=0D fib_notifier_ops_register(const struct fib_notifier_ops *tmpl, struct net *= net);=0D void fib_notifier_ops_unregister(struct fib_notifier_ops *ops);=0D # 13 "./include/net/fib_rules.h" 2=0D =0D =0D struct fib_kuid_range {=0D kuid_t start;=0D kuid_t end;=0D };=0D =0D struct fib_rule {=0D struct list_head list;=0D int iifindex;=0D int oifindex;=0D u32 mark;=0D u32 mark_mask;=0D u32 flags;=0D u32 table;=0D u8 action;=0D u8 l3mdev;=0D u8 proto;=0D u8 ip_proto;=0D u32 target;=0D __be64 tun_id;=0D struct fib_rule *ctarget;=0D struct net *fr_net;=0D =0D refcount_t refcnt;=0D u32 pref;=0D int suppress_ifgroup;=0D int suppress_prefixlen;=0D char iifname[16];=0D char oifname[16];=0D struct fib_kuid_range uid_range;=0D struct fib_rule_port_range sport_range;=0D struct fib_rule_port_range dport_range;=0D struct callback_head rcu;=0D };=0D =0D struct fib_lookup_arg {=0D void *lookup_ptr;=0D const void *lookup_data;=0D void *result;=0D struct fib_rule *rule;=0D u32 table;=0D int flags;=0D =0D =0D };=0D =0D struct fib_rules_ops {=0D int family;=0D struct list_head list;=0D int rule_size;=0D int addr_size;=0D int unresolved_rules;=0D int nr_goto_rules;=0D unsigned int fib_rules_seq;=0D =0D int (*action)(struct fib_rule *,=0D struct flowi *, int,=0D struct fib_lookup_arg *);=0D bool (*suppress)(struct fib_rule *, int,=0D struct fib_lookup_arg *);=0D int (*match)(struct fib_rule *,=0D struct flowi *, int);=0D int (*configure)(struct fib_rule *,=0D struct sk_buff *,=0D struct fib_rule_hdr *,=0D struct nlattr **,=0D struct netlink_ext_ack *);=0D int (*delete)(struct fib_rule *);=0D int (*compare)(struct fib_rule *,=0D struct fib_rule_hdr *,=0D struct nlattr **);=0D int (*fill)(struct fib_rule *, struct sk_buff *,=0D struct fib_rule_hdr *);=0D size_t (*nlmsg_payload)(struct fib_rule *);=0D =0D =0D =0D void (*flush_cache)(struct fib_rules_ops *ops);=0D =0D int nlgroup;=0D struct list_head rules_list;=0D struct module *owner;=0D struct net *fro_net;=0D struct callback_head rcu;=0D };=0D =0D struct fib_rule_notifier_info {=0D struct fib_notifier_info info;=0D struct fib_rule *rule;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib_rule_get(struct fib= _rule *rule)=0D {=0D refcount_inc(&rule->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib_rule_put(struct fib= _rule *rule)=0D {=0D if (refcount_dec_and_test(&rule->refcnt))=0D do { typeof (rule) ___p =3D (rule); if (___p) { do { __attribute__((__nor= eturn__)) extern void __compiletime_assert_366(void) ; if (!(!(!((__builtin= _offsetof(typeof(*(rule)), rcu)) < 4096)))) __compiletime_assert_366(); } w= hile (0); kvfree_call_rcu(&((___p)->rcu), (rcu_callback_t)(unsigned long) (= __builtin_offsetof(typeof(*(rule)), rcu))); } } while (0);=0D }=0D # 123 "./include/net/fib_rules.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 fib_rule_get_table(struc= t fib_rule *rule,=0D struct fib_lookup_arg *arg)=0D {=0D return rule->table;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 frh_get_table(struct fib= _rule_hdr *frh, struct nlattr **nla)=0D {=0D if (nla[FRA_TABLE])=0D return nla_get_u32(nla[FRA_TABLE]);=0D return frh->table;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib_rule_port_range_set= (const struct fib_rule_port_range *range)=0D {=0D return range->start !=3D 0 && range->end !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib_rule_port_inrange(c= onst struct fib_rule_port_range *a,=0D __be16 port)=0D {=0D return (__builtin_constant_p((__u16)(( __u16)(__be16)(port))) ? ((__u16)( = (((__u16)(( __u16)(__be16)(port)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u= 16)(__be16)(port)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(p= ort))) >=3D a->start &&=0D (__builtin_constant_p((__u16)(( __u16)(__be16)(port))) ? ((__u16)( (((__u= 16)(( __u16)(__be16)(port)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__= be16)(port)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(port)))= <=3D a->end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib_rule_port_range_val= id(const struct fib_rule_port_range *a)=0D {=0D return a->start !=3D 0 && a->end !=3D 0 && a->end < 0xffff &&=0D a->start <=3D a->end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib_rule_port_range_com= pare(struct fib_rule_port_range *a,=0D struct fib_rule_port_range *b)=0D {=0D return a->start =3D=3D b->start &&=0D a->end =3D=3D b->end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib_rule_requires_fldis= sect(struct fib_rule *rule)=0D {=0D return rule->iifindex !=3D 1 && (rule->ip_proto ||=0D fib_rule_port_range_set(&rule->sport_range) ||=0D fib_rule_port_range_set(&rule->dport_range));=0D }=0D =0D struct fib_rules_ops *fib_rules_register(const struct fib_rules_ops *,=0D struct net *);=0D void fib_rules_unregister(struct fib_rules_ops *);=0D =0D int fib_rules_lookup(struct fib_rules_ops *, struct flowi *, int flags,=0D struct fib_lookup_arg *);=0D int fib_default_rule_add(struct fib_rules_ops *, u32 pref, u32 table,=0D u32 flags);=0D bool fib_rule_matchall(const struct fib_rule *rule);=0D int fib_rules_dump(struct net *net, struct notifier_block *nb, int family,= =0D struct netlink_ext_ack *extack);=0D unsigned int fib_rules_seq_read(struct net *net, int family);=0D =0D int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh,=0D struct netlink_ext_ack *extack);=0D int fib_nl_delrule(struct sk_buff *skb, struct nlmsghdr *nlh,=0D struct netlink_ext_ack *extack);=0D =0D =0D ;=0D =0D ;=0D =0D =0D =0D ;=0D =0D =0D ;=0D =0D =0D =0D ;=0D =0D =0D ;=0D # 12 "./include/net/l3mdev.h" 2=0D =0D enum l3mdev_type {=0D L3MDEV_TYPE_UNSPEC,=0D L3MDEV_TYPE_VRF,=0D __L3MDEV_TYPE_MAX=0D };=0D =0D =0D =0D typedef int (*lookup_by_table_id_t)(struct net *net, u32 table_d);=0D # 35 "./include/net/l3mdev.h"=0D struct l3mdev_ops {=0D u32 (*l3mdev_fib_table)(const struct net_device *dev);=0D struct sk_buff * (*l3mdev_l3_rcv)(struct net_device *dev,=0D struct sk_buff *skb, u16 proto);=0D struct sk_buff * (*l3mdev_l3_out)(struct net_device *dev,=0D struct sock *sk, struct sk_buff *skb,=0D u16 proto);=0D =0D =0D struct dst_entry * (*l3mdev_link_scope_lookup)(const struct net_device *de= v,=0D struct flowi6 *fl6);=0D };=0D # 223 "./include/net/l3mdev.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int l3mdev_master_ifindex_rc= u(const struct net_device *dev)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int l3mdev_master_ifindex(st= ruct net_device *dev)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int l3mdev_master_ifindex_by= _index(struct net *net, int ifindex)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int l3mdev_master_upper_ifindex_by_index_rcu(struct net *net, int ifindex)= =0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int l3mdev_master_upper_ifindex_by_index(struct net *net, int ifindex)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct net_device *l3mdev_master_dev_rcu(const struct net_device *dev)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 l3mdev_fib_table_rcu(con= st struct net_device *dev)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 l3mdev_fib_table(const s= truct net_device *dev)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 l3mdev_fib_table_by_inde= x(struct net *net, int ifindex)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool netif_index_is_l3_maste= r(struct net *net, int ifindex)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct dst_entry *l3mdev_link_scope_lookup(struct net *net, struct flowi6 *= fl6)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct sk_buff *l3mdev_ip_rcv(struct sk_buff *skb)=0D {=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct sk_buff *l3mdev_ip6_rcv(struct sk_buff *skb)=0D {=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct sk_buff *l3mdev_ip_out(struct sock *sk, struct sk_buff *skb)=0D {=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct sk_buff *l3mdev_ip6_out(struct sock *sk, struct sk_buff *skb)=0D {=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int l3mdev_table_lookup_register(enum l3mdev_type l3type,=0D lookup_by_table_id_t fn)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void l3mdev_table_lookup_unregister(enum l3mdev_type l3type,=0D lookup_by_table_id_t fn)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int l3mdev_ifindex_lookup_by_table_id(enum l3mdev_type l3type, struct net *= net,=0D u32 table_id)=0D {=0D return -19;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int l3mdev_fib_rule_match(struct net *net, struct flowi *fl,=0D struct fib_lookup_arg *arg)=0D {=0D return 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void l3mdev_update_flow(struct net *net, struct flowi *fl)=0D {=0D }=0D # 71 "./include/net/sock.h" 2=0D # 96 "./include/net/sock.h"=0D typedef struct {=0D spinlock_t slock;=0D int owned;=0D wait_queue_head_t wq;=0D =0D =0D =0D =0D =0D =0D =0D struct lockdep_map dep_map;=0D =0D } socket_lock_t;=0D =0D struct sock;=0D struct proto;=0D struct net;=0D =0D typedef __u32 __portpair;=0D typedef __u64 __addrpair;=0D # 163 "./include/net/sock.h"=0D struct sock_common {=0D =0D =0D =0D union {=0D __addrpair skc_addrpair;=0D struct {=0D __be32 skc_daddr;=0D __be32 skc_rcv_saddr;=0D };=0D };=0D union {=0D unsigned int skc_hash;=0D __u16 skc_u16hashes[2];=0D };=0D =0D union {=0D __portpair skc_portpair;=0D struct {=0D __be16 skc_dport;=0D __u16 skc_num;=0D };=0D };=0D =0D unsigned short skc_family;=0D volatile unsigned char skc_state;=0D unsigned char skc_reuse:4;=0D unsigned char skc_reuseport:1;=0D unsigned char skc_ipv6only:1;=0D unsigned char skc_net_refcnt:1;=0D int skc_bound_dev_if;=0D union {=0D struct hlist_node skc_bind_node;=0D struct hlist_node skc_portaddr_node;=0D };=0D struct proto *skc_prot;=0D possible_net_t skc_net;=0D =0D =0D struct in6_addr skc_v6_daddr;=0D struct in6_addr skc_v6_rcv_saddr;=0D =0D =0D atomic64_t skc_cookie;=0D =0D =0D =0D =0D =0D =0D union {=0D unsigned long skc_flags;=0D struct sock *skc_listener;=0D struct inet_timewait_death_row *skc_tw_dr;=0D };=0D =0D =0D =0D =0D =0D int skc_dontcopy_begin[0];=0D =0D union {=0D struct hlist_node skc_node;=0D struct hlist_nulls_node skc_nulls_node;=0D };=0D unsigned short skc_tx_queue_mapping;=0D =0D unsigned short skc_rx_queue_mapping;=0D =0D union {=0D int skc_incoming_cpu;=0D u32 skc_rcv_wnd;=0D u32 skc_tw_rcv_nxt;=0D };=0D =0D refcount_t skc_refcnt;=0D =0D int skc_dontcopy_end[0];=0D union {=0D u32 skc_rxhash;=0D u32 skc_window_clamp;=0D u32 skc_tw_snd_nxt;=0D };=0D =0D };=0D =0D struct bpf_local_storage;=0D struct sk_filter;=0D # 356 "./include/net/sock.h"=0D struct sock {=0D =0D =0D =0D =0D struct sock_common __sk_common;=0D # 397 "./include/net/sock.h"=0D struct dst_entry *sk_rx_dst;=0D int sk_rx_dst_ifindex;=0D u32 sk_rx_dst_cookie;=0D =0D socket_lock_t sk_lock;=0D atomic_t sk_drops;=0D int sk_rcvlowat;=0D struct sk_buff_head sk_error_queue;=0D struct sk_buff_head sk_receive_queue;=0D # 414 "./include/net/sock.h"=0D struct {=0D atomic_t rmem_alloc;=0D int len;=0D struct sk_buff *head;=0D struct sk_buff *tail;=0D } sk_backlog;=0D struct llist_head defer_list;=0D =0D =0D =0D int sk_forward_alloc;=0D u32 sk_reserved_mem;=0D =0D unsigned int sk_ll_usec;=0D =0D unsigned int sk_napi_id;=0D =0D int sk_rcvbuf;=0D =0D struct sk_filter *sk_filter;=0D union {=0D struct socket_wq *sk_wq;=0D =0D struct socket_wq *sk_wq_raw;=0D =0D };=0D =0D =0D =0D =0D struct dst_entry *sk_dst_cache;=0D atomic_t sk_omem_alloc;=0D int sk_sndbuf;=0D =0D =0D int sk_wmem_queued;=0D refcount_t sk_wmem_alloc;=0D unsigned long sk_tsq_flags;=0D union {=0D struct sk_buff *sk_send_head;=0D struct rb_root tcp_rtx_queue;=0D };=0D struct sk_buff_head sk_write_queue;=0D __s32 sk_peek_off;=0D int sk_write_pending;=0D __u32 sk_dst_pending_confirm;=0D u32 sk_pacing_status;=0D long sk_sndtimeo;=0D struct timer_list sk_timer;=0D __u32 sk_priority;=0D __u32 sk_mark;=0D unsigned long sk_pacing_rate;=0D unsigned long sk_max_pacing_rate;=0D struct page_frag sk_frag;=0D netdev_features_t sk_route_caps;=0D int sk_gso_type;=0D unsigned int sk_gso_max_size;=0D gfp_t sk_allocation;=0D __u32 sk_txhash;=0D =0D =0D =0D =0D =0D u8 sk_gso_disabled : 1,=0D sk_kern_sock : 1,=0D sk_no_check_tx : 1,=0D sk_no_check_rx : 1,=0D sk_userlocks : 4;=0D u8 sk_pacing_shift;=0D u16 sk_type;=0D u16 sk_protocol;=0D u16 sk_gso_max_segs;=0D unsigned long sk_lingertime;=0D struct proto *sk_prot_creator;=0D rwlock_t sk_callback_lock;=0D int sk_err,=0D sk_err_soft;=0D u32 sk_ack_backlog;=0D u32 sk_max_ack_backlog;=0D kuid_t sk_uid;=0D u8 sk_txrehash;=0D =0D u8 sk_prefer_busy_poll;=0D u16 sk_busy_poll_budget;=0D =0D spinlock_t sk_peer_lock;=0D int sk_bind_phc;=0D struct pid *sk_peer_pid;=0D const struct cred *sk_peer_cred;=0D =0D long sk_rcvtimeo;=0D ktime_t sk_stamp;=0D =0D =0D =0D u16 sk_tsflags;=0D u8 sk_shutdown;=0D atomic_t sk_tskey;=0D atomic_t sk_zckey;=0D =0D u8 sk_clockid;=0D u8 sk_txtime_deadline_mode : 1,=0D sk_txtime_report_errors : 1,=0D sk_txtime_unused : 6;=0D =0D struct socket *sk_socket;=0D void *sk_user_data;=0D =0D =0D =0D struct sock_cgroup_data sk_cgrp_data;=0D struct mem_cgroup *sk_memcg;=0D void (*sk_state_change)(struct sock *sk);=0D void (*sk_data_ready)(struct sock *sk);=0D void (*sk_write_space)(struct sock *sk);=0D void (*sk_error_report)(struct sock *sk);=0D int (*sk_backlog_rcv)(struct sock *sk,=0D struct sk_buff *skb);=0D =0D =0D =0D =0D =0D void (*sk_destruct)(struct sock *sk);=0D struct sock_reuseport *sk_reuseport_cb;=0D =0D struct bpf_local_storage *sk_bpf_storage;=0D =0D struct callback_head sk_rcu;=0D netns_tracker ns_tracker;=0D };=0D =0D enum sk_pacing {=0D SK_PACING_NONE =3D 0,=0D SK_PACING_NEEDED =3D 1,=0D SK_PACING_FQ =3D 2,=0D };=0D # 566 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_user_data_is_nocopy(= const struct sock *sk)=0D {=0D return ((uintptr_t)sk->sk_user_data & 1UL);=0D }=0D # 592 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct net *sock_net(const struct sock *sk)=0D {=0D return read_pnet(&sk->__sk_common.skc_net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void sock_net_set(struct sock *sk, struct net *net)=0D {=0D write_pnet(&sk->__sk_common.skc_net, net);=0D }=0D # 615 "./include/net/sock.h"=0D int sk_set_peek_off(struct sock *sk, int val);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_peek_offset(struct so= ck *sk, int flags)=0D {=0D if (__builtin_expect(!!(flags & 2), 0)) {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_367(void) ; if (!((sizeof(sk->sk_peek_off) =3D=3D sizeof(char) || size= of(sk->sk_peek_off) =3D=3D sizeof(short) || sizeof(sk->sk_peek_off) =3D=3D = sizeof(int) || sizeof(sk->sk_peek_off) =3D=3D sizeof(long)) || sizeof(sk->s= k_peek_off) =3D=3D sizeof(long long))) __compiletime_assert_367(); } while = (0); (*(const volatile typeof( _Generic((sk->sk_peek_off), char: (char)0, u= nsigned char: (unsigned char)0, signed char: (signed char)0, unsigned short= : (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned= int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed = long: (signed long)0, unsigned long long: (unsigned long long)0, signed lon= g long: (signed long long)0, default: (sk->sk_peek_off))) *)&(sk->sk_peek_o= ff)); });=0D }=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_peek_offset_bwd(stru= ct sock *sk, int val)=0D {=0D s32 off =3D ({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_368(void) ; if (!((sizeof(sk->sk_peek_off) =3D=3D sizeof(char) || = sizeof(sk->sk_peek_off) =3D=3D sizeof(short) || sizeof(sk->sk_peek_off) =3D= =3D sizeof(int) || sizeof(sk->sk_peek_off) =3D=3D sizeof(long)) || sizeof(s= k->sk_peek_off) =3D=3D sizeof(long long))) __compiletime_assert_368(); } wh= ile (0); (*(const volatile typeof( _Generic((sk->sk_peek_off), char: (char)= 0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned s= hort: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsi= gned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, sig= ned long: (signed long)0, unsigned long long: (unsigned long long)0, signed= long long: (signed long long)0, default: (sk->sk_peek_off))) *)&(sk->sk_pe= ek_off)); });=0D =0D if (__builtin_expect(!!(off >=3D 0), 0)) {=0D off =3D __builtin_choose_expr(((!!(sizeof((typeof((s32)(off - val)) *)1 = =3D=3D (typeof((s32)(0)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void= *)((long)((s32)(off - val)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D si= zeof(*(8 ? ((void *)((long)((s32)(0)) * 0l)) : (int *)8))))), (((s32)(off -= val)) > ((s32)(0)) ? ((s32)(off - val)) : ((s32)(0))), ({ typeof((s32)(off= - val)) __UNIQUE_ID___x369 =3D ((s32)(off - val)); typeof((s32)(0)) __UNIQ= UE_ID___y370 =3D ((s32)(0)); ((__UNIQUE_ID___x369) > (__UNIQUE_ID___y370) ?= (__UNIQUE_ID___x369) : (__UNIQUE_ID___y370)); }));=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 371(void) ; if (!((sizeof(sk->sk_peek_off) =3D=3D sizeof(char) || sizeof(sk= ->sk_peek_off) =3D=3D sizeof(short) || sizeof(sk->sk_peek_off) =3D=3D sizeo= f(int) || sizeof(sk->sk_peek_off) =3D=3D sizeof(long)) || sizeof(sk->sk_pee= k_off) =3D=3D sizeof(long long))) __compiletime_assert_371(); } while (0); = do { *(volatile typeof(sk->sk_peek_off) *)&(sk->sk_peek_off) =3D (off); } w= hile (0); } while (0);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_peek_offset_fwd(stru= ct sock *sk, int val)=0D {=0D sk_peek_offset_bwd(sk, -val);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_entry(const = struct hlist_node *node)=0D {=0D return ({ void *__mptr =3D (void *)(node); _Static_assert(__builtin_types_= compatible_p(typeof(*(node)), typeof(((struct sock *)0)->__sk_common.skc_no= de)) || __builtin_types_compatible_p(typeof(*(node)), typeof(void)), "point= er type mismatch in container_of()"); ((struct sock *)(__mptr - __builtin_o= ffsetof(struct sock, __sk_common.skc_node))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *__sk_head(const= struct hlist_head *head)=0D {=0D return ({ void *__mptr =3D (void *)(head->first); _Static_assert(__builtin= _types_compatible_p(typeof(*(head->first)), typeof(((struct sock *)0)->__sk= _common.skc_node)) || __builtin_types_compatible_p(typeof(*(head->first)), = typeof(void)), "pointer type mismatch in container_of()"); ((struct sock *)= (__mptr - __builtin_offsetof(struct sock, __sk_common.skc_node))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_head(const s= truct hlist_head *head)=0D {=0D return hlist_empty(head) ? ((void *)0) : __sk_head(head);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *__sk_nulls_head= (const struct hlist_nulls_head *head)=0D {=0D return ({ void *__mptr =3D (void *)(head->first); _Static_assert(__builtin= _types_compatible_p(typeof(*(head->first)), typeof(((struct sock *)0)->__sk= _common.skc_nulls_node)) || __builtin_types_compatible_p(typeof(*(head->fir= st)), typeof(void)), "pointer type mismatch in container_of()"); ((struct s= ock *)(__mptr - __builtin_offsetof(struct sock, __sk_common.skc_nulls_node)= )); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_nulls_head(c= onst struct hlist_nulls_head *head)=0D {=0D return hlist_nulls_empty(head) ? ((void *)0) : __sk_nulls_head(head);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_next(const s= truct sock *sk)=0D {=0D return ({ typeof(sk->__sk_common.skc_node.next) ____ptr =3D (sk->__sk_comm= on.skc_node.next); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static= _assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((struct so= ck *)0)->__sk_common.skc_node)) || __builtin_types_compatible_p(typeof(*(__= __ptr)), typeof(void)), "pointer type mismatch in container_of()"); ((struc= t sock *)(__mptr - __builtin_offsetof(struct sock, __sk_common.skc_node)));= }) : ((void *)0); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_nulls_next(c= onst struct sock *sk)=0D {=0D return (!is_a_nulls(sk->__sk_common.skc_nulls_node.next)) ?=0D ({ void *__mptr =3D (void *)(sk->__sk_common.skc_nulls_node.next); _Stati= c_assert(__builtin_types_compatible_p(typeof(*(sk->__sk_common.skc_nulls_no= de.next)), typeof(((struct sock *)0)->__sk_common.skc_nulls_node)) || __bui= ltin_types_compatible_p(typeof(*(sk->__sk_common.skc_nulls_node.next)), typ= eof(void)), "pointer type mismatch in container_of()"); ((struct sock *)(__= mptr - __builtin_offsetof(struct sock, __sk_common.skc_nulls_node))); }) := =0D =0D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_unhashed(const struc= t sock *sk)=0D {=0D return hlist_unhashed(&sk->__sk_common.skc_node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_hashed(const struct = sock *sk)=0D {=0D return !sk_unhashed(sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_node_init(struct hli= st_node *node)=0D {=0D node->pprev =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_nulls_node_init(stru= ct hlist_nulls_node *node)=0D {=0D node->pprev =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_del_node(struct so= ck *sk)=0D {=0D __hlist_del(&sk->__sk_common.skc_node);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __sk_del_node_init(stru= ct sock *sk)=0D {=0D if (sk_hashed(sk)) {=0D __sk_del_node(sk);=0D sk_node_init(&sk->__sk_common.skc_node);=0D return true;=0D }=0D return false;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void sock_hold(struct sock *sk)=0D {=0D refcount_inc(&sk->__sk_common.skc_refcnt);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __sock_put(struct sock *sk)=0D {=0D refcount_dec(&sk->__sk_common.skc_refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_del_node_init(struct= sock *sk)=0D {=0D bool rc =3D __sk_del_node_init(sk);=0D =0D if (rc) {=0D =0D ({ int __ret_warn_on =3D !!(refcount_read(&sk->__sk_common.skc_refcnt) = =3D=3D 1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volat= ile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" = ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".hal= f" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/sock= =2Eh"), "i" (743), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entr= y))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D __sock_put(sk);=0D }=0D return rc;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __sk_nulls_del_node_ini= t_rcu(struct sock *sk)=0D {=0D if (sk_hashed(sk)) {=0D hlist_nulls_del_init_rcu(&sk->__sk_common.skc_nulls_node);=0D return true;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_nulls_del_node_init_= rcu(struct sock *sk)=0D {=0D bool rc =3D __sk_nulls_del_node_init_rcu(sk);=0D =0D if (rc) {=0D =0D ({ int __ret_warn_on =3D !!(refcount_read(&sk->__sk_common.skc_refcnt) = =3D=3D 1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volat= ile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" = ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".hal= f" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/sock= =2Eh"), "i" (765), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entr= y))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D __sock_put(sk);=0D }=0D return rc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_add_node(struct so= ck *sk, struct hlist_head *list)=0D {=0D hlist_add_head(&sk->__sk_common.skc_node, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_add_node(struct sock= *sk, struct hlist_head *list)=0D {=0D sock_hold(sk);=0D __sk_add_node(sk, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_add_node_rcu(struct = sock *sk, struct hlist_head *list)=0D {=0D sock_hold(sk);=0D if (1 && sk->__sk_common.skc_reuseport &&=0D sk->__sk_common.skc_family =3D=3D 10)=0D hlist_add_tail_rcu(&sk->__sk_common.skc_node, list);=0D else=0D hlist_add_head_rcu(&sk->__sk_common.skc_node, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_add_node_tail_rcu(st= ruct sock *sk, struct hlist_head *list)=0D {=0D sock_hold(sk);=0D hlist_add_tail_rcu(&sk->__sk_common.skc_node, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_nulls_add_node_rcu= (struct sock *sk, struct hlist_nulls_head *list)=0D {=0D hlist_nulls_add_head_rcu(&sk->__sk_common.skc_nulls_node, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_nulls_add_node_tai= l_rcu(struct sock *sk, struct hlist_nulls_head *list)=0D {=0D hlist_nulls_add_tail_rcu(&sk->__sk_common.skc_nulls_node, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_nulls_add_node_rcu(s= truct sock *sk, struct hlist_nulls_head *list)=0D {=0D sock_hold(sk);=0D __sk_nulls_add_node_rcu(sk, list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_del_bind_node(stru= ct sock *sk)=0D {=0D __hlist_del(&sk->__sk_common.skc_bind_node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_add_bind_node(struct= sock *sk,=0D struct hlist_head *list)=0D {=0D hlist_add_head(&sk->__sk_common.skc_bind_node, list);=0D }=0D # 857 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct user_namespace *sk_us= er_ns(struct sock *sk)=0D {=0D =0D =0D =0D =0D return sk->sk_socket->file->f_cred->user_ns;=0D }=0D =0D =0D enum sock_flags {=0D SOCK_DEAD,=0D SOCK_DONE,=0D SOCK_URGINLINE,=0D SOCK_KEEPOPEN,=0D SOCK_LINGER,=0D SOCK_DESTROY,=0D SOCK_BROADCAST,=0D SOCK_TIMESTAMP,=0D SOCK_ZAPPED,=0D SOCK_USE_WRITE_QUEUE,=0D SOCK_DBG,=0D SOCK_RCVTSTAMP,=0D SOCK_RCVTSTAMPNS,=0D SOCK_LOCALROUTE,=0D SOCK_MEMALLOC,=0D SOCK_TIMESTAMPING_RX_SOFTWARE,=0D SOCK_FASYNC,=0D SOCK_RXQ_OVFL,=0D SOCK_ZEROCOPY,=0D SOCK_WIFI_STATUS,=0D SOCK_NOFCS,=0D =0D =0D =0D SOCK_FILTER_LOCKED,=0D SOCK_SELECT_ERR_QUEUE,=0D SOCK_RCU_FREE,=0D SOCK_TXTIME,=0D SOCK_XDP,=0D SOCK_TSTAMP_NEW,=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_copy_flags(struct = sock *nsk, struct sock *osk)=0D {=0D nsk->__sk_common.skc_flags =3D osk->__sk_common.skc_flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_set_flag(struct so= ck *sk, enum sock_flags flag)=0D {=0D arch___set_bit(flag, &sk->__sk_common.skc_flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_reset_flag(struct = sock *sk, enum sock_flags flag)=0D {=0D arch___clear_bit(flag, &sk->__sk_common.skc_flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_valbool_flag(struc= t sock *sk, enum sock_flags bit,=0D int valbool)=0D {=0D if (valbool)=0D sock_set_flag(sk, bit);=0D else=0D sock_reset_flag(sk, bit);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sock_flag(const struct = sock *sk, enum sock_flags flag)=0D {=0D return arch_test_bit(flag, &sk->__sk_common.skc_flags);=0D }=0D =0D =0D extern struct static_key_false memalloc_socks_key;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_memalloc_socks(void)= =0D {=0D return __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(= &memalloc_socks_key)->key), struct static_key) && !__builtin_types_compatib= le_p(typeof(*&(&memalloc_socks_key)->key), struct static_key_true) && !__bu= iltin_types_compatible_p(typeof(*&(&memalloc_socks_key)->key), struct stati= c_key_false)) ____wrong_branch_error(); static_key_count((struct static_key= *)&(&memalloc_socks_key)->key) > 0; })), 0);=0D }=0D =0D void __receive_sock(struct file *file);=0D # 950 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gfp_t sk_gfp_mask(const stru= ct sock *sk, gfp_t gfp_mask)=0D {=0D return gfp_mask | (sk->sk_allocation & (( gfp_t)0x20000u));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_acceptq_removed(stru= ct sock *sk)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 72(void) ; if (!((sizeof(sk->sk_ack_backlog) =3D=3D sizeof(char) || sizeof(= sk->sk_ack_backlog) =3D=3D sizeof(short) || sizeof(sk->sk_ack_backlog) =3D= =3D sizeof(int) || sizeof(sk->sk_ack_backlog) =3D=3D sizeof(long)) || sizeo= f(sk->sk_ack_backlog) =3D=3D sizeof(long long))) __compiletime_assert_372()= ; } while (0); do { *(volatile typeof(sk->sk_ack_backlog) *)&(sk->sk_ack_ba= cklog) =3D (sk->sk_ack_backlog - 1); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_acceptq_added(struct= sock *sk)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 73(void) ; if (!((sizeof(sk->sk_ack_backlog) =3D=3D sizeof(char) || sizeof(= sk->sk_ack_backlog) =3D=3D sizeof(short) || sizeof(sk->sk_ack_backlog) =3D= =3D sizeof(int) || sizeof(sk->sk_ack_backlog) =3D=3D sizeof(long)) || sizeo= f(sk->sk_ack_backlog) =3D=3D sizeof(long long))) __compiletime_assert_373()= ; } while (0); do { *(volatile typeof(sk->sk_ack_backlog) *)&(sk->sk_ack_ba= cklog) =3D (sk->sk_ack_backlog + 1); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_acceptq_is_full(cons= t struct sock *sk)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_374(void) ; if (!((sizeof(sk->sk_ack_backlog) =3D=3D sizeof(char) || si= zeof(sk->sk_ack_backlog) =3D=3D sizeof(short) || sizeof(sk->sk_ack_backlog)= =3D=3D sizeof(int) || sizeof(sk->sk_ack_backlog) =3D=3D sizeof(long)) || s= izeof(sk->sk_ack_backlog) =3D=3D sizeof(long long))) __compiletime_assert_3= 74(); } while (0); (*(const volatile typeof( _Generic((sk->sk_ack_backlog),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: (sk->sk_ack_backlog)= )) *)&(sk->sk_ack_backlog)); }) > ({ do { __attribute__((__noreturn__)) ext= ern void __compiletime_assert_375(void) ; if (!((sizeof(sk->sk_max_ack_back= log) =3D=3D sizeof(char) || sizeof(sk->sk_max_ack_backlog) =3D=3D sizeof(sh= ort) || sizeof(sk->sk_max_ack_backlog) =3D=3D sizeof(int) || sizeof(sk->sk_= max_ack_backlog) =3D=3D sizeof(long)) || sizeof(sk->sk_max_ack_backlog) =3D= =3D sizeof(long long))) __compiletime_assert_375(); } while (0); (*(const v= olatile typeof( _Generic((sk->sk_max_ack_backlog), char: (char)0, unsigned = char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsig= ned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, = signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (s= igned long)0, unsigned long long: (unsigned long long)0, signed long long: = (signed long long)0, default: (sk->sk_max_ack_backlog))) *)&(sk->sk_max_ack= _backlog)); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_stream_min_wspace(con= st struct sock *sk)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_376(void) ; if (!((sizeof(sk->sk_wmem_queued) =3D=3D sizeof(char) || si= zeof(sk->sk_wmem_queued) =3D=3D sizeof(short) || sizeof(sk->sk_wmem_queued)= =3D=3D sizeof(int) || sizeof(sk->sk_wmem_queued) =3D=3D sizeof(long)) || s= izeof(sk->sk_wmem_queued) =3D=3D sizeof(long long))) __compiletime_assert_3= 76(); } while (0); (*(const volatile typeof( _Generic((sk->sk_wmem_queued),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: (sk->sk_wmem_queued)= )) *)&(sk->sk_wmem_queued)); }) >> 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_stream_wspace(const s= truct sock *sk)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_377(void) ; if (!((sizeof(sk->sk_sndbuf) =3D=3D sizeof(char) || sizeof(= sk->sk_sndbuf) =3D=3D sizeof(short) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(= int) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(long)) || sizeof(sk->sk_sndbuf)= =3D=3D sizeof(long long))) __compiletime_assert_377(); } while (0); (*(con= st volatile typeof( _Generic((sk->sk_sndbuf), char: (char)0, unsigned char:= (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned s= hort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signe= d int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed= long)0, unsigned long long: (unsigned long long)0, signed long long: (sign= ed long long)0, default: (sk->sk_sndbuf))) *)&(sk->sk_sndbuf)); }) - ({ do = { __attribute__((__noreturn__)) extern void __compiletime_assert_378(void) = ; if (!((sizeof(sk->sk_wmem_queued) =3D=3D sizeof(char) || sizeof(sk->sk_wm= em_queued) =3D=3D sizeof(short) || sizeof(sk->sk_wmem_queued) =3D=3D sizeof= (int) || sizeof(sk->sk_wmem_queued) =3D=3D sizeof(long)) || sizeof(sk->sk_w= mem_queued) =3D=3D sizeof(long long))) __compiletime_assert_378(); } while = (0); (*(const volatile typeof( _Generic((sk->sk_wmem_queued), char: (char)0= , unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned sh= ort: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsig= ned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, sign= ed long: (signed long)0, unsigned long long: (unsigned long long)0, signed = long long: (signed long long)0, default: (sk->sk_wmem_queued))) *)&(sk->sk_= wmem_queued)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_wmem_queued_add(stru= ct sock *sk, int val)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 79(void) ; if (!((sizeof(sk->sk_wmem_queued) =3D=3D sizeof(char) || sizeof(= sk->sk_wmem_queued) =3D=3D sizeof(short) || sizeof(sk->sk_wmem_queued) =3D= =3D sizeof(int) || sizeof(sk->sk_wmem_queued) =3D=3D sizeof(long)) || sizeo= f(sk->sk_wmem_queued) =3D=3D sizeof(long long))) __compiletime_assert_379()= ; } while (0); do { *(volatile typeof(sk->sk_wmem_queued) *)&(sk->sk_wmem_q= ueued) =3D (sk->sk_wmem_queued + val); } while (0); } while (0);=0D }=0D =0D void sk_stream_write_space(struct sock *sk);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_add_backlog(struct= sock *sk, struct sk_buff *skb)=0D {=0D =0D skb_dst_force(skb);=0D =0D if (!sk->sk_backlog.tail)=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 380(void) ; if (!((sizeof(sk->sk_backlog.head) =3D=3D sizeof(char) || sizeo= f(sk->sk_backlog.head) =3D=3D sizeof(short) || sizeof(sk->sk_backlog.head) = =3D=3D sizeof(int) || sizeof(sk->sk_backlog.head) =3D=3D sizeof(long)) || s= izeof(sk->sk_backlog.head) =3D=3D sizeof(long long))) __compiletime_assert_= 380(); } while (0); do { *(volatile typeof(sk->sk_backlog.head) *)&(sk->sk_= backlog.head) =3D (skb); } while (0); } while (0);=0D else=0D sk->sk_backlog.tail->next =3D skb;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 81(void) ; if (!((sizeof(sk->sk_backlog.tail) =3D=3D sizeof(char) || sizeof= (sk->sk_backlog.tail) =3D=3D sizeof(short) || sizeof(sk->sk_backlog.tail) = =3D=3D sizeof(int) || sizeof(sk->sk_backlog.tail) =3D=3D sizeof(long)) || s= izeof(sk->sk_backlog.tail) =3D=3D sizeof(long long))) __compiletime_assert_= 381(); } while (0); do { *(volatile typeof(sk->sk_backlog.tail) *)&(sk->sk_= backlog.tail) =3D (skb); } while (0); } while (0);=0D skb->next =3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_rcvqueues_full(const= struct sock *sk, unsigned int limit)=0D {=0D unsigned int qsize =3D sk->sk_backlog.len + atomic_read(&sk->sk_backlog.rm= em_alloc);=0D =0D return qsize > limit;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) int sk_add_backlog(struct sock *sk, struct sk_buff *skb,=0D unsigned int limit)=0D {=0D if (sk_rcvqueues_full(sk, limit))=0D return -105;=0D =0D =0D =0D =0D =0D =0D if (skb_pfmemalloc(skb) && !sock_flag(sk, SOCK_MEMALLOC))=0D return -12;=0D =0D __sk_add_backlog(sk, skb);=0D sk->sk_backlog.len +=3D skb->truesize;=0D return 0;=0D }=0D =0D int __sk_backlog_rcv(struct sock *sk, struct sk_buff *skb);=0D =0D = ;=0D = ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_backlog_rcv(struct so= ck *sk, struct sk_buff *skb)=0D {=0D if (sk_memalloc_socks() && skb_pfmemalloc(skb))=0D return __sk_backlog_rcv(sk, skb);=0D =0D return sk->sk_backlog_rcv(sk, skb);=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_incoming_cpu_update(= struct sock *sk)=0D {=0D int cpu =3D (((struct thread_info *)get_current())->cpu);=0D =0D if (__builtin_expect(!!(({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_382(void) ; if (!((sizeof(sk->__sk_common.skc_incoming= _cpu) =3D=3D sizeof(char) || sizeof(sk->__sk_common.skc_incoming_cpu) =3D= =3D sizeof(short) || sizeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof= (int) || sizeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof(long)) || s= izeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof(long long))) __compil= etime_assert_382(); } while (0); (*(const volatile typeof( _Generic((sk->__= sk_common.skc_incoming_cpu), char: (char)0, unsigned char: (unsigned char)0= , signed char: (signed char)0, unsigned short: (unsigned short)0, signed sh= ort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed in= t)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned= long long: (unsigned long long)0, signed long long: (signed long long)0, d= efault: (sk->__sk_common.skc_incoming_cpu))) *)&(sk->__sk_common.skc_incomi= ng_cpu)); }) !=3D cpu), 0))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 383(void) ; if (!((sizeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof(c= har) || sizeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof(short) || si= zeof(sk->__sk_common.skc_incoming_cpu) =3D=3D sizeof(int) || sizeof(sk->__s= k_common.skc_incoming_cpu) =3D=3D sizeof(long)) || sizeof(sk->__sk_common.s= kc_incoming_cpu) =3D=3D sizeof(long long))) __compiletime_assert_383(); } w= hile (0); do { *(volatile typeof(sk->__sk_common.skc_incoming_cpu) *)&(sk->= __sk_common.skc_incoming_cpu) =3D (cpu); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_rps_record_flow_ha= sh(__u32 hash)=0D {=0D =0D struct rps_sock_flow_table *sock_flow_table;=0D =0D rcu_read_lock();=0D sock_flow_table =3D ({ typeof(*(rps_sock_flow_table)) *__UNIQUE_ID_rcu384 = =3D (typeof(*(rps_sock_flow_table)) *)({ do { __attribute__((__noreturn__))= extern void __compiletime_assert_385(void) ; if (!((sizeof((rps_sock_flow_= table)) =3D=3D sizeof(char) || sizeof((rps_sock_flow_table)) =3D=3D sizeof(= short) || sizeof((rps_sock_flow_table)) =3D=3D sizeof(int) || sizeof((rps_s= ock_flow_table)) =3D=3D sizeof(long)) || sizeof((rps_sock_flow_table)) =3D= =3D sizeof(long long))) __compiletime_assert_385(); } while (0); (*(const v= olatile typeof( _Generic(((rps_sock_flow_table)), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: ((rps_sock_flow_table)))) *)&((rps_sock_flow_t= able))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((type= of(*(rps_sock_flow_table)) *)(__UNIQUE_ID_rcu384)); });=0D rps_record_sock_flow(sock_flow_table, hash);=0D rcu_read_unlock();=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_rps_record_flow(co= nst struct sock *sk)=0D {=0D =0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&rf= s_needed)->key), struct static_key) && !__builtin_types_compatible_p(typeof= (*&(&rfs_needed)->key), struct static_key_true) && !__builtin_types_compati= ble_p(typeof(*&(&rfs_needed)->key), struct static_key_false)) ____wrong_bra= nch_error(); static_key_count((struct static_key *)&(&rfs_needed)->key) > 0= ; })), 0)) {=0D # 1091 "./include/net/sock.h"=0D if (sk->__sk_common.skc_state =3D=3D TCP_ESTABLISHED)=0D sock_rps_record_flow_hash(sk->__sk_common.skc_rxhash);=0D }=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_rps_save_rxhash(st= ruct sock *sk,=0D const struct sk_buff *skb)=0D {=0D =0D if (__builtin_expect(!!(sk->__sk_common.skc_rxhash !=3D skb->hash), 0))=0D sk->__sk_common.skc_rxhash =3D skb->hash;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_rps_reset_rxhash(s= truct sock *sk)=0D {=0D =0D sk->__sk_common.skc_rxhash =3D 0;=0D =0D }=0D # 1128 "./include/net/sock.h"=0D int sk_stream_wait_connect(struct sock *sk, long *timeo_p);=0D int sk_stream_wait_memory(struct sock *sk, long *timeo_p);=0D void sk_stream_wait_close(struct sock *sk, long timeo_p);=0D int sk_stream_error(struct sock *sk, int flags, int err);=0D void sk_stream_kill_queues(struct sock *sk);=0D void sk_set_memalloc(struct sock *sk);=0D void sk_clear_memalloc(struct sock *sk);=0D =0D void __sk_flush_backlog(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_flush_backlog(struct= sock *sk)=0D {=0D if (__builtin_expect(!!(({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_386(void) ; if (!((sizeof(sk->sk_backlog.tail) =3D=3D = sizeof(char) || sizeof(sk->sk_backlog.tail) =3D=3D sizeof(short) || sizeof(= sk->sk_backlog.tail) =3D=3D sizeof(int) || sizeof(sk->sk_backlog.tail) =3D= =3D sizeof(long)) || sizeof(sk->sk_backlog.tail) =3D=3D sizeof(long long)))= __compiletime_assert_386(); } while (0); (*(const volatile typeof( _Generi= c((sk->sk_backlog.tail), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: (sk->sk_backlog.tail))) *)&(sk->sk_backlog.tail)); })), 0)) {=0D __sk_flush_backlog(sk);=0D return true;=0D }=0D return false;=0D }=0D =0D int sk_wait_data(struct sock *sk, long *timeo, const struct sk_buff *skb);= =0D =0D struct request_sock_ops;=0D struct timewait_sock_ops;=0D struct inet_hashinfo;=0D struct raw_hashinfo;=0D struct smc_hashinfo;=0D struct module;=0D struct sk_psock;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_prot_clear_nulls(str= uct sock *sk, int size)=0D {=0D if (__builtin_offsetof(struct sock, __sk_common.skc_node.next) !=3D 0)=0D memset(sk, 0, __builtin_offsetof(struct sock, __sk_common.skc_node.next))= ;=0D memset(&sk->__sk_common.skc_node.pprev, 0,=0D size - __builtin_offsetof(struct sock, __sk_common.skc_node.pprev))= ;=0D }=0D =0D =0D =0D =0D struct proto {=0D void (*close)(struct sock *sk,=0D long timeout);=0D int (*pre_connect)(struct sock *sk,=0D struct sockaddr *uaddr,=0D int addr_len);=0D int (*connect)(struct sock *sk,=0D struct sockaddr *uaddr,=0D int addr_len);=0D int (*disconnect)(struct sock *sk, int flags);=0D =0D struct sock * (*accept)(struct sock *sk, int flags, int *err,=0D bool kern);=0D =0D int (*ioctl)(struct sock *sk, int cmd,=0D unsigned long arg);=0D int (*init)(struct sock *sk);=0D void (*destroy)(struct sock *sk);=0D void (*shutdown)(struct sock *sk, int how);=0D int (*setsockopt)(struct sock *sk, int level,=0D int optname, sockptr_t optval,=0D unsigned int optlen);=0D int (*getsockopt)(struct sock *sk, int level,=0D int optname, char *optval,=0D int *option);=0D void (*keepalive)(struct sock *sk, int valbool);=0D =0D =0D =0D =0D int (*sendmsg)(struct sock *sk, struct msghdr *msg,=0D size_t len);=0D int (*recvmsg)(struct sock *sk, struct msghdr *msg,=0D size_t len, int noblock, int flags,=0D int *addr_len);=0D int (*sendpage)(struct sock *sk, struct page *page,=0D int offset, size_t size, int flags);=0D int (*bind)(struct sock *sk,=0D struct sockaddr *addr, int addr_len);=0D int (*bind_add)(struct sock *sk,=0D struct sockaddr *addr, int addr_len);=0D =0D int (*backlog_rcv) (struct sock *sk,=0D struct sk_buff *skb);=0D bool (*bpf_bypass_getsockopt)(int level,=0D int optname);=0D =0D void (*release_cb)(struct sock *sk);=0D =0D =0D int (*hash)(struct sock *sk);=0D void (*unhash)(struct sock *sk);=0D void (*rehash)(struct sock *sk);=0D int (*get_port)(struct sock *sk, unsigned short snum);=0D void (*put_port)(struct sock *sk);=0D =0D int (*psock_update_sk_prot)(struct sock *sk,=0D struct sk_psock *psock,=0D bool restore);=0D =0D =0D =0D =0D unsigned int inuse_idx;=0D =0D =0D =0D =0D =0D =0D bool (*stream_memory_free)(const struct sock *sk, int wake);=0D bool (*sock_is_readable)(struct sock *sk);=0D =0D void (*enter_memory_pressure)(struct sock *sk);=0D void (*leave_memory_pressure)(struct sock *sk);=0D atomic_long_t *memory_allocated;=0D struct percpu_counter *sockets_allocated;=0D =0D =0D =0D =0D =0D =0D =0D unsigned long *memory_pressure;=0D long *sysctl_mem;=0D =0D int *sysctl_wmem;=0D int *sysctl_rmem;=0D u32 sysctl_wmem_offset;=0D u32 sysctl_rmem_offset;=0D =0D int max_header;=0D bool no_autobind;=0D =0D struct kmem_cache *slab;=0D unsigned int obj_size;=0D slab_flags_t slab_flags;=0D unsigned int useroffset;=0D unsigned int usersize;=0D =0D unsigned int *orphan_count;=0D =0D struct request_sock_ops *rsk_prot;=0D struct timewait_sock_ops *twsk_prot;=0D =0D union {=0D struct inet_hashinfo *hashinfo;=0D struct udp_table *udp_table;=0D struct raw_hashinfo *raw_hash;=0D struct smc_hashinfo *smc_hash;=0D } h;=0D =0D struct module *owner;=0D =0D char name[32];=0D =0D struct list_head node;=0D =0D =0D =0D int (*diag_destroy)(struct sock *sk, int err);=0D } ;=0D =0D int proto_register(struct proto *prot, int alloc_slab);=0D void proto_unregister(struct proto *prot);=0D int sock_load_diag_module(int family, int protocol);=0D # 1325 "./include/net/sock.h"=0D = ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_forward_alloc_get(con= st struct sock *sk)=0D {=0D =0D =0D =0D =0D return sk->sk_forward_alloc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __sk_stream_memory_free= (const struct sock *sk, int wake)=0D {=0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _387(void) ; if (!((sizeof(sk->sk_wmem_queued) =3D=3D sizeof(char) || sizeo= f(sk->sk_wmem_queued) =3D=3D sizeof(short) || sizeof(sk->sk_wmem_queued) = =3D=3D sizeof(int) || sizeof(sk->sk_wmem_queued) =3D=3D sizeof(long)) || si= zeof(sk->sk_wmem_queued) =3D=3D sizeof(long long))) __compiletime_assert_38= 7(); } while (0); (*(const volatile typeof( _Generic((sk->sk_wmem_queued), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (sk->sk_wmem_queued))= ) *)&(sk->sk_wmem_queued)); }) >=3D ({ do { __attribute__((__noreturn__)) e= xtern void __compiletime_assert_388(void) ; if (!((sizeof(sk->sk_sndbuf) = =3D=3D sizeof(char) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(short) || sizeof= (sk->sk_sndbuf) =3D=3D sizeof(int) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(l= ong)) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(long long))) __compiletime_ass= ert_388(); } while (0); (*(const volatile typeof( _Generic((sk->sk_sndbuf),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: (sk->sk_sndbuf))) *)= &(sk->sk_sndbuf)); }))=0D return false;=0D =0D return sk->__sk_common.skc_prot->stream_memory_free ?=0D sk->__sk_common.skc_prot->stream_memory_free(sk, wake) : true;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_stream_memory_free(c= onst struct sock *sk)=0D {=0D return __sk_stream_memory_free(sk, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __sk_stream_is_writeabl= e(const struct sock *sk, int wake)=0D {=0D return sk_stream_wspace(sk) >=3D sk_stream_min_wspace(sk) &&=0D __sk_stream_memory_free(sk, wake);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_stream_is_writeable(= const struct sock *sk)=0D {=0D return __sk_stream_is_writeable(sk, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_under_cgroup_hierarch= y(struct sock *sk,=0D struct cgroup *ancestor)=0D {=0D =0D return cgroup_is_descendant(sock_cgroup_ptr(&sk->sk_cgrp_data),=0D ancestor);=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_has_memory_pressure(= const struct sock *sk)=0D {=0D return sk->__sk_common.skc_prot->memory_pressure !=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_under_memory_pressur= e(const struct sock *sk)=0D {=0D if (!sk->__sk_common.skc_prot->memory_pressure)=0D return false;=0D =0D if (0 && sk->sk_memcg &&=0D mem_cgroup_under_socket_pressure(sk->sk_memcg))=0D return true;=0D =0D return !!*sk->__sk_common.skc_prot->memory_pressure;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long=0D sk_memory_allocated(const struct sock *sk)=0D {=0D return atomic_long_read(sk->__sk_common.skc_prot->memory_allocated);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long=0D sk_memory_allocated_add(struct sock *sk, int amt)=0D {=0D return atomic_long_add_return(amt, sk->__sk_common.skc_prot->memory_alloca= ted);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D sk_memory_allocated_sub(struct sock *sk, int amt)=0D {=0D atomic_long_sub(amt, sk->__sk_common.skc_prot->memory_allocated);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_sockets_allocated_de= c(struct sock *sk)=0D {=0D percpu_counter_add_batch(sk->__sk_common.skc_prot->sockets_allocated, -1,= =0D 16);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_sockets_allocated_in= c(struct sock *sk)=0D {=0D percpu_counter_add_batch(sk->__sk_common.skc_prot->sockets_allocated, 1,=0D 16);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64=0D sk_sockets_allocated_read_positive(struct sock *sk)=0D {=0D return percpu_counter_read_positive(sk->__sk_common.skc_prot->sockets_allo= cated);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D proto_sockets_allocated_sum_positive(struct proto *prot)=0D {=0D return percpu_counter_sum_positive(prot->sockets_allocated);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long=0D proto_memory_allocated(struct proto *prot)=0D {=0D return atomic_long_read(prot->memory_allocated);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D proto_memory_pressure(struct proto *prot)=0D {=0D if (!prot->memory_pressure)=0D return false;=0D return !!*prot->memory_pressure;=0D }=0D =0D =0D =0D =0D struct prot_inuse {=0D int all;=0D int val[64];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_prot_inuse_add(con= st struct net *net,=0D const struct proto *prot, int val)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(net->core.prot_inuse->va= l[prot->inuse_idx])) + 0))((void *)0); (void)__vpp_verify; } while (0); swi= tch(sizeof(net->core.prot_inuse->val[prot->inuse_idx])) { case 1: do { unsi= gned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2;= (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(= ); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(net->= core.prot_inuse->val[prot->inuse_idx])) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(net->core.prot_inuse->val[prot->inuse_idx]))) *)(&(net->core.prot_inuse= ->val[prot->inuse_idx]))); (typeof((typeof(*(&(net->core.prot_inuse->val[pr= ot->inuse_idx]))) *)(&(net->core.prot_inuse->val[prot->inuse_idx])))) (__pt= r + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); = }); }) +=3D val; } while (0); do { ({ unsigned long __dummy; typeof(__flags= ) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arc= h_local_irq_restore(__flags); } while (0); } while (0);break; case 2: do { = unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dum= my2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_s= ave(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(n= et->core.prot_inuse->val[prot->inuse_idx])) + 0))((void *)0); (void)__vpp_v= erify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typ= eof(*(&(net->core.prot_inuse->val[prot->inuse_idx]))) *)(&(net->core.prot_i= nuse->val[prot->inuse_idx]))); (typeof((typeof(*(&(net->core.prot_inuse->va= l[prot->inuse_idx]))) *)(&(net->core.prot_inuse->val[prot->inuse_idx])))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); }) +=3D val; } while (0); do { ({ unsigned long __dummy; typeof(__f= lags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0);= arch_local_irq_restore(__flags); } while (0); } while (0);break; case 4: d= o { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) _= _dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_i= rq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof(= (&(net->core.prot_inuse->val[prot->inuse_idx])) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(net->core.prot_inuse->val[prot->inuse_idx]))) *)(&(net->core.pr= ot_inuse->val[prot->inuse_idx]))); (typeof((typeof(*(&(net->core.prot_inuse= ->val[prot->inuse_idx]))) *)(&(net->core.prot_inuse->val[prot->inuse_idx]))= )) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu= )])))); }); }) +=3D val; } while (0); do { ({ unsigned long __dummy; typeof= (__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while = (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; case = 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flag= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_loc= al_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typ= eof((&(net->core.prot_inuse->val[prot->inuse_idx])) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(net->core.prot_inuse->val[prot->inuse_idx]))) *)(&(net->cor= e.prot_inuse->val[prot->inuse_idx]))); (typeof((typeof(*(&(net->core.prot_i= nuse->val[prot->inuse_idx]))) *)(&(net->core.prot_inuse->val[prot->inuse_id= x])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())-= >cpu)])))); }); }) +=3D val; } while (0); do { ({ unsigned long __dummy; ty= peof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } wh= ile (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; d= efault: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_inuse_add(const st= ruct net *net, int val)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(net->core.prot_inuse->al= l)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(net->c= ore.prot_inuse->all)) { case 1: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(net->core.prot_inuse->all)) + 0))((void= *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (= unsigned long) ((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.pro= t_inuse->all))); (typeof((typeof(*(&(net->core.prot_inuse->all))) *)(&(net-= >core.prot_inuse->all)))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); }) +=3D val; } while (0); do { ({ unsign= ed long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2= ); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); }= while (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long= __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }= ); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void= *__vpp_verify =3D (typeof((&(net->core.prot_inuse->all)) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.prot_inus= e->all))); (typeof((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.= prot_inuse->all)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D val; } while (0); do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } while= (0);break; case 4: do { unsigned long __flags; do { ({ unsigned long __dum= my; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __f= lags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vp= p_verify =3D (typeof((&(net->core.prot_inuse->all)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.prot_inuse->all= ))); (typeof((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.prot_i= nuse->all)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_curr= ent())->cpu)])))); }); }) +=3D val; } while (0); do { ({ unsigned long __du= mmy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do= { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);b= reak; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; ty= peof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(net->core.prot_inuse->all)) + 0))((void *)0); (void)__vp= p_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((= typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.prot_inuse->all))); = (typeof((typeof(*(&(net->core.prot_inuse->all))) *)(&(net->core.prot_inuse-= >all)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current()= )->cpu)])))); }); }) +=3D val; } while (0); do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } = while (0); arch_local_irq_restore(__flags); } while (0); } while (0);break;= default: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D int sock_prot_inuse_get(struct net *net, struct proto *proto);=0D int sock_inuse_get(struct net *net);=0D # 1484 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __sk_prot_rehash(struct = sock *sk)=0D {=0D sk->__sk_common.skc_prot->unhash(sk);=0D return sk->__sk_common.skc_prot->hash(sk);=0D }=0D # 1503 "./include/net/sock.h"=0D struct socket_alloc {=0D struct socket socket;=0D struct inode vfs_inode;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct socket *SOCKET_I(stru= ct inode *inode)=0D {=0D return &({ void *__mptr =3D (void *)(inode); _Static_assert(__builtin_type= s_compatible_p(typeof(*(inode)), typeof(((struct socket_alloc *)0)->vfs_ino= de)) || __builtin_types_compatible_p(typeof(*(inode)), typeof(void)), "poin= ter type mismatch in container_of()"); ((struct socket_alloc *)(__mptr - __= builtin_offsetof(struct socket_alloc, vfs_inode))); })->socket;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inode *SOCK_INODE(str= uct socket *socket)=0D {=0D return &({ void *__mptr =3D (void *)(socket); _Static_assert(__builtin_typ= es_compatible_p(typeof(*(socket)), typeof(((struct socket_alloc *)0)->socke= t)) || __builtin_types_compatible_p(typeof(*(socket)), typeof(void)), "poin= ter type mismatch in container_of()"); ((struct socket_alloc *)(__mptr - __= builtin_offsetof(struct socket_alloc, socket))); })->vfs_inode;=0D }=0D =0D =0D =0D =0D int __sk_mem_raise_allocated(struct sock *sk, int size, int amt, int kind);= =0D int __sk_mem_schedule(struct sock *sk, int size, int kind);=0D void __sk_mem_reduce_allocated(struct sock *sk, int amount);=0D void __sk_mem_reclaim(struct sock *sk, int amount);=0D # 1535 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long sk_prot_mem_limits(cons= t struct sock *sk, int index)=0D {=0D long val =3D sk->__sk_common.skc_prot->sysctl_mem[index];=0D =0D =0D =0D =0D =0D =0D return val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_mem_pages(int amt)=0D {=0D return (amt + 4096 - 1) >> ( __builtin_constant_p(4096) ? ((4096) < 2 ? 0 = : 63 - __builtin_clzll(4096)) : (sizeof(4096) <=3D 4) ? __ilog2_u32(4096) := __ilog2_u64(4096) );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_has_account(struct s= ock *sk)=0D {=0D =0D return !!sk->__sk_common.skc_prot->memory_allocated;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_wmem_schedule(struct= sock *sk, int size)=0D {=0D if (!sk_has_account(sk))=0D return true;=0D return size <=3D sk->sk_forward_alloc ||=0D __sk_mem_schedule(sk, size, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D sk_rmem_schedule(struct sock *sk, struct sk_buff *skb, int size)=0D {=0D if (!sk_has_account(sk))=0D return true;=0D return size <=3D sk->sk_forward_alloc ||=0D __sk_mem_schedule(sk, size, 1) ||=0D skb_pfmemalloc(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_unused_reserved_mem(c= onst struct sock *sk)=0D {=0D int unused_mem;=0D =0D if (__builtin_expect(!!(!sk->sk_reserved_mem), 1))=0D return 0;=0D =0D unused_mem =3D sk->sk_reserved_mem - sk->sk_wmem_queued -=0D atomic_read(&sk->sk_backlog.rmem_alloc);=0D =0D return unused_mem > 0 ? unused_mem : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_mem_reclaim(struct s= ock *sk)=0D {=0D int reclaimable;=0D =0D if (!sk_has_account(sk))=0D return;=0D =0D reclaimable =3D sk->sk_forward_alloc - sk_unused_reserved_mem(sk);=0D =0D if (reclaimable >=3D 4096)=0D __sk_mem_reclaim(sk, reclaimable);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_mem_reclaim_final(st= ruct sock *sk)=0D {=0D sk->sk_reserved_mem =3D 0;=0D sk_mem_reclaim(sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_mem_reclaim_partial(= struct sock *sk)=0D {=0D int reclaimable;=0D =0D if (!sk_has_account(sk))=0D return;=0D =0D reclaimable =3D sk->sk_forward_alloc - sk_unused_reserved_mem(sk);=0D =0D if (reclaimable > 4096)=0D __sk_mem_reclaim(sk, reclaimable - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_mem_charge(struct so= ck *sk, int size)=0D {=0D if (!sk_has_account(sk))=0D return;=0D sk->sk_forward_alloc -=3D size;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_mem_uncharge(struct = sock *sk, int size)=0D {=0D int reclaimable;=0D =0D if (!sk_has_account(sk))=0D return;=0D sk->sk_forward_alloc +=3D size;=0D reclaimable =3D sk->sk_forward_alloc - sk_unused_reserved_mem(sk);=0D # 1649 "./include/net/sock.h"=0D if (__builtin_expect(!!(reclaimable >=3D (1 << 21)), 0))=0D __sk_mem_reclaim(sk, (1 << 20));=0D }=0D # 1672 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lockdep_sock_is_held(co= nst struct sock *sk)=0D {=0D return lock_is_held(&(&sk->sk_lock)->dep_map) ||=0D lock_is_held(&(&sk->sk_lock.slock)->dep_map);=0D }=0D =0D void lock_sock_nested(struct sock *sk, int subclass);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lock_sock(struct sock *= sk)=0D {=0D lock_sock_nested(sk, 0);=0D }=0D =0D void __lock_sock(struct sock *sk);=0D void __release_sock(struct sock *sk);=0D void release_sock(struct sock *sk);=0D # 1696 "./include/net/sock.h"=0D bool __lock_sock_fast(struct sock *sk) ;=0D # 1711 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lock_sock_fast(struct s= ock *sk)=0D {=0D =0D lock_acquire(&sk->sk_lock.dep_map, 0, 0, 0, 1, ((void *)0), (unsigned long= )__builtin_return_address(0));=0D =0D return __lock_sock_fast(sk);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lock_sock_fast_nested(s= truct sock *sk)=0D {=0D lock_acquire(&sk->sk_lock.dep_map, 1, 0, 0, 1, ((void *)0), (unsigned long= )__builtin_return_address(0));=0D =0D return __lock_sock_fast(sk);=0D }=0D # 1735 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unlock_sock_fast(struct= sock *sk, bool slow)=0D =0D {=0D if (slow) {=0D release_sock(sk);=0D (void)0;=0D } else {=0D lock_release(&sk->sk_lock.dep_map, (unsigned long)__builtin_return_addres= s(0));=0D spin_unlock_bh(&sk->sk_lock.slock);=0D }=0D }=0D # 1761 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_owned_by_me(const = struct sock *sk)=0D {=0D =0D ({ int __ret_warn_on =3D !!(!lockdep_sock_is_held(sk) && debug_locks); if = (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\= t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b -= 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t= " ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/sock.h"), "i" (176= 4), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry)))= ; } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sock_owned_by_user(cons= t struct sock *sk)=0D {=0D sock_owned_by_me(sk);=0D return sk->sk_lock.owned;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sock_owned_by_user_noch= eck(const struct sock *sk)=0D {=0D return sk->sk_lock.owned;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_release_ownership(= struct sock *sk)=0D {=0D if (sock_owned_by_user_nocheck(sk)) {=0D sk->sk_lock.owned =3D 0;=0D =0D =0D lock_release(&sk->sk_lock.dep_map, (unsigned long)__builtin_return_addres= s(0));=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sock_allow_reclassifica= tion(const struct sock *csk)=0D {=0D struct sock *sk =3D (struct sock *)csk;=0D =0D return !sock_owned_by_user_nocheck(sk) &&=0D !spin_is_locked(&sk->sk_lock.slock);=0D }=0D =0D struct sock *sk_alloc(struct net *net, int family, gfp_t priority,=0D struct proto *prot, int kern);=0D void sk_free(struct sock *sk);=0D void sk_destruct(struct sock *sk);=0D struct sock *sk_clone_lock(const struct sock *sk, const gfp_t priority);=0D void sk_free_unlock_clone(struct sock *sk);=0D =0D struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force= ,=0D gfp_t priority);=0D void __sock_wfree(struct sk_buff *skb);=0D void sock_wfree(struct sk_buff *skb);=0D struct sk_buff *sock_omalloc(struct sock *sk, unsigned long size,=0D gfp_t priority);=0D void skb_orphan_partial(struct sk_buff *skb);=0D void sock_rfree(struct sk_buff *skb);=0D void sock_efree(struct sk_buff *skb);=0D =0D void sock_edemux(struct sk_buff *skb);=0D void sock_pfree(struct sk_buff *skb);=0D =0D =0D =0D =0D int sock_setsockopt(struct socket *sock, int level, int op,=0D sockptr_t optval, unsigned int optlen);=0D =0D int sock_getsockopt(struct socket *sock, int level, int op,=0D char *optval, int *optlen);=0D int sock_gettstamp(struct socket *sock, void *userstamp,=0D bool timeval, bool time32);=0D struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size,=0D int noblock, int *errcode);=0D struct sk_buff *sock_alloc_send_pskb(struct sock *sk, unsigned long header_= len,=0D unsigned long data_len, int noblock,=0D int *errcode, int max_page_order);=0D void *sock_kmalloc(struct sock *sk, int size, gfp_t priority);=0D void sock_kfree_s(struct sock *sk, void *mem, int size);=0D void sock_kzfree_s(struct sock *sk, void *mem, int size);=0D void sk_send_sigurg(struct sock *sk);=0D =0D struct sockcm_cookie {=0D u64 transmit_time;=0D u32 mark;=0D u16 tsflags;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sockcm_init(struct sock= cm_cookie *sockc,=0D const struct sock *sk)=0D {=0D *sockc =3D (struct sockcm_cookie) { .tsflags =3D sk->sk_tsflags };=0D }=0D =0D int __sock_cmsg_send(struct sock *sk, struct msghdr *msg, struct cmsghdr *c= msg,=0D struct sockcm_cookie *sockc);=0D int sock_cmsg_send(struct sock *sk, struct msghdr *msg,=0D struct sockcm_cookie *sockc);=0D =0D =0D =0D =0D =0D int sock_no_bind(struct socket *, struct sockaddr *, int);=0D int sock_no_connect(struct socket *, struct sockaddr *, int, int);=0D int sock_no_socketpair(struct socket *, struct socket *);=0D int sock_no_accept(struct socket *, struct socket *, int, bool);=0D int sock_no_getname(struct socket *, struct sockaddr *, int);=0D int sock_no_ioctl(struct socket *, unsigned int, unsigned long);=0D int sock_no_listen(struct socket *, int);=0D int sock_no_shutdown(struct socket *, int);=0D int sock_no_sendmsg(struct socket *, struct msghdr *, size_t);=0D int sock_no_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len)= ;=0D int sock_no_recvmsg(struct socket *, struct msghdr *, size_t, int);=0D int sock_no_mmap(struct file *file, struct socket *sock,=0D struct vm_area_struct *vma);=0D ssize_t sock_no_sendpage(struct socket *sock, struct page *page, int offset= ,=0D size_t size, int flags);=0D ssize_t sock_no_sendpage_locked(struct sock *sk, struct page *page,=0D int offset, size_t size, int flags);=0D =0D =0D =0D =0D =0D int sock_common_getsockopt(struct socket *sock, int level, int optname,=0D char *optval, int *optlen);=0D int sock_common_recvmsg(struct socket *sock, struct msghdr *msg, size_t siz= e,=0D int flags);=0D int sock_common_setsockopt(struct socket *sock, int level, int optname,=0D sockptr_t optval, unsigned int optlen);=0D =0D void sk_common_release(struct sock *sk);=0D =0D =0D =0D =0D =0D =0D void sock_init_data(struct socket *sock, struct sock *sk);=0D # 1923 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_put(struct sock *s= k)=0D {=0D if (refcount_dec_and_test(&sk->__sk_common.skc_refcnt))=0D sk_free(sk);=0D }=0D =0D =0D =0D void sock_gen_put(struct sock *sk);=0D =0D int __sk_receive_skb(struct sock *sk, struct sk_buff *skb, const int nested= ,=0D unsigned int trim_cap, bool refcounted);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_receive_skb(struct so= ck *sk, struct sk_buff *skb,=0D const int nested)=0D {=0D return __sk_receive_skb(sk, skb, nested, 1, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_tx_queue_set(struct = sock *sk, int tx_queue)=0D {=0D =0D if (({ int __ret_warn_on =3D !!((unsigned short)tx_queue >=3D ((unsigned s= hort)~0U)); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __vola= tile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t"= ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".ha= lf" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/soc= k.h"), "i" (1944), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(stru= ct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }))=0D return;=0D sk->__sk_common.skc_tx_queue_mapping =3D tx_queue;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_tx_queue_clear(struc= t sock *sk)=0D {=0D sk->__sk_common.skc_tx_queue_mapping =3D ((unsigned short)~0U);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_tx_queue_get(const st= ruct sock *sk)=0D {=0D if (sk && sk->__sk_common.skc_tx_queue_mapping !=3D ((unsigned short)~0U))= =0D return sk->__sk_common.skc_tx_queue_mapping;=0D =0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __sk_rx_queue_set(struc= t sock *sk,=0D const struct sk_buff *skb,=0D bool force_set)=0D {=0D =0D if (skb_rx_queue_recorded(skb)) {=0D u16 rx_queue =3D skb_get_rx_queue(skb);=0D =0D if (force_set ||=0D __builtin_expect(!!(({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_389(void) ; if (!((sizeof(sk->__sk_common.skc_rx_queu= e_mapping) =3D=3D sizeof(char) || sizeof(sk->__sk_common.skc_rx_queue_mappi= ng) =3D=3D sizeof(short) || sizeof(sk->__sk_common.skc_rx_queue_mapping) = =3D=3D sizeof(int) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D s= izeof(long)) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(= long long))) __compiletime_assert_389(); } while (0); (*(const volatile typ= eof( _Generic((sk->__sk_common.skc_rx_queue_mapping), char: (char)0, unsign= ed char: (unsigned char)0, signed char: (signed char)0, unsigned short: (un= signed short)0, signed short: (signed short)0, unsigned int: (unsigned int)= 0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long:= (signed long)0, unsigned long long: (unsigned long long)0, signed long lon= g: (signed long long)0, default: (sk->__sk_common.skc_rx_queue_mapping))) *= )&(sk->__sk_common.skc_rx_queue_mapping)); }) !=3D rx_queue), 0))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert= _390(void) ; if (!((sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D siz= eof(char) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(sho= rt) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(int) || s= izeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long)) || sizeof(= sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long long))) __compilet= ime_assert_390(); } while (0); do { *(volatile typeof(sk->__sk_common.skc_r= x_queue_mapping) *)&(sk->__sk_common.skc_rx_queue_mapping) =3D (rx_queue); = } while (0); } while (0);=0D }=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_rx_queue_set(struct = sock *sk, const struct sk_buff *skb)=0D {=0D __sk_rx_queue_set(sk, skb, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_rx_queue_update(stru= ct sock *sk, const struct sk_buff *skb)=0D {=0D __sk_rx_queue_set(sk, skb, false);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_rx_queue_clear(struc= t sock *sk)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 91(void) ; if (!((sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeo= f(char) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(short= ) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(int) || siz= eof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long)) || sizeof(sk= ->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long long))) __compiletim= e_assert_391(); } while (0); do { *(volatile typeof(sk->__sk_common.skc_rx_= queue_mapping) *)&(sk->__sk_common.skc_rx_queue_mapping) =3D (((unsigned sh= ort)~0U)); } while (0); } while (0);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_rx_queue_get(const st= ruct sock *sk)=0D {=0D =0D if (sk) {=0D int res =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_392(void) ; if (!((sizeof(sk->__sk_common.skc_rx_queue_mapping) = =3D=3D sizeof(char) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D = sizeof(short) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof= (int) || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long)) = || sizeof(sk->__sk_common.skc_rx_queue_mapping) =3D=3D sizeof(long long))) = __compiletime_assert_392(); } while (0); (*(const volatile typeof( _Generic= ((sk->__sk_common.skc_rx_queue_mapping), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: (sk->__sk_common.skc_rx_queue_mapping))) *)&(sk->__sk_c= ommon.skc_rx_queue_mapping)); });=0D =0D if (res !=3D ((unsigned short)~0U))=0D return res;=0D }=0D =0D =0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_set_socket(struct so= ck *sk, struct socket *sock)=0D {=0D sk->sk_socket =3D sock;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) wait_queue_head_t *sk_sleep(= struct sock *sk)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_393(vo= id) ; if (!(!(__builtin_offsetof(struct socket_wq, wait) !=3D 0))) __compil= etime_assert_393(); } while (0);=0D return &({ typeof(sk->sk_wq) __UNIQUE_ID_rcu394 =3D ({ do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_395(void) ; if (!((sizeof(= sk->sk_wq) =3D=3D sizeof(char) || sizeof(sk->sk_wq) =3D=3D sizeof(short) ||= sizeof(sk->sk_wq) =3D=3D sizeof(int) || sizeof(sk->sk_wq) =3D=3D sizeof(lo= ng)) || sizeof(sk->sk_wq) =3D=3D sizeof(long long))) __compiletime_assert_3= 95(); } while (0); (*(const volatile typeof( _Generic((sk->sk_wq), char: (c= har)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsign= ed short: (unsigned short)0, signed short: (signed short)0, unsigned int: (= unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0,= signed long: (signed long)0, unsigned long long: (unsigned long long)0, si= gned long long: (signed long long)0, default: (sk->sk_wq))) *)&(sk->sk_wq))= ; }); ((typeof(*sk->sk_wq) *)(__UNIQUE_ID_rcu394)); })->wait;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_orphan(struct sock= *sk)=0D {=0D _raw_write_lock_bh(&sk->sk_callback_lock);=0D sock_set_flag(sk, SOCK_DEAD);=0D sk_set_socket(sk, ((void *)0));=0D sk->sk_wq =3D ((void *)0);=0D _raw_write_unlock_bh(&sk->sk_callback_lock);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_graft(struct sock = *sk, struct socket *parent)=0D {=0D ({ int __ret_warn_on =3D !!(parent->sk); if (__builtin_expect(!!(__ret_war= n_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __= bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b"= "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsect= ion" : : "i" ("include/net/sock.h"), "i" (2038), "i" ((1 << 0)|(((9) << 8))= ), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_= warn_on), 0); });=0D _raw_write_lock_bh(&sk->sk_callback_lock);=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(&parent->wq); ; if (__builtin_con= stant_p(&parent->wq) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do = { __attribute__((__noreturn__)) extern void __compiletime_assert_396(void) = ; if (!((sizeof((sk->sk_wq)) =3D=3D sizeof(char) || sizeof((sk->sk_wq)) =3D= =3D sizeof(short) || sizeof((sk->sk_wq)) =3D=3D sizeof(int) || sizeof((sk->= sk_wq)) =3D=3D sizeof(long)) || sizeof((sk->sk_wq)) =3D=3D sizeof(long long= ))) __compiletime_assert_396(); } while (0); do { *(volatile typeof((sk->sk= _wq)) *)&((sk->sk_wq)) =3D ((typeof(sk->sk_wq))(_r_a_p__v)); } while (0); }= while (0); else do { do { } while (0); do { do { __attribute__((__noreturn= __)) extern void __compiletime_assert_397(void) ; if (!((sizeof(*&sk->sk_wq= ) =3D=3D sizeof(char) || sizeof(*&sk->sk_wq) =3D=3D sizeof(short) || sizeof= (*&sk->sk_wq) =3D=3D sizeof(int) || sizeof(*&sk->sk_wq) =3D=3D sizeof(long)= ))) __compiletime_assert_397(); } while (0); __asm__ __volatile__ ("fence "= "rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) exte= rn void __compiletime_assert_398(void) ; if (!((sizeof(*&sk->sk_wq) =3D=3D = sizeof(char) || sizeof(*&sk->sk_wq) =3D=3D sizeof(short) || sizeof(*&sk->sk= _wq) =3D=3D sizeof(int) || sizeof(*&sk->sk_wq) =3D=3D sizeof(long)) || size= of(*&sk->sk_wq) =3D=3D sizeof(long long))) __compiletime_assert_398(); } wh= ile (0); do { *(volatile typeof(*&sk->sk_wq) *)&(*&sk->sk_wq) =3D ((typeof(= *((typeof(sk->sk_wq))_r_a_p__v)) *)((typeof(sk->sk_wq))_r_a_p__v)); } while= (0); } while (0); } while (0); } while (0); } while (0);=0D parent->sk =3D sk;=0D sk_set_socket(sk, parent);=0D sk->sk_uid =3D SOCK_INODE(parent)->i_uid;=0D security_sock_graft(sk, parent);=0D _raw_write_unlock_bh(&sk->sk_callback_lock);=0D }=0D =0D kuid_t sock_i_uid(struct sock *sk);=0D unsigned long sock_i_ino(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t sock_net_uid(const st= ruct net *net, const struct sock *sk)=0D {=0D return sk ? sk->sk_uid : make_kuid(net->user_ns, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 net_tx_rndhash(void)=0D {=0D u32 v =3D prandom_u32();=0D =0D return v ?: 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_set_txhash(struct so= ck *sk)=0D {=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_3= 99(void) ; if (!((sizeof(sk->sk_txhash) =3D=3D sizeof(char) || sizeof(sk->s= k_txhash) =3D=3D sizeof(short) || sizeof(sk->sk_txhash) =3D=3D sizeof(int) = || sizeof(sk->sk_txhash) =3D=3D sizeof(long)) || sizeof(sk->sk_txhash) =3D= =3D sizeof(long long))) __compiletime_assert_399(); } while (0); do { *(vol= atile typeof(sk->sk_txhash) *)&(sk->sk_txhash) =3D (net_tx_rndhash()); } wh= ile (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_rethink_txhash(struc= t sock *sk)=0D {=0D if (sk->sk_txhash && sk->sk_txrehash =3D=3D 1) {=0D sk_set_txhash(sk);=0D return true;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *=0D __sk_dst_get(struct sock *sk)=0D {=0D return ({ typeof(*(sk->sk_dst_cache)) *__UNIQUE_ID_rcu400 =3D (typeof(*(sk= ->sk_dst_cache)) *)({ do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_401(void) ; if (!((sizeof((sk->sk_dst_cache)) =3D=3D sizeof(= char) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(short) || sizeof((sk->sk_= dst_cache)) =3D=3D sizeof(int) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(= long)) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(long long))) __compileti= me_assert_401(); } while (0); (*(const volatile typeof( _Generic(((sk->sk_d= st_cache)), char: (char)0, unsigned char: (unsigned char)0, signed char: (s= igned char)0, unsigned short: (unsigned short)0, signed short: (signed shor= t)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lon= g: (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsi= gned long long)0, signed long long: (signed long long)0, default: ((sk->sk_= dst_cache)))) *)&((sk->sk_dst_cache))); }); do { } while (0 && (!((lockdep_= sock_is_held(sk)) || rcu_read_lock_held()))); ; ((typeof(*(sk->sk_dst_cache= )) *)(__UNIQUE_ID_rcu400)); });=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *=0D sk_dst_get(struct sock *sk)=0D {=0D struct dst_entry *dst;=0D =0D rcu_read_lock();=0D dst =3D ({ typeof(*(sk->sk_dst_cache)) *__UNIQUE_ID_rcu402 =3D (typeof(*(s= k->sk_dst_cache)) *)({ do { __attribute__((__noreturn__)) extern void __com= piletime_assert_403(void) ; if (!((sizeof((sk->sk_dst_cache)) =3D=3D sizeof= (char) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(short) || sizeof((sk->sk= _dst_cache)) =3D=3D sizeof(int) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof= (long)) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(long long))) __compilet= ime_assert_403(); } while (0); (*(const volatile typeof( _Generic(((sk->sk_= dst_cache)), char: (char)0, unsigned char: (unsigned char)0, signed char: (= signed char)0, unsigned short: (unsigned short)0, signed short: (signed sho= rt)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lo= ng: (unsigned long)0, signed long: (signed long)0, unsigned long long: (uns= igned long long)0, signed long long: (signed long long)0, default: ((sk->sk= _dst_cache)))) *)&((sk->sk_dst_cache))); }); do { } while (0 && (!((0) || r= cu_read_lock_held()))); ; ((typeof(*(sk->sk_dst_cache)) *)(__UNIQUE_ID_rcu4= 02)); });=0D if (dst && !atomic_inc_not_zero(&dst->__refcnt))=0D dst =3D ((void *)0);=0D rcu_read_unlock();=0D return dst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __dst_negative_advice(s= truct sock *sk)=0D {=0D struct dst_entry *ndst, *dst =3D __sk_dst_get(sk);=0D =0D if (dst && dst->ops->negative_advice) {=0D ndst =3D dst->ops->negative_advice(dst);=0D =0D if (ndst !=3D dst) {=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(ndst); ; if (__builtin_constant= _p(ndst) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_404(void) ; if (!((siz= eof((sk->sk_dst_cache)) =3D=3D sizeof(char) || sizeof((sk->sk_dst_cache)) = =3D=3D sizeof(short) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(int) || si= zeof((sk->sk_dst_cache)) =3D=3D sizeof(long)) || sizeof((sk->sk_dst_cache))= =3D=3D sizeof(long long))) __compiletime_assert_404(); } while (0); do { *= (volatile typeof((sk->sk_dst_cache)) *)&((sk->sk_dst_cache)) =3D ((typeof(s= k->sk_dst_cache))(_r_a_p__v)); } while (0); } while (0); else do { do { } w= hile (0); do { do { __attribute__((__noreturn__)) extern void __compiletime= _assert_405(void) ; if (!((sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(char) |= | sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(short) || sizeof(*&sk->sk_dst_ca= che) =3D=3D sizeof(int) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(long)))= ) __compiletime_assert_405(); } while (0); __asm__ __volatile__ ("fence " "= rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern= void __compiletime_assert_406(void) ; if (!((sizeof(*&sk->sk_dst_cache) = =3D=3D sizeof(char) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(short) || s= izeof(*&sk->sk_dst_cache) =3D=3D sizeof(int) || sizeof(*&sk->sk_dst_cache) = =3D=3D sizeof(long)) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(long long)= )) __compiletime_assert_406(); } while (0); do { *(volatile typeof(*&sk->sk= _dst_cache) *)&(*&sk->sk_dst_cache) =3D ((typeof(*((typeof(sk->sk_dst_cache= ))_r_a_p__v)) *)((typeof(sk->sk_dst_cache))_r_a_p__v)); } while (0); } whil= e (0); } while (0); } while (0); } while (0);=0D sk_tx_queue_clear(sk);=0D sk->sk_dst_pending_confirm =3D 0;=0D }=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_negative_advice(str= uct sock *sk)=0D {=0D sk_rethink_txhash(sk);=0D __dst_negative_advice(sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __sk_dst_set(struct sock *sk, struct dst_entry *dst)=0D {=0D struct dst_entry *old_dst;=0D =0D sk_tx_queue_clear(sk);=0D sk->sk_dst_pending_confirm =3D 0;=0D old_dst =3D ({ do { } while (0 && (!((lockdep_sock_is_held(sk))))); ; ((ty= peof(*(sk->sk_dst_cache)) *)((sk->sk_dst_cache))); });=0D =0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(dst); ; if (__builtin_constant_p(= dst) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_407(void) ; if (!((sizeof(= (sk->sk_dst_cache)) =3D=3D sizeof(char) || sizeof((sk->sk_dst_cache)) =3D= =3D sizeof(short) || sizeof((sk->sk_dst_cache)) =3D=3D sizeof(int) || sizeo= f((sk->sk_dst_cache)) =3D=3D sizeof(long)) || sizeof((sk->sk_dst_cache)) = =3D=3D sizeof(long long))) __compiletime_assert_407(); } while (0); do { *(= volatile typeof((sk->sk_dst_cache)) *)&((sk->sk_dst_cache)) =3D ((typeof(sk= ->sk_dst_cache))(_r_a_p__v)); } while (0); } while (0); else do { do { } wh= ile (0); do { do { __attribute__((__noreturn__)) extern void __compiletime_= assert_408(void) ; if (!((sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(char) ||= sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(short) || sizeof(*&sk->sk_dst_cac= he) =3D=3D sizeof(int) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(long))))= __compiletime_assert_408(); } while (0); __asm__ __volatile__ ("fence " "r= w" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) extern = void __compiletime_assert_409(void) ; if (!((sizeof(*&sk->sk_dst_cache) =3D= =3D sizeof(char) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(short) || size= of(*&sk->sk_dst_cache) =3D=3D sizeof(int) || sizeof(*&sk->sk_dst_cache) =3D= =3D sizeof(long)) || sizeof(*&sk->sk_dst_cache) =3D=3D sizeof(long long))) = __compiletime_assert_409(); } while (0); do { *(volatile typeof(*&sk->sk_ds= t_cache) *)&(*&sk->sk_dst_cache) =3D ((typeof(*((typeof(sk->sk_dst_cache))_= r_a_p__v)) *)((typeof(sk->sk_dst_cache))_r_a_p__v)); } while (0); } while (= 0); } while (0); } while (0); } while (0);=0D dst_release(old_dst);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D sk_dst_set(struct sock *sk, struct dst_entry *dst)=0D {=0D struct dst_entry *old_dst;=0D =0D sk_tx_queue_clear(sk);=0D sk->sk_dst_pending_confirm =3D 0;=0D old_dst =3D ({ typeof(( struct dst_entry **)&sk->sk_dst_cache) __ai_ptr = =3D (( struct dst_entry **)&sk->sk_dst_cache); do { } while (0); instrument= _atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _x_ = =3D (dst); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D ((= __ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_ptr))) __re= t; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ ( " amoswap.= w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memor= y"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2, %1\n" := "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; default: d= o { __attribute__((__noreturn__)) extern void __compiletime_assert_410(void= ) ; if (!(!(1))) __compiletime_assert_410(); } while (0); } __ret; }); }); = });=0D dst_release(old_dst);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D __sk_dst_reset(struct sock *sk)=0D {=0D __sk_dst_set(sk, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D sk_dst_reset(struct sock *sk)=0D {=0D sk_dst_set(sk, ((void *)0));=0D }=0D =0D struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie);=0D =0D struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_dst_confirm(struct s= ock *sk)=0D {=0D if (!({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_411(void) ; if (!((sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(char)= || sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(short) || sizeof(sk->s= k_dst_pending_confirm) =3D=3D sizeof(int) || sizeof(sk->sk_dst_pending_conf= irm) =3D=3D sizeof(long)) || sizeof(sk->sk_dst_pending_confirm) =3D=3D size= of(long long))) __compiletime_assert_411(); } while (0); (*(const volatile = typeof( _Generic((sk->sk_dst_pending_confirm), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: (sk->sk_dst_pending_confirm))) *)&(sk->sk_dst_pen= ding_confirm)); }))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 412(void) ; if (!((sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(char) |= | sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(short) || sizeof(sk->sk_= dst_pending_confirm) =3D=3D sizeof(int) || sizeof(sk->sk_dst_pending_confir= m) =3D=3D sizeof(long)) || sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof= (long long))) __compiletime_assert_412(); } while (0); do { *(volatile type= of(sk->sk_dst_pending_confirm) *)&(sk->sk_dst_pending_confirm) =3D (1); } w= hile (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_confirm_neigh(stru= ct sk_buff *skb, struct neighbour *n)=0D {=0D if (skb_get_dst_pending_confirm(skb)) {=0D struct sock *sk =3D skb->sk;=0D =0D if (sk && ({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_413(void) ; if (!((sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof= (char) || sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(short) || sizeof= (sk->sk_dst_pending_confirm) =3D=3D sizeof(int) || sizeof(sk->sk_dst_pendin= g_confirm) =3D=3D sizeof(long)) || sizeof(sk->sk_dst_pending_confirm) =3D= =3D sizeof(long long))) __compiletime_assert_413(); } while (0); (*(const v= olatile typeof( _Generic((sk->sk_dst_pending_confirm), char: (char)0, unsig= ned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (u= nsigned short)0, signed short: (signed short)0, unsigned int: (unsigned int= )0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long= : (signed long)0, unsigned long long: (unsigned long long)0, signed long lo= ng: (signed long long)0, default: (sk->sk_dst_pending_confirm))) *)&(sk->sk= _dst_pending_confirm)); }))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert= _414(void) ; if (!((sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(char) = || sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeof(short) || sizeof(sk->sk= _dst_pending_confirm) =3D=3D sizeof(int) || sizeof(sk->sk_dst_pending_confi= rm) =3D=3D sizeof(long)) || sizeof(sk->sk_dst_pending_confirm) =3D=3D sizeo= f(long long))) __compiletime_assert_414(); } while (0); do { *(volatile typ= eof(sk->sk_dst_pending_confirm) *)&(sk->sk_dst_pending_confirm) =3D (0); } = while (0); } while (0);=0D neigh_confirm(n);=0D }=0D }=0D =0D bool sk_mc_loop(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_can_gso(const struct= sock *sk)=0D {=0D return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type);=0D }=0D =0D void sk_setup_caps(struct sock *sk, struct dst_entry *dst);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_gso_disable(struct s= ock *sk)=0D {=0D sk->sk_gso_disabled =3D 1;=0D sk->sk_route_caps &=3D ~(((netdev_features_t)1 << (NETIF_F_GSO_LAST + 1)) = - ((netdev_features_t)1 << (NETIF_F_GSO_SHIFT)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_do_copy_data_nocache= (struct sock *sk, struct sk_buff *skb,=0D struct iov_iter *from, char *to,=0D int copy, int offset)=0D {=0D if (skb->ip_summed =3D=3D 0) {=0D __wsum csum =3D 0;=0D if (!csum_and_copy_from_iter_full(to, copy, &csum, from))=0D return -14;=0D skb->csum =3D csum_block_add(skb->csum, csum, offset);=0D } else if (sk->sk_route_caps & ((netdev_features_t)1 << (NETIF_F_NOCACHE_C= OPY_BIT))) {=0D if (!copy_from_iter_full_nocache(to, copy, from))=0D return -14;=0D } else if (!copy_from_iter_full(to, copy, from))=0D return -14;=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_add_data_nocache(str= uct sock *sk, struct sk_buff *skb,=0D struct iov_iter *from, int copy)=0D {=0D int err, offset =3D skb->len;=0D =0D err =3D skb_do_copy_data_nocache(sk, skb, from, skb_put(skb, copy),=0D copy, offset);=0D if (err)=0D __skb_trim(skb, offset);=0D =0D return err;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_copy_to_page_nocache= (struct sock *sk, struct iov_iter *from,=0D struct sk_buff *skb,=0D struct page *page,=0D int off, int copy)=0D {=0D int err;=0D =0D err =3D skb_do_copy_data_nocache(sk, skb, from, lowmem_page_address(page) = + off,=0D copy, skb->len);=0D if (err)=0D return err;=0D =0D skb->len +=3D copy;=0D skb->data_len +=3D copy;=0D skb->truesize +=3D copy;=0D sk_wmem_queued_add(sk, copy);=0D sk_mem_charge(sk, copy);=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_wmem_alloc_get(const = struct sock *sk)=0D {=0D return refcount_read(&sk->sk_wmem_alloc) - 1;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_rmem_alloc_get(const = struct sock *sk)=0D {=0D return atomic_read(&sk->sk_backlog.rmem_alloc);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_has_allocations(cons= t struct sock *sk)=0D {=0D return sk_wmem_alloc_get(sk) || sk_rmem_alloc_get(sk);=0D }=0D # 2306 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skwq_has_sleeper(struct= socket_wq *wq)=0D {=0D return wq && wq_has_sleeper(&wq->wait);=0D }=0D # 2319 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_poll_wait(struct f= ile *filp, struct socket *sock,=0D poll_table *p)=0D {=0D if (!poll_does_not_wait(p)) {=0D poll_wait(filp, &sock->wq.wait, p);=0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : := "memory"); } while (0);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_hash_from_sk(st= ruct sk_buff *skb, struct sock *sk)=0D {=0D =0D u32 txhash =3D ({ do { __attribute__((__noreturn__)) extern void __compile= time_assert_415(void) ; if (!((sizeof(sk->sk_txhash) =3D=3D sizeof(char) ||= sizeof(sk->sk_txhash) =3D=3D sizeof(short) || sizeof(sk->sk_txhash) =3D=3D= sizeof(int) || sizeof(sk->sk_txhash) =3D=3D sizeof(long)) || sizeof(sk->sk= _txhash) =3D=3D sizeof(long long))) __compiletime_assert_415(); } while (0)= ; (*(const volatile typeof( _Generic((sk->sk_txhash), char: (char)0, unsign= ed char: (unsigned char)0, signed char: (signed char)0, unsigned short: (un= signed short)0, signed short: (signed short)0, unsigned int: (unsigned int)= 0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long:= (signed long)0, unsigned long long: (unsigned long long)0, signed long lon= g: (signed long long)0, default: (sk->sk_txhash))) *)&(sk->sk_txhash)); });= =0D =0D if (txhash) {=0D skb->l4_hash =3D 1;=0D skb->hash =3D txhash;=0D }=0D }=0D =0D void skb_set_owner_w(struct sk_buff *skb, struct sock *sk);=0D # 2354 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_owner_r(struct = sk_buff *skb, struct sock *sk)=0D {=0D skb_orphan(skb);=0D skb->sk =3D sk;=0D skb->destructor =3D sock_rfree;=0D atomic_add(skb->truesize, &sk->sk_backlog.rmem_alloc);=0D sk_mem_charge(sk, skb->truesize);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) bool skb_set_owner_sk_safe(struct sk_buff *skb, struct sock *sk= )=0D {=0D if (sk && refcount_inc_not_zero(&sk->__sk_common.skc_refcnt)) {=0D skb_orphan(skb);=0D skb->destructor =3D sock_efree;=0D skb->sk =3D sk;=0D return true;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_prepare_for_gro(str= uct sk_buff *skb)=0D {=0D if (skb->destructor !=3D sock_wfree) {=0D skb_orphan(skb);=0D return;=0D }=0D skb->slow_gro =3D 1;=0D }=0D =0D void sk_reset_timer(struct sock *sk, struct timer_list *timer,=0D unsigned long expires);=0D =0D void sk_stop_timer(struct sock *sk, struct timer_list *timer);=0D =0D void sk_stop_timer_sync(struct sock *sk, struct timer_list *timer);=0D =0D int __sk_queue_drop_skb(struct sock *sk, struct sk_buff_head *sk_queue,=0D struct sk_buff *skb, unsigned int flags,=0D void (*destructor)(struct sock *sk,=0D struct sk_buff *skb));=0D int __sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);=0D int sock_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);=0D =0D int sock_queue_err_skb(struct sock *sk, struct sk_buff *skb);=0D struct sk_buff *sock_dequeue_err_skb(struct sock *sk);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sock_error(struct sock *= sk)=0D {=0D int err;=0D =0D =0D =0D =0D if (__builtin_expect(!!(({ typeof( _Generic((({ !sk->sk_err; })), char: (c= har)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsign= ed short: (unsigned short)0, signed short: (signed short)0, unsigned int: (= unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0,= signed long: (signed long)0, unsigned long long: (unsigned long long)0, si= gned long long: (signed long long)0, default: (({ !sk->sk_err; })))) __v = =3D ({ __kcsan_disable_current(); !sk->sk_err; }); __kcsan_enable_current()= ; __v; })), 1))=0D return 0;=0D =0D err =3D ({ typeof(&sk->sk_err) __ai_ptr =3D (&sk->sk_err); do { } while (0= ); instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__= ai_ptr)) _x_ =3D (0); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) _= _ptr =3D ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_= ptr))) __ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ (= " amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__ne= w) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, = %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break;= default: do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_416(void) ; if (!(!(1))) __compiletime_assert_416(); } while (0); } __re= t; }); }); });=0D return -err;=0D }=0D =0D void sk_error_report(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long sock_wspace(st= ruct sock *sk)=0D {=0D int amt =3D 0;=0D =0D if (!(sk->sk_shutdown & 2)) {=0D amt =3D sk->sk_sndbuf - refcount_read(&sk->sk_wmem_alloc);=0D if (amt < 0)=0D amt =3D 0;=0D }=0D return amt;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_set_bit(int nr, stru= ct sock *sk)=0D {=0D if ((nr =3D=3D 0 || nr =3D=3D 1) &&=0D !sock_flag(sk, SOCK_FASYNC))=0D return;=0D =0D set_bit(nr, &sk->sk_wq_raw->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_clear_bit(int nr, st= ruct sock *sk)=0D {=0D if ((nr =3D=3D 0 || nr =3D=3D 1) &&=0D !sock_flag(sk, SOCK_FASYNC))=0D return;=0D =0D clear_bit(nr, &sk->sk_wq_raw->flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_wake_async(const str= uct sock *sk, int how, int band)=0D {=0D if (sock_flag(sk, SOCK_FASYNC)) {=0D rcu_read_lock();=0D sock_wake_async(({ typeof(*(sk->sk_wq)) *__UNIQUE_ID_rcu417 =3D (typeof(*= (sk->sk_wq)) *)({ do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_418(void) ; if (!((sizeof((sk->sk_wq)) =3D=3D sizeof(char) || si= zeof((sk->sk_wq)) =3D=3D sizeof(short) || sizeof((sk->sk_wq)) =3D=3D sizeof= (int) || sizeof((sk->sk_wq)) =3D=3D sizeof(long)) || sizeof((sk->sk_wq)) = =3D=3D sizeof(long long))) __compiletime_assert_418(); } while (0); (*(cons= t volatile typeof( _Generic(((sk->sk_wq)), char: (char)0, unsigned char: (u= nsigned char)0, signed char: (signed char)0, unsigned short: (unsigned shor= t)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed i= nt: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lo= ng)0, unsigned long long: (unsigned long long)0, signed long long: (signed = long long)0, default: ((sk->sk_wq)))) *)&((sk->sk_wq))); }); do { } while (= 0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(sk->sk_wq)) *)(__UNIQU= E_ID_rcu417)); }), how, band);=0D rcu_read_unlock();=0D }=0D }=0D # 2473 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_stream_moderate_sndb= uf(struct sock *sk)=0D {=0D u32 val;=0D =0D if (sk->sk_userlocks & 1)=0D return;=0D =0D val =3D __builtin_choose_expr(((!!(sizeof((typeof(sk->sk_sndbuf) *)1 =3D= =3D (typeof(sk->sk_wmem_queued >> 1) *)1))) && ((sizeof(int) =3D=3D sizeof(= *(8 ? ((void *)((long)(sk->sk_sndbuf) * 0l)) : (int *)8))) && (sizeof(int) = =3D=3D sizeof(*(8 ? ((void *)((long)(sk->sk_wmem_queued >> 1) * 0l)) : (int= *)8))))), ((sk->sk_sndbuf) < (sk->sk_wmem_queued >> 1) ? (sk->sk_sndbuf) := (sk->sk_wmem_queued >> 1)), ({ typeof(sk->sk_sndbuf) __UNIQUE_ID___x419 = =3D (sk->sk_sndbuf); typeof(sk->sk_wmem_queued >> 1) __UNIQUE_ID___y420 =3D= (sk->sk_wmem_queued >> 1); ((__UNIQUE_ID___x419) < (__UNIQUE_ID___y420) ? = (__UNIQUE_ID___x419) : (__UNIQUE_ID___y420)); }));=0D val =3D __builtin_choose_expr(((!!(sizeof((typeof((u32)(val)) *)1 =3D=3D (= typeof((u32)(sk_unused_reserved_mem(sk))) *)1))) && ((sizeof(int) =3D=3D si= zeof(*(8 ? ((void *)((long)((u32)(val)) * 0l)) : (int *)8))) && (sizeof(int= ) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(sk_unused_reserved_mem(sk))) *= 0l)) : (int *)8))))), (((u32)(val)) > ((u32)(sk_unused_reserved_mem(sk))) = ? ((u32)(val)) : ((u32)(sk_unused_reserved_mem(sk)))), ({ typeof((u32)(val)= ) __UNIQUE_ID___x421 =3D ((u32)(val)); typeof((u32)(sk_unused_reserved_mem(= sk))) __UNIQUE_ID___y422 =3D ((u32)(sk_unused_reserved_mem(sk))); ((__UNIQU= E_ID___x421) > (__UNIQUE_ID___y422) ? (__UNIQUE_ID___x421) : (__UNIQUE_ID__= _y422)); }));=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 25(void) ; if (!((sizeof(sk->sk_sndbuf) =3D=3D sizeof(char) || sizeof(sk->s= k_sndbuf) =3D=3D sizeof(short) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(int) = || sizeof(sk->sk_sndbuf) =3D=3D sizeof(long)) || sizeof(sk->sk_sndbuf) =3D= =3D sizeof(long long))) __compiletime_assert_425(); } while (0); do { *(vol= atile typeof(sk->sk_sndbuf) *)&(sk->sk_sndbuf) =3D (__builtin_choose_expr((= (!!(sizeof((typeof((u32)(val)) *)1 =3D=3D (typeof((u32)(((2048 + ((((sizeof= (struct sk_buff))) + ((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1)) = & ~((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1))) * 2))) *)1))) && = ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(val)) * 0l)) : (in= t *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(((2048 = + ((((sizeof(struct sk_buff))) + ((typeof((sizeof(struct sk_buff))))(((1 <<= 6))) - 1)) & ~((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1))) * 2))= ) * 0l)) : (int *)8))))), (((u32)(val)) > ((u32)(((2048 + ((((sizeof(struct= sk_buff))) + ((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1)) & ~((ty= peof((sizeof(struct sk_buff))))(((1 << 6))) - 1))) * 2))) ? ((u32)(val)) : = ((u32)(((2048 + ((((sizeof(struct sk_buff))) + ((typeof((sizeof(struct sk_b= uff))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct sk_buff))))(((1 << 6))= ) - 1))) * 2)))), ({ typeof((u32)(val)) __UNIQUE_ID___x423 =3D ((u32)(val))= ; typeof((u32)(((2048 + ((((sizeof(struct sk_buff))) + ((typeof((sizeof(str= uct sk_buff))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct sk_buff))))(((= 1 << 6))) - 1))) * 2))) __UNIQUE_ID___y424 =3D ((u32)(((2048 + ((((sizeof(s= truct sk_buff))) + ((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1)) & = ~((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1))) * 2))); ((__UNIQUE_= ID___x423) > (__UNIQUE_ID___y424) ? (__UNIQUE_ID___x423) : (__UNIQUE_ID___y= 424)); }))); } while (0); } while (0);=0D }=0D # 2503 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct page_frag *sk_page_fr= ag(struct sock *sk)=0D {=0D if ((sk->sk_allocation & ((( gfp_t)0x400u) | (( gfp_t)0x20000u) | (( gfp_t= )0x80u))) =3D=3D=0D ((( gfp_t)0x400u) | (( gfp_t)0x80u)))=0D return &get_current()->task_frag;=0D =0D return &sk->sk_frag;=0D }=0D =0D bool sk_page_frag_refill(struct sock *sk, struct page_frag *pfrag);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sock_writeable(const st= ruct sock *sk)=0D {=0D return refcount_read(&sk->sk_wmem_alloc) < (({ do { __attribute__((__noret= urn__)) extern void __compiletime_assert_426(void) ; if (!((sizeof(sk->sk_s= ndbuf) =3D=3D sizeof(char) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(short) ||= sizeof(sk->sk_sndbuf) =3D=3D sizeof(int) || sizeof(sk->sk_sndbuf) =3D=3D s= izeof(long)) || sizeof(sk->sk_sndbuf) =3D=3D sizeof(long long))) __compilet= ime_assert_426(); } while (0); (*(const volatile typeof( _Generic((sk->sk_s= ndbuf), char: (char)0, unsigned char: (unsigned char)0, signed char: (signe= d char)0, unsigned short: (unsigned short)0, signed short: (signed short)0,= unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (= unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned= long long)0, signed long long: (signed long long)0, default: (sk->sk_sndbu= f))) *)&(sk->sk_sndbuf)); }) >> 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gfp_t gfp_any(void)=0D {=0D return ((preempt_count() & (((1UL << (8))-1) << (0 + 8)))) ? ((( gfp_t)0x2= 0u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)) : ((( gfp_t)(0x400u|0x800u)) | (( gf= p_t)0x40u) | (( gfp_t)0x80u));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gfp_t gfp_memcg_charge(void)= =0D {=0D return ((preempt_count() & (((1UL << (8))-1) << (0 + 8)))) ? ((( gfp_t)0x8= 00u)) : ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long sock_rcvtimeo(const str= uct sock *sk, bool noblock)=0D {=0D return noblock ? 0 : sk->sk_rcvtimeo;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long sock_sndtimeo(const str= uct sock *sk, bool noblock)=0D {=0D return noblock ? 0 : sk->sk_sndtimeo;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sock_rcvlowat(const stru= ct sock *sk, int waitall, int len)=0D {=0D int v =3D waitall ? len : __builtin_choose_expr(((!!(sizeof((typeof((int)(= ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_427(= void) ; if (!((sizeof(sk->sk_rcvlowat) =3D=3D sizeof(char) || sizeof(sk->sk= _rcvlowat) =3D=3D sizeof(short) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(in= t) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long)) || sizeof(sk->sk_rcvlowa= t) =3D=3D sizeof(long long))) __compiletime_assert_427(); } while (0); (*(c= onst volatile typeof( _Generic((sk->sk_rcvlowat), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: (sk->sk_rcvlowat))) *)&(sk->sk_rcvlowat)); }))= ) *)1 =3D=3D (typeof((int)(len)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 = ? ((void *)((long)((int)(({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_427(void) ; if (!((sizeof(sk->sk_rcvlowat) =3D=3D size= of(char) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(short) || sizeof(sk->sk_r= cvlowat) =3D=3D sizeof(int) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long))= || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long long))) __compiletime_assert= _427(); } while (0); (*(const volatile typeof( _Generic((sk->sk_rcvlowat), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (sk->sk_rcvlowat))) *= )&(sk->sk_rcvlowat)); }))) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D size= of(*(8 ? ((void *)((long)((int)(len)) * 0l)) : (int *)8))))), (((int)(({ do= { __attribute__((__noreturn__)) extern void __compiletime_assert_427(void)= ; if (!((sizeof(sk->sk_rcvlowat) =3D=3D sizeof(char) || sizeof(sk->sk_rcvl= owat) =3D=3D sizeof(short) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(int) ||= sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long)) || sizeof(sk->sk_rcvlowat) = =3D=3D sizeof(long long))) __compiletime_assert_427(); } while (0); (*(cons= t volatile typeof( _Generic((sk->sk_rcvlowat), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: (sk->sk_rcvlowat))) *)&(sk->sk_rcvlowat)); }))) <= ((int)(len)) ? ((int)(({ do { __attribute__((__noreturn__)) extern void __= compiletime_assert_427(void) ; if (!((sizeof(sk->sk_rcvlowat) =3D=3D sizeof= (char) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(short) || sizeof(sk->sk_rcv= lowat) =3D=3D sizeof(int) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long)) |= | sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long long))) __compiletime_assert_4= 27(); } while (0); (*(const volatile typeof( _Generic((sk->sk_rcvlowat), ch= ar: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, = unsigned short: (unsigned short)0, signed short: (signed short)0, unsigned = int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned l= ong)0, signed long: (signed long)0, unsigned long long: (unsigned long long= )0, signed long long: (signed long long)0, default: (sk->sk_rcvlowat))) *)&= (sk->sk_rcvlowat)); }))) : ((int)(len))), ({ typeof((int)(({ do { __attribu= te__((__noreturn__)) extern void __compiletime_assert_427(void) ; if (!((si= zeof(sk->sk_rcvlowat) =3D=3D sizeof(char) || sizeof(sk->sk_rcvlowat) =3D=3D= sizeof(short) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(int) || sizeof(sk->= sk_rcvlowat) =3D=3D sizeof(long)) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(= long long))) __compiletime_assert_427(); } while (0); (*(const volatile typ= eof( _Generic((sk->sk_rcvlowat), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: (sk->sk_rcvlowat))) *)&(sk->sk_rcvlowat)); }))) __UNIQUE_ID___x= 428 =3D ((int)(({ do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_427(void) ; if (!((sizeof(sk->sk_rcvlowat) =3D=3D sizeof(char) |= | sizeof(sk->sk_rcvlowat) =3D=3D sizeof(short) || sizeof(sk->sk_rcvlowat) = =3D=3D sizeof(int) || sizeof(sk->sk_rcvlowat) =3D=3D sizeof(long)) || sizeo= f(sk->sk_rcvlowat) =3D=3D sizeof(long long))) __compiletime_assert_427(); }= while (0); (*(const volatile typeof( _Generic((sk->sk_rcvlowat), char: (ch= ar)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigne= d short: (unsigned short)0, signed short: (signed short)0, unsigned int: (u= nsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, = signed long: (signed long)0, unsigned long long: (unsigned long long)0, sig= ned long long: (signed long long)0, default: (sk->sk_rcvlowat))) *)&(sk->sk= _rcvlowat)); }))); typeof((int)(len)) __UNIQUE_ID___y429 =3D ((int)(len)); = ((__UNIQUE_ID___x428) < (__UNIQUE_ID___y429) ? (__UNIQUE_ID___x428) : (__UN= IQUE_ID___y429)); }));=0D =0D return v ?: 1;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sock_intr_errno(long tim= eo)=0D {=0D return timeo =3D=3D ((long)(~0UL >> 1)) ? -512 : -4;=0D }=0D =0D struct sock_skb_cb {=0D u32 dropcount;=0D };=0D # 2574 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D sock_skb_set_dropcount(const struct sock *sk, struct sk_buff *skb)=0D {=0D ((struct sock_skb_cb *)((skb)->cb + ((sizeof((((struct sk_buff *)0)->cb)) = - sizeof(struct sock_skb_cb)))))->dropcount =3D sock_flag(sk, SOCK_RXQ_OVFL= ) ?=0D atomic_read(&sk->sk_drops) : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_drops_add(struct soc= k *sk, const struct sk_buff *skb)=0D {=0D int segs =3D __builtin_choose_expr(((!!(sizeof((typeof((u16)(1)) *)1 =3D= =3D (typeof((u16)(((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_s= egs)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u16)(1)= ) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)= ((u16)(((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs)) * 0l)= ) : (int *)8))))), (((u16)(1)) > ((u16)(((struct skb_shared_info *)(skb_end= _pointer(skb)))->gso_segs)) ? ((u16)(1)) : ((u16)(((struct skb_shared_info = *)(skb_end_pointer(skb)))->gso_segs))), ({ typeof((u16)(1)) __UNIQUE_ID___x= 430 =3D ((u16)(1)); typeof((u16)(((struct skb_shared_info *)(skb_end_pointe= r(skb)))->gso_segs)) __UNIQUE_ID___y431 =3D ((u16)(((struct skb_shared_info= *)(skb_end_pointer(skb)))->gso_segs)); ((__UNIQUE_ID___x430) > (__UNIQUE_I= D___y431) ? (__UNIQUE_ID___x430) : (__UNIQUE_ID___y431)); }));=0D =0D atomic_add(segs, &sk->sk_drops);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ktime_t sock_read_timestamp(= struct sock *sk)=0D {=0D # 2601 "./include/net/sock.h"=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_432(void) ; if (!((sizeof(sk->sk_stamp) =3D=3D sizeof(char) || sizeof(s= k->sk_stamp) =3D=3D sizeof(short) || sizeof(sk->sk_stamp) =3D=3D sizeof(int= ) || sizeof(sk->sk_stamp) =3D=3D sizeof(long)) || sizeof(sk->sk_stamp) =3D= =3D sizeof(long long))) __compiletime_assert_432(); } while (0); (*(const v= olatile typeof( _Generic((sk->sk_stamp), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: (sk->sk_stamp))) *)&(sk->sk_stamp)); });=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_write_timestamp(st= ruct sock *sk, ktime_t kt)=0D {=0D =0D =0D =0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 33(void) ; if (!((sizeof(sk->sk_stamp) =3D=3D sizeof(char) || sizeof(sk->sk= _stamp) =3D=3D sizeof(short) || sizeof(sk->sk_stamp) =3D=3D sizeof(int) || = sizeof(sk->sk_stamp) =3D=3D sizeof(long)) || sizeof(sk->sk_stamp) =3D=3D si= zeof(long long))) __compiletime_assert_433(); } while (0); do { *(volatile = typeof(sk->sk_stamp) *)&(sk->sk_stamp) =3D (kt); } while (0); } while (0);= =0D =0D }=0D =0D void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,=0D struct sk_buff *skb);=0D void __sock_recv_wifi_status(struct msghdr *msg, struct sock *sk,=0D struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D sock_recv_timestamp(struct msghdr *msg, struct sock *sk, struct sk_buff *sk= b)=0D {=0D ktime_t kt =3D skb->tstamp;=0D struct skb_shared_hwtstamps *hwtstamps =3D skb_hwtstamps(skb);=0D =0D =0D =0D =0D =0D =0D =0D if (sock_flag(sk, SOCK_RCVTSTAMP) ||=0D (sk->sk_tsflags & SOF_TIMESTAMPING_RX_SOFTWARE) ||=0D (kt && sk->sk_tsflags & SOF_TIMESTAMPING_SOFTWARE) ||=0D (hwtstamps->hwtstamp &&=0D (sk->sk_tsflags & SOF_TIMESTAMPING_RAW_HARDWARE)))=0D __sock_recv_timestamp(msg, sk, skb);=0D else=0D sock_write_timestamp(sk, kt);=0D =0D if (sock_flag(sk, SOCK_WIFI_STATUS) && skb->wifi_acked_valid)=0D __sock_recv_wifi_status(msg, sk, skb);=0D }=0D =0D void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,=0D struct sk_buff *skb);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_recv_ts_and_drops(= struct msghdr *msg, struct sock *sk,=0D struct sk_buff *skb)=0D {=0D =0D =0D =0D =0D =0D if (sk->__sk_common.skc_flags & ((1UL << SOCK_RXQ_OVFL) | (1UL << SOCK_RCV= TSTAMP)) || sk->sk_tsflags & (SOF_TIMESTAMPING_SOFTWARE | SOF_TIMESTAMPING_= RAW_HARDWARE))=0D __sock_recv_ts_and_drops(msg, sk, skb);=0D else if (__builtin_expect(!!(sock_flag(sk, SOCK_TIMESTAMP)), 0))=0D sock_write_timestamp(sk, skb->tstamp);=0D else if (__builtin_expect(!!(sk->sk_stamp =3D=3D (-1L * 1000000000L)), 0))= =0D sock_write_timestamp(sk, 0);=0D }=0D =0D void __sock_tx_timestamp(__u16 tsflags, __u8 *tx_flags);=0D # 2677 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void _sock_tx_timestamp(stru= ct sock *sk, __u16 tsflags,=0D __u8 *tx_flags, __u32 *tskey)=0D {=0D if (__builtin_expect(!!(tsflags), 0)) {=0D __sock_tx_timestamp(tsflags, tx_flags);=0D if (tsflags & SOF_TIMESTAMPING_OPT_ID && tskey &&=0D tsflags & (SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_TX_SOFTWAR= E | SOF_TIMESTAMPING_TX_SCHED | SOF_TIMESTAMPING_TX_ACK))=0D *tskey =3D atomic_inc_return(&sk->sk_tskey) - 1;=0D }=0D if (__builtin_expect(!!(sock_flag(sk, SOCK_WIFI_STATUS)), 0))=0D *tx_flags |=3D SKBTX_WIFI_STATUS;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sock_tx_timestamp(struc= t sock *sk, __u16 tsflags,=0D __u8 *tx_flags)=0D {=0D _sock_tx_timestamp(sk, tsflags, tx_flags, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_setup_tx_timestamp(= struct sk_buff *skb, __u16 tsflags)=0D {=0D _sock_tx_timestamp(skb->sk, tsflags, &((struct skb_shared_info *)(skb_end_= pointer(skb)))->tx_flags,=0D &((struct skb_shared_info *)(skb_end_pointer(skb)))->tskey);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_is_tcp(const struct = sock *sk)=0D {=0D return sk->sk_type =3D=3D SOCK_STREAM && sk->sk_protocol =3D=3D IPPROTO_TC= P;=0D }=0D # 2715 "./include/net/sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_eat_skb(struct sock = *sk, struct sk_buff *skb)=0D {=0D __skb_unlink(skb, &sk->sk_receive_queue);=0D __kfree_skb(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D skb_sk_is_prefetched(struct sk_buff *skb)=0D {=0D =0D return skb->destructor =3D=3D sock_pfree;=0D =0D =0D =0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_fullsock(const struc= t sock *sk)=0D {=0D return (1 << sk->__sk_common.skc_state) & ~(TCPF_TIME_WAIT | TCPF_NEW_SYN_= RECV);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D sk_is_refcounted(struct sock *sk)=0D {=0D =0D return !sk_fullsock(sk) || !sock_flag(sk, SOCK_RCU_FREE);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *=0D skb_steal_sock(struct sk_buff *skb, bool *refcounted)=0D {=0D if (skb->sk) {=0D struct sock *sk =3D skb->sk;=0D =0D *refcounted =3D true;=0D if (skb_sk_is_prefetched(skb))=0D *refcounted =3D sk_is_refcounted(sk);=0D skb->destructor =3D ((void *)0);=0D skb->sk =3D ((void *)0);=0D return sk;=0D }=0D *refcounted =3D false;=0D return ((void *)0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *sk_validate_= xmit_skb(struct sk_buff *skb,=0D struct net_device *dev)=0D {=0D # 2789 "./include/net/sock.h"=0D return skb;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_listener(const struc= t sock *sk)=0D {=0D return (1 << sk->__sk_common.skc_state) & (TCPF_LISTEN | TCPF_NEW_SYN_RECV= );=0D }=0D =0D void sock_enable_timestamp(struct sock *sk, enum sock_flags flag);=0D int sock_recv_errqueue(struct sock *sk, struct msghdr *msg, int len, int le= vel,=0D int type);=0D =0D bool sk_ns_capable(const struct sock *sk,=0D struct user_namespace *user_ns, int cap);=0D bool sk_capable(const struct sock *sk, int cap);=0D bool sk_net_capable(const struct sock *sk, int cap);=0D =0D void sk_get_meminfo(const struct sock *sk, u32 *meminfo);=0D # 2821 "./include/net/sock.h"=0D extern __u32 sysctl_wmem_max;=0D extern __u32 sysctl_rmem_max;=0D =0D extern int sysctl_tstamp_allow_data;=0D extern int sysctl_optmem_max;=0D =0D extern __u32 sysctl_wmem_default;=0D extern __u32 sysctl_rmem_default;=0D =0D =0D extern struct static_key_false net_high_order_alloc_disable_key;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_get_wmem0(const struc= t sock *sk, const struct proto *proto)=0D {=0D =0D if (proto->sysctl_wmem_offset)=0D return *(int *)((void *)sock_net(sk) + proto->sysctl_wmem_offset);=0D =0D return *proto->sysctl_wmem;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_get_rmem0(const struc= t sock *sk, const struct proto *proto)=0D {=0D =0D if (proto->sysctl_rmem_offset)=0D return *(int *)((void *)sock_net(sk) + proto->sysctl_rmem_offset);=0D =0D return *proto->sysctl_rmem;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_pacing_shift_update(= struct sock *sk, int val)=0D {=0D if (!sk || !sk_fullsock(sk) || ({ do { __attribute__((__noreturn__)) exter= n void __compiletime_assert_434(void) ; if (!((sizeof(sk->sk_pacing_shift) = =3D=3D sizeof(char) || sizeof(sk->sk_pacing_shift) =3D=3D sizeof(short) || = sizeof(sk->sk_pacing_shift) =3D=3D sizeof(int) || sizeof(sk->sk_pacing_shif= t) =3D=3D sizeof(long)) || sizeof(sk->sk_pacing_shift) =3D=3D sizeof(long l= ong))) __compiletime_assert_434(); } while (0); (*(const volatile typeof( _= Generic((sk->sk_pacing_shift), char: (char)0, unsigned char: (unsigned char= )0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed = short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed = int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsign= ed long long: (unsigned long long)0, signed long long: (signed long long)0,= default: (sk->sk_pacing_shift))) *)&(sk->sk_pacing_shift)); }) =3D=3D val)= =0D return;=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_4= 35(void) ; if (!((sizeof(sk->sk_pacing_shift) =3D=3D sizeof(char) || sizeof= (sk->sk_pacing_shift) =3D=3D sizeof(short) || sizeof(sk->sk_pacing_shift) = =3D=3D sizeof(int) || sizeof(sk->sk_pacing_shift) =3D=3D sizeof(long)) || s= izeof(sk->sk_pacing_shift) =3D=3D sizeof(long long))) __compiletime_assert_= 435(); } while (0); do { *(volatile typeof(sk->sk_pacing_shift) *)&(sk->sk_= pacing_shift) =3D (val); } while (0); } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_dev_equal_l3scope(st= ruct sock *sk, int dif)=0D {=0D int mdif;=0D =0D if (!sk->__sk_common.skc_bound_dev_if || sk->__sk_common.skc_bound_dev_if = =3D=3D dif)=0D return true;=0D =0D mdif =3D l3mdev_master_ifindex_by_index(sock_net(sk), dif);=0D if (mdif && mdif =3D=3D sk->__sk_common.skc_bound_dev_if)=0D return true;=0D =0D return false;=0D }=0D =0D void sock_def_readable(struct sock *sk);=0D =0D int sock_bindtoindex(struct sock *sk, int ifindex, bool lock_sk);=0D void sock_set_timestamp(struct sock *sk, int optname, bool valbool);=0D int sock_set_timestamping(struct sock *sk, int optname,=0D struct so_timestamping timestamping);=0D =0D void sock_enable_timestamps(struct sock *sk);=0D void sock_no_linger(struct sock *sk);=0D void sock_set_keepalive(struct sock *sk);=0D void sock_set_priority(struct sock *sk, u32 priority);=0D void sock_set_rcvbuf(struct sock *sk, int val);=0D void sock_set_mark(struct sock *sk, u32 val);=0D void sock_set_reuseaddr(struct sock *sk);=0D void sock_set_reuseport(struct sock *sk);=0D void sock_set_sndtimeo(struct sock *sk, s64 secs);=0D =0D int sock_bind_add(struct sock *sk, struct sockaddr *addr, int addr_len);=0D =0D int sock_get_timeout(long timeo, void *optval, bool old_timeval);=0D int sock_copy_user_timeval(struct __kernel_sock_timeval *tv,=0D sockptr_t optval, int optlen, bool old_timeval);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_is_readable(struct s= ock *sk)=0D {=0D if (sk->__sk_common.skc_prot->sock_is_readable)=0D return sk->__sk_common.skc_prot->sock_is_readable(sk);=0D return false;=0D }=0D # 9 "./include/linux/mroute_base.h" 2=0D =0D # 1 "./include/net/ip_fib.h" 1=0D # 20 "./include/net/ip_fib.h"=0D # 1 "./include/net/inet_dscp.h" 1=0D # 38 "./include/net/inet_dscp.h"=0D typedef u8 dscp_t;=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dscp_t inet_dsfield_to_dscp(= __u8 dsfield)=0D {=0D return ( dscp_t)(dsfield & 0xfc);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 inet_dscp_to_dsfield(ds= cp_t dscp)=0D {=0D return ( __u8)dscp;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_validate_dscp(__u8= val)=0D {=0D return !(val & ~0xfc);=0D }=0D # 21 "./include/net/ip_fib.h" 2=0D # 1 "./include/net/inetpeer.h" 1=0D # 16 "./include/net/inetpeer.h"=0D # 1 "./include/net/ipv6.h" 1=0D # 12 "./include/net/ipv6.h"=0D # 1 "./include/linux/ipv6.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/ipv6.h" 1=0D # 21 "./include/uapi/linux/ipv6.h"=0D struct in6_pktinfo {=0D struct in6_addr ipi6_addr;=0D int ipi6_ifindex;=0D };=0D =0D =0D =0D struct ip6_mtuinfo {=0D struct sockaddr_in6 ip6m_addr;=0D __u32 ip6m_mtu;=0D };=0D =0D =0D struct in6_ifreq {=0D struct in6_addr ifr6_addr;=0D __u32 ifr6_prefixlen;=0D int ifr6_ifindex;=0D };=0D # 49 "./include/uapi/linux/ipv6.h"=0D struct ipv6_rt_hdr {=0D __u8 nexthdr;=0D __u8 hdrlen;=0D __u8 type;=0D __u8 segments_left;=0D =0D =0D =0D =0D =0D };=0D =0D =0D struct ipv6_opt_hdr {=0D __u8 nexthdr;=0D __u8 hdrlen;=0D =0D =0D =0D } __attribute__((packed));=0D # 80 "./include/uapi/linux/ipv6.h"=0D struct rt0_hdr {=0D struct ipv6_rt_hdr rt_hdr;=0D __u32 reserved;=0D struct in6_addr addr[0];=0D =0D =0D };=0D =0D =0D =0D =0D =0D struct rt2_hdr {=0D struct ipv6_rt_hdr rt_hdr;=0D __u32 reserved;=0D struct in6_addr addr;=0D =0D =0D };=0D =0D =0D =0D =0D =0D struct ipv6_destopt_hao {=0D __u8 type;=0D __u8 length;=0D struct in6_addr addr;=0D } __attribute__((packed));=0D # 117 "./include/uapi/linux/ipv6.h"=0D struct ipv6hdr {=0D =0D __u8 priority:4,=0D version:4;=0D =0D =0D =0D =0D =0D =0D __u8 flow_lbl[3];=0D =0D __be16 payload_len;=0D __u8 nexthdr;=0D __u8 hop_limit;=0D =0D struct in6_addr saddr;=0D struct in6_addr daddr;=0D };=0D =0D =0D =0D enum {=0D DEVCONF_FORWARDING =3D 0,=0D DEVCONF_HOPLIMIT,=0D DEVCONF_MTU6,=0D DEVCONF_ACCEPT_RA,=0D DEVCONF_ACCEPT_REDIRECTS,=0D DEVCONF_AUTOCONF,=0D DEVCONF_DAD_TRANSMITS,=0D DEVCONF_RTR_SOLICITS,=0D DEVCONF_RTR_SOLICIT_INTERVAL,=0D DEVCONF_RTR_SOLICIT_DELAY,=0D DEVCONF_USE_TEMPADDR,=0D DEVCONF_TEMP_VALID_LFT,=0D DEVCONF_TEMP_PREFERED_LFT,=0D DEVCONF_REGEN_MAX_RETRY,=0D DEVCONF_MAX_DESYNC_FACTOR,=0D DEVCONF_MAX_ADDRESSES,=0D DEVCONF_FORCE_MLD_VERSION,=0D DEVCONF_ACCEPT_RA_DEFRTR,=0D DEVCONF_ACCEPT_RA_PINFO,=0D DEVCONF_ACCEPT_RA_RTR_PREF,=0D DEVCONF_RTR_PROBE_INTERVAL,=0D DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,=0D DEVCONF_PROXY_NDP,=0D DEVCONF_OPTIMISTIC_DAD,=0D DEVCONF_ACCEPT_SOURCE_ROUTE,=0D DEVCONF_MC_FORWARDING,=0D DEVCONF_DISABLE_IPV6,=0D DEVCONF_ACCEPT_DAD,=0D DEVCONF_FORCE_TLLAO,=0D DEVCONF_NDISC_NOTIFY,=0D DEVCONF_MLDV1_UNSOLICITED_REPORT_INTERVAL,=0D DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,=0D DEVCONF_SUPPRESS_FRAG_NDISC,=0D DEVCONF_ACCEPT_RA_FROM_LOCAL,=0D DEVCONF_USE_OPTIMISTIC,=0D DEVCONF_ACCEPT_RA_MTU,=0D DEVCONF_STABLE_SECRET,=0D DEVCONF_USE_OIF_ADDRS_ONLY,=0D DEVCONF_ACCEPT_RA_MIN_HOP_LIMIT,=0D DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,=0D DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,=0D DEVCONF_DROP_UNSOLICITED_NA,=0D DEVCONF_KEEP_ADDR_ON_DOWN,=0D DEVCONF_RTR_SOLICIT_MAX_INTERVAL,=0D DEVCONF_SEG6_ENABLED,=0D DEVCONF_SEG6_REQUIRE_HMAC,=0D DEVCONF_ENHANCED_DAD,=0D DEVCONF_ADDR_GEN_MODE,=0D DEVCONF_DISABLE_POLICY,=0D DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,=0D DEVCONF_NDISC_TCLASS,=0D DEVCONF_RPL_SEG_ENABLED,=0D DEVCONF_RA_DEFRTR_METRIC,=0D DEVCONF_IOAM6_ENABLED,=0D DEVCONF_IOAM6_ID,=0D DEVCONF_IOAM6_ID_WIDE,=0D DEVCONF_NDISC_EVICT_NOCARRIER,=0D DEVCONF_MAX=0D };=0D # 6 "./include/linux/ipv6.h" 2=0D =0D =0D =0D =0D =0D =0D struct ipv6_devconf {=0D __s32 forwarding;=0D __s32 hop_limit;=0D __s32 mtu6;=0D __s32 accept_ra;=0D __s32 accept_redirects;=0D __s32 autoconf;=0D __s32 dad_transmits;=0D __s32 rtr_solicits;=0D __s32 rtr_solicit_interval;=0D __s32 rtr_solicit_max_interval;=0D __s32 rtr_solicit_delay;=0D __s32 force_mld_version;=0D __s32 mldv1_unsolicited_report_interval;=0D __s32 mldv2_unsolicited_report_interval;=0D __s32 use_tempaddr;=0D __s32 temp_valid_lft;=0D __s32 temp_prefered_lft;=0D __s32 regen_max_retry;=0D __s32 max_desync_factor;=0D __s32 max_addresses;=0D __s32 accept_ra_defrtr;=0D __u32 ra_defrtr_metric;=0D __s32 accept_ra_min_hop_limit;=0D __s32 accept_ra_pinfo;=0D __s32 ignore_routes_with_linkdown;=0D # 46 "./include/linux/ipv6.h"=0D __s32 proxy_ndp;=0D __s32 accept_source_route;=0D __s32 accept_ra_from_local;=0D =0D =0D =0D =0D =0D =0D =0D __s32 disable_ipv6;=0D __s32 drop_unicast_in_l2_multicast;=0D __s32 accept_dad;=0D __s32 force_tllao;=0D __s32 ndisc_notify;=0D __s32 suppress_frag_ndisc;=0D __s32 accept_ra_mtu;=0D __s32 drop_unsolicited_na;=0D struct ipv6_stable_secret {=0D bool initialized;=0D struct in6_addr secret;=0D } stable_secret;=0D __s32 use_oif_addrs_only;=0D __s32 keep_addr_on_down;=0D __s32 seg6_enabled;=0D =0D =0D =0D __u32 enhanced_dad;=0D __u32 addr_gen_mode;=0D __s32 disable_policy;=0D __s32 ndisc_tclass;=0D __s32 rpl_seg_enabled;=0D __u32 ioam6_id;=0D __u32 ioam6_id_wide;=0D __u8 ioam6_enabled;=0D __u8 ndisc_evict_nocarrier;=0D =0D struct ctl_table_header *sysctl_header;=0D };=0D =0D struct ipv6_params {=0D __s32 disable_ipv6;=0D __s32 autoconf;=0D };=0D extern struct ipv6_params ipv6_defaults;=0D =0D # 1 "./include/linux/tcp.h" 1=0D # 18 "./include/linux/tcp.h"=0D # 1 "./include/linux/win_minmax.h" 1=0D # 12 "./include/linux/win_minmax.h"=0D struct minmax_sample {=0D u32 t;=0D u32 v;=0D };=0D =0D =0D struct minmax {=0D struct minmax_sample s[3];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 minmax_get(const struct = minmax *m)=0D {=0D return m->s[0].v;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 minmax_reset(struct minm= ax *m, u32 t, u32 meas)=0D {=0D struct minmax_sample val =3D { .t =3D t, .v =3D meas };=0D =0D m->s[2] =3D m->s[1] =3D m->s[0] =3D val;=0D return m->s[0].v;=0D }=0D =0D u32 minmax_running_max(struct minmax *m, u32 win, u32 t, u32 meas);=0D u32 minmax_running_min(struct minmax *m, u32 win, u32 t, u32 meas);=0D # 19 "./include/linux/tcp.h" 2=0D =0D # 1 "./include/net/inet_connection_sock.h" 1=0D # 21 "./include/net/inet_connection_sock.h"=0D # 1 "./include/net/inet_sock.h" 1=0D # 18 "./include/net/inet_sock.h"=0D # 1 "./include/linux/jhash.h" 1=0D # 27 "./include/linux/jhash.h"=0D # 1 "./include/linux/unaligned/packed_struct.h" 1=0D =0D =0D =0D =0D =0D struct __una_u16 { u16 x; } __attribute__((__packed__));=0D struct __una_u32 { u32 x; } __attribute__((__packed__));=0D struct __una_u64 { u64 x; } __attribute__((__packed__));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 __get_unaligned_cpu16(co= nst void *p)=0D {=0D const struct __una_u16 *ptr =3D (const struct __una_u16 *)p;=0D return ptr->x;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __get_unaligned_cpu32(co= nst void *p)=0D {=0D const struct __una_u32 *ptr =3D (const struct __una_u32 *)p;=0D return ptr->x;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 __get_unaligned_cpu64(co= nst void *p)=0D {=0D const struct __una_u64 *ptr =3D (const struct __una_u64 *)p;=0D return ptr->x;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_cpu16(u= 16 val, void *p)=0D {=0D struct __una_u16 *ptr =3D (struct __una_u16 *)p;=0D ptr->x =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_cpu32(u= 32 val, void *p)=0D {=0D struct __una_u32 *ptr =3D (struct __una_u32 *)p;=0D ptr->x =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_cpu64(u= 64 val, void *p)=0D {=0D struct __una_u64 *ptr =3D (struct __una_u64 *)p;=0D ptr->x =3D val;=0D }=0D # 28 "./include/linux/jhash.h" 2=0D # 70 "./include/linux/jhash.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 jhash(const void *key, u= 32 length, u32 initval)=0D {=0D u32 a, b, c;=0D const u8 *k =3D key;=0D =0D =0D a =3D b =3D c =3D 0xdeadbeef + length + initval;=0D =0D =0D while (length > 12) {=0D a +=3D __get_unaligned_cpu32(k);=0D b +=3D __get_unaligned_cpu32(k + 4);=0D c +=3D __get_unaligned_cpu32(k + 8);=0D { a -=3D c; a ^=3D rol32(c, 4); c +=3D b; b -=3D a; b ^=3D rol32(a, 6); a= +=3D c; c -=3D b; c ^=3D rol32(b, 8); b +=3D a; a -=3D c; a ^=3D rol32(c, = 16); c +=3D b; b -=3D a; b ^=3D rol32(a, 19); a +=3D c; c -=3D b; c ^=3D ro= l32(b, 4); b +=3D a; };=0D length -=3D 12;=0D k +=3D 12;=0D }=0D =0D switch (length) {=0D case 12: c +=3D (u32)k[11]<<24; __attribute__((__fallthrough__));=0D case 11: c +=3D (u32)k[10]<<16; __attribute__((__fallthrough__));=0D case 10: c +=3D (u32)k[9]<<8; __attribute__((__fallthrough__));=0D case 9: c +=3D k[8]; __attribute__((__fallthrough__));=0D case 8: b +=3D (u32)k[7]<<24; __attribute__((__fallthrough__));=0D case 7: b +=3D (u32)k[6]<<16; __attribute__((__fallthrough__));=0D case 6: b +=3D (u32)k[5]<<8; __attribute__((__fallthrough__));=0D case 5: b +=3D k[4]; __attribute__((__fallthrough__));=0D case 4: a +=3D (u32)k[3]<<24; __attribute__((__fallthrough__));=0D case 3: a +=3D (u32)k[2]<<16; __attribute__((__fallthrough__));=0D case 2: a +=3D (u32)k[1]<<8; __attribute__((__fallthrough__));=0D case 1: a +=3D k[0];=0D { c ^=3D b; c -=3D rol32(b, 14); a ^=3D c; a -=3D rol32(c, 11); b ^=3D a= ; b -=3D rol32(a, 25); c ^=3D b; c -=3D rol32(b, 16); a ^=3D c; a -=3D rol3= 2(c, 4); b ^=3D a; b -=3D rol32(a, 14); c ^=3D b; c -=3D rol32(b, 24); };=0D break;=0D case 0:=0D break;=0D }=0D =0D return c;=0D }=0D # 117 "./include/linux/jhash.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 jhash2(const u32 *k, u32= length, u32 initval)=0D {=0D u32 a, b, c;=0D =0D =0D a =3D b =3D c =3D 0xdeadbeef + (length<<2) + initval;=0D =0D =0D while (length > 3) {=0D a +=3D k[0];=0D b +=3D k[1];=0D c +=3D k[2];=0D { a -=3D c; a ^=3D rol32(c, 4); c +=3D b; b -=3D a; b ^=3D rol32(a, 6); a= +=3D c; c -=3D b; c ^=3D rol32(b, 8); b +=3D a; a -=3D c; a ^=3D rol32(c, = 16); c +=3D b; b -=3D a; b ^=3D rol32(a, 19); a +=3D c; c -=3D b; c ^=3D ro= l32(b, 4); b +=3D a; };=0D length -=3D 3;=0D k +=3D 3;=0D }=0D =0D =0D switch (length) {=0D case 3: c +=3D k[2]; __attribute__((__fallthrough__));=0D case 2: b +=3D k[1]; __attribute__((__fallthrough__));=0D case 1: a +=3D k[0];=0D { c ^=3D b; c -=3D rol32(b, 14); a ^=3D c; a -=3D rol32(c, 11); b ^=3D a;= b -=3D rol32(a, 25); c ^=3D b; c -=3D rol32(b, 16); a ^=3D c; a -=3D rol32= (c, 4); b ^=3D a; b -=3D rol32(a, 14); c ^=3D b; c -=3D rol32(b, 24); };=0D break;=0D case 0:=0D break;=0D }=0D =0D return c;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __jhash_nwords(u32 a, u3= 2 b, u32 c, u32 initval)=0D {=0D a +=3D initval;=0D b +=3D initval;=0D c +=3D initval;=0D =0D { c ^=3D b; c -=3D rol32(b, 14); a ^=3D c; a -=3D rol32(c, 11); b ^=3D a; = b -=3D rol32(a, 25); c ^=3D b; c -=3D rol32(b, 16); a ^=3D c; a -=3D rol32(= c, 4); b ^=3D a; b -=3D rol32(a, 14); c ^=3D b; c -=3D rol32(b, 24); };=0D =0D return c;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 jhash_3words(u32 a, u32 = b, u32 c, u32 initval)=0D {=0D return __jhash_nwords(a, b, c, initval + 0xdeadbeef + (3 << 2));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 jhash_2words(u32 a, u32 = b, u32 initval)=0D {=0D return __jhash_nwords(a, b, 0, initval + 0xdeadbeef + (2 << 2));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 jhash_1word(u32 a, u32 i= nitval)=0D {=0D return __jhash_nwords(a, 0, 0, initval + 0xdeadbeef + (1 << 2));=0D }=0D # 19 "./include/net/inet_sock.h" 2=0D =0D =0D =0D =0D # 1 "./include/net/request_sock.h" 1=0D # 22 "./include/net/request_sock.h"=0D struct request_sock;=0D struct sk_buff;=0D struct dst_entry;=0D struct proto;=0D =0D struct request_sock_ops {=0D int family;=0D unsigned int obj_size;=0D struct kmem_cache *slab;=0D char *slab_name;=0D int (*rtx_syn_ack)(const struct sock *sk,=0D struct request_sock *req);=0D void (*send_ack)(const struct sock *sk, struct sk_buff *skb,=0D struct request_sock *req);=0D void (*send_reset)(const struct sock *sk,=0D struct sk_buff *skb);=0D void (*destructor)(struct request_sock *req);=0D void (*syn_ack_timeout)(const struct request_sock *req);=0D };=0D =0D int inet_rtx_syn_ack(const struct sock *parent, struct request_sock *req);= =0D =0D struct saved_syn {=0D u32 mac_hdrlen;=0D u32 network_hdrlen;=0D u32 tcp_hdrlen;=0D u8 data[];=0D };=0D =0D =0D =0D struct request_sock {=0D struct sock_common __req_common;=0D =0D =0D =0D =0D =0D =0D struct request_sock *dl_next;=0D u16 mss;=0D u8 num_retrans;=0D u8 syncookie:1;=0D u8 num_timeout:7;=0D u32 ts_recent;=0D struct timer_list rsk_timer;=0D const struct request_sock_ops *rsk_ops;=0D struct sock *sk;=0D struct saved_syn *saved_syn;=0D u32 secid;=0D u32 peer_secid;=0D u32 timeout;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct request_sock *inet_re= qsk(const struct sock *sk)=0D {=0D return (struct request_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *req_to_sk(struc= t request_sock *req)=0D {=0D return (struct sock *)req;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct request_sock *=0D reqsk_alloc(const struct request_sock_ops *ops, struct sock *sk_listener,=0D bool attach_listener)=0D {=0D struct request_sock *req;=0D =0D req =3D kmem_cache_alloc(ops->slab, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( g= fp_t)0x800u)) | (( gfp_t)0x2000u));=0D if (!req)=0D return ((void *)0);=0D req->__req_common.skc_listener =3D ((void *)0);=0D if (attach_listener) {=0D if (__builtin_expect(!!(!refcount_inc_not_zero(&sk_listener->__sk_common.= skc_refcnt)), 0)) {=0D kmem_cache_free(ops->slab, req);=0D return ((void *)0);=0D }=0D req->__req_common.skc_listener =3D sk_listener;=0D }=0D req->rsk_ops =3D ops;=0D req_to_sk(req)->__sk_common.skc_prot =3D sk_listener->__sk_common.skc_prot= ;=0D sk_node_init(&req_to_sk(req)->__sk_common.skc_node);=0D sk_tx_queue_clear(req_to_sk(req));=0D req->saved_syn =3D ((void *)0);=0D req->timeout =3D 0;=0D req->num_timeout =3D 0;=0D req->num_retrans =3D 0;=0D req->sk =3D ((void *)0);=0D refcount_set(&req->__req_common.skc_refcnt, 0);=0D =0D return req;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __reqsk_free(struct req= uest_sock *req)=0D {=0D req->rsk_ops->destructor(req);=0D if (req->__req_common.skc_listener)=0D sock_put(req->__req_common.skc_listener);=0D kfree(req->saved_syn);=0D kmem_cache_free(req->rsk_ops->slab, req);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reqsk_free(struct reque= st_sock *req)=0D {=0D ({ int __ret_warn_on =3D !!(refcount_read(&req->__req_common.skc_refcnt) != =3D 0); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile= __ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".w= ord" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" = " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/request= _sock.h"), "i" (128), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(s= truct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); })= ;=0D __reqsk_free(req);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reqsk_put(struct reques= t_sock *req)=0D {=0D if (refcount_dec_and_test(&req->__req_common.skc_refcnt))=0D reqsk_free(req);=0D }=0D # 155 "./include/net/request_sock.h"=0D struct fastopen_queue {=0D struct request_sock *rskq_rst_head;=0D struct request_sock *rskq_rst_tail;=0D =0D =0D =0D spinlock_t lock;=0D int qlen;=0D int max_qlen;=0D =0D struct tcp_fastopen_context *ctx;=0D };=0D # 175 "./include/net/request_sock.h"=0D struct request_sock_queue {=0D spinlock_t rskq_lock;=0D u8 rskq_defer_accept;=0D =0D u32 synflood_warned;=0D atomic_t qlen;=0D atomic_t young;=0D =0D struct request_sock *rskq_accept_head;=0D struct request_sock *rskq_accept_tail;=0D struct fastopen_queue fastopenq;=0D =0D =0D };=0D =0D void reqsk_queue_alloc(struct request_sock_queue *queue);=0D =0D void reqsk_fastopen_remove(struct sock *sk, struct request_sock *req,=0D bool reset);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool reqsk_queue_empty(const= struct request_sock_queue *queue)=0D {=0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_436(void) ; if (!((sizeof(queue->rskq_accept_head) =3D=3D sizeof(char) = || sizeof(queue->rskq_accept_head) =3D=3D sizeof(short) || sizeof(queue->rs= kq_accept_head) =3D=3D sizeof(int) || sizeof(queue->rskq_accept_head) =3D= =3D sizeof(long)) || sizeof(queue->rskq_accept_head) =3D=3D sizeof(long lon= g))) __compiletime_assert_436(); } while (0); (*(const volatile typeof( _Ge= neric((queue->rskq_accept_head), char: (char)0, unsigned char: (unsigned ch= ar)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signe= d short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signe= d int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsi= gned long long: (unsigned long long)0, signed long long: (signed long long)= 0, default: (queue->rskq_accept_head))) *)&(queue->rskq_accept_head)); }) = =3D=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct request_sock *reqsk_q= ueue_remove(struct request_sock_queue *queue,=0D struct sock *parent)=0D {=0D struct request_sock *req;=0D =0D spin_lock_bh(&queue->rskq_lock);=0D req =3D queue->rskq_accept_head;=0D if (req) {=0D sk_acceptq_removed(parent);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 437(void) ; if (!((sizeof(queue->rskq_accept_head) =3D=3D sizeof(char) || s= izeof(queue->rskq_accept_head) =3D=3D sizeof(short) || sizeof(queue->rskq_a= ccept_head) =3D=3D sizeof(int) || sizeof(queue->rskq_accept_head) =3D=3D si= zeof(long)) || sizeof(queue->rskq_accept_head) =3D=3D sizeof(long long))) _= _compiletime_assert_437(); } while (0); do { *(volatile typeof(queue->rskq_= accept_head) *)&(queue->rskq_accept_head) =3D (req->dl_next); } while (0); = } while (0);=0D if (queue->rskq_accept_head =3D=3D ((void *)0))=0D queue->rskq_accept_tail =3D ((void *)0);=0D }=0D spin_unlock_bh(&queue->rskq_lock);=0D return req;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reqsk_queue_removed(str= uct request_sock_queue *queue,=0D const struct request_sock *req)=0D {=0D if (req->num_timeout =3D=3D 0)=0D atomic_dec(&queue->young);=0D atomic_dec(&queue->qlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void reqsk_queue_added(struc= t request_sock_queue *queue)=0D {=0D atomic_inc(&queue->young);=0D atomic_inc(&queue->qlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int reqsk_queue_len(const st= ruct request_sock_queue *queue)=0D {=0D return atomic_read(&queue->qlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int reqsk_queue_len_young(co= nst struct request_sock_queue *queue)=0D {=0D return atomic_read(&queue->young);=0D }=0D # 24 "./include/net/inet_sock.h" 2=0D # 1 "./include/net/netns/hash.h" 1=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 net_hash_mix(const struc= t net *net)=0D {=0D return net->hash_mix;=0D }=0D # 25 "./include/net/inet_sock.h" 2=0D # 39 "./include/net/inet_sock.h"=0D struct ip_options {=0D __be32 faddr;=0D __be32 nexthop;=0D unsigned char optlen;=0D unsigned char srr;=0D unsigned char rr;=0D unsigned char ts;=0D unsigned char is_strictroute:1,=0D srr_is_hit:1,=0D is_changed:1,=0D rr_needaddr:1,=0D ts_needtime:1,=0D ts_needaddr:1;=0D unsigned char router_alert;=0D unsigned char cipso;=0D unsigned char __pad2;=0D unsigned char __data[];=0D };=0D =0D struct ip_options_rcu {=0D struct callback_head rcu;=0D struct ip_options opt;=0D };=0D =0D struct ip_options_data {=0D struct ip_options_rcu opt;=0D char data[40];=0D };=0D =0D struct inet_request_sock {=0D struct request_sock req;=0D # 82 "./include/net/inet_sock.h"=0D u16 snd_wscale : 4,=0D rcv_wscale : 4,=0D tstamp_ok : 1,=0D sack_ok : 1,=0D wscale_ok : 1,=0D ecn_ok : 1,=0D acked : 1,=0D no_srccheck: 1,=0D smc_ok : 1;=0D u32 ir_mark;=0D union {=0D struct ip_options_rcu *ireq_opt;=0D =0D struct {=0D struct ipv6_txoptions *ipv6_opt;=0D struct sk_buff *pktopts;=0D };=0D =0D };=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_request_sock *in= et_rsk(const struct request_sock *sk)=0D {=0D return (struct inet_request_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 inet_request_mark(const = struct sock *sk, struct sk_buff *skb)=0D {=0D if (!sk->sk_mark && sock_net(sk)->ipv4.sysctl_tcp_fwmark_accept)=0D return skb->mark;=0D =0D return sk->sk_mark;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_request_bound_dev_i= f(const struct sock *sk,=0D struct sk_buff *skb)=0D {=0D =0D =0D =0D =0D =0D =0D =0D return sk->__sk_common.skc_bound_dev_if;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_sk_bound_l3mdev(con= st struct sock *sk)=0D {=0D # 139 "./include/net/inet_sock.h"=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_bound_dev_eq(bool = l3mdev_accept, int bound_dev_if,=0D int dif, int sdif)=0D {=0D if (!bound_dev_if)=0D return !sdif || l3mdev_accept;=0D return bound_dev_if =3D=3D dif || bound_dev_if =3D=3D sdif;=0D }=0D =0D struct inet_cork {=0D unsigned int flags;=0D __be32 addr;=0D struct ip_options *opt;=0D unsigned int fragsize;=0D int length;=0D struct dst_entry *dst;=0D u8 tx_flags;=0D __u8 ttl;=0D __s16 tos;=0D char priority;=0D __u16 gso_size;=0D u64 transmit_time;=0D u32 mark;=0D };=0D =0D struct inet_cork_full {=0D struct inet_cork base;=0D struct flowi fl;=0D };=0D =0D struct ip_mc_socklist;=0D struct ipv6_pinfo;=0D struct rtable;=0D # 195 "./include/net/inet_sock.h"=0D struct inet_sock {=0D =0D struct sock sk;=0D =0D struct ipv6_pinfo *pinet6;=0D =0D =0D =0D =0D =0D =0D =0D __be32 inet_saddr;=0D __s16 uc_ttl;=0D __u16 cmsg_flags;=0D struct ip_options_rcu *inet_opt;=0D __be16 inet_sport;=0D __u16 inet_id;=0D =0D __u8 tos;=0D __u8 min_ttl;=0D __u8 mc_ttl;=0D __u8 pmtudisc;=0D __u8 recverr:1,=0D is_icsk:1,=0D freebind:1,=0D hdrincl:1,=0D mc_loop:1,=0D transparent:1,=0D mc_all:1,=0D nodefrag:1;=0D __u8 bind_address_no_port:1,=0D recverr_rfc4884:1,=0D defer_connect:1;=0D =0D =0D =0D __u8 rcv_tos;=0D __u8 convert_csum;=0D int uc_index;=0D int mc_index;=0D __be32 mc_addr;=0D struct ip_mc_socklist *mc_list;=0D struct inet_cork_full cork;=0D };=0D # 262 "./include/net/inet_sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *sk_to_full_sk(s= truct sock *sk)=0D {=0D =0D if (sk && sk->__sk_common.skc_state =3D=3D TCP_NEW_SYN_RECV)=0D sk =3D inet_reqsk(sk)->__req_common.skc_listener;=0D =0D return sk;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct sock *sk_const_= to_full_sk(const struct sock *sk)=0D {=0D =0D if (sk && sk->__sk_common.skc_state =3D=3D TCP_NEW_SYN_RECV)=0D sk =3D ((const struct request_sock *)sk)->__req_common.skc_listener;=0D =0D return sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *skb_to_full_sk(= const struct sk_buff *skb)=0D {=0D return sk_to_full_sk(skb->sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_sock *inet_sk(co= nst struct sock *sk)=0D {=0D return (struct inet_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __inet_sk_copy_descenda= nt(struct sock *sk_to,=0D const struct sock *sk_from,=0D const int ancestor_size)=0D {=0D memcpy(inet_sk(sk_to) + 1, inet_sk(sk_from) + 1,=0D sk_from->__sk_common.skc_prot->obj_size - ancestor_size);=0D }=0D =0D int inet_sk_rebuild_header(struct sock *sk);=0D # 308 "./include/net/inet_sock.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_sk_state_load(const= struct sock *sk)=0D {=0D =0D return ({ typeof(*&sk->__sk_common.skc_state) ___p1 =3D ({ do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_438(void) ; if (!((siz= eof(*&sk->__sk_common.skc_state) =3D=3D sizeof(char) || sizeof(*&sk->__sk_c= ommon.skc_state) =3D=3D sizeof(short) || sizeof(*&sk->__sk_common.skc_state= ) =3D=3D sizeof(int) || sizeof(*&sk->__sk_common.skc_state) =3D=3D sizeof(l= ong)) || sizeof(*&sk->__sk_common.skc_state) =3D=3D sizeof(long long))) __c= ompiletime_assert_438(); } while (0); (*(const volatile typeof( _Generic((*= &sk->__sk_common.skc_state), char: (char)0, unsigned char: (unsigned char)0= , signed char: (signed char)0, unsigned short: (unsigned short)0, signed sh= ort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed in= t)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned= long long: (unsigned long long)0, signed long long: (signed long long)0, d= efault: (*&sk->__sk_common.skc_state))) *)&(*&sk->__sk_common.skc_state)); = }); do { __attribute__((__noreturn__)) extern void __compiletime_assert_439= (void) ; if (!((sizeof(*&sk->__sk_common.skc_state) =3D=3D sizeof(char) || = sizeof(*&sk->__sk_common.skc_state) =3D=3D sizeof(short) || sizeof(*&sk->__= sk_common.skc_state) =3D=3D sizeof(int) || sizeof(*&sk->__sk_common.skc_sta= te) =3D=3D sizeof(long)))) __compiletime_assert_439(); } while (0); __asm__= __volatile__ ("fence " "r" "," "rw" : : : "memory"); ___p1; });=0D }=0D # 322 "./include/net/inet_sock.h"=0D void inet_sk_state_store(struct sock *sk, int newstate);=0D =0D void inet_sk_set_state(struct sock *sk, int state);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __inet_ehashfn(= const __be32 laddr,=0D const __u16 lport,=0D const __be32 faddr,=0D const __be16 fport,=0D u32 initval)=0D {=0D return jhash_3words(( __u32) laddr,=0D ( __u32) faddr,=0D ((__u32) lport) << 16 | ( __u32)fport,=0D initval);=0D }=0D =0D struct request_sock *inet_reqsk_alloc(const struct request_sock_ops *ops,=0D struct sock *sk_listener,=0D bool attach_listener);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 inet_sk_flowi_flags(con= st struct sock *sk)=0D {=0D __u8 flags =3D 0;=0D =0D if (inet_sk(sk)->transparent || inet_sk(sk)->hdrincl)=0D flags |=3D 0x01;=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_inc_convert_csum(s= truct sock *sk)=0D {=0D inet_sk(sk)->convert_csum++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_dec_convert_csum(s= truct sock *sk)=0D {=0D if (inet_sk(sk)->convert_csum > 0)=0D inet_sk(sk)->convert_csum--;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_get_convert_csum(s= truct sock *sk)=0D {=0D return !!inet_sk(sk)->convert_csum;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_can_nonlocal_bind(= struct net *net,=0D struct inet_sock *inet)=0D {=0D return net->ipv4.sysctl_ip_nonlocal_bind ||=0D inet->freebind || inet->transparent;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_addr_valid_or_nonl= ocal(struct net *net,=0D struct inet_sock *inet,=0D __be32 addr,=0D int addr_type)=0D {=0D return inet_can_nonlocal_bind(net, inet) ||=0D addr =3D=3D (( __be32)(__builtin_constant_p((__u32)((((unsigned long int)= 0x00000000)))) ? ((__u32)( (((__u32)((((unsigned long int) 0x00000000))) &= (__u32)0x000000ffUL) << 24) | (((__u32)((((unsigned long int) 0x00000000))= ) & (__u32)0x0000ff00UL) << 8) | (((__u32)((((unsigned long int) 0x00000000= ))) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((((unsigned long int) 0x000000= 00))) & (__u32)0xff000000UL) >> 24))) : __fswab32((((unsigned long int) 0x0= 0000000))))) ||=0D addr_type =3D=3D RTN_LOCAL ||=0D addr_type =3D=3D RTN_MULTICAST ||=0D addr_type =3D=3D RTN_BROADCAST;=0D }=0D # 22 "./include/net/inet_connection_sock.h" 2=0D =0D =0D =0D =0D =0D struct inet_bind_bucket;=0D struct tcp_congestion_ops;=0D =0D =0D =0D =0D =0D struct inet_connection_sock_af_ops {=0D int (*queue_xmit)(struct sock *sk, struct sk_buff *skb, struct flowi *fl);= =0D void (*send_check)(struct sock *sk, struct sk_buff *skb);=0D int (*rebuild_header)(struct sock *sk);=0D void (*sk_rx_dst_set)(struct sock *sk, const struct sk_buff *skb);=0D int (*conn_request)(struct sock *sk, struct sk_buff *skb);=0D struct sock *(*syn_recv_sock)(const struct sock *sk, struct sk_buff *skb,= =0D struct request_sock *req,=0D struct dst_entry *dst,=0D struct request_sock *req_unhash,=0D bool *own_req);=0D u16 net_header_len;=0D u16 net_frag_header_len;=0D u16 sockaddr_len;=0D int (*setsockopt)(struct sock *sk, int level, int optname,=0D sockptr_t optval, unsigned int optlen);=0D int (*getsockopt)(struct sock *sk, int level, int optname,=0D char *optval, int *optlen);=0D void (*addr2sockaddr)(struct sock *sk, struct sockaddr *);=0D void (*mtu_reduced)(struct sock *sk);=0D };=0D # 82 "./include/net/inet_connection_sock.h"=0D struct inet_connection_sock {=0D =0D struct inet_sock icsk_inet;=0D struct request_sock_queue icsk_accept_queue;=0D struct inet_bind_bucket *icsk_bind_hash;=0D unsigned long icsk_timeout;=0D struct timer_list icsk_retransmit_timer;=0D struct timer_list icsk_delack_timer;=0D __u32 icsk_rto;=0D __u32 icsk_rto_min;=0D __u32 icsk_delack_max;=0D __u32 icsk_pmtu_cookie;=0D const struct tcp_congestion_ops *icsk_ca_ops;=0D const struct inet_connection_sock_af_ops *icsk_af_ops;=0D const struct tcp_ulp_ops *icsk_ulp_ops;=0D void *icsk_ulp_data;=0D void (*icsk_clean_acked)(struct sock *sk, u32 acked_seq);=0D struct hlist_node icsk_listen_portaddr_node;=0D unsigned int (*icsk_sync_mss)(struct sock *sk, u32 pmtu);=0D __u8 icsk_ca_state:5,=0D icsk_ca_initialized:1,=0D icsk_ca_setsockopt:1,=0D icsk_ca_dst_locked:1;=0D __u8 icsk_retransmits;=0D __u8 icsk_pending;=0D __u8 icsk_backoff;=0D __u8 icsk_syn_retries;=0D __u8 icsk_probes_out;=0D __u16 icsk_ext_hdr_len;=0D struct {=0D __u8 pending;=0D __u8 quick;=0D __u8 pingpong;=0D __u8 retry;=0D __u32 ato;=0D unsigned long timeout;=0D __u32 lrcvtime;=0D __u16 last_seg_size;=0D __u16 rcv_mss;=0D } icsk_ack;=0D struct {=0D =0D int search_high;=0D int search_low;=0D =0D =0D u32 probe_size:31,=0D =0D enabled:1;=0D =0D u32 probe_timestamp;=0D } icsk_mtup;=0D u32 icsk_probes_tstamp;=0D u32 icsk_user_timeout;=0D =0D u64 icsk_ca_priv[104 / sizeof(u64)];=0D =0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_connection_sock = *inet_csk(const struct sock *sk)=0D {=0D return (struct inet_connection_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *inet_csk_ca(const stru= ct sock *sk)=0D {=0D return (void *)inet_csk(sk)->icsk_ca_priv;=0D }=0D =0D struct sock *inet_csk_clone_lock(const struct sock *sk,=0D const struct request_sock *req,=0D const gfp_t priority);=0D =0D enum inet_csk_ack_state_t {=0D ICSK_ACK_SCHED =3D 1,=0D ICSK_ACK_TIMER =3D 2,=0D ICSK_ACK_PUSHED =3D 4,=0D ICSK_ACK_PUSHED2 =3D 8,=0D ICSK_ACK_NOW =3D 16=0D };=0D =0D void inet_csk_init_xmit_timers(struct sock *sk,=0D void (*retransmit_handler)(struct timer_list *),=0D void (*delack_handler)(struct timer_list *),=0D void (*keepalive_handler)(struct timer_list *));=0D void inet_csk_clear_xmit_timers(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_schedule_ack(s= truct sock *sk)=0D {=0D inet_csk(sk)->icsk_ack.pending |=3D ICSK_ACK_SCHED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_csk_ack_scheduled(c= onst struct sock *sk)=0D {=0D return inet_csk(sk)->icsk_ack.pending & ICSK_ACK_SCHED;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_delack_init(st= ruct sock *sk)=0D {=0D memset(&inet_csk(sk)->icsk_ack, 0, sizeof(inet_csk(sk)->icsk_ack));=0D }=0D =0D void inet_csk_delete_keepalive_timer(struct sock *sk);=0D void inet_csk_reset_keepalive_timer(struct sock *sk, unsigned long timeout)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_clear_xmit_tim= er(struct sock *sk, const int what)=0D {=0D struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (what =3D=3D 1 || what =3D=3D 3) {=0D icsk->icsk_pending =3D 0;=0D =0D =0D =0D } else if (what =3D=3D 2) {=0D icsk->icsk_ack.pending =3D 0;=0D icsk->icsk_ack.retry =3D 0;=0D =0D =0D =0D } else {=0D ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "inet_csk BUG: = unknown timer value\n"); }); 0; });=0D }=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_reset_xmit_tim= er(struct sock *sk, const int what,=0D unsigned long when,=0D const unsigned long max_when)=0D {=0D struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (when > max_when) {=0D ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "reset_xmit_tim= er: sk=3D%p %d when=3D0x%lx, caller=3D%p\n", sk, what, when, (void *)({ __l= abel__ __here; __here: (unsigned long)&&__here; })); }); 0; });=0D =0D when =3D max_when;=0D }=0D =0D if (what =3D=3D 1 || what =3D=3D 3 ||=0D what =3D=3D 5 || what =3D=3D 6) {=0D icsk->icsk_pending =3D what;=0D icsk->icsk_timeout =3D jiffies + when;=0D sk_reset_timer(sk, &icsk->icsk_retransmit_timer, icsk->icsk_timeout);=0D } else if (what =3D=3D 2) {=0D icsk->icsk_ack.pending |=3D ICSK_ACK_TIMER;=0D icsk->icsk_ack.timeout =3D jiffies + when;=0D sk_reset_timer(sk, &icsk->icsk_delack_timer, icsk->icsk_ack.timeout);=0D } else {=0D ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "inet_csk BUG: = unknown timer value\n"); }); 0; });=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D inet_csk_rto_backoff(const struct inet_connection_sock *icsk,=0D unsigned long max_when)=0D {=0D u64 when =3D (u64)icsk->icsk_rto << icsk->icsk_backoff;=0D =0D return (unsigned long)__builtin_choose_expr(((!!(sizeof((typeof((u6= 4)(when)) *)1 =3D=3D (typeof((u64)(max_when)) *)1))) && ((sizeof(int) =3D= =3D sizeof(*(8 ? ((void *)((long)((u64)(when)) * 0l)) : (int *)8))) && (siz= eof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u64)(max_when)) * 0l)) : (in= t *)8))))), (((u64)(when)) < ((u64)(max_when)) ? ((u64)(when)) : ((u64)(max= _when))), ({ typeof((u64)(when)) __UNIQUE_ID___x440 =3D ((u64)(when)); type= of((u64)(max_when)) __UNIQUE_ID___y441 =3D ((u64)(max_when)); ((__UNIQUE_ID= ___x440) < (__UNIQUE_ID___y441) ? (__UNIQUE_ID___x440) : (__UNIQUE_ID___y44= 1)); }));=0D }=0D =0D struct sock *inet_csk_accept(struct sock *sk, int flags, int *err, bool ker= n);=0D =0D int inet_csk_get_port(struct sock *sk, unsigned short snum);=0D =0D struct dst_entry *inet_csk_route_req(const struct sock *sk, struct flowi4 *= fl4,=0D const struct request_sock *req);=0D struct dst_entry *inet_csk_route_child_sock(const struct sock *sk,=0D struct sock *newsk,=0D const struct request_sock *req);=0D =0D struct sock *inet_csk_reqsk_queue_add(struct sock *sk,=0D struct request_sock *req,=0D struct sock *child);=0D void inet_csk_reqsk_queue_hash_add(struct sock *sk, struct request_sock *re= q,=0D unsigned long timeout);=0D struct sock *inet_csk_complete_hashdance(struct sock *sk, struct sock *chil= d,=0D struct request_sock *req,=0D bool own_req);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_reqsk_queue_ad= ded(struct sock *sk)=0D {=0D reqsk_queue_added(&inet_csk(sk)->icsk_accept_queue);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_csk_reqsk_queue_len= (const struct sock *sk)=0D {=0D return reqsk_queue_len(&inet_csk(sk)->icsk_accept_queue);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_csk_reqsk_queue_is_= full(const struct sock *sk)=0D {=0D return inet_csk_reqsk_queue_len(sk) >=3D sk->sk_max_ack_backlog;=0D }=0D =0D bool inet_csk_reqsk_queue_drop(struct sock *sk, struct request_sock *req);= =0D void inet_csk_reqsk_queue_drop_and_put(struct sock *sk, struct request_sock= *req);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long=0D reqsk_timeout(struct request_sock *req, unsigned long max_timeout)=0D {=0D u64 timeout =3D (u64)req->timeout << req->num_timeout;=0D =0D return (unsigned long)__builtin_choose_expr(((!!(sizeof((typeof((u64)(time= out)) *)1 =3D=3D (typeof((u64)(max_timeout)) *)1))) && ((sizeof(int) =3D=3D= sizeof(*(8 ? ((void *)((long)((u64)(timeout)) * 0l)) : (int *)8))) && (siz= eof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u64)(max_timeout)) * 0l)) : = (int *)8))))), (((u64)(timeout)) < ((u64)(max_timeout)) ? ((u64)(timeout)) = : ((u64)(max_timeout))), ({ typeof((u64)(timeout)) __UNIQUE_ID___x442 =3D (= (u64)(timeout)); typeof((u64)(max_timeout)) __UNIQUE_ID___y443 =3D ((u64)(m= ax_timeout)); ((__UNIQUE_ID___x442) < (__UNIQUE_ID___y443) ? (__UNIQUE_ID__= _x442) : (__UNIQUE_ID___y443)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_prepare_for_de= stroy_sock(struct sock *sk)=0D {=0D =0D sock_set_flag(sk, SOCK_DEAD);=0D do { do { const void *__vpp_verify =3D (typeof((&(*sk->__sk_common.skc_pro= t->orphan_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch= (sizeof(*sk->__sk_common.skc_prot->orphan_count)) { case 1: do { unsigned l= ong __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } w= hile (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(*sk->__sk_c= ommon.skc_prot->orphan_count)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sk->= __sk_common.skc_prot->orphan_count))) *)(&(*sk->__sk_common.skc_prot->orpha= n_count))); (typeof((typeof(*(&(*sk->__sk_common.skc_prot->orphan_count))) = *)(&(*sk->__sk_common.skc_prot->orphan_count)))) (__ptr + (((__per_cpu_offs= et[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } whil= e (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__f= lags); } while (0); } while (0);break; case 2: do { unsigned long __flags; = do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); d= o { *({ do { const void *__vpp_verify =3D (typeof((&(*sk->__sk_common.skc_p= rot->orphan_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sk->__sk_common= =2Eskc_prot->orphan_count))) *)(&(*sk->__sk_common.skc_prot->orphan_count))= ); (typeof((typeof(*(&(*sk->__sk_common.skc_prot->orphan_count))) *)(&(*sk-= >__sk_common.skc_prot->orphan_count)))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(*sk->__sk_common.skc_prot->orpha= n_count)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned lo= ng __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*sk->__sk_common.skc_prot-= >orphan_count))) *)(&(*sk->__sk_common.skc_prot->orphan_count))); (typeof((= typeof(*(&(*sk->__sk_common.skc_prot->orphan_count))) *)(&(*sk->__sk_common= =2Eskc_prot->orphan_count)))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsi= gned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dumm= y2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0);= } while (0);break; case 8: do { unsigned long __flags; do { ({ unsigned lo= ng __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1;= }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const vo= id *__vpp_verify =3D (typeof((&(*sk->__sk_common.skc_prot->orphan_count)) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(&(*sk->__sk_common.skc_prot->orphan_cou= nt))) *)(&(*sk->__sk_common.skc_prot->orphan_count))); (typeof((typeof(*(&(= *sk->__sk_common.skc_prot->orphan_count))) *)(&(*sk->__sk_common.skc_prot->= orphan_count)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_c= urrent())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); d= o { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);= break; default: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D void inet_csk_destroy_sock(struct sock *sk);=0D void inet_csk_prepare_forced_close(struct sock *sk);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __poll_t inet_csk_listen_pol= l(const struct sock *sk)=0D {=0D return !reqsk_queue_empty(&inet_csk(sk)->icsk_accept_queue) ?=0D (( __poll_t)0x00000001 | ( __poll_t)0x00000040) : 0;=0D }=0D =0D int inet_csk_listen_start(struct sock *sk);=0D void inet_csk_listen_stop(struct sock *sk);=0D =0D void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr);=0D =0D =0D void inet_csk_update_fastreuse(struct inet_bind_bucket *tb,=0D struct sock *sk);=0D =0D struct dst_entry *inet_csk_update_pmtu(struct sock *sk, u32 mtu);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_enter_pingpong= _mode(struct sock *sk)=0D {=0D inet_csk(sk)->icsk_ack.pingpong =3D 3;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_exit_pingpong_= mode(struct sock *sk)=0D {=0D inet_csk(sk)->icsk_ack.pingpong =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_csk_in_pingpong_mo= de(struct sock *sk)=0D {=0D return inet_csk(sk)->icsk_ack.pingpong >=3D 3;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_csk_inc_pingpong_c= nt(struct sock *sk)=0D {=0D struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (icsk->icsk_ack.pingpong < ((u8)~0U))=0D icsk->icsk_ack.pingpong++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_csk_has_ulp(struct= sock *sk)=0D {=0D return inet_sk(sk)->is_icsk && !!inet_csk(sk)->icsk_ulp_ops;=0D }=0D # 21 "./include/linux/tcp.h" 2=0D # 1 "./include/net/inet_timewait_sock.h" 1=0D # 22 "./include/net/inet_timewait_sock.h"=0D # 1 "./include/net/timewait_sock.h" 1=0D # 14 "./include/net/timewait_sock.h"=0D struct timewait_sock_ops {=0D struct kmem_cache *twsk_slab;=0D char *twsk_slab_name;=0D unsigned int twsk_obj_size;=0D int (*twsk_unique)(struct sock *sk,=0D struct sock *sktw, void *twp);=0D void (*twsk_destructor)(struct sock *sk);=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int twsk_unique(struct sock = *sk, struct sock *sktw, void *twp)=0D {=0D if (sk->__sk_common.skc_prot->twsk_prot->twsk_unique !=3D ((void *)0))=0D return sk->__sk_common.skc_prot->twsk_prot->twsk_unique(sk, sktw, twp);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void twsk_destructor(struct = sock *sk)=0D {=0D if (sk->__sk_common.skc_prot->twsk_prot->twsk_destructor !=3D ((void *)0))= =0D sk->__sk_common.skc_prot->twsk_prot->twsk_destructor(sk);=0D }=0D # 23 "./include/net/inet_timewait_sock.h" 2=0D =0D =0D =0D struct inet_bind_bucket;=0D =0D =0D =0D =0D =0D =0D struct inet_timewait_sock {=0D =0D =0D =0D =0D struct sock_common __tw_common;=0D # 60 "./include/net/inet_timewait_sock.h"=0D __u32 tw_mark;=0D volatile unsigned char tw_substate;=0D unsigned char tw_rcv_wscale;=0D =0D =0D =0D __be16 tw_sport;=0D =0D unsigned int tw_transparent : 1,=0D tw_flowlabel : 20,=0D tw_pad : 3,=0D tw_tos : 8;=0D u32 tw_txhash;=0D u32 tw_priority;=0D u32 tw_bslot;=0D struct timer_list tw_timer;=0D struct inet_bind_bucket *tw_tb;=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_timewait_sock *i= net_twsk(const struct sock *sk)=0D {=0D return (struct inet_timewait_sock *)sk;=0D }=0D =0D void inet_twsk_free(struct inet_timewait_sock *tw);=0D void inet_twsk_put(struct inet_timewait_sock *tw);=0D =0D void inet_twsk_bind_unhash(struct inet_timewait_sock *tw,=0D struct inet_hashinfo *hashinfo);=0D =0D struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk,=0D struct inet_timewait_death_row *dr,=0D const int state);=0D =0D void inet_twsk_hashdance(struct inet_timewait_sock *tw, struct sock *sk,=0D struct inet_hashinfo *hashinfo);=0D =0D void __inet_twsk_schedule(struct inet_timewait_sock *tw, int timeo,=0D bool rearm);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_twsk_schedule(stru= ct inet_timewait_sock *tw, int timeo)=0D {=0D __inet_twsk_schedule(tw, timeo, false);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_twsk_reschedule(st= ruct inet_timewait_sock *tw, int timeo)=0D {=0D __inet_twsk_schedule(tw, timeo, true);=0D }=0D =0D void inet_twsk_deschedule_put(struct inet_timewait_sock *tw);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct net *twsk_net(const struct inet_timewait_sock *twsk)=0D {=0D return read_pnet(&twsk->__tw_common.skc_net);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void twsk_net_set(struct inet_timewait_sock *twsk, struct net *net)=0D {=0D write_pnet(&twsk->__tw_common.skc_net, net);=0D }=0D # 22 "./include/linux/tcp.h" 2=0D # 1 "./include/uapi/linux/tcp.h" 1=0D # 25 "./include/uapi/linux/tcp.h"=0D struct tcphdr {=0D __be16 source;=0D __be16 dest;=0D __be32 seq;=0D __be32 ack_seq;=0D =0D __u16 res1:4,=0D doff:4,=0D fin:1,=0D syn:1,=0D rst:1,=0D psh:1,=0D ack:1,=0D urg:1,=0D ece:1,=0D cwr:1;=0D # 55 "./include/uapi/linux/tcp.h"=0D __be16 window;=0D __sum16 check;=0D __be16 urg_ptr;=0D };=0D =0D =0D =0D =0D =0D =0D union tcp_word_hdr {=0D struct tcphdr hdr;=0D __be32 words[5];=0D };=0D =0D =0D =0D enum {=0D TCP_FLAG_CWR =3D (( __be32)((__u32)( (((__u32)((0x00800000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00800000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00800000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00800000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_ECE =3D (( __be32)((__u32)( (((__u32)((0x00400000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00400000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00400000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00400000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_URG =3D (( __be32)((__u32)( (((__u32)((0x00200000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00200000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00200000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00200000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_ACK =3D (( __be32)((__u32)( (((__u32)((0x00100000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00100000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00100000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00100000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_PSH =3D (( __be32)((__u32)( (((__u32)((0x00080000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00080000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00080000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00080000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_RST =3D (( __be32)((__u32)( (((__u32)((0x00040000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00040000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00040000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00040000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_SYN =3D (( __be32)((__u32)( (((__u32)((0x00020000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00020000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00020000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00020000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_FLAG_FIN =3D (( __be32)((__u32)( (((__u32)((0x00010000)) & (__u32)0x00= 0000ffUL) << 24) | (((__u32)((0x00010000)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)((0x00010000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00010000= )) & (__u32)0xff000000UL) >> 24)))),=0D TCP_RESERVED_BITS =3D (( __be32)((__u32)( (((__u32)((0x0F000000)) & (__u32= )0x000000ffUL) << 24) | (((__u32)((0x0F000000)) & (__u32)0x0000ff00UL) << 8= ) | (((__u32)((0x0F000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0F0= 00000)) & (__u32)0xff000000UL) >> 24)))),=0D TCP_DATA_OFFSET =3D (( __be32)((__u32)( (((__u32)((0xF0000000)) & (__u32)0= x000000ffUL) << 24) | (((__u32)((0xF0000000)) & (__u32)0x0000ff00UL) << 8) = | (((__u32)((0xF0000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xF0000= 000)) & (__u32)0xff000000UL) >> 24))))=0D };=0D # 137 "./include/uapi/linux/tcp.h"=0D struct tcp_repair_opt {=0D __u32 opt_code;=0D __u32 opt_val;=0D };=0D =0D struct tcp_repair_window {=0D __u32 snd_wl1;=0D __u32 snd_wnd;=0D __u32 max_window;=0D =0D __u32 rcv_wnd;=0D __u32 rcv_wup;=0D };=0D =0D enum {=0D TCP_NO_QUEUE,=0D TCP_RECV_QUEUE,=0D TCP_SEND_QUEUE,=0D TCP_QUEUES_NR,=0D };=0D =0D =0D enum tcp_fastopen_client_fail {=0D TFO_STATUS_UNSPEC,=0D TFO_COOKIE_UNAVAILABLE,=0D TFO_DATA_NOT_ACKED,=0D TFO_SYN_RETRANSMITTED,=0D };=0D # 179 "./include/uapi/linux/tcp.h"=0D enum tcp_ca_state {=0D =0D =0D =0D =0D TCP_CA_Open =3D 0,=0D =0D =0D =0D =0D =0D =0D =0D TCP_CA_Disorder =3D 1,=0D =0D =0D =0D =0D =0D =0D TCP_CA_CWR =3D 2,=0D =0D =0D =0D =0D =0D TCP_CA_Recovery =3D 3,=0D =0D =0D =0D =0D TCP_CA_Loss =3D 4=0D =0D };=0D =0D struct tcp_info {=0D __u8 tcpi_state;=0D __u8 tcpi_ca_state;=0D __u8 tcpi_retransmits;=0D __u8 tcpi_probes;=0D __u8 tcpi_backoff;=0D __u8 tcpi_options;=0D __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;=0D __u8 tcpi_delivery_rate_app_limited:1, tcpi_fastopen_client_fail:2;=0D =0D __u32 tcpi_rto;=0D __u32 tcpi_ato;=0D __u32 tcpi_snd_mss;=0D __u32 tcpi_rcv_mss;=0D =0D __u32 tcpi_unacked;=0D __u32 tcpi_sacked;=0D __u32 tcpi_lost;=0D __u32 tcpi_retrans;=0D __u32 tcpi_fackets;=0D =0D =0D __u32 tcpi_last_data_sent;=0D __u32 tcpi_last_ack_sent;=0D __u32 tcpi_last_data_recv;=0D __u32 tcpi_last_ack_recv;=0D =0D =0D __u32 tcpi_pmtu;=0D __u32 tcpi_rcv_ssthresh;=0D __u32 tcpi_rtt;=0D __u32 tcpi_rttvar;=0D __u32 tcpi_snd_ssthresh;=0D __u32 tcpi_snd_cwnd;=0D __u32 tcpi_advmss;=0D __u32 tcpi_reordering;=0D =0D __u32 tcpi_rcv_rtt;=0D __u32 tcpi_rcv_space;=0D =0D __u32 tcpi_total_retrans;=0D =0D __u64 tcpi_pacing_rate;=0D __u64 tcpi_max_pacing_rate;=0D __u64 tcpi_bytes_acked;=0D __u64 tcpi_bytes_received;=0D __u32 tcpi_segs_out;=0D __u32 tcpi_segs_in;=0D =0D __u32 tcpi_notsent_bytes;=0D __u32 tcpi_min_rtt;=0D __u32 tcpi_data_segs_in;=0D __u32 tcpi_data_segs_out;=0D =0D __u64 tcpi_delivery_rate;=0D =0D __u64 tcpi_busy_time;=0D __u64 tcpi_rwnd_limited;=0D __u64 tcpi_sndbuf_limited;=0D =0D __u32 tcpi_delivered;=0D __u32 tcpi_delivered_ce;=0D =0D __u64 tcpi_bytes_sent;=0D __u64 tcpi_bytes_retrans;=0D __u32 tcpi_dsack_dups;=0D __u32 tcpi_reord_seen;=0D =0D __u32 tcpi_rcv_ooopack;=0D =0D __u32 tcpi_snd_wnd;=0D =0D =0D };=0D =0D =0D enum {=0D TCP_NLA_PAD,=0D TCP_NLA_BUSY,=0D TCP_NLA_RWND_LIMITED,=0D TCP_NLA_SNDBUF_LIMITED,=0D TCP_NLA_DATA_SEGS_OUT,=0D TCP_NLA_TOTAL_RETRANS,=0D TCP_NLA_PACING_RATE,=0D TCP_NLA_DELIVERY_RATE,=0D TCP_NLA_SND_CWND,=0D TCP_NLA_REORDERING,=0D TCP_NLA_MIN_RTT,=0D TCP_NLA_RECUR_RETRANS,=0D TCP_NLA_DELIVERY_RATE_APP_LMT,=0D TCP_NLA_SNDQ_SIZE,=0D TCP_NLA_CA_STATE,=0D TCP_NLA_SND_SSTHRESH,=0D TCP_NLA_DELIVERED,=0D TCP_NLA_DELIVERED_CE,=0D TCP_NLA_BYTES_SENT,=0D TCP_NLA_BYTES_RETRANS,=0D TCP_NLA_DSACK_DUPS,=0D TCP_NLA_REORD_SEEN,=0D TCP_NLA_SRTT,=0D TCP_NLA_TIMEOUT_REHASH,=0D TCP_NLA_BYTES_NOTSENT,=0D TCP_NLA_EDT,=0D TCP_NLA_TTL,=0D };=0D # 327 "./include/uapi/linux/tcp.h"=0D struct tcp_md5sig {=0D struct __kernel_sockaddr_storage tcpm_addr;=0D __u8 tcpm_flags;=0D __u8 tcpm_prefixlen;=0D __u16 tcpm_keylen;=0D int tcpm_ifindex;=0D __u8 tcpm_key[80];=0D };=0D =0D =0D struct tcp_diag_md5sig {=0D __u8 tcpm_family;=0D __u8 tcpm_prefixlen;=0D __u16 tcpm_keylen;=0D __be32 tcpm_addr[4];=0D __u8 tcpm_key[80];=0D };=0D =0D =0D =0D =0D struct tcp_zerocopy_receive {=0D __u64 address;=0D __u32 length;=0D __u32 recv_skip_hint;=0D __u32 inq;=0D __s32 err;=0D __u64 copybuf_address;=0D __s32 copybuf_len;=0D __u32 flags;=0D __u64 msg_control;=0D __u64 msg_controllen;=0D __u32 msg_flags;=0D __u32 reserved;=0D };=0D # 23 "./include/linux/tcp.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcphdr *tcp_hdr(const= struct sk_buff *skb)=0D {=0D return (struct tcphdr *)skb_transport_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __tcp_hdrlen(co= nst struct tcphdr *th)=0D {=0D return th->doff * 4;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tcp_hdrlen(cons= t struct sk_buff *skb)=0D {=0D return __tcp_hdrlen(tcp_hdr(skb));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcphdr *inner_tcp_hdr= (const struct sk_buff *skb)=0D {=0D return (struct tcphdr *)skb_inner_transport_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int inner_tcp_hdrle= n(const struct sk_buff *skb)=0D {=0D return inner_tcp_hdr(skb)->doff * 4;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tcp_optlen(cons= t struct sk_buff *skb)=0D {=0D return (tcp_hdr(skb)->doff - 5) * 4;=0D }=0D =0D =0D =0D =0D =0D =0D =0D struct tcp_fastopen_cookie {=0D __le64 val[(((16) + (sizeof(u64)) - 1) / (sizeof(u64)))];=0D s8 len;=0D bool exp;=0D };=0D =0D =0D struct tcp_sack_block_wire {=0D __be32 start_seq;=0D __be32 end_seq;=0D };=0D =0D struct tcp_sack_block {=0D u32 start_seq;=0D u32 end_seq;=0D };=0D =0D =0D =0D =0D =0D struct tcp_options_received {=0D =0D int ts_recent_stamp;=0D u32 ts_recent;=0D u32 rcv_tsval;=0D u32 rcv_tsecr;=0D u16 saw_tstamp : 1,=0D tstamp_ok : 1,=0D dsack : 1,=0D wscale_ok : 1,=0D sack_ok : 3,=0D smc_ok : 1,=0D snd_wscale : 4,=0D rcv_wscale : 4;=0D u8 saw_unknown:1,=0D unused:7;=0D u8 num_sacks;=0D u16 user_mss;=0D u16 mss_clamp;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_clear_options(struc= t tcp_options_received *rx_opt)=0D {=0D rx_opt->tstamp_ok =3D rx_opt->sack_ok =3D 0;=0D rx_opt->wscale_ok =3D rx_opt->snd_wscale =3D 0;=0D =0D =0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D struct tcp_request_sock_ops;=0D =0D struct tcp_request_sock {=0D struct inet_request_sock req;=0D const struct tcp_request_sock_ops *af_specific;=0D u64 snt_synack;=0D bool tfo_listener;=0D bool is_mptcp;=0D =0D =0D =0D u32 txhash;=0D u32 rcv_isn;=0D u32 snt_isn;=0D u32 ts_off;=0D u32 last_oow_ack_time;=0D u32 rcv_nxt;=0D =0D =0D =0D u8 syn_tos;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcp_request_sock *tcp= _rsk(const struct request_sock *req)=0D {=0D return (struct tcp_request_sock *)req;=0D }=0D =0D struct tcp_sock {=0D =0D struct inet_connection_sock inet_conn;=0D u16 tcp_header_len;=0D u16 gso_segs;=0D =0D =0D =0D =0D =0D __be32 pred_flags;=0D =0D =0D =0D =0D =0D =0D u64 bytes_received;=0D =0D =0D =0D u32 segs_in;=0D =0D =0D u32 data_segs_in;=0D =0D =0D u32 rcv_nxt;=0D u32 copied_seq;=0D u32 rcv_wup;=0D u32 snd_nxt;=0D u32 segs_out;=0D =0D =0D u32 data_segs_out;=0D =0D =0D u64 bytes_sent;=0D =0D =0D u64 bytes_acked;=0D =0D =0D =0D u32 dsack_dups;=0D =0D =0D u32 snd_una;=0D u32 snd_sml;=0D u32 rcv_tstamp;=0D u32 lsndtime;=0D u32 last_oow_ack_time;=0D u32 compressed_ack_rcv_nxt;=0D =0D u32 tsoffset;=0D =0D struct list_head tsq_node;=0D struct list_head tsorted_sent_queue;=0D =0D u32 snd_wl1;=0D u32 snd_wnd;=0D u32 max_window;=0D u32 mss_cache;=0D =0D u32 window_clamp;=0D u32 rcv_ssthresh;=0D =0D =0D struct tcp_rack {=0D u64 mstamp;=0D u32 rtt_us;=0D u32 end_seq;=0D u32 last_delivered;=0D u8 reo_wnd_steps;=0D =0D u8 reo_wnd_persist:5,=0D dsack_seen:1,=0D advanced:1;=0D } rack;=0D u16 advmss;=0D u8 compressed_ack;=0D u8 dup_ack_counter:2,=0D tlp_retrans:1,=0D unused:5;=0D u32 chrono_start;=0D u32 chrono_stat[3];=0D u8 chrono_type:2,=0D rate_app_limited:1,=0D fastopen_connect:1,=0D fastopen_no_cookie:1,=0D is_sack_reneg:1,=0D fastopen_client_fail:2;=0D u8 nonagle : 4,=0D thin_lto : 1,=0D recvmsg_inq : 1,=0D repair : 1,=0D frto : 1;=0D u8 repair_queue;=0D u8 save_syn:2,=0D syn_data:1,=0D syn_fastopen:1,=0D syn_fastopen_exp:1,=0D syn_fastopen_ch:1,=0D syn_data_acked:1,=0D is_cwnd_limited:1;=0D u32 tlp_high_seq;=0D =0D u32 tcp_tx_delay;=0D u64 tcp_wstamp_ns;=0D u64 tcp_clock_cache;=0D =0D =0D u64 tcp_mstamp;=0D u32 srtt_us;=0D u32 mdev_us;=0D u32 mdev_max_us;=0D u32 rttvar_us;=0D u32 rtt_seq;=0D struct minmax rtt_min;=0D =0D u32 packets_out;=0D u32 retrans_out;=0D u32 max_packets_out;=0D u32 max_packets_seq;=0D =0D u16 urg_data;=0D u8 ecn_flags;=0D u8 keepalive_probes;=0D u32 reordering;=0D u32 reord_seen;=0D u32 snd_up;=0D =0D =0D =0D =0D struct tcp_options_received rx_opt;=0D =0D =0D =0D =0D u32 snd_ssthresh;=0D u32 snd_cwnd;=0D u32 snd_cwnd_cnt;=0D u32 snd_cwnd_clamp;=0D u32 snd_cwnd_used;=0D u32 snd_cwnd_stamp;=0D u32 prior_cwnd;=0D u32 prr_delivered;=0D =0D u32 prr_out;=0D u32 delivered;=0D u32 delivered_ce;=0D u32 lost;=0D u32 app_limited;=0D u64 first_tx_mstamp;=0D u64 delivered_mstamp;=0D u32 rate_delivered;=0D u32 rate_interval_us;=0D =0D u32 rcv_wnd;=0D u32 write_seq;=0D u32 notsent_lowat;=0D u32 pushed_seq;=0D u32 lost_out;=0D u32 sacked_out;=0D =0D struct hrtimer pacing_timer;=0D struct hrtimer compressed_ack_timer;=0D =0D =0D struct sk_buff* lost_skb_hint;=0D struct sk_buff *retransmit_skb_hint;=0D =0D =0D struct rb_root out_of_order_queue;=0D struct sk_buff *ooo_last_skb;=0D =0D =0D struct tcp_sack_block duplicate_sack[1];=0D struct tcp_sack_block selective_acks[4];=0D =0D struct tcp_sack_block recv_sack_cache[4];=0D =0D struct sk_buff *highest_sack;=0D =0D =0D =0D =0D =0D int lost_cnt_hint;=0D =0D u32 prior_ssthresh;=0D u32 high_seq;=0D =0D u32 retrans_stamp;=0D =0D =0D u32 undo_marker;=0D int undo_retrans;=0D u64 bytes_retrans;=0D =0D =0D u32 total_retrans;=0D =0D u32 urg_seq;=0D unsigned int keepalive_time;=0D unsigned int keepalive_intvl;=0D =0D int linger2;=0D =0D =0D =0D =0D u8 bpf_sock_ops_cb_flags;=0D =0D =0D =0D =0D =0D =0D =0D u16 timeout_rehash;=0D =0D u32 rcv_ooopack;=0D =0D =0D u32 rcv_rtt_last_tsecr;=0D struct {=0D u32 rtt_us;=0D u32 seq;=0D u64 time;=0D } rcv_rtt_est;=0D =0D =0D struct {=0D u32 space;=0D u32 seq;=0D u64 time;=0D } rcvq_space;=0D =0D =0D struct {=0D u32 probe_seq_start;=0D u32 probe_seq_end;=0D } mtu_probe;=0D u32 mtu_info;=0D # 410 "./include/linux/tcp.h"=0D struct tcp_fastopen_request *fastopen_req;=0D =0D =0D =0D struct request_sock *fastopen_rsk;=0D struct saved_syn *saved_syn;=0D };=0D =0D enum tsq_enum {=0D TSQ_THROTTLED,=0D TSQ_QUEUED,=0D TCP_TSQ_DEFERRED,=0D TCP_WRITE_TIMER_DEFERRED,=0D TCP_DELACK_TIMER_DEFERRED,=0D TCP_MTU_REDUCED_DEFERRED,=0D =0D =0D };=0D =0D enum tsq_flags {=0D TSQF_THROTTLED =3D (1UL << TSQ_THROTTLED),=0D TSQF_QUEUED =3D (1UL << TSQ_QUEUED),=0D TCPF_TSQ_DEFERRED =3D (1UL << TCP_TSQ_DEFERRED),=0D TCPF_WRITE_TIMER_DEFERRED =3D (1UL << TCP_WRITE_TIMER_DEFERRED),=0D TCPF_DELACK_TIMER_DEFERRED =3D (1UL << TCP_DELACK_TIMER_DEFERRED),=0D TCPF_MTU_REDUCED_DEFERRED =3D (1UL << TCP_MTU_REDUCED_DEFERRED),=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcp_sock *tcp_sk(cons= t struct sock *sk)=0D {=0D return (struct tcp_sock *)sk;=0D }=0D =0D struct tcp_timewait_sock {=0D struct inet_timewait_sock tw_sk;=0D =0D =0D u32 tw_rcv_wnd;=0D u32 tw_ts_offset;=0D u32 tw_ts_recent;=0D =0D =0D u32 tw_last_oow_ack_time;=0D =0D int tw_ts_recent_stamp;=0D u32 tw_tx_delay;=0D =0D =0D =0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcp_timewait_sock *tc= p_twsk(const struct sock *sk)=0D {=0D return (struct tcp_timewait_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_passive_fastopen(co= nst struct sock *sk)=0D {=0D return sk->__sk_common.skc_state =3D=3D TCP_SYN_RECV &&=0D ({ typeof(*(tcp_sk(sk)->fastopen_rsk)) *__UNIQUE_ID_rcu444 =3D (typ= eof(*(tcp_sk(sk)->fastopen_rsk)) *)({ do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_445(void) ; if (!((sizeof((tcp_sk(sk)->fasto= pen_rsk)) =3D=3D sizeof(char) || sizeof((tcp_sk(sk)->fastopen_rsk)) =3D=3D = sizeof(short) || sizeof((tcp_sk(sk)->fastopen_rsk)) =3D=3D sizeof(int) || s= izeof((tcp_sk(sk)->fastopen_rsk)) =3D=3D sizeof(long)) || sizeof((tcp_sk(sk= )->fastopen_rsk)) =3D=3D sizeof(long long))) __compiletime_assert_445(); } = while (0); (*(const volatile typeof( _Generic(((tcp_sk(sk)->fastopen_rsk)),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: ((tcp_sk(sk)->fastop= en_rsk)))) *)&((tcp_sk(sk)->fastopen_rsk))); }); ; ((typeof(*(tcp_sk(sk)->f= astopen_rsk)) *)(__UNIQUE_ID_rcu444)); }) !=3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fastopen_queue_tune(str= uct sock *sk, int backlog)=0D {=0D struct request_sock_queue *queue =3D &inet_csk(sk)->icsk_accept_queue;=0D int somaxconn =3D ({ do { __attribute__((__noreturn__)) extern void __comp= iletime_assert_446(void) ; if (!((sizeof(sock_net(sk)->core.sysctl_somaxcon= n) =3D=3D sizeof(char) || sizeof(sock_net(sk)->core.sysctl_somaxconn) =3D= =3D sizeof(short) || sizeof(sock_net(sk)->core.sysctl_somaxconn) =3D=3D siz= eof(int) || sizeof(sock_net(sk)->core.sysctl_somaxconn) =3D=3D sizeof(long)= ) || sizeof(sock_net(sk)->core.sysctl_somaxconn) =3D=3D sizeof(long long)))= __compiletime_assert_446(); } while (0); (*(const volatile typeof( _Generi= c((sock_net(sk)->core.sysctl_somaxconn), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: (sock_net(sk)->core.sysctl_somaxconn))) *)&(sock_net(sk= )->core.sysctl_somaxconn)); });=0D =0D queue->fastopenq.max_qlen =3D __builtin_choose_expr(((!!(sizeof((typeof((u= nsigned int)(backlog)) *)1 =3D=3D (typeof((unsigned int)(somaxconn)) *)1)))= && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned int)(backl= og)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((lo= ng)((unsigned int)(somaxconn)) * 0l)) : (int *)8))))), (((unsigned int)(bac= klog)) < ((unsigned int)(somaxconn)) ? ((unsigned int)(backlog)) : ((unsign= ed int)(somaxconn))), ({ typeof((unsigned int)(backlog)) __UNIQUE_ID___x447= =3D ((unsigned int)(backlog)); typeof((unsigned int)(somaxconn)) __UNIQUE_= ID___y448 =3D ((unsigned int)(somaxconn)); ((__UNIQUE_ID___x447) < (__UNIQU= E_ID___y448) ? (__UNIQUE_ID___x447) : (__UNIQUE_ID___y448)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_move_syn(struct tcp= _sock *tp,=0D struct request_sock *req)=0D {=0D tp->saved_syn =3D req->saved_syn;=0D req->saved_syn =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_saved_syn_free(stru= ct tcp_sock *tp)=0D {=0D kfree(tp->saved_syn);=0D tp->saved_syn =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_saved_syn_len(const = struct saved_syn *saved_syn)=0D {=0D return saved_syn->mac_hdrlen + saved_syn->network_hdrlen +=0D saved_syn->tcp_hdrlen;=0D }=0D =0D struct sk_buff *tcp_get_timestamping_opt_stats(const struct sock *sk,=0D const struct sk_buff *orig_skb,=0D const struct sk_buff *ack_skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 tcp_mss_clamp(const stru= ct tcp_sock *tp, u16 mss)=0D {=0D =0D =0D =0D u16 user_mss =3D ({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_449(void) ; if (!((sizeof(tp->rx_opt.user_mss) =3D=3D sizeof(= char) || sizeof(tp->rx_opt.user_mss) =3D=3D sizeof(short) || sizeof(tp->rx_= opt.user_mss) =3D=3D sizeof(int) || sizeof(tp->rx_opt.user_mss) =3D=3D size= of(long)) || sizeof(tp->rx_opt.user_mss) =3D=3D sizeof(long long))) __compi= letime_assert_449(); } while (0); (*(const volatile typeof( _Generic((tp->r= x_opt.user_mss), char: (char)0, unsigned char: (unsigned char)0, signed cha= r: (signed char)0, unsigned short: (unsigned short)0, signed short: (signed= short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigne= d long: (unsigned long)0, signed long: (signed long)0, unsigned long long: = (unsigned long long)0, signed long long: (signed long long)0, default: (tp-= >rx_opt.user_mss))) *)&(tp->rx_opt.user_mss)); });=0D =0D return (user_mss && user_mss < mss) ? user_mss : mss;=0D }=0D =0D int tcp_skb_shift(struct sk_buff *to, struct sk_buff *from, int pcount,=0D int shiftlen);=0D =0D void __tcp_sock_set_cork(struct sock *sk, bool on);=0D void tcp_sock_set_cork(struct sock *sk, bool on);=0D int tcp_sock_set_keepcnt(struct sock *sk, int val);=0D int tcp_sock_set_keepidle_locked(struct sock *sk, int val);=0D int tcp_sock_set_keepidle(struct sock *sk, int val);=0D int tcp_sock_set_keepintvl(struct sock *sk, int val);=0D void __tcp_sock_set_nodelay(struct sock *sk, bool on);=0D void tcp_sock_set_nodelay(struct sock *sk);=0D void tcp_sock_set_quickack(struct sock *sk, int val);=0D int tcp_sock_set_syncnt(struct sock *sk, int val);=0D void tcp_sock_set_user_timeout(struct sock *sk, u32 val);=0D # 93 "./include/linux/ipv6.h" 2=0D # 1 "./include/linux/udp.h" 1=0D # 19 "./include/linux/udp.h"=0D # 1 "./include/uapi/linux/udp.h" 1=0D # 23 "./include/uapi/linux/udp.h"=0D struct udphdr {=0D __be16 source;=0D __be16 dest;=0D __be16 len;=0D __sum16 check;=0D };=0D # 20 "./include/linux/udp.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct udphdr *udp_hdr(const= struct sk_buff *skb)=0D {=0D return (struct udphdr *)skb_transport_header(skb);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 udp_hashfn(const struct = net *net, u32 num, u32 mask)=0D {=0D return (num + net_hash_mix(net)) & mask;=0D }=0D =0D struct udp_sock {=0D =0D struct inet_sock inet;=0D =0D =0D =0D int pending;=0D unsigned int corkflag;=0D __u8 encap_type;=0D unsigned char no_check6_tx:1,=0D no_check6_rx:1,=0D encap_enabled:1,=0D =0D =0D =0D =0D gro_enabled:1,=0D accept_udp_l4:1,=0D accept_udp_fraglist:1;=0D =0D =0D =0D =0D __u16 len;=0D __u16 gso_size;=0D =0D =0D =0D __u16 pcslen;=0D __u16 pcrlen;=0D =0D =0D =0D =0D __u8 pcflag;=0D __u8 unused[3];=0D =0D =0D =0D int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);=0D int (*encap_err_lookup)(struct sock *sk, struct sk_buff *skb);=0D void (*encap_destroy)(struct sock *sk);=0D =0D =0D struct sk_buff * (*gro_receive)(struct sock *sk,=0D struct list_head *head,=0D struct sk_buff *skb);=0D int (*gro_complete)(struct sock *sk,=0D struct sk_buff *skb,=0D int nhoff);=0D =0D =0D struct sk_buff_head reader_queue __attribute__((__aligned__((1 << 6))));=0D =0D =0D int forward_deficit;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct udp_sock *udp_sk(cons= t struct sock *sk)=0D {=0D return (struct udp_sock *)sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void udp_set_no_check6_tx(st= ruct sock *sk, bool val)=0D {=0D udp_sk(sk)->no_check6_tx =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void udp_set_no_check6_rx(st= ruct sock *sk, bool val)=0D {=0D udp_sk(sk)->no_check6_rx =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool udp_get_no_check6_tx(st= ruct sock *sk)=0D {=0D return udp_sk(sk)->no_check6_tx;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool udp_get_no_check6_rx(st= ruct sock *sk)=0D {=0D return udp_sk(sk)->no_check6_rx;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void udp_cmsg_recv(struct ms= ghdr *msg, struct sock *sk,=0D struct sk_buff *skb)=0D {=0D int gso_size;=0D =0D if (((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO= _UDP_L4) {=0D gso_size =3D ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size= ;=0D put_cmsg(msg, 17, 104, sizeof(gso_size), &gso_size);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool udp_unexpected_gso(stru= ct sock *sk, struct sk_buff *skb)=0D {=0D if (!skb_is_gso(skb))=0D return false;=0D =0D if (((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO= _UDP_L4 && !udp_sk(sk)->accept_udp_l4)=0D return true;=0D =0D if (((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO= _FRAGLIST && !udp_sk(sk)->accept_udp_fraglist)=0D return true;=0D =0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void udp_allow_gso(struct so= ck *sk)=0D {=0D udp_sk(sk)->accept_udp_l4 =3D 1;=0D udp_sk(sk)->accept_udp_fraglist =3D 1;=0D }=0D # 94 "./include/linux/ipv6.h" 2=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6hdr *ipv6_hdr(con= st struct sk_buff *skb)=0D {=0D return (struct ipv6hdr *)skb_network_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6hdr *inner_ipv6_h= dr(const struct sk_buff *skb)=0D {=0D return (struct ipv6hdr *)skb_inner_network_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6hdr *ipipv6_hdr(c= onst struct sk_buff *skb)=0D {=0D return (struct ipv6hdr *)skb_transport_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ipv6_transport_= len(const struct sk_buff *skb)=0D {=0D return (__builtin_constant_p((__u16)(( __u16)(__be16)(ipv6_hdr(skb)->paylo= ad_len))) ? ((__u16)( (((__u16)(( __u16)(__be16)(ipv6_hdr(skb)->payload_len= )) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(ipv6_hdr(skb)->payl= oad_len)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(ipv6_hdr(s= kb)->payload_len))) + sizeof(struct ipv6hdr) -=0D skb_network_header_len(skb);=0D }=0D =0D =0D =0D =0D =0D =0D struct inet6_skb_parm {=0D int iif;=0D __be16 ra;=0D __u16 dst0;=0D __u16 srcrt;=0D __u16 dst1;=0D __u16 lastopt;=0D __u16 nhoff;=0D __u16 flags;=0D =0D =0D =0D __u16 frag_max_size;=0D __u16 srhoff;=0D # 147 "./include/linux/ipv6.h"=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_l3mdev_skb(__u16 f= lags)=0D {=0D return false;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet6_iif(const struct s= k_buff *skb)=0D {=0D bool l3_slave =3D ipv6_l3mdev_skb(((struct inet6_skb_parm*)((skb)->cb))->f= lags);=0D =0D return l3_slave ? skb->skb_iif : ((struct inet6_skb_parm*)((skb)->cb))->ii= f;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet6_is_jumbogram(cons= t struct sk_buff *skb)=0D {=0D return !!(((struct inet6_skb_parm*)((skb)->cb))->flags & 128);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet6_sdif(const struct = sk_buff *skb)=0D {=0D =0D =0D =0D =0D return 0;=0D }=0D =0D struct tcp6_request_sock {=0D struct tcp_request_sock tcp6rsk_tcp;=0D };=0D =0D struct ipv6_mc_socklist;=0D struct ipv6_ac_socklist;=0D struct ipv6_fl_socklist;=0D =0D struct inet6_cork {=0D struct ipv6_txoptions *opt;=0D u8 hop_limit;=0D u8 tclass;=0D };=0D # 208 "./include/linux/ipv6.h"=0D struct ipv6_pinfo {=0D struct in6_addr saddr;=0D struct in6_pktinfo sticky_pktinfo;=0D const struct in6_addr *daddr_cache;=0D =0D =0D =0D =0D __be32 flow_label;=0D __u32 frag_size;=0D # 227 "./include/linux/ipv6.h"=0D __u16 __unused_1:7;=0D __s16 hop_limit:9;=0D # 237 "./include/linux/ipv6.h"=0D __u16 mc_loop:1,=0D __unused_2:6;=0D __s16 mcast_hops:9;=0D =0D int ucast_oif;=0D int mcast_oif;=0D =0D =0D union {=0D struct {=0D __u16 srcrt:1,=0D osrcrt:1,=0D rxinfo:1,=0D rxoinfo:1,=0D rxhlim:1,=0D rxohlim:1,=0D hopopts:1,=0D ohopopts:1,=0D dstopts:1,=0D odstopts:1,=0D rxflow:1,=0D rxtclass:1,=0D rxpmtu:1,=0D rxorigdstaddr:1,=0D recvfragsize:1;=0D =0D } bits;=0D __u16 all;=0D } rxopt;=0D =0D =0D __u16 recverr:1,=0D sndflow:1,=0D repflow:1,=0D pmtudisc:3,=0D padding:1,=0D srcprefs:3,=0D =0D =0D =0D dontfrag:1,=0D autoflowlabel:1,=0D autoflowlabel_set:1,=0D mc_all:1,=0D recverr_rfc4884:1,=0D rtalert_isolate:1;=0D __u8 min_hopcount;=0D __u8 tclass;=0D __be32 rcv_flowinfo;=0D =0D __u32 dst_cookie;=0D =0D struct ipv6_mc_socklist *ipv6_mc_list;=0D struct ipv6_ac_socklist *ipv6_ac_list;=0D struct ipv6_fl_socklist *ipv6_fl_list;=0D =0D struct ipv6_txoptions *opt;=0D struct sk_buff *pktoptions;=0D struct sk_buff *rxpmtu;=0D struct inet6_cork cork;=0D };=0D =0D =0D struct raw6_sock {=0D =0D struct inet_sock inet;=0D __u32 checksum;=0D __u32 offset;=0D struct icmp6_filter filter;=0D __u32 ip6mr_table;=0D =0D struct ipv6_pinfo inet6;=0D };=0D =0D struct udp6_sock {=0D struct udp_sock udp;=0D =0D struct ipv6_pinfo inet6;=0D };=0D =0D struct tcp6_sock {=0D struct tcp_sock tcp;=0D =0D struct ipv6_pinfo inet6;=0D };=0D =0D extern int inet6_sk_rebuild_header(struct sock *sk);=0D =0D struct tcp6_timewait_sock {=0D struct tcp_timewait_sock tcp6tw_tcp;=0D };=0D =0D =0D bool ipv6_mod_enabled(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6_pinfo *inet6_sk(= const struct sock *__sk)=0D {=0D return sk_fullsock(__sk) ? inet_sk(__sk)->pinet6 : ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct raw6_sock *raw6_sk(co= nst struct sock *sk)=0D {=0D return (struct raw6_sock *)sk;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct in6_addr *inet6= _rcv_saddr(const struct sock *sk)=0D {=0D if (sk->__sk_common.skc_family =3D=3D 10)=0D return &sk->__sk_common.skc_v6_rcv_saddr;=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_v6_ipv6only(const s= truct sock *sk)=0D {=0D =0D return ((sk->__sk_common.skc_ipv6only));=0D }=0D # 13 "./include/net/ipv6.h" 2=0D =0D =0D =0D # 1 "./include/linux/jump_label_ratelimit.h" 1=0D # 64 "./include/linux/jump_label_ratelimit.h"=0D struct static_key_deferred {=0D struct static_key key;=0D };=0D struct static_key_true_deferred {=0D struct static_key_true key;=0D };=0D struct static_key_false_deferred {=0D struct static_key_false key;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_slow_dec_def= erred(struct static_key_deferred *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label_ratelimit.h"), "i" (82), "i" ((1 << 0)|((1 << 3) | ((9= ) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D static_key_slow_dec(&key->key);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void static_key_deferred_flu= sh(void *key)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label_ratelimit.h"), "i" (87), "i" ((1 << 0)|((1 << 3) | ((9= ) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D jump_label_rate_limit(struct static_key_deferred *key,=0D unsigned long rl)=0D {=0D ({ int __ret_warn_on =3D !!(!static_key_initialized); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { do { } while(0); __warn_printk("%s(): static k= ey '%pS' used before call to jump_label_init()", __func__, (key)); do { __a= sm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\= t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %= 1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("incl= ude/linux/jump_label_ratelimit.h"), "i" (93), "i" ((1 << 0)|((1 << 3) | ((9= ) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do { } while(0); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D }=0D # 17 "./include/net/ipv6.h" 2=0D # 1 "./include/net/if_inet6.h" 1=0D # 29 "./include/net/if_inet6.h"=0D enum {=0D INET6_IFADDR_STATE_PREDAD,=0D INET6_IFADDR_STATE_DAD,=0D INET6_IFADDR_STATE_POSTDAD,=0D INET6_IFADDR_STATE_ERRDAD,=0D INET6_IFADDR_STATE_DEAD,=0D };=0D =0D struct inet6_ifaddr {=0D struct in6_addr addr;=0D __u32 prefix_len;=0D __u32 rt_priority;=0D =0D =0D __u32 valid_lft;=0D __u32 prefered_lft;=0D refcount_t refcnt;=0D spinlock_t lock;=0D =0D int state;=0D =0D __u32 flags;=0D __u8 dad_probes;=0D __u8 stable_privacy_retry;=0D =0D __u16 scope;=0D __u64 dad_nonce;=0D =0D unsigned long cstamp;=0D unsigned long tstamp;=0D =0D struct delayed_work dad_work;=0D =0D struct inet6_dev *idev;=0D struct fib6_info *rt;=0D =0D struct hlist_node addr_lst;=0D struct list_head if_list;=0D =0D struct list_head tmp_list;=0D struct inet6_ifaddr *ifpub;=0D int regen_count;=0D =0D bool tokenized;=0D =0D u8 ifa_proto;=0D =0D struct callback_head rcu;=0D struct in6_addr peer_addr;=0D };=0D =0D struct ip6_sf_socklist {=0D unsigned int sl_max;=0D unsigned int sl_count;=0D struct callback_head rcu;=0D struct in6_addr sl_addr[];=0D };=0D =0D =0D =0D struct ipv6_mc_socklist {=0D struct in6_addr addr;=0D int ifindex;=0D unsigned int sfmode;=0D struct ipv6_mc_socklist *next;=0D struct ip6_sf_socklist *sflist;=0D struct callback_head rcu;=0D };=0D =0D struct ip6_sf_list {=0D struct ip6_sf_list *sf_next;=0D struct in6_addr sf_addr;=0D unsigned long sf_count[2];=0D unsigned char sf_gsresp;=0D unsigned char sf_oldin;=0D unsigned char sf_crcount;=0D struct callback_head rcu;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct ifmcaddr6 {=0D struct in6_addr mca_addr;=0D struct inet6_dev *idev;=0D struct ifmcaddr6 *next;=0D struct ip6_sf_list *mca_sources;=0D struct ip6_sf_list *mca_tomb;=0D unsigned int mca_sfmode;=0D unsigned char mca_crcount;=0D unsigned long mca_sfcount[2];=0D struct delayed_work mca_work;=0D unsigned int mca_flags;=0D int mca_users;=0D refcount_t mca_refcnt;=0D unsigned long mca_cstamp;=0D unsigned long mca_tstamp;=0D struct callback_head rcu;=0D };=0D =0D =0D =0D struct ipv6_ac_socklist {=0D struct in6_addr acl_addr;=0D int acl_ifindex;=0D struct ipv6_ac_socklist *acl_next;=0D };=0D =0D struct ifacaddr6 {=0D struct in6_addr aca_addr;=0D struct fib6_info *aca_rt;=0D struct ifacaddr6 *aca_next;=0D struct hlist_node aca_addr_lst;=0D int aca_users;=0D refcount_t aca_refcnt;=0D unsigned long aca_cstamp;=0D unsigned long aca_tstamp;=0D struct callback_head rcu;=0D };=0D =0D =0D =0D =0D =0D struct ipv6_devstat {=0D struct proc_dir_entry *proc_dir_entry;=0D __typeof__(struct ipstats_mib) *ipv6;=0D __typeof__(struct icmpv6_mib_device) *icmpv6dev;=0D __typeof__(struct icmpv6msg_mib_device) *icmpv6msgdev;=0D };=0D =0D struct inet6_dev {=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D =0D struct list_head addr_list;=0D =0D struct ifmcaddr6 *mc_list;=0D struct ifmcaddr6 *mc_tomb;=0D =0D unsigned char mc_qrv;=0D unsigned char mc_gq_running;=0D unsigned char mc_ifc_count;=0D unsigned char mc_dad_count;=0D =0D unsigned long mc_v1_seen;=0D unsigned long mc_qi;=0D unsigned long mc_qri;=0D unsigned long mc_maxdelay;=0D =0D struct delayed_work mc_gq_work;=0D struct delayed_work mc_ifc_work;=0D struct delayed_work mc_dad_work;=0D struct delayed_work mc_query_work;=0D struct delayed_work mc_report_work;=0D =0D struct sk_buff_head mc_query_queue;=0D struct sk_buff_head mc_report_queue;=0D =0D spinlock_t mc_query_lock;=0D spinlock_t mc_report_lock;=0D struct mutex mc_lock;=0D =0D struct ifacaddr6 *ac_list;=0D rwlock_t lock;=0D refcount_t refcnt;=0D __u32 if_flags;=0D int dead;=0D =0D u32 desync_factor;=0D struct list_head tempaddr_list;=0D =0D struct in6_addr token;=0D =0D struct neigh_parms *nd_parms;=0D struct ipv6_devconf cnf;=0D struct ipv6_devstat stats;=0D =0D struct timer_list rs_timer;=0D __s32 rs_interval;=0D __u8 rs_probes;=0D =0D unsigned long tstamp;=0D struct callback_head rcu;=0D =0D unsigned int ra_mtu;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_eth_mc_map(const s= truct in6_addr *addr, char *buf)=0D {=0D =0D =0D =0D =0D =0D =0D buf[0]=3D 0x33;=0D buf[1]=3D 0x33;=0D =0D memcpy(buf + 2, &addr->in6_u.u6_addr32[3], sizeof(__u32));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_arcnet_mc_map(cons= t struct in6_addr *addr, char *buf)=0D {=0D buf[0] =3D 0x00;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_ib_mc_map(const st= ruct in6_addr *addr,=0D const unsigned char *broadcast, char *buf)=0D {=0D unsigned char scope =3D broadcast[5] & 0xF;=0D =0D buf[0] =3D 0;=0D buf[1] =3D 0xff;=0D buf[2] =3D 0xff;=0D buf[3] =3D 0xff;=0D buf[4] =3D 0xff;=0D buf[5] =3D 0x10 | scope;=0D buf[6] =3D 0x60;=0D buf[7] =3D 0x1b;=0D buf[8] =3D broadcast[8];=0D buf[9] =3D broadcast[9];=0D memcpy(buf + 10, addr->in6_u.u6_addr8 + 6, 10);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_ipgre_mc_map(const = struct in6_addr *addr,=0D const unsigned char *broadcast, char *buf)=0D {=0D if ((broadcast[0] | broadcast[1] | broadcast[2] | broadcast[3]) !=3D 0) {= =0D memcpy(buf, broadcast, 4);=0D } else {=0D =0D if ((addr->in6_u.u6_addr32[0] | addr->in6_u.u6_addr32[1] |=0D (addr->in6_u.u6_addr32[2] ^ (( __be32)(__builtin_constant_p((__u32)(= (0x0000ffff))) ? ((__u32)( (((__u32)((0x0000ffff)) & (__u32)0x000000ffUL) <= < 24) | (((__u32)((0x0000ffff)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0= x0000ffff)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0000ffff)) & (__u32= )0xff000000UL) >> 24))) : __fswab32((0x0000ffff)))))) !=3D 0)=0D return -22;=0D memcpy(buf, &addr->in6_u.u6_addr32[3], 4);=0D }=0D return 0;=0D }=0D # 18 "./include/net/ipv6.h" 2=0D =0D =0D =0D =0D =0D =0D struct ip_tunnel_info;=0D # 147 "./include/net/ipv6.h"=0D struct frag_hdr {=0D __u8 nexthdr;=0D __u8 reserved;=0D __be16 frag_off;=0D __be32 identification;=0D };=0D =0D =0D =0D =0D struct ip6_fraglist_iter {=0D struct ipv6hdr *tmp_hdr;=0D struct sk_buff *frag;=0D int offset;=0D unsigned int hlen;=0D __be32 frag_id;=0D u8 nexthdr;=0D };=0D =0D int ip6_fraglist_init(struct sk_buff *skb, unsigned int hlen, u8 *prevhdr,= =0D u8 nexthdr, __be32 frag_id,=0D struct ip6_fraglist_iter *iter);=0D void ip6_fraglist_prepare(struct sk_buff *skb, struct ip6_fraglist_iter *it= er);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *ip6_fraglist= _next(struct ip6_fraglist_iter *iter)=0D {=0D struct sk_buff *skb =3D iter->frag;=0D =0D iter->frag =3D skb->next;=0D skb_mark_not_on_list(skb);=0D =0D return skb;=0D }=0D =0D struct ip6_frag_state {=0D u8 *prevhdr;=0D unsigned int hlen;=0D unsigned int mtu;=0D unsigned int left;=0D int offset;=0D int ptr;=0D int hroom;=0D int troom;=0D __be32 frag_id;=0D u8 nexthdr;=0D };=0D =0D void ip6_frag_init(struct sk_buff *skb, unsigned int hlen, unsigned int mtu= ,=0D unsigned short needed_tailroom, int hdr_room, u8 *prevhdr,=0D u8 nexthdr, __be32 frag_id, struct ip6_frag_state *state);=0D struct sk_buff *ip6_frag_next(struct sk_buff *skb,=0D struct ip6_frag_state *state);=0D =0D =0D =0D =0D =0D =0D =0D extern int sysctl_mld_max_msf;=0D extern int sysctl_mld_qrv;=0D # 275 "./include/net/ipv6.h"=0D struct ip6_ra_chain {=0D struct ip6_ra_chain *next;=0D struct sock *sk;=0D int sel;=0D void (*destructor)(struct sock *);=0D };=0D =0D extern struct ip6_ra_chain *ip6_ra_chain;=0D extern rwlock_t ip6_ra_lock;=0D =0D =0D =0D =0D =0D =0D struct ipv6_txoptions {=0D refcount_t refcnt;=0D =0D int tot_len;=0D =0D =0D =0D __u16 opt_flen;=0D __u16 opt_nflen;=0D =0D struct ipv6_opt_hdr *hopopt;=0D struct ipv6_opt_hdr *dst0opt;=0D struct ipv6_rt_hdr *srcrt;=0D struct ipv6_opt_hdr *dst1opt;=0D struct callback_head rcu;=0D =0D };=0D =0D =0D enum flowlabel_reflect {=0D FLOWLABEL_REFLECT_ESTABLISHED =3D 1,=0D FLOWLABEL_REFLECT_TCP_RESET =3D 2,=0D FLOWLABEL_REFLECT_ICMPV6_ECHO_REPLIES =3D 4,=0D };=0D =0D struct ip6_flowlabel {=0D struct ip6_flowlabel *next;=0D __be32 label;=0D atomic_t users;=0D struct in6_addr dst;=0D struct ipv6_txoptions *opt;=0D unsigned long linger;=0D struct callback_head rcu;=0D u8 share;=0D union {=0D struct pid *pid;=0D kuid_t uid;=0D } owner;=0D unsigned long lastuse;=0D unsigned long expires;=0D struct net *fl_net;=0D };=0D # 340 "./include/net/ipv6.h"=0D struct ipv6_fl_socklist {=0D struct ipv6_fl_socklist *next;=0D struct ip6_flowlabel *fl;=0D struct callback_head rcu;=0D };=0D =0D struct ipcm6_cookie {=0D struct sockcm_cookie sockc;=0D __s16 hlimit;=0D __s16 tclass;=0D __u16 gso_size;=0D __s8 dontfrag;=0D struct ipv6_txoptions *opt;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipcm6_init(struct ipcm6= _cookie *ipc6)=0D {=0D *ipc6 =3D (struct ipcm6_cookie) {=0D .hlimit =3D -1,=0D .tclass =3D -1,=0D .dontfrag =3D -1,=0D };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipcm6_init_sk(struct ip= cm6_cookie *ipc6,=0D const struct ipv6_pinfo *np)=0D {=0D *ipc6 =3D (struct ipcm6_cookie) {=0D .hlimit =3D -1,=0D .tclass =3D np->tclass,=0D .dontfrag =3D np->dontfrag,=0D };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6_txoptions *txopt= _get(const struct ipv6_pinfo *np)=0D {=0D struct ipv6_txoptions *opt;=0D =0D rcu_read_lock();=0D opt =3D ({ typeof(*(np->opt)) *__UNIQUE_ID_rcu450 =3D (typeof(*(np->opt)) = *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_45= 1(void) ; if (!((sizeof((np->opt)) =3D=3D sizeof(char) || sizeof((np->opt))= =3D=3D sizeof(short) || sizeof((np->opt)) =3D=3D sizeof(int) || sizeof((np= ->opt)) =3D=3D sizeof(long)) || sizeof((np->opt)) =3D=3D sizeof(long long))= ) __compiletime_assert_451(); } while (0); (*(const volatile typeof( _Gener= ic(((np->opt)), char: (char)0, unsigned char: (unsigned char)0, signed char= : (signed char)0, unsigned short: (unsigned short)0, signed short: (signed = short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned= long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (= unsigned long long)0, signed long long: (signed long long)0, default: ((np-= >opt)))) *)&((np->opt))); }); do { } while (0 && (!((0) || rcu_read_lock_he= ld()))); ; ((typeof(*(np->opt)) *)(__UNIQUE_ID_rcu450)); });=0D if (opt) {=0D if (!refcount_inc_not_zero(&opt->refcnt))=0D opt =3D ((void *)0);=0D else=0D opt =3D (opt);=0D }=0D rcu_read_unlock();=0D return opt;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void txopt_put(struct ipv6_t= xoptions *opt)=0D {=0D if (opt && refcount_dec_and_test(&opt->refcnt))=0D do { typeof (opt) ___p =3D (opt); if (___p) { do { __attribute__((__noret= urn__)) extern void __compiletime_assert_452(void) ; if (!(!(!((__builtin_o= ffsetof(typeof(*(opt)), rcu)) < 4096)))) __compiletime_assert_452(); } whil= e (0); kvfree_call_rcu(&((___p)->rcu), (rcu_callback_t)(unsigned long) (__b= uiltin_offsetof(typeof(*(opt)), rcu))); } } while (0);=0D }=0D =0D =0D struct ip6_flowlabel *__fl6_sock_lookup(struct sock *sk, __be32 label);=0D =0D extern struct static_key_false_deferred ipv6_flowlabel_exclusive;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ip6_flowlabel *fl6_so= ck_lookup(struct sock *sk,=0D __be32 label)=0D {=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&ip= v6_flowlabel_exclusive.key)->key), struct static_key) && !__builtin_types_c= ompatible_p(typeof(*&(&ipv6_flowlabel_exclusive.key)->key), struct static_k= ey_true) && !__builtin_types_compatible_p(typeof(*&(&ipv6_flowlabel_exclusi= ve.key)->key), struct static_key_false)) ____wrong_branch_error(); static_k= ey_count((struct static_key *)&(&ipv6_flowlabel_exclusive.key)->key) > 0; }= )), 0) &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _453(void) ; if (!((sizeof(sock_net(sk)->ipv6.flowlabel_has_excl) =3D=3D si= zeof(char) || sizeof(sock_net(sk)->ipv6.flowlabel_has_excl) =3D=3D sizeof(s= hort) || sizeof(sock_net(sk)->ipv6.flowlabel_has_excl) =3D=3D sizeof(int) |= | sizeof(sock_net(sk)->ipv6.flowlabel_has_excl) =3D=3D sizeof(long)) || siz= eof(sock_net(sk)->ipv6.flowlabel_has_excl) =3D=3D sizeof(long long))) __com= piletime_assert_453(); } while (0); (*(const volatile typeof( _Generic((soc= k_net(sk)->ipv6.flowlabel_has_excl), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: (sock_net(sk)->ipv6.flowlabel_has_excl))) *)&(sock_net(sk)-= >ipv6.flowlabel_has_excl)); }))=0D return __fl6_sock_lookup(sk, label) ? : ERR_PTR(-2);=0D =0D return ((void *)0);=0D }=0D =0D =0D struct ipv6_txoptions *fl6_merge_options(struct ipv6_txoptions *opt_space,= =0D struct ip6_flowlabel *fl,=0D struct ipv6_txoptions *fopt);=0D void fl6_free_socklist(struct sock *sk);=0D int ipv6_flowlabel_opt(struct sock *sk, sockptr_t optval, int optlen);=0D int ipv6_flowlabel_opt_get(struct sock *sk, struct in6_flowlabel_req *freq,= =0D int flags);=0D int ip6_flowlabel_init(void);=0D void ip6_flowlabel_cleanup(void);=0D bool ip6_autoflowlabel(struct net *net, const struct ipv6_pinfo *np);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fl6_sock_release(struct= ip6_flowlabel *fl)=0D {=0D if (fl)=0D atomic_dec(&fl->users);=0D }=0D =0D void icmpv6_notify(struct sk_buff *skb, u8 type, u8 code, __be32 info);=0D =0D void icmpv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6,=0D struct icmp6hdr *thdr, int len);=0D =0D int ip6_ra_control(struct sock *sk, int sel);=0D =0D int ipv6_parse_hopopts(struct sk_buff *skb);=0D =0D struct ipv6_txoptions *ipv6_dup_options(struct sock *sk,=0D struct ipv6_txoptions *opt);=0D struct ipv6_txoptions *ipv6_renew_options(struct sock *sk,=0D struct ipv6_txoptions *opt,=0D int newtype,=0D struct ipv6_opt_hdr *newopt);=0D struct ipv6_txoptions *__ipv6_fixup_options(struct ipv6_txoptions *opt_spac= e,=0D struct ipv6_txoptions *opt);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ipv6_txoptions *=0D ipv6_fixup_options(struct ipv6_txoptions *opt_space, struct ipv6_txoptions = *opt)=0D {=0D if (!opt)=0D return ((void *)0);=0D return __ipv6_fixup_options(opt_space, opt);=0D }=0D =0D bool ipv6_opt_accepted(const struct sock *sk, const struct sk_buff *skb,=0D const struct inet6_skb_parm *opt);=0D struct ipv6_txoptions *ipv6_update_options(struct sock *sk,=0D struct ipv6_txoptions *opt);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_accept_ra(struct i= net6_dev *idev)=0D {=0D =0D =0D =0D return idev->cnf.forwarding ? idev->cnf.accept_ra =3D=3D 2 :=0D idev->cnf.accept_ra;=0D }=0D =0D =0D =0D =0D =0D int __ipv6_addr_type(const struct in6_addr *addr);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_addr_type(const str= uct in6_addr *addr)=0D {=0D return __ipv6_addr_type(addr) & 0xffff;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_addr_scope(const st= ruct in6_addr *addr)=0D {=0D return __ipv6_addr_type(addr) & 0x00f0U;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ipv6_addr_src_scope(in= t type)=0D {=0D return (type =3D=3D 0x0000U) ? -1 : (type >> 16);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_addr_src_scope(cons= t struct in6_addr *addr)=0D {=0D return __ipv6_addr_src_scope(__ipv6_addr_type(addr));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool __ipv6_addr_needs_scope= _id(int type)=0D {=0D return type & 0x0020U ||=0D (type & 0x0002U &&=0D (type & (0x0010U|0x0020U)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 ipv6_iface_scope_id(co= nst struct in6_addr *addr, int iface)=0D {=0D return __ipv6_addr_needs_scope_id(__ipv6_addr_type(addr)) ? iface : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_addr_cmp(const stru= ct in6_addr *a1, const struct in6_addr *a2)=0D {=0D return memcmp(a1, a2, sizeof(struct in6_addr));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D ipv6_masked_addr_cmp(const struct in6_addr *a1, const struct in6_addr *m,=0D const struct in6_addr *a2)=0D {=0D # 522 "./include/net/ipv6.h"=0D return !!(((a1->in6_u.u6_addr32[0] ^ a2->in6_u.u6_addr32[0]) & m->in6_u.u6= _addr32[0]) |=0D ((a1->in6_u.u6_addr32[1] ^ a2->in6_u.u6_addr32[1]) & m->in6_u.u6_addr32= [1]) |=0D ((a1->in6_u.u6_addr32[2] ^ a2->in6_u.u6_addr32[2]) & m->in6_u.u6_addr32= [2]) |=0D ((a1->in6_u.u6_addr32[3] ^ a2->in6_u.u6_addr32[3]) & m->in6_u.u6_addr32= [3]));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_addr_prefix(struct= in6_addr *pfx,=0D const struct in6_addr *addr,=0D int plen)=0D {=0D =0D int o =3D plen >> 3,=0D b =3D plen & 0x7;=0D =0D memset(pfx->in6_u.u6_addr8, 0, sizeof(pfx->in6_u.u6_addr8));=0D memcpy(pfx->in6_u.u6_addr8, addr, o);=0D if (b !=3D 0)=0D pfx->in6_u.u6_addr8[o] =3D addr->in6_u.u6_addr8[o] & (0xff00 >> b);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_addr_prefix_copy(s= truct in6_addr *addr,=0D const struct in6_addr *pfx,=0D int plen)=0D {=0D =0D int o =3D plen >> 3,=0D b =3D plen & 0x7;=0D =0D memcpy(addr->in6_u.u6_addr8, pfx, o);=0D if (b !=3D 0) {=0D addr->in6_u.u6_addr8[o] &=3D ~(0xff00 >> b);=0D addr->in6_u.u6_addr8[o] |=3D (pfx->in6_u.u6_addr8[o] & (0xff00 >> b));=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ipv6_addr_set_half(__= be32 *addr,=0D __be32 wh, __be32 wl)=0D {=0D # 574 "./include/net/ipv6.h"=0D addr[0] =3D wh;=0D addr[1] =3D wl;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_addr_set(struct in= 6_addr *addr,=0D __be32 w1, __be32 w2,=0D __be32 w3, __be32 w4)=0D {=0D __ipv6_addr_set_half(&addr->in6_u.u6_addr32[0], w1, w2);=0D __ipv6_addr_set_half(&addr->in6_u.u6_addr32[2], w3, w4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_equal(const s= truct in6_addr *a1,=0D const struct in6_addr *a2)=0D {=0D =0D =0D =0D =0D =0D =0D return ((a1->in6_u.u6_addr32[0] ^ a2->in6_u.u6_addr32[0]) |=0D (a1->in6_u.u6_addr32[1] ^ a2->in6_u.u6_addr32[1]) |=0D (a1->in6_u.u6_addr32[2] ^ a2->in6_u.u6_addr32[2]) |=0D (a1->in6_u.u6_addr32[3] ^ a2->in6_u.u6_addr32[3])) =3D=3D 0;=0D =0D }=0D # 627 "./include/net/ipv6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_prefix_equal(const= struct in6_addr *addr1,=0D const struct in6_addr *addr2,=0D unsigned int prefixlen)=0D {=0D const __be32 *a1 =3D addr1->in6_u.u6_addr32;=0D const __be32 *a2 =3D addr2->in6_u.u6_addr32;=0D unsigned int pdw, pbi;=0D =0D =0D pdw =3D prefixlen >> 5;=0D if (pdw && memcmp(a1, a2, pdw << 2))=0D return false;=0D =0D =0D pbi =3D prefixlen & 0x1f;=0D if (pbi && ((a1[pdw] ^ a2[pdw]) & (( __be32)(__builtin_constant_p((__u32)(= ((0xffffffff) << (32 - pbi)))) ? ((__u32)( (((__u32)(((0xffffffff) << (32 -= pbi))) & (__u32)0x000000ffUL) << 24) | (((__u32)(((0xffffffff) << (32 - pb= i))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(((0xffffffff) << (32 - pbi)))= & (__u32)0x00ff0000UL) >> 8) | (((__u32)(((0xffffffff) << (32 - pbi))) & (= __u32)0xff000000UL) >> 24))) : __fswab32(((0xffffffff) << (32 - pbi)))))))= =0D return false;=0D =0D return true;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_any(const str= uct in6_addr *a)=0D {=0D =0D =0D =0D =0D =0D return (a->in6_u.u6_addr32[0] | a->in6_u.u6_addr32[1] |=0D a->in6_u.u6_addr32[2] | a->in6_u.u6_addr32[3]) =3D=3D 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ipv6_addr_hash(const str= uct in6_addr *a)=0D {=0D =0D =0D =0D =0D =0D =0D return ( u32)(a->in6_u.u6_addr32[0] ^ a->in6_u.u6_addr32[1] ^=0D a->in6_u.u6_addr32[2] ^ a->in6_u.u6_addr32[3]);=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __ipv6_addr_jhash(const = struct in6_addr *a, const u32 initval)=0D {=0D u32 v =3D ( u32)a->in6_u.u6_addr32[0] ^ ( u32)a->in6_u.u6_addr32[1];=0D =0D return jhash_3words(v,=0D ( u32)a->in6_u.u6_addr32[2],=0D ( u32)a->in6_u.u6_addr32[3],=0D initval);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_loopback(cons= t struct in6_addr *a)=0D {=0D =0D =0D =0D =0D =0D return (a->in6_u.u6_addr32[0] | a->in6_u.u6_addr32[1] |=0D a->in6_u.u6_addr32[2] | (a->in6_u.u6_addr32[3] ^ (( __be32)(__builtin_con= stant_p((__u32)((1))) ? ((__u32)( (((__u32)((1)) & (__u32)0x000000ffUL) << = 24) | (((__u32)((1)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((1)) & (__u32= )0x00ff0000UL) >> 8) | (((__u32)((1)) & (__u32)0xff000000UL) >> 24))) : __f= swab32((1)))))) =3D=3D 0;=0D =0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_v4mapped(cons= t struct in6_addr *a)=0D {=0D return (=0D =0D =0D =0D ( unsigned long)(a->in6_u.u6_addr32[0] | a->in6_u.u6_addr32[1]) |=0D =0D ( unsigned long)(a->in6_u.u6_addr32[2] ^=0D (( __be32)(__builtin_constant_p((__u32)((0x0000ffff))) ? ((__u32)( (((= __u32)((0x0000ffff)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0000ffff)= ) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000ffff)) & (__u32)0x00ff000= 0UL) >> 8) | (((__u32)((0x0000ffff)) & (__u32)0xff000000UL) >> 24))) : __fs= wab32((0x0000ffff)))))) =3D=3D 0UL;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_v4mapped_loop= back(const struct in6_addr *a)=0D {=0D return ipv6_addr_v4mapped(a) && ipv4_is_loopback(a->in6_u.u6_addr32[3]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ipv6_portaddr_hash(const= struct net *net,=0D const struct in6_addr *addr6,=0D unsigned int port)=0D {=0D unsigned int hash, mix =3D net_hash_mix(net);=0D =0D if (ipv6_addr_any(addr6))=0D hash =3D jhash_1word(0, mix);=0D else if (ipv6_addr_v4mapped(addr6))=0D hash =3D jhash_1word(( u32)addr6->in6_u.u6_addr32[3], mix);=0D else=0D hash =3D jhash2(( u32 *)addr6->in6_u.u6_addr32, 4, mix);=0D =0D return hash ^ port;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_orchid(const = struct in6_addr *a)=0D {=0D return (a->in6_u.u6_addr32[0] & (( __be32)(__builtin_constant_p((__u32)((0= xfffffff0))) ? ((__u32)( (((__u32)((0xfffffff0)) & (__u32)0x000000ffUL) << = 24) | (((__u32)((0xfffffff0)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xf= ffffff0)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xfffffff0)) & (__u32)0= xff000000UL) >> 24))) : __fswab32((0xfffffff0))))) =3D=3D (( __be32)(__buil= tin_constant_p((__u32)((0x20010010))) ? ((__u32)( (((__u32)((0x20010010)) &= (__u32)0x000000ffUL) << 24) | (((__u32)((0x20010010)) & (__u32)0x0000ff00U= L) << 8) | (((__u32)((0x20010010)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)= ((0x20010010)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x20010010))));= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_multicast(= const struct in6_addr *addr)=0D {=0D return (addr->in6_u.u6_addr32[0] & (( __be32)(__builtin_constant_p((__u32)= ((0xFF000000))) ? ((__u32)( (((__u32)((0xFF000000)) & (__u32)0x000000ffUL) = << 24) | (((__u32)((0xFF000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((= 0xFF000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xFF000000)) & (__u3= 2)0xff000000UL) >> 24))) : __fswab32((0xFF000000))))) =3D=3D (( __be32)(__b= uiltin_constant_p((__u32)((0xFF000000))) ? ((__u32)( (((__u32)((0xFF000000)= ) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xFF000000)) & (__u32)0x0000ff= 00UL) << 8) | (((__u32)((0xFF000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u= 32)((0xFF000000)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0xFF000000))= ));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_addr_set_v4mapped(= const __be32 addr,=0D struct in6_addr *v4mapped)=0D {=0D ipv6_addr_set(v4mapped,=0D 0, 0,=0D (( __be32)(__builtin_constant_p((__u32)((0x0000FFFF))) ? ((__u32)( (((__= u32)((0x0000FFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0000FFFF)) = & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000FFFF)) & (__u32)0x00ff0000U= L) >> 8) | (((__u32)((0x0000FFFF)) & (__u32)0xff000000UL) >> 24))) : __fswa= b32((0x0000FFFF)))),=0D addr);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ipv6_addr_diff32(const= void *token1, const void *token2, int addrlen)=0D {=0D const __be32 *a1 =3D token1, *a2 =3D token2;=0D int i;=0D =0D addrlen >>=3D 2;=0D =0D for (i =3D 0; i < addrlen; i++) {=0D __be32 xb =3D a1[i] ^ a2[i];=0D if (xb)=0D return i * 32 + 31 - __fls((__builtin_constant_p((__u32)(( __u32)(__be32= )(xb))) ? ((__u32)( (((__u32)(( __u32)(__be32)(xb)) & (__u32)0x000000ffUL) = << 24) | (((__u32)(( __u32)(__be32)(xb)) & (__u32)0x0000ff00UL) << 8) | (((= __u32)(( __u32)(__be32)(xb)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u= 32)(__be32)(xb)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be3= 2)(xb))));=0D }=0D # 790 "./include/net/ipv6.h"=0D return addrlen << 5;=0D }=0D # 811 "./include/net/ipv6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ipv6_addr_diff(const v= oid *token1, const void *token2, int addrlen)=0D {=0D =0D =0D =0D =0D return __ipv6_addr_diff32(token1, token2, addrlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ipv6_addr_diff(const str= uct in6_addr *a1, const struct in6_addr *a2)=0D {=0D return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr));=0D }=0D =0D __be32 ipv6_select_ident(struct net *net,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D __be32 ipv6_proxy_select_ident(struct net *net, struct sk_buff *skb);=0D =0D int ip6_dst_hoplimit(struct dst_entry *dst);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_sk_dst_hoplimit(stru= ct ipv6_pinfo *np, struct flowi6 *fl6,=0D struct dst_entry *dst)=0D {=0D int hlimit;=0D =0D if (ipv6_addr_is_multicast(&fl6->daddr))=0D hlimit =3D np->mcast_hops;=0D else=0D hlimit =3D np->hop_limit;=0D if (hlimit < 0)=0D hlimit =3D ip6_dst_hoplimit(dst);=0D return hlimit;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iph_to_flow_copy_v6addr= s(struct flow_keys *flow,=0D const struct ipv6hdr *iph)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_454(vo= id) ; if (!(!(__builtin_offsetof(typeof(flow->addrs), v6addrs.dst) !=3D __b= uiltin_offsetof(typeof(flow->addrs), v6addrs.src) + sizeof(flow->addrs.v6ad= drs.src)))) __compiletime_assert_454(); } while (0);=0D =0D =0D memcpy(&flow->addrs.v6addrs, &iph->saddr, sizeof(flow->addrs.v6addrs));=0D flow->control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_can_nonlocal_bind(= struct net *net,=0D struct inet_sock *inet)=0D {=0D return net->ipv6.sysctl.ip_nonlocal_bind ||=0D inet->freebind || inet->transparent;=0D }=0D # 879 "./include/net/ipv6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 ip6_make_flowlabel(st= ruct net *net, struct sk_buff *skb,=0D __be32 flowlabel, bool autolabel,=0D struct flowi6 *fl6)=0D {=0D u32 hash;=0D =0D =0D =0D =0D flowlabel &=3D (( __be32)(__builtin_constant_p((__u32)((0x000FFFFF))) ? ((= __u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((= 0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32((0x000FFFFF))));=0D =0D if (flowlabel ||=0D net->ipv6.sysctl.auto_flowlabels =3D=3D 0 ||=0D (!autolabel &&=0D net->ipv6.sysctl.auto_flowlabels !=3D 3))=0D return flowlabel;=0D =0D hash =3D skb_get_hash_flowi6(skb, fl6);=0D =0D =0D =0D =0D =0D hash =3D rol32(hash, 16);=0D =0D flowlabel =3D ( __be32)hash & (( __be32)(__builtin_constant_p((__u32)((0x0= 00FFFFF))) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24= ) | (((__u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000= FFFFF)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xf= f000000UL) >> 24))) : __fswab32((0x000FFFFF))));=0D =0D if (net->ipv6.sysctl.flowlabel_state_ranges)=0D flowlabel |=3D (( __be32)(__builtin_constant_p((__u32)((0x00080000))) ? (= (__u32)( (((__u32)((0x00080000)) & (__u32)0x000000ffUL) << 24) | (((__u32)(= (0x00080000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x00080000)) & (__u= 32)0x00ff0000UL) >> 8) | (((__u32)((0x00080000)) & (__u32)0xff000000UL) >> = 24))) : __fswab32((0x00080000))));=0D =0D return flowlabel;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_default_np_autolabel= (struct net *net)=0D {=0D switch (net->ipv6.sysctl.auto_flowlabels) {=0D case 0:=0D case 2:=0D default:=0D return 0;=0D case 1:=0D case 3:=0D return 1;=0D }=0D }=0D # 938 "./include/net/ipv6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_multipath_hash_polic= y(const struct net *net)=0D {=0D return net->ipv6.sysctl.multipath_hash_policy;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ip6_multipath_hash_field= s(const struct net *net)=0D {=0D return net->ipv6.sysctl.multipath_hash_fields;=0D }=0D # 960 "./include/net/ipv6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_flow_hdr(struct ipv= 6hdr *hdr, unsigned int tclass,=0D __be32 flowlabel)=0D {=0D *(__be32 *)hdr =3D (( __be32)(__builtin_constant_p((__u32)((0x60000000 | (= tclass << 20)))) ? ((__u32)( (((__u32)((0x60000000 | (tclass << 20))) & (__= u32)0x000000ffUL) << 24) | (((__u32)((0x60000000 | (tclass << 20))) & (__u3= 2)0x0000ff00UL) << 8) | (((__u32)((0x60000000 | (tclass << 20))) & (__u32)0= x00ff0000UL) >> 8) | (((__u32)((0x60000000 | (tclass << 20))) & (__u32)0xff= 000000UL) >> 24))) : __fswab32((0x60000000 | (tclass << 20))))) | flowlabel= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 ip6_flowinfo(const st= ruct ipv6hdr *hdr)=0D {=0D return *(__be32 *)hdr & (( __be32)(__builtin_constant_p((__u32)((0x0FFFFFF= F))) ? ((__u32)( (((__u32)((0x0FFFFFFF)) & (__u32)0x000000ffUL) << 24) | ((= (__u32)((0x0FFFFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0FFFFFFF)= ) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0xff00000= 0UL) >> 24))) : __fswab32((0x0FFFFFFF))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 ip6_flowlabel(const s= truct ipv6hdr *hdr)=0D {=0D return *(__be32 *)hdr & (( __be32)(__builtin_constant_p((__u32)((0x000FFFF= F))) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | ((= (__u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)= ) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff00000= 0UL) >> 24))) : __fswab32((0x000FFFFF))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 ip6_tclass(__be32 flowinf= o)=0D {=0D return (__builtin_constant_p((__u32)(( __u32)(__be32)(flowinfo & ((( __be3= 2)(__builtin_constant_p((__u32)((0x0FFFFFFF))) ? ((__u32)( (((__u32)((0x0FF= FFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0FFFFFFF)) & (__u32)0x= 0000ff00UL) << 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0x00ff0000UL) >> 8) | = (((__u32)((0x0FFFFFFF)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x0FFF= FFFF)))) & ~(( __be32)(__builtin_constant_p((__u32)((0x000FFFFF))) ? ((__u3= 2)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x00= 0FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)) & (__u32)0x= 00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff000000UL) >> 24)))= : __fswab32((0x000FFFFF)))))))) ? ((__u32)( (((__u32)(( __u32)(__be32)(flo= winfo & ((( __be32)(__builtin_constant_p((__u32)((0x0FFFFFFF))) ? ((__u32)(= (((__u32)((0x0FFFFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0FFFF= FFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0x00f= f0000UL) >> 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0xff000000UL) >> 24))) : = __fswab32((0x0FFFFFFF)))) & ~(( __be32)(__builtin_constant_p((__u32)((0x000= FFFFF))) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) = | (((__u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FF= FFF)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff0= 00000UL) >> 24))) : __fswab32((0x000FFFFF))))))) & (__u32)0x000000ffUL) << = 24) | (((__u32)(( __u32)(__be32)(flowinfo & ((( __be32)(__builtin_constant_= p((__u32)((0x0FFFFFFF))) ? ((__u32)( (((__u32)((0x0FFFFFFF)) & (__u32)0x000= 000ffUL) << 24) | (((__u32)((0x0FFFFFFF)) & (__u32)0x0000ff00UL) << 8) | ((= (__u32)((0x0FFFFFFF)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0FFFFFFF)= ) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x0FFFFFFF)))) & ~(( __be32)= (__builtin_constant_p((__u32)((0x000FFFFF))) ? ((__u32)( (((__u32)((0x000FF= FFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x000FFFFF)) & (__u32)0x00= 00ff00UL) << 8) | (((__u32)((0x000FFFFF)) & (__u32)0x00ff0000UL) >> 8) | ((= (__u32)((0x000FFFFF)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x000FFF= FF))))))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(flowinf= o & ((( __be32)(__builtin_constant_p((__u32)((0x0FFFFFFF))) ? ((__u32)( (((= __u32)((0x0FFFFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0FFFFFFF)= ) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0x00ff000= 0UL) >> 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0xff000000UL) >> 24))) : __fs= wab32((0x0FFFFFFF)))) & ~(( __be32)(__builtin_constant_p((__u32)((0x000FFFF= F))) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | ((= (__u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)= ) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff00000= 0UL) >> 24))) : __fswab32((0x000FFFFF))))))) & (__u32)0x00ff0000UL) >> 8) |= (((__u32)(( __u32)(__be32)(flowinfo & ((( __be32)(__builtin_constant_p((__= u32)((0x0FFFFFFF))) ? ((__u32)( (((__u32)((0x0FFFFFFF)) & (__u32)0x000000ff= UL) << 24) | (((__u32)((0x0FFFFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u3= 2)((0x0FFFFFFF)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0FFFFFFF)) & (= __u32)0xff000000UL) >> 24))) : __fswab32((0x0FFFFFFF)))) & ~(( __be32)(__bu= iltin_constant_p((__u32)((0x000FFFFF))) ? ((__u32)( (((__u32)((0x000FFFFF))= & (__u32)0x000000ffUL) << 24) | (((__u32)((0x000FFFFF)) & (__u32)0x0000ff0= 0UL) << 8) | (((__u32)((0x000FFFFF)) & (__u32)0x00ff0000UL) >> 8) | (((__u3= 2)((0x000FFFFF)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x000FFFFF)))= )))) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(flowinfo = & ((( __be32)(__builtin_constant_p((__u32)((0x0FFFFFFF))) ? ((__u32)( (((__= u32)((0x0FFFFFFF)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x0FFFFFFF)) = & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0x00ff0000U= L) >> 8) | (((__u32)((0x0FFFFFFF)) & (__u32)0xff000000UL) >> 24))) : __fswa= b32((0x0FFFFFFF)))) & ~(( __be32)(__builtin_constant_p((__u32)((0x000FFFFF)= )) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | (((_= _u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)) = & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff000000U= L) >> 24))) : __fswab32((0x000FFFFF)))))))) >> 20;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) dscp_t ip6_dscp(__be32 flowi= nfo)=0D {=0D return inet_dsfield_to_dscp(ip6_tclass(flowinfo));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 ip6_make_flowinfo(uns= igned int tclass, __be32 flowlabel)=0D {=0D return (( __be32)(__builtin_constant_p((__u32)((tclass << 20))) ? ((__u32)= ( (((__u32)((tclass << 20)) & (__u32)0x000000ffUL) << 24) | (((__u32)((tcla= ss << 20)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((tclass << 20)) & (__u3= 2)0x00ff0000UL) >> 8) | (((__u32)((tclass << 20)) & (__u32)0xff000000UL) >>= 24))) : __fswab32((tclass << 20)))) | flowlabel;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 flowi6_get_flowlabel(= const struct flowi6 *fl6)=0D {=0D return fl6->flowlabel & (( __be32)(__builtin_constant_p((__u32)((0x000FFFF= F))) ? ((__u32)( (((__u32)((0x000FFFFF)) & (__u32)0x000000ffUL) << 24) | ((= (__u32)((0x000FFFFF)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x000FFFFF)= ) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x000FFFFF)) & (__u32)0xff00000= 0UL) >> 24))) : __fswab32((0x000FFFFF))));=0D }=0D # 1004 "./include/net/ipv6.h"=0D int ipv6_rcv(struct sk_buff *skb, struct net_device *dev,=0D struct packet_type *pt, struct net_device *orig_dev);=0D void ipv6_list_rcv(struct list_head *head, struct packet_type *pt,=0D struct net_device *orig_dev);=0D =0D int ip6_rcv_finish(struct net *net, struct sock *sk, struct sk_buff *skb);= =0D =0D =0D =0D =0D int ip6_xmit(const struct sock *sk, struct sk_buff *skb, struct flowi6 *fl6= ,=0D __u32 mark, struct ipv6_txoptions *opt, int tclass, u32 priority);=0D =0D int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr);=0D =0D int ip6_append_data(struct sock *sk,=0D int getfrag(void *from, char *to, int offset, int len,=0D int odd, struct sk_buff *skb),=0D void *from, int length, int transhdrlen,=0D struct ipcm6_cookie *ipc6, struct flowi6 *fl6,=0D struct rt6_info *rt, unsigned int flags);=0D =0D int ip6_push_pending_frames(struct sock *sk);=0D =0D void ip6_flush_pending_frames(struct sock *sk);=0D =0D int ip6_send_skb(struct sk_buff *skb);=0D =0D struct sk_buff *__ip6_make_skb(struct sock *sk, struct sk_buff_head *queue,= =0D struct inet_cork_full *cork,=0D struct inet6_cork *v6_cork);=0D struct sk_buff *ip6_make_skb(struct sock *sk,=0D int getfrag(void *from, char *to, int offset,=0D int len, int odd, struct sk_buff *skb),=0D void *from, int length, int transhdrlen,=0D struct ipcm6_cookie *ipc6,=0D struct rt6_info *rt, unsigned int flags,=0D struct inet_cork_full *cork);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *ip6_finish_s= kb(struct sock *sk)=0D {=0D return __ip6_make_skb(sk, &sk->sk_write_queue, &inet_sk(sk)->cork,=0D &inet6_sk(sk)->cork);=0D }=0D =0D int ip6_dst_lookup(struct net *net, struct sock *sk, struct dst_entry **dst= ,=0D struct flowi6 *fl6);=0D struct dst_entry *ip6_dst_lookup_flow(struct net *net, const struct sock *s= k, struct flowi6 *fl6,=0D const struct in6_addr *final_dst);=0D struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi6 *fl= 6,=0D const struct in6_addr *final_dst,=0D bool connected);=0D struct dst_entry *ip6_dst_lookup_tunnel(struct sk_buff *skb,=0D struct net_device *dev,=0D struct net *net, struct socket *sock,=0D struct in6_addr *saddr,=0D const struct ip_tunnel_info *info,=0D u8 protocol, bool use_cache);=0D struct dst_entry *ip6_blackhole_route(struct net *net,=0D struct dst_entry *orig_dst);=0D =0D =0D =0D =0D =0D int ip6_output(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int ip6_forward(struct sk_buff *skb);=0D int ip6_input(struct sk_buff *skb);=0D int ip6_mc_input(struct sk_buff *skb);=0D void ip6_protocol_deliver_rcu(struct net *net, struct sk_buff *skb, int nex= thdr,=0D bool have_final);=0D =0D int __ip6_local_out(struct net *net, struct sock *sk, struct sk_buff *skb);= =0D int ip6_local_out(struct net *net, struct sock *sk, struct sk_buff *skb);=0D =0D =0D =0D =0D =0D void ipv6_push_nfrag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt,= =0D u8 *proto, struct in6_addr **daddr_p,=0D struct in6_addr *saddr);=0D void ipv6_push_frag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt,=0D u8 *proto);=0D =0D int ipv6_skip_exthdr(const struct sk_buff *, int start, u8 *nexthdrp,=0D __be16 *frag_offp);=0D =0D bool ipv6_ext_hdr(u8 nexthdr);=0D =0D enum {=0D IP6_FH_F_FRAG =3D (1 << 0),=0D IP6_FH_F_AUTH =3D (1 << 1),=0D IP6_FH_F_SKIP_RH =3D (1 << 2),=0D };=0D =0D =0D int ipv6_find_hdr(const struct sk_buff *skb, unsigned int *offset, int targ= et,=0D unsigned short *fragoff, int *fragflg);=0D =0D int ipv6_find_tlv(const struct sk_buff *skb, int offset, int type);=0D =0D struct in6_addr *fl6_update_dst(struct flowi6 *fl6,=0D const struct ipv6_txoptions *opt,=0D struct in6_addr *orig);=0D =0D =0D =0D =0D extern struct static_key_false ip6_min_hopcount;=0D =0D int ipv6_setsockopt(struct sock *sk, int level, int optname, sockptr_t optv= al,=0D unsigned int optlen);=0D int ipv6_getsockopt(struct sock *sk, int level, int optname,=0D char *optval, int *optlen);=0D =0D int __ip6_datagram_connect(struct sock *sk, struct sockaddr *addr,=0D int addr_len);=0D int ip6_datagram_connect(struct sock *sk, struct sockaddr *addr, int addr_l= en);=0D int ip6_datagram_connect_v6_only(struct sock *sk, struct sockaddr *addr,=0D int addr_len);=0D int ip6_datagram_dst_update(struct sock *sk, bool fix_sk_saddr);=0D void ip6_datagram_release_cb(struct sock *sk);=0D =0D int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len,=0D int *addr_len);=0D int ipv6_recv_rxpmtu(struct sock *sk, struct msghdr *msg, int len,=0D int *addr_len);=0D void ipv6_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 = port,=0D u32 info, u8 *payload);=0D void ipv6_local_error(struct sock *sk, int err, struct flowi6 *fl6, u32 inf= o);=0D void ipv6_local_rxpmtu(struct sock *sk, struct flowi6 *fl6, u32 mtu);=0D =0D int inet6_release(struct socket *sock);=0D int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len);= =0D int inet6_getname(struct socket *sock, struct sockaddr *uaddr,=0D int peer);=0D int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg);= =0D int inet6_compat_ioctl(struct socket *sock, unsigned int cmd,=0D unsigned long arg);=0D =0D int inet6_hash_connect(struct inet_timewait_death_row *death_row,=0D struct sock *sk);=0D int inet6_sendmsg(struct socket *sock, struct msghdr *msg, size_t size);=0D int inet6_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,=0D int flags);=0D =0D =0D =0D =0D extern const struct proto_ops inet6_stream_ops;=0D extern const struct proto_ops inet6_dgram_ops;=0D extern const struct proto_ops inet6_sockraw_ops;=0D =0D struct group_source_req;=0D struct group_filter;=0D =0D int ip6_mc_source(int add, int omode, struct sock *sk,=0D struct group_source_req *pgsr);=0D int ip6_mc_msfilter(struct sock *sk, struct group_filter *gsf,=0D struct __kernel_sockaddr_storage *list);=0D int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,=0D struct __kernel_sockaddr_storage *p);=0D =0D =0D int ac6_proc_init(struct net *net);=0D void ac6_proc_exit(struct net *net);=0D int raw6_proc_init(void);=0D void raw6_proc_exit(void);=0D int tcp6_proc_init(struct net *net);=0D void tcp6_proc_exit(struct net *net);=0D int udp6_proc_init(struct net *net);=0D void udp6_proc_exit(struct net *net);=0D int udplite6_proc_init(void);=0D void udplite6_proc_exit(void);=0D int ipv6_misc_proc_init(void);=0D void ipv6_misc_proc_exit(void);=0D int snmp6_register_dev(struct inet6_dev *idev);=0D int snmp6_unregister_dev(struct inet6_dev *idev);=0D # 1192 "./include/net/ipv6.h"=0D struct ctl_table *ipv6_icmp_sysctl_init(struct net *net);=0D struct ctl_table *ipv6_route_sysctl_init(struct net *net);=0D int ipv6_sysctl_register(void);=0D void ipv6_sysctl_unregister(void);=0D =0D =0D int ipv6_sock_mc_join(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D int ipv6_sock_mc_join_ssm(struct sock *sk, int ifindex,=0D const struct in6_addr *addr, unsigned int mode);=0D int ipv6_sock_mc_drop(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_sock_set_v6only(stru= ct sock *sk)=0D {=0D if (inet_sk(sk)->sk.__sk_common.skc_num)=0D return -22;=0D lock_sock(sk);=0D sk->__sk_common.skc_ipv6only =3D true;=0D release_sock(sk);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_sock_set_recverr(st= ruct sock *sk)=0D {=0D lock_sock(sk);=0D inet6_sk(sk)->recverr =3D true;=0D release_sock(sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ip6_sock_set_addr_pref= erences(struct sock *sk, int val)=0D {=0D unsigned int pref =3D 0;=0D unsigned int prefmask =3D ~0;=0D =0D =0D switch (val & (0x0002 |=0D 0x0001 |=0D 0x0100)) {=0D case 0x0002:=0D pref |=3D 0x0002;=0D prefmask &=3D ~(0x0002 |=0D 0x0001);=0D break;=0D case 0x0001:=0D pref |=3D 0x0001;=0D prefmask &=3D ~(0x0002 |=0D 0x0001);=0D break;=0D case 0x0100:=0D prefmask &=3D ~(0x0002 |=0D 0x0001);=0D break;=0D case 0:=0D break;=0D default:=0D return -22;=0D }=0D =0D =0D switch (val & (0x0400 | 0x0004)) {=0D case 0x0400:=0D prefmask &=3D ~0x0004;=0D break;=0D case 0x0004:=0D pref |=3D 0x0004;=0D break;=0D case 0:=0D break;=0D default:=0D return -22;=0D }=0D =0D =0D switch (val & (0x0008|0x0800)) {=0D case 0x0008:=0D case 0x0800:=0D case 0:=0D break;=0D default:=0D return -22;=0D }=0D =0D inet6_sk(sk)->srcprefs =3D (inet6_sk(sk)->srcprefs & prefmask) | pref;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_sock_set_addr_prefer= ences(struct sock *sk, bool val)=0D {=0D int ret;=0D =0D lock_sock(sk);=0D ret =3D __ip6_sock_set_addr_preferences(sk, val);=0D release_sock(sk);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_sock_set_recvpktinf= o(struct sock *sk)=0D {=0D lock_sock(sk);=0D inet6_sk(sk)->rxopt.bits.rxinfo =3D true;=0D release_sock(sk);=0D }=0D # 17 "./include/net/inetpeer.h" 2=0D =0D =0D =0D struct ipv4_addr_key {=0D __be32 addr;=0D int vif;=0D };=0D =0D =0D =0D struct inetpeer_addr {=0D union {=0D struct ipv4_addr_key a4;=0D struct in6_addr a6;=0D u32 key[(sizeof(struct in6_addr) / sizeof(u32))];=0D };=0D __u16 family;=0D };=0D =0D struct inet_peer {=0D struct rb_node rb_node;=0D struct inetpeer_addr daddr;=0D =0D u32 metrics[(__RTAX_MAX - 1)];=0D u32 rate_tokens;=0D u32 n_redirects;=0D unsigned long rate_last;=0D =0D =0D =0D =0D =0D union {=0D struct {=0D atomic_t rid;=0D };=0D struct callback_head rcu;=0D };=0D =0D =0D __u32 dtime;=0D refcount_t refcnt;=0D };=0D =0D struct inet_peer_base {=0D struct rb_root rb_root;=0D seqlock_t lock;=0D int total;=0D };=0D =0D void inet_peer_base_init(struct inet_peer_base *);=0D =0D void inet_initpeers(void) __attribute__((__section__(".init.text"))) __attr= ibute__((__cold__)) __attribute__((__no_sanitize__("cfi")));=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inetpeer_set_addr_v4(st= ruct inetpeer_addr *iaddr, __be32 ip)=0D {=0D iaddr->a4.addr =3D ip;=0D iaddr->a4.vif =3D 0;=0D iaddr->family =3D 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 inetpeer_get_addr_v4(= struct inetpeer_addr *iaddr)=0D {=0D return iaddr->a4.addr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inetpeer_set_addr_v6(st= ruct inetpeer_addr *iaddr,=0D struct in6_addr *in6)=0D {=0D iaddr->a6 =3D *in6;=0D iaddr->family =3D 10;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct in6_addr *inetpeer_ge= t_addr_v6(struct inetpeer_addr *iaddr)=0D {=0D return &iaddr->a6;=0D }=0D =0D =0D struct inet_peer *inet_getpeer(struct inet_peer_base *base,=0D const struct inetpeer_addr *daddr,=0D int create);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_peer *inet_getpe= er_v4(struct inet_peer_base *base,=0D __be32 v4daddr,=0D int vif, int create)=0D {=0D struct inetpeer_addr daddr;=0D =0D daddr.a4.addr =3D v4daddr;=0D daddr.a4.vif =3D vif;=0D daddr.family =3D 2;=0D return inet_getpeer(base, &daddr, create);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_peer *inet_getpe= er_v6(struct inet_peer_base *base,=0D const struct in6_addr *v6daddr,=0D int create)=0D {=0D struct inetpeer_addr daddr;=0D =0D daddr.a6 =3D *v6daddr;=0D daddr.family =3D 10;=0D return inet_getpeer(base, &daddr, create);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inetpeer_addr_cmp(const = struct inetpeer_addr *a,=0D const struct inetpeer_addr *b)=0D {=0D int i, n;=0D =0D if (a->family =3D=3D 2)=0D n =3D sizeof(a->a4) / sizeof(u32);=0D else=0D n =3D sizeof(a->a6) / sizeof(u32);=0D =0D for (i =3D 0; i < n; i++) {=0D if (a->key[i] =3D=3D b->key[i])=0D continue;=0D if (a->key[i] < b->key[i])=0D return -1;=0D return 1;=0D }=0D =0D return 0;=0D }=0D =0D =0D void inet_putpeer(struct inet_peer *p);=0D bool inet_peer_xrlim_allow(struct inet_peer *peer, int timeout);=0D =0D void inetpeer_invalidate_tree(struct inet_peer_base *);=0D # 22 "./include/net/ip_fib.h" 2=0D =0D =0D =0D =0D struct fib_config {=0D u8 fc_dst_len;=0D dscp_t fc_dscp;=0D u8 fc_protocol;=0D u8 fc_scope;=0D u8 fc_type;=0D u8 fc_gw_family;=0D =0D u32 fc_table;=0D __be32 fc_dst;=0D union {=0D __be32 fc_gw4;=0D struct in6_addr fc_gw6;=0D };=0D int fc_oif;=0D u32 fc_flags;=0D u32 fc_priority;=0D __be32 fc_prefsrc;=0D u32 fc_nh_id;=0D struct nlattr *fc_mx;=0D struct rtnexthop *fc_mp;=0D int fc_mx_len;=0D int fc_mp_len;=0D u32 fc_flow;=0D u32 fc_nlflags;=0D struct nl_info fc_nlinfo;=0D struct nlattr *fc_encap;=0D u16 fc_encap_type;=0D };=0D =0D struct fib_info;=0D struct rtable;=0D =0D struct fib_nh_exception {=0D struct fib_nh_exception *fnhe_next;=0D int fnhe_genid;=0D __be32 fnhe_daddr;=0D u32 fnhe_pmtu;=0D bool fnhe_mtu_locked;=0D __be32 fnhe_gw;=0D unsigned long fnhe_expires;=0D struct rtable *fnhe_rth_input;=0D struct rtable *fnhe_rth_output;=0D unsigned long fnhe_stamp;=0D struct callback_head rcu;=0D };=0D =0D struct fnhe_hash_bucket {=0D struct fib_nh_exception *chain;=0D };=0D =0D =0D =0D =0D =0D struct fib_nh_common {=0D struct net_device *nhc_dev;=0D netdevice_tracker nhc_dev_tracker;=0D int nhc_oif;=0D unsigned char nhc_scope;=0D u8 nhc_family;=0D u8 nhc_gw_family;=0D unsigned char nhc_flags;=0D struct lwtunnel_state *nhc_lwtstate;=0D =0D union {=0D __be32 ipv4;=0D struct in6_addr ipv6;=0D } nhc_gw;=0D =0D int nhc_weight;=0D atomic_t nhc_upper_bound;=0D =0D =0D struct rtable * *nhc_pcpu_rth_output;=0D struct rtable *nhc_rth_input;=0D struct fnhe_hash_bucket *nhc_exceptions;=0D };=0D =0D struct fib_nh {=0D struct fib_nh_common nh_common;=0D struct hlist_node nh_hash;=0D struct fib_info *nh_parent;=0D =0D =0D =0D __be32 nh_saddr;=0D int nh_saddr_genid;=0D # 126 "./include/net/ip_fib.h"=0D };=0D =0D =0D =0D =0D =0D struct nexthop;=0D =0D struct fib_info {=0D struct hlist_node fib_hash;=0D struct hlist_node fib_lhash;=0D struct list_head nh_list;=0D struct net *fib_net;=0D refcount_t fib_treeref;=0D refcount_t fib_clntref;=0D unsigned int fib_flags;=0D unsigned char fib_dead;=0D unsigned char fib_protocol;=0D unsigned char fib_scope;=0D unsigned char fib_type;=0D __be32 fib_prefsrc;=0D u32 fib_tb_id;=0D u32 fib_priority;=0D struct dst_metrics *fib_metrics;=0D =0D =0D =0D =0D int fib_nhs;=0D bool fib_nh_is_v6;=0D bool nh_updated;=0D struct nexthop *nh;=0D struct callback_head rcu;=0D struct fib_nh fib_nh[];=0D };=0D =0D =0D =0D =0D =0D =0D struct fib_table;=0D struct fib_result {=0D __be32 prefix;=0D unsigned char prefixlen;=0D unsigned char nh_sel;=0D unsigned char type;=0D unsigned char scope;=0D u32 tclassid;=0D struct fib_nh_common *nhc;=0D struct fib_info *fi;=0D struct fib_table *table;=0D struct hlist_head *fa_head;=0D };=0D =0D struct fib_result_nl {=0D __be32 fl_addr;=0D u32 fl_mark;=0D unsigned char fl_tos;=0D unsigned char fl_scope;=0D unsigned char tb_id_in;=0D =0D unsigned char tb_id;=0D unsigned char prefixlen;=0D unsigned char nh_sel;=0D unsigned char type;=0D unsigned char scope;=0D int err;=0D };=0D =0D =0D =0D =0D =0D =0D =0D __be32 fib_info_update_nhc_saddr(struct net *net, struct fib_nh_common *nhc= ,=0D unsigned char scope);=0D __be32 fib_result_prefsrc(struct net *net, struct fib_result *res);=0D =0D =0D =0D =0D =0D struct fib_rt_info {=0D struct fib_info *fi;=0D u32 tb_id;=0D __be32 dst;=0D int dst_len;=0D u8 tos;=0D u8 type;=0D u8 offload:1,=0D trap:1,=0D offload_failed:1,=0D unused:5;=0D };=0D =0D struct fib_entry_notifier_info {=0D struct fib_notifier_info info;=0D u32 dst;=0D int dst_len;=0D struct fib_info *fi;=0D u8 tos;=0D u8 type;=0D u32 tb_id;=0D };=0D =0D struct fib_nh_notifier_info {=0D struct fib_notifier_info info;=0D struct fib_nh *fib_nh;=0D };=0D =0D int call_fib4_notifier(struct notifier_block *nb,=0D enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D int call_fib4_notifiers(struct net *net, enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D =0D int fib4_notifier_init(struct net *net);=0D void fib4_notifier_exit(struct net *net);=0D =0D void fib_info_notify_update(struct net *net, struct nl_info *info);=0D int fib_notify(struct net *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack);=0D =0D struct fib_table {=0D struct hlist_node tb_hlist;=0D u32 tb_id;=0D int tb_num_default;=0D struct callback_head rcu;=0D unsigned long *tb_data;=0D unsigned long __data[];=0D };=0D =0D struct fib_dump_filter {=0D u32 table_id;=0D =0D bool filter_set;=0D bool dump_routes;=0D bool dump_exceptions;=0D unsigned char protocol;=0D unsigned char rt_type;=0D unsigned int flags;=0D struct net_device *dev;=0D };=0D =0D int fib_table_lookup(struct fib_table *tb, const struct flowi4 *flp,=0D struct fib_result *res, int fib_flags);=0D int fib_table_insert(struct net *, struct fib_table *, struct fib_config *,= =0D struct netlink_ext_ack *extack);=0D int fib_table_delete(struct net *, struct fib_table *, struct fib_config *,= =0D struct netlink_ext_ack *extack);=0D int fib_table_dump(struct fib_table *table, struct sk_buff *skb,=0D struct netlink_callback *cb, struct fib_dump_filter *filter);=0D int fib_table_flush(struct net *net, struct fib_table *table, bool flush_al= l);=0D struct fib_table *fib_trie_unmerge(struct fib_table *main_tb);=0D void fib_table_flush_external(struct fib_table *table);=0D void fib_free_table(struct fib_table *tb);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib_table *fib_get_ta= ble(struct net *net, u32 id)=0D {=0D struct hlist_node *tb_hlist;=0D struct hlist_head *ptr;=0D =0D ptr =3D id =3D=3D RT_TABLE_LOCAL ?=0D &net->ipv4.fib_table_hash[(RT_TABLE_LOCAL & (2 - 1))] :=0D &net->ipv4.fib_table_hash[(RT_TABLE_MAIN & (2 - 1))];=0D =0D tb_hlist =3D ({ typeof(*((*((struct hlist_node **)(&(ptr)->first))))) *__U= NIQUE_ID_rcu455 =3D (typeof(*((*((struct hlist_node **)(&(ptr)->first))))) = *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_45= 6(void) ; if (!((sizeof(((*((struct hlist_node **)(&(ptr)->first))))) =3D= =3D sizeof(char) || sizeof(((*((struct hlist_node **)(&(ptr)->first))))) = =3D=3D sizeof(short) || sizeof(((*((struct hlist_node **)(&(ptr)->first))))= ) =3D=3D sizeof(int) || sizeof(((*((struct hlist_node **)(&(ptr)->first))))= ) =3D=3D sizeof(long)) || sizeof(((*((struct hlist_node **)(&(ptr)->first))= ))) =3D=3D sizeof(long long))) __compiletime_assert_456(); } while (0); (*(= const volatile typeof( _Generic((((*((struct hlist_node **)(&(ptr)->first))= ))), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed c= har)0, unsigned short: (unsigned short)0, signed short: (signed short)0, un= signed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (uns= igned long)0, signed long: (signed long)0, unsigned long long: (unsigned lo= ng long)0, signed long long: (signed long long)0, default: (((*((struct hli= st_node **)(&(ptr)->first))))))) *)&(((*((struct hlist_node **)(&(ptr)->fir= st)))))); }); do { } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lo= ck_held()))); ; ((typeof(*((*((struct hlist_node **)(&(ptr)->first))))) *)(= __UNIQUE_ID_rcu455)); });=0D =0D return ({ void *__mptr =3D (void *)(tb_hlist); _Static_assert(__builtin_ty= pes_compatible_p(typeof(*(tb_hlist)), typeof(((struct fib_table *)0)->tb_hl= ist)) || __builtin_types_compatible_p(typeof(*(tb_hlist)), typeof(void)), "= pointer type mismatch in container_of()"); ((struct fib_table *)(__mptr - _= _builtin_offsetof(struct fib_table, tb_hlist))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib_table *fib_new_ta= ble(struct net *net, u32 id)=0D {=0D return fib_get_table(net, id);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fib_lookup(struct net *n= et, const struct flowi4 *flp,=0D struct fib_result *res, unsigned int flags)=0D {=0D struct fib_table *tb;=0D int err =3D -101;=0D =0D rcu_read_lock();=0D =0D tb =3D fib_get_table(net, RT_TABLE_MAIN);=0D if (tb)=0D err =3D fib_table_lookup(tb, flp, res, flags | 1);=0D =0D if (err =3D=3D -11)=0D err =3D -101;=0D =0D rcu_read_unlock();=0D =0D return err;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib4_has_custom_rules(c= onst struct net *net)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib4_rule_default(const= struct fib_rule *rule)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fib4_rules_dump(struct n= et *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int fib4_rules_seq_= read(struct net *net)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib4_rules_early_flow_d= issect(struct net *net,=0D struct sk_buff *skb,=0D struct flowi4 *fl4,=0D struct flow_keys *flkeys)=0D {=0D return false;=0D }=0D # 432 "./include/net/ip_fib.h"=0D extern const struct nla_policy rtm_ipv4_policy[];=0D void ip_fib_init(void);=0D int fib_gw_from_via(struct fib_config *cfg, struct nlattr *nla,=0D struct netlink_ext_ack *extack);=0D __be32 fib_compute_spec_dst(struct sk_buff *skb);=0D bool fib_info_nh_uses_dev(struct fib_info *fi, const struct net_device *dev= );=0D int fib_validate_source(struct sk_buff *skb, __be32 src, __be32 dst,=0D u8 tos, int oif, struct net_device *dev,=0D struct in_device *idev, u32 *itag);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fib_num_tclassid_users(s= truct net *net)=0D {=0D return 0;=0D }=0D =0D int fib_unmerge(struct net *net);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nhc_l3mdev_matches_dev(= const struct fib_nh_common *nhc,=0D const struct net_device *dev)=0D {=0D if (nhc->nhc_dev =3D=3D dev ||=0D l3mdev_master_ifindex_rcu(nhc->nhc_dev) =3D=3D dev->ifindex)=0D return true;=0D =0D return false;=0D }=0D =0D =0D int ip_fib_check_default(__be32 gw, struct net_device *dev);=0D int fib_sync_down_dev(struct net_device *dev, unsigned long event, bool for= ce);=0D int fib_sync_down_addr(struct net_device *dev, __be32 local);=0D int fib_sync_up(struct net_device *dev, unsigned char nh_flags);=0D void fib_sync_mtu(struct net_device *dev, u32 orig_mtu);=0D void fib_nhc_update_mtu(struct fib_nh_common *nhc, u32 new, u32 orig);=0D # 519 "./include/net/ip_fib.h"=0D int fib_check_nh(struct net *net, struct fib_nh *nh, u32 table, u8 scope,=0D struct netlink_ext_ack *extack);=0D void fib_select_multipath(struct fib_result *res, int hash);=0D void fib_select_path(struct net *net, struct fib_result *res,=0D struct flowi4 *fl4, const struct sk_buff *skb);=0D =0D int fib_nh_init(struct net *net, struct fib_nh *fib_nh,=0D struct fib_config *cfg, int nh_weight,=0D struct netlink_ext_ack *extack);=0D void fib_nh_release(struct net *net, struct fib_nh *fib_nh);=0D int fib_nh_common_init(struct net *net, struct fib_nh_common *nhc,=0D struct nlattr *fc_encap, u16 fc_encap_type,=0D void *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack);=0D void fib_nh_common_release(struct fib_nh_common *nhc);=0D =0D =0D void fib_alias_hw_flags_set(struct net *net, const struct fib_rt_info *fri)= ;=0D void fib_trie_init(void);=0D struct fib_table *fib_trie_table(u32 id, struct fib_table *alias);=0D bool fib_lookup_good_nhc(const struct fib_nh_common *nhc, int fib_flags,=0D const struct flowi4 *flp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib_combine_itag(u32 *i= tag, const struct fib_result *res)=0D {=0D # 565 "./include/net/ip_fib.h"=0D }=0D =0D void fib_flush(struct net *net);=0D void free_fib_info(struct fib_info *fi);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib_info_hold(struct fi= b_info *fi)=0D {=0D refcount_inc(&fi->fib_clntref);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib_info_put(struct fib= _info *fi)=0D {=0D if (refcount_dec_and_test(&fi->fib_clntref))=0D free_fib_info(fi);=0D }=0D =0D =0D int fib_proc_init(struct net *net);=0D void fib_proc_exit(struct net *net);=0D # 594 "./include/net/ip_fib.h"=0D u32 ip_mtu_from_fib_result(struct fib_result *res, __be32 daddr);=0D =0D int ip_valid_fib_dump_req(struct net *net, const struct nlmsghdr *nlh,=0D struct fib_dump_filter *filter,=0D struct netlink_callback *cb);=0D =0D int fib_nexthop_info(struct sk_buff *skb, const struct fib_nh_common *nh,=0D u8 rt_family, unsigned char *flags, bool skip_oif);=0D int fib_add_nexthop(struct sk_buff *skb, const struct fib_nh_common *nh,=0D int nh_weight, u8 rt_family, u32 nh_tclassid);=0D # 11 "./include/linux/mroute_base.h" 2=0D # 28 "./include/linux/mroute_base.h"=0D struct vif_device {=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D unsigned long bytes_in, bytes_out;=0D unsigned long pkt_in, pkt_out;=0D unsigned long rate_limit;=0D unsigned char threshold;=0D unsigned short flags;=0D int link;=0D =0D =0D struct netdev_phys_item_id dev_parent_id;=0D __be32 local, remote;=0D };=0D =0D struct vif_entry_notifier_info {=0D struct fib_notifier_info info;=0D struct net_device *dev;=0D unsigned short vif_index;=0D unsigned short vif_flags;=0D u32 tb_id;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_call_vif_notifier(str= uct notifier_block *nb,=0D unsigned short family,=0D enum fib_event_type event_type,=0D struct vif_device *vif,=0D unsigned short vif_index, u32 tb_id,=0D struct netlink_ext_ack *extack)=0D {=0D struct vif_entry_notifier_info info =3D {=0D .info =3D {=0D .family =3D family,=0D .extack =3D extack,=0D },=0D .dev =3D vif->dev,=0D .vif_index =3D vif_index,=0D .vif_flags =3D vif->flags,=0D .tb_id =3D tb_id,=0D };=0D =0D return call_fib_notifier(nb, event_type, &info.info);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_call_vif_notifiers(st= ruct net *net,=0D unsigned short family,=0D enum fib_event_type event_type,=0D struct vif_device *vif,=0D unsigned short vif_index, u32 tb_id,=0D unsigned int *ipmr_seq)=0D {=0D struct vif_entry_notifier_info info =3D {=0D .info =3D {=0D .family =3D family,=0D },=0D .dev =3D vif->dev,=0D .vif_index =3D vif_index,=0D .vif_flags =3D vif->flags,=0D .tb_id =3D tb_id,=0D };=0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/mroute_base.h", 89); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pu= shsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word= " " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\= t" ".popsection" : : "i" ("include/linux/mroute_base.h"), "i" (89), "i" ((1= << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (= 0); do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }= ); } __builtin_expect(!!(__ret_do_once), 0); });=0D (*ipmr_seq)++;=0D return call_fib_notifiers(net, event_type, &info.info);=0D }=0D # 107 "./include/linux/mroute_base.h"=0D enum {=0D MFC_STATIC =3D ((((1UL))) << (0)),=0D MFC_OFFLOAD =3D ((((1UL))) << (1)),=0D };=0D # 132 "./include/linux/mroute_base.h"=0D struct mr_mfc {=0D struct rhlist_head mnode;=0D unsigned short mfc_parent;=0D int mfc_flags;=0D =0D union {=0D struct {=0D unsigned long expires;=0D struct sk_buff_head unresolved;=0D } unres;=0D struct {=0D unsigned long last_assert;=0D int minvif;=0D int maxvif;=0D unsigned long bytes;=0D unsigned long pkt;=0D unsigned long wrong_if;=0D unsigned long lastuse;=0D unsigned char ttls[32];=0D refcount_t refcount;=0D } res;=0D } mfc_un;=0D struct list_head list;=0D struct callback_head rcu;=0D void (*free)(struct callback_head *head);=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mr_cache_put(struct mr_= mfc *c)=0D {=0D if (refcount_dec_and_test(&c->mfc_un.res.refcount))=0D call_rcu(&c->rcu, c->free);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mr_cache_hold(struct mr= _mfc *c)=0D {=0D refcount_inc(&c->mfc_un.res.refcount);=0D }=0D =0D struct mfc_entry_notifier_info {=0D struct fib_notifier_info info;=0D struct mr_mfc *mfc;=0D u32 tb_id;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_call_mfc_notifier(str= uct notifier_block *nb,=0D unsigned short family,=0D enum fib_event_type event_type,=0D struct mr_mfc *mfc, u32 tb_id,=0D struct netlink_ext_ack *extack)=0D {=0D struct mfc_entry_notifier_info info =3D {=0D .info =3D {=0D .family =3D family,=0D .extack =3D extack,=0D },=0D .mfc =3D mfc,=0D .tb_id =3D tb_id=0D };=0D =0D return call_fib_notifier(nb, event_type, &info.info);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_call_mfc_notifiers(st= ruct net *net,=0D unsigned short family,=0D enum fib_event_type event_type,=0D struct mr_mfc *mfc, u32 tb_id,=0D unsigned int *ipmr_seq)=0D {=0D struct mfc_entry_notifier_info info =3D {=0D .info =3D {=0D .family =3D family,=0D },=0D .mfc =3D mfc,=0D .tb_id =3D tb_id=0D };=0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/mroute_base.h", 208); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/linux/mroute_base.h"), "i" (208), "i" (= (1 << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while= (0); do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0);= }); } __builtin_expect(!!(__ret_do_once), 0); });=0D (*ipmr_seq)++;=0D return call_fib_notifiers(net, event_type, &info.info);=0D }=0D =0D struct mr_table;=0D =0D =0D =0D =0D =0D =0D struct mr_table_ops {=0D const struct rhashtable_params *rht_params;=0D void *cmparg_any;=0D };=0D # 243 "./include/linux/mroute_base.h"=0D struct mr_table {=0D struct list_head list;=0D possible_net_t net;=0D struct mr_table_ops ops;=0D u32 id;=0D struct sock *mroute_sk;=0D struct timer_list ipmr_expire_timer;=0D struct list_head mfc_unres_queue;=0D struct vif_device vif_table[32];=0D struct rhltable mfc_hash;=0D struct list_head mfc_cache_list;=0D int maxvif;=0D atomic_t cache_resolve_queue_len;=0D bool mroute_do_assert;=0D bool mroute_do_pim;=0D bool mroute_do_wrvifwhole;=0D int mroute_reg_vif_num;=0D };=0D # 310 "./include/linux/mroute_base.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vif_device_init(struct = vif_device *v,=0D struct net_device *dev,=0D unsigned long rate_limit,=0D unsigned char threshold,=0D unsigned short flags,=0D unsigned short get_iflink_mask)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_find_parent(str= uct mr_table *mrt,=0D void *hasharg, int parent)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_find_any_parent= (struct mr_table *mrt,=0D int vifi)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mr_mfc *mr_mfc_find_a= ny(struct mr_table *mrt,=0D int vifi, void *hasharg)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_fill_mroute(struct mr= _table *mrt, struct sk_buff *skb,=0D struct mr_mfc *c, struct rtmsg *rtm)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D mr_rtm_dumproute(struct sk_buff *skb, struct netlink_callback *cb,=0D struct mr_table *(*iter)(struct net *net,=0D struct mr_table *mrt),=0D int (*fill)(struct mr_table *mrt,=0D struct sk_buff *skb,=0D u32 portid, u32 seq, struct mr_mfc *c,=0D int cmd, int flags),=0D spinlock_t *lock, struct fib_dump_filter *filter)=0D {=0D return -22;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mr_dump(struct net *net,= struct notifier_block *nb,=0D unsigned short family,=0D int (*rules_dump)(struct net *net,=0D struct notifier_block *nb,=0D struct netlink_ext_ack *extack),=0D struct mr_table *(*mr_iter)(struct net *net,=0D struct mr_table *mrt),=0D rwlock_t *mrt_lock, struct netlink_ext_ack *extack)=0D {=0D return -22;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_find(struct mr_= table *mrt, void *hasharg)=0D {=0D return mr_mfc_find_parent(mrt, hasharg, -1);=0D }=0D =0D =0D struct mr_vif_iter {=0D struct seq_net_private p;=0D struct mr_table *mrt;=0D int ct;=0D };=0D =0D struct mr_mfc_iter {=0D struct seq_net_private p;=0D struct mr_table *mrt;=0D struct list_head *cache;=0D =0D =0D spinlock_t *lock;=0D };=0D # 434 "./include/linux/mroute_base.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_vif_seq_idx(struct = net *net, struct mr_vif_iter *iter,=0D loff_t pos)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_vif_seq_next(struct= seq_file *seq,=0D void *v, loff_t *pos)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_vif_seq_start(struc= t seq_file *seq, loff_t *pos)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_seq_idx(struct = net *net,=0D struct mr_mfc_iter *it, loff_t pos)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_seq_next(struct= seq_file *seq, void *v,=0D loff_t *pos)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *mr_mfc_seq_start(struc= t seq_file *seq, loff_t *pos,=0D struct mr_table *mrt, spinlock_t *lock)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mr_mfc_seq_stop(struct = seq_file *seq, void *v)=0D {=0D }=0D # 11 "./include/linux/mroute6.h" 2=0D # 20 "./include/linux/mroute6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_mroute_opt(int opt)= =0D {=0D return 0;=0D }=0D =0D =0D struct sock;=0D # 37 "./include/linux/mroute6.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_mroute_setsockopt(st= ruct sock *sock, int optname,=0D sockptr_t optval, unsigned int optlen)=0D {=0D return -92;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int ip6_mroute_getsockopt(struct sock *sock,=0D int optname, char *optval, int *optlen)=0D {=0D return -92;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int ip6mr_ioctl(struct sock *sk, int cmd, void *arg)=0D {=0D return -515;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_mr_init(void)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_mr_cleanup(void)=0D {=0D return;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip6mr_rule_default(cons= t struct fib_rule *rule)=0D {=0D return true;=0D }=0D =0D =0D =0D =0D struct mfc6_cache_cmp_arg {=0D struct in6_addr mf6c_mcastgrp;=0D struct in6_addr mf6c_origin;=0D };=0D =0D struct mfc6_cache {=0D struct mr_mfc _c;=0D union {=0D struct {=0D struct in6_addr mf6c_mcastgrp;=0D struct in6_addr mf6c_origin;=0D };=0D struct mfc6_cache_cmp_arg cmparg;=0D };=0D };=0D =0D =0D =0D struct rtmsg;=0D extern int ip6mr_get_route(struct net *net, struct sk_buff *skb,=0D struct rtmsg *rtm, u32 portid);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mroute6_is_socket(struc= t net *net, struct sk_buff *skb)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6mr_sk_done(struct soc= k *sk)=0D {=0D return 0;=0D }=0D # 37 "net/ipv6/route.c" 2=0D =0D # 1 "./include/linux/if_arp.h" 1=0D # 23 "./include/linux/if_arp.h"=0D # 1 "./include/uapi/linux/if_arp.h" 1=0D # 117 "./include/uapi/linux/if_arp.h"=0D struct arpreq {=0D struct sockaddr arp_pa;=0D struct sockaddr arp_ha;=0D int arp_flags;=0D struct sockaddr arp_netmask;=0D char arp_dev[16];=0D };=0D =0D struct arpreq_old {=0D struct sockaddr arp_pa;=0D struct sockaddr arp_ha;=0D int arp_flags;=0D struct sockaddr arp_netmask;=0D };=0D # 145 "./include/uapi/linux/if_arp.h"=0D struct arphdr {=0D __be16 ar_hrd;=0D __be16 ar_pro;=0D unsigned char ar_hln;=0D unsigned char ar_pln;=0D __be16 ar_op;=0D # 162 "./include/uapi/linux/if_arp.h"=0D };=0D # 24 "./include/linux/if_arp.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct arphdr *arp_hdr(const= struct sk_buff *skb)=0D {=0D return (struct arphdr *)skb_network_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int arp_hdr_len(con= st struct net_device *dev)=0D {=0D switch (dev->type) {=0D =0D =0D =0D =0D =0D default:=0D =0D return sizeof(struct arphdr) + (dev->addr_len + sizeof(u32)) * 2;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool dev_is_mac_header_xmit(= const struct net_device *dev)=0D {=0D switch (dev->type) {=0D case 768:=0D case 769:=0D case 776:=0D case 778:=0D case 823:=0D case 0xFFFF:=0D case 0xFFFE:=0D case 519:=0D case 779:=0D return false;=0D default:=0D return true;=0D }=0D }=0D # 39 "net/ipv6/route.c" 2=0D # 1 "./include/linux/proc_fs.h" 1=0D # 12 "./include/linux/proc_fs.h"=0D struct proc_dir_entry;=0D struct seq_file;=0D struct seq_operations;=0D =0D enum {=0D # 25 "./include/linux/proc_fs.h"=0D PROC_ENTRY_PERMANENT =3D 1U << 0,=0D =0D };=0D =0D struct proc_ops {=0D unsigned int proc_flags;=0D int (*proc_open)(struct inode *, struct file *);=0D ssize_t (*proc_read)(struct file *, char *, size_t, loff_t *);=0D ssize_t (*proc_read_iter)(struct kiocb *, struct iov_iter *);=0D ssize_t (*proc_write)(struct file *, const char *, size_t, loff_t *);=0D =0D loff_t (*proc_lseek)(struct file *, loff_t, int);=0D int (*proc_release)(struct inode *, struct file *);=0D __poll_t (*proc_poll)(struct file *, struct poll_table_struct *);=0D long (*proc_ioctl)(struct file *, unsigned int, unsigned long);=0D =0D =0D =0D int (*proc_mmap)(struct file *, struct vm_area_struct *);=0D unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsi= gned long, unsigned long, unsigned long);=0D } ;=0D =0D =0D enum proc_hidepid {=0D HIDEPID_OFF =3D 0,=0D HIDEPID_NO_ACCESS =3D 1,=0D HIDEPID_INVISIBLE =3D 2,=0D HIDEPID_NOT_PTRACEABLE =3D 4,=0D };=0D =0D =0D enum proc_pidonly {=0D PROC_PIDONLY_OFF =3D 0,=0D PROC_PIDONLY_ON =3D 1,=0D };=0D =0D struct proc_fs_info {=0D struct pid_namespace *pid_ns;=0D struct dentry *proc_self;=0D struct dentry *proc_thread_self;=0D kgid_t pid_gid;=0D enum proc_hidepid hide_pid;=0D enum proc_pidonly pidonly;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct proc_fs_info *proc_sb= _info(struct super_block *sb)=0D {=0D return sb->s_fs_info;=0D }=0D =0D =0D =0D typedef int (*proc_write_t)(struct file *, char *, size_t);=0D =0D extern void proc_root_init(void);=0D extern void proc_flush_pid(struct pid *);=0D =0D extern struct proc_dir_entry *proc_symlink(const char *,=0D struct proc_dir_entry *, const char *);=0D struct proc_dir_entry *_proc_mkdir(const char *, umode_t, struct proc_dir_e= ntry *, void *, bool);=0D extern struct proc_dir_entry *proc_mkdir(const char *, struct proc_dir_entr= y *);=0D extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t,=0D struct proc_dir_entry *, void *);=0D extern struct proc_dir_entry *proc_mkdir_mode(const char *, umode_t,=0D struct proc_dir_entry *);=0D struct proc_dir_entry *proc_create_mount_point(const char *name);=0D =0D struct proc_dir_entry *proc_create_seq_private(const char *name, umode_t mo= de,=0D struct proc_dir_entry *parent, const struct seq_operations *ops,=0D unsigned int state_size, void *data);=0D =0D =0D =0D =0D struct proc_dir_entry *proc_create_single_data(const char *name, umode_t mo= de,=0D struct proc_dir_entry *parent,=0D int (*show)(struct seq_file *, void *), void *data);=0D =0D =0D =0D extern struct proc_dir_entry *proc_create_data(const char *, umode_t,=0D struct proc_dir_entry *,=0D const struct proc_ops *,=0D void *);=0D =0D struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct p= roc_dir_entry *parent, const struct proc_ops *proc_ops);=0D extern void proc_set_size(struct proc_dir_entry *, loff_t);=0D extern void proc_set_user(struct proc_dir_entry *, kuid_t, kgid_t);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *pde_data(const struct = inode *inode)=0D {=0D return inode->i_private;=0D }=0D =0D extern void *proc_get_parent_data(const struct inode *);=0D extern void proc_remove(struct proc_dir_entry *);=0D extern void remove_proc_entry(const char *, struct proc_dir_entry *);=0D extern int remove_proc_subtree(const char *, struct proc_dir_entry *);=0D =0D struct proc_dir_entry *proc_create_net_data(const char *name, umode_t mode,= =0D struct proc_dir_entry *parent, const struct seq_operations *ops,=0D unsigned int state_size, void *data);=0D =0D =0D struct proc_dir_entry *proc_create_net_single(const char *name, umode_t mod= e,=0D struct proc_dir_entry *parent,=0D int (*show)(struct seq_file *, void *), void *data);=0D struct proc_dir_entry *proc_create_net_data_write(const char *name, umode_t= mode,=0D struct proc_dir_entry *parent,=0D const struct seq_operations *ops,=0D proc_write_t write,=0D unsigned int state_size, void *data);=0D struct proc_dir_entry *proc_create_net_single_write(const char *name, umode= _t mode,=0D struct proc_dir_entry *parent,=0D int (*show)(struct seq_file *, void *),=0D proc_write_t write,=0D void *data);=0D extern struct pid *tgid_pidfd_to_pid(const struct file *file);=0D =0D struct bpf_iter_aux_info;=0D extern int bpf_iter_init_seq_net(void *priv_data, struct bpf_iter_aux_info = *aux);=0D extern void bpf_iter_fini_seq_net(void *priv_data);=0D # 221 "./include/linux/proc_fs.h"=0D struct net;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct proc_dir_entry *proc_= net_mkdir(=0D struct net *net, const char *name, struct proc_dir_entry *parent)=0D {=0D return _proc_mkdir(name, 0, parent, net, true);=0D }=0D =0D struct ns_common;=0D int open_related_ns(struct ns_common *ns,=0D struct ns_common *(*get_ns)(struct ns_common *ns));=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid_namespace *proc_p= id_ns(struct super_block *sb)=0D {=0D return proc_sb_info(sb)->pid_ns;=0D }=0D =0D bool proc_ns_file(const struct file *file);=0D # 40 "net/ipv6/route.c" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/net/ip6_fib.h" 1=0D # 12 "./include/net/ip6_fib.h"=0D # 1 "./include/linux/ipv6_route.h" 1=0D # 11 "./include/linux/ipv6_route.h"=0D # 1 "./include/uapi/linux/ipv6_route.h" 1=0D # 43 "./include/uapi/linux/ipv6_route.h"=0D struct in6_rtmsg {=0D struct in6_addr rtmsg_dst;=0D struct in6_addr rtmsg_src;=0D struct in6_addr rtmsg_gateway;=0D __u32 rtmsg_type;=0D __u16 rtmsg_dst_len;=0D __u16 rtmsg_src_len;=0D __u32 rtmsg_metric;=0D unsigned long rtmsg_info;=0D __u32 rtmsg_flags;=0D int rtmsg_ifindex;=0D };=0D # 12 "./include/linux/ipv6_route.h" 2=0D # 13 "./include/net/ip6_fib.h" 2=0D # 23 "./include/net/ip6_fib.h"=0D # 1 "./include/uapi/linux/bpf.h" 1=0D # 12 "./include/uapi/linux/bpf.h"=0D # 1 "./include/uapi/linux/bpf_common.h" 1=0D # 13 "./include/uapi/linux/bpf.h" 2=0D # 53 "./include/uapi/linux/bpf.h"=0D enum {=0D BPF_REG_0 =3D 0,=0D BPF_REG_1,=0D BPF_REG_2,=0D BPF_REG_3,=0D BPF_REG_4,=0D BPF_REG_5,=0D BPF_REG_6,=0D BPF_REG_7,=0D BPF_REG_8,=0D BPF_REG_9,=0D BPF_REG_10,=0D __MAX_BPF_REG,=0D };=0D =0D =0D =0D =0D struct bpf_insn {=0D __u8 code;=0D __u8 dst_reg:4;=0D __u8 src_reg:4;=0D __s16 off;=0D __s32 imm;=0D };=0D =0D =0D struct bpf_lpm_trie_key {=0D __u32 prefixlen;=0D __u8 data[0];=0D };=0D =0D struct bpf_cgroup_storage_key {=0D __u64 cgroup_inode_id;=0D __u32 attach_type;=0D };=0D =0D union bpf_iter_link_info {=0D struct {=0D __u32 map_fd;=0D } map;=0D };=0D # 840 "./include/uapi/linux/bpf.h"=0D enum bpf_cmd {=0D BPF_MAP_CREATE,=0D BPF_MAP_LOOKUP_ELEM,=0D BPF_MAP_UPDATE_ELEM,=0D BPF_MAP_DELETE_ELEM,=0D BPF_MAP_GET_NEXT_KEY,=0D BPF_PROG_LOAD,=0D BPF_OBJ_PIN,=0D BPF_OBJ_GET,=0D BPF_PROG_ATTACH,=0D BPF_PROG_DETACH,=0D BPF_PROG_TEST_RUN,=0D BPF_PROG_RUN =3D BPF_PROG_TEST_RUN,=0D BPF_PROG_GET_NEXT_ID,=0D BPF_MAP_GET_NEXT_ID,=0D BPF_PROG_GET_FD_BY_ID,=0D BPF_MAP_GET_FD_BY_ID,=0D BPF_OBJ_GET_INFO_BY_FD,=0D BPF_PROG_QUERY,=0D BPF_RAW_TRACEPOINT_OPEN,=0D BPF_BTF_LOAD,=0D BPF_BTF_GET_FD_BY_ID,=0D BPF_TASK_FD_QUERY,=0D BPF_MAP_LOOKUP_AND_DELETE_ELEM,=0D BPF_MAP_FREEZE,=0D BPF_BTF_GET_NEXT_ID,=0D BPF_MAP_LOOKUP_BATCH,=0D BPF_MAP_LOOKUP_AND_DELETE_BATCH,=0D BPF_MAP_UPDATE_BATCH,=0D BPF_MAP_DELETE_BATCH,=0D BPF_LINK_CREATE,=0D BPF_LINK_UPDATE,=0D BPF_LINK_GET_FD_BY_ID,=0D BPF_LINK_GET_NEXT_ID,=0D BPF_ENABLE_STATS,=0D BPF_ITER_CREATE,=0D BPF_LINK_DETACH,=0D BPF_PROG_BIND_MAP,=0D };=0D =0D enum bpf_map_type {=0D BPF_MAP_TYPE_UNSPEC,=0D BPF_MAP_TYPE_HASH,=0D BPF_MAP_TYPE_ARRAY,=0D BPF_MAP_TYPE_PROG_ARRAY,=0D BPF_MAP_TYPE_PERF_EVENT_ARRAY,=0D BPF_MAP_TYPE_PERCPU_HASH,=0D BPF_MAP_TYPE_PERCPU_ARRAY,=0D BPF_MAP_TYPE_STACK_TRACE,=0D BPF_MAP_TYPE_CGROUP_ARRAY,=0D BPF_MAP_TYPE_LRU_HASH,=0D BPF_MAP_TYPE_LRU_PERCPU_HASH,=0D BPF_MAP_TYPE_LPM_TRIE,=0D BPF_MAP_TYPE_ARRAY_OF_MAPS,=0D BPF_MAP_TYPE_HASH_OF_MAPS,=0D BPF_MAP_TYPE_DEVMAP,=0D BPF_MAP_TYPE_SOCKMAP,=0D BPF_MAP_TYPE_CPUMAP,=0D BPF_MAP_TYPE_XSKMAP,=0D BPF_MAP_TYPE_SOCKHASH,=0D BPF_MAP_TYPE_CGROUP_STORAGE,=0D BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,=0D BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,=0D BPF_MAP_TYPE_QUEUE,=0D BPF_MAP_TYPE_STACK,=0D BPF_MAP_TYPE_SK_STORAGE,=0D BPF_MAP_TYPE_DEVMAP_HASH,=0D BPF_MAP_TYPE_STRUCT_OPS,=0D BPF_MAP_TYPE_RINGBUF,=0D BPF_MAP_TYPE_INODE_STORAGE,=0D BPF_MAP_TYPE_TASK_STORAGE,=0D BPF_MAP_TYPE_BLOOM_FILTER,=0D };=0D # 922 "./include/uapi/linux/bpf.h"=0D enum bpf_prog_type {=0D BPF_PROG_TYPE_UNSPEC,=0D BPF_PROG_TYPE_SOCKET_FILTER,=0D BPF_PROG_TYPE_KPROBE,=0D BPF_PROG_TYPE_SCHED_CLS,=0D BPF_PROG_TYPE_SCHED_ACT,=0D BPF_PROG_TYPE_TRACEPOINT,=0D BPF_PROG_TYPE_XDP,=0D BPF_PROG_TYPE_PERF_EVENT,=0D BPF_PROG_TYPE_CGROUP_SKB,=0D BPF_PROG_TYPE_CGROUP_SOCK,=0D BPF_PROG_TYPE_LWT_IN,=0D BPF_PROG_TYPE_LWT_OUT,=0D BPF_PROG_TYPE_LWT_XMIT,=0D BPF_PROG_TYPE_SOCK_OPS,=0D BPF_PROG_TYPE_SK_SKB,=0D BPF_PROG_TYPE_CGROUP_DEVICE,=0D BPF_PROG_TYPE_SK_MSG,=0D BPF_PROG_TYPE_RAW_TRACEPOINT,=0D BPF_PROG_TYPE_CGROUP_SOCK_ADDR,=0D BPF_PROG_TYPE_LWT_SEG6LOCAL,=0D BPF_PROG_TYPE_LIRC_MODE2,=0D BPF_PROG_TYPE_SK_REUSEPORT,=0D BPF_PROG_TYPE_FLOW_DISSECTOR,=0D BPF_PROG_TYPE_CGROUP_SYSCTL,=0D BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,=0D BPF_PROG_TYPE_CGROUP_SOCKOPT,=0D BPF_PROG_TYPE_TRACING,=0D BPF_PROG_TYPE_STRUCT_OPS,=0D BPF_PROG_TYPE_EXT,=0D BPF_PROG_TYPE_LSM,=0D BPF_PROG_TYPE_SK_LOOKUP,=0D BPF_PROG_TYPE_SYSCALL,=0D };=0D =0D enum bpf_attach_type {=0D BPF_CGROUP_INET_INGRESS,=0D BPF_CGROUP_INET_EGRESS,=0D BPF_CGROUP_INET_SOCK_CREATE,=0D BPF_CGROUP_SOCK_OPS,=0D BPF_SK_SKB_STREAM_PARSER,=0D BPF_SK_SKB_STREAM_VERDICT,=0D BPF_CGROUP_DEVICE,=0D BPF_SK_MSG_VERDICT,=0D BPF_CGROUP_INET4_BIND,=0D BPF_CGROUP_INET6_BIND,=0D BPF_CGROUP_INET4_CONNECT,=0D BPF_CGROUP_INET6_CONNECT,=0D BPF_CGROUP_INET4_POST_BIND,=0D BPF_CGROUP_INET6_POST_BIND,=0D BPF_CGROUP_UDP4_SENDMSG,=0D BPF_CGROUP_UDP6_SENDMSG,=0D BPF_LIRC_MODE2,=0D BPF_FLOW_DISSECTOR,=0D BPF_CGROUP_SYSCTL,=0D BPF_CGROUP_UDP4_RECVMSG,=0D BPF_CGROUP_UDP6_RECVMSG,=0D BPF_CGROUP_GETSOCKOPT,=0D BPF_CGROUP_SETSOCKOPT,=0D BPF_TRACE_RAW_TP,=0D BPF_TRACE_FENTRY,=0D BPF_TRACE_FEXIT,=0D BPF_MODIFY_RETURN,=0D BPF_LSM_MAC,=0D BPF_TRACE_ITER,=0D BPF_CGROUP_INET4_GETPEERNAME,=0D BPF_CGROUP_INET6_GETPEERNAME,=0D BPF_CGROUP_INET4_GETSOCKNAME,=0D BPF_CGROUP_INET6_GETSOCKNAME,=0D BPF_XDP_DEVMAP,=0D BPF_CGROUP_INET_SOCK_RELEASE,=0D BPF_XDP_CPUMAP,=0D BPF_SK_LOOKUP,=0D BPF_XDP,=0D BPF_SK_SKB_VERDICT,=0D BPF_SK_REUSEPORT_SELECT,=0D BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,=0D BPF_PERF_EVENT,=0D BPF_TRACE_KPROBE_MULTI,=0D __MAX_BPF_ATTACH_TYPE=0D };=0D =0D =0D =0D enum bpf_link_type {=0D BPF_LINK_TYPE_UNSPEC =3D 0,=0D BPF_LINK_TYPE_RAW_TRACEPOINT =3D 1,=0D BPF_LINK_TYPE_TRACING =3D 2,=0D BPF_LINK_TYPE_CGROUP =3D 3,=0D BPF_LINK_TYPE_ITER =3D 4,=0D BPF_LINK_TYPE_NETNS =3D 5,=0D BPF_LINK_TYPE_XDP =3D 6,=0D BPF_LINK_TYPE_PERF_EVENT =3D 7,=0D BPF_LINK_TYPE_KPROBE_MULTI =3D 8,=0D =0D MAX_BPF_LINK_TYPE,=0D };=0D # 1183 "./include/uapi/linux/bpf.h"=0D enum {=0D BPF_ANY =3D 0,=0D BPF_NOEXIST =3D 1,=0D BPF_EXIST =3D 2,=0D BPF_F_LOCK =3D 4,=0D };=0D =0D =0D enum {=0D BPF_F_NO_PREALLOC =3D (1U << 0),=0D =0D =0D =0D =0D =0D =0D BPF_F_NO_COMMON_LRU =3D (1U << 1),=0D =0D BPF_F_NUMA_NODE =3D (1U << 2),=0D =0D =0D BPF_F_RDONLY =3D (1U << 3),=0D BPF_F_WRONLY =3D (1U << 4),=0D =0D =0D BPF_F_STACK_BUILD_ID =3D (1U << 5),=0D =0D =0D BPF_F_ZERO_SEED =3D (1U << 6),=0D =0D =0D BPF_F_RDONLY_PROG =3D (1U << 7),=0D BPF_F_WRONLY_PROG =3D (1U << 8),=0D =0D =0D BPF_F_CLONE =3D (1U << 9),=0D =0D =0D BPF_F_MMAPABLE =3D (1U << 10),=0D =0D =0D BPF_F_PRESERVE_ELEMS =3D (1U << 11),=0D =0D =0D BPF_F_INNER_MAP =3D (1U << 12),=0D };=0D # 1246 "./include/uapi/linux/bpf.h"=0D enum bpf_stats_type {=0D =0D BPF_STATS_RUN_TIME =3D 0,=0D };=0D =0D enum bpf_stack_build_id_status {=0D =0D BPF_STACK_BUILD_ID_EMPTY =3D 0,=0D =0D BPF_STACK_BUILD_ID_VALID =3D 1,=0D =0D BPF_STACK_BUILD_ID_IP =3D 2,=0D };=0D =0D =0D struct bpf_stack_build_id {=0D __s32 status;=0D unsigned char build_id[20];=0D union {=0D __u64 offset;=0D __u64 ip;=0D };=0D };=0D =0D =0D =0D union bpf_attr {=0D struct {=0D __u32 map_type;=0D __u32 key_size;=0D __u32 value_size;=0D __u32 max_entries;=0D __u32 map_flags;=0D =0D =0D __u32 inner_map_fd;=0D __u32 numa_node;=0D =0D =0D char map_name[16U];=0D __u32 map_ifindex;=0D __u32 btf_fd;=0D __u32 btf_key_type_id;=0D __u32 btf_value_type_id;=0D __u32 btf_vmlinux_value_type_id;=0D # 1300 "./include/uapi/linux/bpf.h"=0D __u64 map_extra;=0D };=0D =0D struct {=0D __u32 map_fd;=0D __u64 __attribute__((aligned(8))) key;=0D union {=0D __u64 __attribute__((aligned(8))) value;=0D __u64 __attribute__((aligned(8))) next_key;=0D };=0D __u64 flags;=0D };=0D =0D struct {=0D __u64 __attribute__((aligned(8))) in_batch;=0D =0D =0D __u64 __attribute__((aligned(8))) out_batch;=0D __u64 __attribute__((aligned(8))) keys;=0D __u64 __attribute__((aligned(8))) values;=0D __u32 count;=0D =0D =0D =0D =0D __u32 map_fd;=0D __u64 elem_flags;=0D __u64 flags;=0D } batch;=0D =0D struct {=0D __u32 prog_type;=0D __u32 insn_cnt;=0D __u64 __attribute__((aligned(8))) insns;=0D __u64 __attribute__((aligned(8))) license;=0D __u32 log_level;=0D __u32 log_size;=0D __u64 __attribute__((aligned(8))) log_buf;=0D __u32 kern_version;=0D __u32 prog_flags;=0D char prog_name[16U];=0D __u32 prog_ifindex;=0D =0D =0D =0D =0D __u32 expected_attach_type;=0D __u32 prog_btf_fd;=0D __u32 func_info_rec_size;=0D __u64 __attribute__((aligned(8))) func_info;=0D __u32 func_info_cnt;=0D __u32 line_info_rec_size;=0D __u64 __attribute__((aligned(8))) line_info;=0D __u32 line_info_cnt;=0D __u32 attach_btf_id;=0D union {=0D =0D __u32 attach_prog_fd;=0D =0D __u32 attach_btf_obj_fd;=0D };=0D __u32 core_relo_cnt;=0D __u64 __attribute__((aligned(8))) fd_array;=0D __u64 __attribute__((aligned(8))) core_relos;=0D __u32 core_relo_rec_size;=0D };=0D =0D struct {=0D __u64 __attribute__((aligned(8))) pathname;=0D __u32 bpf_fd;=0D __u32 file_flags;=0D };=0D =0D struct {=0D __u32 target_fd;=0D __u32 attach_bpf_fd;=0D __u32 attach_type;=0D __u32 attach_flags;=0D __u32 replace_bpf_fd;=0D =0D =0D =0D };=0D =0D struct {=0D __u32 prog_fd;=0D __u32 retval;=0D __u32 data_size_in;=0D __u32 data_size_out;=0D =0D =0D =0D __u64 __attribute__((aligned(8))) data_in;=0D __u64 __attribute__((aligned(8))) data_out;=0D __u32 repeat;=0D __u32 duration;=0D __u32 ctx_size_in;=0D __u32 ctx_size_out;=0D =0D =0D =0D __u64 __attribute__((aligned(8))) ctx_in;=0D __u64 __attribute__((aligned(8))) ctx_out;=0D __u32 flags;=0D __u32 cpu;=0D __u32 batch_size;=0D } test;=0D =0D struct {=0D union {=0D __u32 start_id;=0D __u32 prog_id;=0D __u32 map_id;=0D __u32 btf_id;=0D __u32 link_id;=0D };=0D __u32 next_id;=0D __u32 open_flags;=0D };=0D =0D struct {=0D __u32 bpf_fd;=0D __u32 info_len;=0D __u64 __attribute__((aligned(8))) info;=0D } info;=0D =0D struct {=0D __u32 target_fd;=0D __u32 attach_type;=0D __u32 query_flags;=0D __u32 attach_flags;=0D __u64 __attribute__((aligned(8))) prog_ids;=0D __u32 prog_cnt;=0D } query;=0D =0D struct {=0D __u64 name;=0D __u32 prog_fd;=0D } raw_tracepoint;=0D =0D struct {=0D __u64 __attribute__((aligned(8))) btf;=0D __u64 __attribute__((aligned(8))) btf_log_buf;=0D __u32 btf_size;=0D __u32 btf_log_size;=0D __u32 btf_log_level;=0D };=0D =0D struct {=0D __u32 pid;=0D __u32 fd;=0D __u32 flags;=0D __u32 buf_len;=0D __u64 __attribute__((aligned(8))) buf;=0D =0D =0D =0D =0D __u32 prog_id;=0D __u32 fd_type;=0D __u64 probe_offset;=0D __u64 probe_addr;=0D } task_fd_query;=0D =0D struct {=0D __u32 prog_fd;=0D union {=0D __u32 target_fd;=0D __u32 target_ifindex;=0D };=0D __u32 attach_type;=0D __u32 flags;=0D union {=0D __u32 target_btf_id;=0D struct {=0D __u64 __attribute__((aligned(8))) iter_info;=0D __u32 iter_info_len;=0D };=0D struct {=0D =0D =0D =0D =0D __u64 bpf_cookie;=0D } perf_event;=0D struct {=0D __u32 flags;=0D __u32 cnt;=0D __u64 __attribute__((aligned(8))) syms;=0D __u64 __attribute__((aligned(8))) addrs;=0D __u64 __attribute__((aligned(8))) cookies;=0D } kprobe_multi;=0D };=0D } link_create;=0D =0D struct {=0D __u32 link_fd;=0D =0D __u32 new_prog_fd;=0D __u32 flags;=0D =0D =0D __u32 old_prog_fd;=0D } link_update;=0D =0D struct {=0D __u32 link_fd;=0D } link_detach;=0D =0D struct {=0D __u32 type;=0D } enable_stats;=0D =0D struct {=0D __u32 link_fd;=0D __u32 flags;=0D } iter_create;=0D =0D struct {=0D __u32 prog_fd;=0D __u32 map_fd;=0D __u32 flags;=0D } prog_bind_map;=0D =0D } __attribute__((aligned(8)));=0D # 5348 "./include/uapi/linux/bpf.h"=0D enum bpf_func_id {=0D BPF_FUNC_unspec, BPF_FUNC_map_lookup_elem, BPF_FUNC_map_update_elem, BPF_F= UNC_map_delete_elem, BPF_FUNC_probe_read, BPF_FUNC_ktime_get_ns, BPF_FUNC_t= race_printk, BPF_FUNC_get_prandom_u32, BPF_FUNC_get_smp_processor_id, BPF_F= UNC_skb_store_bytes, BPF_FUNC_l3_csum_replace, BPF_FUNC_l4_csum_replace, BP= F_FUNC_tail_call, BPF_FUNC_clone_redirect, BPF_FUNC_get_current_pid_tgid, B= PF_FUNC_get_current_uid_gid, BPF_FUNC_get_current_comm, BPF_FUNC_get_cgroup= _classid, BPF_FUNC_skb_vlan_push, BPF_FUNC_skb_vlan_pop, BPF_FUNC_skb_get_t= unnel_key, BPF_FUNC_skb_set_tunnel_key, BPF_FUNC_perf_event_read, BPF_FUNC_= redirect, BPF_FUNC_get_route_realm, BPF_FUNC_perf_event_output, BPF_FUNC_sk= b_load_bytes, BPF_FUNC_get_stackid, BPF_FUNC_csum_diff, BPF_FUNC_skb_get_tu= nnel_opt, BPF_FUNC_skb_set_tunnel_opt, BPF_FUNC_skb_change_proto, BPF_FUNC_= skb_change_type, BPF_FUNC_skb_under_cgroup, BPF_FUNC_get_hash_recalc, BPF_F= UNC_get_current_task, BPF_FUNC_probe_write_user, BPF_FUNC_current_task_unde= r_cgroup, BPF_FUNC_skb_change_tail, BPF_FUNC_skb_pull_data, BPF_FUNC_csum_u= pdate, BPF_FUNC_set_hash_invalid, BPF_FUNC_get_numa_node_id, BPF_FUNC_skb_c= hange_head, BPF_FUNC_xdp_adjust_head, BPF_FUNC_probe_read_str, BPF_FUNC_get= _socket_cookie, BPF_FUNC_get_socket_uid, BPF_FUNC_set_hash, BPF_FUNC_setsoc= kopt, BPF_FUNC_skb_adjust_room, BPF_FUNC_redirect_map, BPF_FUNC_sk_redirect= _map, BPF_FUNC_sock_map_update, BPF_FUNC_xdp_adjust_meta, BPF_FUNC_perf_eve= nt_read_value, BPF_FUNC_perf_prog_read_value, BPF_FUNC_getsockopt, BPF_FUNC= _override_return, BPF_FUNC_sock_ops_cb_flags_set, BPF_FUNC_msg_redirect_map= , BPF_FUNC_msg_apply_bytes, BPF_FUNC_msg_cork_bytes, BPF_FUNC_msg_pull_data= , BPF_FUNC_bind, BPF_FUNC_xdp_adjust_tail, BPF_FUNC_skb_get_xfrm_state, BPF= _FUNC_get_stack, BPF_FUNC_skb_load_bytes_relative, BPF_FUNC_fib_lookup, BPF= _FUNC_sock_hash_update, BPF_FUNC_msg_redirect_hash, BPF_FUNC_sk_redirect_ha= sh, BPF_FUNC_lwt_push_encap, BPF_FUNC_lwt_seg6_store_bytes, BPF_FUNC_lwt_se= g6_adjust_srh, BPF_FUNC_lwt_seg6_action, BPF_FUNC_rc_repeat, BPF_FUNC_rc_ke= ydown, BPF_FUNC_skb_cgroup_id, BPF_FUNC_get_current_cgroup_id, BPF_FUNC_get= _local_storage, BPF_FUNC_sk_select_reuseport, BPF_FUNC_skb_ancestor_cgroup_= id, BPF_FUNC_sk_lookup_tcp, BPF_FUNC_sk_lookup_udp, BPF_FUNC_sk_release, BP= F_FUNC_map_push_elem, BPF_FUNC_map_pop_elem, BPF_FUNC_map_peek_elem, BPF_FU= NC_msg_push_data, BPF_FUNC_msg_pop_data, BPF_FUNC_rc_pointer_rel, BPF_FUNC_= spin_lock, BPF_FUNC_spin_unlock, BPF_FUNC_sk_fullsock, BPF_FUNC_tcp_sock, B= PF_FUNC_skb_ecn_set_ce, BPF_FUNC_get_listener_sock, BPF_FUNC_skc_lookup_tcp= , BPF_FUNC_tcp_check_syncookie, BPF_FUNC_sysctl_get_name, BPF_FUNC_sysctl_g= et_current_value, BPF_FUNC_sysctl_get_new_value, BPF_FUNC_sysctl_set_new_va= lue, BPF_FUNC_strtol, BPF_FUNC_strtoul, BPF_FUNC_sk_storage_get, BPF_FUNC_s= k_storage_delete, BPF_FUNC_send_signal, BPF_FUNC_tcp_gen_syncookie, BPF_FUN= C_skb_output, BPF_FUNC_probe_read_user, BPF_FUNC_probe_read_kernel, BPF_FUN= C_probe_read_user_str, BPF_FUNC_probe_read_kernel_str, BPF_FUNC_tcp_send_ac= k, BPF_FUNC_send_signal_thread, BPF_FUNC_jiffies64, BPF_FUNC_read_branch_re= cords, BPF_FUNC_get_ns_current_pid_tgid, BPF_FUNC_xdp_output, BPF_FUNC_get_= netns_cookie, BPF_FUNC_get_current_ancestor_cgroup_id, BPF_FUNC_sk_assign, = BPF_FUNC_ktime_get_boot_ns, BPF_FUNC_seq_printf, BPF_FUNC_seq_write, BPF_FU= NC_sk_cgroup_id, BPF_FUNC_sk_ancestor_cgroup_id, BPF_FUNC_ringbuf_output, B= PF_FUNC_ringbuf_reserve, BPF_FUNC_ringbuf_submit, BPF_FUNC_ringbuf_discard,= BPF_FUNC_ringbuf_query, BPF_FUNC_csum_level, BPF_FUNC_skc_to_tcp6_sock, BP= F_FUNC_skc_to_tcp_sock, BPF_FUNC_skc_to_tcp_timewait_sock, BPF_FUNC_skc_to_= tcp_request_sock, BPF_FUNC_skc_to_udp6_sock, BPF_FUNC_get_task_stack, BPF_F= UNC_load_hdr_opt, BPF_FUNC_store_hdr_opt, BPF_FUNC_reserve_hdr_opt, BPF_FUN= C_inode_storage_get, BPF_FUNC_inode_storage_delete, BPF_FUNC_d_path, BPF_FU= NC_copy_from_user, BPF_FUNC_snprintf_btf, BPF_FUNC_seq_printf_btf, BPF_FUNC= _skb_cgroup_classid, BPF_FUNC_redirect_neigh, BPF_FUNC_per_cpu_ptr, BPF_FUN= C_this_cpu_ptr, BPF_FUNC_redirect_peer, BPF_FUNC_task_storage_get, BPF_FUNC= _task_storage_delete, BPF_FUNC_get_current_task_btf, BPF_FUNC_bprm_opts_set= , BPF_FUNC_ktime_get_coarse_ns, BPF_FUNC_ima_inode_hash, BPF_FUNC_sock_from= _file, BPF_FUNC_check_mtu, BPF_FUNC_for_each_map_elem, BPF_FUNC_snprintf, B= PF_FUNC_sys_bpf, BPF_FUNC_btf_find_by_name_kind, BPF_FUNC_sys_close, BPF_FU= NC_timer_init, BPF_FUNC_timer_set_callback, BPF_FUNC_timer_start, BPF_FUNC_= timer_cancel, BPF_FUNC_get_func_ip, BPF_FUNC_get_attach_cookie, BPF_FUNC_ta= sk_pt_regs, BPF_FUNC_get_branch_snapshot, BPF_FUNC_trace_vprintk, BPF_FUNC_= skc_to_unix_sock, BPF_FUNC_kallsyms_lookup_name, BPF_FUNC_find_vma, BPF_FUN= C_loop, BPF_FUNC_strncmp, BPF_FUNC_get_func_arg, BPF_FUNC_get_func_ret, BPF= _FUNC_get_func_arg_cnt, BPF_FUNC_get_retval, BPF_FUNC_set_retval, BPF_FUNC_= xdp_get_buff_len, BPF_FUNC_xdp_load_bytes, BPF_FUNC_xdp_store_bytes, BPF_FU= NC_copy_from_user_task, BPF_FUNC_skb_set_tstamp, BPF_FUNC_ima_file_hash,=0D __BPF_FUNC_MAX_ID,=0D };=0D =0D =0D =0D =0D =0D enum {=0D BPF_F_RECOMPUTE_CSUM =3D (1ULL << 0),=0D BPF_F_INVALIDATE_HASH =3D (1ULL << 1),=0D };=0D =0D =0D =0D =0D enum {=0D BPF_F_HDR_FIELD_MASK =3D 0xfULL,=0D };=0D =0D =0D enum {=0D BPF_F_PSEUDO_HDR =3D (1ULL << 4),=0D BPF_F_MARK_MANGLED_0 =3D (1ULL << 5),=0D BPF_F_MARK_ENFORCE =3D (1ULL << 6),=0D };=0D =0D =0D enum {=0D BPF_F_INGRESS =3D (1ULL << 0),=0D };=0D =0D =0D enum {=0D BPF_F_TUNINFO_IPV6 =3D (1ULL << 0),=0D };=0D =0D =0D enum {=0D BPF_F_SKIP_FIELD_MASK =3D 0xffULL,=0D BPF_F_USER_STACK =3D (1ULL << 8),=0D =0D BPF_F_FAST_STACK_CMP =3D (1ULL << 9),=0D BPF_F_REUSE_STACKID =3D (1ULL << 10),=0D =0D BPF_F_USER_BUILD_ID =3D (1ULL << 11),=0D };=0D =0D =0D enum {=0D BPF_F_ZERO_CSUM_TX =3D (1ULL << 1),=0D BPF_F_DONT_FRAGMENT =3D (1ULL << 2),=0D BPF_F_SEQ_NUMBER =3D (1ULL << 3),=0D };=0D =0D =0D =0D =0D enum {=0D BPF_F_INDEX_MASK =3D 0xffffffffULL,=0D BPF_F_CURRENT_CPU =3D BPF_F_INDEX_MASK,=0D =0D BPF_F_CTXLEN_MASK =3D (0xfffffULL << 32),=0D };=0D =0D =0D enum {=0D BPF_F_CURRENT_NETNS =3D (-1L),=0D };=0D =0D =0D enum {=0D BPF_CSUM_LEVEL_QUERY,=0D BPF_CSUM_LEVEL_INC,=0D BPF_CSUM_LEVEL_DEC,=0D BPF_CSUM_LEVEL_RESET,=0D };=0D =0D =0D enum {=0D BPF_F_ADJ_ROOM_FIXED_GSO =3D (1ULL << 0),=0D BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 =3D (1ULL << 1),=0D BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 =3D (1ULL << 2),=0D BPF_F_ADJ_ROOM_ENCAP_L4_GRE =3D (1ULL << 3),=0D BPF_F_ADJ_ROOM_ENCAP_L4_UDP =3D (1ULL << 4),=0D BPF_F_ADJ_ROOM_NO_CSUM_RESET =3D (1ULL << 5),=0D BPF_F_ADJ_ROOM_ENCAP_L2_ETH =3D (1ULL << 6),=0D };=0D =0D enum {=0D BPF_ADJ_ROOM_ENCAP_L2_MASK =3D 0xff,=0D BPF_ADJ_ROOM_ENCAP_L2_SHIFT =3D 56,=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D BPF_F_SYSCTL_BASE_NAME =3D (1ULL << 0),=0D };=0D =0D =0D enum {=0D BPF_LOCAL_STORAGE_GET_F_CREATE =3D (1ULL << 0),=0D =0D =0D =0D BPF_SK_STORAGE_GET_F_CREATE =3D BPF_LOCAL_STORAGE_GET_F_CREATE,=0D };=0D =0D =0D enum {=0D BPF_F_GET_BRANCH_RECORDS_SIZE =3D (1ULL << 0),=0D };=0D =0D =0D =0D =0D enum {=0D BPF_RB_NO_WAKEUP =3D (1ULL << 0),=0D BPF_RB_FORCE_WAKEUP =3D (1ULL << 1),=0D };=0D =0D =0D enum {=0D BPF_RB_AVAIL_DATA =3D 0,=0D BPF_RB_RING_SIZE =3D 1,=0D BPF_RB_CONS_POS =3D 2,=0D BPF_RB_PROD_POS =3D 3,=0D };=0D =0D =0D enum {=0D BPF_RINGBUF_BUSY_BIT =3D (1U << 31),=0D BPF_RINGBUF_DISCARD_BIT =3D (1U << 30),=0D BPF_RINGBUF_HDR_SZ =3D 8,=0D };=0D =0D =0D enum {=0D BPF_SK_LOOKUP_F_REPLACE =3D (1ULL << 0),=0D BPF_SK_LOOKUP_F_NO_REUSEPORT =3D (1ULL << 1),=0D };=0D =0D =0D enum bpf_adj_room_mode {=0D BPF_ADJ_ROOM_NET,=0D BPF_ADJ_ROOM_MAC,=0D };=0D =0D =0D enum bpf_hdr_start_off {=0D BPF_HDR_START_MAC,=0D BPF_HDR_START_NET,=0D };=0D =0D =0D enum bpf_lwt_encap_mode {=0D BPF_LWT_ENCAP_SEG6,=0D BPF_LWT_ENCAP_SEG6_INLINE,=0D BPF_LWT_ENCAP_IP,=0D };=0D =0D =0D enum {=0D BPF_F_BPRM_SECUREEXEC =3D (1ULL << 0),=0D };=0D =0D =0D enum {=0D BPF_F_BROADCAST =3D (1ULL << 3),=0D BPF_F_EXCLUDE_INGRESS =3D (1ULL << 4),=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D BPF_SKB_TSTAMP_UNSPEC,=0D BPF_SKB_TSTAMP_DELIVERY_MONO,=0D =0D =0D =0D =0D };=0D =0D =0D =0D =0D struct __sk_buff {=0D __u32 len;=0D __u32 pkt_type;=0D __u32 mark;=0D __u32 queue_mapping;=0D __u32 protocol;=0D __u32 vlan_present;=0D __u32 vlan_tci;=0D __u32 vlan_proto;=0D __u32 priority;=0D __u32 ingress_ifindex;=0D __u32 ifindex;=0D __u32 tc_index;=0D __u32 cb[5];=0D __u32 hash;=0D __u32 tc_classid;=0D __u32 data;=0D __u32 data_end;=0D __u32 napi_id;=0D =0D =0D __u32 family;=0D __u32 remote_ip4;=0D __u32 local_ip4;=0D __u32 remote_ip6[4];=0D __u32 local_ip6[4];=0D __u32 remote_port;=0D __u32 local_port;=0D =0D =0D __u32 data_meta;=0D union { struct bpf_flow_keys * flow_keys; __u64 :64; } __attribute__((alig= ned(8)));=0D __u64 tstamp;=0D __u32 wire_len;=0D __u32 gso_segs;=0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D __u32 gso_size;=0D __u8 tstamp_type;=0D __u32 :24;=0D __u64 hwtstamp;=0D };=0D =0D struct bpf_tunnel_key {=0D __u32 tunnel_id;=0D union {=0D __u32 remote_ipv4;=0D __u32 remote_ipv6[4];=0D };=0D __u8 tunnel_tos;=0D __u8 tunnel_ttl;=0D __u16 tunnel_ext;=0D __u32 tunnel_label;=0D };=0D =0D =0D =0D =0D struct bpf_xfrm_state {=0D __u32 reqid;=0D __u32 spi;=0D __u16 family;=0D __u16 ext;=0D union {=0D __u32 remote_ipv4;=0D __u32 remote_ipv6[4];=0D };=0D };=0D # 5618 "./include/uapi/linux/bpf.h"=0D enum bpf_ret_code {=0D BPF_OK =3D 0,=0D =0D BPF_DROP =3D 2,=0D =0D BPF_REDIRECT =3D 7,=0D # 5632 "./include/uapi/linux/bpf.h"=0D BPF_LWT_REROUTE =3D 128,=0D };=0D =0D struct bpf_sock {=0D __u32 bound_dev_if;=0D __u32 family;=0D __u32 type;=0D __u32 protocol;=0D __u32 mark;=0D __u32 priority;=0D =0D __u32 src_ip4;=0D __u32 src_ip6[4];=0D __u32 src_port;=0D __be16 dst_port;=0D __u16 :16;=0D __u32 dst_ip4;=0D __u32 dst_ip6[4];=0D __u32 state;=0D __s32 rx_queue_mapping;=0D };=0D =0D struct bpf_tcp_sock {=0D __u32 snd_cwnd;=0D __u32 srtt_us;=0D __u32 rtt_min;=0D __u32 snd_ssthresh;=0D __u32 rcv_nxt;=0D __u32 snd_nxt;=0D __u32 snd_una;=0D __u32 mss_cache;=0D __u32 ecn_flags;=0D __u32 rate_delivered;=0D __u32 rate_interval_us;=0D __u32 packets_out;=0D __u32 retrans_out;=0D __u32 total_retrans;=0D __u32 segs_in;=0D =0D =0D __u32 data_segs_in;=0D =0D =0D __u32 segs_out;=0D =0D =0D __u32 data_segs_out;=0D =0D =0D __u32 lost_out;=0D __u32 sacked_out;=0D __u64 bytes_received;=0D =0D =0D =0D __u64 bytes_acked;=0D =0D =0D =0D __u32 dsack_dups;=0D =0D =0D __u32 delivered;=0D __u32 delivered_ce;=0D __u32 icsk_retransmits;=0D };=0D =0D struct bpf_sock_tuple {=0D union {=0D struct {=0D __be32 saddr;=0D __be32 daddr;=0D __be16 sport;=0D __be16 dport;=0D } ipv4;=0D struct {=0D __be32 saddr[4];=0D __be32 daddr[4];=0D __be16 sport;=0D __be16 dport;=0D } ipv6;=0D };=0D };=0D =0D struct bpf_xdp_sock {=0D __u32 queue_id;=0D };=0D # 5727 "./include/uapi/linux/bpf.h"=0D enum xdp_action {=0D XDP_ABORTED =3D 0,=0D XDP_DROP,=0D XDP_PASS,=0D XDP_TX,=0D XDP_REDIRECT,=0D };=0D =0D =0D =0D =0D struct xdp_md {=0D __u32 data;=0D __u32 data_end;=0D __u32 data_meta;=0D =0D __u32 ingress_ifindex;=0D __u32 rx_queue_index;=0D =0D __u32 egress_ifindex;=0D };=0D =0D =0D =0D =0D =0D =0D struct bpf_devmap_val {=0D __u32 ifindex;=0D union {=0D int fd;=0D __u32 id;=0D } bpf_prog;=0D };=0D =0D =0D =0D =0D =0D =0D struct bpf_cpumap_val {=0D __u32 qsize;=0D union {=0D int fd;=0D __u32 id;=0D } bpf_prog;=0D };=0D =0D enum sk_action {=0D SK_DROP =3D 0,=0D SK_PASS,=0D };=0D =0D =0D =0D =0D struct sk_msg_md {=0D union { void * data; __u64 :64; } __attribute__((aligned(8)));=0D union { void * data_end; __u64 :64; } __attribute__((aligned(8)));=0D =0D __u32 family;=0D __u32 remote_ip4;=0D __u32 local_ip4;=0D __u32 remote_ip6[4];=0D __u32 local_ip6[4];=0D __u32 remote_port;=0D __u32 local_port;=0D __u32 size;=0D =0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D };=0D =0D struct sk_reuseport_md {=0D =0D =0D =0D =0D union { void * data; __u64 :64; } __attribute__((aligned(8)));=0D =0D union { void * data_end; __u64 :64; } __attribute__((aligned(8)));=0D =0D =0D =0D =0D =0D =0D __u32 len;=0D =0D =0D =0D =0D __u32 eth_protocol;=0D __u32 ip_protocol;=0D __u32 bind_inany;=0D __u32 hash;=0D # 5834 "./include/uapi/linux/bpf.h"=0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D union { struct bpf_sock * migrating_sk; __u64 :64; } __attribute__((aligne= d(8)));=0D };=0D =0D =0D =0D struct bpf_prog_info {=0D __u32 type;=0D __u32 id;=0D __u8 tag[8];=0D __u32 jited_prog_len;=0D __u32 xlated_prog_len;=0D __u64 __attribute__((aligned(8))) jited_prog_insns;=0D __u64 __attribute__((aligned(8))) xlated_prog_insns;=0D __u64 load_time;=0D __u32 created_by_uid;=0D __u32 nr_map_ids;=0D __u64 __attribute__((aligned(8))) map_ids;=0D char name[16U];=0D __u32 ifindex;=0D __u32 gpl_compatible:1;=0D __u32 :31;=0D __u64 netns_dev;=0D __u64 netns_ino;=0D __u32 nr_jited_ksyms;=0D __u32 nr_jited_func_lens;=0D __u64 __attribute__((aligned(8))) jited_ksyms;=0D __u64 __attribute__((aligned(8))) jited_func_lens;=0D __u32 btf_id;=0D __u32 func_info_rec_size;=0D __u64 __attribute__((aligned(8))) func_info;=0D __u32 nr_func_info;=0D __u32 nr_line_info;=0D __u64 __attribute__((aligned(8))) line_info;=0D __u64 __attribute__((aligned(8))) jited_line_info;=0D __u32 nr_jited_line_info;=0D __u32 line_info_rec_size;=0D __u32 jited_line_info_rec_size;=0D __u32 nr_prog_tags;=0D __u64 __attribute__((aligned(8))) prog_tags;=0D __u64 run_time_ns;=0D __u64 run_cnt;=0D __u64 recursion_misses;=0D __u32 verified_insns;=0D } __attribute__((aligned(8)));=0D =0D struct bpf_map_info {=0D __u32 type;=0D __u32 id;=0D __u32 key_size;=0D __u32 value_size;=0D __u32 max_entries;=0D __u32 map_flags;=0D char name[16U];=0D __u32 ifindex;=0D __u32 btf_vmlinux_value_type_id;=0D __u64 netns_dev;=0D __u64 netns_ino;=0D __u32 btf_id;=0D __u32 btf_key_type_id;=0D __u32 btf_value_type_id;=0D __u32 :32;=0D __u64 map_extra;=0D } __attribute__((aligned(8)));=0D =0D struct bpf_btf_info {=0D __u64 __attribute__((aligned(8))) btf;=0D __u32 btf_size;=0D __u32 id;=0D __u64 __attribute__((aligned(8))) name;=0D __u32 name_len;=0D __u32 kernel_btf;=0D } __attribute__((aligned(8)));=0D =0D struct bpf_link_info {=0D __u32 type;=0D __u32 id;=0D __u32 prog_id;=0D union {=0D struct {=0D __u64 __attribute__((aligned(8))) tp_name;=0D __u32 tp_name_len;=0D } raw_tracepoint;=0D struct {=0D __u32 attach_type;=0D __u32 target_obj_id;=0D __u32 target_btf_id;=0D } tracing;=0D struct {=0D __u64 cgroup_id;=0D __u32 attach_type;=0D } cgroup;=0D struct {=0D __u64 __attribute__((aligned(8))) target_name;=0D __u32 target_name_len;=0D union {=0D struct {=0D __u32 map_id;=0D } map;=0D };=0D } iter;=0D struct {=0D __u32 netns_ino;=0D __u32 attach_type;=0D } netns;=0D struct {=0D __u32 ifindex;=0D } xdp;=0D };=0D } __attribute__((aligned(8)));=0D =0D =0D =0D =0D =0D struct bpf_sock_addr {=0D __u32 user_family;=0D __u32 user_ip4;=0D =0D =0D __u32 user_ip6[4];=0D =0D =0D __u32 user_port;=0D =0D =0D __u32 family;=0D __u32 type;=0D __u32 protocol;=0D __u32 msg_src_ip4;=0D =0D =0D __u32 msg_src_ip6[4];=0D =0D =0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct bpf_sock_ops {=0D __u32 op;=0D union {=0D __u32 args[4];=0D __u32 reply;=0D __u32 replylong[4];=0D };=0D __u32 family;=0D __u32 remote_ip4;=0D __u32 local_ip4;=0D __u32 remote_ip6[4];=0D __u32 local_ip6[4];=0D __u32 remote_port;=0D __u32 local_port;=0D __u32 is_fullsock;=0D =0D =0D =0D __u32 snd_cwnd;=0D __u32 srtt_us;=0D __u32 bpf_sock_ops_cb_flags;=0D __u32 state;=0D __u32 rtt_min;=0D __u32 snd_ssthresh;=0D __u32 rcv_nxt;=0D __u32 snd_nxt;=0D __u32 snd_una;=0D __u32 mss_cache;=0D __u32 ecn_flags;=0D __u32 rate_delivered;=0D __u32 rate_interval_us;=0D __u32 packets_out;=0D __u32 retrans_out;=0D __u32 total_retrans;=0D __u32 segs_in;=0D __u32 data_segs_in;=0D __u32 segs_out;=0D __u32 data_segs_out;=0D __u32 lost_out;=0D __u32 sacked_out;=0D __u32 sk_txhash;=0D __u64 bytes_received;=0D __u64 bytes_acked;=0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D # 6036 "./include/uapi/linux/bpf.h"=0D union { void * skb_data; __u64 :64; } __attribute__((aligned(8)));=0D union { void * skb_data_end; __u64 :64; } __attribute__((aligned(8)));=0D __u32 skb_len;=0D =0D =0D =0D __u32 skb_tcp_flags;=0D # 6052 "./include/uapi/linux/bpf.h"=0D };=0D =0D =0D enum {=0D BPF_SOCK_OPS_RTO_CB_FLAG =3D (1<<0),=0D BPF_SOCK_OPS_RETRANS_CB_FLAG =3D (1<<1),=0D BPF_SOCK_OPS_STATE_CB_FLAG =3D (1<<2),=0D BPF_SOCK_OPS_RTT_CB_FLAG =3D (1<<3),=0D # 6078 "./include/uapi/linux/bpf.h"=0D BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG =3D (1<<4),=0D # 6087 "./include/uapi/linux/bpf.h"=0D BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG =3D (1<<5),=0D # 6102 "./include/uapi/linux/bpf.h"=0D BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG =3D (1<<6),=0D =0D BPF_SOCK_OPS_ALL_CB_FLAGS =3D 0x7F,=0D };=0D =0D =0D =0D =0D enum {=0D BPF_SOCK_OPS_VOID,=0D BPF_SOCK_OPS_TIMEOUT_INIT,=0D =0D =0D BPF_SOCK_OPS_RWND_INIT,=0D =0D =0D =0D BPF_SOCK_OPS_TCP_CONNECT_CB,=0D =0D =0D BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB,=0D =0D =0D =0D BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,=0D =0D =0D =0D BPF_SOCK_OPS_NEEDS_ECN,=0D =0D =0D BPF_SOCK_OPS_BASE_RTT,=0D =0D =0D =0D =0D =0D =0D BPF_SOCK_OPS_RTO_CB,=0D =0D =0D =0D =0D BPF_SOCK_OPS_RETRANS_CB,=0D =0D =0D =0D =0D =0D BPF_SOCK_OPS_STATE_CB,=0D =0D =0D =0D BPF_SOCK_OPS_TCP_LISTEN_CB,=0D =0D =0D BPF_SOCK_OPS_RTT_CB,=0D =0D BPF_SOCK_OPS_PARSE_HDR_OPT_CB,=0D # 6174 "./include/uapi/linux/bpf.h"=0D BPF_SOCK_OPS_HDR_OPT_LEN_CB,=0D # 6191 "./include/uapi/linux/bpf.h"=0D BPF_SOCK_OPS_WRITE_HDR_OPT_CB,=0D # 6217 "./include/uapi/linux/bpf.h"=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D BPF_TCP_ESTABLISHED =3D 1,=0D BPF_TCP_SYN_SENT,=0D BPF_TCP_SYN_RECV,=0D BPF_TCP_FIN_WAIT1,=0D BPF_TCP_FIN_WAIT2,=0D BPF_TCP_TIME_WAIT,=0D BPF_TCP_CLOSE,=0D BPF_TCP_CLOSE_WAIT,=0D BPF_TCP_LAST_ACK,=0D BPF_TCP_LISTEN,=0D BPF_TCP_CLOSING,=0D BPF_TCP_NEW_SYN_RECV,=0D =0D BPF_TCP_MAX_STATES=0D };=0D =0D enum {=0D TCP_BPF_IW =3D 1001,=0D TCP_BPF_SNDCWND_CLAMP =3D 1002,=0D TCP_BPF_DELACK_MAX =3D 1003,=0D TCP_BPF_RTO_MIN =3D 1004,=0D # 6278 "./include/uapi/linux/bpf.h"=0D TCP_BPF_SYN =3D 1005,=0D TCP_BPF_SYN_IP =3D 1006,=0D TCP_BPF_SYN_MAC =3D 1007,=0D };=0D =0D enum {=0D BPF_LOAD_HDR_OPT_TCP_SYN =3D (1ULL << 0),=0D };=0D =0D =0D =0D =0D enum {=0D BPF_WRITE_HDR_TCP_CURRENT_MSS =3D 1,=0D =0D =0D =0D =0D =0D =0D BPF_WRITE_HDR_TCP_SYNACK_COOKIE =3D 2,=0D =0D =0D };=0D =0D struct bpf_perf_event_value {=0D __u64 counter;=0D __u64 enabled;=0D __u64 running;=0D };=0D =0D enum {=0D BPF_DEVCG_ACC_MKNOD =3D (1ULL << 0),=0D BPF_DEVCG_ACC_READ =3D (1ULL << 1),=0D BPF_DEVCG_ACC_WRITE =3D (1ULL << 2),=0D };=0D =0D enum {=0D BPF_DEVCG_DEV_BLOCK =3D (1ULL << 0),=0D BPF_DEVCG_DEV_CHAR =3D (1ULL << 1),=0D };=0D =0D struct bpf_cgroup_dev_ctx {=0D =0D __u32 access_type;=0D __u32 major;=0D __u32 minor;=0D };=0D =0D struct bpf_raw_tracepoint_args {=0D __u64 args[0];=0D };=0D =0D =0D =0D =0D enum {=0D BPF_FIB_LOOKUP_DIRECT =3D (1U << 0),=0D BPF_FIB_LOOKUP_OUTPUT =3D (1U << 1),=0D };=0D =0D enum {=0D BPF_FIB_LKUP_RET_SUCCESS,=0D BPF_FIB_LKUP_RET_BLACKHOLE,=0D BPF_FIB_LKUP_RET_UNREACHABLE,=0D BPF_FIB_LKUP_RET_PROHIBIT,=0D BPF_FIB_LKUP_RET_NOT_FWDED,=0D BPF_FIB_LKUP_RET_FWD_DISABLED,=0D BPF_FIB_LKUP_RET_UNSUPP_LWT,=0D BPF_FIB_LKUP_RET_NO_NEIGH,=0D BPF_FIB_LKUP_RET_FRAG_NEEDED,=0D };=0D =0D struct bpf_fib_lookup {=0D =0D =0D =0D __u8 family;=0D =0D =0D __u8 l4_protocol;=0D __be16 sport;=0D __be16 dport;=0D =0D union {=0D =0D __u16 tot_len;=0D =0D =0D __u16 mtu_result;=0D };=0D =0D =0D =0D __u32 ifindex;=0D =0D union {=0D =0D __u8 tos;=0D __be32 flowinfo;=0D =0D =0D __u32 rt_metric;=0D };=0D =0D union {=0D __be32 ipv4_src;=0D __u32 ipv6_src[4];=0D };=0D =0D =0D =0D =0D =0D union {=0D __be32 ipv4_dst;=0D __u32 ipv6_dst[4];=0D };=0D =0D =0D __be16 h_vlan_proto;=0D __be16 h_vlan_TCI;=0D __u8 smac[6];=0D __u8 dmac[6];=0D };=0D =0D struct bpf_redir_neigh {=0D =0D __u32 nh_family;=0D =0D union {=0D __be32 ipv4_nh;=0D __u32 ipv6_nh[4];=0D };=0D };=0D =0D =0D enum bpf_check_mtu_flags {=0D BPF_MTU_CHK_SEGS =3D (1U << 0),=0D };=0D =0D enum bpf_check_mtu_ret {=0D BPF_MTU_CHK_RET_SUCCESS,=0D BPF_MTU_CHK_RET_FRAG_NEEDED,=0D BPF_MTU_CHK_RET_SEGS_TOOBIG,=0D };=0D =0D enum bpf_task_fd_type {=0D BPF_FD_TYPE_RAW_TRACEPOINT,=0D BPF_FD_TYPE_TRACEPOINT,=0D BPF_FD_TYPE_KPROBE,=0D BPF_FD_TYPE_KRETPROBE,=0D BPF_FD_TYPE_UPROBE,=0D BPF_FD_TYPE_URETPROBE,=0D };=0D =0D enum {=0D BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG =3D (1U << 0),=0D BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL =3D (1U << 1),=0D BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP =3D (1U << 2),=0D };=0D =0D struct bpf_flow_keys {=0D __u16 nhoff;=0D __u16 thoff;=0D __u16 addr_proto;=0D __u8 is_frag;=0D __u8 is_first_frag;=0D __u8 is_encap;=0D __u8 ip_proto;=0D __be16 n_proto;=0D __be16 sport;=0D __be16 dport;=0D union {=0D struct {=0D __be32 ipv4_src;=0D __be32 ipv4_dst;=0D };=0D struct {=0D __u32 ipv6_src[4];=0D __u32 ipv6_dst[4];=0D };=0D };=0D __u32 flags;=0D __be32 flow_label;=0D };=0D =0D struct bpf_func_info {=0D __u32 insn_off;=0D __u32 type_id;=0D };=0D =0D =0D =0D =0D struct bpf_line_info {=0D __u32 insn_off;=0D __u32 file_name_off;=0D __u32 line_off;=0D __u32 line_col;=0D };=0D =0D struct bpf_spin_lock {=0D __u32 val;=0D };=0D =0D struct bpf_timer {=0D __u64 :64;=0D __u64 :64;=0D } __attribute__((aligned(8)));=0D =0D struct bpf_sysctl {=0D __u32 write;=0D =0D =0D __u32 file_pos;=0D =0D =0D };=0D =0D struct bpf_sockopt {=0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D union { void * optval; __u64 :64; } __attribute__((aligned(8)));=0D union { void * optval_end; __u64 :64; } __attribute__((aligned(8)));=0D =0D __s32 level;=0D __s32 optname;=0D __s32 optlen;=0D __s32 retval;=0D };=0D =0D struct bpf_pidns_info {=0D __u32 pid;=0D __u32 tgid;=0D };=0D =0D =0D struct bpf_sk_lookup {=0D union {=0D union { struct bpf_sock * sk; __u64 :64; } __attribute__((aligned(8)));=0D __u64 cookie;=0D };=0D =0D __u32 family;=0D __u32 protocol;=0D __u32 remote_ip4;=0D __u32 remote_ip6[4];=0D __be16 remote_port;=0D __u16 :16;=0D __u32 local_ip4;=0D __u32 local_ip6[4];=0D __u32 local_port;=0D __u32 ingress_ifindex;=0D };=0D # 6541 "./include/uapi/linux/bpf.h"=0D struct btf_ptr {=0D void *ptr;=0D __u32 type_id;=0D __u32 flags;=0D };=0D # 6556 "./include/uapi/linux/bpf.h"=0D enum {=0D BTF_F_COMPACT =3D (1ULL << 0),=0D BTF_F_NONAME =3D (1ULL << 1),=0D BTF_F_PTR_RAW =3D (1ULL << 2),=0D BTF_F_ZERO =3D (1ULL << 3),=0D };=0D =0D =0D =0D =0D =0D enum bpf_core_relo_kind {=0D BPF_CORE_FIELD_BYTE_OFFSET =3D 0,=0D BPF_CORE_FIELD_BYTE_SIZE =3D 1,=0D BPF_CORE_FIELD_EXISTS =3D 2,=0D BPF_CORE_FIELD_SIGNED =3D 3,=0D BPF_CORE_FIELD_LSHIFT_U64 =3D 4,=0D BPF_CORE_FIELD_RSHIFT_U64 =3D 5,=0D BPF_CORE_TYPE_ID_LOCAL =3D 6,=0D BPF_CORE_TYPE_ID_TARGET =3D 7,=0D BPF_CORE_TYPE_EXISTS =3D 8,=0D BPF_CORE_TYPE_SIZE =3D 9,=0D BPF_CORE_ENUMVAL_EXISTS =3D 10,=0D BPF_CORE_ENUMVAL_VALUE =3D 11,=0D };=0D # 6630 "./include/uapi/linux/bpf.h"=0D struct bpf_core_relo {=0D __u32 insn_off;=0D __u32 type_id;=0D __u32 access_str_off;=0D enum bpf_core_relo_kind kind;=0D };=0D # 24 "./include/net/ip6_fib.h" 2=0D # 39 "./include/net/ip6_fib.h"=0D struct rt6_info;=0D struct fib6_info;=0D =0D struct fib6_config {=0D u32 fc_table;=0D u32 fc_metric;=0D int fc_dst_len;=0D int fc_src_len;=0D int fc_ifindex;=0D u32 fc_flags;=0D u32 fc_protocol;=0D u16 fc_type;=0D u16 fc_delete_all_nh : 1,=0D fc_ignore_dev_down:1,=0D __unused : 14;=0D u32 fc_nh_id;=0D =0D struct in6_addr fc_dst;=0D struct in6_addr fc_src;=0D struct in6_addr fc_prefsrc;=0D struct in6_addr fc_gateway;=0D =0D unsigned long fc_expires;=0D struct nlattr *fc_mx;=0D int fc_mx_len;=0D int fc_mp_len;=0D struct nlattr *fc_mp;=0D =0D struct nl_info fc_nlinfo;=0D struct nlattr *fc_encap;=0D u16 fc_encap_type;=0D bool fc_is_fdb;=0D };=0D =0D struct fib6_node {=0D struct fib6_node *parent;=0D struct fib6_node *left;=0D struct fib6_node *right;=0D =0D =0D =0D struct fib6_info *leaf;=0D =0D __u16 fn_bit;=0D __u16 fn_flags;=0D int fn_sernum;=0D struct fib6_info *rr_ptr;=0D struct callback_head rcu;=0D };=0D =0D struct fib6_gc_args {=0D int timeout;=0D int more;=0D };=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_routes_require_src= (const struct net *net)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_routes_require_src= _inc(struct net *net) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_routes_require_src= _dec(struct net *net) {}=0D # 130 "./include/net/ip6_fib.h"=0D struct rt6key {=0D struct in6_addr addr;=0D int plen;=0D };=0D =0D struct fib6_table;=0D =0D struct rt6_exception_bucket {=0D struct hlist_head chain;=0D int depth;=0D };=0D =0D struct rt6_exception {=0D struct hlist_node hlist;=0D struct rt6_info *rt6i;=0D unsigned long stamp;=0D struct callback_head rcu;=0D };=0D =0D =0D =0D =0D =0D struct fib6_nh {=0D struct fib_nh_common nh_common;=0D =0D =0D =0D =0D =0D struct rt6_info * *rt6i_pcpu;=0D struct rt6_exception_bucket *rt6i_exception_bucket;=0D };=0D =0D struct fib6_info {=0D struct fib6_table *fib6_table;=0D struct fib6_info *fib6_next;=0D struct fib6_node *fib6_node;=0D =0D =0D =0D =0D =0D =0D union {=0D struct list_head fib6_siblings;=0D struct list_head nh_list;=0D };=0D unsigned int fib6_nsiblings;=0D =0D refcount_t fib6_ref;=0D unsigned long expires;=0D struct dst_metrics *fib6_metrics;=0D =0D =0D struct rt6key fib6_dst;=0D u32 fib6_flags;=0D struct rt6key fib6_src;=0D struct rt6key fib6_prefsrc;=0D =0D u32 fib6_metric;=0D u8 fib6_protocol;=0D u8 fib6_type;=0D =0D u8 offload;=0D u8 trap;=0D u8 offload_failed;=0D =0D u8 should_flush:1,=0D dst_nocount:1,=0D dst_nopolicy:1,=0D fib6_destroying:1,=0D unused:4;=0D =0D struct callback_head rcu;=0D struct nexthop *nh;=0D struct fib6_nh fib6_nh[];=0D };=0D =0D struct rt6_info {=0D struct dst_entry dst;=0D struct fib6_info *from;=0D int sernum;=0D =0D struct rt6key rt6i_dst;=0D struct rt6key rt6i_src;=0D struct in6_addr rt6i_gateway;=0D struct inet6_dev *rt6i_idev;=0D u32 rt6i_flags;=0D =0D struct list_head rt6i_uncached;=0D struct uncached_list *rt6i_uncached_list;=0D =0D =0D unsigned short rt6i_nfheader_len;=0D };=0D =0D struct fib6_result {=0D struct fib6_nh *nh;=0D struct fib6_info *f6i;=0D u32 fib6_flags;=0D u8 fib6_type;=0D struct rt6_info *rt6;=0D };=0D # 243 "./include/net/ip6_fib.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet6_dev *ip6_dst_id= ev(struct dst_entry *dst)=0D {=0D return ((struct rt6_info *)dst)->rt6i_idev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_requires_src(const= struct fib6_info *rt)=0D {=0D return rt->fib6_src.plen > 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_clean_expires(stru= ct fib6_info *f6i)=0D {=0D f6i->fib6_flags &=3D ~0x00400000;=0D f6i->expires =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_set_expires(struct= fib6_info *f6i,=0D unsigned long expires)=0D {=0D f6i->expires =3D expires;=0D f6i->fib6_flags |=3D 0x00400000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_check_expired(cons= t struct fib6_info *f6i)=0D {=0D if (f6i->fib6_flags & 0x00400000)=0D return (({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dum= my =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(f6i->expire= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long)((f6i->expi= res) - (jiffies)) < 0));=0D return false;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_get_cookie_safe(co= nst struct fib6_info *f6i,=0D u32 *cookie)=0D {=0D struct fib6_node *fn;=0D bool status =3D false;=0D =0D fn =3D ({ typeof(*(f6i->fib6_node)) *__UNIQUE_ID_rcu457 =3D (typeof(*(f6i-= >fib6_node)) *)({ do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_458(void) ; if (!((sizeof((f6i->fib6_node)) =3D=3D sizeof(char) = || sizeof((f6i->fib6_node)) =3D=3D sizeof(short) || sizeof((f6i->fib6_node)= ) =3D=3D sizeof(int) || sizeof((f6i->fib6_node)) =3D=3D sizeof(long)) || si= zeof((f6i->fib6_node)) =3D=3D sizeof(long long))) __compiletime_assert_458(= ); } while (0); (*(const volatile typeof( _Generic(((f6i->fib6_node)), char= : (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, un= signed short: (unsigned short)0, signed short: (signed short)0, unsigned in= t: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned lon= g)0, signed long: (signed long)0, unsigned long long: (unsigned long long)0= , signed long long: (signed long long)0, default: ((f6i->fib6_node)))) *)&(= (f6i->fib6_node))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))= ); ; ((typeof(*(f6i->fib6_node)) *)(__UNIQUE_ID_rcu457)); });=0D =0D if (fn) {=0D *cookie =3D ({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_459(void) ; if (!((sizeof(fn->fn_sernum) =3D=3D sizeof(char) || s= izeof(fn->fn_sernum) =3D=3D sizeof(short) || sizeof(fn->fn_sernum) =3D=3D s= izeof(int) || sizeof(fn->fn_sernum) =3D=3D sizeof(long)) || sizeof(fn->fn_s= ernum) =3D=3D sizeof(long long))) __compiletime_assert_459(); } while (0); = (*(const volatile typeof( _Generic((fn->fn_sernum), char: (char)0, unsigned= char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsi= gned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0,= signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (= signed long)0, unsigned long long: (unsigned long long)0, signed long long:= (signed long long)0, default: (fn->fn_sernum))) *)&(fn->fn_sernum)); });=0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "r" "," "r" : : : "= memory"); } while (0);=0D status =3D true;=0D }=0D =0D return status;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 rt6_get_cookie(const str= uct rt6_info *rt)=0D {=0D struct fib6_info *from;=0D u32 cookie =3D 0;=0D =0D if (rt->sernum)=0D return rt->sernum;=0D =0D rcu_read_lock();=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu460 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _461(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_461(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu460)); });=0D if (from)=0D fib6_get_cookie_safe(from, &cookie);=0D =0D rcu_read_unlock();=0D =0D return cookie;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_rt_put(struct rt6_i= nfo *rt)=0D {=0D =0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_462(vo= id) ; if (!(!(__builtin_offsetof(struct rt6_info, dst) !=3D 0))) __compilet= ime_assert_462(); } while (0);=0D dst_release(&rt->dst);=0D }=0D =0D struct fib6_info *fib6_info_alloc(gfp_t gfp_flags, bool with_fib6_nh);=0D void fib6_info_destroy_rcu(struct callback_head *head);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_info_hold(struct f= ib6_info *f6i)=0D {=0D refcount_inc(&f6i->fib6_ref);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_info_hold_safe(str= uct fib6_info *f6i)=0D {=0D return refcount_inc_not_zero(&f6i->fib6_ref);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_info_release(struc= t fib6_info *f6i)=0D {=0D if (f6i && refcount_dec_and_test(&f6i->fib6_ref))=0D call_rcu(&f6i->rcu, fib6_info_destroy_rcu);=0D }=0D =0D enum fib6_walk_state {=0D =0D =0D =0D FWS_L,=0D FWS_R,=0D FWS_C,=0D FWS_U=0D };=0D =0D struct fib6_walker {=0D struct list_head lh;=0D struct fib6_node *root, *node;=0D struct fib6_info *leaf;=0D enum fib6_walk_state state;=0D unsigned int skip;=0D unsigned int count;=0D unsigned int skip_in_node;=0D int (*func)(struct fib6_walker *);=0D void *args;=0D };=0D =0D struct rt6_statistics {=0D __u32 fib_nodes;=0D __u32 fib_route_nodes;=0D __u32 fib_rt_entries;=0D __u32 fib_rt_cache;=0D __u32 fib_discarded_routes;=0D =0D =0D atomic_t fib_rt_alloc;=0D };=0D # 386 "./include/net/ip6_fib.h"=0D struct fib6_table {=0D struct hlist_node tb6_hlist;=0D u32 tb6_id;=0D spinlock_t tb6_lock;=0D struct fib6_node tb6_root;=0D struct inet_peer_base tb6_peers;=0D unsigned int flags;=0D unsigned int fib_seq;=0D =0D };=0D # 413 "./include/net/ip6_fib.h"=0D typedef struct rt6_info *(*pol_lookup_t)(struct net *,=0D struct fib6_table *,=0D struct flowi6 *,=0D const struct sk_buff *, int);=0D =0D struct fib6_entry_notifier_info {=0D struct fib_notifier_info info;=0D struct fib6_info *rt;=0D unsigned int nsiblings;=0D };=0D =0D =0D =0D =0D =0D struct fib6_table *fib6_get_table(struct net *net, u32 id);=0D struct fib6_table *fib6_new_table(struct net *net, u32 id);=0D struct dst_entry *fib6_rule_lookup(struct net *net, struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags, pol_lookup_t lookup);=0D =0D =0D =0D =0D int fib6_lookup(struct net *net, int oif, struct flowi6 *fl6,=0D struct fib6_result *res, int flags);=0D =0D =0D int fib6_table_lookup(struct net *net, struct fib6_table *table,=0D int oif, struct flowi6 *fl6, struct fib6_result *res,=0D int strict);=0D =0D void fib6_select_path(const struct net *net, struct fib6_result *res,=0D struct flowi6 *fl6, int oif, bool have_oif_match,=0D const struct sk_buff *skb, int strict);=0D struct fib6_node *fib6_node_lookup(struct fib6_node *root,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D =0D struct fib6_node *fib6_locate(struct fib6_node *root,=0D const struct in6_addr *daddr, int dst_len,=0D const struct in6_addr *saddr, int src_len,=0D bool exact_match);=0D =0D void fib6_clean_all(struct net *net, int (*func)(struct fib6_info *, void *= arg),=0D void *arg);=0D void fib6_clean_all_skip_notify(struct net *net,=0D int (*func)(struct fib6_info *, void *arg),=0D void *arg);=0D =0D int fib6_add(struct fib6_node *root, struct fib6_info *rt,=0D struct nl_info *info, struct netlink_ext_ack *extack);=0D int fib6_del(struct fib6_info *rt, struct nl_info *info);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void rt6_get_prefsrc(const struct rt6_info *rt, struct in6_addr *addr)=0D {=0D const struct fib6_info *from;=0D =0D rcu_read_lock();=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu463 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _464(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_464(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu463)); });=0D if (from) {=0D *addr =3D from->fib6_prefsrc.addr;=0D } else {=0D struct in6_addr in6_zero =3D {};=0D =0D *addr =3D in6_zero;=0D }=0D =0D rcu_read_unlock();=0D }=0D =0D int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh,=0D struct fib6_config *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack);=0D void fib6_nh_release(struct fib6_nh *fib6_nh);=0D void fib6_nh_release_dsts(struct fib6_nh *fib6_nh);=0D =0D int call_fib6_entry_notifiers(struct net *net,=0D enum fib_event_type event_type,=0D struct fib6_info *rt,=0D struct netlink_ext_ack *extack);=0D int call_fib6_multipath_entry_notifiers(struct net *net,=0D enum fib_event_type event_type,=0D struct fib6_info *rt,=0D unsigned int nsiblings,=0D struct netlink_ext_ack *extack);=0D int call_fib6_entry_notifiers_replace(struct net *net, struct fib6_info *rt= );=0D void fib6_rt_update(struct net *net, struct fib6_info *rt,=0D struct nl_info *info);=0D void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,= =0D unsigned int flags);=0D =0D void fib6_run_gc(unsigned long expires, struct net *net, bool force);=0D =0D void fib6_gc_cleanup(void);=0D =0D int fib6_init(void);=0D =0D struct ipv6_route_iter {=0D struct seq_net_private p;=0D struct fib6_walker w;=0D loff_t skip;=0D struct fib6_table *tbl;=0D int sernum;=0D };=0D =0D extern const struct seq_operations ipv6_route_seq_ops;=0D =0D int call_fib6_notifier(struct notifier_block *nb,=0D enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D int call_fib6_notifiers(struct net *net, enum fib_event_type event_type,=0D struct fib_notifier_info *info);=0D =0D int fib6_notifier_init(struct net *net);=0D void fib6_notifier_exit(struct net *net);=0D =0D unsigned int fib6_tables_seq_read(struct net *net);=0D int fib6_tables_dump(struct net *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack);=0D =0D void fib6_update_sernum(struct net *net, struct fib6_info *rt);=0D void fib6_update_sernum_upto_root(struct net *net, struct fib6_info *rt);=0D void fib6_update_sernum_stub(struct net *net, struct fib6_info *f6i);=0D =0D void fib6_metric_set(struct fib6_info *f6i, int metric, u32 val);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_metric_locked(stru= ct fib6_info *f6i, int metric)=0D {=0D return !!(f6i->fib6_metrics->metrics[RTAX_LOCK - 1] & (1 << metric));=0D }=0D void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i,=0D bool offload, bool trap, bool offload_failed);=0D =0D =0D struct bpf_iter__ipv6_route {=0D union { struct bpf_iter_meta * meta; __u64 :64; } __attribute__((aligned(8= )));=0D union { struct fib6_info * rt; __u64 :64; } __attribute__((aligned(8)));=0D };=0D =0D =0D =0D =0D =0D =0D ;=0D =0D =0D =0D =0D ;=0D =0D =0D =0D =0D ;=0D =0D =0D =0D =0D ;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rt6_info *pol_lookup_= func(pol_lookup_t lookup,=0D struct net *net,=0D struct fib6_table *table,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D return lookup(net, table, fl6, skb, flags);=0D =0D =0D =0D =0D =0D }=0D # 621 "./include/net/ip6_fib.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_has_custom_rules(c= onst struct net *net)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fib6_rules_init(void)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void fib6_rules_cleanup(void= )=0D {=0D return ;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_rule_default(const= struct fib_rule *rule)=0D {=0D return true;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int fib6_rules_dump(struct n= et *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int fib6_rules_seq_= read(struct net *net)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool fib6_rules_early_flow_d= issect(struct net *net,=0D struct sk_buff *skb,=0D struct flowi6 *fl6,=0D struct flow_keys *flkeys)=0D {=0D return false;=0D }=0D # 49 "net/ipv6/route.c" 2=0D # 1 "./include/net/ip6_route.h" 1=0D =0D =0D =0D =0D struct route_info {=0D __u8 type;=0D __u8 length;=0D __u8 prefix_len;=0D =0D =0D =0D =0D =0D __u8 reserved_l:3,=0D route_pref:2,=0D reserved_h:3;=0D =0D __be32 lifetime;=0D __u8 prefix[];=0D };=0D =0D =0D # 1 "./include/net/addrconf.h" 1=0D # 29 "./include/net/addrconf.h"=0D struct prefix_info {=0D __u8 type;=0D __u8 length;=0D __u8 prefix_len;=0D =0D =0D =0D =0D =0D =0D __u8 reserved : 6,=0D autoconf : 1,=0D onlink : 1;=0D =0D =0D =0D __be32 valid;=0D __be32 prefered;=0D __be32 reserved2;=0D =0D struct in6_addr prefix;=0D };=0D =0D =0D =0D =0D =0D =0D struct in6_validator_info {=0D struct in6_addr i6vi_addr;=0D struct inet6_dev *i6vi_dev;=0D struct netlink_ext_ack *extack;=0D };=0D =0D struct ifa6_config {=0D const struct in6_addr *pfx;=0D unsigned int plen;=0D =0D u8 ifa_proto;=0D =0D const struct in6_addr *peer_pfx;=0D =0D u32 rt_priority;=0D u32 ifa_flags;=0D u32 preferred_lft;=0D u32 valid_lft;=0D u16 scope;=0D };=0D =0D int addrconf_init(void);=0D void addrconf_cleanup(void);=0D =0D int addrconf_add_ifaddr(struct net *net, void *arg);=0D int addrconf_del_ifaddr(struct net *net, void *arg);=0D int addrconf_set_dstaddr(struct net *net, void *arg);=0D =0D int ipv6_chk_addr(struct net *net, const struct in6_addr *addr,=0D const struct net_device *dev, int strict);=0D int ipv6_chk_addr_and_flags(struct net *net, const struct in6_addr *addr,=0D const struct net_device *dev, bool skip_dev_check,=0D int strict, u32 banned_flags);=0D =0D =0D =0D =0D =0D int ipv6_chk_rpl_srh_loop(struct net *net, const struct in6_addr *segs,=0D unsigned char nsegs);=0D =0D bool ipv6_chk_custom_prefix(const struct in6_addr *addr,=0D const unsigned int prefix_len,=0D struct net_device *dev);=0D =0D int ipv6_chk_prefix(const struct in6_addr *addr, struct net_device *dev);=0D =0D struct net_device *ipv6_dev_find(struct net *net, const struct in6_addr *ad= dr,=0D struct net_device *dev);=0D =0D struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net,=0D const struct in6_addr *addr,=0D struct net_device *dev, int strict);=0D =0D int ipv6_dev_get_saddr(struct net *net, const struct net_device *dev,=0D const struct in6_addr *daddr, unsigned int srcprefs,=0D struct in6_addr *saddr);=0D int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,=0D u32 banned_flags);=0D bool inet_rcv_saddr_equal(const struct sock *sk, const struct sock *sk2,=0D bool match_wildcard);=0D bool inet_rcv_saddr_any(const struct sock *sk);=0D void addrconf_join_solict(struct net_device *dev, const struct in6_addr *ad= dr);=0D void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *a= ddr);=0D =0D void addrconf_add_linklocal(struct inet6_dev *idev,=0D const struct in6_addr *addr, u32 flags);=0D =0D int addrconf_prefix_rcv_add_addr(struct net *net, struct net_device *dev,=0D const struct prefix_info *pinfo,=0D struct inet6_dev *in6_dev,=0D const struct in6_addr *addr, int addr_type,=0D u32 addr_flags, bool sllao, bool tokenized,=0D __u32 valid_lft, u32 prefered_lft);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void addrconf_addr_eui48_bas= e(u8 *eui, const char *const addr)=0D {=0D memcpy(eui, addr, 3);=0D eui[3] =3D 0xFF;=0D eui[4] =3D 0xFE;=0D memcpy(eui + 5, addr + 3, 3);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void addrconf_addr_eui48(u8 = *eui, const char *const addr)=0D {=0D addrconf_addr_eui48_base(eui, addr);=0D eui[0] ^=3D 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int addrconf_ifid_eui48(u8 *= eui, struct net_device *dev)=0D {=0D if (dev->addr_len !=3D 6)=0D return -1;=0D # 165 "./include/net/addrconf.h"=0D addrconf_addr_eui48_base(eui, dev->dev_addr);=0D =0D if (dev->dev_id) {=0D eui[3] =3D (dev->dev_id >> 8) & 0xFF;=0D eui[4] =3D dev->dev_id & 0xFF;=0D } else {=0D eui[0] ^=3D 2;=0D }=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long addrconf_timeo= ut_fixup(u32 timeout,=0D unsigned int unit)=0D {=0D if (timeout =3D=3D 0xffffffff)=0D return ~0UL;=0D =0D =0D =0D =0D =0D =0D if (0xfffffffe > ((long)(~0UL >> 1)) / unit && timeout > ((long)(~0UL >> 1= )) / unit)=0D return ((long)(~0UL >> 1)) / unit;=0D =0D return timeout;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int addrconf_finite_timeout(= unsigned long timeout)=0D {=0D return ~timeout;=0D }=0D =0D =0D =0D =0D int ipv6_addr_label_init(void);=0D void ipv6_addr_label_cleanup(void);=0D int ipv6_addr_label_rtnl_register(void);=0D u32 ipv6_addr_label(struct net *net, const struct in6_addr *addr,=0D int type, int ifindex);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_mc_may_pull(struct= sk_buff *skb,=0D unsigned int len)=0D {=0D if (skb_transport_offset(skb) + ipv6_transport_len(skb) < len)=0D return false;=0D =0D return pskb_may_pull(skb, len);=0D }=0D =0D int ipv6_sock_mc_join(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D int ipv6_sock_mc_drop(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D void __ipv6_sock_mc_close(struct sock *sk);=0D void ipv6_sock_mc_close(struct sock *sk);=0D bool inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,=0D const struct in6_addr *src_addr);=0D =0D int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr);=0D int __ipv6_dev_mc_dec(struct inet6_dev *idev, const struct in6_addr *addr);= =0D int ipv6_dev_mc_dec(struct net_device *dev, const struct in6_addr *addr);=0D void ipv6_mc_up(struct inet6_dev *idev);=0D void ipv6_mc_down(struct inet6_dev *idev);=0D void ipv6_mc_unmap(struct inet6_dev *idev);=0D void ipv6_mc_remap(struct inet6_dev *idev);=0D void ipv6_mc_init_dev(struct inet6_dev *idev);=0D void ipv6_mc_destroy_dev(struct inet6_dev *idev);=0D int ipv6_mc_check_mld(struct sk_buff *skb);=0D void addrconf_dad_failure(struct sk_buff *skb, struct inet6_ifaddr *ifp);=0D =0D bool ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *gro= up,=0D const struct in6_addr *src_addr);=0D =0D void ipv6_mc_dad_complete(struct inet6_dev *idev);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_is_mld(struct sk_b= uff *skb, int nexthdr, int offset)=0D {=0D struct icmp6hdr *hdr;=0D =0D if (nexthdr !=3D 58 ||=0D !pskb_network_may_pull(skb, offset + sizeof(struct icmp6hdr)))=0D return false;=0D =0D hdr =3D (struct icmp6hdr *)(skb_network_header(skb) + offset);=0D =0D switch (hdr->icmp6_type) {=0D case 130:=0D case 131:=0D case 132:=0D case 143:=0D return true;=0D default:=0D break;=0D }=0D return false;=0D }=0D =0D void addrconf_prefix_rcv(struct net_device *dev,=0D u8 *opt, int len, bool sllao);=0D =0D =0D =0D =0D int ipv6_sock_ac_join(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D int ipv6_sock_ac_drop(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D void __ipv6_sock_ac_close(struct sock *sk);=0D void ipv6_sock_ac_close(struct sock *sk);=0D =0D int __ipv6_dev_ac_inc(struct inet6_dev *idev, const struct in6_addr *addr);= =0D int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr);= =0D void ipv6_ac_destroy_dev(struct inet6_dev *idev);=0D bool ipv6_chk_acast_addr(struct net *net, struct net_device *dev,=0D const struct in6_addr *addr);=0D bool ipv6_chk_acast_addr_src(struct net *net, struct net_device *dev,=0D const struct in6_addr *addr);=0D int ipv6_anycast_init(void);=0D void ipv6_anycast_cleanup(void);=0D =0D =0D int register_inet6addr_notifier(struct notifier_block *nb);=0D int unregister_inet6addr_notifier(struct notifier_block *nb);=0D int inet6addr_notifier_call_chain(unsigned long val, void *v);=0D =0D int register_inet6addr_validator_notifier(struct notifier_block *nb);=0D int unregister_inet6addr_validator_notifier(struct notifier_block *nb);=0D int inet6addr_validator_notifier_call_chain(unsigned long val, void *v);=0D =0D void inet6_netconf_notify_devconf(struct net *net, int event, int type,=0D int ifindex, struct ipv6_devconf *devconf);=0D # 313 "./include/net/addrconf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet6_dev *__in6_dev_= get(const struct net_device *dev)=0D {=0D return ({ typeof(*(dev->ip6_ptr)) *__UNIQUE_ID_rcu465 =3D (typeof(*(dev->i= p6_ptr)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_466(void) ; if (!((sizeof((dev->ip6_ptr)) =3D=3D sizeof(char) || siz= eof((dev->ip6_ptr)) =3D=3D sizeof(short) || sizeof((dev->ip6_ptr)) =3D=3D s= izeof(int) || sizeof((dev->ip6_ptr)) =3D=3D sizeof(long)) || sizeof((dev->i= p6_ptr)) =3D=3D sizeof(long long))) __compiletime_assert_466(); } while (0)= ; (*(const volatile typeof( _Generic(((dev->ip6_ptr)), char: (char)0, unsig= ned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (u= nsigned short)0, signed short: (signed short)0, unsigned int: (unsigned int= )0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long= : (signed long)0, unsigned long long: (unsigned long long)0, signed long lo= ng: (signed long long)0, default: ((dev->ip6_ptr)))) *)&((dev->ip6_ptr))); = }); do { } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held())= )); ; ((typeof(*(dev->ip6_ptr)) *)(__UNIQUE_ID_rcu465)); });=0D }=0D # 326 "./include/net/addrconf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet6_dev *__in6_dev_= stats_get(const struct net_device *dev,=0D const struct sk_buff *skb)=0D {=0D if (netif_is_l3_master(dev))=0D dev =3D dev_get_by_index_rcu(dev_net(dev), inet6_iif(skb));=0D return __in6_dev_get(dev);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet6_dev *__in6_dev_= get_safely(const struct net_device *dev)=0D {=0D if (__builtin_expect(!!(dev), 1))=0D return ({ typeof(*(dev->ip6_ptr)) *__UNIQUE_ID_rcu467 =3D (typeof(*(dev->= ip6_ptr)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_468(void) ; if (!((sizeof((dev->ip6_ptr)) =3D=3D sizeof(char) || si= zeof((dev->ip6_ptr)) =3D=3D sizeof(short) || sizeof((dev->ip6_ptr)) =3D=3D = sizeof(int) || sizeof((dev->ip6_ptr)) =3D=3D sizeof(long)) || sizeof((dev->= ip6_ptr)) =3D=3D sizeof(long long))) __compiletime_assert_468(); } while (0= ); (*(const volatile typeof( _Generic(((dev->ip6_ptr)), char: (char)0, unsi= gned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (= unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned in= t)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lon= g: (signed long)0, unsigned long long: (unsigned long long)0, signed long l= ong: (signed long long)0, default: ((dev->ip6_ptr)))) *)&((dev->ip6_ptr)));= }); do { } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()= ))); ; ((typeof(*(dev->ip6_ptr)) *)(__UNIQUE_ID_rcu467)); });=0D else=0D return ((void *)0);=0D }=0D # 356 "./include/net/addrconf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet6_dev *in6_dev_ge= t(const struct net_device *dev)=0D {=0D struct inet6_dev *idev;=0D =0D rcu_read_lock();=0D idev =3D ({ typeof(*(dev->ip6_ptr)) *__UNIQUE_ID_rcu469 =3D (typeof(*(dev-= >ip6_ptr)) *)({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_470(void) ; if (!((sizeof((dev->ip6_ptr)) =3D=3D sizeof(char) || s= izeof((dev->ip6_ptr)) =3D=3D sizeof(short) || sizeof((dev->ip6_ptr)) =3D=3D= sizeof(int) || sizeof((dev->ip6_ptr)) =3D=3D sizeof(long)) || sizeof((dev-= >ip6_ptr)) =3D=3D sizeof(long long))) __compiletime_assert_470(); } while (= 0); (*(const volatile typeof( _Generic(((dev->ip6_ptr)), char: (char)0, uns= igned char: (unsigned char)0, signed char: (signed char)0, unsigned short: = (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned i= nt)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lo= ng: (signed long)0, unsigned long long: (unsigned long long)0, signed long = long: (signed long long)0, default: ((dev->ip6_ptr)))) *)&((dev->ip6_ptr)))= ; }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(de= v->ip6_ptr)) *)(__UNIQUE_ID_rcu469)); });=0D if (idev)=0D refcount_inc(&idev->refcnt);=0D rcu_read_unlock();=0D return idev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neigh_parms *__in6_de= v_nd_parms_get_rcu(const struct net_device *dev)=0D {=0D struct inet6_dev *idev =3D __in6_dev_get(dev);=0D =0D return idev ? idev->nd_parms : ((void *)0);=0D }=0D =0D void in6_dev_finish_destroy(struct inet6_dev *idev);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void in6_dev_put(struct inet= 6_dev *idev)=0D {=0D if (refcount_dec_and_test(&idev->refcnt))=0D in6_dev_finish_destroy(idev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void in6_dev_put_clear(struc= t inet6_dev **pidev)=0D {=0D struct inet6_dev *idev =3D *pidev;=0D =0D if (idev) {=0D in6_dev_put(idev);=0D *pidev =3D ((void *)0);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __in6_dev_put(struct in= et6_dev *idev)=0D {=0D refcount_dec(&idev->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void in6_dev_hold(struct ine= t6_dev *idev)=0D {=0D refcount_inc(&idev->refcnt);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip6_ignore_linkdown(con= st struct net_device *dev)=0D {=0D const struct inet6_dev *idev =3D __in6_dev_get(dev);=0D =0D return !!idev->cnf.ignore_routes_with_linkdown;=0D }=0D =0D void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void in6_ifa_put(struct inet= 6_ifaddr *ifp)=0D {=0D if (refcount_dec_and_test(&ifp->refcnt))=0D inet6_ifa_finish_destroy(ifp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __in6_ifa_put(struct in= et6_ifaddr *ifp)=0D {=0D refcount_dec(&ifp->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void in6_ifa_hold(struct ine= t6_ifaddr *ifp)=0D {=0D refcount_inc(&ifp->refcnt);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void addrconf_addr_solict_mu= lt(const struct in6_addr *addr,=0D struct in6_addr *solicited)=0D {=0D ipv6_addr_set(solicited,=0D (( __be32)(__builtin_constant_p((__u32)((0xFF020000))) ? ((__u32)( = (((__u32)((0xFF020000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xFF0200= 00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xFF020000)) & (__u32)0x00ff= 0000UL) >> 8) | (((__u32)((0xFF020000)) & (__u32)0xff000000UL) >> 24))) : _= _fswab32((0xFF020000)))), 0,=0D (( __be32)(__builtin_constant_p((__u32)((0x1))) ? ((__u32)( (((__u3= 2)((0x1)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x1)) & (__u32)0x0000f= f00UL) << 8) | (((__u32)((0x1)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0= x1)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x1)))),=0D (( __be32)(__builtin_constant_p((__u32)((0xFF000000))) ? ((__u32)( = (((__u32)((0xFF000000)) & (__u32)0x000000ffUL) << 24) | (((__u32)((0xFF0000= 00)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0xFF000000)) & (__u32)0x00ff= 0000UL) >> 8) | (((__u32)((0xFF000000)) & (__u32)0xff000000UL) >> 24))) : _= _fswab32((0xFF000000)))) | addr->in6_u.u6_addr32[3]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_ll_all_nod= es(const struct in6_addr *addr)=0D {=0D =0D =0D =0D =0D return ((addr->in6_u.u6_addr32[0] ^ (( __be32)(__builtin_constant_p((__u32= )((0xff020000))) ? ((__u32)( (((__u32)((0xff020000)) & (__u32)0x000000ffUL)= << 24) | (((__u32)((0xff020000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= (0xff020000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff020000)) & (__u= 32)0xff000000UL) >> 24))) : __fswab32((0xff020000))))) |=0D addr->in6_u.u6_addr32[1] | addr->in6_u.u6_addr32[2] |=0D (addr->in6_u.u6_addr32[3] ^ (( __be32)(__builtin_constant_p((__u32)((0x00= 000001))) ? ((__u32)( (((__u32)((0x00000001)) & (__u32)0x000000ffUL) << 24)= | (((__u32)((0x00000001)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000= 0001)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00000001)) & (__u32)0xff= 000000UL) >> 24))) : __fswab32((0x00000001)))))) =3D=3D 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_ll_all_rou= ters(const struct in6_addr *addr)=0D {=0D =0D =0D =0D =0D return ((addr->in6_u.u6_addr32[0] ^ (( __be32)(__builtin_constant_p((__u32= )((0xff020000))) ? ((__u32)( (((__u32)((0xff020000)) & (__u32)0x000000ffUL)= << 24) | (((__u32)((0xff020000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= (0xff020000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff020000)) & (__u= 32)0xff000000UL) >> 24))) : __fswab32((0xff020000))))) |=0D addr->in6_u.u6_addr32[1] | addr->in6_u.u6_addr32[2] |=0D (addr->in6_u.u6_addr32[3] ^ (( __be32)(__builtin_constant_p((__u32)((0x00= 000002))) ? ((__u32)( (((__u32)((0x00000002)) & (__u32)0x000000ffUL) << 24)= | (((__u32)((0x00000002)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000= 0002)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00000002)) & (__u32)0xff= 000000UL) >> 24))) : __fswab32((0x00000002)))))) =3D=3D 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_isatap(con= st struct in6_addr *addr)=0D {=0D return (addr->in6_u.u6_addr32[2] | (( __be32)(__builtin_constant_p((__u32)= ((0x02000000))) ? ((__u32)( (((__u32)((0x02000000)) & (__u32)0x000000ffUL) = << 24) | (((__u32)((0x02000000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((= 0x02000000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x02000000)) & (__u3= 2)0xff000000UL) >> 24))) : __fswab32((0x02000000))))) =3D=3D (( __be32)(__b= uiltin_constant_p((__u32)((0x02005EFE))) ? ((__u32)( (((__u32)((0x02005EFE)= ) & (__u32)0x000000ffUL) << 24) | (((__u32)((0x02005EFE)) & (__u32)0x0000ff= 00UL) << 8) | (((__u32)((0x02005EFE)) & (__u32)0x00ff0000UL) >> 8) | (((__u= 32)((0x02005EFE)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0x02005EFE))= ));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_solict_mul= t(const struct in6_addr *addr)=0D {=0D =0D =0D =0D =0D =0D =0D return ((addr->in6_u.u6_addr32[0] ^ (( __be32)(__builtin_constant_p((__u32= )((0xff020000))) ? ((__u32)( (((__u32)((0xff020000)) & (__u32)0x000000ffUL)= << 24) | (((__u32)((0xff020000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= (0xff020000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff020000)) & (__u= 32)0xff000000UL) >> 24))) : __fswab32((0xff020000))))) |=0D addr->in6_u.u6_addr32[1] |=0D (addr->in6_u.u6_addr32[2] ^ (( __be32)(__builtin_constant_p((__u32)((0x00= 000001))) ? ((__u32)( (((__u32)((0x00000001)) & (__u32)0x000000ffUL) << 24)= | (((__u32)((0x00000001)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000= 0001)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x00000001)) & (__u32)0xff= 000000UL) >> 24))) : __fswab32((0x00000001))))) |=0D (addr->in6_u.u6_addr8[12] ^ 0xff)) =3D=3D 0;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_addr_is_all_snoope= rs(const struct in6_addr *addr)=0D {=0D =0D =0D =0D =0D =0D =0D return ((addr->in6_u.u6_addr32[0] ^ (( __be32)(__builtin_constant_p((__u32= )((0xff020000))) ? ((__u32)( (((__u32)((0xff020000)) & (__u32)0x000000ffUL)= << 24) | (((__u32)((0xff020000)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= (0xff020000)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0xff020000)) & (__u= 32)0xff000000UL) >> 24))) : __fswab32((0xff020000))))) |=0D addr->in6_u.u6_addr32[1] | addr->in6_u.u6_addr32[2] |=0D (addr->in6_u.u6_addr32[3] ^ (( __be32)(__builtin_constant_p((__u32)((0x00= 00006a))) ? ((__u32)( (((__u32)((0x0000006a)) & (__u32)0x000000ffUL) << 24)= | (((__u32)((0x0000006a)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0x0000= 006a)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((0x0000006a)) & (__u32)0xff= 000000UL) >> 24))) : __fswab32((0x0000006a)))))) =3D=3D 0;=0D =0D }=0D =0D =0D int if6_proc_init(void);=0D void if6_proc_exit(void);=0D # 23 "./include/net/ip6_route.h" 2=0D =0D =0D =0D # 1 "./include/net/lwtunnel.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/lwtunnel.h" 1=0D =0D =0D =0D =0D =0D =0D enum lwtunnel_encap_types {=0D LWTUNNEL_ENCAP_NONE,=0D LWTUNNEL_ENCAP_MPLS,=0D LWTUNNEL_ENCAP_IP,=0D LWTUNNEL_ENCAP_ILA,=0D LWTUNNEL_ENCAP_IP6,=0D LWTUNNEL_ENCAP_SEG6,=0D LWTUNNEL_ENCAP_BPF,=0D LWTUNNEL_ENCAP_SEG6_LOCAL,=0D LWTUNNEL_ENCAP_RPL,=0D LWTUNNEL_ENCAP_IOAM6,=0D __LWTUNNEL_ENCAP_MAX,=0D };=0D =0D =0D =0D enum lwtunnel_ip_t {=0D LWTUNNEL_IP_UNSPEC,=0D LWTUNNEL_IP_ID,=0D LWTUNNEL_IP_DST,=0D LWTUNNEL_IP_SRC,=0D LWTUNNEL_IP_TTL,=0D LWTUNNEL_IP_TOS,=0D LWTUNNEL_IP_FLAGS,=0D LWTUNNEL_IP_PAD,=0D LWTUNNEL_IP_OPTS,=0D __LWTUNNEL_IP_MAX,=0D };=0D =0D =0D =0D enum lwtunnel_ip6_t {=0D LWTUNNEL_IP6_UNSPEC,=0D LWTUNNEL_IP6_ID,=0D LWTUNNEL_IP6_DST,=0D LWTUNNEL_IP6_SRC,=0D LWTUNNEL_IP6_HOPLIMIT,=0D LWTUNNEL_IP6_TC,=0D LWTUNNEL_IP6_FLAGS,=0D LWTUNNEL_IP6_PAD,=0D LWTUNNEL_IP6_OPTS,=0D __LWTUNNEL_IP6_MAX,=0D };=0D =0D =0D =0D enum {=0D LWTUNNEL_IP_OPTS_UNSPEC,=0D LWTUNNEL_IP_OPTS_GENEVE,=0D LWTUNNEL_IP_OPTS_VXLAN,=0D LWTUNNEL_IP_OPTS_ERSPAN,=0D __LWTUNNEL_IP_OPTS_MAX,=0D };=0D =0D =0D =0D enum {=0D LWTUNNEL_IP_OPT_GENEVE_UNSPEC,=0D LWTUNNEL_IP_OPT_GENEVE_CLASS,=0D LWTUNNEL_IP_OPT_GENEVE_TYPE,=0D LWTUNNEL_IP_OPT_GENEVE_DATA,=0D __LWTUNNEL_IP_OPT_GENEVE_MAX,=0D };=0D =0D =0D =0D enum {=0D LWTUNNEL_IP_OPT_VXLAN_UNSPEC,=0D LWTUNNEL_IP_OPT_VXLAN_GBP,=0D __LWTUNNEL_IP_OPT_VXLAN_MAX,=0D };=0D =0D =0D =0D enum {=0D LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,=0D LWTUNNEL_IP_OPT_ERSPAN_VER,=0D LWTUNNEL_IP_OPT_ERSPAN_INDEX,=0D LWTUNNEL_IP_OPT_ERSPAN_DIR,=0D LWTUNNEL_IP_OPT_ERSPAN_HWID,=0D __LWTUNNEL_IP_OPT_ERSPAN_MAX,=0D };=0D =0D =0D =0D enum {=0D LWT_BPF_PROG_UNSPEC,=0D LWT_BPF_PROG_FD,=0D LWT_BPF_PROG_NAME,=0D __LWT_BPF_PROG_MAX,=0D };=0D =0D =0D =0D enum {=0D LWT_BPF_UNSPEC,=0D LWT_BPF_IN,=0D LWT_BPF_OUT,=0D LWT_BPF_XMIT,=0D LWT_BPF_XMIT_HEADROOM,=0D __LWT_BPF_MAX,=0D };=0D # 6 "./include/net/lwtunnel.h" 2=0D =0D =0D =0D # 1 "./include/net/route.h" 1=0D # 28 "./include/net/route.h"=0D # 1 "./include/net/arp.h" 1=0D # 11 "./include/net/arp.h"=0D extern struct neigh_table arp_tbl;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 arp_hashfn(const void *p= key, const struct net_device *dev, u32 *hash_rnd)=0D {=0D u32 key =3D *(const u32 *)pkey;=0D u32 val =3D key ^ hash32_ptr(dev);=0D =0D return val * hash_rnd[0];=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *__ipv4_nei= gh_lookup_noref(struct net_device *dev, u32 key)=0D {=0D if (dev->flags & (IFF_LOOPBACK | IFF_POINTOPOINT))=0D key =3D ((unsigned long int) 0x00000000);=0D =0D return ___neigh_lookup_noref(&arp_tbl, neigh_key_eq32, arp_hashfn, &key, d= ev);=0D }=0D # 37 "./include/net/arp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *__ipv4_nei= gh_lookup(struct net_device *dev, u32 key)=0D {=0D struct neighbour *n;=0D =0D rcu_read_lock_bh();=0D n =3D __ipv4_neigh_lookup_noref(dev, key);=0D if (n && !refcount_inc_not_zero(&n->refcnt))=0D n =3D ((void *)0);=0D rcu_read_unlock_bh();=0D =0D return n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ipv4_confirm_neigh(st= ruct net_device *dev, u32 key)=0D {=0D struct neighbour *n;=0D =0D rcu_read_lock_bh();=0D n =3D __ipv4_neigh_lookup_noref(dev, key);=0D neigh_confirm(n);=0D rcu_read_unlock_bh();=0D }=0D =0D void arp_init(void);=0D int arp_ioctl(struct net *net, unsigned int cmd, void *arg);=0D void arp_send(int type, int ptype, __be32 dest_ip,=0D struct net_device *dev, __be32 src_ip,=0D const unsigned char *dest_hw,=0D const unsigned char *src_hw, const unsigned char *th);=0D int arp_mc_map(__be32 addr, u8 *haddr, struct net_device *dev, int dir);=0D void arp_ifdown(struct net_device *dev);=0D int arp_invalidate(struct net_device *dev, __be32 ip, bool force);=0D =0D struct sk_buff *arp_create(int type, int ptype, __be32 dest_ip,=0D struct net_device *dev, __be32 src_ip,=0D const unsigned char *dest_hw,=0D const unsigned char *src_hw,=0D const unsigned char *target_hw);=0D void arp_xmit(struct sk_buff *skb);=0D # 29 "./include/net/route.h" 2=0D # 1 "./include/net/ndisc.h" 1=0D =0D =0D =0D =0D # 1 "./include/net/ipv6_stubs.h" 1=0D # 14 "./include/net/ipv6_stubs.h"=0D struct fib6_info;=0D struct fib6_nh;=0D struct fib6_config;=0D struct fib6_result;=0D =0D =0D =0D =0D struct ipv6_stub {=0D int (*ipv6_sock_mc_join)(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D int (*ipv6_sock_mc_drop)(struct sock *sk, int ifindex,=0D const struct in6_addr *addr);=0D struct dst_entry *(*ipv6_dst_lookup_flow)(struct net *net,=0D const struct sock *sk,=0D struct flowi6 *fl6,=0D const struct in6_addr *final_dst);=0D int (*ipv6_route_input)(struct sk_buff *skb);=0D =0D struct fib6_table *(*fib6_get_table)(struct net *net, u32 id);=0D int (*fib6_lookup)(struct net *net, int oif, struct flowi6 *fl6,=0D struct fib6_result *res, int flags);=0D int (*fib6_table_lookup)(struct net *net, struct fib6_table *table,=0D int oif, struct flowi6 *fl6,=0D struct fib6_result *res, int flags);=0D void (*fib6_select_path)(const struct net *net, struct fib6_result *res,=0D struct flowi6 *fl6, int oif, bool oif_match,=0D const struct sk_buff *skb, int strict);=0D u32 (*ip6_mtu_from_fib6)(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D =0D int (*fib6_nh_init)(struct net *net, struct fib6_nh *fib6_nh,=0D struct fib6_config *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack);=0D void (*fib6_nh_release)(struct fib6_nh *fib6_nh);=0D void (*fib6_nh_release_dsts)(struct fib6_nh *fib6_nh);=0D void (*fib6_update_sernum)(struct net *net, struct fib6_info *rt);=0D int (*ip6_del_rt)(struct net *net, struct fib6_info *rt, bool skip_notify)= ;=0D void (*fib6_rt_update)(struct net *net, struct fib6_info *rt,=0D struct nl_info *info);=0D =0D void (*udpv6_encap_enable)(void);=0D void (*ndisc_send_na)(struct net_device *dev, const struct in6_addr *daddr= ,=0D const struct in6_addr *solicited_addr,=0D bool router, bool solicited, bool override, bool inc_opt);=0D =0D =0D =0D =0D =0D =0D struct neigh_table *nd_tbl;=0D =0D int (*ipv6_fragment)(struct net *net, struct sock *sk, struct sk_buff *skb= ,=0D int (*output)(struct net *, struct sock *, struct sk_buff *));=0D struct net_device *(*ipv6_dev_find)(struct net *net, const struct in6_addr= *addr,=0D struct net_device *dev);=0D };=0D extern const struct ipv6_stub *ipv6_stub ;=0D =0D =0D struct ipv6_bpf_stub {=0D int (*inet6_bind)(struct sock *sk, struct sockaddr *uaddr, int addr_len,=0D u32 flags);=0D struct sock *(*udp6_lib_lookup)(struct net *net,=0D const struct in6_addr *saddr, __be16 sport,=0D const struct in6_addr *daddr, __be16 dport,=0D int dif, int sdif, struct udp_table *tbl,=0D struct sk_buff *skb);=0D };=0D extern const struct ipv6_bpf_stub *ipv6_bpf_stub ;=0D # 6 "./include/net/ndisc.h" 2=0D # 30 "./include/net/ndisc.h"=0D enum {=0D __ND_OPT_PREFIX_INFO_END =3D 0,=0D ND_OPT_SOURCE_LL_ADDR =3D 1,=0D ND_OPT_TARGET_LL_ADDR =3D 2,=0D ND_OPT_PREFIX_INFO =3D 3,=0D ND_OPT_REDIRECT_HDR =3D 4,=0D ND_OPT_MTU =3D 5,=0D ND_OPT_NONCE =3D 14,=0D __ND_OPT_ARRAY_MAX,=0D ND_OPT_ROUTE_INFO =3D 24,=0D ND_OPT_RDNSS =3D 25,=0D ND_OPT_DNSSL =3D 31,=0D ND_OPT_6CO =3D 34,=0D ND_OPT_CAPTIVE_PORTAL =3D 37,=0D ND_OPT_PREF64 =3D 38,=0D __ND_OPT_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/icmpv6.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct icmp6hdr *icmp6_hdr(c= onst struct sk_buff *skb)=0D {=0D return (struct icmp6hdr *)skb_transport_header(skb);=0D }=0D =0D =0D =0D =0D =0D typedef void ip6_icmp_send_t(struct sk_buff *skb, u8 type, u8 code, __u32 i= nfo,=0D const struct in6_addr *force_saddr,=0D const struct inet6_skb_parm *parm);=0D void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info,=0D const struct in6_addr *force_saddr,=0D const struct inet6_skb_parm *parm);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __icmpv6_send(struct sk= _buff *skb, u8 type, u8 code, __u32 info,=0D const struct inet6_skb_parm *parm)=0D {=0D icmp6_send(skb, type, code, info, ((void *)0), parm);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet6_register_icmp_send= er(ip6_icmp_send_t *fn)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_471(vo= id) ; if (!(!(fn !=3D icmp6_send))) __compiletime_assert_471(); } while (0)= ;=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet6_unregister_icmp_se= nder(ip6_icmp_send_t *fn)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_472(vo= id) ; if (!(!(fn !=3D icmp6_send))) __compiletime_assert_472(); } while (0)= ;=0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void icmpv6_send(struct sk_b= uff *skb, u8 type, u8 code, __u32 info)=0D {=0D __icmpv6_send(skb, type, code, info, ((struct inet6_skb_parm*)((skb)->cb))= );=0D }=0D =0D int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type,=0D unsigned int data_len);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void icmpv6_ndo_send(struct = sk_buff *skb_in, u8 type, u8 code, __u32 info)=0D {=0D struct inet6_skb_parm parm =3D { 0 };=0D __icmpv6_send(skb_in, type, code, info, &parm);=0D }=0D # 78 "./include/linux/icmpv6.h"=0D extern int icmpv6_init(void);=0D extern int icmpv6_err_convert(u8 type, u8 code,=0D int *err);=0D extern void icmpv6_cleanup(void);=0D extern void icmpv6_param_prob(struct sk_buff *skb,=0D u8 code, int pos);=0D =0D struct flowi6;=0D struct in6_addr;=0D extern void icmpv6_flow_init(struct sock *sk,=0D struct flowi6 *fl6,=0D u8 type,=0D const struct in6_addr *saddr,=0D const struct in6_addr *daddr,=0D int oif);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool icmpv6_is_err(int type)= =0D {=0D switch (type) {=0D case 1:=0D case 2:=0D case 3:=0D case 4:=0D return true;=0D }=0D =0D return false;=0D }=0D # 55 "./include/net/ndisc.h" 2=0D # 72 "./include/net/ndisc.h"=0D struct ctl_table;=0D struct inet6_dev;=0D struct net_device;=0D struct net_proto_family;=0D struct sk_buff;=0D struct prefix_info;=0D =0D extern struct neigh_table nd_tbl;=0D =0D struct nd_msg {=0D struct icmp6hdr icmph;=0D struct in6_addr target;=0D __u8 opt[];=0D };=0D =0D struct rs_msg {=0D struct icmp6hdr icmph;=0D __u8 opt[];=0D };=0D =0D struct ra_msg {=0D struct icmp6hdr icmph;=0D __be32 reachable_time;=0D __be32 retrans_timer;=0D };=0D =0D struct rd_msg {=0D struct icmp6hdr icmph;=0D struct in6_addr target;=0D struct in6_addr dest;=0D __u8 opt[];=0D };=0D =0D struct nd_opt_hdr {=0D __u8 nd_opt_type;=0D __u8 nd_opt_len;=0D } __attribute__((__packed__));=0D =0D =0D struct ndisc_options {=0D struct nd_opt_hdr *nd_opt_array[__ND_OPT_ARRAY_MAX];=0D =0D =0D =0D =0D struct nd_opt_hdr *nd_useropts;=0D struct nd_opt_hdr *nd_useropts_end;=0D =0D =0D =0D };=0D # 136 "./include/net/ndisc.h"=0D struct ndisc_options *ndisc_parse_options(const struct net_device *dev,=0D u8 *opt, int opt_len,=0D struct ndisc_options *ndopts);=0D =0D void __ndisc_fill_addr_option(struct sk_buff *skb, int type, const void *da= ta,=0D int data_len, int pad);=0D # 202 "./include/net/ndisc.h"=0D struct ndisc_ops {=0D int (*is_useropt)(u8 nd_opt_type);=0D int (*parse_options)(const struct net_device *dev,=0D struct nd_opt_hdr *nd_opt,=0D struct ndisc_options *ndopts);=0D void (*update)(const struct net_device *dev, struct neighbour *n,=0D u32 flags, u8 icmp6_type,=0D const struct ndisc_options *ndopts);=0D int (*opt_addr_space)(const struct net_device *dev, u8 icmp6_type,=0D struct neighbour *neigh, u8 *ha_buf,=0D u8 **ha);=0D void (*fill_addr_option)(const struct net_device *dev,=0D struct sk_buff *skb, u8 icmp6_type,=0D const u8 *ha);=0D void (*prefix_rcv_add_addr)(struct net *net, struct net_device *dev,=0D const struct prefix_info *pinfo,=0D struct inet6_dev *in6_dev,=0D struct in6_addr *addr,=0D int addr_type, u32 addr_flags,=0D bool sllao, bool tokenized,=0D __u32 valid_lft, u32 prefered_lft,=0D bool dev_addr_generated);=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_ops_is_useropt(con= st struct net_device *dev,=0D u8 nd_opt_type)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->is_useropt)=0D return dev->ndisc_ops->is_useropt(nd_opt_type);=0D else=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_ops_parse_options(= const struct net_device *dev,=0D struct nd_opt_hdr *nd_opt,=0D struct ndisc_options *ndopts)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->parse_options)=0D return dev->ndisc_ops->parse_options(dev, nd_opt, ndopts);=0D else=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ndisc_ops_update(const = struct net_device *dev,=0D struct neighbour *n, u32 flags,=0D u8 icmp6_type,=0D const struct ndisc_options *ndopts)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->update)=0D dev->ndisc_ops->update(dev, n, flags, icmp6_type, ndopts);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_ops_opt_addr_space= (const struct net_device *dev,=0D u8 icmp6_type)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->opt_addr_space &&=0D icmp6_type !=3D 137)=0D return dev->ndisc_ops->opt_addr_space(dev, icmp6_type, ((void *)0),=0D ((void *)0), ((void *)0));=0D else=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_ops_redirect_opt_a= ddr_space(const struct net_device *dev,=0D struct neighbour *neigh,=0D u8 *ha_buf, u8 **ha)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->opt_addr_space)=0D return dev->ndisc_ops->opt_addr_space(dev, 137,=0D neigh, ha_buf, ha);=0D else=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ndisc_ops_fill_addr_opt= ion(const struct net_device *dev,=0D struct sk_buff *skb,=0D u8 icmp6_type)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->fill_addr_option &&=0D icmp6_type !=3D 137)=0D dev->ndisc_ops->fill_addr_option(dev, skb, icmp6_type, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ndisc_ops_fill_redirect= _addr_option(const struct net_device *dev,=0D struct sk_buff *skb,=0D const u8 *ha)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->fill_addr_option)=0D dev->ndisc_ops->fill_addr_option(dev, skb, 137, ha);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ndisc_ops_prefix_rcv_ad= d_addr(struct net *net,=0D struct net_device *dev,=0D const struct prefix_info *pinfo,=0D struct inet6_dev *in6_dev,=0D struct in6_addr *addr,=0D int addr_type, u32 addr_flags,=0D bool sllao, bool tokenized,=0D __u32 valid_lft,=0D u32 prefered_lft,=0D bool dev_addr_generated)=0D {=0D if (dev->ndisc_ops && dev->ndisc_ops->prefix_rcv_add_addr)=0D dev->ndisc_ops->prefix_rcv_add_addr(net, dev, pinfo, in6_dev,=0D addr, addr_type,=0D addr_flags, sllao,=0D tokenized, valid_lft,=0D prefered_lft,=0D dev_addr_generated);=0D }=0D # 321 "./include/net/ndisc.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_addr_option_pad(un= signed short type)=0D {=0D switch (type) {=0D case 32: return 2;=0D default: return 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ndisc_opt_addr_space(u= nsigned char addr_len, int pad)=0D {=0D return (((addr_len + pad)+2+7)&~7);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_opt_addr_space(str= uct net_device *dev, u8 icmp6_type)=0D {=0D return __ndisc_opt_addr_space(dev->addr_len,=0D ndisc_addr_option_pad(dev->type)) +=0D ndisc_ops_opt_addr_space(dev, icmp6_type);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ndisc_redirect_opt_addr_= space(struct net_device *dev,=0D struct neighbour *neigh,=0D u8 *ops_data_buf,=0D u8 **ops_data)=0D {=0D return __ndisc_opt_addr_space(dev->addr_len,=0D ndisc_addr_option_pad(dev->type)) +=0D ndisc_ops_redirect_opt_addr_space(dev, neigh, ops_data_buf,=0D ops_data);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 *__ndisc_opt_addr_data(st= ruct nd_opt_hdr *p,=0D unsigned char addr_len, int prepad)=0D {=0D u8 *lladdr =3D (u8 *)(p + 1);=0D int lladdrlen =3D p->nd_opt_len << 3;=0D if (lladdrlen !=3D __ndisc_opt_addr_space(addr_len, prepad))=0D return ((void *)0);=0D return lladdr + prepad;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 *ndisc_opt_addr_data(stru= ct nd_opt_hdr *p,=0D struct net_device *dev)=0D {=0D return __ndisc_opt_addr_data(p, dev->addr_len,=0D ndisc_addr_option_pad(dev->type));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ndisc_hashfn(const void = *pkey, const struct net_device *dev, __u32 *hash_rnd)=0D {=0D const u32 *p32 =3D pkey;=0D =0D return (((p32[0] ^ hash32_ptr(dev)) * hash_rnd[0]) +=0D (p32[1] * hash_rnd[1]) +=0D (p32[2] * hash_rnd[2]) +=0D (p32[3] * hash_rnd[3]));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *__ipv6_nei= gh_lookup_noref(struct net_device *dev, const void *pkey)=0D {=0D return ___neigh_lookup_noref(&nd_tbl, neigh_key_eq128, ndisc_hashfn, pkey,= dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct neighbour *__ipv6_neigh_lookup_noref_stub(struct net_device *dev,=0D const void *pkey)=0D {=0D return ___neigh_lookup_noref(ipv6_stub->nd_tbl, neigh_key_eq128,=0D ndisc_hashfn, pkey, dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *__ipv6_nei= gh_lookup(struct net_device *dev, const void *pkey)=0D {=0D struct neighbour *n;=0D =0D rcu_read_lock_bh();=0D n =3D __ipv6_neigh_lookup_noref(dev, pkey);=0D if (n && !refcount_inc_not_zero(&n->refcnt))=0D n =3D ((void *)0);=0D rcu_read_unlock_bh();=0D =0D return n;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ipv6_confirm_neigh(st= ruct net_device *dev,=0D const void *pkey)=0D {=0D struct neighbour *n;=0D =0D rcu_read_lock_bh();=0D n =3D __ipv6_neigh_lookup_noref(dev, pkey);=0D neigh_confirm(n);=0D rcu_read_unlock_bh();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ipv6_confirm_neigh_st= ub(struct net_device *dev,=0D const void *pkey)=0D {=0D struct neighbour *n;=0D =0D rcu_read_lock_bh();=0D n =3D __ipv6_neigh_lookup_noref_stub(dev, pkey);=0D neigh_confirm(n);=0D rcu_read_unlock_bh();=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *ip_neigh_g= w6(struct net_device *dev,=0D const void *addr)=0D {=0D struct neighbour *neigh;=0D =0D neigh =3D __ipv6_neigh_lookup_noref_stub(dev, addr);=0D if (__builtin_expect(!!(!neigh), 0))=0D neigh =3D __neigh_create(ipv6_stub->nd_tbl, addr, dev, false);=0D =0D return neigh;=0D }=0D =0D int ndisc_init(void);=0D int ndisc_late_init(void);=0D =0D void ndisc_late_cleanup(void);=0D void ndisc_cleanup(void);=0D =0D int ndisc_rcv(struct sk_buff *skb);=0D =0D struct sk_buff *ndisc_ns_create(struct net_device *dev, const struct in6_ad= dr *solicit,=0D const struct in6_addr *saddr, u64 nonce);=0D void ndisc_send_ns(struct net_device *dev, const struct in6_addr *solicit,= =0D const struct in6_addr *daddr, const struct in6_addr *saddr,=0D u64 nonce);=0D =0D void ndisc_send_skb(struct sk_buff *skb, const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D =0D void ndisc_send_rs(struct net_device *dev,=0D const struct in6_addr *saddr, const struct in6_addr *daddr);=0D void ndisc_send_na(struct net_device *dev, const struct in6_addr *daddr,=0D const struct in6_addr *solicited_addr,=0D bool router, bool solicited, bool override, bool inc_opt);=0D =0D void ndisc_send_redirect(struct sk_buff *skb, const struct in6_addr *target= );=0D =0D int ndisc_mc_map(const struct in6_addr *addr, char *buf, struct net_device = *dev,=0D int dir);=0D =0D void ndisc_update(const struct net_device *dev, struct neighbour *neigh,=0D const u8 *lladdr, u8 new, u32 flags, u8 icmp6_type,=0D struct ndisc_options *ndopts);=0D =0D =0D =0D =0D int igmp6_init(void);=0D int igmp6_late_init(void);=0D =0D void igmp6_cleanup(void);=0D void igmp6_late_cleanup(void);=0D =0D void igmp6_event_query(struct sk_buff *skb);=0D =0D void igmp6_event_report(struct sk_buff *skb);=0D =0D =0D =0D int ndisc_ifinfo_sysctl_change(struct ctl_table *ctl, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int ndisc_ifinfo_sysctl_strategy(struct ctl_table *ctl,=0D void *oldval, size_t *oldlenp,=0D void *newval, size_t newlen);=0D =0D =0D void inet6_ifinfo_notify(int event, struct inet6_dev *idev);=0D # 30 "./include/net/route.h" 2=0D # 1 "./include/uapi/linux/in_route.h" 1=0D # 31 "./include/net/route.h" 2=0D =0D =0D =0D # 1 "./include/linux/ip.h" 1=0D # 17 "./include/linux/ip.h"=0D # 1 "./include/uapi/linux/ip.h" 1=0D # 86 "./include/uapi/linux/ip.h"=0D struct iphdr {=0D =0D __u8 ihl:4,=0D version:4;=0D =0D =0D =0D =0D =0D =0D __u8 tos;=0D __be16 tot_len;=0D __be16 id;=0D __be16 frag_off;=0D __u8 ttl;=0D __u8 protocol;=0D __sum16 check;=0D __be32 saddr;=0D __be32 daddr;=0D =0D };=0D =0D =0D struct ip_auth_hdr {=0D __u8 nexthdr;=0D __u8 hdrlen;=0D __be16 reserved;=0D __be32 spi;=0D __be32 seq_no;=0D __u8 auth_data[0];=0D };=0D =0D struct ip_esp_hdr {=0D __be32 spi;=0D __be32 seq_no;=0D __u8 enc_data[0];=0D };=0D =0D struct ip_comp_hdr {=0D __u8 nexthdr;=0D __u8 flags;=0D __be16 cpi;=0D };=0D =0D struct ip_beet_phdr {=0D __u8 nexthdr;=0D __u8 hdrlen;=0D __u8 padlen;=0D __u8 reserved;=0D };=0D =0D =0D enum=0D {=0D IPV4_DEVCONF_FORWARDING=3D1,=0D IPV4_DEVCONF_MC_FORWARDING,=0D IPV4_DEVCONF_PROXY_ARP,=0D IPV4_DEVCONF_ACCEPT_REDIRECTS,=0D IPV4_DEVCONF_SECURE_REDIRECTS,=0D IPV4_DEVCONF_SEND_REDIRECTS,=0D IPV4_DEVCONF_SHARED_MEDIA,=0D IPV4_DEVCONF_RP_FILTER,=0D IPV4_DEVCONF_ACCEPT_SOURCE_ROUTE,=0D IPV4_DEVCONF_BOOTP_RELAY,=0D IPV4_DEVCONF_LOG_MARTIANS,=0D IPV4_DEVCONF_TAG,=0D IPV4_DEVCONF_ARPFILTER,=0D IPV4_DEVCONF_MEDIUM_ID,=0D IPV4_DEVCONF_NOXFRM,=0D IPV4_DEVCONF_NOPOLICY,=0D IPV4_DEVCONF_FORCE_IGMP_VERSION,=0D IPV4_DEVCONF_ARP_ANNOUNCE,=0D IPV4_DEVCONF_ARP_IGNORE,=0D IPV4_DEVCONF_PROMOTE_SECONDARIES,=0D IPV4_DEVCONF_ARP_ACCEPT,=0D IPV4_DEVCONF_ARP_NOTIFY,=0D IPV4_DEVCONF_ACCEPT_LOCAL,=0D IPV4_DEVCONF_SRC_VMARK,=0D IPV4_DEVCONF_PROXY_ARP_PVLAN,=0D IPV4_DEVCONF_ROUTE_LOCALNET,=0D IPV4_DEVCONF_IGMPV2_UNSOLICITED_REPORT_INTERVAL,=0D IPV4_DEVCONF_IGMPV3_UNSOLICITED_REPORT_INTERVAL,=0D IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,=0D IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,=0D IPV4_DEVCONF_DROP_GRATUITOUS_ARP,=0D IPV4_DEVCONF_BC_FORWARDING,=0D IPV4_DEVCONF_ARP_EVICT_NOCARRIER,=0D __IPV4_DEVCONF_MAX=0D };=0D # 18 "./include/linux/ip.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct iphdr *ip_hdr(const s= truct sk_buff *skb)=0D {=0D return (struct iphdr *)skb_network_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct iphdr *inner_ip_hdr(c= onst struct sk_buff *skb)=0D {=0D return (struct iphdr *)skb_inner_network_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct iphdr *ipip_hdr(const= struct sk_buff *skb)=0D {=0D return (struct iphdr *)skb_transport_header(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip_transport_le= n(const struct sk_buff *skb)=0D {=0D return (__builtin_constant_p((__u16)(( __u16)(__be16)(ip_hdr(skb)->tot_len= ))) ? ((__u16)( (((__u16)(( __u16)(__be16)(ip_hdr(skb)->tot_len)) & (__u16)= 0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(ip_hdr(skb)->tot_len)) & (__u16= )0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(ip_hdr(skb)->tot_len))) - sk= b_network_header_len(skb);=0D }=0D # 35 "./include/net/route.h" 2=0D # 46 "./include/net/route.h"=0D struct ip_tunnel_info;=0D struct fib_nh;=0D struct fib_info;=0D struct uncached_list;=0D struct rtable {=0D struct dst_entry dst;=0D =0D int rt_genid;=0D unsigned int rt_flags;=0D __u16 rt_type;=0D __u8 rt_is_input;=0D __u8 rt_uses_gateway;=0D =0D int rt_iif;=0D =0D u8 rt_gw_family;=0D =0D union {=0D __be32 rt_gw4;=0D struct in6_addr rt_gw6;=0D };=0D =0D =0D u32 rt_mtu_locked:1,=0D rt_pmtu:31;=0D =0D struct list_head rt_uncached;=0D struct uncached_list *rt_uncached_list;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt_is_input_route(const= struct rtable *rt)=0D {=0D return rt->rt_is_input !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt_is_output_route(cons= t struct rtable *rt)=0D {=0D return rt->rt_is_input =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 rt_nexthop(const stru= ct rtable *rt, __be32 daddr)=0D {=0D if (rt->rt_gw_family =3D=3D 2)=0D return rt->rt_gw4;=0D return daddr;=0D }=0D =0D struct ip_rt_acct {=0D __u32 o_bytes;=0D __u32 o_packets;=0D __u32 i_bytes;=0D __u32 i_packets;=0D };=0D =0D struct rt_cache_stat {=0D unsigned int in_slow_tot;=0D unsigned int in_slow_mc;=0D unsigned int in_no_route;=0D unsigned int in_brd;=0D unsigned int in_martian_dst;=0D unsigned int in_martian_src;=0D unsigned int out_slow_tot;=0D unsigned int out_slow_mc;=0D };=0D =0D extern struct ip_rt_acct *ip_rt_acct;=0D =0D struct in_device;=0D =0D int ip_rt_init(void);=0D void rt_cache_flush(struct net *net);=0D void rt_flush_dev(struct net_device *dev);=0D struct rtable *ip_route_output_key_hash(struct net *net, struct flowi4 *flp= ,=0D const struct sk_buff *skb);=0D struct rtable *ip_route_output_key_hash_rcu(struct net *net, struct flowi4 = *flp,=0D struct fib_result *res,=0D const struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *__ip_route_ou= tput_key(struct net *net,=0D struct flowi4 *flp)=0D {=0D return ip_route_output_key_hash(net, flp, ((void *)0));=0D }=0D =0D struct rtable *ip_route_output_flow(struct net *, struct flowi4 *flp,=0D const struct sock *sk);=0D struct rtable *ip_route_output_tunnel(struct sk_buff *skb,=0D struct net_device *dev,=0D struct net *net, __be32 *saddr,=0D const struct ip_tunnel_info *info,=0D u8 protocol, bool use_cache);=0D =0D struct dst_entry *ipv4_blackhole_route(struct net *net,=0D struct dst_entry *dst_orig);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_outp= ut_key(struct net *net, struct flowi4 *flp)=0D {=0D return ip_route_output_flow(net, flp, ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_outp= ut(struct net *net, __be32 daddr,=0D __be32 saddr, u8 tos, int oif)=0D {=0D struct flowi4 fl4 =3D {=0D .__fl_common.flowic_oif =3D oif,=0D .__fl_common.flowic_tos =3D tos,=0D .daddr =3D daddr,=0D .saddr =3D saddr,=0D };=0D return ip_route_output_key(net, &fl4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_outp= ut_ports(struct net *net, struct flowi4 *fl4,=0D struct sock *sk,=0D __be32 daddr, __be32 saddr,=0D __be16 dport, __be16 sport,=0D __u8 proto, __u8 tos, int oif)=0D {=0D flowi4_init_output(fl4, oif, sk ? sk->sk_mark : 0, tos,=0D RT_SCOPE_UNIVERSE, proto,=0D sk ? inet_sk_flowi_flags(sk) : 0,=0D daddr, saddr, dport, sport, sock_net_uid(net, sk));=0D if (sk)=0D security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4));=0D return ip_route_output_flow(net, fl4, sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_outp= ut_gre(struct net *net, struct flowi4 *fl4,=0D __be32 daddr, __be32 saddr,=0D __be32 gre_key, __u8 tos, int oif)=0D {=0D memset(fl4, 0, sizeof(*fl4));=0D fl4->__fl_common.flowic_oif =3D oif;=0D fl4->daddr =3D daddr;=0D fl4->saddr =3D saddr;=0D fl4->__fl_common.flowic_tos =3D tos;=0D fl4->__fl_common.flowic_proto =3D IPPROTO_GRE;=0D fl4->uli.gre_key =3D gre_key;=0D return ip_route_output_key(net, fl4);=0D }=0D int ip_mc_validate_source(struct sk_buff *skb, __be32 daddr, __be32 saddr,= =0D u8 tos, struct net_device *dev,=0D struct in_device *in_dev, u32 *itag);=0D int ip_route_input_noref(struct sk_buff *skb, __be32 dst, __be32 src,=0D u8 tos, struct net_device *devin);=0D int ip_route_input_rcu(struct sk_buff *skb, __be32 dst, __be32 src,=0D u8 tos, struct net_device *devin,=0D struct fib_result *res);=0D =0D int ip_route_use_hint(struct sk_buff *skb, __be32 dst, __be32 src,=0D u8 tos, struct net_device *devin,=0D const struct sk_buff *hint);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_route_input(struct sk= _buff *skb, __be32 dst, __be32 src,=0D u8 tos, struct net_device *devin)=0D {=0D int err;=0D =0D rcu_read_lock();=0D err =3D ip_route_input_noref(skb, dst, src, tos, devin);=0D if (!err) {=0D skb_dst_force(skb);=0D if (!skb_dst(skb))=0D err =3D -22;=0D }=0D rcu_read_unlock();=0D =0D return err;=0D }=0D =0D void ipv4_update_pmtu(struct sk_buff *skb, struct net *net, u32 mtu, int oi= f,=0D u8 protocol);=0D void ipv4_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, u32 mtu);=0D void ipv4_redirect(struct sk_buff *skb, struct net *net, int oif, u8 protoc= ol);=0D void ipv4_sk_redirect(struct sk_buff *skb, struct sock *sk);=0D void ip_rt_send_redirect(struct sk_buff *skb);=0D =0D unsigned int inet_addr_type(struct net *net, __be32 addr);=0D unsigned int inet_addr_type_table(struct net *net, __be32 addr, u32 tb_id);= =0D unsigned int inet_dev_addr_type(struct net *net, const struct net_device *d= ev,=0D __be32 addr);=0D unsigned int inet_addr_type_dev_table(struct net *net,=0D const struct net_device *dev,=0D __be32 addr);=0D void ip_rt_multicast_event(struct in_device *);=0D int ip_rt_ioctl(struct net *, unsigned int cmd, struct rtentry *rt);=0D void ip_rt_get_source(u8 *src, struct sk_buff *skb, struct rtable *rt);=0D struct rtable *rt_dst_alloc(struct net_device *dev,=0D unsigned int flags, u16 type,=0D bool nopolicy, bool noxfrm);=0D struct rtable *rt_dst_clone(struct net_device *dev, struct rtable *rt);=0D =0D struct in_ifaddr;=0D void fib_add_ifaddr(struct in_ifaddr *);=0D void fib_del_ifaddr(struct in_ifaddr *, struct in_ifaddr *);=0D void fib_modify_prefix_metric(struct in_ifaddr *ifa, u32 new_metric);=0D =0D void rt_add_uncached_list(struct rtable *rt);=0D void rt_del_uncached_list(struct rtable *rt);=0D =0D int fib_dump_info_fnhe(struct sk_buff *skb, struct netlink_callback *cb,=0D u32 table_id, struct fib_info *fi,=0D int *fa_index, int fa_start, unsigned int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_rt_put(struct rtable= *rt)=0D {=0D =0D =0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_473(vo= id) ; if (!(!(__builtin_offsetof(struct rtable, dst) !=3D 0))) __compiletim= e_assert_473(); } while (0);=0D dst_release(&rt->dst);=0D }=0D =0D =0D =0D extern const __u8 ip_tos2prio[16];=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char rt_tos2priority(u8 tos)= =0D {=0D return ip_tos2prio[((tos)&0x1E)>>1];=0D }=0D # 292 "./include/net/route.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_route_connect_init(s= truct flowi4 *fl4, __be32 dst, __be32 src,=0D u32 tos, int oif, u8 protocol,=0D __be16 sport, __be16 dport,=0D struct sock *sk)=0D {=0D __u8 flow_flags =3D 0;=0D =0D if (inet_sk(sk)->transparent)=0D flow_flags |=3D 0x01;=0D =0D flowi4_init_output(fl4, oif, sk->sk_mark, tos, RT_SCOPE_UNIVERSE,=0D protocol, flow_flags, dst, src, dport, sport,=0D sk->sk_uid);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_conn= ect(struct flowi4 *fl4,=0D __be32 dst, __be32 src, u32 tos,=0D int oif, u8 protocol,=0D __be16 sport, __be16 dport,=0D struct sock *sk)=0D {=0D struct net *net =3D sock_net(sk);=0D struct rtable *rt;=0D =0D ip_route_connect_init(fl4, dst, src, tos, oif, protocol,=0D sport, dport, sk);=0D =0D if (!dst || !src) {=0D rt =3D __ip_route_output_key(net, fl4);=0D if (IS_ERR(rt))=0D return rt;=0D ip_rt_put(rt);=0D flowi4_update_output(fl4, oif, tos, fl4->daddr, fl4->saddr);=0D }=0D security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4));=0D return ip_route_output_flow(net, fl4, sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtable *ip_route_newp= orts(struct flowi4 *fl4, struct rtable *rt,=0D __be16 orig_sport, __be16 orig_dport,=0D __be16 sport, __be16 dport,=0D struct sock *sk)=0D {=0D if (sport !=3D orig_sport || dport !=3D orig_dport) {=0D fl4->uli.ports.dport =3D dport;=0D fl4->uli.ports.sport =3D sport;=0D ip_rt_put(rt);=0D flowi4_update_output(fl4, sk->__sk_common.skc_bound_dev_if,=0D (((inet_sk(sk)->tos)&0x1E) | sock_flag(sk, SOCK_LOCALROUTE)), fl4-= >daddr,=0D fl4->saddr);=0D security_sk_classify_flow(sk, flowi4_to_flowi_common(fl4));=0D return ip_route_output_flow(sock_net(sk), fl4, sk);=0D }=0D return rt;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_iif(const struct sk= _buff *skb)=0D {=0D struct rtable *rt =3D skb_rtable(skb);=0D =0D if (rt && rt->rt_iif)=0D return rt->rt_iif;=0D =0D return skb->skb_iif;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip4_dst_hoplimit(const s= truct dst_entry *dst)=0D {=0D int hoplimit =3D dst_metric_raw(dst, RTAX_HOPLIMIT);=0D struct net *net =3D dev_net(dst->dev);=0D =0D if (hoplimit =3D=3D 0)=0D hoplimit =3D net->ipv4.sysctl_ip_default_ttl;=0D return hoplimit;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *ip_neigh_g= w4(struct net_device *dev,=0D __be32 daddr)=0D {=0D struct neighbour *neigh;=0D =0D neigh =3D __ipv4_neigh_lookup_noref(dev, ( u32)daddr);=0D if (__builtin_expect(!!(!neigh), 0))=0D neigh =3D __neigh_create(&arp_tbl, &daddr, dev, false);=0D =0D return neigh;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct neighbour *ip_neigh_f= or_gw(struct rtable *rt,=0D struct sk_buff *skb,=0D bool *is_v6gw)=0D {=0D struct net_device *dev =3D rt->dst.dev;=0D struct neighbour *neigh;=0D =0D if (__builtin_expect(!!(rt->rt_gw_family =3D=3D 2), 1)) {=0D neigh =3D ip_neigh_gw4(dev, rt->rt_gw4);=0D } else if (rt->rt_gw_family =3D=3D 10) {=0D neigh =3D ip_neigh_gw6(dev, &rt->rt_gw6);=0D *is_v6gw =3D true;=0D } else {=0D neigh =3D ip_neigh_gw4(dev, ip_hdr(skb)->daddr);=0D }=0D return neigh;=0D }=0D # 10 "./include/net/lwtunnel.h" 2=0D # 19 "./include/net/lwtunnel.h"=0D enum {=0D LWTUNNEL_XMIT_DONE,=0D LWTUNNEL_XMIT_CONTINUE,=0D };=0D =0D =0D struct lwtunnel_state {=0D __u16 type;=0D __u16 flags;=0D __u16 headroom;=0D atomic_t refcnt;=0D int (*orig_output)(struct net *net, struct sock *sk, struct sk_buff *skb);= =0D int (*orig_input)(struct sk_buff *);=0D struct callback_head rcu;=0D __u8 data[];=0D };=0D =0D struct lwtunnel_encap_ops {=0D int (*build_state)(struct net *net, struct nlattr *encap,=0D unsigned int family, const void *cfg,=0D struct lwtunnel_state **ts,=0D struct netlink_ext_ack *extack);=0D void (*destroy_state)(struct lwtunnel_state *lws);=0D int (*output)(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int (*input)(struct sk_buff *skb);=0D int (*fill_encap)(struct sk_buff *skb,=0D struct lwtunnel_state *lwtstate);=0D int (*get_encap_size)(struct lwtunnel_state *lwtstate);=0D int (*cmp_encap)(struct lwtunnel_state *a, struct lwtunnel_state *b);=0D int (*xmit)(struct sk_buff *skb);=0D =0D struct module *owner;=0D };=0D # 148 "./include/net/lwtunnel.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lwtstate_free(struct lw= tunnel_state *lws)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lwtunnel_state *=0D lwtstate_get(struct lwtunnel_state *lws)=0D {=0D return lws;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lwtstate_put(struct lwt= unnel_state *lws)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lwtunnel_output_redirec= t(struct lwtunnel_state *lwtstate)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lwtunnel_input_redirect= (struct lwtunnel_state *lwtstate)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lwtunnel_xmit_redirect(= struct lwtunnel_state *lwtstate)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void lwtunnel_set_redirect(s= truct dst_entry *dst)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int lwtunnel_headro= om(struct lwtunnel_state *lwtstate,=0D unsigned int mtu)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_encap_add_ops(c= onst struct lwtunnel_encap_ops *op,=0D unsigned int num)=0D {=0D return -95;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_encap_del_ops(c= onst struct lwtunnel_encap_ops *op,=0D unsigned int num)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_valid_encap_typ= e(u16 encap_type,=0D struct netlink_ext_ack *extack)=0D {=0D do { static const char __msg[] =3D "CONFIG_LWTUNNEL is not enabled in this= kernel"; struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_e= xtack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D return -95;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_valid_encap_typ= e_attr(struct nlattr *attr, int len,=0D struct netlink_ext_ack *extack)=0D {=0D =0D =0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_build_state(str= uct net *net, u16 encap_type,=0D struct nlattr *encap,=0D unsigned int family, const void *cfg,=0D struct lwtunnel_state **lws,=0D struct netlink_ext_ack *extack)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_fill_encap(stru= ct sk_buff *skb,=0D struct lwtunnel_state *lwtstate,=0D int encap_attr, int encap_type_attr)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_get_encap_size(= struct lwtunnel_state *lwtstate)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct lwtunnel_state *lwtun= nel_state_alloc(int hdr_len)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_cmp_encap(struc= t lwtunnel_state *a,=0D struct lwtunnel_state *b)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_output(struct n= et *net, struct sock *sk, struct sk_buff *skb)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_input(struct sk= _buff *skb)=0D {=0D return -95;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int lwtunnel_xmit(struct sk_= buff *skb)=0D {=0D return -95;=0D }=0D # 27 "./include/net/ip6_route.h" 2=0D =0D =0D =0D # 1 "./include/net/nexthop.h" 1=0D # 22 "./include/net/nexthop.h"=0D struct nexthop;=0D =0D struct nh_config {=0D u32 nh_id;=0D =0D u8 nh_family;=0D u8 nh_protocol;=0D u8 nh_blackhole;=0D u8 nh_fdb;=0D u32 nh_flags;=0D =0D int nh_ifindex;=0D struct net_device *dev;=0D =0D union {=0D __be32 ipv4;=0D struct in6_addr ipv6;=0D } gw;=0D =0D struct nlattr *nh_grp;=0D u16 nh_grp_type;=0D u16 nh_grp_res_num_buckets;=0D unsigned long nh_grp_res_idle_timer;=0D unsigned long nh_grp_res_unbalanced_timer;=0D bool nh_grp_res_has_num_buckets;=0D bool nh_grp_res_has_idle_timer;=0D bool nh_grp_res_has_unbalanced_timer;=0D =0D struct nlattr *nh_encap;=0D u16 nh_encap_type;=0D =0D u32 nlflags;=0D struct nl_info nlinfo;=0D };=0D =0D struct nh_info {=0D struct hlist_node dev_hash;=0D struct nexthop *nh_parent;=0D =0D u8 family;=0D bool reject_nh;=0D bool fdb_nh;=0D =0D union {=0D struct fib_nh_common fib_nhc;=0D struct fib_nh fib_nh;=0D struct fib6_nh fib6_nh;=0D };=0D };=0D =0D struct nh_res_bucket {=0D struct nh_grp_entry *nh_entry;=0D atomic_long_t used_time;=0D unsigned long migrated_time;=0D bool occupied;=0D u8 nh_flags;=0D };=0D =0D struct nh_res_table {=0D struct net *net;=0D u32 nhg_id;=0D struct delayed_work upkeep_dw;=0D =0D =0D =0D =0D struct list_head uw_nh_entries;=0D unsigned long unbalanced_since;=0D =0D u32 idle_timer;=0D u32 unbalanced_timer;=0D =0D u16 num_nh_buckets;=0D struct nh_res_bucket nh_buckets[];=0D };=0D =0D struct nh_grp_entry {=0D struct nexthop *nh;=0D u8 weight;=0D =0D union {=0D struct {=0D atomic_t upper_bound;=0D } hthr;=0D struct {=0D =0D struct list_head uw_nh_entry;=0D =0D u16 count_buckets;=0D u16 wants_buckets;=0D } res;=0D };=0D =0D struct list_head nh_list;=0D struct nexthop *nh_parent;=0D };=0D =0D struct nh_group {=0D struct nh_group *spare;=0D u16 num_nh;=0D bool is_multipath;=0D bool hash_threshold;=0D bool resilient;=0D bool fdb_nh;=0D bool has_v4;=0D =0D struct nh_res_table *res_table;=0D struct nh_grp_entry nh_entries[];=0D };=0D =0D struct nexthop {=0D struct rb_node rb_node;=0D struct list_head fi_list;=0D struct list_head f6i_list;=0D struct list_head fdb_list;=0D struct list_head grp_list;=0D struct net *net;=0D =0D u32 id;=0D =0D u8 protocol;=0D u8 nh_flags;=0D bool is_group;=0D =0D refcount_t refcnt;=0D struct callback_head rcu;=0D =0D union {=0D struct nh_info *nh_info;=0D struct nh_group *nh_grp;=0D };=0D };=0D =0D enum nexthop_event_type {=0D NEXTHOP_EVENT_DEL,=0D NEXTHOP_EVENT_REPLACE,=0D NEXTHOP_EVENT_RES_TABLE_PRE_REPLACE,=0D NEXTHOP_EVENT_BUCKET_REPLACE,=0D };=0D =0D enum nh_notifier_info_type {=0D NH_NOTIFIER_INFO_TYPE_SINGLE,=0D NH_NOTIFIER_INFO_TYPE_GRP,=0D NH_NOTIFIER_INFO_TYPE_RES_TABLE,=0D NH_NOTIFIER_INFO_TYPE_RES_BUCKET,=0D };=0D =0D struct nh_notifier_single_info {=0D struct net_device *dev;=0D u8 gw_family;=0D union {=0D __be32 ipv4;=0D struct in6_addr ipv6;=0D };=0D u8 is_reject:1,=0D is_fdb:1,=0D has_encap:1;=0D };=0D =0D struct nh_notifier_grp_entry_info {=0D u8 weight;=0D u32 id;=0D struct nh_notifier_single_info nh;=0D };=0D =0D struct nh_notifier_grp_info {=0D u16 num_nh;=0D bool is_fdb;=0D struct nh_notifier_grp_entry_info nh_entries[];=0D };=0D =0D struct nh_notifier_res_bucket_info {=0D u16 bucket_index;=0D unsigned int idle_timer_ms;=0D bool force;=0D struct nh_notifier_single_info old_nh;=0D struct nh_notifier_single_info new_nh;=0D };=0D =0D struct nh_notifier_res_table_info {=0D u16 num_nh_buckets;=0D struct nh_notifier_single_info nhs[];=0D };=0D =0D struct nh_notifier_info {=0D struct net *net;=0D struct netlink_ext_ack *extack;=0D u32 id;=0D enum nh_notifier_info_type type;=0D union {=0D struct nh_notifier_single_info *nh;=0D struct nh_notifier_grp_info *nh_grp;=0D struct nh_notifier_res_table_info *nh_res_table;=0D struct nh_notifier_res_bucket_info *nh_res_bucket;=0D };=0D };=0D =0D int register_nexthop_notifier(struct net *net, struct notifier_block *nb,=0D struct netlink_ext_ack *extack);=0D int unregister_nexthop_notifier(struct net *net, struct notifier_block *nb)= ;=0D void nexthop_set_hw_flags(struct net *net, u32 id, bool offload, bool trap)= ;=0D void nexthop_bucket_set_hw_flags(struct net *net, u32 id, u16 bucket_index,= =0D bool offload, bool trap);=0D void nexthop_res_grp_activity_update(struct net *net, u32 id, u16 num_bucke= ts,=0D unsigned long *activity);=0D =0D =0D struct nexthop *nexthop_find_by_id(struct net *net, u32 id);=0D void nexthop_free_rcu(struct callback_head *head);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_get(struct next= hop *nh)=0D {=0D return refcount_inc_not_zero(&nh->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nexthop_put(struct next= hop *nh)=0D {=0D if (refcount_dec_and_test(&nh->refcnt))=0D call_rcu(&nh->rcu, nexthop_free_rcu);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_cmp(const struc= t nexthop *nh1,=0D const struct nexthop *nh2)=0D {=0D return nh1 =3D=3D nh2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_is_fdb(const st= ruct nexthop *nh)=0D {=0D if (nh->is_group) {=0D const struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu474 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_475(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_475(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu474)); });=0D return nh_grp->fdb_nh;=0D } else {=0D const struct nh_info *nhi;=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu476 =3D (typeof(*(nh->n= h_info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_477(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || size= of((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D size= of(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_inf= o)) =3D=3D sizeof(long long))) __compiletime_assert_477(); } while (0); (*(= const volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned ch= ar: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigne= d short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, si= gned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sig= ned long)0, unsigned long long: (unsigned long long)0, signed long long: (s= igned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do {= } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((= typeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu476)); });=0D return nhi->fdb_nh;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_has_v4(const st= ruct nexthop *nh)=0D {=0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu478 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_479(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_479(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu478)); });=0D return nh_grp->has_v4;=0D }=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_is_multipath(co= nst struct nexthop *nh)=0D {=0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu480 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_481(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_481(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu480)); });=0D return nh_grp->is_multipath;=0D }=0D return false;=0D }=0D =0D struct nexthop *nexthop_select_path(struct nexthop *nh, int hash);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int nexthop_num_pat= h(const struct nexthop *nh)=0D {=0D unsigned int rc =3D 1;=0D =0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu482 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_483(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_483(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu482)); });=0D if (nh_grp->is_multipath)=0D rc =3D nh_grp->num_nh;=0D }=0D =0D return rc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct nexthop *nexthop_mpath_select(const struct nh_group *nhg, int nhsel)= =0D {=0D =0D =0D =0D if (nhsel >=3D nhg->num_nh)=0D return ((void *)0);=0D =0D return nhg->nh_entries[nhsel].nh;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int nexthop_mpath_fill_node(struct sk_buff *skb, struct nexthop *nh,=0D u8 rt_family)=0D {=0D struct nh_group *nhg =3D ({ do { } while (0 && (!((lockdep_rtnl_is_held())= ))); ; ((typeof(*(nh->nh_grp)) *)((nh->nh_grp))); });=0D int i;=0D =0D for (i =3D 0; i < nhg->num_nh; i++) {=0D struct nexthop *nhe =3D nhg->nh_entries[i].nh;=0D struct nh_info *nhi =3D ({ typeof(*(nhe->nh_info)) *__UNIQUE_ID_rcu484 = =3D (typeof(*(nhe->nh_info)) *)({ do { __attribute__((__noreturn__)) extern= void __compiletime_assert_485(void) ; if (!((sizeof((nhe->nh_info)) =3D=3D= sizeof(char) || sizeof((nhe->nh_info)) =3D=3D sizeof(short) || sizeof((nhe= ->nh_info)) =3D=3D sizeof(int) || sizeof((nhe->nh_info)) =3D=3D sizeof(long= )) || sizeof((nhe->nh_info)) =3D=3D sizeof(long long))) __compiletime_asser= t_485(); } while (0); (*(const volatile typeof( _Generic(((nhe->nh_info)), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: ((nhe->nh_info)))) *)= &((nhe->nh_info))); }); do { } while (0 && (!((lockdep_rtnl_is_held()) || r= cu_read_lock_held()))); ; ((typeof(*(nhe->nh_info)) *)(__UNIQUE_ID_rcu484))= ; });=0D struct fib_nh_common *nhc =3D &nhi->fib_nhc;=0D int weight =3D nhg->nh_entries[i].weight;=0D =0D if (fib_add_nexthop(skb, nhc, weight, rt_family, 0) < 0)=0D return -90;=0D }=0D =0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_is_blackhole(co= nst struct nexthop *nh)=0D {=0D const struct nh_info *nhi;=0D =0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu486 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_487(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_487(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu486)); });=0D if (nh_grp->num_nh > 1)=0D return false;=0D =0D nh =3D nh_grp->nh_entries[0].nh;=0D }=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu488 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_489(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_489(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((t= ypeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu488)); });=0D return nhi->reject_nh;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nexthop_path_fib_result= (struct fib_result *res, int hash)=0D {=0D struct nh_info *nhi;=0D struct nexthop *nh;=0D =0D nh =3D nexthop_select_path(res->fi->nh, hash);=0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu490 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_491(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_491(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->nh_info))= *)(__UNIQUE_ID_rcu490)); });=0D res->nhc =3D &nhi->fib_nhc;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct fib_nh_common *nexthop_fib_nhc(struct nexthop *nh, int nhsel)=0D {=0D struct nh_info *nhi;=0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_492(vo= id) ; if (!(!(__builtin_offsetof(struct fib_nh, nh_common) !=3D 0))) __comp= iletime_assert_492(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_493(vo= id) ; if (!(!(__builtin_offsetof(struct fib6_nh, nh_common) !=3D 0))) __com= piletime_assert_493(); } while (0);=0D =0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu494 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_495(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_495(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu494)); });=0D if (nh_grp->is_multipath) {=0D nh =3D nexthop_mpath_select(nh_grp, nhsel);=0D if (!nh)=0D return ((void *)0);=0D }=0D }=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu496 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_497(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_497(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((t= ypeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu496)); });=0D return &nhi->fib_nhc;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct fib_nh_common *nexthop_get_nhc_lookup(const struct nexthop *nh,=0D int fib_flags,=0D const struct flowi4 *flp,=0D int *nhsel)=0D {=0D struct nh_info *nhi;=0D =0D if (nh->is_group) {=0D struct nh_group *nhg =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu498 =3D= (typeof(*(nh->nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_499(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof= (char) || sizeof((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp))= =3D=3D sizeof(int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof(= (nh->nh_grp)) =3D=3D sizeof(long long))) __compiletime_assert_499(); } whil= e (0); (*(const volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, un= signed char: (unsigned char)0, signed char: (signed char)0, unsigned short:= (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned = int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed l= ong: (signed long)0, unsigned long long: (unsigned long long)0, signed long= long: (signed long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }= ); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->n= h_grp)) *)(__UNIQUE_ID_rcu498)); });=0D int i;=0D =0D for (i =3D 0; i < nhg->num_nh; i++) {=0D struct nexthop *nhe =3D nhg->nh_entries[i].nh;=0D =0D nhi =3D ({ typeof(*(nhe->nh_info)) *__UNIQUE_ID_rcu500 =3D (typeof(*(nhe= ->nh_info)) *)({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_501(void) ; if (!((sizeof((nhe->nh_info)) =3D=3D sizeof(char) || = sizeof((nhe->nh_info)) =3D=3D sizeof(short) || sizeof((nhe->nh_info)) =3D= =3D sizeof(int) || sizeof((nhe->nh_info)) =3D=3D sizeof(long)) || sizeof((n= he->nh_info)) =3D=3D sizeof(long long))) __compiletime_assert_501(); } whil= e (0); (*(const volatile typeof( _Generic(((nhe->nh_info)), char: (char)0, = unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned shor= t: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigne= d int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed= long: (signed long)0, unsigned long long: (unsigned long long)0, signed lo= ng long: (signed long long)0, default: ((nhe->nh_info)))) *)&((nhe->nh_info= ))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*= (nhe->nh_info)) *)(__UNIQUE_ID_rcu500)); });=0D if (fib_lookup_good_nhc(&nhi->fib_nhc, fib_flags, flp)) {=0D *nhsel =3D i;=0D return &nhi->fib_nhc;=0D }=0D }=0D } else {=0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu502 =3D (typeof(*(nh->n= h_info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_503(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || size= of((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D size= of(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_inf= o)) =3D=3D sizeof(long long))) __compiletime_assert_503(); } while (0); (*(= const volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned ch= ar: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigne= d short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, si= gned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sig= ned long)0, unsigned long long: (unsigned long long)0, signed long long: (s= igned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do {= } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->nh_info)= ) *)(__UNIQUE_ID_rcu502)); });=0D if (fib_lookup_good_nhc(&nhi->fib_nhc, fib_flags, flp)) {=0D *nhsel =3D 0;=0D return &nhi->fib_nhc;=0D }=0D }=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nexthop_uses_dev(const = struct nexthop *nh,=0D const struct net_device *dev)=0D {=0D struct nh_info *nhi;=0D =0D if (nh->is_group) {=0D struct nh_group *nhg =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu504 =3D= (typeof(*(nh->nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_505(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof= (char) || sizeof((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp))= =3D=3D sizeof(int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof(= (nh->nh_grp)) =3D=3D sizeof(long long))) __compiletime_assert_505(); } whil= e (0); (*(const volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, un= signed char: (unsigned char)0, signed char: (signed char)0, unsigned short:= (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned = int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed l= ong: (signed long)0, unsigned long long: (unsigned long long)0, signed long= long: (signed long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }= ); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->n= h_grp)) *)(__UNIQUE_ID_rcu504)); });=0D int i;=0D =0D for (i =3D 0; i < nhg->num_nh; i++) {=0D struct nexthop *nhe =3D nhg->nh_entries[i].nh;=0D =0D nhi =3D ({ typeof(*(nhe->nh_info)) *__UNIQUE_ID_rcu506 =3D (typeof(*(nhe= ->nh_info)) *)({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_507(void) ; if (!((sizeof((nhe->nh_info)) =3D=3D sizeof(char) || = sizeof((nhe->nh_info)) =3D=3D sizeof(short) || sizeof((nhe->nh_info)) =3D= =3D sizeof(int) || sizeof((nhe->nh_info)) =3D=3D sizeof(long)) || sizeof((n= he->nh_info)) =3D=3D sizeof(long long))) __compiletime_assert_507(); } whil= e (0); (*(const volatile typeof( _Generic(((nhe->nh_info)), char: (char)0, = unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned shor= t: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigne= d int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed= long: (signed long)0, unsigned long long: (unsigned long long)0, signed lo= ng long: (signed long long)0, default: ((nhe->nh_info)))) *)&((nhe->nh_info= ))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*= (nhe->nh_info)) *)(__UNIQUE_ID_rcu506)); });=0D if (nhc_l3mdev_matches_dev(&nhi->fib_nhc, dev))=0D return true;=0D }=0D } else {=0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu508 =3D (typeof(*(nh->n= h_info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_509(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || size= of((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D size= of(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_inf= o)) =3D=3D sizeof(long long))) __compiletime_assert_509(); } while (0); (*(= const volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned ch= ar: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigne= d short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, si= gned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sig= ned long)0, unsigned long long: (unsigned long long)0, signed long long: (s= igned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do {= } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->nh_info)= ) *)(__UNIQUE_ID_rcu508)); });=0D if (nhc_l3mdev_matches_dev(&nhi->fib_nhc, dev))=0D return true;=0D }=0D =0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int fib_info_num_pa= th(const struct fib_info *fi)=0D {=0D if (__builtin_expect(!!(fi->nh), 0))=0D return nexthop_num_path(fi->nh);=0D =0D return fi->fib_nhs;=0D }=0D =0D int fib_check_nexthop(struct nexthop *nh, u8 scope,=0D struct netlink_ext_ack *extack);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib_nh_common *fib_in= fo_nhc(struct fib_info *fi, int nhsel)=0D {=0D if (__builtin_expect(!!(fi->nh), 0))=0D return nexthop_fib_nhc(fi->nh, nhsel);=0D =0D return &fi->fib_nh[nhsel].nh_common;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib_nh *fib_info_nh(s= truct fib_info *fi, int nhsel)=0D {=0D ({ int __ret_warn_on =3D !!(fi->nh); if (__builtin_expect(!!(__ret_warn_on= ), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_= table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n= \t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection"= : : "i" ("include/net/nexthop.h"), "i" (468), "i" ((1 << 0)|(((9) << 8))),= "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_wa= rn_on), 0); });=0D =0D return &fi->fib_nh[nhsel];=0D }=0D =0D =0D =0D =0D int fib6_check_nexthop(struct nexthop *nh, struct fib6_config *cfg,=0D struct netlink_ext_ack *extack);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib6_nh *nexthop_fib6= _nh(struct nexthop *nh)=0D {=0D struct nh_info *nhi;=0D =0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu510 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_511(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_511(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(= *(nh->nh_grp)) *)(__UNIQUE_ID_rcu510)); });=0D nh =3D nexthop_mpath_select(nh_grp, 0);=0D if (!nh)=0D return ((void *)0);=0D }=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu512 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_513(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_513(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((t= ypeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu512)); });=0D if (nhi->family =3D=3D 10)=0D return &nhi->fib6_nh;=0D =0D return ((void *)0);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib6_nh *nexthop_fib6= _nh_bh(struct nexthop *nh)=0D {=0D struct nh_info *nhi;=0D =0D if (nh->is_group) {=0D struct nh_group *nh_grp;=0D =0D nh_grp =3D ({ typeof(*(nh->nh_grp)) *__UNIQUE_ID_rcu514 =3D (typeof(*(nh-= >nh_grp)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_515(void) ; if (!((sizeof((nh->nh_grp)) =3D=3D sizeof(char) || size= of((nh->nh_grp)) =3D=3D sizeof(short) || sizeof((nh->nh_grp)) =3D=3D sizeof= (int) || sizeof((nh->nh_grp)) =3D=3D sizeof(long)) || sizeof((nh->nh_grp)) = =3D=3D sizeof(long long))) __compiletime_assert_515(); } while (0); (*(cons= t volatile typeof( _Generic(((nh->nh_grp)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: ((nh->nh_grp)))) *)&((nh->nh_grp))); }); do { } whil= e (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_bh_held()))); ; ((type= of(*(nh->nh_grp)) *)(__UNIQUE_ID_rcu514)); });=0D nh =3D nexthop_mpath_select(nh_grp, 0);=0D if (!nh)=0D return ((void *)0);=0D }=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu516 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_517(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_517(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_bh_held()))); ; = ((typeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu516)); });=0D if (nhi->family =3D=3D 10)=0D return &nhi->fib6_nh;=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *fib6_info= _nh_dev(struct fib6_info *f6i)=0D {=0D struct fib6_nh *fib6_nh;=0D =0D fib6_nh =3D f6i->nh ? nexthop_fib6_nh(f6i->nh) : f6i->fib6_nh;=0D return fib6_nh->nh_common.nhc_dev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void nexthop_path_fib6_resul= t(struct fib6_result *res, int hash)=0D {=0D struct nexthop *nh =3D res->f6i->nh;=0D struct nh_info *nhi;=0D =0D nh =3D nexthop_select_path(nh, hash);=0D =0D nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu518 =3D (typeof(*(nh->nh= _info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_519(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeof(char) || sizeo= f((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_info)) =3D=3D sizeo= f(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || sizeof((nh->nh_info= )) =3D=3D sizeof(long long))) __compiletime_assert_519(); } while (0); (*(c= onst volatile typeof( _Generic(((nh->nh_info)), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: ((nh->nh_info)))) *)&((nh->nh_info))); }); do { = } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((t= ypeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu518)); });=0D if (nhi->reject_nh) {=0D res->fib6_type =3D RTN_BLACKHOLE;=0D res->fib6_flags |=3D 0x0200;=0D res->nh =3D nexthop_fib6_nh(nh);=0D } else {=0D res->nh =3D &nhi->fib6_nh;=0D }=0D }=0D =0D int nexthop_for_each_fib6_nh(struct nexthop *nh,=0D int (*cb)(struct fib6_nh *nh, void *arg),=0D void *arg);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int nexthop_get_family(struc= t nexthop *nh)=0D {=0D struct nh_info *nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu520 =3D = (typeof(*(nh->nh_info)) *)({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_521(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeo= f(char) || sizeof((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_inf= o)) =3D=3D sizeof(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || siz= eof((nh->nh_info)) =3D=3D sizeof(long long))) __compiletime_assert_521(); }= while (0); (*(const volatile typeof( _Generic(((nh->nh_info)), char: (char= )0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned = short: (unsigned short)0, signed short: (signed short)0, unsigned int: (uns= igned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, si= gned long: (signed long)0, unsigned long long: (unsigned long long)0, signe= d long long: (signed long long)0, default: ((nh->nh_info)))) *)&((nh->nh_in= fo))); }); do { } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_= held()))); ; ((typeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu520)); });=0D =0D return nhi->family;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct fib_nh_common *nexthop_fdb_nhc(struct nexthop *nh)=0D {=0D struct nh_info *nhi =3D ({ typeof(*(nh->nh_info)) *__UNIQUE_ID_rcu522 =3D = (typeof(*(nh->nh_info)) *)({ do { __attribute__((__noreturn__)) extern void= __compiletime_assert_523(void) ; if (!((sizeof((nh->nh_info)) =3D=3D sizeo= f(char) || sizeof((nh->nh_info)) =3D=3D sizeof(short) || sizeof((nh->nh_inf= o)) =3D=3D sizeof(int) || sizeof((nh->nh_info)) =3D=3D sizeof(long)) || siz= eof((nh->nh_info)) =3D=3D sizeof(long long))) __compiletime_assert_523(); }= while (0); (*(const volatile typeof( _Generic(((nh->nh_info)), char: (char= )0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned = short: (unsigned short)0, signed short: (signed short)0, unsigned int: (uns= igned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, si= gned long: (signed long)0, unsigned long long: (unsigned long long)0, signe= d long long: (signed long long)0, default: ((nh->nh_info)))) *)&((nh->nh_in= fo))); }); do { } while (0 && (!((lockdep_rtnl_is_held()) || rcu_read_lock_= held()))); ; ((typeof(*(nh->nh_info)) *)(__UNIQUE_ID_rcu522)); });=0D =0D return &nhi->fib_nhc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct fib_nh_common *nextho= p_path_fdb_result(struct nexthop *nh,=0D int hash)=0D {=0D struct nh_info *nhi;=0D struct nexthop *nhp;=0D =0D nhp =3D nexthop_select_path(nh, hash);=0D if (__builtin_expect(!!(!nhp), 0))=0D return ((void *)0);=0D nhi =3D ({ typeof(*(nhp->nh_info)) *__UNIQUE_ID_rcu524 =3D (typeof(*(nhp->= nh_info)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_525(void) ; if (!((sizeof((nhp->nh_info)) =3D=3D sizeof(char) || si= zeof((nhp->nh_info)) =3D=3D sizeof(short) || sizeof((nhp->nh_info)) =3D=3D = sizeof(int) || sizeof((nhp->nh_info)) =3D=3D sizeof(long)) || sizeof((nhp->= nh_info)) =3D=3D sizeof(long long))) __compiletime_assert_525(); } while (0= ); (*(const volatile typeof( _Generic(((nhp->nh_info)), char: (char)0, unsi= gned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (= unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned in= t)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lon= g: (signed long)0, unsigned long long: (unsigned long long)0, signed long l= ong: (signed long long)0, default: ((nhp->nh_info)))) *)&((nhp->nh_info)));= }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nhp= ->nh_info)) *)(__UNIQUE_ID_rcu524)); });=0D return &nhi->fib_nhc;=0D }=0D # 31 "./include/net/ip6_route.h" 2=0D # 54 "./include/net/ip6_route.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rt6_srcprefs2flags(unsig= ned int srcprefs)=0D {=0D =0D return srcprefs << 3;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int rt6_flags2srcpr= efs(int flags)=0D {=0D return (flags >> 3) & 7;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt6_need_strict(const s= truct in6_addr *daddr)=0D {=0D return ipv6_addr_type(daddr) &=0D (0x0002U | 0x0020U | 0x0010U);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt6_qualify_for_ecmp(co= nst struct fib6_info *f6i)=0D {=0D =0D return !(f6i->fib6_flags & 0x00040000) && !f6i->nh &&=0D f6i->fib6_nh->nh_common.nhc_gw_family;=0D }=0D =0D void ip6_route_input(struct sk_buff *skb);=0D struct dst_entry *ip6_route_input_lookup(struct net *net,=0D struct net_device *dev,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb, int flags);=0D =0D struct dst_entry *ip6_route_output_flags_noref(struct net *net,=0D const struct sock *sk,=0D struct flowi6 *fl6, int flags);=0D =0D struct dst_entry *ip6_route_output_flags(struct net *net, const struct sock= *sk,=0D struct flowi6 *fl6, int flags);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *ip6_route_= output(struct net *net,=0D const struct sock *sk,=0D struct flowi6 *fl6)=0D {=0D return ip6_route_output_flags(net, sk, fl6, 0);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_rt_put_flags(struct= rt6_info *rt, int flags)=0D {=0D if (!(flags & 0x00000080) ||=0D !list_empty(&rt->rt6i_uncached))=0D ip6_rt_put(rt);=0D }=0D =0D struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6,=0D const struct sk_buff *skb, int flags);=0D struct rt6_info *ip6_pol_route(struct net *net, struct fib6_table *table,=0D int ifindex, struct flowi6 *fl6,=0D const struct sk_buff *skb, int flags);=0D =0D void ip6_route_init_special_entries(void);=0D int ip6_route_init(void);=0D void ip6_route_cleanup(void);=0D =0D int ipv6_route_ioctl(struct net *net, unsigned int cmd,=0D struct in6_rtmsg *rtmsg);=0D =0D int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack);=0D int ip6_ins_rt(struct net *net, struct fib6_info *f6i);=0D int ip6_del_rt(struct net *net, struct fib6_info *f6i, bool skip_notify);=0D =0D void rt6_flush_exceptions(struct fib6_info *f6i);=0D void rt6_age_exceptions(struct fib6_info *f6i, struct fib6_gc_args *gc_args= ,=0D unsigned long now);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip6_route_get_saddr(stru= ct net *net, struct fib6_info *f6i,=0D const struct in6_addr *daddr,=0D unsigned int prefs,=0D struct in6_addr *saddr)=0D {=0D int err =3D 0;=0D =0D if (f6i && f6i->fib6_prefsrc.plen) {=0D *saddr =3D f6i->fib6_prefsrc.addr;=0D } else {=0D struct net_device *dev =3D f6i ? fib6_info_nh_dev(f6i) : ((void *)0);=0D =0D err =3D ipv6_dev_get_saddr(net, dev, daddr, prefs, saddr);=0D }=0D =0D return err;=0D }=0D =0D struct rt6_info *rt6_lookup(struct net *net, const struct in6_addr *daddr,= =0D const struct in6_addr *saddr, int oif,=0D const struct sk_buff *skb, int flags);=0D u32 rt6_multipath_hash(const struct net *net, const struct flowi6 *fl6,=0D const struct sk_buff *skb, struct flow_keys *hkeys);=0D =0D struct dst_entry *icmp6_dst_alloc(struct net_device *dev, struct flowi6 *fl= 6);=0D =0D void fib6_force_start_gc(struct net *net);=0D =0D struct fib6_info *addrconf_f6i_alloc(struct net *net, struct inet6_dev *ide= v,=0D const struct in6_addr *addr, bool anycast,=0D gfp_t gfp_flags);=0D =0D struct rt6_info *ip6_dst_alloc(struct net *net, struct net_device *dev,=0D int flags);=0D =0D =0D =0D =0D =0D struct fib6_info *rt6_get_dflt_router(struct net *net,=0D const struct in6_addr *addr,=0D struct net_device *dev);=0D struct fib6_info *rt6_add_dflt_router(struct net *net,=0D const struct in6_addr *gwaddr,=0D struct net_device *dev, unsigned int pref,=0D u32 defrtr_usr_metric);=0D =0D void rt6_purge_dflt_routers(struct net *net);=0D =0D int rt6_route_rcv(struct net_device *dev, u8 *opt, int len,=0D const struct in6_addr *gwaddr);=0D =0D void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu, int = oif,=0D u32 mark, kuid_t uid);=0D void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu);= =0D void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark,= =0D kuid_t uid);=0D void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif);= =0D void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk);=0D =0D struct netlink_callback;=0D =0D struct rt6_rtnl_dump_arg {=0D struct sk_buff *skb;=0D struct netlink_callback *cb;=0D struct net *net;=0D struct fib_dump_filter filter;=0D };=0D =0D int rt6_dump_route(struct fib6_info *f6i, void *p_arg, unsigned int skip);= =0D void rt6_mtu_change(struct net_device *dev, unsigned int mtu);=0D void rt6_remove_prefsrc(struct inet6_ifaddr *ifp);=0D void rt6_clean_tohost(struct net *net, struct in6_addr *gateway);=0D void rt6_sync_up(struct net_device *dev, unsigned char nh_flags);=0D void rt6_disable_ip(struct net_device *dev, unsigned long event);=0D void rt6_sync_down_dev(struct net_device *dev, unsigned long event);=0D void rt6_multipath_rebalance(struct fib6_info *f6i);=0D =0D void rt6_uncached_list_add(struct rt6_info *rt);=0D void rt6_uncached_list_del(struct rt6_info *rt);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct rt6_info *skb_r= t6_info(const struct sk_buff *skb)=0D {=0D const struct dst_entry *dst =3D skb_dst(skb);=0D const struct rt6_info *rt6 =3D ((void *)0);=0D =0D if (dst)=0D rt6 =3D ({ void *__mptr =3D (void *)(dst); _Static_assert(__builtin_types= _compatible_p(typeof(*(dst)), typeof(((struct rt6_info *)0)->dst)) || __bui= ltin_types_compatible_p(typeof(*(dst)), typeof(void)), "pointer type mismat= ch in container_of()"); ((struct rt6_info *)(__mptr - __builtin_offsetof(st= ruct rt6_info, dst))); });=0D =0D return rt6;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip6_dst_store(struct so= ck *sk, struct dst_entry *dst,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D struct ipv6_pinfo *np =3D inet6_sk(sk);=0D =0D np->dst_cookie =3D rt6_get_cookie((struct rt6_info *)dst);=0D sk_setup_caps(sk, dst);=0D np->daddr_cache =3D daddr;=0D =0D =0D =0D }=0D =0D void ip6_sk_dst_store_flow(struct sock *sk, struct dst_entry *dst,=0D const struct flowi6 *fl6);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_unicast_destinatio= n(const struct sk_buff *skb)=0D {=0D struct rt6_info *rt =3D (struct rt6_info *) skb_dst(skb);=0D =0D return rt->rt6i_flags & 0x80000000;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv6_anycast_destinatio= n(const struct dst_entry *dst,=0D const struct in6_addr *daddr)=0D {=0D struct rt6_info *rt =3D (struct rt6_info *)dst;=0D =0D return rt->rt6i_flags & 0x00100000 ||=0D (rt->rt6i_dst.plen < 127 &&=0D !(rt->rt6i_flags & (0x0002 | 0x00200000)) &&=0D ipv6_addr_equal(&rt->rt6i_dst.addr, daddr));=0D }=0D =0D int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,=0D int (*output)(struct net *, struct sock *, struct sk_buff *));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip6_skb_dst_mtu= (const struct sk_buff *skb)=0D {=0D const struct ipv6_pinfo *np =3D skb->sk && !dev_recursion_level() ?=0D inet6_sk(skb->sk) : ((void *)0);=0D const struct dst_entry *dst =3D skb_dst(skb);=0D unsigned int mtu;=0D =0D if (np && np->pmtudisc >=3D 3) {=0D mtu =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_526(void) ; if (!((sizeof(dst->dev->mtu) =3D=3D sizeof(char) || sizeo= f(dst->dev->mtu) =3D=3D sizeof(short) || sizeof(dst->dev->mtu) =3D=3D sizeo= f(int) || sizeof(dst->dev->mtu) =3D=3D sizeof(long)) || sizeof(dst->dev->mt= u) =3D=3D sizeof(long long))) __compiletime_assert_526(); } while (0); (*(c= onst volatile typeof( _Generic((dst->dev->mtu), char: (char)0, unsigned cha= r: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned= short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sig= ned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (sign= ed long)0, unsigned long long: (unsigned long long)0, signed long long: (si= gned long long)0, default: (dst->dev->mtu))) *)&(dst->dev->mtu)); });=0D mtu -=3D lwtunnel_headroom(dst->lwtstate, mtu);=0D } else {=0D mtu =3D dst_mtu(dst);=0D }=0D return mtu;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip6_sk_accept_pmtu(cons= t struct sock *sk)=0D {=0D return inet6_sk(sk)->pmtudisc !=3D 4 &&=0D inet6_sk(sk)->pmtudisc !=3D 5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip6_sk_ignore_df(const = struct sock *sk)=0D {=0D return inet6_sk(sk)->pmtudisc < 2 ||=0D inet6_sk(sk)->pmtudisc =3D=3D 5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct in6_addr *rt6_n= exthop(const struct rt6_info *rt,=0D const struct in6_addr *daddr)=0D {=0D if (rt->rt6i_flags & 0x0002)=0D return &rt->rt6i_gateway;=0D else if (__builtin_expect(!!(rt->rt6i_flags & 0x01000000), 0))=0D return &rt->rt6i_dst.addr;=0D else=0D return daddr;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rt6_duplicate_nexthop(s= truct fib6_info *a, struct fib6_info *b)=0D {=0D struct fib6_nh *nha, *nhb;=0D =0D if (a->nh || b->nh)=0D return nexthop_cmp(a->nh, b->nh);=0D =0D nha =3D a->fib6_nh;=0D nhb =3D b->fib6_nh;=0D return nha->nh_common.nhc_dev =3D=3D nhb->nh_common.nhc_dev &&=0D ipv6_addr_equal(&nha->nh_common.nhc_gw.ipv6, &nhb->nh_common.nhc_gw= =2Eipv6) &&=0D !lwtunnel_cmp_encap(nha->nh_common.nhc_lwtstate, nhb->nh_common.nhc= _lwtstate);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip6_dst_mtu_may= be_forward(const struct dst_entry *dst,=0D bool forwarding)=0D {=0D struct inet6_dev *idev;=0D unsigned int mtu;=0D =0D if (!forwarding || dst_metric_locked(dst, RTAX_MTU)) {=0D mtu =3D dst_metric_raw(dst, RTAX_MTU);=0D if (mtu)=0D goto out;=0D }=0D =0D mtu =3D 1280;=0D rcu_read_lock();=0D idev =3D __in6_dev_get(dst->dev);=0D if (idev)=0D mtu =3D idev->cnf.mtu6;=0D rcu_read_unlock();=0D =0D out:=0D return mtu - lwtunnel_headroom(dst->lwtstate, mtu);=0D }=0D =0D u32 ip6_mtu_from_fib6(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D =0D struct neighbour *ip6_neigh_lookup(const struct in6_addr *gw,=0D struct net_device *dev, struct sk_buff *skb,=0D const void *daddr);=0D # 50 "net/ipv6/route.c" 2=0D =0D =0D # 1 "./include/net/tcp.h" 1=0D # 32 "./include/net/tcp.h"=0D # 1 "./include/net/inet_hashtables.h" 1=0D # 38 "./include/net/inet_hashtables.h"=0D struct inet_ehash_bucket {=0D struct hlist_nulls_head chain;=0D };=0D # 76 "./include/net/inet_hashtables.h"=0D struct inet_bind_bucket {=0D possible_net_t ib_net;=0D int l3mdev;=0D unsigned short port;=0D signed char fastreuse;=0D signed char fastreuseport;=0D kuid_t fastuid;=0D =0D struct in6_addr fast_v6_rcv_saddr;=0D =0D __be32 fast_rcv_saddr;=0D unsigned short fast_sk_family;=0D bool fast_ipv6_only;=0D struct hlist_node node;=0D struct hlist_head owners;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *ib_net(struct in= et_bind_bucket *ib)=0D {=0D return read_pnet(&ib->ib_net);=0D }=0D =0D =0D =0D =0D struct inet_bind_hashbucket {=0D spinlock_t lock;=0D struct hlist_head chain;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct inet_listen_hashbucket {=0D spinlock_t lock;=0D unsigned int count;=0D union {=0D struct hlist_head head;=0D struct hlist_nulls_head nulls_head;=0D };=0D };=0D =0D =0D =0D =0D struct inet_hashinfo {=0D =0D =0D =0D =0D =0D =0D struct inet_ehash_bucket *ehash;=0D spinlock_t *ehash_locks;=0D unsigned int ehash_mask;=0D unsigned int ehash_locks_mask;=0D =0D =0D =0D =0D struct kmem_cache *bind_bucket_cachep;=0D struct inet_bind_hashbucket *bhash;=0D unsigned int bhash_size;=0D =0D =0D unsigned int lhash2_mask;=0D struct inet_listen_hashbucket *lhash2;=0D # 159 "./include/net/inet_hashtables.h"=0D struct inet_listen_hashbucket listening_hash[32]=0D __attribute__((__aligned__((1 << 6))));=0D };=0D # 172 "./include/net/inet_hashtables.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_listen_hashbucke= t *=0D inet_lhash2_bucket(struct inet_hashinfo *h, u32 hash)=0D {=0D return &h->lhash2[hash & h->lhash2_mask];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct inet_ehash_bucket *in= et_ehash_bucket(=0D struct inet_hashinfo *hashinfo,=0D unsigned int hash)=0D {=0D return &hashinfo->ehash[hash & hashinfo->ehash_mask];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *inet_ehash_lockp= (=0D struct inet_hashinfo *hashinfo,=0D unsigned int hash)=0D {=0D return &hashinfo->ehash_locks[hash & hashinfo->ehash_locks_mask];=0D }=0D =0D int inet_ehash_locks_alloc(struct inet_hashinfo *hashinfo);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_hashinfo2_free_mod= (struct inet_hashinfo *h)=0D {=0D kfree(h->lhash2);=0D h->lhash2 =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_ehash_locks_free(s= truct inet_hashinfo *hashinfo)=0D {=0D kvfree(hashinfo->ehash_locks);=0D hashinfo->ehash_locks =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_sk_bound_dev_eq(st= ruct net *net, int bound_dev_if,=0D int dif, int sdif)=0D {=0D =0D =0D =0D =0D return inet_bound_dev_eq(true, bound_dev_if, dif, sdif);=0D =0D }=0D =0D struct inet_bind_bucket *=0D inet_bind_bucket_create(struct kmem_cache *cachep, struct net *net,=0D struct inet_bind_hashbucket *head,=0D const unsigned short snum, int l3mdev);=0D void inet_bind_bucket_destroy(struct kmem_cache *cachep,=0D struct inet_bind_bucket *tb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 inet_bhashfn(const struc= t net *net, const __u16 lport,=0D const u32 bhash_size)=0D {=0D return (lport + net_hash_mix(net)) & (bhash_size - 1);=0D }=0D =0D void inet_bind_hash(struct sock *sk, struct inet_bind_bucket *tb,=0D const unsigned short snum);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 inet_lhashfn(const struc= t net *net, const unsigned short num)=0D {=0D return (num + net_hash_mix(net)) & (32 - 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_sk_listen_hashfn(co= nst struct sock *sk)=0D {=0D return inet_lhashfn(sock_net(sk), inet_sk(sk)->sk.__sk_common.skc_num);=0D }=0D =0D =0D int __inet_inherit_port(const struct sock *sk, struct sock *child);=0D =0D void inet_put_port(struct sock *sk);=0D =0D void inet_hashinfo_init(struct inet_hashinfo *h);=0D void inet_hashinfo2_init(struct inet_hashinfo *h, const char *name,=0D unsigned long numentries, int scale,=0D unsigned long low_limit,=0D unsigned long high_limit);=0D int inet_hashinfo2_init_mod(struct inet_hashinfo *h);=0D =0D bool inet_ehash_insert(struct sock *sk, struct sock *osk, bool *found_dup_s= k);=0D bool inet_ehash_nolisten(struct sock *sk, struct sock *osk,=0D bool *found_dup_sk);=0D int __inet_hash(struct sock *sk, struct sock *osk);=0D int inet_hash(struct sock *sk);=0D void inet_unhash(struct sock *sk);=0D =0D struct sock *__inet_lookup_listener(struct net *net,=0D struct inet_hashinfo *hashinfo,=0D struct sk_buff *skb, int doff,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr,=0D const unsigned short hnum,=0D const int dif, const int sdif);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *inet_lookup_lis= tener(struct net *net,=0D struct inet_hashinfo *hashinfo,=0D struct sk_buff *skb, int doff,=0D __be32 saddr, __be16 sport,=0D __be32 daddr, __be16 dport, int dif, int sdif)=0D {=0D return __inet_lookup_listener(net, hashinfo, skb, doff, saddr, sport,=0D daddr, (__builtin_constant_p((__u16)(( __u16)(__be16)(dport))) ? = ((__u16)( (((__u16)(( __u16)(__be16)(dport)) & (__u16)0x00ffU) << 8) | (((_= _u16)(( __u16)(__be16)(dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u1= 6)(__be16)(dport))), dif, sdif);=0D }=0D # 332 "./include/net/inet_hashtables.h"=0D struct sock *__inet_lookup_established(struct net *net,=0D struct inet_hashinfo *hashinfo,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr, const u16 hnum,=0D const int dif, const int sdif);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *=0D inet_lookup_established(struct net *net, struct inet_hashinfo *hashinfo,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr, const __be16 dport,=0D const int dif)=0D {=0D return __inet_lookup_established(net, hashinfo, saddr, sport, daddr,=0D (__builtin_constant_p((__u16)(( __u16)(__be16)(dport))) ? ((__u16)( (= ((__u16)(( __u16)(__be16)(dport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u= 16)(__be16)(dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(= dport))), dif, 0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *__inet_lookup(s= truct net *net,=0D struct inet_hashinfo *hashinfo,=0D struct sk_buff *skb, int doff,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr, const __be16 dport,=0D const int dif, const int sdif,=0D bool *refcounted)=0D {=0D u16 hnum =3D (__builtin_constant_p((__u16)(( __u16)(__be16)(dport))) ? ((_= _u16)( (((__u16)(( __u16)(__be16)(dport)) & (__u16)0x00ffU) << 8) | (((__u1= 6)(( __u16)(__be16)(dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(= __be16)(dport)));=0D struct sock *sk;=0D =0D sk =3D __inet_lookup_established(net, hashinfo, saddr, sport,=0D daddr, hnum, dif, sdif);=0D *refcounted =3D true;=0D if (sk)=0D return sk;=0D *refcounted =3D false;=0D return __inet_lookup_listener(net, hashinfo, skb, doff, saddr,=0D sport, daddr, hnum, dif, sdif);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *inet_lookup(str= uct net *net,=0D struct inet_hashinfo *hashinfo,=0D struct sk_buff *skb, int doff,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr, const __be16 dport,=0D const int dif)=0D {=0D struct sock *sk;=0D bool refcounted;=0D =0D sk =3D __inet_lookup(net, hashinfo, skb, doff, saddr, sport, daddr,=0D dport, dif, 0, &refcounted);=0D =0D if (sk && !refcounted && !refcount_inc_not_zero(&sk->__sk_common.skc_refcn= t))=0D sk =3D ((void *)0);=0D return sk;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sock *__inet_lookup_s= kb(struct inet_hashinfo *hashinfo,=0D struct sk_buff *skb,=0D int doff,=0D const __be16 sport,=0D const __be16 dport,=0D const int sdif,=0D bool *refcounted)=0D {=0D struct sock *sk =3D skb_steal_sock(skb, refcounted);=0D const struct iphdr *iph =3D ip_hdr(skb);=0D =0D if (sk)=0D return sk;=0D =0D return __inet_lookup(dev_net(skb_dst(skb)->dev), hashinfo, skb,=0D doff, iph->saddr, sport,=0D iph->daddr, dport, inet_iif(skb), sdif,=0D refcounted);=0D }=0D =0D u32 inet6_ehashfn(const struct net *net,=0D const struct in6_addr *laddr, const u16 lport,=0D const struct in6_addr *faddr, const __be16 fport);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_daddr_set(struct soc= k *sk, __be32 addr)=0D {=0D sk->__sk_common.skc_daddr =3D addr;=0D =0D ipv6_addr_set_v4mapped(addr, &sk->__sk_common.skc_v6_daddr);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_rcv_saddr_set(struct= sock *sk, __be32 addr)=0D {=0D sk->__sk_common.skc_rcv_saddr =3D addr;=0D =0D ipv6_addr_set_v4mapped(addr, &sk->__sk_common.skc_v6_rcv_saddr);=0D =0D }=0D =0D int __inet_hash_connect(struct inet_timewait_death_row *death_row,=0D struct sock *sk, u64 port_offset,=0D int (*check_established)(struct inet_timewait_death_row *,=0D struct sock *, __u16,=0D struct inet_timewait_sock **));=0D =0D int inet_hash_connect(struct inet_timewait_death_row *death_row,=0D struct sock *sk);=0D # 33 "./include/net/tcp.h" 2=0D =0D =0D # 1 "./include/net/sock_reuseport.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/filter.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/bpf.h" 1=0D # 20 "./include/linux/bpf.h"=0D # 1 "./include/linux/kallsyms.h" 1=0D # 24 "./include/linux/kallsyms.h"=0D struct cred;=0D struct module;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_kernel_text(unsigned = long addr)=0D {=0D if (__is_kernel_text(addr))=0D return 1;=0D return in_gate_area_no_mm(addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_kernel(unsigned long = addr)=0D {=0D if (__is_kernel(addr))=0D return 1;=0D return in_gate_area_no_mm(addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_ksym_addr(unsigned lo= ng addr)=0D {=0D if (1)=0D return is_kernel(addr);=0D =0D return is_kernel_text(addr) || is_kernel_inittext(addr);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *dereference_symbol_des= criptor(void *ptr)=0D {=0D # 65 "./include/linux/kallsyms.h"=0D return ptr;=0D }=0D =0D int kallsyms_on_each_symbol(int (*fn)(void *, const char *, struct module *= ,=0D unsigned long),=0D void *data);=0D =0D =0D =0D unsigned long kallsyms_lookup_name(const char *name);=0D =0D extern int kallsyms_lookup_size_offset(unsigned long addr,=0D unsigned long *symbolsize,=0D unsigned long *offset);=0D =0D =0D const char *kallsyms_lookup(unsigned long addr,=0D unsigned long *symbolsize,=0D unsigned long *offset,=0D char **modname, char *namebuf);=0D =0D =0D extern int sprint_symbol(char *buffer, unsigned long address);=0D extern int sprint_symbol_build_id(char *buffer, unsigned long address);=0D extern int sprint_symbol_no_offset(char *buffer, unsigned long address);=0D extern int sprint_backtrace(char *buffer, unsigned long address);=0D extern int sprint_backtrace_build_id(char *buffer, unsigned long address);= =0D =0D int lookup_symbol_name(unsigned long addr, char *symname);=0D int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned l= ong *offset, char *modname, char *name);=0D =0D =0D extern bool kallsyms_show_value(const struct cred *cred);=0D # 168 "./include/linux/kallsyms.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void print_ip_sym(const char= *loglvl, unsigned long ip)=0D {=0D ({ do {} while (0); _printk("%s[<%px>] %pS\n", loglvl, (void *) ip, (void = *) ip); });=0D }=0D # 21 "./include/linux/bpf.h" 2=0D =0D # 1 "./include/linux/sched/mm.h" 1=0D # 10 "./include/linux/sched/mm.h"=0D # 1 "./include/linux/sync_core.h" 1=0D # 15 "./include/linux/sync_core.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sync_core_before_usermo= de(void)=0D {=0D }=0D # 11 "./include/linux/sched/mm.h" 2=0D # 1 "./include/linux/ioasid.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D typedef unsigned int ioasid_t;=0D typedef ioasid_t (*ioasid_alloc_fn_t)(ioasid_t min, ioasid_t max, void *dat= a);=0D typedef void (*ioasid_free_fn_t)(ioasid_t ioasid, void *data);=0D =0D struct ioasid_set {=0D int dummy;=0D };=0D # 25 "./include/linux/ioasid.h"=0D struct ioasid_allocator_ops {=0D ioasid_alloc_fn_t alloc;=0D ioasid_free_fn_t free;=0D struct list_head list;=0D void *pdata;=0D };=0D # 49 "./include/linux/ioasid.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) ioasid_t ioasid_alloc(struct= ioasid_set *set, ioasid_t min,=0D ioasid_t max, void *private)=0D {=0D return ((ioasid_t)-1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioasid_free(ioasid_t io= asid) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ioasid_find(struct ioa= sid_set *set, ioasid_t ioasid,=0D bool (*getter)(void *))=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ioasid_register_allocato= r(struct ioasid_allocator_ops *allocator)=0D {=0D return -524;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ioasid_unregister_alloc= ator(struct ioasid_allocator_ops *allocator)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ioasid_set_data(ioasid_t= ioasid, void *data)=0D {=0D return -524;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pasid_valid(ioasid_t io= asid)=0D {=0D return false;=0D }=0D # 12 "./include/linux/sched/mm.h" 2=0D =0D =0D =0D =0D extern struct mm_struct *mm_alloc(void);=0D # 35 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmgrab(struct mm_struct= *mm)=0D {=0D atomic_inc(&mm->mm_count);=0D }=0D =0D extern void __mmdrop(struct mm_struct *mm);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmdrop(struct mm_struct= *mm)=0D {=0D =0D =0D =0D =0D =0D if (__builtin_expect(!!(atomic_dec_and_test(&mm->mm_count)), 0))=0D __mmdrop(mm);=0D }=0D # 76 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmdrop_sched(struct mm_= struct *mm)=0D {=0D mmdrop(mm);=0D }=0D # 98 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mmget(struct mm_struct = *mm)=0D {=0D atomic_inc(&mm->mm_users);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mmget_not_zero(struct m= m_struct *mm)=0D {=0D return atomic_inc_not_zero(&mm->mm_users);=0D }=0D =0D =0D extern void mmput(struct mm_struct *);=0D =0D =0D =0D =0D void mmput_async(struct mm_struct *);=0D =0D =0D =0D extern struct mm_struct *get_task_mm(struct task_struct *task);=0D =0D =0D =0D =0D =0D extern struct mm_struct *mm_access(struct task_struct *task, unsigned int m= ode);=0D =0D extern void exit_mm_release(struct task_struct *, struct mm_struct *);=0D =0D extern void exec_mm_release(struct task_struct *, struct mm_struct *);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_update_next_owner(st= ruct mm_struct *mm)=0D {=0D }=0D # 147 "./include/linux/sched/mm.h"=0D extern void arch_pick_mmap_layout(struct mm_struct *mm,=0D struct rlimit *rlim_stack);=0D extern unsigned long=0D arch_get_unmapped_area(struct file *, unsigned long, unsigned long,=0D unsigned long, unsigned long);=0D extern unsigned long=0D arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,=0D unsigned long len, unsigned long pgoff,=0D unsigned long flags);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool in_vfork(struct task_st= ruct *tsk)=0D {=0D bool ret;=0D # 180 "./include/linux/sched/mm.h"=0D rcu_read_lock();=0D ret =3D tsk->vfork_done &&=0D ({ typeof(*(tsk->real_parent)) *__UNIQUE_ID_rcu527 =3D (typeof(*(tsk->re= al_parent)) *)({ do { __attribute__((__noreturn__)) extern void __compileti= me_assert_528(void) ; if (!((sizeof((tsk->real_parent)) =3D=3D sizeof(char)= || sizeof((tsk->real_parent)) =3D=3D sizeof(short) || sizeof((tsk->real_pa= rent)) =3D=3D sizeof(int) || sizeof((tsk->real_parent)) =3D=3D sizeof(long)= ) || sizeof((tsk->real_parent)) =3D=3D sizeof(long long))) __compiletime_as= sert_528(); } while (0); (*(const volatile typeof( _Generic(((tsk->real_par= ent)), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed= char)0, unsigned short: (unsigned short)0, signed short: (signed short)0, = unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (u= nsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned = long long)0, signed long long: (signed long long)0, default: ((tsk->real_pa= rent)))) *)&((tsk->real_parent))); }); do { } while (0 && (!((0) || rcu_rea= d_lock_held()))); ; ((typeof(*(tsk->real_parent)) *)(__UNIQUE_ID_rcu527)); = })->mm =3D=3D tsk->mm;=0D rcu_read_unlock();=0D =0D return ret;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) gfp_t current_gfp_context(gf= p_t flags)=0D {=0D unsigned int pflags =3D ({ do { __attribute__((__noreturn__)) extern void = __compiletime_assert_529(void) ; if (!((sizeof(get_current()->flags) =3D=3D= sizeof(char) || sizeof(get_current()->flags) =3D=3D sizeof(short) || sizeo= f(get_current()->flags) =3D=3D sizeof(int) || sizeof(get_current()->flags) = =3D=3D sizeof(long)) || sizeof(get_current()->flags) =3D=3D sizeof(long lon= g))) __compiletime_assert_529(); } while (0); (*(const volatile typeof( _Ge= neric((get_current()->flags), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: (get_current()->flags))) *)&(get_current()->flags)); });=0D =0D if (__builtin_expect(!!(pflags & (0x00080000 | 0x00040000 | 0x10000000)), = 0)) {=0D =0D =0D =0D =0D if (pflags & 0x00080000)=0D flags &=3D ~((( gfp_t)0x40u) | (( gfp_t)0x80u));=0D else if (pflags & 0x00040000)=0D flags &=3D ~(( gfp_t)0x80u);=0D =0D if (pflags & 0x10000000)=0D flags &=3D ~(( gfp_t)0x08u);=0D }=0D return flags;=0D }=0D =0D =0D extern void __fs_reclaim_acquire(unsigned long ip);=0D extern void __fs_reclaim_release(unsigned long ip);=0D extern void fs_reclaim_acquire(gfp_t gfp_mask);=0D extern void fs_reclaim_release(gfp_t gfp_mask);=0D # 233 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memalloc_retry_wait(gfp= _t gfp_flags)=0D {=0D =0D =0D =0D =0D do { do { ({ int __ret_warn_on =3D !!((((0x0002)) & (0x0004 | 0x0008 | 0x0= 040 | 0x0080))); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ _= _volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:= \n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t"= ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/li= nux/sched/mm.h"), "i" (239), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (s= izeof(struct bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on),= 0); }); get_current()->task_state_change =3D ({ __label__ __here; __here: = (unsigned long)&&__here; }); } while (0); do { do { __attribute__((__noretu= rn__)) extern void __compiletime_assert_530(void) ; if (!((sizeof(get_curre= nt()->__state) =3D=3D sizeof(char) || sizeof(get_current()->__state) =3D=3D= sizeof(short) || sizeof(get_current()->__state) =3D=3D sizeof(int) || size= of(get_current()->__state) =3D=3D sizeof(long)) || sizeof(get_current()->__= state) =3D=3D sizeof(long long))) __compiletime_assert_530(); } while (0); = do { *(volatile typeof(get_current()->__state) *)&(get_current()->__state) = =3D ((0x0002)); } while (0); } while (0); } while (0);=0D gfp_flags =3D current_gfp_context(gfp_flags);=0D if (gfpflags_allow_blocking(gfp_flags) &&=0D !(gfp_flags & (( gfp_t)0x10000u)))=0D =0D io_schedule_timeout(1);=0D else=0D =0D =0D =0D io_schedule_timeout(100/50);=0D }=0D # 260 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void might_alloc(gfp_t gfp_m= ask)=0D {=0D fs_reclaim_acquire(gfp_mask);=0D fs_reclaim_release(gfp_mask);=0D =0D do { if (gfpflags_allow_blocking(gfp_mask)) do { __might_sleep("include/li= nux/sched/mm.h", 265); __cond_resched(); } while (0); } while (0);=0D }=0D # 279 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int memalloc_noio_s= ave(void)=0D {=0D unsigned int flags =3D get_current()->flags & 0x00080000;=0D get_current()->flags |=3D 0x00080000;=0D return flags;=0D }=0D # 294 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memalloc_noio_restore(u= nsigned int flags)=0D {=0D get_current()->flags =3D (get_current()->flags & ~0x00080000) | flags;=0D }=0D # 310 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int memalloc_nofs_s= ave(void)=0D {=0D unsigned int flags =3D get_current()->flags & 0x00040000;=0D get_current()->flags |=3D 0x00040000;=0D return flags;=0D }=0D # 325 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memalloc_nofs_restore(u= nsigned int flags)=0D {=0D get_current()->flags =3D (get_current()->flags & ~0x00040000) | flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int memalloc_norecl= aim_save(void)=0D {=0D unsigned int flags =3D get_current()->flags & 0x00000800;=0D get_current()->flags |=3D 0x00000800;=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memalloc_noreclaim_rest= ore(unsigned int flags)=0D {=0D get_current()->flags =3D (get_current()->flags & ~0x00000800) | flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int memalloc_pin_sa= ve(void)=0D {=0D unsigned int flags =3D get_current()->flags & 0x10000000;=0D =0D get_current()->flags |=3D 0x10000000;=0D return flags;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void memalloc_pin_restore(un= signed int flags)=0D {=0D get_current()->flags =3D (get_current()->flags & ~0x10000000) | flags;=0D }=0D # 384 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct mem_cgroup *=0D set_active_memcg(struct mem_cgroup *memcg)=0D {=0D return ((void *)0);=0D }=0D =0D =0D =0D enum {=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED_READY =3D (1U << 0),=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED =3D (1U << 1),=0D MEMBARRIER_STATE_GLOBAL_EXPEDITED_READY =3D (1U << 2),=0D MEMBARRIER_STATE_GLOBAL_EXPEDITED =3D (1U << 3),=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE_READY =3D (1U << 4),=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED_SYNC_CORE =3D (1U << 5),=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ_READY =3D (1U << 6),=0D MEMBARRIER_STATE_PRIVATE_EXPEDITED_RSEQ =3D (1U << 7),=0D };=0D =0D enum {=0D MEMBARRIER_FLAG_SYNC_CORE =3D (1U << 0),=0D MEMBARRIER_FLAG_RSEQ =3D (1U << 1),=0D };=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void membarrier_mm_sync_core= _before_usermode(struct mm_struct *mm)=0D {=0D if (get_current()->mm !=3D mm)=0D return;=0D if (__builtin_expect(!!(!(atomic_read(&mm->membarrier_state) & MEMBARRIER_= STATE_PRIVATE_EXPEDITED_SYNC_CORE)), 1))=0D =0D return;=0D sync_core_before_usermode();=0D }=0D =0D extern void membarrier_exec_mmap(struct mm_struct *mm);=0D =0D extern void membarrier_update_current_mm(struct mm_struct *next_mm);=0D # 465 "./include/linux/sched/mm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_pasid_init(struct mm= _struct *mm) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_pasid_set(struct mm_= struct *mm, u32 pasid) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mm_pasid_drop(struct mm= _struct *mm) {}=0D # 23 "./include/linux/bpf.h" 2=0D =0D =0D # 1 "./include/linux/bpfptr.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D typedef sockptr_t bpfptr_t;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpfptr_is_kernel(bpfptr= _t bpfptr)=0D {=0D return bpfptr.is_kernel;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bpfptr_t KERNEL_BPFPTR(void = *p)=0D {=0D return (bpfptr_t) { .kernel =3D p, .is_kernel =3D true };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bpfptr_t USER_BPFPTR(void *p= )=0D {=0D return (bpfptr_t) { .user =3D p };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bpfptr_t make_bpfptr(u64 add= r, bool is_kernel)=0D {=0D if (is_kernel)=0D return KERNEL_BPFPTR((void*) (uintptr_t) addr);=0D else=0D return USER_BPFPTR(( { ({ u64 __dummy; typeof((addr)) __dummy2; (void)(&_= _dummy =3D=3D &__dummy2); 1; }); (void *)(uintptr_t)(addr); } ));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpfptr_is_null(bpfptr_t= bpfptr)=0D {=0D if (bpfptr_is_kernel(bpfptr))=0D return !bpfptr.kernel;=0D return !bpfptr.user;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpfptr_add(bpfptr_t *bp= fptr, size_t val)=0D {=0D if (bpfptr_is_kernel(*bpfptr))=0D bpfptr->kernel +=3D val;=0D else=0D bpfptr->user +=3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_from_bpfptr_offset(= void *dst, bpfptr_t src,=0D size_t offset, size_t size)=0D {=0D return copy_from_sockptr_offset(dst, (sockptr_t) src, offset, size);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_from_bpfptr(void *d= st, bpfptr_t src, size_t size)=0D {=0D return copy_from_bpfptr_offset(dst, src, 0, size);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int copy_to_bpfptr_offset(bp= fptr_t dst, size_t offset,=0D const void *src, size_t size)=0D {=0D return copy_to_sockptr_offset((sockptr_t) dst, offset, src, size);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *kvmemdup_bpfptr(bpfptr= _t src, size_t len)=0D {=0D void *p =3D kvmalloc(len, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (= ( gfp_t)0x80u) | (( gfp_t)0x100000u)) | (( gfp_t)0x2000u));=0D =0D if (!p)=0D return ERR_PTR(-12);=0D if (copy_from_bpfptr(p, src, len)) {=0D kvfree(p);=0D return ERR_PTR(-14);=0D }=0D return p;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long strncpy_from_bpfptr(cha= r *dst, bpfptr_t src, size_t count)=0D {=0D return strncpy_from_sockptr(dst, (sockptr_t) src, count);=0D }=0D # 26 "./include/linux/bpf.h" 2=0D =0D struct bpf_verifier_env;=0D struct bpf_verifier_log;=0D struct perf_event;=0D struct bpf_prog;=0D struct bpf_prog_aux;=0D struct bpf_map;=0D struct sock;=0D struct seq_file;=0D struct btf;=0D struct btf_type;=0D struct exception_table_entry;=0D struct seq_operations;=0D struct bpf_iter_aux_info;=0D struct bpf_local_storage;=0D struct bpf_local_storage_map;=0D struct kobject;=0D struct mem_cgroup;=0D struct module;=0D struct bpf_func_state;=0D =0D extern struct idr btf_idr;=0D extern spinlock_t btf_idr_lock;=0D extern struct kobject *btf_kobj;=0D =0D typedef u64 (*bpf_callback_t)(u64, u64, u64, u64, u64);=0D typedef int (*bpf_iter_init_seq_priv_t)(void *private_data,=0D struct bpf_iter_aux_info *aux);=0D typedef void (*bpf_iter_fini_seq_priv_t)(void *private_data);=0D struct bpf_iter_seq_info {=0D const struct seq_operations *seq_ops;=0D bpf_iter_init_seq_priv_t init_seq_private;=0D bpf_iter_fini_seq_priv_t fini_seq_private;=0D u32 seq_priv_size;=0D };=0D =0D =0D struct bpf_map_ops {=0D =0D int (*map_alloc_check)(union bpf_attr *attr);=0D struct bpf_map *(*map_alloc)(union bpf_attr *attr);=0D void (*map_release)(struct bpf_map *map, struct file *map_file);=0D void (*map_free)(struct bpf_map *map);=0D int (*map_get_next_key)(struct bpf_map *map, void *key, void *next_key);=0D void (*map_release_uref)(struct bpf_map *map);=0D void *(*map_lookup_elem_sys_only)(struct bpf_map *map, void *key);=0D int (*map_lookup_batch)(struct bpf_map *map, const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D int (*map_lookup_and_delete_elem)(struct bpf_map *map, void *key,=0D void *value, u64 flags);=0D int (*map_lookup_and_delete_batch)(struct bpf_map *map,=0D const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D int (*map_update_batch)(struct bpf_map *map, const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D int (*map_delete_batch)(struct bpf_map *map, const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D =0D =0D void *(*map_lookup_elem)(struct bpf_map *map, void *key);=0D int (*map_update_elem)(struct bpf_map *map, void *key, void *value, u64 fl= ags);=0D int (*map_delete_elem)(struct bpf_map *map, void *key);=0D int (*map_push_elem)(struct bpf_map *map, void *value, u64 flags);=0D int (*map_pop_elem)(struct bpf_map *map, void *value);=0D int (*map_peek_elem)(struct bpf_map *map, void *value);=0D =0D =0D void *(*map_fd_get_ptr)(struct bpf_map *map, struct file *map_file,=0D int fd);=0D void (*map_fd_put_ptr)(void *ptr);=0D int (*map_gen_lookup)(struct bpf_map *map, struct bpf_insn *insn_buf);=0D u32 (*map_fd_sys_lookup_elem)(void *ptr);=0D void (*map_seq_show_elem)(struct bpf_map *map, void *key,=0D struct seq_file *m);=0D int (*map_check_btf)(const struct bpf_map *map,=0D const struct btf *btf,=0D const struct btf_type *key_type,=0D const struct btf_type *value_type);=0D =0D =0D int (*map_poke_track)(struct bpf_map *map, struct bpf_prog_aux *aux);=0D void (*map_poke_untrack)(struct bpf_map *map, struct bpf_prog_aux *aux);=0D void (*map_poke_run)(struct bpf_map *map, u32 key, struct bpf_prog *old,=0D struct bpf_prog *new);=0D =0D =0D int (*map_direct_value_addr)(const struct bpf_map *map,=0D u64 *imm, u32 off);=0D int (*map_direct_value_meta)(const struct bpf_map *map,=0D u64 imm, u32 *off);=0D int (*map_mmap)(struct bpf_map *map, struct vm_area_struct *vma);=0D __poll_t (*map_poll)(struct bpf_map *map, struct file *filp,=0D struct poll_table_struct *pts);=0D =0D =0D int (*map_local_storage_charge)(struct bpf_local_storage_map *smap,=0D void *owner, u32 size);=0D void (*map_local_storage_uncharge)(struct bpf_local_storage_map *smap,=0D void *owner, u32 size);=0D struct bpf_local_storage ** (*map_owner_storage_ptr)(void *owner);=0D =0D =0D int (*map_redirect)(struct bpf_map *map, u32 ifindex, u64 flags);=0D # 139 "./include/linux/bpf.h"=0D bool (*map_meta_equal)(const struct bpf_map *meta0,=0D const struct bpf_map *meta1);=0D =0D =0D int (*map_set_for_each_callback_args)(struct bpf_verifier_env *env,=0D struct bpf_func_state *caller,=0D struct bpf_func_state *callee);=0D int (*map_for_each_callback)(struct bpf_map *map,=0D bpf_callback_t callback_fn,=0D void *callback_ctx, u64 flags);=0D =0D =0D const char * const map_btf_name;=0D int *map_btf_id;=0D =0D =0D const struct bpf_iter_seq_info *iter_seq_info;=0D };=0D =0D struct bpf_map {=0D =0D =0D =0D const struct bpf_map_ops *ops __attribute__((__aligned__((1 << 6))));=0D struct bpf_map *inner_map_meta;=0D =0D =0D =0D enum bpf_map_type map_type;=0D u32 key_size;=0D u32 value_size;=0D u32 max_entries;=0D u64 map_extra;=0D u32 map_flags;=0D int spin_lock_off;=0D int timer_off;=0D u32 id;=0D int numa_node;=0D u32 btf_key_type_id;=0D u32 btf_value_type_id;=0D u32 btf_vmlinux_value_type_id;=0D struct btf *btf;=0D =0D =0D =0D char name[16U];=0D bool bypass_spec_v1;=0D bool frozen;=0D =0D =0D =0D =0D =0D atomic64_t refcnt __attribute__((__aligned__((1 << 6))));=0D atomic64_t usercnt;=0D struct work_struct work;=0D struct mutex freeze_mutex;=0D atomic64_t writecnt;=0D =0D =0D =0D =0D =0D struct {=0D spinlock_t lock;=0D enum bpf_prog_type type;=0D bool jited;=0D bool xdp_has_frags;=0D } owner;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool map_value_has_spin_lock= (const struct bpf_map *map)=0D {=0D return map->spin_lock_off >=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool map_value_has_timer(con= st struct bpf_map *map)=0D {=0D return map->timer_off >=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void check_and_init_map_valu= e(struct bpf_map *map, void *dst)=0D {=0D if (__builtin_expect(!!(map_value_has_spin_lock(map)), 0))=0D memset(dst + map->spin_lock_off, 0, sizeof(struct bpf_spin_lock));=0D if (__builtin_expect(!!(map_value_has_timer(map)), 0))=0D memset(dst + map->timer_off, 0, sizeof(struct bpf_timer));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void copy_map_value(struct b= pf_map *map, void *dst, void *src)=0D {=0D u32 s_off =3D 0, s_sz =3D 0, t_off =3D 0, t_sz =3D 0;=0D =0D if (__builtin_expect(!!(map_value_has_spin_lock(map)), 0)) {=0D s_off =3D map->spin_lock_off;=0D s_sz =3D sizeof(struct bpf_spin_lock);=0D }=0D if (__builtin_expect(!!(map_value_has_timer(map)), 0)) {=0D t_off =3D map->timer_off;=0D t_sz =3D sizeof(struct bpf_timer);=0D }=0D =0D if (__builtin_expect(!!(s_sz || t_sz), 0)) {=0D if (s_off < t_off || !s_sz) {=0D do { typeof(s_off) __tmp =3D (s_off); (s_off) =3D (t_off); (t_off) =3D _= _tmp; } while (0);=0D do { typeof(s_sz) __tmp =3D (s_sz); (s_sz) =3D (t_sz); (t_sz) =3D __tmp;= } while (0);=0D }=0D memcpy(dst, src, t_off);=0D memcpy(dst + t_off + t_sz,=0D src + t_off + t_sz,=0D s_off - t_off - t_sz);=0D memcpy(dst + s_off + s_sz,=0D src + s_off + s_sz,=0D map->value_size - s_off - s_sz);=0D } else {=0D memcpy(dst, src, map->value_size);=0D }=0D }=0D void copy_map_value_locked(struct bpf_map *map, void *dst, void *src,=0D bool lock_src);=0D void bpf_timer_cancel_and_free(void *timer);=0D int bpf_obj_name_cpy(char *dst, const char *src, unsigned int size);=0D =0D struct bpf_offload_dev;=0D struct bpf_offloaded_map;=0D =0D struct bpf_map_dev_ops {=0D int (*map_get_next_key)(struct bpf_offloaded_map *map,=0D void *key, void *next_key);=0D int (*map_lookup_elem)(struct bpf_offloaded_map *map,=0D void *key, void *value);=0D int (*map_update_elem)(struct bpf_offloaded_map *map,=0D void *key, void *value, u64 flags);=0D int (*map_delete_elem)(struct bpf_offloaded_map *map, void *key);=0D };=0D =0D struct bpf_offloaded_map {=0D struct bpf_map map;=0D struct net_device *netdev;=0D const struct bpf_map_dev_ops *dev_ops;=0D void *dev_priv;=0D struct list_head offloads;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct bpf_offloaded_map *ma= p_to_offmap(struct bpf_map *map)=0D {=0D return ({ void *__mptr =3D (void *)(map); _Static_assert(__builtin_types_c= ompatible_p(typeof(*(map)), typeof(((struct bpf_offloaded_map *)0)->map)) |= | __builtin_types_compatible_p(typeof(*(map)), typeof(void)), "pointer type= mismatch in container_of()"); ((struct bpf_offloaded_map *)(__mptr - __bui= ltin_offsetof(struct bpf_offloaded_map, map))); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_map_offload_neutral= (const struct bpf_map *map)=0D {=0D return map->map_type =3D=3D BPF_MAP_TYPE_PERF_EVENT_ARRAY;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_map_support_seq_sho= w(const struct bpf_map *map)=0D {=0D return (map->btf_value_type_id || map->btf_vmlinux_value_type_id) &&=0D map->ops->map_seq_show_elem;=0D }=0D =0D int map_check_no_btf(const struct bpf_map *map,=0D const struct btf *btf,=0D const struct btf_type *key_type,=0D const struct btf_type *value_type);=0D =0D bool bpf_map_meta_equal(const struct bpf_map *meta0,=0D const struct bpf_map *meta1);=0D =0D extern const struct bpf_map_ops bpf_map_offload_ops;=0D # 320 "./include/linux/bpf.h"=0D enum bpf_type_flag {=0D =0D PTR_MAYBE_NULL =3D ((((1UL))) << (0 + 8)),=0D =0D =0D =0D =0D MEM_RDONLY =3D ((((1UL))) << (1 + 8)),=0D =0D =0D =0D =0D MEM_ALLOC =3D ((((1UL))) << (2 + 8)),=0D =0D =0D MEM_USER =3D ((((1UL))) << (3 + 8)),=0D =0D =0D =0D =0D =0D =0D =0D MEM_PERCPU =3D ((((1UL))) << (4 + 8)),=0D =0D __BPF_TYPE_LAST_FLAG =3D MEM_PERCPU,=0D };=0D # 355 "./include/linux/bpf.h"=0D enum bpf_arg_type {=0D ARG_DONTCARE =3D 0,=0D =0D =0D =0D =0D ARG_CONST_MAP_PTR,=0D ARG_PTR_TO_MAP_KEY,=0D ARG_PTR_TO_MAP_VALUE,=0D ARG_PTR_TO_UNINIT_MAP_VALUE,=0D =0D =0D =0D =0D ARG_PTR_TO_MEM,=0D ARG_PTR_TO_UNINIT_MEM,=0D =0D =0D =0D =0D ARG_CONST_SIZE,=0D ARG_CONST_SIZE_OR_ZERO,=0D =0D ARG_PTR_TO_CTX,=0D ARG_ANYTHING,=0D ARG_PTR_TO_SPIN_LOCK,=0D ARG_PTR_TO_SOCK_COMMON,=0D ARG_PTR_TO_INT,=0D ARG_PTR_TO_LONG,=0D ARG_PTR_TO_SOCKET,=0D ARG_PTR_TO_BTF_ID,=0D ARG_PTR_TO_ALLOC_MEM,=0D ARG_CONST_ALLOC_SIZE_OR_ZERO,=0D ARG_PTR_TO_BTF_ID_SOCK_COMMON,=0D ARG_PTR_TO_PERCPU_BTF_ID,=0D ARG_PTR_TO_FUNC,=0D ARG_PTR_TO_STACK,=0D ARG_PTR_TO_CONST_STR,=0D ARG_PTR_TO_TIMER,=0D __BPF_ARG_TYPE_MAX,=0D =0D =0D ARG_PTR_TO_MAP_VALUE_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_MAP_VALUE,=0D ARG_PTR_TO_MEM_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_MEM,=0D ARG_PTR_TO_CTX_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_CTX,=0D ARG_PTR_TO_SOCKET_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_SOCKET,=0D ARG_PTR_TO_ALLOC_MEM_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_ALLOC_MEM,=0D ARG_PTR_TO_STACK_OR_NULL =3D PTR_MAYBE_NULL | ARG_PTR_TO_STACK,=0D =0D =0D =0D =0D __BPF_ARG_TYPE_LIMIT =3D (__BPF_TYPE_LAST_FLAG | (__BPF_TYPE_LAST_FLAG - 1= )),=0D };=0D _Static_assert(__BPF_ARG_TYPE_MAX <=3D (1UL << 8), "__BPF_ARG_TYPE_MAX <=3D= BPF_BASE_TYPE_LIMIT");=0D =0D =0D enum bpf_return_type {=0D RET_INTEGER,=0D RET_VOID,=0D RET_PTR_TO_MAP_VALUE,=0D RET_PTR_TO_SOCKET,=0D RET_PTR_TO_TCP_SOCK,=0D RET_PTR_TO_SOCK_COMMON,=0D RET_PTR_TO_ALLOC_MEM,=0D RET_PTR_TO_MEM_OR_BTF_ID,=0D RET_PTR_TO_BTF_ID,=0D __BPF_RET_TYPE_MAX,=0D =0D =0D RET_PTR_TO_MAP_VALUE_OR_NULL =3D PTR_MAYBE_NULL | RET_PTR_TO_MAP_VALUE,=0D RET_PTR_TO_SOCKET_OR_NULL =3D PTR_MAYBE_NULL | RET_PTR_TO_SOCKET,=0D RET_PTR_TO_TCP_SOCK_OR_NULL =3D PTR_MAYBE_NULL | RET_PTR_TO_TCP_SOCK,=0D RET_PTR_TO_SOCK_COMMON_OR_NULL =3D PTR_MAYBE_NULL | RET_PTR_TO_SOCK_COMMON= ,=0D RET_PTR_TO_ALLOC_MEM_OR_NULL =3D PTR_MAYBE_NULL | MEM_ALLOC | RET_PTR_TO_A= LLOC_MEM,=0D RET_PTR_TO_BTF_ID_OR_NULL =3D PTR_MAYBE_NULL | RET_PTR_TO_BTF_ID,=0D =0D =0D =0D =0D __BPF_RET_TYPE_LIMIT =3D (__BPF_TYPE_LAST_FLAG | (__BPF_TYPE_LAST_FLAG - 1= )),=0D };=0D _Static_assert(__BPF_RET_TYPE_MAX <=3D (1UL << 8), "__BPF_RET_TYPE_MAX <=3D= BPF_BASE_TYPE_LIMIT");=0D =0D =0D =0D =0D =0D struct bpf_func_proto {=0D u64 (*func)(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);=0D bool gpl_only;=0D bool pkt_access;=0D enum bpf_return_type ret_type;=0D union {=0D struct {=0D enum bpf_arg_type arg1_type;=0D enum bpf_arg_type arg2_type;=0D enum bpf_arg_type arg3_type;=0D enum bpf_arg_type arg4_type;=0D enum bpf_arg_type arg5_type;=0D };=0D enum bpf_arg_type arg_type[5];=0D };=0D union {=0D struct {=0D u32 *arg1_btf_id;=0D u32 *arg2_btf_id;=0D u32 *arg3_btf_id;=0D u32 *arg4_btf_id;=0D u32 *arg5_btf_id;=0D };=0D u32 *arg_btf_id[5];=0D };=0D int *ret_btf_id;=0D bool (*allowed)(const struct bpf_prog *prog);=0D };=0D =0D =0D =0D =0D =0D struct bpf_context;=0D =0D enum bpf_access_type {=0D BPF_READ =3D 1,=0D BPF_WRITE =3D 2=0D };=0D # 493 "./include/linux/bpf.h"=0D enum bpf_reg_type {=0D NOT_INIT =3D 0,=0D SCALAR_VALUE,=0D PTR_TO_CTX,=0D CONST_PTR_TO_MAP,=0D PTR_TO_MAP_VALUE,=0D PTR_TO_MAP_KEY,=0D PTR_TO_STACK,=0D PTR_TO_PACKET_META,=0D PTR_TO_PACKET,=0D PTR_TO_PACKET_END,=0D PTR_TO_FLOW_KEYS,=0D PTR_TO_SOCKET,=0D PTR_TO_SOCK_COMMON,=0D PTR_TO_TCP_SOCK,=0D PTR_TO_TP_BUFFER,=0D PTR_TO_XDP_SOCK,=0D # 520 "./include/linux/bpf.h"=0D PTR_TO_BTF_ID,=0D =0D =0D =0D =0D PTR_TO_MEM,=0D PTR_TO_BUF,=0D PTR_TO_FUNC,=0D __BPF_REG_TYPE_MAX,=0D =0D =0D PTR_TO_MAP_VALUE_OR_NULL =3D PTR_MAYBE_NULL | PTR_TO_MAP_VALUE,=0D PTR_TO_SOCKET_OR_NULL =3D PTR_MAYBE_NULL | PTR_TO_SOCKET,=0D PTR_TO_SOCK_COMMON_OR_NULL =3D PTR_MAYBE_NULL | PTR_TO_SOCK_COMMON,=0D PTR_TO_TCP_SOCK_OR_NULL =3D PTR_MAYBE_NULL | PTR_TO_TCP_SOCK,=0D PTR_TO_BTF_ID_OR_NULL =3D PTR_MAYBE_NULL | PTR_TO_BTF_ID,=0D =0D =0D =0D =0D __BPF_REG_TYPE_LIMIT =3D (__BPF_TYPE_LAST_FLAG | (__BPF_TYPE_LAST_FLAG - 1= )),=0D };=0D _Static_assert(__BPF_REG_TYPE_MAX <=3D (1UL << 8), "__BPF_REG_TYPE_MAX <=3D= BPF_BASE_TYPE_LIMIT");=0D =0D =0D =0D =0D struct bpf_insn_access_aux {=0D enum bpf_reg_type reg_type;=0D union {=0D int ctx_field_size;=0D struct {=0D struct btf *btf;=0D u32 btf_id;=0D };=0D };=0D struct bpf_verifier_log *log;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D bpf_ctx_record_field_size(struct bpf_insn_access_aux *aux, u32 size)=0D {=0D aux->ctx_field_size =3D size;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_pseudo_func(const s= truct bpf_insn *insn)=0D {=0D return insn->code =3D=3D (0x00 | 0x00 | 0x18) &&=0D insn->src_reg =3D=3D 4;=0D }=0D =0D struct bpf_prog_ops {=0D int (*test_run)(struct bpf_prog *prog, const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D };=0D =0D struct bpf_verifier_ops {=0D =0D const struct bpf_func_proto *=0D (*get_func_proto)(enum bpf_func_id func_id,=0D const struct bpf_prog *prog);=0D =0D =0D =0D =0D bool (*is_valid_access)(int off, int size, enum bpf_access_type type,=0D const struct bpf_prog *prog,=0D struct bpf_insn_access_aux *info);=0D int (*gen_prologue)(struct bpf_insn *insn, bool direct_write,=0D const struct bpf_prog *prog);=0D int (*gen_ld_abs)(const struct bpf_insn *orig,=0D struct bpf_insn *insn_buf);=0D u32 (*convert_ctx_access)(enum bpf_access_type type,=0D const struct bpf_insn *src,=0D struct bpf_insn *dst,=0D struct bpf_prog *prog, u32 *target_size);=0D int (*btf_struct_access)(struct bpf_verifier_log *log,=0D const struct btf *btf,=0D const struct btf_type *t, int off, int size,=0D enum bpf_access_type atype,=0D u32 *next_btf_id, enum bpf_type_flag *flag);=0D };=0D =0D struct bpf_prog_offload_ops {=0D =0D int (*insn_hook)(struct bpf_verifier_env *env,=0D int insn_idx, int prev_insn_idx);=0D int (*finalize)(struct bpf_verifier_env *env);=0D =0D int (*replace_insn)(struct bpf_verifier_env *env, u32 off,=0D struct bpf_insn *insn);=0D int (*remove_insns)(struct bpf_verifier_env *env, u32 off, u32 cnt);=0D =0D int (*prepare)(struct bpf_prog *prog);=0D int (*translate)(struct bpf_prog *prog);=0D void (*destroy)(struct bpf_prog *prog);=0D };=0D =0D struct bpf_prog_offload {=0D struct bpf_prog *prog;=0D struct net_device *netdev;=0D struct bpf_offload_dev *offdev;=0D void *dev_priv;=0D struct list_head offloads;=0D bool dev_state;=0D bool opt_failed;=0D void *jited_image;=0D u32 jited_len;=0D };=0D =0D enum bpf_cgroup_storage_type {=0D BPF_CGROUP_STORAGE_SHARED,=0D BPF_CGROUP_STORAGE_PERCPU,=0D __BPF_CGROUP_STORAGE_MAX=0D };=0D # 648 "./include/linux/bpf.h"=0D struct btf_func_model {=0D u8 ret_size;=0D u8 nr_args;=0D u8 arg_size[12];=0D };=0D # 679 "./include/linux/bpf.h"=0D struct bpf_tramp_progs {=0D struct bpf_prog *progs[38];=0D int nr_progs;=0D };=0D # 704 "./include/linux/bpf.h"=0D struct bpf_tramp_image;=0D int arch_prepare_bpf_trampoline(struct bpf_tramp_image *tr, void *image, vo= id *image_end,=0D const struct btf_func_model *m, u32 flags,=0D struct bpf_tramp_progs *tprogs,=0D void *orig_call);=0D =0D u64 __attribute__((patchable_function_entry(0, 0))) __bpf_prog_enter(struct= bpf_prog *prog);=0D void __attribute__((patchable_function_entry(0, 0))) __bpf_prog_exit(struct= bpf_prog *prog, u64 start);=0D u64 __attribute__((patchable_function_entry(0, 0))) __bpf_prog_enter_sleepa= ble(struct bpf_prog *prog);=0D void __attribute__((patchable_function_entry(0, 0))) __bpf_prog_exit_sleepa= ble(struct bpf_prog *prog, u64 start);=0D void __attribute__((patchable_function_entry(0, 0))) __bpf_tramp_enter(stru= ct bpf_tramp_image *tr);=0D void __attribute__((patchable_function_entry(0, 0))) __bpf_tramp_exit(struc= t bpf_tramp_image *tr);=0D =0D struct bpf_ksym {=0D unsigned long start;=0D unsigned long end;=0D char name[128];=0D struct list_head lnode;=0D struct latch_tree_node tnode;=0D bool prog;=0D };=0D =0D enum bpf_tramp_prog_type {=0D BPF_TRAMP_FENTRY,=0D BPF_TRAMP_FEXIT,=0D BPF_TRAMP_MODIFY_RETURN,=0D BPF_TRAMP_MAX,=0D BPF_TRAMP_REPLACE,=0D };=0D =0D struct bpf_tramp_image {=0D void *image;=0D struct bpf_ksym ksym;=0D struct percpu_ref pcref;=0D void *ip_after_call;=0D void *ip_epilogue;=0D union {=0D struct callback_head rcu;=0D struct work_struct work;=0D };=0D };=0D =0D struct bpf_trampoline {=0D =0D struct hlist_node hlist;=0D =0D struct mutex mutex;=0D refcount_t refcnt;=0D u64 key;=0D struct {=0D struct btf_func_model model;=0D void *addr;=0D bool ftrace_managed;=0D } func;=0D =0D =0D =0D =0D struct bpf_prog *extension_prog;=0D =0D struct hlist_head progs_hlist[BPF_TRAMP_MAX];=0D =0D int progs_cnt[BPF_TRAMP_MAX];=0D =0D struct bpf_tramp_image *cur_image;=0D u64 selector;=0D struct module *mod;=0D };=0D =0D struct bpf_attach_target_info {=0D struct btf_func_model fmodel;=0D long tgt_addr;=0D const char *tgt_name;=0D const struct btf_type *tgt_type;=0D };=0D =0D =0D =0D struct bpf_dispatcher_prog {=0D struct bpf_prog *prog;=0D refcount_t users;=0D };=0D =0D struct bpf_dispatcher {=0D =0D struct mutex mutex;=0D void *func;=0D struct bpf_dispatcher_prog progs[48];=0D int num_progs;=0D void *image;=0D u32 image_off;=0D struct bpf_ksym ksym;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) __attribute__((__no_sanitize__("cfi"))) unsigned int bpf_dispatcher_= nop_func(=0D const void *ctx,=0D const struct bpf_insn *insnsi,=0D unsigned int (*bpf_func)(const void *,=0D const struct bpf_insn *))=0D {=0D return bpf_func(ctx, insnsi);=0D }=0D # 859 "./include/linux/bpf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_trampoline_link_prog= (struct bpf_prog *prog,=0D struct bpf_trampoline *tr)=0D {=0D return -524;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_trampoline_unlink_pr= og(struct bpf_prog *prog,=0D struct bpf_trampoline *tr)=0D {=0D return -524;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct bpf_trampoline *bpf_t= rampoline_get(u64 key,=0D struct bpf_attach_target_info *tgt_info)=0D {=0D return ERR_PTR(-95);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_trampoline_put(stru= ct bpf_trampoline *tr) {}=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_dispatcher_change_p= rog(struct bpf_dispatcher *d,=0D struct bpf_prog *from,=0D struct bpf_prog *to) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_bpf_image_address(un= signed long address)=0D {=0D return false;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_prog_has_trampoline= (const struct bpf_prog *prog)=0D {=0D return false;=0D }=0D =0D =0D struct bpf_func_info_aux {=0D u16 linkage;=0D bool unreliable;=0D };=0D =0D enum bpf_jit_poke_reason {=0D BPF_POKE_REASON_TAIL_CALL,=0D };=0D =0D =0D struct bpf_jit_poke_descriptor {=0D void *tailcall_target;=0D void *tailcall_bypass;=0D void *bypass_addr;=0D void *aux;=0D union {=0D struct {=0D struct bpf_map *map;=0D u32 key;=0D } tail_call;=0D };=0D bool tailcall_target_stable;=0D u8 adj_off;=0D u16 reason;=0D u32 insn_idx;=0D };=0D =0D =0D struct bpf_ctx_arg_aux {=0D u32 offset;=0D enum bpf_reg_type reg_type;=0D u32 btf_id;=0D };=0D =0D struct btf_mod_pair {=0D struct btf *btf;=0D struct module *module;=0D };=0D =0D struct bpf_kfunc_desc_tab;=0D =0D struct bpf_prog_aux {=0D atomic64_t refcnt;=0D u32 used_map_cnt;=0D u32 used_btf_cnt;=0D u32 max_ctx_offset;=0D u32 max_pkt_offset;=0D u32 max_tp_access;=0D u32 stack_depth;=0D u32 id;=0D u32 func_cnt;=0D u32 func_idx;=0D u32 attach_btf_id;=0D u32 ctx_arg_info_size;=0D u32 max_rdonly_access;=0D u32 max_rdwr_access;=0D struct btf *attach_btf;=0D const struct bpf_ctx_arg_aux *ctx_arg_info;=0D struct mutex dst_mutex;=0D struct bpf_prog *dst_prog;=0D struct bpf_trampoline *dst_trampoline;=0D enum bpf_prog_type saved_dst_prog_type;=0D enum bpf_attach_type saved_dst_attach_type;=0D bool verifier_zext;=0D bool offload_requested;=0D bool attach_btf_trace;=0D bool func_proto_unreliable;=0D bool sleepable;=0D bool tail_call_reachable;=0D bool xdp_has_frags;=0D bool use_bpf_prog_pack;=0D struct hlist_node tramp_hlist;=0D =0D const struct btf_type *attach_func_proto;=0D =0D const char *attach_func_name;=0D struct bpf_prog **func;=0D void *jit_data;=0D struct bpf_jit_poke_descriptor *poke_tab;=0D struct bpf_kfunc_desc_tab *kfunc_tab;=0D struct bpf_kfunc_btf_tab *kfunc_btf_tab;=0D u32 size_poke_tab;=0D struct bpf_ksym ksym;=0D const struct bpf_prog_ops *ops;=0D struct bpf_map **used_maps;=0D struct mutex used_maps_mutex;=0D struct btf_mod_pair *used_btfs;=0D struct bpf_prog *prog;=0D struct user_struct *user;=0D u64 load_time;=0D u32 verified_insns;=0D struct bpf_map *cgroup_storage[__BPF_CGROUP_STORAGE_MAX];=0D char name[16U];=0D =0D =0D =0D struct bpf_prog_offload *offload;=0D struct btf *btf;=0D struct bpf_func_info *func_info;=0D struct bpf_func_info_aux *func_info_aux;=0D =0D =0D =0D =0D =0D =0D struct bpf_line_info *linfo;=0D =0D =0D =0D =0D =0D =0D =0D void **jited_linfo;=0D u32 func_info_cnt;=0D u32 nr_linfo;=0D =0D =0D =0D =0D u32 linfo_idx;=0D u32 num_exentries;=0D struct exception_table_entry *extable;=0D union {=0D struct work_struct work;=0D struct callback_head rcu;=0D };=0D };=0D =0D struct bpf_array_aux {=0D =0D struct list_head poke_progs;=0D struct bpf_map *map;=0D struct mutex poke_mutex;=0D struct work_struct work;=0D };=0D =0D struct bpf_link {=0D atomic64_t refcnt;=0D u32 id;=0D enum bpf_link_type type;=0D const struct bpf_link_ops *ops;=0D struct bpf_prog *prog;=0D struct work_struct work;=0D };=0D =0D struct bpf_link_ops {=0D void (*release)(struct bpf_link *link);=0D void (*dealloc)(struct bpf_link *link);=0D int (*detach)(struct bpf_link *link);=0D int (*update_prog)(struct bpf_link *link, struct bpf_prog *new_prog,=0D struct bpf_prog *old_prog);=0D void (*show_fdinfo)(const struct bpf_link *link, struct seq_file *seq);=0D int (*fill_link_info)(const struct bpf_link *link,=0D struct bpf_link_info *info);=0D };=0D =0D struct bpf_link_primer {=0D struct bpf_link *link;=0D struct file *file;=0D int fd;=0D u32 id;=0D };=0D =0D struct bpf_struct_ops_value;=0D struct btf_member;=0D =0D =0D struct bpf_struct_ops {=0D const struct bpf_verifier_ops *verifier_ops;=0D int (*init)(struct btf *btf);=0D int (*check_member)(const struct btf_type *t,=0D const struct btf_member *member);=0D int (*init_member)(const struct btf_type *t,=0D const struct btf_member *member,=0D void *kdata, const void *udata);=0D int (*reg)(void *kdata);=0D void (*unreg)(void *kdata);=0D const struct btf_type *type;=0D const struct btf_type *value_type;=0D const char *name;=0D struct btf_func_model func_models[64];=0D u32 type_id;=0D u32 value_id;=0D };=0D # 1122 "./include/linux/bpf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct bpf_struct_ops = *bpf_struct_ops_find(u32 type_id)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_struct_ops_init(str= uct btf *btf,=0D struct bpf_verifier_log *log)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_try_module_get(cons= t void *data, struct module *owner)=0D {=0D return try_module_get(owner);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_module_put(const vo= id *data, struct module *owner)=0D {=0D module_put(owner);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_struct_ops_map_sys_l= ookup_elem(struct bpf_map *map,=0D void *key,=0D void *value)=0D {=0D return -22;=0D }=0D =0D =0D struct bpf_array {=0D struct bpf_map map;=0D u32 elem_size;=0D u32 index_mask;=0D struct bpf_array_aux *aux;=0D union {=0D char value[0] __attribute__((__aligned__(8)));=0D void *ptrs[0] __attribute__((__aligned__(8)));=0D void *pptrs[0] __attribute__((__aligned__(8)));=0D };=0D };=0D # 1169 "./include/linux/bpf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_map_flags_to_cap(str= uct bpf_map *map)=0D {=0D u32 access_flags =3D map->map_flags & (BPF_F_RDONLY_PROG | BPF_F_WRONLY_PR= OG);=0D =0D =0D =0D =0D if (access_flags & BPF_F_RDONLY_PROG)=0D return ((((1UL))) << (0));=0D else if (access_flags & BPF_F_WRONLY_PROG)=0D return ((((1UL))) << (1));=0D else=0D return ((((1UL))) << (0)) | ((((1UL))) << (1));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_map_flags_access_ok= (u32 access_flags)=0D {=0D return (access_flags & (BPF_F_RDONLY_PROG | BPF_F_WRONLY_PROG)) !=3D=0D (BPF_F_RDONLY_PROG | BPF_F_WRONLY_PROG);=0D }=0D =0D struct bpf_event_entry {=0D struct perf_event *event;=0D struct file *perf_file;=0D struct file *map_file;=0D struct callback_head rcu;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool map_type_contains_progs= (struct bpf_map *map)=0D {=0D return map->map_type =3D=3D BPF_MAP_TYPE_PROG_ARRAY ||=0D map->map_type =3D=3D BPF_MAP_TYPE_DEVMAP ||=0D map->map_type =3D=3D BPF_MAP_TYPE_CPUMAP;=0D }=0D =0D bool bpf_prog_map_compatible(struct bpf_map *map, const struct bpf_prog *fp= );=0D int bpf_prog_calc_tag(struct bpf_prog *fp);=0D =0D const struct bpf_func_proto *bpf_get_trace_printk_proto(void);=0D const struct bpf_func_proto *bpf_get_trace_vprintk_proto(void);=0D =0D typedef unsigned long (*bpf_ctx_copy_t)(void *dst, const void *src,=0D unsigned long off, unsigned long len);=0D typedef u32 (*bpf_convert_ctx_access_t)(enum bpf_access_type type,=0D const struct bpf_insn *src,=0D struct bpf_insn *dst,=0D struct bpf_prog *prog,=0D u32 *target_size);=0D =0D u64 bpf_event_output(struct bpf_map *map, u64 flags, void *meta, u64 meta_s= ize,=0D void *ctx, u64 ctx_size, bpf_ctx_copy_t ctx_copy);=0D # 1233 "./include/linux/bpf.h"=0D struct bpf_prog_array_item {=0D struct bpf_prog *prog;=0D union {=0D struct bpf_cgroup_storage *cgroup_storage[__BPF_CGROUP_STORAGE_MAX];=0D u64 bpf_cookie;=0D };=0D };=0D =0D struct bpf_prog_array {=0D struct callback_head rcu;=0D struct bpf_prog_array_item items[];=0D };=0D =0D struct bpf_empty_prog_array {=0D struct bpf_prog_array hdr;=0D struct bpf_prog *null_prog;=0D };=0D =0D =0D =0D =0D =0D =0D =0D extern struct bpf_empty_prog_array bpf_empty_prog_array;=0D =0D struct bpf_prog_array *bpf_prog_array_alloc(u32 prog_cnt, gfp_t flags);=0D void bpf_prog_array_free(struct bpf_prog_array *progs);=0D int bpf_prog_array_length(struct bpf_prog_array *progs);=0D bool bpf_prog_array_is_empty(struct bpf_prog_array *array);=0D int bpf_prog_array_copy_to_user(struct bpf_prog_array *progs,=0D __u32 *prog_ids, u32 cnt);=0D =0D void bpf_prog_array_delete_safe(struct bpf_prog_array *progs,=0D struct bpf_prog *old_prog);=0D int bpf_prog_array_delete_safe_at(struct bpf_prog_array *array, int index);= =0D int bpf_prog_array_update_at(struct bpf_prog_array *array, int index,=0D struct bpf_prog *prog);=0D int bpf_prog_array_copy_info(struct bpf_prog_array *array,=0D u32 *prog_ids, u32 request_cnt,=0D u32 *prog_cnt);=0D int bpf_prog_array_copy(struct bpf_prog_array *old_array,=0D struct bpf_prog *exclude_prog,=0D struct bpf_prog *include_prog,=0D u64 bpf_cookie,=0D struct bpf_prog_array **new_array);=0D =0D struct bpf_run_ctx {};=0D =0D struct bpf_cg_run_ctx {=0D struct bpf_run_ctx run_ctx;=0D const struct bpf_prog_array_item *prog_item;=0D int retval;=0D };=0D =0D struct bpf_trace_run_ctx {=0D struct bpf_run_ctx run_ctx;=0D u64 bpf_cookie;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct bpf_run_ctx *bpf_set_= run_ctx(struct bpf_run_ctx *new_ctx)=0D {=0D struct bpf_run_ctx *old_ctx =3D ((void *)0);=0D =0D =0D old_ctx =3D get_current()->bpf_ctx;=0D get_current()->bpf_ctx =3D new_ctx;=0D =0D return old_ctx;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_reset_run_ctx(struc= t bpf_run_ctx *old_ctx)=0D {=0D =0D get_current()->bpf_ctx =3D old_ctx;=0D =0D }=0D =0D =0D =0D =0D =0D =0D typedef u32 (*bpf_prog_run_fn)(const struct bpf_prog *prog, const void *ctx= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D BPF_PROG_RUN_ARRAY_CG_FLAGS(const struct bpf_prog_array *array_rcu,=0D const void *ctx, bpf_prog_run_fn run_prog,=0D int retval, u32 *ret_flags)=0D {=0D const struct bpf_prog_array_item *item;=0D const struct bpf_prog *prog;=0D const struct bpf_prog_array *array;=0D struct bpf_run_ctx *old_run_ctx;=0D struct bpf_cg_run_ctx run_ctx;=0D u32 func_ret;=0D =0D run_ctx.retval =3D retval;=0D migrate_disable();=0D rcu_read_lock();=0D array =3D ({ typeof(*(array_rcu)) *__UNIQUE_ID_rcu531 =3D (typeof(*(array_= rcu)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_532(void) ; if (!((sizeof((array_rcu)) =3D=3D sizeof(char) || sizeof((a= rray_rcu)) =3D=3D sizeof(short) || sizeof((array_rcu)) =3D=3D sizeof(int) |= | sizeof((array_rcu)) =3D=3D sizeof(long)) || sizeof((array_rcu)) =3D=3D si= zeof(long long))) __compiletime_assert_532(); } while (0); (*(const volatil= e typeof( _Generic(((array_rcu)), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: ((array_rcu)))) *)&((array_rcu))); }); do { } while (0 && (!((= 0) || rcu_read_lock_held()))); ; ((typeof(*(array_rcu)) *)(__UNIQUE_ID_rcu5= 31)); });=0D item =3D &array->items[0];=0D old_run_ctx =3D bpf_set_run_ctx(&run_ctx.run_ctx);=0D while ((prog =3D ({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_533(void) ; if (!((sizeof(item->prog) =3D=3D sizeof(char) || = sizeof(item->prog) =3D=3D sizeof(short) || sizeof(item->prog) =3D=3D sizeof= (int) || sizeof(item->prog) =3D=3D sizeof(long)) || sizeof(item->prog) =3D= =3D sizeof(long long))) __compiletime_assert_533(); } while (0); (*(const v= olatile typeof( _Generic((item->prog), char: (char)0, unsigned char: (unsig= ned char)0, signed char: (signed char)0, unsigned short: (unsigned short)0,= signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: = (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0= , unsigned long long: (unsigned long long)0, signed long long: (signed long= long)0, default: (item->prog))) *)&(item->prog)); }))) {=0D run_ctx.prog_item =3D item;=0D func_ret =3D run_prog(prog, ctx);=0D if (!(func_ret & 1) && !__builtin_expect(!!((unsigned long)(void *)((long= )run_ctx.retval) >=3D (unsigned long)-4095), 0))=0D run_ctx.retval =3D -1;=0D *(ret_flags) |=3D (func_ret >> 1);=0D item++;=0D }=0D bpf_reset_run_ctx(old_run_ctx);=0D rcu_read_unlock();=0D migrate_enable();=0D return run_ctx.retval;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int=0D BPF_PROG_RUN_ARRAY_CG(const struct bpf_prog_array *array_rcu,=0D const void *ctx, bpf_prog_run_fn run_prog,=0D int retval)=0D {=0D const struct bpf_prog_array_item *item;=0D const struct bpf_prog *prog;=0D const struct bpf_prog_array *array;=0D struct bpf_run_ctx *old_run_ctx;=0D struct bpf_cg_run_ctx run_ctx;=0D =0D run_ctx.retval =3D retval;=0D migrate_disable();=0D rcu_read_lock();=0D array =3D ({ typeof(*(array_rcu)) *__UNIQUE_ID_rcu534 =3D (typeof(*(array_= rcu)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_535(void) ; if (!((sizeof((array_rcu)) =3D=3D sizeof(char) || sizeof((a= rray_rcu)) =3D=3D sizeof(short) || sizeof((array_rcu)) =3D=3D sizeof(int) |= | sizeof((array_rcu)) =3D=3D sizeof(long)) || sizeof((array_rcu)) =3D=3D si= zeof(long long))) __compiletime_assert_535(); } while (0); (*(const volatil= e typeof( _Generic(((array_rcu)), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: ((array_rcu)))) *)&((array_rcu))); }); do { } while (0 && (!((= 0) || rcu_read_lock_held()))); ; ((typeof(*(array_rcu)) *)(__UNIQUE_ID_rcu5= 34)); });=0D item =3D &array->items[0];=0D old_run_ctx =3D bpf_set_run_ctx(&run_ctx.run_ctx);=0D while ((prog =3D ({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_536(void) ; if (!((sizeof(item->prog) =3D=3D sizeof(char) || = sizeof(item->prog) =3D=3D sizeof(short) || sizeof(item->prog) =3D=3D sizeof= (int) || sizeof(item->prog) =3D=3D sizeof(long)) || sizeof(item->prog) =3D= =3D sizeof(long long))) __compiletime_assert_536(); } while (0); (*(const v= olatile typeof( _Generic((item->prog), char: (char)0, unsigned char: (unsig= ned char)0, signed char: (signed char)0, unsigned short: (unsigned short)0,= signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: = (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0= , unsigned long long: (unsigned long long)0, signed long long: (signed long= long)0, default: (item->prog))) *)&(item->prog)); }))) {=0D run_ctx.prog_item =3D item;=0D if (!run_prog(prog, ctx) && !__builtin_expect(!!((unsigned long)(void *)(= (long)run_ctx.retval) >=3D (unsigned long)-4095), 0))=0D run_ctx.retval =3D -1;=0D item++;=0D }=0D bpf_reset_run_ctx(old_run_ctx);=0D rcu_read_unlock();=0D migrate_enable();=0D return run_ctx.retval;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32=0D BPF_PROG_RUN_ARRAY(const struct bpf_prog_array *array_rcu,=0D const void *ctx, bpf_prog_run_fn run_prog)=0D {=0D const struct bpf_prog_array_item *item;=0D const struct bpf_prog *prog;=0D const struct bpf_prog_array *array;=0D struct bpf_run_ctx *old_run_ctx;=0D struct bpf_trace_run_ctx run_ctx;=0D u32 ret =3D 1;=0D =0D migrate_disable();=0D rcu_read_lock();=0D array =3D ({ typeof(*(array_rcu)) *__UNIQUE_ID_rcu537 =3D (typeof(*(array_= rcu)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_538(void) ; if (!((sizeof((array_rcu)) =3D=3D sizeof(char) || sizeof((a= rray_rcu)) =3D=3D sizeof(short) || sizeof((array_rcu)) =3D=3D sizeof(int) |= | sizeof((array_rcu)) =3D=3D sizeof(long)) || sizeof((array_rcu)) =3D=3D si= zeof(long long))) __compiletime_assert_538(); } while (0); (*(const volatil= e typeof( _Generic(((array_rcu)), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: ((array_rcu)))) *)&((array_rcu))); }); do { } while (0 && (!((= 0) || rcu_read_lock_held()))); ; ((typeof(*(array_rcu)) *)(__UNIQUE_ID_rcu5= 37)); });=0D if (__builtin_expect(!!(!array), 0))=0D goto out;=0D old_run_ctx =3D bpf_set_run_ctx(&run_ctx.run_ctx);=0D item =3D &array->items[0];=0D while ((prog =3D ({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_539(void) ; if (!((sizeof(item->prog) =3D=3D sizeof(char) || = sizeof(item->prog) =3D=3D sizeof(short) || sizeof(item->prog) =3D=3D sizeof= (int) || sizeof(item->prog) =3D=3D sizeof(long)) || sizeof(item->prog) =3D= =3D sizeof(long long))) __compiletime_assert_539(); } while (0); (*(const v= olatile typeof( _Generic((item->prog), char: (char)0, unsigned char: (unsig= ned char)0, signed char: (signed char)0, unsigned short: (unsigned short)0,= signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: = (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0= , unsigned long long: (unsigned long long)0, signed long long: (signed long= long)0, default: (item->prog))) *)&(item->prog)); }))) {=0D run_ctx.bpf_cookie =3D item->bpf_cookie;=0D ret &=3D run_prog(prog, ctx);=0D item++;=0D }=0D bpf_reset_run_ctx(old_run_ctx);=0D out:=0D rcu_read_unlock();=0D migrate_enable();=0D return ret;=0D }=0D # 1448 "./include/linux/bpf.h"=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) bpf_pro= g_active;=0D extern struct mutex bpf_stats_enabled_mutex;=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_disable_instrumenta= tion(void)=0D {=0D migrate_disable();=0D do { do { const void *__vpp_verify =3D (typeof((&(bpf_prog_active)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); switch(sizeof(bpf_prog_active)= ) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; type= of(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D= arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify= =3D (typeof((&(bpf_prog_active)) + 0))((void *)0); (void)__vpp_verify; } w= hile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(bp= f_prog_active))) *)(&(bpf_prog_active))); (typeof((typeof(*(&(bpf_prog_acti= ve))) *)(&(bpf_prog_active)))) (__ptr + (((__per_cpu_offset[(((struct threa= d_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ uns= igned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dum= my2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0)= ; } while (0);break; case 2: do { unsigned long __flags; do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const v= oid *__vpp_verify =3D (typeof((&(bpf_prog_active)) + 0))((void *)0); (void)= __vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long= ) ((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_active))); (typeof((typeof(= *(&(bpf_prog_active))) *)(&(bpf_prog_active)))) (__ptr + (((__per_cpu_offse= t[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while= (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__fl= ags); } while (0); } while (0);break; case 4: do { unsigned long __flags; d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do {= *({ do { const void *__vpp_verify =3D (typeof((&(bpf_prog_active)) + 0))((= void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_active)))= ; (typeof((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_active)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __du= mmy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_loca= l_irq_restore(__flags); } while (0); } while (0);break; case 8: do { unsign= ed long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save();= } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(bpf_pro= g_active)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned l= ong __ptr; __ptr =3D (unsigned long) ((typeof(*(&(bpf_prog_active))) *)(&(b= pf_prog_active))); (typeof((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_act= ive)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())= ->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typ= eof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } whi= le (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; de= fault: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_enable_instrumentat= ion(void)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(bpf_prog_active)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); switch(sizeof(bpf_prog_active)= ) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; type= of(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D= arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify= =3D (typeof((&(bpf_prog_active)) + 0))((void *)0); (void)__vpp_verify; } w= hile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(bp= f_prog_active))) *)(&(bpf_prog_active))); (typeof((typeof(*(&(bpf_prog_acti= ve))) *)(&(bpf_prog_active)))) (__ptr + (((__per_cpu_offset[(((struct threa= d_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(bpf_prog_active))(= 1); } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_r= estore(__flags); } while (0); } while (0);break; case 2: do { unsigned long= __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&= __dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } whil= e (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(bpf_prog_activ= e)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __p= tr; __ptr =3D (unsigned long) ((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog= _active))); (typeof((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_active))))= (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]= )))); }); }) +=3D -(typeof(bpf_prog_active))(1); } while (0); do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); = } while (0);break; case 4: do { unsigned long __flags; do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const voi= d *__vpp_verify =3D (typeof((&(bpf_prog_active)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(bpf_prog_active))) *)(&(bpf_prog_active))); (typeof((typeof(*(= &(bpf_prog_active))) *)(&(bpf_prog_active)))) (__ptr + (((__per_cpu_offset[= (((struct thread_info *)get_current())->cpu)])))); }); }) +=3D -(typeof(bpf= _prog_active))(1); } while (0); do { ({ unsigned long __dummy; typeof(__fla= gs) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); a= rch_local_irq_restore(__flags); } while (0); } while (0);break; case 8: do = { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __d= ummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq= _save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&= (bpf_prog_active)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(bpf_prog_active))= ) *)(&(bpf_prog_active))); (typeof((typeof(*(&(bpf_prog_active))) *)(&(bpf_= prog_active)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); }) +=3D -(typeof(bpf_prog_active))(1); } while (0)= ; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; default: __bad_size_call_parameter();brea= k; } } while (0);=0D migrate_enable();=0D }=0D =0D extern const struct file_operations bpf_map_fops;=0D extern const struct file_operations bpf_prog_fops;=0D extern const struct file_operations bpf_iter_fops;=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/bpf_types.h" 1=0D =0D =0D =0D =0D extern const struct bpf_prog_ops sk_filter_prog_ops; extern const struct bp= f_verifier_ops sk_filter_verifier_ops;=0D =0D extern const struct bpf_prog_ops tc_cls_act_prog_ops; extern const struct b= pf_verifier_ops tc_cls_act_verifier_ops;=0D =0D extern const struct bpf_prog_ops tc_cls_act_prog_ops; extern const struct b= pf_verifier_ops tc_cls_act_verifier_ops;=0D =0D extern const struct bpf_prog_ops xdp_prog_ops; extern const struct bpf_veri= fier_ops xdp_verifier_ops;=0D =0D =0D extern const struct bpf_prog_ops cg_skb_prog_ops; extern const struct bpf_v= erifier_ops cg_skb_verifier_ops;=0D =0D extern const struct bpf_prog_ops cg_sock_prog_ops; extern const struct bpf_= verifier_ops cg_sock_verifier_ops;=0D =0D extern const struct bpf_prog_ops cg_sock_addr_prog_ops; extern const struct= bpf_verifier_ops cg_sock_addr_verifier_ops;=0D =0D =0D extern const struct bpf_prog_ops lwt_in_prog_ops; extern const struct bpf_v= erifier_ops lwt_in_verifier_ops;=0D =0D extern const struct bpf_prog_ops lwt_out_prog_ops; extern const struct bpf_= verifier_ops lwt_out_verifier_ops;=0D =0D extern const struct bpf_prog_ops lwt_xmit_prog_ops; extern const struct bpf= _verifier_ops lwt_xmit_verifier_ops;=0D =0D extern const struct bpf_prog_ops lwt_seg6local_prog_ops; extern const struc= t bpf_verifier_ops lwt_seg6local_verifier_ops;=0D =0D extern const struct bpf_prog_ops sock_ops_prog_ops; extern const struct bpf= _verifier_ops sock_ops_verifier_ops;=0D =0D extern const struct bpf_prog_ops sk_skb_prog_ops; extern const struct bpf_v= erifier_ops sk_skb_verifier_ops;=0D =0D extern const struct bpf_prog_ops sk_msg_prog_ops; extern const struct bpf_v= erifier_ops sk_msg_verifier_ops;=0D =0D extern const struct bpf_prog_ops flow_dissector_prog_ops; extern const stru= ct bpf_verifier_ops flow_dissector_verifier_ops;=0D =0D =0D =0D extern const struct bpf_prog_ops kprobe_prog_ops; extern const struct bpf_v= erifier_ops kprobe_verifier_ops;=0D =0D extern const struct bpf_prog_ops tracepoint_prog_ops; extern const struct b= pf_verifier_ops tracepoint_verifier_ops;=0D =0D extern const struct bpf_prog_ops perf_event_prog_ops; extern const struct b= pf_verifier_ops perf_event_verifier_ops;=0D =0D extern const struct bpf_prog_ops raw_tracepoint_prog_ops; extern const stru= ct bpf_verifier_ops raw_tracepoint_verifier_ops;=0D =0D extern const struct bpf_prog_ops raw_tracepoint_writable_prog_ops; extern c= onst struct bpf_verifier_ops raw_tracepoint_writable_verifier_ops;=0D =0D extern const struct bpf_prog_ops tracing_prog_ops; extern const struct bpf_= verifier_ops tracing_verifier_ops;=0D =0D =0D =0D extern const struct bpf_prog_ops cg_dev_prog_ops; extern const struct bpf_v= erifier_ops cg_dev_verifier_ops;=0D =0D extern const struct bpf_prog_ops cg_sysctl_prog_ops; extern const struct bp= f_verifier_ops cg_sysctl_verifier_ops;=0D =0D extern const struct bpf_prog_ops cg_sockopt_prog_ops; extern const struct b= pf_verifier_ops cg_sockopt_verifier_ops;=0D =0D =0D =0D =0D =0D =0D =0D extern const struct bpf_prog_ops sk_reuseport_prog_ops; extern const struct= bpf_verifier_ops sk_reuseport_verifier_ops;=0D =0D extern const struct bpf_prog_ops sk_lookup_prog_ops; extern const struct bp= f_verifier_ops sk_lookup_verifier_ops;=0D # 80 "./include/linux/bpf_types.h"=0D extern const struct bpf_prog_ops bpf_syscall_prog_ops; extern const struct = bpf_verifier_ops bpf_syscall_verifier_ops;=0D =0D =0D extern const struct bpf_map_ops array_map_ops;=0D extern const struct bpf_map_ops percpu_array_map_ops;=0D extern const struct bpf_map_ops prog_array_map_ops;=0D extern const struct bpf_map_ops perf_event_array_map_ops;=0D =0D extern const struct bpf_map_ops cgroup_array_map_ops;=0D =0D =0D extern const struct bpf_map_ops cgroup_storage_map_ops;=0D extern const struct bpf_map_ops cgroup_storage_map_ops;=0D =0D extern const struct bpf_map_ops htab_map_ops;=0D extern const struct bpf_map_ops htab_percpu_map_ops;=0D extern const struct bpf_map_ops htab_lru_map_ops;=0D extern const struct bpf_map_ops htab_lru_percpu_map_ops;=0D extern const struct bpf_map_ops trie_map_ops;=0D =0D extern const struct bpf_map_ops stack_trace_map_ops;=0D =0D extern const struct bpf_map_ops array_of_maps_map_ops;=0D extern const struct bpf_map_ops htab_of_maps_map_ops;=0D =0D =0D =0D extern const struct bpf_map_ops task_storage_map_ops;=0D =0D extern const struct bpf_map_ops dev_map_ops;=0D extern const struct bpf_map_ops dev_map_hash_ops;=0D extern const struct bpf_map_ops sk_storage_map_ops;=0D extern const struct bpf_map_ops cpu_map_ops;=0D =0D =0D =0D =0D extern const struct bpf_map_ops sock_map_ops;=0D extern const struct bpf_map_ops sock_hash_ops;=0D extern const struct bpf_map_ops reuseport_array_ops;=0D =0D =0D extern const struct bpf_map_ops queue_map_ops;=0D extern const struct bpf_map_ops stack_map_ops;=0D =0D =0D =0D extern const struct bpf_map_ops ringbuf_map_ops;=0D extern const struct bpf_map_ops bloom_filter_map_ops;=0D # 1480 "./include/linux/bpf.h" 2=0D =0D =0D =0D =0D extern const struct bpf_prog_ops bpf_offload_prog_ops;=0D extern const struct bpf_verifier_ops tc_cls_act_analyzer_ops;=0D extern const struct bpf_verifier_ops xdp_analyzer_ops;=0D =0D struct bpf_prog *bpf_prog_get(u32 ufd);=0D struct bpf_prog *bpf_prog_get_type_dev(u32 ufd, enum bpf_prog_type type,=0D bool attach_drv);=0D void bpf_prog_add(struct bpf_prog *prog, int i);=0D void bpf_prog_sub(struct bpf_prog *prog, int i);=0D void bpf_prog_inc(struct bpf_prog *prog);=0D struct bpf_prog * __attribute__((__warn_unused_result__)) bpf_prog_inc_not_= zero(struct bpf_prog *prog);=0D void bpf_prog_put(struct bpf_prog *prog);=0D =0D void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock);=0D void bpf_map_free_id(struct bpf_map *map, bool do_idr_lock);=0D =0D struct bpf_map *bpf_map_get(u32 ufd);=0D struct bpf_map *bpf_map_get_with_uref(u32 ufd);=0D struct bpf_map *__bpf_map_get(struct fd f);=0D void bpf_map_inc(struct bpf_map *map);=0D void bpf_map_inc_with_uref(struct bpf_map *map);=0D struct bpf_map * __attribute__((__warn_unused_result__)) bpf_map_inc_not_ze= ro(struct bpf_map *map);=0D void bpf_map_put_with_uref(struct bpf_map *map);=0D void bpf_map_put(struct bpf_map *map);=0D void *bpf_map_area_alloc(u64 size, int numa_node);=0D void *bpf_map_area_mmapable_alloc(u64 size, int numa_node);=0D void bpf_map_area_free(void *base);=0D bool bpf_map_write_active(const struct bpf_map *map);=0D void bpf_map_init_from_attr(struct bpf_map *map, union bpf_attr *attr);=0D int generic_map_lookup_batch(struct bpf_map *map,=0D const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D int generic_map_update_batch(struct bpf_map *map,=0D const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D int generic_map_delete_batch(struct bpf_map *map,=0D const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D struct bpf_map *bpf_map_get_curr_or_next(u32 *id);=0D struct bpf_prog *bpf_prog_get_curr_or_next(u32 *id);=0D # 1532 "./include/linux/bpf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *=0D bpf_map_kmalloc_node(const struct bpf_map *map, size_t size, gfp_t flags,=0D int node)=0D {=0D return kmalloc_node(size, flags, node);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *=0D bpf_map_kzalloc(const struct bpf_map *map, size_t size, gfp_t flags)=0D {=0D return kzalloc(size, flags);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *=0D bpf_map_alloc_percpu(const struct bpf_map *map, size_t size, size_t align,= =0D gfp_t flags)=0D {=0D return __alloc_percpu_gfp(size, align, flags);=0D }=0D =0D =0D extern int sysctl_unprivileged_bpf_disabled;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_allow_ptr_leaks(voi= d)=0D {=0D return perfmon_capable();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_allow_uninit_stack(= void)=0D {=0D return perfmon_capable();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_allow_ptr_to_map_ac= cess(void)=0D {=0D return perfmon_capable();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_bypass_spec_v1(void= )=0D {=0D return perfmon_capable();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_bypass_spec_v4(void= )=0D {=0D return perfmon_capable();=0D }=0D =0D int bpf_map_new_fd(struct bpf_map *map, int flags);=0D int bpf_prog_new_fd(struct bpf_prog *prog);=0D =0D void bpf_link_init(struct bpf_link *link, enum bpf_link_type type,=0D const struct bpf_link_ops *ops, struct bpf_prog *prog);=0D int bpf_link_prime(struct bpf_link *link, struct bpf_link_primer *primer);= =0D int bpf_link_settle(struct bpf_link_primer *primer);=0D void bpf_link_cleanup(struct bpf_link_primer *primer);=0D void bpf_link_inc(struct bpf_link *link);=0D void bpf_link_put(struct bpf_link *link);=0D int bpf_link_new_fd(struct bpf_link *link);=0D struct file *bpf_link_new_file(struct bpf_link *link, int *reserved_fd);=0D struct bpf_link *bpf_link_get_from_fd(u32 ufd);=0D =0D int bpf_obj_pin_user(u32 ufd, const char *pathname);=0D int bpf_obj_get_user(const char *pathname, int flags);=0D =0D =0D =0D =0D =0D =0D struct bpf_iter_aux_info {=0D struct bpf_map *map;=0D };=0D =0D typedef int (*bpf_iter_attach_target_t)(struct bpf_prog *prog,=0D union bpf_iter_link_info *linfo,=0D struct bpf_iter_aux_info *aux);=0D typedef void (*bpf_iter_detach_target_t)(struct bpf_iter_aux_info *aux);=0D typedef void (*bpf_iter_show_fdinfo_t) (const struct bpf_iter_aux_info *aux= ,=0D struct seq_file *seq);=0D typedef int (*bpf_iter_fill_link_info_t)(const struct bpf_iter_aux_info *au= x,=0D struct bpf_link_info *info);=0D typedef const struct bpf_func_proto *=0D (*bpf_iter_get_func_proto_t)(enum bpf_func_id func_id,=0D const struct bpf_prog *prog);=0D =0D enum bpf_iter_feature {=0D BPF_ITER_RESCHED =3D ((((1UL))) << (0)),=0D };=0D =0D =0D struct bpf_iter_reg {=0D const char *target;=0D bpf_iter_attach_target_t attach_target;=0D bpf_iter_detach_target_t detach_target;=0D bpf_iter_show_fdinfo_t show_fdinfo;=0D bpf_iter_fill_link_info_t fill_link_info;=0D bpf_iter_get_func_proto_t get_func_proto;=0D u32 ctx_arg_info_size;=0D u32 feature;=0D struct bpf_ctx_arg_aux ctx_arg_info[2];=0D const struct bpf_iter_seq_info *seq_info;=0D };=0D =0D struct bpf_iter_meta {=0D union { struct seq_file * seq; __u64 :64; } __attribute__((aligned(8)));=0D u64 session_id;=0D u64 seq_num;=0D };=0D =0D struct bpf_iter__bpf_map_elem {=0D union { struct bpf_iter_meta * meta; __u64 :64; } __attribute__((aligned(8= )));=0D union { struct bpf_map * map; __u64 :64; } __attribute__((aligned(8)));=0D union { void * key; __u64 :64; } __attribute__((aligned(8)));=0D union { void * value; __u64 :64; } __attribute__((aligned(8)));=0D };=0D =0D int bpf_iter_reg_target(const struct bpf_iter_reg *reg_info);=0D void bpf_iter_unreg_target(const struct bpf_iter_reg *reg_info);=0D bool bpf_iter_prog_supported(struct bpf_prog *prog);=0D const struct bpf_func_proto *=0D bpf_iter_get_func_proto(enum bpf_func_id func_id, const struct bpf_prog *pr= og);=0D int bpf_iter_link_attach(const union bpf_attr *attr, bpfptr_t uattr, struct= bpf_prog *prog);=0D int bpf_iter_new_fd(struct bpf_link *link);=0D bool bpf_link_is_iter(struct bpf_link *link);=0D struct bpf_prog *bpf_iter_get_info(struct bpf_iter_meta *meta, bool in_stop= );=0D int bpf_iter_run_prog(struct bpf_prog *prog, void *ctx);=0D void bpf_iter_map_show_fdinfo(const struct bpf_iter_aux_info *aux,=0D struct seq_file *seq);=0D int bpf_iter_map_fill_link_info(const struct bpf_iter_aux_info *aux,=0D struct bpf_link_info *info);=0D =0D int map_set_for_each_callback_args(struct bpf_verifier_env *env,=0D struct bpf_func_state *caller,=0D struct bpf_func_state *callee);=0D =0D int bpf_percpu_hash_copy(struct bpf_map *map, void *key, void *value);=0D int bpf_percpu_array_copy(struct bpf_map *map, void *key, void *value);=0D int bpf_percpu_hash_update(struct bpf_map *map, void *key, void *value,=0D u64 flags);=0D int bpf_percpu_array_update(struct bpf_map *map, void *key, void *value,=0D u64 flags);=0D =0D int bpf_stackmap_copy(struct bpf_map *map, void *key, void *value);=0D =0D int bpf_fd_array_map_update_elem(struct bpf_map *map, struct file *map_file= ,=0D void *key, void *value, u64 map_flags);=0D int bpf_fd_array_map_lookup_elem(struct bpf_map *map, void *key, u32 *value= );=0D int bpf_fd_htab_map_update_elem(struct bpf_map *map, struct file *map_file,= =0D void *key, void *value, u64 map_flags);=0D int bpf_fd_htab_map_lookup_elem(struct bpf_map *map, void *key, u32 *value)= ;=0D =0D int bpf_get_file_flag(int flags);=0D int bpf_check_uarg_tail_zero(bpfptr_t uaddr, size_t expected_size,=0D size_t actual_size);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_long_memcpy(void *d= st, const void *src, u32 size)=0D {=0D const long *lsrc =3D src;=0D long *ldst =3D dst;=0D =0D size /=3D sizeof(long);=0D while (size--)=0D *ldst++ =3D *lsrc++;=0D }=0D =0D =0D int bpf_check(struct bpf_prog **fp, union bpf_attr *attr, bpfptr_t uattr);= =0D =0D =0D void bpf_patch_call_args(struct bpf_insn *insn, u32 stack_depth);=0D =0D =0D struct btf *bpf_get_btf_vmlinux(void);=0D =0D =0D struct xdp_frame;=0D struct sk_buff;=0D struct bpf_dtab_netdev;=0D struct bpf_cpu_map_entry;=0D =0D void __dev_flush(void);=0D int dev_xdp_enqueue(struct net_device *dev, struct xdp_frame *xdpf,=0D struct net_device *dev_rx);=0D int dev_map_enqueue(struct bpf_dtab_netdev *dst, struct xdp_frame *xdpf,=0D struct net_device *dev_rx);=0D int dev_map_enqueue_multi(struct xdp_frame *xdpf, struct net_device *dev_rx= ,=0D struct bpf_map *map, bool exclude_ingress);=0D int dev_map_generic_redirect(struct bpf_dtab_netdev *dst, struct sk_buff *s= kb,=0D struct bpf_prog *xdp_prog);=0D int dev_map_redirect_multi(struct net_device *dev, struct sk_buff *skb,=0D struct bpf_prog *xdp_prog, struct bpf_map *map,=0D bool exclude_ingress);=0D =0D void __cpu_map_flush(void);=0D int cpu_map_enqueue(struct bpf_cpu_map_entry *rcpu, struct xdp_frame *xdpf,= =0D struct net_device *dev_rx);=0D int cpu_map_generic_redirect(struct bpf_cpu_map_entry *rcpu,=0D struct sk_buff *skb);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_map_attr_numa_node(c= onst union bpf_attr *attr)=0D {=0D return (attr->map_flags & BPF_F_NUMA_NODE) ?=0D attr->numa_node : (-1);=0D }=0D =0D struct bpf_prog *bpf_prog_get_type_path(const char *name, enum bpf_prog_typ= e type);=0D int array_map_alloc_check(union bpf_attr *attr);=0D =0D int bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *katt= r,=0D union bpf_attr *uattr);=0D int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *katt= r,=0D union bpf_attr *uattr);=0D int bpf_prog_test_run_tracing(struct bpf_prog *prog,=0D const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D int bpf_prog_test_run_flow_dissector(struct bpf_prog *prog,=0D const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D int bpf_prog_test_run_raw_tp(struct bpf_prog *prog,=0D const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D int bpf_prog_test_run_sk_lookup(struct bpf_prog *prog,=0D const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D bool btf_ctx_access(int off, int size, enum bpf_access_type type,=0D const struct bpf_prog *prog,=0D struct bpf_insn_access_aux *info);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_tracing_ctx_access(= int off, int size,=0D enum bpf_access_type type)=0D {=0D if (off < 0 || off >=3D sizeof(__u64) * 12)=0D return false;=0D if (type !=3D BPF_READ)=0D return false;=0D if (off % size !=3D 0)=0D return false;=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_tracing_btf_ctx_acc= ess(int off, int size,=0D enum bpf_access_type type,=0D const struct bpf_prog *prog,=0D struct bpf_insn_access_aux *info)=0D {=0D if (!bpf_tracing_ctx_access(off, size, type))=0D return false;=0D return btf_ctx_access(off, size, type, prog, info);=0D }=0D =0D int btf_struct_access(struct bpf_verifier_log *log, const struct btf *btf,= =0D const struct btf_type *t, int off, int size,=0D enum bpf_access_type atype,=0D u32 *next_btf_id, enum bpf_type_flag *flag);=0D bool btf_struct_ids_match(struct bpf_verifier_log *log,=0D const struct btf *btf, u32 id, int off,=0D const struct btf *need_btf, u32 need_type_id);=0D =0D int btf_distill_func_proto(struct bpf_verifier_log *log,=0D struct btf *btf,=0D const struct btf_type *func_proto,=0D const char *func_name,=0D struct btf_func_model *m);=0D =0D struct bpf_reg_state;=0D int btf_check_subprog_arg_match(struct bpf_verifier_env *env, int subprog,= =0D struct bpf_reg_state *regs);=0D int btf_check_kfunc_arg_match(struct bpf_verifier_env *env,=0D const struct btf *btf, u32 func_id,=0D struct bpf_reg_state *regs);=0D int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog,=0D struct bpf_reg_state *reg);=0D int btf_check_type_match(struct bpf_verifier_log *log, const struct bpf_pro= g *prog,=0D struct btf *btf, const struct btf_type *t);=0D =0D struct bpf_prog *bpf_prog_by_id(u32 id);=0D struct bpf_link *bpf_link_by_id(u32 id);=0D =0D const struct bpf_func_proto *bpf_base_func_proto(enum bpf_func_id func_id);= =0D void bpf_task_storage_free(struct task_struct *task);=0D bool bpf_prog_has_kfunc_call(const struct bpf_prog *prog);=0D const struct btf_func_model *=0D bpf_jit_find_kfunc_model(const struct bpf_prog *prog,=0D const struct bpf_insn *insn);=0D struct bpf_core_ctx {=0D struct bpf_verifier_log *log;=0D const struct btf *btf;=0D };=0D =0D int bpf_core_apply(struct bpf_core_ctx *ctx, const struct bpf_core_relo *re= lo,=0D int relo_idx, void *insn);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool unprivileged_ebpf_enabl= ed(void)=0D {=0D return !sysctl_unprivileged_bpf_disabled;=0D }=0D # 2048 "./include/linux/bpf.h"=0D void __bpf_free_used_btfs(struct bpf_prog_aux *aux,=0D struct btf_mod_pair *used_btfs, u32 len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct bpf_prog *bpf_prog_ge= t_type(u32 ufd,=0D enum bpf_prog_type type)=0D {=0D return bpf_prog_get_type_dev(ufd, type, false);=0D }=0D =0D void __bpf_free_used_maps(struct bpf_prog_aux *aux,=0D struct bpf_map **used_maps, u32 len);=0D =0D bool bpf_prog_get_ok(struct bpf_prog *, enum bpf_prog_type *, bool);=0D =0D int bpf_prog_offload_compile(struct bpf_prog *prog);=0D void bpf_prog_offload_destroy(struct bpf_prog *prog);=0D int bpf_prog_offload_info_fill(struct bpf_prog_info *info,=0D struct bpf_prog *prog);=0D =0D int bpf_map_offload_info_fill(struct bpf_map_info *info, struct bpf_map *ma= p);=0D =0D int bpf_map_offload_lookup_elem(struct bpf_map *map, void *key, void *value= );=0D int bpf_map_offload_update_elem(struct bpf_map *map,=0D void *key, void *value, u64 flags);=0D int bpf_map_offload_delete_elem(struct bpf_map *map, void *key);=0D int bpf_map_offload_get_next_key(struct bpf_map *map,=0D void *key, void *next_key);=0D =0D bool bpf_offload_prog_map_match(struct bpf_prog *prog, struct bpf_map *map)= ;=0D =0D struct bpf_offload_dev *=0D bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops, void *priv);= =0D void bpf_offload_dev_destroy(struct bpf_offload_dev *offdev);=0D void *bpf_offload_dev_priv(struct bpf_offload_dev *offdev);=0D int bpf_offload_dev_netdev_register(struct bpf_offload_dev *offdev,=0D struct net_device *netdev);=0D void bpf_offload_dev_netdev_unregister(struct bpf_offload_dev *offdev,=0D struct net_device *netdev);=0D bool bpf_offload_dev_match(struct bpf_prog *prog, struct net_device *netdev= );=0D =0D =0D int bpf_prog_offload_init(struct bpf_prog *prog, union bpf_attr *attr);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_prog_is_dev_bound(c= onst struct bpf_prog_aux *aux)=0D {=0D return aux->offload_requested;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_map_is_dev_bound(st= ruct bpf_map *map)=0D {=0D return __builtin_expect(!!(map->ops =3D=3D &bpf_map_offload_ops), 0);=0D }=0D =0D struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr);=0D void bpf_map_offload_map_free(struct bpf_map *map);=0D int bpf_prog_test_run_syscall(struct bpf_prog *prog,=0D const union bpf_attr *kattr,=0D union bpf_attr *uattr);=0D =0D int sock_map_get_from_fd(const union bpf_attr *attr, struct bpf_prog *prog)= ;=0D int sock_map_prog_detach(const union bpf_attr *attr, enum bpf_prog_type pty= pe);=0D int sock_map_update_elem_sys(struct bpf_map *map, void *key, void *value, u= 64 flags);=0D int sock_map_bpf_prog_query(const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D =0D void sock_map_unhash(struct sock *sk);=0D void sock_map_close(struct sock *sk, long timeout);=0D # 2176 "./include/linux/bpf.h"=0D void bpf_sk_reuseport_detach(struct sock *sk);=0D int bpf_fd_reuseport_array_lookup_elem(struct bpf_map *map, void *key,=0D void *value);=0D int bpf_fd_reuseport_array_update_elem(struct bpf_map *map, void *key,=0D void *value, u64 map_flags);=0D # 2203 "./include/linux/bpf.h"=0D extern const struct bpf_func_proto bpf_map_lookup_elem_proto;=0D extern const struct bpf_func_proto bpf_map_update_elem_proto;=0D extern const struct bpf_func_proto bpf_map_delete_elem_proto;=0D extern const struct bpf_func_proto bpf_map_push_elem_proto;=0D extern const struct bpf_func_proto bpf_map_pop_elem_proto;=0D extern const struct bpf_func_proto bpf_map_peek_elem_proto;=0D =0D extern const struct bpf_func_proto bpf_get_prandom_u32_proto;=0D extern const struct bpf_func_proto bpf_get_smp_processor_id_proto;=0D extern const struct bpf_func_proto bpf_get_numa_node_id_proto;=0D extern const struct bpf_func_proto bpf_tail_call_proto;=0D extern const struct bpf_func_proto bpf_ktime_get_ns_proto;=0D extern const struct bpf_func_proto bpf_ktime_get_boot_ns_proto;=0D extern const struct bpf_func_proto bpf_get_current_pid_tgid_proto;=0D extern const struct bpf_func_proto bpf_get_current_uid_gid_proto;=0D extern const struct bpf_func_proto bpf_get_current_comm_proto;=0D extern const struct bpf_func_proto bpf_get_stackid_proto;=0D extern const struct bpf_func_proto bpf_get_stack_proto;=0D extern const struct bpf_func_proto bpf_get_task_stack_proto;=0D extern const struct bpf_func_proto bpf_get_stackid_proto_pe;=0D extern const struct bpf_func_proto bpf_get_stack_proto_pe;=0D extern const struct bpf_func_proto bpf_sock_map_update_proto;=0D extern const struct bpf_func_proto bpf_sock_hash_update_proto;=0D extern const struct bpf_func_proto bpf_get_current_cgroup_id_proto;=0D extern const struct bpf_func_proto bpf_get_current_ancestor_cgroup_id_proto= ;=0D extern const struct bpf_func_proto bpf_msg_redirect_hash_proto;=0D extern const struct bpf_func_proto bpf_msg_redirect_map_proto;=0D extern const struct bpf_func_proto bpf_sk_redirect_hash_proto;=0D extern const struct bpf_func_proto bpf_sk_redirect_map_proto;=0D extern const struct bpf_func_proto bpf_spin_lock_proto;=0D extern const struct bpf_func_proto bpf_spin_unlock_proto;=0D extern const struct bpf_func_proto bpf_get_local_storage_proto;=0D extern const struct bpf_func_proto bpf_strtol_proto;=0D extern const struct bpf_func_proto bpf_strtoul_proto;=0D extern const struct bpf_func_proto bpf_tcp_sock_proto;=0D extern const struct bpf_func_proto bpf_jiffies64_proto;=0D extern const struct bpf_func_proto bpf_get_ns_current_pid_tgid_proto;=0D extern const struct bpf_func_proto bpf_event_output_data_proto;=0D extern const struct bpf_func_proto bpf_ringbuf_output_proto;=0D extern const struct bpf_func_proto bpf_ringbuf_reserve_proto;=0D extern const struct bpf_func_proto bpf_ringbuf_submit_proto;=0D extern const struct bpf_func_proto bpf_ringbuf_discard_proto;=0D extern const struct bpf_func_proto bpf_ringbuf_query_proto;=0D extern const struct bpf_func_proto bpf_skc_to_tcp6_sock_proto;=0D extern const struct bpf_func_proto bpf_skc_to_tcp_sock_proto;=0D extern const struct bpf_func_proto bpf_skc_to_tcp_timewait_sock_proto;=0D extern const struct bpf_func_proto bpf_skc_to_tcp_request_sock_proto;=0D extern const struct bpf_func_proto bpf_skc_to_udp6_sock_proto;=0D extern const struct bpf_func_proto bpf_skc_to_unix_sock_proto;=0D extern const struct bpf_func_proto bpf_copy_from_user_proto;=0D extern const struct bpf_func_proto bpf_snprintf_btf_proto;=0D extern const struct bpf_func_proto bpf_snprintf_proto;=0D extern const struct bpf_func_proto bpf_per_cpu_ptr_proto;=0D extern const struct bpf_func_proto bpf_this_cpu_ptr_proto;=0D extern const struct bpf_func_proto bpf_ktime_get_coarse_ns_proto;=0D extern const struct bpf_func_proto bpf_sock_from_file_proto;=0D extern const struct bpf_func_proto bpf_get_socket_ptr_cookie_proto;=0D extern const struct bpf_func_proto bpf_task_storage_get_proto;=0D extern const struct bpf_func_proto bpf_task_storage_delete_proto;=0D extern const struct bpf_func_proto bpf_for_each_map_elem_proto;=0D extern const struct bpf_func_proto bpf_btf_find_by_name_kind_proto;=0D extern const struct bpf_func_proto bpf_sk_setsockopt_proto;=0D extern const struct bpf_func_proto bpf_sk_getsockopt_proto;=0D extern const struct bpf_func_proto bpf_kallsyms_lookup_name_proto;=0D extern const struct bpf_func_proto bpf_find_vma_proto;=0D extern const struct bpf_func_proto bpf_loop_proto;=0D extern const struct bpf_func_proto bpf_strncmp_proto;=0D extern const struct bpf_func_proto bpf_copy_from_user_task_proto;=0D =0D const struct bpf_func_proto *tracing_prog_func_proto(=0D enum bpf_func_id func_id, const struct bpf_prog *prog);=0D =0D =0D void bpf_user_rnd_init_once(void);=0D u64 bpf_user_rnd_u32(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);=0D u64 bpf_get_raw_cpu_id(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);=0D =0D =0D bool bpf_sock_common_is_valid_access(int off, int size,=0D enum bpf_access_type type,=0D struct bpf_insn_access_aux *info);=0D bool bpf_sock_is_valid_access(int off, int size, enum bpf_access_type type,= =0D struct bpf_insn_access_aux *info);=0D u32 bpf_sock_convert_ctx_access(enum bpf_access_type type,=0D const struct bpf_insn *si,=0D struct bpf_insn *insn_buf,=0D struct bpf_prog *prog,=0D u32 *target_size);=0D # 2315 "./include/linux/bpf.h"=0D struct sk_reuseport_kern {=0D struct sk_buff *skb;=0D struct sock *sk;=0D struct sock *selected_sk;=0D struct sock *migrating_sk;=0D void *data_end;=0D u32 hash;=0D u32 reuseport_id;=0D bool bind_inany;=0D };=0D bool bpf_tcp_sock_is_valid_access(int off, int size, enum bpf_access_type t= ype,=0D struct bpf_insn_access_aux *info);=0D =0D u32 bpf_tcp_sock_convert_ctx_access(enum bpf_access_type type,=0D const struct bpf_insn *si,=0D struct bpf_insn *insn_buf,=0D struct bpf_prog *prog,=0D u32 *target_size);=0D =0D bool bpf_xdp_sock_is_valid_access(int off, int size, enum bpf_access_type t= ype,=0D struct bpf_insn_access_aux *info);=0D =0D u32 bpf_xdp_sock_convert_ctx_access(enum bpf_access_type type,=0D const struct bpf_insn *si,=0D struct bpf_insn *insn_buf,=0D struct bpf_prog *prog,=0D u32 *target_size);=0D # 2375 "./include/linux/bpf.h"=0D enum bpf_text_poke_type {=0D BPF_MOD_CALL,=0D BPF_MOD_JUMP,=0D };=0D =0D int bpf_arch_text_poke(void *ip, enum bpf_text_poke_type t,=0D void *addr1, void *addr2);=0D =0D void *bpf_arch_text_copy(void *dst, void *src, size_t len);=0D =0D struct btf_id_set;=0D bool btf_id_set_contains(const struct btf_id_set *set, u32 id);=0D =0D =0D =0D int bpf_bprintf_prepare(char *fmt, u32 fmt_size, const u64 *raw_args,=0D u32 **bin_buf, u32 num_args);=0D void bpf_bprintf_cleanup(void);=0D # 10 "./include/linux/filter.h" 2=0D =0D # 1 "./include/linux/compat.h" 1=0D # 18 "./include/linux/compat.h"=0D # 1 "./include/uapi/linux/aio_abi.h" 1=0D # 34 "./include/uapi/linux/aio_abi.h"=0D typedef __kernel_ulong_t aio_context_t;=0D =0D enum {=0D IOCB_CMD_PREAD =3D 0,=0D IOCB_CMD_PWRITE =3D 1,=0D IOCB_CMD_FSYNC =3D 2,=0D IOCB_CMD_FDSYNC =3D 3,=0D =0D IOCB_CMD_POLL =3D 5,=0D IOCB_CMD_NOOP =3D 6,=0D IOCB_CMD_PREADV =3D 7,=0D IOCB_CMD_PWRITEV =3D 8,=0D };=0D # 60 "./include/uapi/linux/aio_abi.h"=0D struct io_event {=0D __u64 data;=0D __u64 obj;=0D __s64 res;=0D __s64 res2;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct iocb {=0D =0D __u64 aio_data;=0D =0D =0D __u32 aio_key;=0D __kernel_rwf_t aio_rw_flags;=0D # 88 "./include/uapi/linux/aio_abi.h"=0D __u16 aio_lio_opcode;=0D __s16 aio_reqprio;=0D __u32 aio_fildes;=0D =0D __u64 aio_buf;=0D __u64 aio_nbytes;=0D __s64 aio_offset;=0D =0D =0D __u64 aio_reserved2;=0D =0D =0D __u32 aio_flags;=0D =0D =0D =0D =0D =0D __u32 aio_resfd;=0D };=0D # 19 "./include/linux/compat.h" 2=0D =0D # 1 "./include/uapi/linux/unistd.h" 1=0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/unistd.h" 1=0D # 14 "./arch/riscv/include/asm/unistd.h"=0D # 1 "./arch/riscv/include/uapi/asm/unistd.h" 1=0D # 25 "./arch/riscv/include/uapi/asm/unistd.h"=0D # 1 "./include/uapi/asm-generic/unistd.h" 1=0D # 26 "./arch/riscv/include/uapi/asm/unistd.h" 2=0D # 15 "./arch/riscv/include/asm/unistd.h" 2=0D # 9 "./include/uapi/linux/unistd.h" 2=0D # 21 "./include/linux/compat.h" 2=0D =0D # 1 "./arch/riscv/include/generated/asm/compat.h" 1=0D # 1 "./include/asm-generic/compat.h" 1=0D =0D =0D =0D =0D =0D typedef u32 compat_size_t;=0D typedef s32 compat_ssize_t;=0D typedef s32 compat_clock_t;=0D typedef s32 compat_pid_t;=0D typedef u32 compat_ino_t;=0D typedef s32 compat_off_t;=0D typedef s64 compat_loff_t;=0D typedef s32 compat_daddr_t;=0D typedef s32 compat_timer_t;=0D typedef s32 compat_key_t;=0D typedef s16 compat_short_t;=0D typedef s32 compat_int_t;=0D typedef s32 compat_long_t;=0D typedef u16 compat_ushort_t;=0D typedef u32 compat_uint_t;=0D typedef u32 compat_ulong_t;=0D typedef u32 compat_uptr_t;=0D typedef u32 compat_caddr_t;=0D typedef u32 compat_aio_context_t;=0D typedef u32 compat_old_sigset_t;=0D =0D =0D typedef u32 __compat_uid32_t;=0D typedef u32 __compat_gid32_t;=0D =0D =0D =0D typedef u32 compat_mode_t;=0D =0D =0D =0D =0D =0D =0D typedef s64 compat_s64;=0D typedef u64 compat_u64;=0D =0D =0D =0D typedef u32 compat_sigset_word;=0D # 2 "./arch/riscv/include/generated/asm/compat.h" 2=0D # 23 "./include/linux/compat.h" 2=0D # 1 "./arch/riscv/include/generated/uapi/asm/siginfo.h" 1=0D # 24 "./include/linux/compat.h" 2=0D # 1 "./arch/riscv/include/generated/uapi/asm/signal.h" 1=0D # 25 "./include/linux/compat.h" 2=0D # 90 "./include/linux/compat.h"=0D struct compat_iovec {=0D compat_uptr_t iov_base;=0D compat_size_t iov_len;=0D };=0D =0D =0D =0D =0D =0D typedef struct compat_sigaltstack {=0D compat_uptr_t ss_sp;=0D int ss_flags;=0D compat_size_t ss_size;=0D } compat_stack_t;=0D # 112 "./include/linux/compat.h"=0D typedef __compat_uid32_t compat_uid_t;=0D typedef __compat_gid32_t compat_gid_t;=0D =0D struct compat_sel_arg_struct;=0D struct rusage;=0D =0D struct old_itimerval32;=0D =0D struct compat_tms {=0D compat_clock_t tms_utime;=0D compat_clock_t tms_stime;=0D compat_clock_t tms_cutime;=0D compat_clock_t tms_cstime;=0D };=0D =0D =0D =0D =0D typedef struct {=0D compat_sigset_word sig[(64 / 32)];=0D } compat_sigset_t;=0D =0D =0D int set_compat_user_sigmask(const compat_sigset_t *umask,=0D size_t sigsetsize);=0D =0D struct compat_sigaction {=0D =0D compat_uptr_t sa_handler;=0D compat_ulong_t sa_flags;=0D =0D =0D =0D =0D =0D =0D =0D compat_sigset_t sa_mask __attribute__((__packed__));=0D };=0D =0D typedef union compat_sigval {=0D compat_int_t sival_int;=0D compat_uptr_t sival_ptr;=0D } compat_sigval_t;=0D =0D typedef struct compat_siginfo {=0D int si_signo;=0D =0D int si_errno;=0D int si_code;=0D =0D =0D =0D =0D =0D union {=0D int _pad[128/sizeof(int) - 3];=0D =0D =0D struct {=0D compat_pid_t _pid;=0D __compat_uid32_t _uid;=0D } _kill;=0D =0D =0D struct {=0D compat_timer_t _tid;=0D int _overrun;=0D compat_sigval_t _sigval;=0D } _timer;=0D =0D =0D struct {=0D compat_pid_t _pid;=0D __compat_uid32_t _uid;=0D compat_sigval_t _sigval;=0D } _rt;=0D =0D =0D struct {=0D compat_pid_t _pid;=0D __compat_uid32_t _uid;=0D int _status;=0D compat_clock_t _utime;=0D compat_clock_t _stime;=0D } _sigchld;=0D # 211 "./include/linux/compat.h"=0D struct {=0D compat_uptr_t _addr;=0D =0D =0D union {=0D =0D int _trapno;=0D =0D =0D =0D =0D short int _addr_lsb;=0D =0D struct {=0D char _dummy_bnd[(__alignof__(compat_uptr_t) < sizeof(short) ? sizeof(s= hort) : __alignof__(compat_uptr_t))];=0D compat_uptr_t _lower;=0D compat_uptr_t _upper;=0D } _addr_bnd;=0D =0D struct {=0D char _dummy_pkey[(__alignof__(compat_uptr_t) < sizeof(short) ? sizeof(= short) : __alignof__(compat_uptr_t))];=0D u32 _pkey;=0D } _addr_pkey;=0D =0D struct {=0D compat_ulong_t _data;=0D u32 _type;=0D } _perf;=0D };=0D } _sigfault;=0D =0D =0D struct {=0D compat_long_t _band;=0D int _fd;=0D } _sigpoll;=0D =0D struct {=0D compat_uptr_t _call_addr;=0D int _syscall;=0D unsigned int _arch;=0D } _sigsys;=0D } _sifields;=0D } compat_siginfo_t;=0D =0D struct compat_rlimit {=0D compat_ulong_t rlim_cur;=0D compat_ulong_t rlim_max;=0D };=0D =0D struct compat_rusage {=0D struct old_timeval32 ru_utime;=0D struct old_timeval32 ru_stime;=0D compat_long_t ru_maxrss;=0D compat_long_t ru_ixrss;=0D compat_long_t ru_idrss;=0D compat_long_t ru_isrss;=0D compat_long_t ru_minflt;=0D compat_long_t ru_majflt;=0D compat_long_t ru_nswap;=0D compat_long_t ru_inblock;=0D compat_long_t ru_oublock;=0D compat_long_t ru_msgsnd;=0D compat_long_t ru_msgrcv;=0D compat_long_t ru_nsignals;=0D compat_long_t ru_nvcsw;=0D compat_long_t ru_nivcsw;=0D };=0D =0D extern int put_compat_rusage(const struct rusage *,=0D struct compat_rusage *);=0D =0D struct compat_siginfo;=0D struct __compat_aio_sigset;=0D =0D struct compat_dirent {=0D u32 d_ino;=0D compat_off_t d_off;=0D u16 d_reclen;=0D char d_name[256];=0D };=0D =0D struct compat_ustat {=0D compat_daddr_t f_tfree;=0D compat_ino_t f_tinode;=0D char f_fname[6];=0D char f_fpack[6];=0D };=0D =0D =0D =0D typedef struct compat_sigevent {=0D compat_sigval_t sigev_value;=0D compat_int_t sigev_signo;=0D compat_int_t sigev_notify;=0D union {=0D compat_int_t _pad[((64/sizeof(int)) - 3)];=0D compat_int_t _tid;=0D =0D struct {=0D compat_uptr_t _function;=0D compat_uptr_t _attribute;=0D } _sigev_thread;=0D } _sigev_un;=0D } compat_sigevent_t;=0D =0D struct compat_ifmap {=0D compat_ulong_t mem_start;=0D compat_ulong_t mem_end;=0D unsigned short base_addr;=0D unsigned char irq;=0D unsigned char dma;=0D unsigned char port;=0D };=0D =0D struct compat_if_settings {=0D unsigned int type;=0D unsigned int size;=0D compat_uptr_t ifs_ifsu;=0D };=0D =0D struct compat_ifreq {=0D union {=0D char ifrn_name[16];=0D } ifr_ifrn;=0D union {=0D struct sockaddr ifru_addr;=0D struct sockaddr ifru_dstaddr;=0D struct sockaddr ifru_broadaddr;=0D struct sockaddr ifru_netmask;=0D struct sockaddr ifru_hwaddr;=0D short ifru_flags;=0D compat_int_t ifru_ivalue;=0D compat_int_t ifru_mtu;=0D struct compat_ifmap ifru_map;=0D char ifru_slave[16];=0D char ifru_newname[16];=0D compat_caddr_t ifru_data;=0D struct compat_if_settings ifru_settings;=0D } ifr_ifru;=0D };=0D =0D struct compat_ifconf {=0D compat_int_t ifc_len;=0D compat_caddr_t ifcbuf;=0D };=0D =0D struct compat_robust_list {=0D compat_uptr_t next;=0D };=0D =0D struct compat_robust_list_head {=0D struct compat_robust_list list;=0D compat_long_t futex_offset;=0D compat_uptr_t list_op_pending;=0D };=0D # 377 "./include/linux/compat.h"=0D struct compat_keyctl_kdf_params {=0D compat_uptr_t hashname;=0D compat_uptr_t otherinfo;=0D __u32 otherinfolen;=0D __u32 __spare[8];=0D };=0D =0D struct compat_stat;=0D struct compat_statfs;=0D struct compat_statfs64;=0D struct compat_old_linux_dirent;=0D struct compat_linux_dirent;=0D struct linux_dirent64;=0D struct compat_msghdr;=0D struct compat_mmsghdr;=0D struct compat_sysinfo;=0D struct compat_sysctl_args;=0D struct compat_kexec_segment;=0D struct compat_mq_attr;=0D struct compat_msgbuf;=0D =0D void copy_siginfo_to_external32(struct compat_siginfo *to,=0D const struct kernel_siginfo *from);=0D int copy_siginfo_from_user32(kernel_siginfo_t *to,=0D const struct compat_siginfo *from);=0D int __copy_siginfo_to_user32(struct compat_siginfo *to,=0D const kernel_siginfo_t *from);=0D =0D =0D =0D int get_compat_sigevent(struct sigevent *event,=0D const struct compat_sigevent *u_event);=0D =0D extern int get_compat_sigset(sigset_t *set, const compat_sigset_t *compat);= =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D put_compat_sigset(compat_sigset_t *compat, const sigset_t *set,=0D unsigned int size)=0D {=0D # 434 "./include/linux/compat.h"=0D return copy_to_user(compat, set, size) ? -14 : 0;=0D =0D }=0D # 505 "./include/linux/compat.h"=0D extern int compat_ptrace_request(struct task_struct *child,=0D compat_long_t request,=0D compat_ulong_t addr, compat_ulong_t data);=0D =0D extern long compat_arch_ptrace(struct task_struct *child, compat_long_t req= uest,=0D compat_ulong_t addr, compat_ulong_t data);=0D =0D struct epoll_event;=0D =0D int compat_restore_altstack(const compat_stack_t *uss);=0D int __compat_save_altstack(compat_stack_t *, unsigned long);=0D # 539 "./include/linux/compat.h"=0D long compat_sys_io_setup(unsigned nr_reqs, u32 *ctx32p);=0D long compat_sys_io_submit(compat_aio_context_t ctx_id, int nr,=0D u32 *iocb);=0D long compat_sys_io_pgetevents(compat_aio_context_t ctx_id,=0D compat_long_t min_nr,=0D compat_long_t nr,=0D struct io_event *events,=0D struct old_timespec32 *timeout,=0D const struct __compat_aio_sigset *usig);=0D long compat_sys_io_pgetevents_time64(compat_aio_context_t ctx_id= ,=0D compat_long_t min_nr,=0D compat_long_t nr,=0D struct io_event *events,=0D struct __kernel_timespec *timeout,=0D const struct __compat_aio_sigset *usig);=0D =0D =0D long compat_sys_lookup_dcookie(u32, u32, char *, compat_size_t);= =0D =0D =0D long compat_sys_epoll_pwait(int epfd,=0D struct epoll_event *events,=0D int maxevents, int timeout,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize);=0D long compat_sys_epoll_pwait2(int epfd,=0D struct epoll_event *events,=0D int maxevents,=0D const struct __kernel_timespec *timeout,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize);=0D =0D =0D long compat_sys_fcntl(unsigned int fd, unsigned int cmd,=0D compat_ulong_t arg);=0D long compat_sys_fcntl64(unsigned int fd, unsigned int cmd,=0D compat_ulong_t arg);=0D =0D =0D long compat_sys_ioctl(unsigned int fd, unsigned int cmd,=0D compat_ulong_t arg);=0D =0D =0D long compat_sys_statfs(const char *pathname,=0D struct compat_statfs *buf);=0D long compat_sys_statfs64(const char *pathname,=0D compat_size_t sz,=0D struct compat_statfs64 *buf);=0D long compat_sys_fstatfs(unsigned int fd,=0D struct compat_statfs *buf);=0D long compat_sys_fstatfs64(unsigned int fd, compat_size_t sz,=0D struct compat_statfs64 *buf);=0D long compat_sys_truncate(const char *, compat_off_t);=0D long compat_sys_ftruncate(unsigned int, compat_ulong_t);=0D =0D long compat_sys_openat(int dfd, const char *filename,=0D int flags, umode_t mode);=0D =0D =0D long compat_sys_getdents(unsigned int fd,=0D struct compat_linux_dirent *dirent,=0D unsigned int count);=0D =0D =0D long compat_sys_lseek(unsigned int, compat_off_t, unsigned int);= =0D =0D ssize_t compat_sys_preadv(compat_ulong_t fd,=0D const struct iovec *vec,=0D compat_ulong_t vlen, u32 pos_low, u32 pos_high);=0D ssize_t compat_sys_pwritev(compat_ulong_t fd,=0D const struct iovec *vec,=0D compat_ulong_t vlen, u32 pos_low, u32 pos_high);=0D # 624 "./include/linux/compat.h"=0D long compat_sys_sendfile(int out_fd, int in_fd,=0D compat_off_t *offset, compat_size_t count);=0D long compat_sys_sendfile64(int out_fd, int in_fd,=0D compat_loff_t *offset, compat_size_t count);=0D =0D =0D long compat_sys_pselect6_time32(int n, compat_ulong_t *inp,=0D compat_ulong_t *outp,=0D compat_ulong_t *exp,=0D struct old_timespec32 *tsp,=0D void *sig);=0D long compat_sys_pselect6_time64(int n, compat_ulong_t *inp,=0D compat_ulong_t *outp,=0D compat_ulong_t *exp,=0D struct __kernel_timespec *tsp,=0D void *sig);=0D long compat_sys_ppoll_time32(struct pollfd *ufds,=0D unsigned int nfds,=0D struct old_timespec32 *tsp,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize);=0D long compat_sys_ppoll_time64(struct pollfd *ufds,=0D unsigned int nfds,=0D struct __kernel_timespec *tsp,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize);=0D =0D =0D long compat_sys_signalfd4(int ufd,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize, int flags);=0D =0D =0D long compat_sys_newfstatat(unsigned int dfd,=0D const char *filename,=0D struct compat_stat *statbuf,=0D int flag);=0D long compat_sys_newfstat(unsigned int fd,=0D struct compat_stat *statbuf);=0D =0D =0D =0D =0D long compat_sys_waitid(int, compat_pid_t,=0D struct compat_siginfo *, int,=0D struct compat_rusage *);=0D =0D =0D =0D =0D long=0D compat_sys_set_robust_list(struct compat_robust_list_head *head,=0D compat_size_t len);=0D long=0D compat_sys_get_robust_list(int pid, compat_uptr_t *head_ptr,=0D compat_size_t *len_ptr);=0D =0D =0D long compat_sys_getitimer(int which,=0D struct old_itimerval32 *it);=0D long compat_sys_setitimer(int which,=0D struct old_itimerval32 *in,=0D struct old_itimerval32 *out);=0D =0D =0D long compat_sys_kexec_load(compat_ulong_t entry,=0D compat_ulong_t nr_segments,=0D struct compat_kexec_segment *,=0D compat_ulong_t flags);=0D =0D =0D long compat_sys_timer_create(clockid_t which_clock,=0D struct compat_sigevent *timer_event_spec,=0D timer_t *created_timer_id);=0D =0D =0D long compat_sys_ptrace(compat_long_t request, compat_long_t pid,= =0D compat_long_t addr, compat_long_t data);=0D =0D =0D long compat_sys_sched_setaffinity(compat_pid_t pid,=0D unsigned int len,=0D compat_ulong_t *user_mask_ptr);=0D long compat_sys_sched_getaffinity(compat_pid_t pid,=0D unsigned int len,=0D compat_ulong_t *user_mask_ptr);=0D =0D =0D long compat_sys_sigaltstack(const compat_stack_t *uss_ptr,=0D compat_stack_t *uoss_ptr);=0D long compat_sys_rt_sigsuspend(compat_sigset_t *unewset,=0D compat_size_t sigsetsize);=0D =0D long compat_sys_rt_sigaction(int,=0D const struct compat_sigaction *,=0D struct compat_sigaction *,=0D compat_size_t);=0D =0D long compat_sys_rt_sigprocmask(int how, compat_sigset_t *set,=0D compat_sigset_t *oset,=0D compat_size_t sigsetsize);=0D long compat_sys_rt_sigpending(compat_sigset_t *uset,=0D compat_size_t sigsetsize);=0D long compat_sys_rt_sigtimedwait_time32(compat_sigset_t *uthese,= =0D struct compat_siginfo *uinfo,=0D struct old_timespec32 *uts, compat_size_t sigsetsize);=0D long compat_sys_rt_sigtimedwait_time64(compat_sigset_t *uthese,= =0D struct compat_siginfo *uinfo,=0D struct __kernel_timespec *uts, compat_size_t sigsetsize);=0D long compat_sys_rt_sigqueueinfo(compat_pid_t pid, int sig,=0D struct compat_siginfo *uinfo);=0D =0D =0D =0D long compat_sys_times(struct compat_tms *tbuf);=0D long compat_sys_getrlimit(unsigned int resource,=0D struct compat_rlimit *rlim);=0D long compat_sys_setrlimit(unsigned int resource,=0D struct compat_rlimit *rlim);=0D long compat_sys_getrusage(int who, struct compat_rusage *ru);=0D =0D =0D long compat_sys_gettimeofday(struct old_timeval32 *tv,=0D struct timezone *tz);=0D long compat_sys_settimeofday(struct old_timeval32 *tv,=0D struct timezone *tz);=0D =0D =0D long compat_sys_sysinfo(struct compat_sysinfo *info);=0D =0D =0D long compat_sys_mq_open(const char *u_name,=0D int oflag, compat_mode_t mode,=0D struct compat_mq_attr *u_attr);=0D long compat_sys_mq_notify(mqd_t mqdes,=0D const struct compat_sigevent *u_notification);=0D long compat_sys_mq_getsetattr(mqd_t mqdes,=0D const struct compat_mq_attr *u_mqstat,=0D struct compat_mq_attr *u_omqstat);=0D =0D =0D long compat_sys_msgctl(int first, int second, void *uptr);=0D long compat_sys_msgrcv(int msqid, compat_uptr_t msgp,=0D compat_ssize_t msgsz, compat_long_t msgtyp, int msgflg);=0D long compat_sys_msgsnd(int msqid, compat_uptr_t msgp,=0D compat_ssize_t msgsz, int msgflg);=0D =0D =0D long compat_sys_semctl(int semid, int semnum, int cmd, int arg);= =0D =0D =0D long compat_sys_shmctl(int first, int second, void *uptr);=0D long compat_sys_shmat(int shmid, compat_uptr_t shmaddr, int shmf= lg);=0D =0D =0D long compat_sys_recvfrom(int fd, void *buf, compat_size_t len,=0D unsigned flags, struct sockaddr *addr,=0D int *addrlen);=0D long compat_sys_sendmsg(int fd, struct compat_msghdr *msg,=0D unsigned flags);=0D long compat_sys_recvmsg(int fd, struct compat_msghdr *msg,=0D unsigned int flags);=0D =0D =0D =0D =0D long compat_sys_keyctl(u32 option,=0D u32 arg2, u32 arg3, u32 arg4, u32 arg5);=0D =0D =0D long compat_sys_execve(const char *filename, const compat_uptr_t= *argv,=0D const compat_uptr_t *envp);=0D =0D =0D =0D =0D long compat_sys_rt_tgsigqueueinfo(compat_pid_t tgid,=0D compat_pid_t pid, int sig,=0D struct compat_siginfo *uinfo);=0D long compat_sys_recvmmsg_time64(int fd, struct compat_mmsghdr *m= msg,=0D unsigned vlen, unsigned int flags,=0D struct __kernel_timespec *timeout);=0D long compat_sys_recvmmsg_time32(int fd, struct compat_mmsghdr *m= msg,=0D unsigned vlen, unsigned int flags,=0D struct old_timespec32 *timeout);=0D long compat_sys_wait4(compat_pid_t pid,=0D compat_uint_t *stat_addr, int options,=0D struct compat_rusage *ru);=0D long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32,=0D int, const char *);=0D long compat_sys_open_by_handle_at(int mountdirfd,=0D struct file_handle *handle,=0D int flags);=0D long compat_sys_sendmmsg(int fd, struct compat_mmsghdr *mmsg,=0D unsigned vlen, unsigned int flags);=0D long compat_sys_execveat(int dfd, const char *filename,=0D const compat_uptr_t *argv,=0D const compat_uptr_t *envp, int flags);=0D ssize_t compat_sys_preadv2(compat_ulong_t fd,=0D const struct iovec *vec,=0D compat_ulong_t vlen, u32 pos_low, u32 pos_high, rwf_t flags);=0D ssize_t compat_sys_pwritev2(compat_ulong_t fd,=0D const struct iovec *vec,=0D compat_ulong_t vlen, u32 pos_low, u32 pos_high, rwf_t flags);=0D # 847 "./include/linux/compat.h"=0D long compat_sys_open(const char *filename, int flags,=0D umode_t mode);=0D =0D =0D long compat_sys_signalfd(int ufd,=0D const compat_sigset_t *sigmask,=0D compat_size_t sigsetsize);=0D =0D =0D long compat_sys_newstat(const char *filename,=0D struct compat_stat *statbuf);=0D long compat_sys_newlstat(const char *filename,=0D struct compat_stat *statbuf);=0D =0D =0D long compat_sys_select(int n, compat_ulong_t *inp,=0D compat_ulong_t *outp, compat_ulong_t *exp,=0D struct old_timeval32 *tvp);=0D long compat_sys_ustat(unsigned dev, struct compat_ustat *u32);=0D long compat_sys_recv(int fd, void *buf, compat_size_t len,=0D unsigned flags);=0D =0D =0D long compat_sys_old_readdir(unsigned int fd,=0D struct compat_old_linux_dirent *,=0D unsigned int count);=0D =0D =0D long compat_sys_old_select(struct compat_sel_arg_struct *arg);=0D =0D =0D long compat_sys_ipc(u32, int, int, u32, compat_uptr_t, u32);=0D # 896 "./include/linux/compat.h"=0D long compat_sys_socketcall(int call, u32 *args);=0D # 906 "./include/linux/compat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct old_timeval32 ns_to_o= ld_timeval32(s64 nsec)=0D {=0D struct __kernel_old_timeval tv;=0D struct old_timeval32 ctv;=0D =0D tv =3D ns_to_kernel_old_timeval(nsec);=0D ctv.tv_sec =3D tv.tv_sec;=0D ctv.tv_usec =3D tv.tv_usec;=0D =0D return ctv;=0D }=0D =0D =0D =0D =0D =0D =0D =0D int kcompat_sys_statfs64(const char * pathname, compat_size_t sz,=0D struct compat_statfs64 * buf);=0D int kcompat_sys_fstatfs64(unsigned int fd, compat_size_t sz,=0D struct compat_statfs64 * buf);=0D # 945 "./include/linux/compat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool in_compat_syscall(void)= { return false; }=0D =0D =0D =0D =0D =0D =0D =0D long compat_get_bitmap(unsigned long *mask, const compat_ulong_t *umask,=0D unsigned long bitmap_size);=0D long compat_put_bitmap(compat_ulong_t *umask, unsigned long *mask,=0D unsigned long bitmap_size);=0D # 974 "./include/linux/compat.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *compat_ptr(compat_uptr= _t uptr)=0D {=0D return (void *)(unsigned long)uptr;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) compat_uptr_t ptr_to_compat(= void *uptr)=0D {=0D return (u32)(unsigned long)uptr;=0D }=0D # 12 "./include/linux/filter.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/set_memory.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/set_memory.h" 1=0D # 14 "./arch/riscv/include/asm/set_memory.h"=0D int set_memory_ro(unsigned long addr, int numpages);=0D int set_memory_rw(unsigned long addr, int numpages);=0D int set_memory_x(unsigned long addr, int numpages);=0D int set_memory_nx(unsigned long addr, int numpages);=0D int set_memory_rw_nx(unsigned long addr, int numpages);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int set_kernel_memory(char *startp, char *endp,=0D int (*set_memory)(unsigned long start,=0D int num_pages))=0D {=0D unsigned long start =3D (unsigned long)startp;=0D unsigned long end =3D (unsigned long)endp;=0D int num_pages =3D ((((end - start)) + ((typeof((end - start)))((((1UL) << = (12)))) - 1)) & ~((typeof((end - start)))((((1UL) << (12)))) - 1)) >> (12);= =0D =0D return set_memory(start, num_pages);=0D }=0D # 43 "./arch/riscv/include/asm/set_memory.h"=0D int set_direct_map_invalid_noflush(struct page *page);=0D int set_direct_map_default_noflush(struct page *page);=0D bool kernel_page_present(struct page *page);=0D # 10 "./include/linux/set_memory.h" 2=0D # 37 "./include/linux/set_memory.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool can_set_direct_map(void= )=0D {=0D return true;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int set_mce_nospec(unsigned = long pfn, bool unmap)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int clear_mce_nospec(unsigne= d long pfn)=0D {=0D return 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int set_memory_encrypted(uns= igned long addr, int numpages)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int set_memory_decrypted(uns= igned long addr, int numpages)=0D {=0D return 0;=0D }=0D # 19 "./include/linux/filter.h" 2=0D =0D # 1 "./include/linux/if_vlan.h" 1=0D # 11 "./include/linux/if_vlan.h"=0D # 1 "./include/linux/etherdevice.h" 1=0D # 23 "./include/linux/etherdevice.h"=0D # 1 "./include/linux/crc32.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/linux/bitrev.h" 1=0D # 15 "./include/linux/bitrev.h"=0D extern u8 const byte_rev_table[256];=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 __bitrev8(u8 byte)=0D {=0D return byte_rev_table[byte];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 __bitrev16(u16 x)=0D {=0D return (__bitrev8(x & 0xff) << 8) | __bitrev8(x >> 8);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __bitrev32(u32 x)=0D {=0D return (__bitrev16(x & 0xffff) << 16) | __bitrev16(x >> 16);=0D }=0D # 10 "./include/linux/crc32.h" 2=0D =0D u32 __attribute__((__pure__)) crc32_le(u32 crc, unsigned char const *p, siz= e_t len);=0D u32 __attribute__((__pure__)) crc32_be(u32 crc, unsigned char const *p, siz= e_t len);=0D # 32 "./include/linux/crc32.h"=0D u32 __attribute__((__const__)) crc32_le_shift(u32 crc, size_t len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 crc32_le_combine(u32 crc= 1, u32 crc2, size_t len2)=0D {=0D return crc32_le_shift(crc1, len2) ^ crc2;=0D }=0D =0D u32 __attribute__((__pure__)) __crc32c_le(u32 crc, unsigned char const *p, = size_t len);=0D # 59 "./include/linux/crc32.h"=0D u32 __attribute__((__const__)) __crc32c_le_shift(u32 crc, size_t len);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __crc32c_le_combine(u32 = crc1, u32 crc2, size_t len2)=0D {=0D return __crc32c_le_shift(crc1, len2) ^ crc2;=0D }=0D # 24 "./include/linux/etherdevice.h" 2=0D # 1 "./arch/riscv/include/generated/asm/unaligned.h" 1=0D # 1 "./include/asm-generic/unaligned.h" 1=0D # 25 "./include/asm-generic/unaligned.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 get_unaligned_le16(const= void *p)=0D {=0D return (( __u16)(__le16)(({ const struct { __le16 x; } __attribute__((__pa= cked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; })));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 get_unaligned_le32(const= void *p)=0D {=0D return (( __u32)(__le32)(({ const struct { __le32 x; } __attribute__((__pa= cked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; })));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 get_unaligned_le64(const= void *p)=0D {=0D return (( __u64)(__le64)(({ const struct { __le64 x; } __attribute__((__pa= cked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; })));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_le16(u16 = val, void *p)=0D {=0D do { struct { __le16 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __le16)(__u16)(val))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_le32(u32 = val, void *p)=0D {=0D do { struct { __le32 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __le32)(__u32)(val))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_le64(u64 = val, void *p)=0D {=0D do { struct { __le64 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __le64)(__u64)(val))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 get_unaligned_be16(const= void *p)=0D {=0D return (__builtin_constant_p((__u16)(( __u16)(__be16)(({ const struct { __= be16 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pp= tr->x; })))) ? ((__u16)( (((__u16)(( __u16)(__be16)(({ const struct { __be1= 6 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr-= >x; }))) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(({ const stru= ct { __be16 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p= ); __pptr->x; }))) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)((= { const struct { __be16 x; } __attribute__((__packed__)) *__pptr =3D (typeo= f(__pptr))(p); __pptr->x; }))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 get_unaligned_be32(const= void *p)=0D {=0D return (__builtin_constant_p((__u32)(( __u32)(__be32)(({ const struct { __= be32 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pp= tr->x; })))) ? ((__u32)( (((__u32)(( __u32)(__be32)(({ const struct { __be3= 2 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr-= >x; }))) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(({ cons= t struct { __be32 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pp= tr))(p); __pptr->x; }))) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(= __be32)(({ const struct { __be32 x; } __attribute__((__packed__)) *__pptr = =3D (typeof(__pptr))(p); __pptr->x; }))) & (__u32)0x00ff0000UL) >> 8) | (((= __u32)(( __u32)(__be32)(({ const struct { __be32 x; } __attribute__((__pack= ed__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; }))) & (__u32)0xff000000= UL) >> 24))) : __fswab32(( __u32)(__be32)(({ const struct { __be32 x; } __a= ttribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; }))));= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 get_unaligned_be64(const= void *p)=0D {=0D return (__builtin_constant_p((__u64)(( __u64)(__be64)(({ const struct { __= be64 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pp= tr->x; })))) ? ((__u64)( (((__u64)(( __u64)(__be64)(({ const struct { __be6= 4 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr-= >x; }))) & (__u64)0x00000000000000ffULL) << 56) | (((__u64)(( __u64)(__be64= )(({ const struct { __be64 x; } __attribute__((__packed__)) *__pptr =3D (ty= peof(__pptr))(p); __pptr->x; }))) & (__u64)0x000000000000ff00ULL) << 40) | = (((__u64)(( __u64)(__be64)(({ const struct { __be64 x; } __attribute__((__p= acked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; }))) & (__u64)0x00000= 00000ff0000ULL) << 24) | (((__u64)(( __u64)(__be64)(({ const struct { __be6= 4 x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr-= >x; }))) & (__u64)0x00000000ff000000ULL) << 8) | (((__u64)(( __u64)(__be64)= (({ const struct { __be64 x; } __attribute__((__packed__)) *__pptr =3D (typ= eof(__pptr))(p); __pptr->x; }))) & (__u64)0x000000ff00000000ULL) >> 8) | ((= (__u64)(( __u64)(__be64)(({ const struct { __be64 x; } __attribute__((__pac= ked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; }))) & (__u64)0x0000ff0= 000000000ULL) >> 24) | (((__u64)(( __u64)(__be64)(({ const struct { __be64 = x; } __attribute__((__packed__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x= ; }))) & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)(( __u64)(__be64)(= ({ const struct { __be64 x; } __attribute__((__packed__)) *__pptr =3D (type= of(__pptr))(p); __pptr->x; }))) & (__u64)0xff00000000000000ULL) >> 56))) : = __fswab64(( __u64)(__be64)(({ const struct { __be64 x; } __attribute__((__p= acked__)) *__pptr =3D (typeof(__pptr))(p); __pptr->x; }))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_be16(u16 = val, void *p)=0D {=0D do { struct { __be16 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __be16)(__builtin_constant_p((__u16)((val)))= ? ((__u16)( (((__u16)((val)) & (__u16)0x00ffU) << 8) | (((__u16)((val)) & = (__u16)0xff00U) >> 8))) : __fswab16((val))))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_be32(u32 = val, void *p)=0D {=0D do { struct { __be32 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __be32)(__builtin_constant_p((__u32)((val)))= ? ((__u32)( (((__u32)((val)) & (__u32)0x000000ffUL) << 24) | (((__u32)((va= l)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((val)) & (__u32)0x00ff0000UL) = >> 8) | (((__u32)((val)) & (__u32)0xff000000UL) >> 24))) : __fswab32((val))= ))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_be64(u64 = val, void *p)=0D {=0D do { struct { __be64 x; } __attribute__((__packed__)) *__pptr =3D (typeof(= __pptr))(p); __pptr->x =3D ((( __be64)(__builtin_constant_p((__u64)((val)))= ? ((__u64)( (((__u64)((val)) & (__u64)0x00000000000000ffULL) << 56) | (((_= _u64)((val)) & (__u64)0x000000000000ff00ULL) << 40) | (((__u64)((val)) & (_= _u64)0x0000000000ff0000ULL) << 24) | (((__u64)((val)) & (__u64)0x00000000ff= 000000ULL) << 8) | (((__u64)((val)) & (__u64)0x000000ff00000000ULL) >> 8) |= (((__u64)((val)) & (__u64)0x0000ff0000000000ULL) >> 24) | (((__u64)((val))= & (__u64)0x00ff000000000000ULL) >> 40) | (((__u64)((val)) & (__u64)0xff000= 00000000000ULL) >> 56))) : __fswab64((val))))); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __get_unaligned_be24(con= st u8 *p)=0D {=0D return p[0] << 16 | p[1] << 8 | p[2];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 get_unaligned_be24(const= void *p)=0D {=0D return __get_unaligned_be24(p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __get_unaligned_le24(con= st u8 *p)=0D {=0D return p[0] | p[1] << 8 | p[2] << 16;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 get_unaligned_le24(const= void *p)=0D {=0D return __get_unaligned_le24(p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_be24(co= nst u32 val, u8 *p)=0D {=0D *p++ =3D val >> 16;=0D *p++ =3D val >> 8;=0D *p++ =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_be24(cons= t u32 val, void *p)=0D {=0D __put_unaligned_be24(val, p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_le24(co= nst u32 val, u8 *p)=0D {=0D *p++ =3D val;=0D *p++ =3D val >> 8;=0D *p++ =3D val >> 16;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_le24(cons= t u32 val, void *p)=0D {=0D __put_unaligned_le24(val, p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __put_unaligned_be48(co= nst u64 val, __u8 *p)=0D {=0D *p++ =3D val >> 40;=0D *p++ =3D val >> 32;=0D *p++ =3D val >> 24;=0D *p++ =3D val >> 16;=0D *p++ =3D val >> 8;=0D *p++ =3D val;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void put_unaligned_be48(cons= t u64 val, void *p)=0D {=0D __put_unaligned_be48(val, p);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 __get_unaligned_be48(con= st u8 *p)=0D {=0D return (u64)p[0] << 40 | (u64)p[1] << 32 | (u64)p[2] << 24 |=0D p[3] << 16 | p[4] << 8 | p[5];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 get_unaligned_be48(const= void *p)=0D {=0D return __get_unaligned_be48(p);=0D }=0D # 2 "./arch/riscv/include/generated/asm/unaligned.h" 2=0D # 25 "./include/linux/etherdevice.h" 2=0D =0D =0D =0D struct device;=0D struct fwnode_handle;=0D =0D int eth_platform_get_mac_address(struct device *dev, u8 *mac_addr);=0D int platform_get_ethdev_address(struct device *dev, struct net_device *netd= ev);=0D unsigned char *arch_get_platform_mac_address(void);=0D int nvmem_get_mac_address(struct device *dev, void *addrbuf);=0D int device_get_mac_address(struct device *dev, char *addr);=0D int device_get_ethdev_address(struct device *dev, struct net_device *netdev= );=0D int fwnode_get_mac_address(struct fwnode_handle *fwnode, char *addr);=0D =0D u32 eth_get_headlen(const struct net_device *dev, const void *data, u32 len= );=0D __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev);=0D extern const struct header_ops eth_header_ops;=0D =0D int eth_header(struct sk_buff *skb, struct net_device *dev, unsigned short = type,=0D const void *daddr, const void *saddr, unsigned len);=0D int eth_header_parse(const struct sk_buff *skb, unsigned char *haddr);=0D int eth_header_cache(const struct neighbour *neigh, struct hh_cache *hh,=0D __be16 type);=0D void eth_header_cache_update(struct hh_cache *hh, const struct net_device *= dev,=0D const unsigned char *haddr);=0D __be16 eth_header_parse_protocol(const struct sk_buff *skb);=0D int eth_prepare_mac_addr_change(struct net_device *dev, void *p);=0D void eth_commit_mac_addr_change(struct net_device *dev, void *p);=0D int eth_mac_addr(struct net_device *dev, void *p);=0D int eth_validate_addr(struct net_device *dev);=0D =0D struct net_device *alloc_etherdev_mqs(int sizeof_priv, unsigned int txqs,=0D unsigned int rxqs);=0D =0D =0D =0D struct net_device *devm_alloc_etherdev_mqs(struct device *dev, int sizeof_p= riv,=0D unsigned int txqs,=0D unsigned int rxqs);=0D =0D =0D struct sk_buff *eth_gro_receive(struct list_head *head, struct sk_buff *skb= );=0D int eth_gro_complete(struct sk_buff *skb, int nhoff);=0D =0D =0D static const u8 eth_reserved_addr_base[6] __attribute__((__aligned__(2))) = =3D=0D { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };=0D # 83 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_link_local_ether_add= r(const u8 *addr)=0D {=0D __be16 *a =3D (__be16 *)addr;=0D static const __be16 *b =3D (const __be16 *)eth_reserved_addr_base;=0D static const __be16 m =3D (( __be16)(__builtin_constant_p((__u16)((0xfff0)= )) ? ((__u16)( (((__u16)((0xfff0)) & (__u16)0x00ffU) << 8) | (((__u16)((0xf= ff0)) & (__u16)0xff00U) >> 8))) : __fswab16((0xfff0))));=0D =0D =0D =0D =0D =0D return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | ((a[2] ^ b[2]) & m)) =3D=3D 0;=0D =0D }=0D # 105 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_zero_ether_addr(cons= t u8 *addr)=0D {=0D =0D =0D =0D return (*(const u16 *)(addr + 0) |=0D *(const u16 *)(addr + 2) |=0D *(const u16 *)(addr + 4)) =3D=3D 0;=0D =0D }=0D # 123 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_multicast_ether_addr= (const u8 *addr)=0D {=0D =0D =0D =0D u16 a =3D *(const u16 *)addr;=0D =0D =0D =0D =0D return 0x01 & a;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_multicast_ether_addr= _64bits(const u8 *addr)=0D {=0D =0D =0D =0D =0D =0D =0D =0D return is_multicast_ether_addr(addr);=0D =0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_local_ether_addr(con= st u8 *addr)=0D {=0D return 0x02 & addr[0];=0D }=0D # 169 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_broadcast_ether_addr= (const u8 *addr)=0D {=0D return (*(const u16 *)(addr + 0) &=0D *(const u16 *)(addr + 2) &=0D *(const u16 *)(addr + 4)) =3D=3D 0xffff;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_unicast_ether_addr(c= onst u8 *addr)=0D {=0D return !is_multicast_ether_addr(addr);=0D }=0D # 198 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_valid_ether_addr(con= st u8 *addr)=0D {=0D =0D =0D return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);=0D }=0D # 213 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool eth_proto_is_802_3(__be= 16 proto)=0D {=0D =0D =0D proto &=3D (( __be16)(__builtin_constant_p((__u16)((0xFF00))) ? ((__u16)( = (((__u16)((0xFF00)) & (__u16)0x00ffU) << 8) | (((__u16)((0xFF00)) & (__u16)= 0xff00U) >> 8))) : __fswab16((0xFF00))));=0D =0D =0D return ( u16)proto >=3D ( u16)(( __be16)(__builtin_constant_p((__u16)((0x0= 600))) ? ((__u16)( (((__u16)((0x0600)) & (__u16)0x00ffU) << 8) | (((__u16)(= (0x0600)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0600))));=0D }=0D # 230 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_random_addr(u8 *add= r)=0D {=0D get_random_bytes(addr, 6);=0D addr[0] &=3D 0xfe;=0D addr[0] |=3D 0x02;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_broadcast_addr(u8 *= addr)=0D {=0D memset(addr, 0xff, 6);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_zero_addr(u8 *addr)= =0D {=0D memset(addr, 0x00, 6);=0D }=0D # 268 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_hw_addr_random(stru= ct net_device *dev)=0D {=0D u8 addr[6];=0D =0D eth_random_addr(addr);=0D __dev_addr_set(dev, addr, 6);=0D dev->addr_assign_type =3D 1;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 eth_hw_addr_crc(struct n= etdev_hw_addr *ha)=0D {=0D return ({ u32 __x =3D crc32_le(~0, ha->addr, 6); __builtin_constant_p(__x)= ? ({ u32 ___x =3D __x; ___x =3D (___x >> 16) | (___x << 16); ___x =3D ((__= _x & (u32)0xFF00FF00UL) >> 8) | ((___x & (u32)0x00FF00FFUL) << 8); ___x =3D= ((___x & (u32)0xF0F0F0F0UL) >> 4) | ((___x & (u32)0x0F0F0F0FUL) << 4); ___= x =3D ((___x & (u32)0xCCCCCCCCUL) >> 2) | ((___x & (u32)0x33333333UL) << 2)= ; ___x =3D ((___x & (u32)0xAAAAAAAAUL) >> 1) | ((___x & (u32)0x55555555UL) = << 1); ___x; }) : __bitrev32(__x); });=0D }=0D # 295 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ether_addr_copy(u8 *dst= , const u8 *src)=0D {=0D =0D =0D =0D =0D u16 *a =3D (u16 *)dst;=0D const u16 *b =3D (const u16 *)src;=0D =0D a[0] =3D b[0];=0D a[1] =3D b[1];=0D a[2] =3D b[2];=0D =0D }=0D # 317 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_hw_addr_set(struct = net_device *dev, const u8 *addr)=0D {=0D __dev_addr_set(dev, addr, 6);=0D }=0D # 330 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_hw_addr_inherit(str= uct net_device *dst,=0D struct net_device *src)=0D {=0D dst->addr_assign_type =3D src->addr_assign_type;=0D eth_hw_addr_set(dst, src->dev_addr);=0D }=0D # 346 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ether_addr_equal(const = u8 *addr1, const u8 *addr2)=0D {=0D =0D =0D =0D =0D =0D =0D const u16 *a =3D (const u16 *)addr1;=0D const u16 *b =3D (const u16 *)addr2;=0D =0D return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) =3D=3D 0;=0D =0D }=0D # 375 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ether_addr_equal_64bits= (const u8 *addr1, const u8 *addr2)=0D {=0D # 386 "./include/linux/etherdevice.h"=0D return ether_addr_equal(addr1, addr2);=0D =0D }=0D # 399 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ether_addr_equal_unalig= ned(const u8 *addr1, const u8 *addr2)=0D {=0D =0D =0D =0D return memcmp(addr1, addr2, 6) =3D=3D 0;=0D =0D }=0D # 418 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ether_addr_equal_masked= (const u8 *addr1, const u8 *addr2,=0D const u8 *mask)=0D {=0D int i;=0D =0D for (i =3D 0; i < 6; i++) {=0D if ((addr1[i] ^ addr2[i]) & mask[i])=0D return false;=0D }=0D =0D return true;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 ether_addr_to_u64(const = u8 *addr)=0D {=0D u64 u =3D 0;=0D int i;=0D =0D for (i =3D 0; i < 6; i++)=0D u =3D u << 8 | addr[i];=0D =0D return u;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void u64_to_ether_addr(u64 u= , u8 *addr)=0D {=0D int i;=0D =0D for (i =3D 6 - 1; i >=3D 0; i--) {=0D addr[i] =3D u & 0xff;=0D u =3D u >> 8;=0D }=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_addr_dec(u8 *addr)= =0D {=0D u64 u =3D ether_addr_to_u64(addr);=0D =0D u--;=0D u64_to_ether_addr(u, addr);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_addr_inc(u8 *addr)= =0D {=0D u64 u =3D ether_addr_to_u64(addr);=0D =0D u++;=0D u64_to_ether_addr(u, addr);=0D }=0D # 499 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_etherdev_addr(const = struct net_device *dev,=0D const u8 addr[6 + 2])=0D {=0D struct netdev_hw_addr *ha;=0D bool res =3D false;=0D =0D rcu_read_lock();=0D for (({ ; }), ha =3D ({ void *__mptr =3D (void *)(({ do { __attribute__((_= _noreturn__)) extern void __compiletime_assert_540(void) ; if (!((sizeof((&= dev->dev_addrs.list)->next) =3D=3D sizeof(char) || sizeof((&dev->dev_addrs.= list)->next) =3D=3D sizeof(short) || sizeof((&dev->dev_addrs.list)->next) = =3D=3D sizeof(int) || sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(lo= ng)) || sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(long long))) __c= ompiletime_assert_540(); } while (0); (*(const volatile typeof( _Generic(((= &dev->dev_addrs.list)->next), char: (char)0, unsigned char: (unsigned char)= 0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed s= hort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed i= nt)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigne= d long long: (unsigned long long)0, signed long long: (signed long long)0, = default: ((&dev->dev_addrs.list)->next))) *)&((&dev->dev_addrs.list)->next)= ); })); _Static_assert(__builtin_types_compatible_p(typeof(*(({ do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_540(void) ; if (!(= (sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(char) || sizeof((&dev->= dev_addrs.list)->next) =3D=3D sizeof(short) || sizeof((&dev->dev_addrs.list= )->next) =3D=3D sizeof(int) || sizeof((&dev->dev_addrs.list)->next) =3D=3D = sizeof(long)) || sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(long lo= ng))) __compiletime_assert_540(); } while (0); (*(const volatile typeof( _G= eneric(((&dev->dev_addrs.list)->next), char: (char)0, unsigned char: (unsig= ned char)0, signed char: (signed char)0, unsigned short: (unsigned short)0,= signed short: (signed short)0, unsigned int: (unsigned int)0, signed int: = (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0= , unsigned long long: (unsigned long long)0, signed long long: (signed long= long)0, default: ((&dev->dev_addrs.list)->next))) *)&((&dev->dev_addrs.lis= t)->next)); }))), typeof(((typeof(*ha) *)0)->list)) || __builtin_types_comp= atible_p(typeof(*(({ do { __attribute__((__noreturn__)) extern void __compi= letime_assert_540(void) ; if (!((sizeof((&dev->dev_addrs.list)->next) =3D= =3D sizeof(char) || sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(shor= t) || sizeof((&dev->dev_addrs.list)->next) =3D=3D sizeof(int) || sizeof((&d= ev->dev_addrs.list)->next) =3D=3D sizeof(long)) || sizeof((&dev->dev_addrs.= list)->next) =3D=3D sizeof(long long))) __compiletime_assert_540(); } while= (0); (*(const volatile typeof( _Generic(((&dev->dev_addrs.list)->next), ch= ar: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, = unsigned short: (unsigned short)0, signed short: (signed short)0, unsigned = int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned l= ong)0, signed long: (signed long)0, unsigned long long: (unsigned long long= )0, signed long long: (signed long long)0, default: ((&dev->dev_addrs.list)= ->next))) *)&((&dev->dev_addrs.list)->next)); }))), typeof(void)), "pointer= type mismatch in container_of()"); ((typeof(*ha) *)(__mptr - __builtin_off= setof(typeof(*ha), list))); }); &ha->list !=3D (&dev->dev_addrs.list); ha = =3D ({ void *__mptr =3D (void *)(({ do { __attribute__((__noreturn__)) exte= rn void __compiletime_assert_541(void) ; if (!((sizeof(ha->list.next) =3D= =3D sizeof(char) || sizeof(ha->list.next) =3D=3D sizeof(short) || sizeof(ha= ->list.next) =3D=3D sizeof(int) || sizeof(ha->list.next) =3D=3D sizeof(long= )) || sizeof(ha->list.next) =3D=3D sizeof(long long))) __compiletime_assert= _541(); } while (0); (*(const volatile typeof( _Generic((ha->list.next), ch= ar: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, = unsigned short: (unsigned short)0, signed short: (signed short)0, unsigned = int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned l= ong)0, signed long: (signed long)0, unsigned long long: (unsigned long long= )0, signed long long: (signed long long)0, default: (ha->list.next))) *)&(h= a->list.next)); })); _Static_assert(__builtin_types_compatible_p(typeof(*((= { do { __attribute__((__noreturn__)) extern void __compiletime_assert_541(v= oid) ; if (!((sizeof(ha->list.next) =3D=3D sizeof(char) || sizeof(ha->list.= next) =3D=3D sizeof(short) || sizeof(ha->list.next) =3D=3D sizeof(int) || s= izeof(ha->list.next) =3D=3D sizeof(long)) || sizeof(ha->list.next) =3D=3D s= izeof(long long))) __compiletime_assert_541(); } while (0); (*(const volati= le typeof( _Generic((ha->list.next), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: (ha->list.next))) *)&(ha->list.next)); }))), typeof(((typeo= f(*ha) *)0)->list)) || __builtin_types_compatible_p(typeof(*(({ do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_541(void) ; if (!(= (sizeof(ha->list.next) =3D=3D sizeof(char) || sizeof(ha->list.next) =3D=3D = sizeof(short) || sizeof(ha->list.next) =3D=3D sizeof(int) || sizeof(ha->lis= t.next) =3D=3D sizeof(long)) || sizeof(ha->list.next) =3D=3D sizeof(long lo= ng))) __compiletime_assert_541(); } while (0); (*(const volatile typeof( _G= eneric((ha->list.next), char: (char)0, unsigned char: (unsigned char)0, sig= ned char: (signed char)0, unsigned short: (unsigned short)0, signed short: = (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, = unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long= long: (unsigned long long)0, signed long long: (signed long long)0, defaul= t: (ha->list.next))) *)&(ha->list.next)); }))), typeof(void)), "pointer typ= e mismatch in container_of()"); ((typeof(*ha) *)(__mptr - __builtin_offseto= f(typeof(*ha), list))); })) {=0D res =3D ether_addr_equal_64bits(addr, ha->addr);=0D if (res)=0D break;=0D }=0D rcu_read_unlock();=0D return res;=0D }=0D # 528 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long compare_ether_= header(const void *a, const void *b)=0D {=0D # 545 "./include/linux/etherdevice.h"=0D u32 *a32 =3D (u32 *)((u8 *)a + 2);=0D u32 *b32 =3D (u32 *)((u8 *)b + 2);=0D =0D return (*(u16 *)a ^ *(u16 *)b) | (a32[0] ^ b32[0]) |=0D (a32[1] ^ b32[1]) | (a32[2] ^ b32[2]);=0D =0D }=0D # 563 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void eth_hw_addr_gen(struct = net_device *dev, const u8 *base_addr,=0D unsigned int id)=0D {=0D u64 u =3D ether_addr_to_u64(base_addr);=0D u8 addr[6];=0D =0D u +=3D id;=0D u64_to_ether_addr(u, addr);=0D eth_hw_addr_set(dev, addr);=0D }=0D # 581 "./include/linux/etherdevice.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int eth_skb_pad(struct sk_bu= ff *skb)=0D {=0D return skb_put_padto(skb, 60);=0D }=0D # 12 "./include/linux/if_vlan.h" 2=0D =0D =0D # 1 "./include/uapi/linux/if_vlan.h" 1=0D # 21 "./include/uapi/linux/if_vlan.h"=0D enum vlan_ioctl_cmds {=0D ADD_VLAN_CMD,=0D DEL_VLAN_CMD,=0D SET_VLAN_INGRESS_PRIORITY_CMD,=0D SET_VLAN_EGRESS_PRIORITY_CMD,=0D GET_VLAN_INGRESS_PRIORITY_CMD,=0D GET_VLAN_EGRESS_PRIORITY_CMD,=0D SET_VLAN_NAME_TYPE_CMD,=0D SET_VLAN_FLAG_CMD,=0D GET_VLAN_REALDEV_NAME_CMD,=0D GET_VLAN_VID_CMD=0D };=0D =0D enum vlan_flags {=0D VLAN_FLAG_REORDER_HDR =3D 0x1,=0D VLAN_FLAG_GVRP =3D 0x2,=0D VLAN_FLAG_LOOSE_BINDING =3D 0x4,=0D VLAN_FLAG_MVRP =3D 0x8,=0D VLAN_FLAG_BRIDGE_BINDING =3D 0x10,=0D };=0D =0D enum vlan_name_types {=0D VLAN_NAME_TYPE_PLUS_VID,=0D VLAN_NAME_TYPE_RAW_PLUS_VID,=0D VLAN_NAME_TYPE_PLUS_VID_NO_PAD,=0D VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD,=0D VLAN_NAME_TYPE_HIGHEST=0D };=0D =0D struct vlan_ioctl_args {=0D int cmd;=0D char device1[24];=0D =0D union {=0D char device2[24];=0D int VID;=0D unsigned int skb_priority;=0D unsigned int name_type;=0D unsigned int bind_type;=0D unsigned int flag;=0D } u;=0D =0D short vlan_qos;=0D };=0D # 15 "./include/linux/if_vlan.h" 2=0D # 35 "./include/linux/if_vlan.h"=0D struct vlan_hdr {=0D __be16 h_vlan_TCI;=0D __be16 h_vlan_encapsulated_proto;=0D };=0D # 48 "./include/linux/if_vlan.h"=0D struct vlan_ethhdr {=0D union { struct { unsigned char h_dest[6]; unsigned char h_source[6]; } ; s= truct { unsigned char h_dest[6]; unsigned char h_source[6]; } addrs; };=0D =0D =0D =0D __be16 h_vlan_proto;=0D __be16 h_vlan_TCI;=0D __be16 h_vlan_encapsulated_proto;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct vlan_ethhdr *vlan_eth= _hdr(const struct sk_buff *skb)=0D {=0D return (struct vlan_ethhdr *)skb_mac_header(skb);=0D }=0D # 72 "./include/linux/if_vlan.h"=0D extern void vlan_ioctl_set(int (*hook)(struct net *, void *));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_vlan_dev(const struc= t net_device *dev)=0D {=0D return dev->priv_flags & IFF_802_1Q_VLAN;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vlan_get_rx_ctag_filter_= info(struct net_device *dev)=0D {=0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/if_vlan.h", 87); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushse= ction __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " = %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" "= =2Epopsection" : : "i" ("include/linux/if_vlan.h"), "i" (87), "i" ((1 << 0)= |((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do= { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } _= _builtin_expect(!!(__ret_do_once), 0); });=0D return notifier_to_errno(call_netdevice_notifiers(NETDEV_CVLAN_FILTER_PUSH= _INFO, dev));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vlan_drop_rx_ctag_filte= r_info(struct net_device *dev)=0D {=0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/if_vlan.h", 93); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushse= ction __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " = %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" "= =2Epopsection" : : "i" ("include/linux/if_vlan.h"), "i" (93), "i" ((1 << 0)= |((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do= { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } _= _builtin_expect(!!(__ret_do_once), 0); });=0D call_netdevice_notifiers(NETDEV_CVLAN_FILTER_DROP_INFO, dev);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vlan_get_rx_stag_filter_= info(struct net_device *dev)=0D {=0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/if_vlan.h", 99); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushse= ction __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " = %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" "= =2Epopsection" : : "i" ("include/linux/if_vlan.h"), "i" (99), "i" ((1 << 0)= |((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do= { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } _= _builtin_expect(!!(__ret_do_once), 0); });=0D return notifier_to_errno(call_netdevice_notifiers(NETDEV_SVLAN_FILTER_PUSH= _INFO, dev));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vlan_drop_rx_stag_filte= r_info(struct net_device *dev)=0D {=0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/linu= x/if_vlan.h", 105); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushs= ection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" "= %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" = ".popsection" : : "i" ("include/linux/if_vlan.h"), "i" (105), "i" ((1 << 0)= |((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); do= { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); } _= _builtin_expect(!!(__ret_do_once), 0); });=0D call_netdevice_notifiers(NETDEV_SVLAN_FILTER_DROP_INFO, dev);=0D }=0D # 120 "./include/linux/if_vlan.h"=0D struct vlan_pcpu_stats {=0D u64 rx_packets;=0D u64 rx_bytes;=0D u64 rx_multicast;=0D u64 tx_packets;=0D u64 tx_bytes;=0D struct u64_stats_sync syncp;=0D u32 rx_errors;=0D u32 tx_dropped;=0D };=0D # 231 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *=0D __vlan_find_dev_deep_rcu(struct net_device *real_dev,=0D __be16 vlan_proto, u16 vlan_id)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D vlan_for_each(struct net_device *dev,=0D int (*action)(struct net_device *dev, int vid, void *arg),=0D void *arg)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *vlan_dev_= real_dev(const struct net_device *dev)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/if_vlan.h"), "i" (248), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0);=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 vlan_dev_vlan_id(const s= truct net_device *dev)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/if_vlan.h"), "i" (254), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 vlan_dev_vlan_proto(c= onst struct net_device *dev)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/if_vlan.h"), "i" (260), "i" (0), "i" (sizeof(struct= bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } = while (0);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 vlan_dev_get_egress_qos_= mask(struct net_device *dev,=0D u32 skprio)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vlan_do_receive(struct = sk_buff **skb)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vlan_vid_add(struct net_= device *dev, __be16 proto, u16 vid)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vlan_vid_del(struct net= _device *dev, __be16 proto, u16 vid)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vlan_vids_add_by_dev(str= uct net_device *dev,=0D const struct net_device *by_dev)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vlan_vids_del_by_dev(st= ruct net_device *dev,=0D const struct net_device *by_dev)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vlan_uses_dev(const str= uct net_device *dev)=0D {=0D return false;=0D }=0D # 307 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool eth_type_vlan(__be16 et= hertype)=0D {=0D switch (ethertype) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x8100))) ? ((__u16)( (((__u= 16)((0x8100)) & (__u16)0x00ffU) << 8) | (((__u16)((0x8100)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x8100)))):=0D case (( __be16)(__builtin_constant_p((__u16)((0x88A8))) ? ((__u16)( (((__u= 16)((0x88A8)) & (__u16)0x00ffU) << 8) | (((__u16)((0x88A8)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x88A8)))):=0D return true;=0D default:=0D return false;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool vlan_hw_offload_capable= (netdev_features_t features,=0D __be16 proto)=0D {=0D if (proto =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x8100))) ? ((__= u16)( (((__u16)((0x8100)) & (__u16)0x00ffU) << 8) | (((__u16)((0x8100)) & (= __u16)0xff00U) >> 8))) : __fswab16((0x8100)))) && features & ((netdev_featu= res_t)1 << (NETIF_F_HW_VLAN_CTAG_TX_BIT)))=0D return true;=0D if (proto =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x88A8))) ? ((__= u16)( (((__u16)((0x88A8)) & (__u16)0x00ffU) << 8) | (((__u16)((0x88A8)) & (= __u16)0xff00U) >> 8))) : __fswab16((0x88A8)))) && features & ((netdev_featu= res_t)1 << (NETIF_F_HW_VLAN_STAG_TX_BIT)))=0D return true;=0D return false;=0D }=0D # 340 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __vlan_insert_inner_tag(= struct sk_buff *skb,=0D __be16 vlan_proto, u16 vlan_tci,=0D unsigned int mac_len)=0D {=0D struct vlan_ethhdr *veth;=0D =0D if (skb_cow_head(skb, 4) < 0)=0D return -12;=0D =0D skb_push(skb, 4);=0D =0D =0D if (__builtin_expect(!!(mac_len > 2), 1))=0D memmove(skb->data, skb->data + 4, mac_len - 2);=0D skb->mac_header -=3D 4;=0D =0D veth =3D (struct vlan_ethhdr *)(skb->data + mac_len - 14);=0D =0D =0D if (__builtin_expect(!!(mac_len >=3D 2), 1)) {=0D =0D =0D =0D veth->h_vlan_proto =3D vlan_proto;=0D } else {=0D =0D =0D =0D veth->h_vlan_encapsulated_proto =3D skb->protocol;=0D }=0D =0D =0D veth->h_vlan_TCI =3D (( __be16)(__builtin_constant_p((__u16)((vlan_tci))) = ? ((__u16)( (((__u16)((vlan_tci)) & (__u16)0x00ffU) << 8) | (((__u16)((vlan= _tci)) & (__u16)0xff00U) >> 8))) : __fswab16((vlan_tci))));=0D =0D return 0;=0D }=0D # 388 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __vlan_insert_tag(struct= sk_buff *skb,=0D __be16 vlan_proto, u16 vlan_tci)=0D {=0D return __vlan_insert_inner_tag(skb, vlan_proto, vlan_tci, 14);=0D }=0D # 409 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *vlan_insert_= inner_tag(struct sk_buff *skb,=0D __be16 vlan_proto,=0D u16 vlan_tci,=0D unsigned int mac_len)=0D {=0D int err;=0D =0D err =3D __vlan_insert_inner_tag(skb, vlan_proto, vlan_tci, mac_len);=0D if (err) {=0D dev_kfree_skb_any(skb);=0D return ((void *)0);=0D }=0D return skb;=0D }=0D # 438 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *vlan_insert_= tag(struct sk_buff *skb,=0D __be16 vlan_proto, u16 vlan_tci)=0D {=0D return vlan_insert_inner_tag(skb, vlan_proto, vlan_tci, 14);=0D }=0D # 456 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *vlan_insert_= tag_set_proto(struct sk_buff *skb,=0D __be16 vlan_proto,=0D u16 vlan_tci)=0D {=0D skb =3D vlan_insert_tag(skb, vlan_proto, vlan_tci);=0D if (skb)=0D skb->protocol =3D vlan_proto;=0D return skb;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __vlan_hwaccel_clear_ta= g(struct sk_buff *skb)=0D {=0D skb->vlan_present =3D 0;=0D }=0D # 484 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __vlan_hwaccel_copy_tag= (struct sk_buff *dst, const struct sk_buff *src)=0D {=0D dst->vlan_present =3D src->vlan_present;=0D dst->vlan_proto =3D src->vlan_proto;=0D dst->vlan_tci =3D src->vlan_tci;=0D }=0D # 500 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__vlan_hwacc= el_push_inside(struct sk_buff *skb)=0D {=0D skb =3D vlan_insert_tag_set_proto(skb, skb->vlan_proto,=0D ((skb)->vlan_tci));=0D if (__builtin_expect(!!(skb), 1))=0D __vlan_hwaccel_clear_tag(skb);=0D return skb;=0D }=0D # 517 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __vlan_hwaccel_put_tag(= struct sk_buff *skb,=0D __be16 vlan_proto, u16 vlan_tci)=0D {=0D skb->vlan_proto =3D vlan_proto;=0D skb->vlan_tci =3D vlan_tci;=0D skb->vlan_present =3D 1;=0D }=0D # 532 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __vlan_get_tag(const str= uct sk_buff *skb, u16 *vlan_tci)=0D {=0D struct vlan_ethhdr *veth =3D (struct vlan_ethhdr *)skb->data;=0D =0D if (!eth_type_vlan(veth->h_vlan_proto))=0D return -22;=0D =0D *vlan_tci =3D (__builtin_constant_p((__u16)(( __u16)(__be16)(veth->h_vlan_= TCI))) ? ((__u16)( (((__u16)(( __u16)(__be16)(veth->h_vlan_TCI)) & (__u16)0= x00ffU) << 8) | (((__u16)(( __u16)(__be16)(veth->h_vlan_TCI)) & (__u16)0xff= 00U) >> 8))) : __fswab16(( __u16)(__be16)(veth->h_vlan_TCI)));=0D return 0;=0D }=0D # 550 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __vlan_hwaccel_get_tag(c= onst struct sk_buff *skb,=0D u16 *vlan_tci)=0D {=0D if (((skb)->vlan_present)) {=0D *vlan_tci =3D ((skb)->vlan_tci);=0D return 0;=0D } else {=0D *vlan_tci =3D 0;=0D return -22;=0D }=0D }=0D # 569 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int vlan_get_tag(const struc= t sk_buff *skb, u16 *vlan_tci)=0D {=0D if (skb->dev->features & ((netdev_features_t)1 << (NETIF_F_HW_VLAN_CTAG_TX= _BIT))) {=0D return __vlan_hwaccel_get_tag(skb, vlan_tci);=0D } else {=0D return __vlan_get_tag(skb, vlan_tci);=0D }=0D }=0D # 587 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 __vlan_get_protocol(c= onst struct sk_buff *skb, __be16 type,=0D int *depth)=0D {=0D unsigned int vlan_depth =3D skb->mac_len, parse_depth =3D 8;=0D =0D =0D =0D =0D =0D if (eth_type_vlan(type)) {=0D if (vlan_depth) {=0D if (({ int __ret_warn_on =3D !!(vlan_depth < 4); if (__builtin_expect(!!= (__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".push= section __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" = " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t"= ".popsection" : : "i" ("include/linux/if_vlan.h"), "i" (598), "i" ((1 << 0= )|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_ex= pect(!!(__ret_warn_on), 0); }))=0D return 0;=0D vlan_depth -=3D 4;=0D } else {=0D vlan_depth =3D 14;=0D }=0D do {=0D struct vlan_hdr vhdr, *vh;=0D =0D vh =3D skb_header_pointer(skb, vlan_depth, sizeof(vhdr), &vhdr);=0D if (__builtin_expect(!!(!vh || !--parse_depth), 0))=0D return 0;=0D =0D type =3D vh->h_vlan_encapsulated_proto;=0D vlan_depth +=3D 4;=0D } while (eth_type_vlan(type));=0D }=0D =0D if (depth)=0D *depth =3D vlan_depth;=0D =0D return type;=0D }=0D # 629 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 vlan_get_protocol(con= st struct sk_buff *skb)=0D {=0D return __vlan_get_protocol(skb, skb->protocol, ((void *)0));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be16 skb_protocol(const st= ruct sk_buff *skb, bool skip_vlan)=0D {=0D if (!skip_vlan)=0D =0D =0D =0D return ((skb)->vlan_present) ? skb->vlan_proto : skb->protocol;=0D =0D return vlan_get_protocol(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void vlan_set_encap_proto(st= ruct sk_buff *skb,=0D struct vlan_hdr *vhdr)=0D {=0D __be16 proto;=0D unsigned short *rawp;=0D =0D =0D =0D =0D =0D =0D proto =3D vhdr->h_vlan_encapsulated_proto;=0D if (eth_proto_is_802_3(proto)) {=0D skb->protocol =3D proto;=0D return;=0D }=0D =0D rawp =3D (unsigned short *)(vhdr + 1);=0D if (*rawp =3D=3D 0xFFFF)=0D =0D =0D =0D =0D =0D =0D =0D skb->protocol =3D (( __be16)(__builtin_constant_p((__u16)((0x0001))) ? ((= __u16)( (((__u16)((0x0001)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0001)) &= (__u16)0xff00U) >> 8))) : __fswab16((0x0001))));=0D else=0D =0D =0D =0D skb->protocol =3D (( __be16)(__builtin_constant_p((__u16)((0x0004))) ? ((= __u16)( (((__u16)((0x0004)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0004)) &= (__u16)0xff00U) >> 8))) : __fswab16((0x0004))));=0D }=0D # 689 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_vlan_tagged(const s= truct sk_buff *skb)=0D {=0D if (!((skb)->vlan_present) &&=0D __builtin_expect(!!(!eth_type_vlan(skb->protocol)), 1))=0D return false;=0D =0D return true;=0D }=0D # 705 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_vlan_tagged_multi(s= truct sk_buff *skb)=0D {=0D __be16 protocol =3D skb->protocol;=0D =0D if (!((skb)->vlan_present)) {=0D struct vlan_ethhdr *veh;=0D =0D if (__builtin_expect(!!(!eth_type_vlan(protocol)), 1))=0D return false;=0D =0D if (__builtin_expect(!!(!pskb_may_pull(skb, 18)), 0))=0D return false;=0D =0D veh =3D (struct vlan_ethhdr *)skb->data;=0D protocol =3D veh->h_vlan_encapsulated_proto;=0D }=0D =0D if (!eth_type_vlan(protocol))=0D return false;=0D =0D return true;=0D }=0D # 735 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) netdev_features_t vlan_featu= res_check(struct sk_buff *skb,=0D netdev_features_t features)=0D {=0D if (skb_vlan_tagged_multi(skb)) {=0D =0D =0D =0D =0D =0D features &=3D ((netdev_features_t)1 << (NETIF_F_SG_BIT)) | ((netdev_featu= res_t)1 << (NETIF_F_HIGHDMA_BIT)) | ((netdev_features_t)1 << (NETIF_F_HW_CS= UM_BIT)) |=0D ((netdev_features_t)1 << (NETIF_F_FRAGLIST_BIT)) | ((netdev_features= _t)1 << (NETIF_F_HW_VLAN_CTAG_TX_BIT)) |=0D ((netdev_features_t)1 << (NETIF_F_HW_VLAN_STAG_TX_BIT));=0D }=0D =0D return features;=0D }=0D # 761 "./include/linux/if_vlan.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long compare_vlan_h= eader(const struct vlan_hdr *h1,=0D const struct vlan_hdr *h2)=0D {=0D =0D =0D =0D return (( u32)h1->h_vlan_TCI ^ ( u32)h2->h_vlan_TCI) |=0D (( u32)h1->h_vlan_encapsulated_proto ^=0D ( u32)h2->h_vlan_encapsulated_proto);=0D =0D }=0D # 21 "./include/linux/filter.h" 2=0D =0D =0D # 1 "./include/crypto/sha1.h" 1=0D # 20 "./include/crypto/sha1.h"=0D extern const u8 sha1_zero_message_hash[20];=0D =0D struct sha1_state {=0D u32 state[20 / 4];=0D u64 count;=0D u8 buffer[64];=0D };=0D =0D struct shash_desc;=0D =0D extern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,=0D unsigned int len);=0D =0D extern int crypto_sha1_finup(struct shash_desc *desc, const u8 *data,=0D unsigned int len, u8 *hash);=0D # 43 "./include/crypto/sha1.h"=0D void sha1_init(__u32 *buf);=0D void sha1_transform(__u32 *digest, const char *data, __u32 *W);=0D # 24 "./include/linux/filter.h" 2=0D =0D =0D # 1 "./include/net/sch_generic.h" 1=0D # 19 "./include/net/sch_generic.h"=0D # 1 "./include/net/gen_stats.h" 1=0D =0D =0D =0D =0D # 1 "./include/uapi/linux/gen_stats.h" 1=0D =0D =0D =0D =0D =0D =0D enum {=0D TCA_STATS_UNSPEC,=0D TCA_STATS_BASIC,=0D TCA_STATS_RATE_EST,=0D TCA_STATS_QUEUE,=0D TCA_STATS_APP,=0D TCA_STATS_RATE_EST64,=0D TCA_STATS_PAD,=0D TCA_STATS_BASIC_HW,=0D TCA_STATS_PKT64,=0D __TCA_STATS_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct gnet_stats_basic {=0D __u64 bytes;=0D __u32 packets;=0D };=0D =0D =0D =0D =0D =0D =0D struct gnet_stats_rate_est {=0D __u32 bps;=0D __u32 pps;=0D };=0D =0D =0D =0D =0D =0D =0D struct gnet_stats_rate_est64 {=0D __u64 bps;=0D __u64 pps;=0D };=0D # 59 "./include/uapi/linux/gen_stats.h"=0D struct gnet_stats_queue {=0D __u32 qlen;=0D __u32 backlog;=0D __u32 drops;=0D __u32 requeues;=0D __u32 overlimits;=0D };=0D =0D =0D =0D =0D =0D =0D struct gnet_estimator {=0D signed char interval;=0D unsigned char ewma_log;=0D };=0D # 6 "./include/net/gen_stats.h" 2=0D # 18 "./include/net/gen_stats.h"=0D struct gnet_stats_basic_sync {=0D u64_stats_t bytes;=0D u64_stats_t packets;=0D struct u64_stats_sync syncp;=0D } __attribute__((__aligned__(2 * sizeof(u64))));=0D =0D struct net_rate_estimator;=0D =0D struct gnet_dump {=0D spinlock_t * lock;=0D struct sk_buff * skb;=0D struct nlattr * tail;=0D =0D =0D int compat_tc_stats;=0D int compat_xstats;=0D int padattr;=0D void * xstats;=0D int xstats_len;=0D struct tc_stats tc_stats;=0D };=0D =0D void gnet_stats_basic_sync_init(struct gnet_stats_basic_sync *b);=0D int gnet_stats_start_copy(struct sk_buff *skb, int type, spinlock_t *lock,= =0D struct gnet_dump *d, int padattr);=0D =0D int gnet_stats_start_copy_compat(struct sk_buff *skb, int type,=0D int tc_stats_type, int xstats_type,=0D spinlock_t *lock, struct gnet_dump *d,=0D int padattr);=0D =0D int gnet_stats_copy_basic(struct gnet_dump *d,=0D struct gnet_stats_basic_sync *cpu,=0D struct gnet_stats_basic_sync *b, bool running);=0D void gnet_stats_add_basic(struct gnet_stats_basic_sync *bstats,=0D struct gnet_stats_basic_sync *cpu,=0D struct gnet_stats_basic_sync *b, bool running);=0D int gnet_stats_copy_basic_hw(struct gnet_dump *d,=0D struct gnet_stats_basic_sync *cpu,=0D struct gnet_stats_basic_sync *b, bool running);=0D int gnet_stats_copy_rate_est(struct gnet_dump *d,=0D struct net_rate_estimator **ptr);=0D int gnet_stats_copy_queue(struct gnet_dump *d,=0D struct gnet_stats_queue *cpu_q,=0D struct gnet_stats_queue *q, __u32 qlen);=0D void gnet_stats_add_queue(struct gnet_stats_queue *qstats,=0D const struct gnet_stats_queue *cpu_q,=0D const struct gnet_stats_queue *q);=0D int gnet_stats_copy_app(struct gnet_dump *d, void *st, int len);=0D =0D int gnet_stats_finish_copy(struct gnet_dump *d);=0D =0D int gen_new_estimator(struct gnet_stats_basic_sync *bstats,=0D struct gnet_stats_basic_sync *cpu_bstats,=0D struct net_rate_estimator **rate_est,=0D spinlock_t *lock,=0D bool running, struct nlattr *opt);=0D void gen_kill_estimator(struct net_rate_estimator **ptr);=0D int gen_replace_estimator(struct gnet_stats_basic_sync *bstats,=0D struct gnet_stats_basic_sync *cpu_bstats,=0D struct net_rate_estimator **ptr,=0D spinlock_t *lock,=0D bool running, struct nlattr *opt);=0D bool gen_estimator_active(struct net_rate_estimator **ptr);=0D bool gen_estimator_read(struct net_rate_estimator **ptr,=0D struct gnet_stats_rate_est64 *sample);=0D # 20 "./include/net/sch_generic.h" 2=0D =0D # 1 "./include/net/flow_offload.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct flow_match {=0D struct flow_dissector *dissector;=0D void *mask;=0D void *key;=0D };=0D =0D struct flow_match_meta {=0D struct flow_dissector_key_meta *key, *mask;=0D };=0D =0D struct flow_match_basic {=0D struct flow_dissector_key_basic *key, *mask;=0D };=0D =0D struct flow_match_control {=0D struct flow_dissector_key_control *key, *mask;=0D };=0D =0D struct flow_match_eth_addrs {=0D struct flow_dissector_key_eth_addrs *key, *mask;=0D };=0D =0D struct flow_match_vlan {=0D struct flow_dissector_key_vlan *key, *mask;=0D };=0D =0D struct flow_match_ipv4_addrs {=0D struct flow_dissector_key_ipv4_addrs *key, *mask;=0D };=0D =0D struct flow_match_ipv6_addrs {=0D struct flow_dissector_key_ipv6_addrs *key, *mask;=0D };=0D =0D struct flow_match_ip {=0D struct flow_dissector_key_ip *key, *mask;=0D };=0D =0D struct flow_match_ports {=0D struct flow_dissector_key_ports *key, *mask;=0D };=0D =0D struct flow_match_icmp {=0D struct flow_dissector_key_icmp *key, *mask;=0D };=0D =0D struct flow_match_tcp {=0D struct flow_dissector_key_tcp *key, *mask;=0D };=0D =0D struct flow_match_mpls {=0D struct flow_dissector_key_mpls *key, *mask;=0D };=0D =0D struct flow_match_enc_keyid {=0D struct flow_dissector_key_keyid *key, *mask;=0D };=0D =0D struct flow_match_enc_opts {=0D struct flow_dissector_key_enc_opts *key, *mask;=0D };=0D =0D struct flow_match_ct {=0D struct flow_dissector_key_ct *key, *mask;=0D };=0D =0D struct flow_rule;=0D =0D void flow_rule_match_meta(const struct flow_rule *rule,=0D struct flow_match_meta *out);=0D void flow_rule_match_basic(const struct flow_rule *rule,=0D struct flow_match_basic *out);=0D void flow_rule_match_control(const struct flow_rule *rule,=0D struct flow_match_control *out);=0D void flow_rule_match_eth_addrs(const struct flow_rule *rule,=0D struct flow_match_eth_addrs *out);=0D void flow_rule_match_vlan(const struct flow_rule *rule,=0D struct flow_match_vlan *out);=0D void flow_rule_match_cvlan(const struct flow_rule *rule,=0D struct flow_match_vlan *out);=0D void flow_rule_match_ipv4_addrs(const struct flow_rule *rule,=0D struct flow_match_ipv4_addrs *out);=0D void flow_rule_match_ipv6_addrs(const struct flow_rule *rule,=0D struct flow_match_ipv6_addrs *out);=0D void flow_rule_match_ip(const struct flow_rule *rule,=0D struct flow_match_ip *out);=0D void flow_rule_match_ports(const struct flow_rule *rule,=0D struct flow_match_ports *out);=0D void flow_rule_match_tcp(const struct flow_rule *rule,=0D struct flow_match_tcp *out);=0D void flow_rule_match_icmp(const struct flow_rule *rule,=0D struct flow_match_icmp *out);=0D void flow_rule_match_mpls(const struct flow_rule *rule,=0D struct flow_match_mpls *out);=0D void flow_rule_match_enc_control(const struct flow_rule *rule,=0D struct flow_match_control *out);=0D void flow_rule_match_enc_ipv4_addrs(const struct flow_rule *rule,=0D struct flow_match_ipv4_addrs *out);=0D void flow_rule_match_enc_ipv6_addrs(const struct flow_rule *rule,=0D struct flow_match_ipv6_addrs *out);=0D void flow_rule_match_enc_ip(const struct flow_rule *rule,=0D struct flow_match_ip *out);=0D void flow_rule_match_enc_ports(const struct flow_rule *rule,=0D struct flow_match_ports *out);=0D void flow_rule_match_enc_keyid(const struct flow_rule *rule,=0D struct flow_match_enc_keyid *out);=0D void flow_rule_match_enc_opts(const struct flow_rule *rule,=0D struct flow_match_enc_opts *out);=0D void flow_rule_match_ct(const struct flow_rule *rule,=0D struct flow_match_ct *out);=0D =0D enum flow_action_id {=0D FLOW_ACTION_ACCEPT =3D 0,=0D FLOW_ACTION_DROP,=0D FLOW_ACTION_TRAP,=0D FLOW_ACTION_GOTO,=0D FLOW_ACTION_REDIRECT,=0D FLOW_ACTION_MIRRED,=0D FLOW_ACTION_REDIRECT_INGRESS,=0D FLOW_ACTION_MIRRED_INGRESS,=0D FLOW_ACTION_VLAN_PUSH,=0D FLOW_ACTION_VLAN_POP,=0D FLOW_ACTION_VLAN_MANGLE,=0D FLOW_ACTION_TUNNEL_ENCAP,=0D FLOW_ACTION_TUNNEL_DECAP,=0D FLOW_ACTION_MANGLE,=0D FLOW_ACTION_ADD,=0D FLOW_ACTION_CSUM,=0D FLOW_ACTION_MARK,=0D FLOW_ACTION_PTYPE,=0D FLOW_ACTION_PRIORITY,=0D FLOW_ACTION_WAKE,=0D FLOW_ACTION_QUEUE,=0D FLOW_ACTION_SAMPLE,=0D FLOW_ACTION_POLICE,=0D FLOW_ACTION_CT,=0D FLOW_ACTION_CT_METADATA,=0D FLOW_ACTION_MPLS_PUSH,=0D FLOW_ACTION_MPLS_POP,=0D FLOW_ACTION_MPLS_MANGLE,=0D FLOW_ACTION_GATE,=0D FLOW_ACTION_PPPOE_PUSH,=0D FLOW_ACTION_JUMP,=0D FLOW_ACTION_PIPE,=0D FLOW_ACTION_VLAN_PUSH_ETH,=0D FLOW_ACTION_VLAN_POP_ETH,=0D NUM_FLOW_ACTIONS,=0D };=0D =0D =0D =0D =0D =0D enum flow_action_mangle_base {=0D FLOW_ACT_MANGLE_UNSPEC =3D 0,=0D FLOW_ACT_MANGLE_HDR_TYPE_ETH,=0D FLOW_ACT_MANGLE_HDR_TYPE_IP4,=0D FLOW_ACT_MANGLE_HDR_TYPE_IP6,=0D FLOW_ACT_MANGLE_HDR_TYPE_TCP,=0D FLOW_ACT_MANGLE_HDR_TYPE_UDP,=0D };=0D =0D enum flow_action_hw_stats_bit {=0D FLOW_ACTION_HW_STATS_IMMEDIATE_BIT,=0D FLOW_ACTION_HW_STATS_DELAYED_BIT,=0D FLOW_ACTION_HW_STATS_DISABLED_BIT,=0D =0D FLOW_ACTION_HW_STATS_NUM_BITS=0D };=0D =0D enum flow_action_hw_stats {=0D FLOW_ACTION_HW_STATS_IMMEDIATE =3D=0D ((((1UL))) << (FLOW_ACTION_HW_STATS_IMMEDIATE_BIT)),=0D FLOW_ACTION_HW_STATS_DELAYED =3D ((((1UL))) << (FLOW_ACTION_HW_STATS_DELAY= ED_BIT)),=0D FLOW_ACTION_HW_STATS_ANY =3D FLOW_ACTION_HW_STATS_IMMEDIATE |=0D FLOW_ACTION_HW_STATS_DELAYED,=0D FLOW_ACTION_HW_STATS_DISABLED =3D=0D ((((1UL))) << (FLOW_ACTION_HW_STATS_DISABLED_BIT)),=0D FLOW_ACTION_HW_STATS_DONT_CARE =3D ((((1UL))) << (FLOW_ACTION_HW_STATS_NUM= _BITS)) - 1,=0D };=0D =0D typedef void (*action_destr)(void *priv);=0D =0D struct flow_action_cookie {=0D u32 cookie_len;=0D u8 cookie[];=0D };=0D =0D struct flow_action_cookie *flow_action_cookie_create(void *data,=0D unsigned int len,=0D gfp_t gfp);=0D void flow_action_cookie_destroy(struct flow_action_cookie *cookie);=0D =0D struct flow_action_entry {=0D enum flow_action_id id;=0D u32 hw_index;=0D enum flow_action_hw_stats hw_stats;=0D action_destr destructor;=0D void *destructor_priv;=0D union {=0D u32 chain_index;=0D struct net_device *dev;=0D struct {=0D u16 vid;=0D __be16 proto;=0D u8 prio;=0D } vlan;=0D struct {=0D unsigned char dst[6];=0D unsigned char src[6];=0D } vlan_push_eth;=0D struct {=0D =0D enum flow_action_mangle_base htype;=0D u32 offset;=0D u32 mask;=0D u32 val;=0D } mangle;=0D struct ip_tunnel_info *tunnel;=0D u32 csum_flags;=0D u32 mark;=0D u16 ptype;=0D u32 priority;=0D struct {=0D u32 ctx;=0D u32 index;=0D u8 vf;=0D } queue;=0D struct {=0D struct psample_group *psample_group;=0D u32 rate;=0D u32 trunc_size;=0D bool truncate;=0D } sample;=0D struct {=0D u32 burst;=0D u64 rate_bytes_ps;=0D u64 peakrate_bytes_ps;=0D u32 avrate;=0D u16 overhead;=0D u64 burst_pkt;=0D u64 rate_pkt_ps;=0D u32 mtu;=0D struct {=0D enum flow_action_id act_id;=0D u32 extval;=0D } exceed, notexceed;=0D } police;=0D struct {=0D int action;=0D u16 zone;=0D struct nf_flowtable *flow_table;=0D } ct;=0D struct {=0D unsigned long cookie;=0D u32 mark;=0D u32 labels[4];=0D bool orig_dir;=0D } ct_metadata;=0D struct {=0D u32 label;=0D __be16 proto;=0D u8 tc;=0D u8 bos;=0D u8 ttl;=0D } mpls_push;=0D struct {=0D __be16 proto;=0D } mpls_pop;=0D struct {=0D u32 label;=0D u8 tc;=0D u8 bos;=0D u8 ttl;=0D } mpls_mangle;=0D struct {=0D s32 prio;=0D u64 basetime;=0D u64 cycletime;=0D u64 cycletimeext;=0D u32 num_entries;=0D struct action_gate_entry *entries;=0D } gate;=0D struct {=0D u16 sid;=0D } pppoe;=0D };=0D struct flow_action_cookie *cookie;=0D };=0D =0D struct flow_action {=0D unsigned int num_entries;=0D struct flow_action_entry entries[];=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool flow_action_has_entries= (const struct flow_action *action)=0D {=0D return action->num_entries;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool flow_offload_has_one_ac= tion(const struct flow_action *action)=0D {=0D return action->num_entries =3D=3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool flow_action_is_last_ent= ry(const struct flow_action *action,=0D const struct flow_action_entry *entry)=0D {=0D return entry =3D=3D &action->entries[action->num_entries - 1];=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D flow_action_mixed_hw_stats_check(const struct flow_action *action,=0D struct netlink_ext_ack *extack)=0D {=0D const struct flow_action_entry *action_entry;=0D u8 last_hw_stats;=0D int i;=0D =0D if (flow_offload_has_one_action(action))=0D return true;=0D =0D for (i =3D 0, action_entry =3D &(action)->entries[0]; i < (action)->num_en= tries; action_entry =3D &(action)->entries[++i]) {=0D if (i && action_entry->hw_stats !=3D last_hw_stats) {=0D do { static const char __msg[] =3D "ipv6" ": " "Mixing HW stats types fo= r actions is not supported"; struct netlink_ext_ack *__extack =3D ((extack)= ); do_trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; = } while (0);=0D return false;=0D }=0D last_hw_stats =3D action_entry->hw_stats;=0D }=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct flow_action_ent= ry *=0D flow_action_first_entry_get(const struct flow_action *action)=0D {=0D ({ int __ret_warn_on =3D !!(!flow_action_has_entries(action)); if (__built= in_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebre= ak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n= \t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org = 2b + %3\n\t" ".popsection" : : "i" ("include/net/flow_offload.h"), "i" (355= ), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0= ); __builtin_expect(!!(__ret_warn_on), 0); });=0D return &action->entries[0];=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D __flow_action_hw_stats_check(const struct flow_action *action,=0D struct netlink_ext_ack *extack,=0D bool check_allow_bit,=0D enum flow_action_hw_stats_bit allow_bit)=0D {=0D const struct flow_action_entry *action_entry;=0D =0D if (!flow_action_has_entries(action))=0D return true;=0D if (!flow_action_mixed_hw_stats_check(action, extack))=0D return false;=0D =0D action_entry =3D flow_action_first_entry_get(action);=0D =0D =0D ({ int __ret_warn_on =3D !!(!action_entry->hw_stats); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("include/net/flow_offload.h"), "i" (375), "i" ((= 1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while = (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D if (!check_allow_bit &&=0D ~action_entry->hw_stats & FLOW_ACTION_HW_STATS_ANY) {=0D do { static const char __msg[] =3D "ipv6" ": " "Driver supports only defa= ult HW stats type \"any\""; struct netlink_ext_ack *__extack =3D ((extack))= ; do_trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; }= while (0);=0D return false;=0D } else if (check_allow_bit &&=0D !(action_entry->hw_stats & ((((1UL))) << (allow_bit)))) {=0D do { static const char __msg[] =3D "ipv6" ": " "Driver does not support s= elected HW stats type"; struct netlink_ext_ack *__extack =3D ((extack)); do= _trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } whi= le (0);=0D return false;=0D }=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D flow_action_hw_stats_check(const struct flow_action *action,=0D struct netlink_ext_ack *extack,=0D enum flow_action_hw_stats_bit allow_bit)=0D {=0D return __flow_action_hw_stats_check(action, extack, true, allow_bit);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D flow_action_basic_hw_stats_check(const struct flow_action *action,=0D struct netlink_ext_ack *extack)=0D {=0D return __flow_action_hw_stats_check(action, extack, false, 0);=0D }=0D =0D struct flow_rule {=0D struct flow_match match;=0D struct flow_action action;=0D };=0D =0D struct flow_rule *flow_rule_alloc(unsigned int num_actions);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool flow_rule_match_key(con= st struct flow_rule *rule,=0D enum flow_dissector_key_id key)=0D {=0D return dissector_uses_key(rule->match.dissector, key);=0D }=0D =0D struct flow_stats {=0D u64 pkts;=0D u64 bytes;=0D u64 drops;=0D u64 lastused;=0D enum flow_action_hw_stats used_hw_stats;=0D bool used_hw_stats_valid;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flow_stats_update(struc= t flow_stats *flow_stats,=0D u64 bytes, u64 pkts,=0D u64 drops, u64 lastused,=0D enum flow_action_hw_stats used_hw_stats)=0D {=0D flow_stats->pkts +=3D pkts;=0D flow_stats->bytes +=3D bytes;=0D flow_stats->drops +=3D drops;=0D flow_stats->lastused =3D __builtin_choose_expr(((!!(sizeof((typeof((u64)(f= low_stats->lastused)) *)1 =3D=3D (typeof((u64)(lastused)) *)1))) && ((sizeo= f(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u64)(flow_stats->lastused)) * = 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u6= 4)(lastused)) * 0l)) : (int *)8))))), (((u64)(flow_stats->lastused)) > ((u6= 4)(lastused)) ? ((u64)(flow_stats->lastused)) : ((u64)(lastused))), ({ type= of((u64)(flow_stats->lastused)) __UNIQUE_ID___x542 =3D ((u64)(flow_stats->l= astused)); typeof((u64)(lastused)) __UNIQUE_ID___y543 =3D ((u64)(lastused))= ; ((__UNIQUE_ID___x542) > (__UNIQUE_ID___y543) ? (__UNIQUE_ID___x542) : (__= UNIQUE_ID___y543)); }));=0D =0D =0D =0D =0D ({ int __ret_warn_on =3D !!(used_hw_stats =3D=3D FLOW_ACTION_HW_STATS_ANY)= ; if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/net/flow_offload.= h"), "i" (439), "i" ((1 << 0)|(((9) << 8))), "i" (sizeof(struct bug_entry))= ); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D flow_stats->used_hw_stats |=3D used_hw_stats;=0D flow_stats->used_hw_stats_valid =3D true;=0D }=0D =0D enum flow_block_command {=0D FLOW_BLOCK_BIND,=0D FLOW_BLOCK_UNBIND,=0D };=0D =0D enum flow_block_binder_type {=0D FLOW_BLOCK_BINDER_TYPE_UNSPEC,=0D FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS,=0D FLOW_BLOCK_BINDER_TYPE_CLSACT_EGRESS,=0D FLOW_BLOCK_BINDER_TYPE_RED_EARLY_DROP,=0D FLOW_BLOCK_BINDER_TYPE_RED_MARK,=0D };=0D =0D struct flow_block {=0D struct list_head cb_list;=0D };=0D =0D struct netlink_ext_ack;=0D =0D struct flow_block_offload {=0D enum flow_block_command command;=0D enum flow_block_binder_type binder_type;=0D bool block_shared;=0D bool unlocked_driver_cb;=0D struct net *net;=0D struct flow_block *block;=0D struct list_head cb_list;=0D struct list_head *driver_block_list;=0D struct netlink_ext_ack *extack;=0D struct Qdisc *sch;=0D struct list_head *cb_list_head;=0D };=0D =0D enum tc_setup_type;=0D typedef int flow_setup_cb_t(enum tc_setup_type type, void *type_data,=0D void *cb_priv);=0D =0D struct flow_block_cb;=0D =0D struct flow_block_indr {=0D struct list_head list;=0D struct net_device *dev;=0D struct Qdisc *sch;=0D enum flow_block_binder_type binder_type;=0D void *data;=0D void *cb_priv;=0D void (*cleanup)(struct flow_block_cb *block_cb);=0D };=0D =0D struct flow_block_cb {=0D struct list_head driver_list;=0D struct list_head list;=0D flow_setup_cb_t *cb;=0D void *cb_ident;=0D void *cb_priv;=0D void (*release)(void *cb_priv);=0D struct flow_block_indr indr;=0D unsigned int refcnt;=0D };=0D =0D struct flow_block_cb *flow_block_cb_alloc(flow_setup_cb_t *cb,=0D void *cb_ident, void *cb_priv,=0D void (*release)(void *cb_priv));=0D struct flow_block_cb *flow_indr_block_cb_alloc(flow_setup_cb_t *cb,=0D void *cb_ident, void *cb_priv,=0D void (*release)(void *cb_priv),=0D struct flow_block_offload *bo,=0D struct net_device *dev,=0D struct Qdisc *sch, void *data,=0D void *indr_cb_priv,=0D void (*cleanup)(struct flow_block_cb *block_cb));=0D void flow_block_cb_free(struct flow_block_cb *block_cb);=0D =0D struct flow_block_cb *flow_block_cb_lookup(struct flow_block *block,=0D flow_setup_cb_t *cb, void *cb_ident);=0D =0D void *flow_block_cb_priv(struct flow_block_cb *block_cb);=0D void flow_block_cb_incref(struct flow_block_cb *block_cb);=0D unsigned int flow_block_cb_decref(struct flow_block_cb *block_cb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flow_block_cb_add(struc= t flow_block_cb *block_cb,=0D struct flow_block_offload *offload)=0D {=0D list_add_tail(&block_cb->list, &offload->cb_list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flow_block_cb_remove(st= ruct flow_block_cb *block_cb,=0D struct flow_block_offload *offload)=0D {=0D list_move(&block_cb->list, &offload->cb_list);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flow_indr_block_cb_remo= ve(struct flow_block_cb *block_cb,=0D struct flow_block_offload *offload)=0D {=0D list_del(&block_cb->indr.list);=0D list_move(&block_cb->list, &offload->cb_list);=0D }=0D =0D bool flow_block_cb_is_busy(flow_setup_cb_t *cb, void *cb_ident,=0D struct list_head *driver_block_list);=0D =0D int flow_block_cb_setup_simple(struct flow_block_offload *f,=0D struct list_head *driver_list,=0D flow_setup_cb_t *cb,=0D void *cb_ident, void *cb_priv, bool ingress_only);=0D =0D enum flow_cls_command {=0D FLOW_CLS_REPLACE,=0D FLOW_CLS_DESTROY,=0D FLOW_CLS_STATS,=0D FLOW_CLS_TMPLT_CREATE,=0D FLOW_CLS_TMPLT_DESTROY,=0D };=0D =0D struct flow_cls_common_offload {=0D u32 chain_index;=0D __be16 protocol;=0D u32 prio;=0D struct netlink_ext_ack *extack;=0D };=0D =0D struct flow_cls_offload {=0D struct flow_cls_common_offload common;=0D enum flow_cls_command command;=0D unsigned long cookie;=0D struct flow_rule *rule;=0D struct flow_stats stats;=0D u32 classid;=0D };=0D =0D enum offload_act_command {=0D FLOW_ACT_REPLACE,=0D FLOW_ACT_DESTROY,=0D FLOW_ACT_STATS,=0D };=0D =0D struct flow_offload_action {=0D struct netlink_ext_ack *extack;=0D enum offload_act_command command;=0D enum flow_action_id id;=0D u32 index;=0D struct flow_stats stats;=0D struct flow_action action;=0D };=0D =0D struct flow_offload_action *offload_action_alloc(unsigned int num_actions);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct flow_rule *=0D flow_cls_offload_flow_rule(struct flow_cls_offload *flow_cmd)=0D {=0D return flow_cmd->rule;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void flow_block_init(struct = flow_block *flow_block)=0D {=0D INIT_LIST_HEAD(&flow_block->cb_list);=0D }=0D =0D typedef int flow_indr_block_bind_cb_t(struct net_device *dev, struct Qdisc = *sch, void *cb_priv,=0D enum tc_setup_type type, void *type_data,=0D void *data,=0D void (*cleanup)(struct flow_block_cb *block_cb));=0D =0D int flow_indr_dev_register(flow_indr_block_bind_cb_t *cb, void *cb_priv);=0D void flow_indr_dev_unregister(flow_indr_block_bind_cb_t *cb, void *cb_priv,= =0D void (*release)(void *cb_priv));=0D int flow_indr_dev_setup_offload(struct net_device *dev, struct Qdisc *sch,= =0D enum tc_setup_type type, void *data,=0D struct flow_block_offload *bo,=0D void (*cleanup)(struct flow_block_cb *block_cb));=0D # 22 "./include/net/sch_generic.h" 2=0D =0D struct Qdisc_ops;=0D struct qdisc_walker;=0D struct tcf_walker;=0D struct module;=0D struct bpf_flow_keys;=0D =0D struct qdisc_rate_table {=0D struct tc_ratespec rate;=0D u32 data[256];=0D struct qdisc_rate_table *next;=0D int refcnt;=0D };=0D =0D enum qdisc_state_t {=0D __QDISC_STATE_SCHED,=0D __QDISC_STATE_DEACTIVATED,=0D __QDISC_STATE_MISSED,=0D __QDISC_STATE_DRAINING,=0D };=0D =0D enum qdisc_state2_t {=0D =0D =0D =0D __QDISC_STATE2_RUNNING,=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct qdisc_size_table {=0D struct callback_head rcu;=0D struct list_head list;=0D struct tc_sizespec szopts;=0D int refcnt;=0D u16 data[];=0D };=0D =0D =0D struct qdisc_skb_head {=0D struct sk_buff *head;=0D struct sk_buff *tail;=0D __u32 qlen;=0D spinlock_t lock;=0D };=0D =0D struct Qdisc {=0D int (*enqueue)(struct sk_buff *skb,=0D struct Qdisc *sch,=0D struct sk_buff **to_free);=0D struct sk_buff * (*dequeue)(struct Qdisc *sch);=0D unsigned int flags;=0D # 97 "./include/net/sch_generic.h"=0D u32 limit;=0D const struct Qdisc_ops *ops;=0D struct qdisc_size_table *stab;=0D struct hlist_node hash;=0D u32 handle;=0D u32 parent;=0D =0D struct netdev_queue *dev_queue;=0D =0D struct net_rate_estimator *rate_est;=0D struct gnet_stats_basic_sync *cpu_bstats;=0D struct gnet_stats_queue *cpu_qstats;=0D int pad;=0D refcount_t refcnt;=0D =0D =0D =0D =0D struct sk_buff_head gso_skb __attribute__((__aligned__((1 << 6))));=0D struct qdisc_skb_head q;=0D struct gnet_stats_basic_sync bstats;=0D struct gnet_stats_queue qstats;=0D unsigned long state;=0D unsigned long state2;=0D struct Qdisc *next_sched;=0D struct sk_buff_head skb_bad_txq;=0D =0D spinlock_t busylock __attribute__((__aligned__((1 << 6))));=0D spinlock_t seqlock;=0D =0D struct callback_head rcu;=0D netdevice_tracker dev_tracker;=0D =0D long privdata[] __attribute__((__aligned__((1 << 6))));=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_refcount_inc(stru= ct Qdisc *qdisc)=0D {=0D if (qdisc->flags & 1)=0D return;=0D refcount_inc(&qdisc->refcnt);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc *qdisc_refcount= _inc_nz(struct Qdisc *qdisc)=0D {=0D if (qdisc->flags & 1)=0D return qdisc;=0D if (refcount_inc_not_zero(&qdisc->refcnt))=0D return qdisc;=0D return ((void *)0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_is_running(struct= Qdisc *qdisc)=0D {=0D if (qdisc->flags & 0x100)=0D return spin_is_locked(&qdisc->seqlock);=0D return arch_test_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool nolock_qdisc_is_empty(c= onst struct Qdisc *qdisc)=0D {=0D return !(({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_544(void) ; if (!((sizeof(qdisc->state) =3D=3D sizeof(char) || sizeof= (qdisc->state) =3D=3D sizeof(short) || sizeof(qdisc->state) =3D=3D sizeof(i= nt) || sizeof(qdisc->state) =3D=3D sizeof(long)) || sizeof(qdisc->state) = =3D=3D sizeof(long long))) __compiletime_assert_544(); } while (0); (*(cons= t volatile typeof( _Generic((qdisc->state), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: (qdisc->state))) *)&(qdisc->state)); }) & (((((1UL))= ) << (__QDISC_STATE_MISSED)) | ((((1UL))) << (__QDISC_STATE_DRAINING))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_is_percpu_stats(c= onst struct Qdisc *q)=0D {=0D return q->flags & 0x20;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_is_empty(const st= ruct Qdisc *qdisc)=0D {=0D if (qdisc_is_percpu_stats(qdisc))=0D return nolock_qdisc_is_empty(qdisc);=0D return !({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_545(void) ; if (!((sizeof(qdisc->q.qlen) =3D=3D sizeof(char) || sizeof= (qdisc->q.qlen) =3D=3D sizeof(short) || sizeof(qdisc->q.qlen) =3D=3D sizeof= (int) || sizeof(qdisc->q.qlen) =3D=3D sizeof(long)) || sizeof(qdisc->q.qlen= ) =3D=3D sizeof(long long))) __compiletime_assert_545(); } while (0); (*(co= nst volatile typeof( _Generic((qdisc->q.qlen), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: (qdisc->q.qlen))) *)&(qdisc->q.qlen)); });=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_run_begin(struct = Qdisc *qdisc)=0D {=0D if (qdisc->flags & 0x100) {=0D if (spin_trylock(&qdisc->seqlock))=0D return true;=0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : := "memory"); } while (0);=0D =0D =0D =0D =0D =0D =0D if (arch_test_bit(__QDISC_STATE_MISSED, &qdisc->state))=0D return false;=0D # 211 "./include/net/sch_generic.h"=0D set_bit(__QDISC_STATE_MISSED, &qdisc->state);=0D =0D =0D =0D =0D =0D do { do { } while (0); __asm__ __volatile__ ("fence " "rw" "," "rw" : : := "memory"); } while (0);=0D =0D =0D =0D =0D return spin_trylock(&qdisc->seqlock);=0D }=0D return !arch___test_and_set_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_run_end(struct Qd= isc *qdisc)=0D {=0D if (qdisc->flags & 0x100) {=0D spin_unlock(&qdisc->seqlock);=0D =0D if (__builtin_expect(!!(arch_test_bit(__QDISC_STATE_MISSED, &qdisc->state= )), 0))=0D =0D __netif_schedule(qdisc);=0D } else {=0D arch___clear_bit(__QDISC_STATE2_RUNNING, &qdisc->state2);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_may_bulk(const st= ruct Qdisc *qdisc)=0D {=0D return qdisc->flags & 0x10;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_avail_bulklimit(co= nst struct netdev_queue *txq)=0D {=0D =0D =0D return dql_avail(&txq->dql);=0D =0D =0D =0D }=0D =0D struct Qdisc_class_ops {=0D unsigned int flags;=0D =0D struct netdev_queue * (*select_queue)(struct Qdisc *, struct tcmsg *);=0D int (*graft)(struct Qdisc *, unsigned long cl,=0D struct Qdisc *, struct Qdisc **,=0D struct netlink_ext_ack *extack);=0D struct Qdisc * (*leaf)(struct Qdisc *, unsigned long cl);=0D void (*qlen_notify)(struct Qdisc *, unsigned long);=0D =0D =0D unsigned long (*find)(struct Qdisc *, u32 classid);=0D int (*change)(struct Qdisc *, u32, u32,=0D struct nlattr **, unsigned long *,=0D struct netlink_ext_ack *);=0D int (*delete)(struct Qdisc *, unsigned long,=0D struct netlink_ext_ack *);=0D void (*walk)(struct Qdisc *, struct qdisc_walker * arg);=0D =0D =0D struct tcf_block * (*tcf_block)(struct Qdisc *sch,=0D unsigned long arg,=0D struct netlink_ext_ack *extack);=0D unsigned long (*bind_tcf)(struct Qdisc *, unsigned long,=0D u32 classid);=0D void (*unbind_tcf)(struct Qdisc *, unsigned long);=0D =0D =0D int (*dump)(struct Qdisc *, unsigned long,=0D struct sk_buff *skb, struct tcmsg*);=0D int (*dump_stats)(struct Qdisc *, unsigned long,=0D struct gnet_dump *);=0D };=0D =0D =0D =0D =0D enum qdisc_class_ops_flags {=0D QDISC_CLASS_OPS_DOIT_UNLOCKED =3D 1,=0D };=0D =0D struct Qdisc_ops {=0D struct Qdisc_ops *next;=0D const struct Qdisc_class_ops *cl_ops;=0D char id[16];=0D int priv_size;=0D unsigned int static_flags;=0D =0D int (*enqueue)(struct sk_buff *skb,=0D struct Qdisc *sch,=0D struct sk_buff **to_free);=0D struct sk_buff * (*dequeue)(struct Qdisc *);=0D struct sk_buff * (*peek)(struct Qdisc *);=0D =0D int (*init)(struct Qdisc *sch, struct nlattr *arg,=0D struct netlink_ext_ack *extack);=0D void (*reset)(struct Qdisc *);=0D void (*destroy)(struct Qdisc *);=0D int (*change)(struct Qdisc *sch,=0D struct nlattr *arg,=0D struct netlink_ext_ack *extack);=0D void (*attach)(struct Qdisc *sch);=0D int (*change_tx_queue_len)(struct Qdisc *, unsigned int);=0D void (*change_real_num_tx)(struct Qdisc *sch,=0D unsigned int new_real_tx);=0D =0D int (*dump)(struct Qdisc *, struct sk_buff *);=0D int (*dump_stats)(struct Qdisc *, struct gnet_dump *);=0D =0D void (*ingress_block_set)(struct Qdisc *sch,=0D u32 block_index);=0D void (*egress_block_set)(struct Qdisc *sch,=0D u32 block_index);=0D u32 (*ingress_block_get)(struct Qdisc *sch);=0D u32 (*egress_block_get)(struct Qdisc *sch);=0D =0D struct module *owner;=0D };=0D =0D =0D struct tcf_result {=0D union {=0D struct {=0D unsigned long class;=0D u32 classid;=0D };=0D const struct tcf_proto *goto_tp;=0D =0D =0D struct {=0D bool ingress;=0D struct gnet_stats_queue *qstats;=0D };=0D };=0D };=0D =0D struct tcf_chain;=0D =0D struct tcf_proto_ops {=0D struct list_head head;=0D char kind[16];=0D =0D int (*classify)(struct sk_buff *,=0D const struct tcf_proto *,=0D struct tcf_result *);=0D int (*init)(struct tcf_proto*);=0D void (*destroy)(struct tcf_proto *tp, bool rtnl_held,=0D struct netlink_ext_ack *extack);=0D =0D void* (*get)(struct tcf_proto*, u32 handle);=0D void (*put)(struct tcf_proto *tp, void *f);=0D int (*change)(struct net *net, struct sk_buff *,=0D struct tcf_proto*, unsigned long,=0D u32 handle, struct nlattr **,=0D void **, u32,=0D struct netlink_ext_ack *);=0D int (*delete)(struct tcf_proto *tp, void *arg,=0D bool *last, bool rtnl_held,=0D struct netlink_ext_ack *);=0D bool (*delete_empty)(struct tcf_proto *tp);=0D void (*walk)(struct tcf_proto *tp,=0D struct tcf_walker *arg, bool rtnl_held);=0D int (*reoffload)(struct tcf_proto *tp, bool add,=0D flow_setup_cb_t *cb, void *cb_priv,=0D struct netlink_ext_ack *extack);=0D void (*hw_add)(struct tcf_proto *tp,=0D void *type_data);=0D void (*hw_del)(struct tcf_proto *tp,=0D void *type_data);=0D void (*bind_class)(void *, u32, unsigned long,=0D void *, unsigned long);=0D void * (*tmplt_create)(struct net *net,=0D struct tcf_chain *chain,=0D struct nlattr **tca,=0D struct netlink_ext_ack *extack);=0D void (*tmplt_destroy)(void *tmplt_priv);=0D =0D =0D int (*dump)(struct net*, struct tcf_proto*, void *,=0D struct sk_buff *skb, struct tcmsg*,=0D bool);=0D int (*terse_dump)(struct net *net,=0D struct tcf_proto *tp, void *fh,=0D struct sk_buff *skb,=0D struct tcmsg *t, bool rtnl_held);=0D int (*tmplt_dump)(struct sk_buff *skb,=0D struct net *net,=0D void *tmplt_priv);=0D =0D struct module *owner;=0D int flags;=0D };=0D =0D =0D =0D =0D =0D enum tcf_proto_ops_flags {=0D TCF_PROTO_OPS_DOIT_UNLOCKED =3D 1,=0D };=0D =0D struct tcf_proto {=0D =0D struct tcf_proto *next;=0D void *root;=0D =0D =0D int (*classify)(struct sk_buff *,=0D const struct tcf_proto *,=0D struct tcf_result *);=0D __be16 protocol;=0D =0D =0D u32 prio;=0D void *data;=0D const struct tcf_proto_ops *ops;=0D struct tcf_chain *chain;=0D =0D =0D =0D spinlock_t lock;=0D bool deleting;=0D refcount_t refcnt;=0D struct callback_head rcu;=0D struct hlist_node destroy_ht_node;=0D };=0D =0D struct qdisc_skb_cb {=0D struct {=0D unsigned int pkt_len;=0D u16 slave_dev_queue_mapping;=0D u16 tc_classid;=0D };=0D =0D unsigned char data[20];=0D };=0D =0D typedef void tcf_chain_head_change_t(struct tcf_proto *tp_head, void *priv)= ;=0D =0D struct tcf_chain {=0D =0D struct mutex filter_chain_lock;=0D struct tcf_proto *filter_chain;=0D struct list_head list;=0D struct tcf_block *block;=0D u32 index;=0D unsigned int refcnt;=0D unsigned int action_refcnt;=0D bool explicitly_created;=0D bool flushing;=0D const struct tcf_proto_ops *tmplt_ops;=0D void *tmplt_priv;=0D struct callback_head rcu;=0D };=0D =0D struct tcf_block {=0D =0D =0D =0D struct mutex lock;=0D struct list_head chain_list;=0D u32 index;=0D u32 classid;=0D refcount_t refcnt;=0D struct net *net;=0D struct Qdisc *q;=0D struct rw_semaphore cb_lock;=0D struct flow_block flow_block;=0D struct list_head owner_list;=0D bool keep_dst;=0D atomic_t offloadcnt;=0D unsigned int nooffloaddevcnt;=0D unsigned int lockeddevcnt;=0D struct {=0D struct tcf_chain *chain;=0D struct list_head filter_chain_list;=0D } chain0;=0D struct callback_head rcu;=0D struct hlist_head proto_destroy_ht[1 << (7)];=0D struct mutex proto_destroy_lock;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lockdep_tcf_chain_is_lo= cked(struct tcf_chain *chain)=0D {=0D return lock_is_held(&(&chain->filter_chain_lock)->dep_map);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool lockdep_tcf_proto_is_lo= cked(struct tcf_proto *tp)=0D {=0D return lock_is_held(&(&tp->lock)->dep_map);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_cb_private_valida= te(const struct sk_buff *skb, int sz)=0D {=0D struct qdisc_skb_cb *qcb;=0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_546(vo= id) ; if (!(!(sizeof(skb->cb) < sizeof(*qcb)))) __compiletime_assert_546();= } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_547(vo= id) ; if (!(!(sizeof(qcb->data) < sz))) __compiletime_assert_547(); } while= (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_qlen(const struct = Qdisc *q)=0D {=0D return q->q.qlen;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_qlen_sum(const str= uct Qdisc *q)=0D {=0D __u32 qlen =3D q->qstats.qlen;=0D int i;=0D =0D if (qdisc_is_percpu_stats(q)) {=0D for (((i)) =3D -1; ((i)) =3D cpumask_next(((i)), (((const struct cpumask = *)&__cpu_possible_mask))), ((i)) < nr_cpu_ids;)=0D qlen +=3D ({ do { const void *__vpp_verify =3D (typeof((q->cpu_qstats) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*((q->cpu_qstats))) *)((q->cpu_qstats)));= (typeof((typeof(*((q->cpu_qstats))) *)((q->cpu_qstats)))) (__ptr + (((__pe= r_cpu_offset[(i)])))); }); })->qlen;=0D } else {=0D qlen +=3D q->q.qlen;=0D }=0D =0D return qlen;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct qdisc_skb_cb *qdisc_s= kb_cb(const struct sk_buff *skb)=0D {=0D return (struct qdisc_skb_cb *)skb->cb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *qdisc_lock(struc= t Qdisc *qdisc)=0D {=0D return &qdisc->q.lock;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc *qdisc_root(con= st struct Qdisc *qdisc)=0D {=0D struct Qdisc *q =3D ({ typeof(*(qdisc->dev_queue->qdisc)) *__UNIQUE_ID_rcu= 548 =3D (typeof(*(qdisc->dev_queue->qdisc)) *)({ do { __attribute__((__nore= turn__)) extern void __compiletime_assert_549(void) ; if (!((sizeof((qdisc-= >dev_queue->qdisc)) =3D=3D sizeof(char) || sizeof((qdisc->dev_queue->qdisc)= ) =3D=3D sizeof(short) || sizeof((qdisc->dev_queue->qdisc)) =3D=3D sizeof(i= nt) || sizeof((qdisc->dev_queue->qdisc)) =3D=3D sizeof(long)) || sizeof((qd= isc->dev_queue->qdisc)) =3D=3D sizeof(long long))) __compiletime_assert_549= (); } while (0); (*(const volatile typeof( _Generic(((qdisc->dev_queue->qdi= sc)), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed = char)0, unsigned short: (unsigned short)0, signed short: (signed short)0, u= nsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (un= signed long)0, signed long: (signed long)0, unsigned long long: (unsigned l= ong long)0, signed long long: (signed long long)0, default: ((qdisc->dev_qu= eue->qdisc)))) *)&((qdisc->dev_queue->qdisc))); }); do { } while (0 && (!((= lockdep_rtnl_is_held()) || rcu_read_lock_held()))); ; ((typeof(*(qdisc->dev= _queue->qdisc)) *)(__UNIQUE_ID_rcu548)); });=0D =0D return q;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc *qdisc_root_bh(= const struct Qdisc *qdisc)=0D {=0D return ({ typeof(*(qdisc->dev_queue->qdisc)) *__UNIQUE_ID_rcu550 =3D (type= of(*(qdisc->dev_queue->qdisc)) *)({ do { __attribute__((__noreturn__)) exte= rn void __compiletime_assert_551(void) ; if (!((sizeof((qdisc->dev_queue->q= disc)) =3D=3D sizeof(char) || sizeof((qdisc->dev_queue->qdisc)) =3D=3D size= of(short) || sizeof((qdisc->dev_queue->qdisc)) =3D=3D sizeof(int) || sizeof= ((qdisc->dev_queue->qdisc)) =3D=3D sizeof(long)) || sizeof((qdisc->dev_queu= e->qdisc)) =3D=3D sizeof(long long))) __compiletime_assert_551(); } while (= 0); (*(const volatile typeof( _Generic(((qdisc->dev_queue->qdisc)), char: (= char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsig= ned short: (unsigned short)0, signed short: (signed short)0, unsigned int: = (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0= , signed long: (signed long)0, unsigned long long: (unsigned long long)0, s= igned long long: (signed long long)0, default: ((qdisc->dev_queue->qdisc)))= ) *)&((qdisc->dev_queue->qdisc))); }); do { } while (0 && (!((0) || rcu_rea= d_lock_bh_held()))); ; ((typeof(*(qdisc->dev_queue->qdisc)) *)(__UNIQUE_ID_= rcu550)); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc *qdisc_root_sle= eping(const struct Qdisc *qdisc)=0D {=0D return qdisc->dev_queue->qdisc_sleeping;=0D }=0D # 579 "./include/net/sch_generic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *qdisc_root_lock(= const struct Qdisc *qdisc)=0D {=0D struct Qdisc *root =3D qdisc_root(qdisc);=0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/net/= sch_generic.h", 583); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/net/sch_generic.h"), "i" (583), "i" ((1 <= < 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0)= ; do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });= } __builtin_expect(!!(__ret_do_once), 0); });=0D return qdisc_lock(root);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) spinlock_t *qdisc_root_sleep= ing_lock(const struct Qdisc *qdisc)=0D {=0D struct Qdisc *root =3D qdisc_root_sleeping(qdisc);=0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/net/= sch_generic.h", 591); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("include/net/sch_generic.h"), "i" (591), "i" ((1 <= < 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0)= ; do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });= } __builtin_expect(!!(__ret_do_once), 0); });=0D return qdisc_lock(root);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net_device *qdisc_dev= (const struct Qdisc *qdisc)=0D {=0D return qdisc->dev_queue->dev;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sch_tree_lock(struct Qd= isc *q)=0D {=0D if (q->flags & 8)=0D spin_lock_bh(qdisc_lock(q));=0D else=0D spin_lock_bh(qdisc_root_sleeping_lock(q));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sch_tree_unlock(struct = Qdisc *q)=0D {=0D if (q->flags & 8)=0D spin_unlock_bh(qdisc_lock(q));=0D else=0D spin_unlock_bh(qdisc_root_sleeping_lock(q));=0D }=0D =0D extern struct Qdisc noop_qdisc;=0D extern struct Qdisc_ops noop_qdisc_ops;=0D extern struct Qdisc_ops pfifo_fast_ops;=0D extern struct Qdisc_ops mq_qdisc_ops;=0D extern struct Qdisc_ops noqueue_qdisc_ops;=0D extern const struct Qdisc_ops *default_qdisc_ops;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct Qdisc_ops *=0D get_default_qdisc_ops(const struct net_device *dev, int ntx)=0D {=0D return ntx < dev->real_num_tx_queues ?=0D default_qdisc_ops : &pfifo_fast_ops;=0D }=0D =0D struct Qdisc_class_common {=0D u32 classid;=0D struct hlist_node hnode;=0D };=0D =0D struct Qdisc_class_hash {=0D struct hlist_head *hash;=0D unsigned int hashsize;=0D unsigned int hashmask;=0D unsigned int hashelems;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int qdisc_class_has= h(u32 id, u32 mask)=0D {=0D id ^=3D id >> 8;=0D id ^=3D id >> 4;=0D return id & mask;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc_class_common *= =0D qdisc_class_find(const struct Qdisc_class_hash *hash, u32 id)=0D {=0D struct Qdisc_class_common *cl;=0D unsigned int h;=0D =0D if (!id)=0D return ((void *)0);=0D =0D h =3D qdisc_class_hash(id, hash->hashmask);=0D for (cl =3D ({ typeof((&hash->hash[h])->first) ____ptr =3D ((&hash->hash[h= ])->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_assert= (__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(cl)) *)= 0)->hnode)) || __builtin_types_compatible_p(typeof(*(____ptr)), typeof(void= )), "pointer type mismatch in container_of()"); ((typeof(*(cl)) *)(__mptr -= __builtin_offsetof(typeof(*(cl)), hnode))); }) : ((void *)0); }); cl; cl = =3D ({ typeof((cl)->hnode.next) ____ptr =3D ((cl)->hnode.next); ____ptr ? (= { void *__mptr =3D (void *)(____ptr); _Static_assert(__builtin_types_compat= ible_p(typeof(*(____ptr)), typeof(((typeof(*(cl)) *)0)->hnode)) || __builti= n_types_compatible_p(typeof(*(____ptr)), typeof(void)), "pointer type misma= tch in container_of()"); ((typeof(*(cl)) *)(__mptr - __builtin_offsetof(typ= eof(*(cl)), hnode))); }) : ((void *)0); })) {=0D if (cl->classid =3D=3D id)=0D return cl;=0D }=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tc_classid_to_hwtc(struc= t net_device *dev, u32 classid)=0D {=0D u32 hwtc =3D ((classid)&(0x0000FFFFU)) - 0xFFE0U;=0D =0D return (hwtc < netdev_get_num_tc(dev)) ? hwtc : -22;=0D }=0D =0D int qdisc_class_hash_init(struct Qdisc_class_hash *);=0D void qdisc_class_hash_insert(struct Qdisc_class_hash *,=0D struct Qdisc_class_common *);=0D void qdisc_class_hash_remove(struct Qdisc_class_hash *,=0D struct Qdisc_class_common *);=0D void qdisc_class_hash_grow(struct Qdisc *, struct Qdisc_class_hash *);=0D void qdisc_class_hash_destroy(struct Qdisc_class_hash *);=0D =0D int dev_qdisc_change_tx_queue_len(struct net_device *dev);=0D void dev_qdisc_change_real_num_tx(struct net_device *dev,=0D unsigned int new_real_tx);=0D void dev_init_scheduler(struct net_device *dev);=0D void dev_shutdown(struct net_device *dev);=0D void dev_activate(struct net_device *dev);=0D void dev_deactivate(struct net_device *dev);=0D void dev_deactivate_many(struct list_head *head);=0D struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue,=0D struct Qdisc *qdisc);=0D void qdisc_reset(struct Qdisc *qdisc);=0D void qdisc_put(struct Qdisc *qdisc);=0D void qdisc_put_unlocked(struct Qdisc *qdisc);=0D void qdisc_tree_reduce_backlog(struct Qdisc *qdisc, int n, int len);=0D # 702 "./include/net/sch_generic.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D qdisc_offload_dump_helper(struct Qdisc *q, enum tc_setup_type type,=0D void *type_data)=0D {=0D q->flags &=3D ~0x200;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D qdisc_offload_graft_helper(struct net_device *dev, struct Qdisc *sch,=0D struct Qdisc *new, struct Qdisc *old,=0D enum tc_setup_type type, void *type_data,=0D struct netlink_ext_ack *extack)=0D {=0D }=0D =0D struct Qdisc *qdisc_alloc(struct netdev_queue *dev_queue,=0D const struct Qdisc_ops *ops,=0D struct netlink_ext_ack *extack);=0D void qdisc_free(struct Qdisc *qdisc);=0D struct Qdisc *qdisc_create_dflt(struct netdev_queue *dev_queue,=0D const struct Qdisc_ops *ops, u32 parentid,=0D struct netlink_ext_ack *extack);=0D void __qdisc_calculate_pkt_len(struct sk_buff *skb,=0D const struct qdisc_size_table *stab);=0D int skb_do_redirect(struct sk_buff *);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_at_tc_ingress(const= struct sk_buff *skb)=0D {=0D =0D =0D =0D return false;=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_skip_tc_classify(st= ruct sk_buff *skb)=0D {=0D =0D =0D =0D =0D =0D =0D return false;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_reset_all_tx_gt(s= truct net_device *dev, unsigned int i)=0D {=0D struct Qdisc *qdisc;=0D =0D for (; i < dev->num_tx_queues; i++) {=0D qdisc =3D ({ do { } while (0 && (!((lockdep_rtnl_is_held())))); ; ((typeo= f(*(netdev_get_tx_queue(dev, i)->qdisc)) *)((netdev_get_tx_queue(dev, i)->q= disc))); });=0D if (qdisc) {=0D spin_lock_bh(qdisc_lock(qdisc));=0D qdisc_reset(qdisc);=0D spin_unlock_bh(qdisc_lock(qdisc));=0D }=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_all_tx_empty(cons= t struct net_device *dev)=0D {=0D unsigned int i;=0D =0D rcu_read_lock();=0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D const struct Qdisc *q =3D ({ typeof(*(txq->qdisc)) *__UNIQUE_ID_rcu552 = =3D (typeof(*(txq->qdisc)) *)({ do { __attribute__((__noreturn__)) extern v= oid __compiletime_assert_553(void) ; if (!((sizeof((txq->qdisc)) =3D=3D siz= eof(char) || sizeof((txq->qdisc)) =3D=3D sizeof(short) || sizeof((txq->qdis= c)) =3D=3D sizeof(int) || sizeof((txq->qdisc)) =3D=3D sizeof(long)) || size= of((txq->qdisc)) =3D=3D sizeof(long long))) __compiletime_assert_553(); } w= hile (0); (*(const volatile typeof( _Generic(((txq->qdisc)), char: (char)0,= unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned sho= rt: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsign= ed int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signe= d long: (signed long)0, unsigned long long: (unsigned long long)0, signed l= ong long: (signed long long)0, default: ((txq->qdisc)))) *)&((txq->qdisc)))= ; }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(tx= q->qdisc)) *)(__UNIQUE_ID_rcu552)); });=0D =0D if (!qdisc_is_empty(q)) {=0D rcu_read_unlock();=0D return false;=0D }=0D }=0D rcu_read_unlock();=0D return true;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_tx_changing(const= struct net_device *dev)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D if (({ typeof(*(txq->qdisc)) *__UNIQUE_ID_rcu554 =3D (typeof(*(txq->qdisc= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _555(void) ; if (!((sizeof((txq->qdisc)) =3D=3D sizeof(char) || sizeof((txq= ->qdisc)) =3D=3D sizeof(short) || sizeof((txq->qdisc)) =3D=3D sizeof(int) |= | sizeof((txq->qdisc)) =3D=3D sizeof(long)) || sizeof((txq->qdisc)) =3D=3D = sizeof(long long))) __compiletime_assert_555(); } while (0); (*(const volat= ile typeof( _Generic(((txq->qdisc)), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: ((txq->qdisc)))) *)&((txq->qdisc))); }); ; ((typeof(*(txq->= qdisc)) *)(__UNIQUE_ID_rcu554)); }) !=3D txq->qdisc_sleeping)=0D return true;=0D }=0D return false;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool qdisc_tx_is_noop(const = struct net_device *dev)=0D {=0D unsigned int i;=0D =0D for (i =3D 0; i < dev->num_tx_queues; i++) {=0D struct netdev_queue *txq =3D netdev_get_tx_queue(dev, i);=0D if (({ typeof(*(txq->qdisc)) *__UNIQUE_ID_rcu556 =3D (typeof(*(txq->qdisc= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _557(void) ; if (!((sizeof((txq->qdisc)) =3D=3D sizeof(char) || sizeof((txq= ->qdisc)) =3D=3D sizeof(short) || sizeof((txq->qdisc)) =3D=3D sizeof(int) |= | sizeof((txq->qdisc)) =3D=3D sizeof(long)) || sizeof((txq->qdisc)) =3D=3D = sizeof(long long))) __compiletime_assert_557(); } while (0); (*(const volat= ile typeof( _Generic(((txq->qdisc)), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: ((txq->qdisc)))) *)&((txq->qdisc))); }); ; ((typeof(*(txq->= qdisc)) *)(__UNIQUE_ID_rcu556)); }) !=3D &noop_qdisc)=0D return false;=0D }=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int qdisc_pkt_len(c= onst struct sk_buff *skb)=0D {=0D return qdisc_skb_cb(skb)->pkt_len;=0D }=0D =0D =0D enum net_xmit_qdisc_t {=0D __NET_XMIT_STOLEN =3D 0x00010000,=0D __NET_XMIT_BYPASS =3D 0x00020000,=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_calculate_pkt_len= (struct sk_buff *skb,=0D const struct Qdisc *sch)=0D {=0D =0D =0D =0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_enqueue(struct sk_= buff *skb, struct Qdisc *sch,=0D struct sk_buff **to_free)=0D {=0D qdisc_calculate_pkt_len(skb, sch);=0D return sch->enqueue(skb, sch, to_free);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void _bstats_update(struct g= net_stats_basic_sync *bstats,=0D __u64 bytes, __u32 packets)=0D {=0D u64_stats_update_begin(&bstats->syncp);=0D u64_stats_add(&bstats->bytes, bytes);=0D u64_stats_add(&bstats->packets, packets);=0D u64_stats_update_end(&bstats->syncp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bstats_update(struct gn= et_stats_basic_sync *bstats,=0D const struct sk_buff *skb)=0D {=0D _bstats_update(bstats,=0D qdisc_pkt_len(skb),=0D skb_is_gso(skb) ? ((struct skb_shared_info *)(skb_end_pointer(skb)= ))->gso_segs : 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_bstats_cpu_update= (struct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D bstats_update(({ do { const void *__vpp_verify =3D (typeof((sch->cpu_bstat= s) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(sch->cpu_bstats)) *)(sch->cpu_bstat= s)); (typeof((typeof(*(sch->cpu_bstats)) *)(sch->cpu_bstats))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }),= skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_bstats_update(str= uct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D bstats_update(&sch->bstats, skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_backlog_de= c(struct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D sch->qstats.backlog -=3D qdisc_pkt_len(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_backlo= g_dec(struct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog= )) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->cp= u_qstats->backlog)) { case 1: do { unsigned long __flags; do { ({ unsigned = long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); = 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const = void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->= backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_q= stats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }) +=3D -(typeof(sch->cpu_qstats->backlog))(qdi= sc_pkt_len(skb)); } while (0); do { ({ unsigned long __dummy; typeof(__flag= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); ar= ch_local_irq_restore(__flags); } while (0); } while (0);break; case 2: do {= unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __du= mmy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_= save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(= sch->cpu_qstats->backlog)) + 0))((void *)0); (void)__vpp_verify; } while (0= ); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(sch->cpu_= qstats->backlog))) *)(&(sch->cpu_qstats->backlog))); (typeof((typeof(*(&(sc= h->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog)))) (__ptr + (((__p= er_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D -(typeof(sch->cpu_qstats->backlog))(qdisc_pkt_len(skb)); } while (0); d= o { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu= _qstats->backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(s= ch->cpu_qstats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D -(typeof(sch->cpu_qstats->back= log))(qdisc_pkt_len(skb)); } while (0); do { ({ unsigned long __dummy; type= of(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } whil= e (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; cas= e 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_l= ocal_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (t= ypeof((&(sch->cpu_qstats->backlog)) + 0))((void *)0); (void)__vpp_verify; }= while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(= sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog))); (typeof((type= of(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog)))) (__ptr= + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }= ); }) +=3D -(typeof(sch->cpu_qstats->backlog))(qdisc_pkt_len(skb)); } while= (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__du= mmy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__fl= ags); } while (0); } while (0);break; default: __bad_size_call_parameter();= break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_backlog_in= c(struct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D sch->qstats.backlog +=3D qdisc_pkt_len(skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_backlo= g_inc(struct Qdisc *sch,=0D const struct sk_buff *skb)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog= )) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->cp= u_qstats->backlog)) { case 1: do { unsigned long __flags; do { ({ unsigned = long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); = 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const = void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->= backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_q= stats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }) +=3D qdisc_pkt_len(skb); } while (0); do { (= { unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &= __dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } whil= e (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { co= nst void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((voi= d *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D = (unsigned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qsta= ts->backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->c= pu_qstats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *= )get_current())->cpu)])))); }); }) +=3D qdisc_pkt_len(skb); } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu= _qstats->backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(s= ch->cpu_qstats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D qdisc_pkt_len(skb); } while (0= ); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy= =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags= ); } while (0); } while (0);break; case 8: do { unsigned long __flags; do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *(= { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch-= >cpu_qstats->backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)= (&(sch->cpu_qstats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thre= ad_info *)get_current())->cpu)])))); }); }) +=3D qdisc_pkt_len(skb); } whil= e (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__f= lags); } while (0); } while (0);break; default: __bad_size_call_parameter()= ;break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_qlen_i= nc(struct Qdisc *sch)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) = + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->cpu_q= stats->qlen)) { case 1: do { unsigned long __flags; do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *= __vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen))); (ty= peof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen)))) (_= _ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))= ); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flag= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); ar= ch_local_irq_restore(__flags); } while (0); } while (0);break; case 2: do {= unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __du= mmy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_= save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(= sch->cpu_qstats->qlen)) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(sch->cpu_qst= ats->qlen))) *)(&(sch->cpu_qstats->qlen))); (typeof((typeof(*(&(sch->cpu_qs= tats->qlen))) *)(&(sch->cpu_qstats->qlen)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0= ); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy= =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags= ); } while (0); } while (0);break; case 4: do { unsigned long __flags; do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *(= { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __pt= r =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_q= stats->qlen))); (typeof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_= qstats->qlen)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_c= urrent())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); d= o { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);= break; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))((void *)0); (void)__vpp_ve= rify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((type= of(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen))); (typeof((typ= eof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen)))) (__ptr + ((= (__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })= +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dumm= y2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_= irq_restore(__flags); } while (0); } while (0);break; default: __bad_size_c= all_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_qlen_d= ec(struct Qdisc *sch)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) = + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->cpu_q= stats->qlen)) { case 1: do { unsigned long __flags; do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *= __vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen))); (ty= peof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen)))) (_= _ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))= ); }); }) +=3D -(typeof(sch->cpu_qstats->qlen))(1); } while (0); do { ({ un= signed long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__du= mmy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0= ); } while (0);break; case 2: do { unsigned long __flags; do { ({ unsigned = long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); = 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const = void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen))= ); (typeof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->qlen)= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); }) +=3D -(typeof(sch->cpu_qstats->qlen))(1); } while (0); do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } wh= ile (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ uns= igned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dum= my2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { = const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))((void= *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (= unsigned long) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats->= qlen))); (typeof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qstats-= >qlen)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D -(typeof(sch->cpu_qstats->qlen))(1); } while (0)= ; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; case 8: do { unsigned long __flags; do { = ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D = &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({= do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->qlen)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_qs= tats->qlen))); (typeof((typeof(*(&(sch->cpu_qstats->qlen))) *)(&(sch->cpu_q= stats->qlen)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); }) +=3D -(typeof(sch->cpu_qstats->qlen))(1); } whi= le (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__= flags); } while (0); } while (0);break; default: __bad_size_call_parameter(= );break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_requeu= es_inc(struct Qdisc *sch)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->requeue= s)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->c= pu_qstats->requeues)) { case 1: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->requeues)) + 0))((void= *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (= unsigned long) ((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qsta= ts->requeues))); (typeof((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch-= >cpu_qstats->requeues)))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned= long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2);= 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } w= hile (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *= __vpp_verify =3D (typeof((&(sch->cpu_qstats->requeues)) + 0))((void *)0); (= void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned= long) ((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qstats->requ= eues))); (typeof((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qst= ats->requeues)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_= current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __= dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); = do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0)= ;break; case 4: do { unsigned long __flags; do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags= =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ve= rify =3D (typeof((&(sch->cpu_qstats->requeues)) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qstats->requeues)));= (typeof((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qstats->req= ueues)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } w= hile (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; = case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(_= _flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arc= h_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D= (typeof((&(sch->cpu_qstats->requeues)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qstats->requeues))); (typeof= ((typeof(*(&(sch->cpu_qstats->requeues))) *)(&(sch->cpu_qstats->requeues)))= ) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)= ])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__= flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0)= ; arch_local_irq_restore(__flags); } while (0); } while (0);break; default:= __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_qstats_drop(str= uct Qdisc *sch, int count)=0D {=0D sch->qstats.drops +=3D count;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qstats_drop_inc(struct = gnet_stats_queue *qstats)=0D {=0D qstats->drops++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qstats_overlimit_inc(st= ruct gnet_stats_queue *qstats)=0D {=0D qstats->overlimits++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_drop(struc= t Qdisc *sch)=0D {=0D qstats_drop_inc(&sch->qstats);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_cpu_drop(s= truct Qdisc *sch)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->drops))= + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->cpu_= qstats->drops)) { case 1: do { unsigned long __flags; do { ({ unsigned long= __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }= ); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void= *__vpp_verify =3D (typeof((&(sch->cpu_qstats->drops)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(sch->cpu_qstats->drops))) *)(&(sch->cpu_qstats->drops)))= ; (typeof((typeof(*(&(sch->cpu_qstats->drops))) *)(&(sch->cpu_qstats->drops= )))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->c= pu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof= (__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while = (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; case = 2: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flag= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_loc= al_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typ= eof((&(sch->cpu_qstats->drops)) + 0))((void *)0); (void)__vpp_verify; } whi= le (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(sch-= >cpu_qstats->drops))) *)(&(sch->cpu_qstats->drops))); (typeof((typeof(*(&(s= ch->cpu_qstats->drops))) *)(&(sch->cpu_qstats->drops)))) (__ptr + (((__per_= cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1= ; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (vo= id)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_res= tore(__flags); } while (0); } while (0);break; case 4: do { unsigned long _= _flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while = (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats-= >drops)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned lon= g __ptr; __ptr =3D (unsigned long) ((typeof(*(&(sch->cpu_qstats->drops))) *= )(&(sch->cpu_qstats->drops))); (typeof((typeof(*(&(sch->cpu_qstats->drops))= ) *)(&(sch->cpu_qstats->drops)))) (__ptr + (((__per_cpu_offset[(((struct th= read_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while = (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ unsigne= d long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2)= ; 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { cons= t void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->drops)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(sch->cpu_qstats->drops))) *)(&(sch->cpu_qstats->dr= ops))); (typeof((typeof(*(&(sch->cpu_qstats->drops))) *)(&(sch->cpu_qstats-= >drops)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current= ())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } = while (0); arch_local_irq_restore(__flags); } while (0); } while (0);break;= default: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_overlimit(= struct Qdisc *sch)=0D {=0D sch->qstats.overlimits++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_qstats_copy(struct= gnet_dump *d, struct Qdisc *sch)=0D {=0D __u32 qlen =3D qdisc_qlen_sum(sch);=0D =0D return gnet_stats_copy_queue(d, sch->cpu_qstats, &sch->qstats, qlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_qstats_qlen_backl= og(struct Qdisc *sch, __u32 *qlen,=0D __u32 *backlog)=0D {=0D struct gnet_stats_queue qstats =3D { 0 };=0D =0D gnet_stats_add_queue(&qstats, sch->cpu_qstats, &sch->qstats);=0D *qlen =3D qstats.qlen + qdisc_qlen(sch);=0D *backlog =3D qstats.backlog;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_tree_flush_backlo= g(struct Qdisc *sch)=0D {=0D __u32 qlen, backlog;=0D =0D qdisc_qstats_qlen_backlog(sch, &qlen, &backlog);=0D qdisc_tree_reduce_backlog(sch, qlen, backlog);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_purge_queue(struc= t Qdisc *sch)=0D {=0D __u32 qlen, backlog;=0D =0D qdisc_qstats_qlen_backlog(sch, &qlen, &backlog);=0D qdisc_reset(sch);=0D qdisc_tree_reduce_backlog(sch, qlen, backlog);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_skb_head_init(str= uct qdisc_skb_head *qh)=0D {=0D qh->head =3D ((void *)0);=0D qh->tail =3D ((void *)0);=0D qh->qlen =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_enqueue_tail(st= ruct sk_buff *skb,=0D struct qdisc_skb_head *qh)=0D {=0D struct sk_buff *last =3D qh->tail;=0D =0D if (last) {=0D skb->next =3D ((void *)0);=0D last->next =3D skb;=0D qh->tail =3D skb;=0D } else {=0D qh->tail =3D skb;=0D qh->head =3D skb;=0D }=0D qh->qlen++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_enqueue_tail(struc= t sk_buff *skb, struct Qdisc *sch)=0D {=0D __qdisc_enqueue_tail(skb, &sch->q);=0D qdisc_qstats_backlog_inc(sch, skb);=0D return 0x00;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_enqueue_head(st= ruct sk_buff *skb,=0D struct qdisc_skb_head *qh)=0D {=0D skb->next =3D qh->head;=0D =0D if (!qh->head)=0D qh->tail =3D skb;=0D qh->head =3D skb;=0D qh->qlen++;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *__qdisc_dequ= eue_head(struct qdisc_skb_head *qh)=0D {=0D struct sk_buff *skb =3D qh->head;=0D =0D if (__builtin_expect(!!(skb !=3D ((void *)0)), 1)) {=0D qh->head =3D skb->next;=0D qh->qlen--;=0D if (qh->head =3D=3D ((void *)0))=0D qh->tail =3D ((void *)0);=0D skb->next =3D ((void *)0);=0D }=0D =0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *qdisc_dequeu= e_head(struct Qdisc *sch)=0D {=0D struct sk_buff *skb =3D __qdisc_dequeue_head(&sch->q);=0D =0D if (__builtin_expect(!!(skb !=3D ((void *)0)), 1)) {=0D qdisc_qstats_backlog_dec(sch, skb);=0D qdisc_bstats_update(sch, skb);=0D }=0D =0D return skb;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_drop(struct sk_= buff *skb, struct sk_buff **to_free)=0D {=0D skb->next =3D *to_free;=0D *to_free =3D skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_drop_all(struct= sk_buff *skb,=0D struct sk_buff **to_free)=0D {=0D if (skb->prev)=0D skb->prev->next =3D *to_free;=0D else=0D skb->next =3D *to_free;=0D *to_free =3D skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int __qdisc_queue_d= rop_head(struct Qdisc *sch,=0D struct qdisc_skb_head *qh,=0D struct sk_buff **to_free)=0D {=0D struct sk_buff *skb =3D __qdisc_dequeue_head(qh);=0D =0D if (__builtin_expect(!!(skb !=3D ((void *)0)), 1)) {=0D unsigned int len =3D qdisc_pkt_len(skb);=0D =0D qdisc_qstats_backlog_dec(sch, skb);=0D __qdisc_drop(skb, to_free);=0D return len;=0D }=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *qdisc_peek_h= ead(struct Qdisc *sch)=0D {=0D const struct qdisc_skb_head *qh =3D &sch->q;=0D =0D return qh->head;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *qdisc_peek_d= equeued(struct Qdisc *sch)=0D {=0D struct sk_buff *skb =3D skb_peek(&sch->gso_skb);=0D =0D =0D if (!skb) {=0D skb =3D sch->dequeue(sch);=0D =0D if (skb) {=0D __skb_queue_head(&sch->gso_skb, skb);=0D =0D qdisc_qstats_backlog_inc(sch, skb);=0D sch->q.qlen++;=0D }=0D }=0D =0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_update_stats_at_d= equeue(struct Qdisc *sch,=0D struct sk_buff *skb)=0D {=0D if (qdisc_is_percpu_stats(sch)) {=0D qdisc_qstats_cpu_backlog_dec(sch, skb);=0D qdisc_bstats_cpu_update(sch, skb);=0D qdisc_qstats_cpu_qlen_dec(sch);=0D } else {=0D qdisc_qstats_backlog_dec(sch, skb);=0D qdisc_bstats_update(sch, skb);=0D sch->q.qlen--;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_update_stats_at_e= nqueue(struct Qdisc *sch,=0D unsigned int pkt_len)=0D {=0D if (qdisc_is_percpu_stats(sch)) {=0D qdisc_qstats_cpu_qlen_inc(sch);=0D do { do { const void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlo= g)) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(sch->c= pu_qstats->backlog)) { case 1: do { unsigned long __flags; do { ({ unsigned= long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2);= 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const= void *__vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats-= >backlog))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_= qstats->backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)ge= t_current())->cpu)])))); }); }) +=3D pkt_len; } while (0); do { ({ unsigned= long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2);= 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } w= hile (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *= __vpp_verify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlo= g))); (typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats-= >backlog)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_curre= nt())->cpu)])))); }); }) +=3D pkt_len; } while (0); do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0= );break; case 4: do { unsigned long __flags; do { ({ unsigned long __dummy;= typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flag= s =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_v= erify =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog))); (= typeof((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlo= g)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->= cpu)])))); }); }) +=3D pkt_len; } while (0); do { ({ unsigned long __dummy;= typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { }= while (0); arch_local_irq_restore(__flags); } while (0); } while (0);break= ; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof= (__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D a= rch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&(sch->cpu_qstats->backlog)) + 0))((void *)0); (void)__vpp_ver= ify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeo= f(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog))); (typeof= ((typeof(*(&(sch->cpu_qstats->backlog))) *)(&(sch->cpu_qstats->backlog)))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }) +=3D pkt_len; } while (0); do { ({ unsigned long __dummy; typeo= f(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while= (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; defa= ult: __bad_size_call_parameter();break; } } while (0);=0D } else {=0D sch->qstats.backlog +=3D pkt_len;=0D sch->q.qlen++;=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *qdisc_dequeu= e_peeked(struct Qdisc *sch)=0D {=0D struct sk_buff *skb =3D skb_peek(&sch->gso_skb);=0D =0D if (skb) {=0D skb =3D __skb_dequeue(&sch->gso_skb);=0D if (qdisc_is_percpu_stats(sch)) {=0D qdisc_qstats_cpu_backlog_dec(sch, skb);=0D qdisc_qstats_cpu_qlen_dec(sch);=0D } else {=0D qdisc_qstats_backlog_dec(sch, skb);=0D sch->q.qlen--;=0D }=0D } else {=0D skb =3D sch->dequeue(sch);=0D }=0D =0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __qdisc_reset_queue(str= uct qdisc_skb_head *qh)=0D {=0D =0D =0D =0D =0D ({ static bool __attribute__((__section__(".data.once"))) __already_done; = bool __ret_do_once =3D !!(!rtnl_is_locked()); if (__builtin_expect(!!(__ret= _do_once && !__already_done), 0)) { __already_done =3D true; ({ int __ret_w= arn_on =3D !!(1); if (__builtin_expect(!!(__ret_warn_on), 0)) do { do { } w= hile(0); __warn_printk("RTNL: assertion failed at %s (%d)\n", "include/net/= sch_generic.h", 1160); do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pu= shsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word= " " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\= t" ".popsection" : : "i" ("include/net/sch_generic.h"), "i" (1160), "i" ((1= << 0)|((1 << 3) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (= 0); do { } while(0); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }= ); } __builtin_expect(!!(__ret_do_once), 0); });=0D if (qh->qlen) {=0D rtnl_kfree_skbs(qh->head, qh->tail);=0D =0D qh->head =3D ((void *)0);=0D qh->tail =3D ((void *)0);=0D qh->qlen =3D 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void qdisc_reset_queue(struc= t Qdisc *sch)=0D {=0D __qdisc_reset_queue(&sch->q);=0D sch->qstats.backlog =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct Qdisc *qdisc_replace(= struct Qdisc *sch, struct Qdisc *new,=0D struct Qdisc **pold)=0D {=0D struct Qdisc *old;=0D =0D sch_tree_lock(sch);=0D old =3D *pold;=0D *pold =3D new;=0D if (old !=3D ((void *)0))=0D qdisc_purge_queue(old);=0D sch_tree_unlock(sch);=0D =0D return old;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rtnl_qdisc_drop(struct = sk_buff *skb, struct Qdisc *sch)=0D {=0D rtnl_kfree_skbs(skb, skb);=0D qdisc_qstats_drop(sch);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_drop_cpu(struct sk= _buff *skb, struct Qdisc *sch,=0D struct sk_buff **to_free)=0D {=0D __qdisc_drop(skb, to_free);=0D qdisc_qstats_cpu_drop(sch);=0D =0D return 0x01;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_drop(struct sk_buf= f *skb, struct Qdisc *sch,=0D struct sk_buff **to_free)=0D {=0D __qdisc_drop(skb, to_free);=0D qdisc_qstats_drop(sch);=0D =0D return 0x01;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int qdisc_drop_all(struct sk= _buff *skb, struct Qdisc *sch,=0D struct sk_buff **to_free)=0D {=0D __qdisc_drop_all(skb, to_free);=0D qdisc_qstats_drop(sch);=0D =0D return 0x01;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 qdisc_l2t(struct qdisc_r= ate_table* rtab, unsigned int pktlen)=0D {=0D int slot =3D pktlen + rtab->rate.cell_align + rtab->rate.overhead;=0D if (slot < 0)=0D slot =3D 0;=0D slot >>=3D rtab->rate.cell_log;=0D if (slot > 255)=0D return rtab->data[255]*(slot >> 8) + rtab->data[slot & 0xFF];=0D return rtab->data[slot];=0D }=0D =0D struct psched_ratecfg {=0D u64 rate_bytes_ps;=0D u32 mult;=0D u16 overhead;=0D u16 mpu;=0D u8 linklayer;=0D u8 shift;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 psched_l2t_ns(const stru= ct psched_ratecfg *r,=0D unsigned int len)=0D {=0D len +=3D r->overhead;=0D =0D if (len < r->mpu)=0D len =3D r->mpu;=0D =0D if (__builtin_expect(!!(r->linklayer =3D=3D TC_LINKLAYER_ATM), 0))=0D return ((u64)((((len) + (48) - 1) / (48))*53) * r->mult) >> r->shift;=0D =0D return ((u64)len * r->mult) >> r->shift;=0D }=0D =0D void psched_ratecfg_precompute(struct psched_ratecfg *r,=0D const struct tc_ratespec *conf,=0D u64 rate64);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void psched_ratecfg_getrate(= struct tc_ratespec *res,=0D const struct psched_ratecfg *r)=0D {=0D memset(res, 0, sizeof(*res));=0D =0D =0D =0D =0D =0D res->rate =3D __builtin_choose_expr(((!!(sizeof((typeof((u64)(r->rate_byte= s_ps)) *)1 =3D=3D (typeof((u64)(~0U)) *)1))) && ((sizeof(int) =3D=3D sizeof= (*(8 ? ((void *)((long)((u64)(r->rate_bytes_ps)) * 0l)) : (int *)8))) && (s= izeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u64)(~0U)) * 0l)) : (int *= )8))))), (((u64)(r->rate_bytes_ps)) < ((u64)(~0U)) ? ((u64)(r->rate_bytes_p= s)) : ((u64)(~0U))), ({ typeof((u64)(r->rate_bytes_ps)) __UNIQUE_ID___x558 = =3D ((u64)(r->rate_bytes_ps)); typeof((u64)(~0U)) __UNIQUE_ID___y559 =3D ((= u64)(~0U)); ((__UNIQUE_ID___x558) < (__UNIQUE_ID___y559) ? (__UNIQUE_ID___x= 558) : (__UNIQUE_ID___y559)); }));=0D =0D res->overhead =3D r->overhead;=0D res->mpu =3D r->mpu;=0D res->linklayer =3D (r->linklayer & 0x0F);=0D }=0D =0D struct psched_pktrate {=0D u64 rate_pkts_ps;=0D u32 mult;=0D u8 shift;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 psched_pkt2t_ns(const st= ruct psched_pktrate *r,=0D unsigned int pkt_num)=0D {=0D return ((u64)pkt_num * r->mult) >> r->shift;=0D }=0D =0D void psched_ppscfg_precompute(struct psched_pktrate *r, u64 pktrate64);=0D =0D =0D =0D =0D struct mini_Qdisc {=0D struct tcf_proto *filter_list;=0D struct tcf_block *block;=0D struct gnet_stats_basic_sync *cpu_bstats;=0D struct gnet_stats_queue *cpu_qstats;=0D unsigned long rcu_state;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mini_qdisc_bstats_cpu_u= pdate(struct mini_Qdisc *miniq,=0D const struct sk_buff *skb)=0D {=0D bstats_update(({ do { const void *__vpp_verify =3D (typeof((miniq->cpu_bst= ats) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __= ptr; __ptr =3D (unsigned long) ((typeof(*(miniq->cpu_bstats)) *)(miniq->cpu= _bstats)); (typeof((typeof(*(miniq->cpu_bstats)) *)(miniq->cpu_bstats))) (_= _ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))= ); }); }), skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mini_qdisc_qstats_cpu_d= rop(struct mini_Qdisc *miniq)=0D {=0D do { do { const void *__vpp_verify =3D (typeof((&(miniq->cpu_qstats->drops= )) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(miniq->= cpu_qstats->drops)) { case 1: do { unsigned long __flags; do { ({ unsigned = long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); = 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const = void *__vpp_verify =3D (typeof((&(miniq->cpu_qstats->drops)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(miniq->cpu_qstats->drops))) *)(&(miniq->cpu_qstats= ->drops))); (typeof((typeof(*(&(miniq->cpu_qstats->drops))) *)(&(miniq->cpu= _qstats->drops)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get= _current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long _= _dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; });= do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0= );break; case 2: do { unsigned long __flags; do { ({ unsigned long __dummy;= typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flag= s =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_v= erify =3D (typeof((&(miniq->cpu_qstats->drops)) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(miniq->cpu_qstats->drops))) *)(&(miniq->cpu_qstats->drops))); (= typeof((typeof(*(&(miniq->cpu_qstats->drops))) *)(&(miniq->cpu_qstats->drop= s)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->= cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeo= f(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while= (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; case= 4: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__fla= gs) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_lo= cal_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (ty= peof((&(miniq->cpu_qstats->drops)) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(m= iniq->cpu_qstats->drops))) *)(&(miniq->cpu_qstats->drops))); (typeof((typeo= f(*(&(miniq->cpu_qstats->drops))) *)(&(miniq->cpu_qstats->drops)))) (__ptr = + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); })= ; }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_lo= cal_irq_restore(__flags); } while (0); } while (0);break; case 8: do { unsi= gned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2;= (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(= ); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(miniq= ->cpu_qstats->drops)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(miniq->cpu_qst= ats->drops))) *)(&(miniq->cpu_qstats->drops))); (typeof((typeof(*(&(miniq->= cpu_qstats->drops))) *)(&(miniq->cpu_qstats->drops)))) (__ptr + (((__per_cp= u_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; = } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_resto= re(__flags); } while (0); } while (0);break; default: __bad_size_call_param= eter();break; } } while (0);=0D }=0D =0D struct mini_Qdisc_pair {=0D struct mini_Qdisc miniq1;=0D struct mini_Qdisc miniq2;=0D struct mini_Qdisc **p_miniq;=0D };=0D =0D void mini_qdisc_pair_swap(struct mini_Qdisc_pair *miniqp,=0D struct tcf_proto *tp_head);=0D void mini_qdisc_pair_init(struct mini_Qdisc_pair *miniqp, struct Qdisc *qdi= sc,=0D struct mini_Qdisc **p_miniq);=0D void mini_qdisc_pair_block_init(struct mini_Qdisc_pair *miniqp,=0D struct tcf_block *block);=0D =0D void mq_change_real_num_tx(struct Qdisc *sch, unsigned int new_real_tx);=0D =0D int sch_frag_xmit_hook(struct sk_buff *skb, int (*xmit)(struct sk_buff *skb= ));=0D # 27 "./include/linux/filter.h" 2=0D =0D =0D # 1 "./include/uapi/linux/filter.h" 1=0D # 24 "./include/uapi/linux/filter.h"=0D struct sock_filter {=0D __u16 code;=0D __u8 jt;=0D __u8 jf;=0D __u32 k;=0D };=0D =0D struct sock_fprog {=0D unsigned short len;=0D struct sock_filter *filter;=0D };=0D # 30 "./include/linux/filter.h" 2=0D =0D struct sk_buff;=0D struct sock;=0D struct seccomp_data;=0D struct bpf_prog_aux;=0D struct xdp_rxq_info;=0D struct xdp_buff;=0D struct sock_reuseport;=0D struct ctl_table;=0D struct ctl_table_header;=0D # 181 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool insn_is_zext(const stru= ct bpf_insn *insn)=0D {=0D return insn->code =3D=3D (0x04 | 0xb0 | 0x08) && insn->imm =3D=3D 1;=0D }=0D # 537 "./include/linux/filter.h"=0D struct compat_sock_fprog {=0D u16 len;=0D compat_uptr_t filter;=0D };=0D =0D struct sock_fprog_kern {=0D u16 len;=0D struct sock_filter *filter;=0D };=0D =0D =0D =0D =0D struct bpf_binary_header {=0D u32 size;=0D u8 image[] __attribute__((__aligned__(8)));=0D };=0D =0D struct bpf_prog_stats {=0D u64_stats_t cnt;=0D u64_stats_t nsecs;=0D u64_stats_t misses;=0D struct u64_stats_sync syncp;=0D } __attribute__((__aligned__(2 * sizeof(u64))));=0D =0D struct bpf_prog {=0D u16 pages;=0D u16 jited:1,=0D jit_requested:1,=0D gpl_compatible:1,=0D cb_access:1,=0D dst_needed:1,=0D blinding_requested:1,=0D blinded:1,=0D is_func:1,=0D kprobe_override:1,=0D has_callchain_buf:1,=0D enforce_expected_attach_type:1,=0D call_get_stack:1,=0D call_get_func_ip:1,=0D tstamp_type_access:1;=0D enum bpf_prog_type type;=0D enum bpf_attach_type expected_attach_type;=0D u32 len;=0D u32 jited_len;=0D u8 tag[8];=0D struct bpf_prog_stats *stats;=0D int *active;=0D unsigned int (*bpf_func)(const void *ctx,=0D const struct bpf_insn *insn);=0D struct bpf_prog_aux *aux;=0D struct sock_fprog_kern *orig_prog;=0D =0D union {=0D struct { struct { } __empty_insns; struct sock_filter insns[]; };=0D struct { struct { } __empty_insnsi; struct bpf_insn insnsi[]; };=0D };=0D };=0D =0D struct sk_filter {=0D refcount_t refcnt;=0D struct callback_head rcu;=0D struct bpf_prog *prog;=0D };=0D =0D extern struct static_key_false bpf_stats_enabled_key;=0D =0D typedef unsigned int (*bpf_dispatcher_fn)(const void *ctx,=0D const struct bpf_insn *insnsi,=0D unsigned int (*bpf_func)(const void *,=0D const struct bpf_insn *));=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 __bpf_prog_run(const struct bpf_prog *prog,=0D const void *ctx,=0D bpf_dispatcher_fn dfunc)=0D {=0D u32 ret;=0D =0D do { if (1) __cant_migrate("include/linux/filter.h", 615); } while (0);=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&bp= f_stats_enabled_key)->key), struct static_key) && !__builtin_types_compatib= le_p(typeof(*&(&bpf_stats_enabled_key)->key), struct static_key_true) && !_= _builtin_types_compatible_p(typeof(*&(&bpf_stats_enabled_key)->key), struct= static_key_false)) ____wrong_branch_error(); static_key_count((struct stat= ic_key *)&(&bpf_stats_enabled_key)->key) > 0; })), 0)) {=0D struct bpf_prog_stats *stats;=0D u64 start =3D sched_clock();=0D unsigned long flags;=0D =0D ret =3D dfunc(ctx, prog->insnsi, prog->bpf_func);=0D stats =3D ({ do { const void *__vpp_verify =3D (typeof((prog->stats) + 0)= )((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __pt= r =3D (unsigned long) ((typeof(*(prog->stats)) *)(prog->stats)); (typeof((t= ypeof(*(prog->stats)) *)(prog->stats))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); });=0D flags =3D u64_stats_update_begin_irqsave(&stats->syncp);=0D u64_stats_inc(&stats->cnt);=0D u64_stats_add(&stats->nsecs, sched_clock() - start);=0D u64_stats_update_end_irqrestore(&stats->syncp, flags);=0D } else {=0D ret =3D dfunc(ctx, prog->insnsi, prog->bpf_func);=0D }=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 bpf_prog_run(const struct bpf_prog *prog, const void *ctx)=0D {=0D return __bpf_prog_run(prog, ctx, bpf_dispatcher_nop_func);=0D }=0D # 646 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_prog_run_pin_on_cpu(= const struct bpf_prog *prog,=0D const void *ctx)=0D {=0D u32 ret;=0D =0D migrate_disable();=0D ret =3D bpf_prog_run(prog, ctx);=0D migrate_enable();=0D return ret;=0D }=0D =0D =0D =0D struct bpf_skb_data_end {=0D struct qdisc_skb_cb qdisc_cb;=0D void *data_meta;=0D void *data_end;=0D };=0D =0D struct bpf_nh_params {=0D u32 nh_family;=0D union {=0D u32 ipv4_nh;=0D struct in6_addr ipv6_nh;=0D };=0D };=0D =0D struct bpf_redirect_info {=0D u32 flags;=0D u32 tgt_index;=0D void *tgt_value;=0D struct bpf_map *map;=0D u32 map_id;=0D enum bpf_map_type map_type;=0D u32 kern_flags;=0D struct bpf_nh_params nh;=0D };=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct bpf_r= edirect_info) bpf_redirect_info;=0D # 695 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_compute_data_pointe= rs(struct sk_buff *skb)=0D {=0D struct bpf_skb_data_end *cb =3D (struct bpf_skb_data_end *)skb->cb;=0D =0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_560(vo= id) ; if (!(!(sizeof(*cb) > sizeof((((struct sk_buff *)0)->cb))))) __compil= etime_assert_560(); } while (0);=0D cb->data_meta =3D skb->data - skb_metadata_len(skb);=0D cb->data_end =3D skb->data + skb_headlen(skb);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_compute_and_save_da= ta_end(=0D struct sk_buff *skb, void **saved_data_end)=0D {=0D struct bpf_skb_data_end *cb =3D (struct bpf_skb_data_end *)skb->cb;=0D =0D *saved_data_end =3D cb->data_end;=0D cb->data_end =3D skb->data + skb_headlen(skb);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_restore_data_end(=0D struct sk_buff *skb, void *saved_data_end)=0D {=0D struct bpf_skb_data_end *cb =3D (struct bpf_skb_data_end *)skb->cb;=0D =0D cb->data_end =3D saved_data_end;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 *bpf_skb_cb(const struct = sk_buff *skb)=0D {=0D # 737 "./include/linux/filter.h"=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_561(vo= id) ; if (!(!(sizeof((((struct __sk_buff *)0)->cb)) !=3D 20))) __compiletim= e_assert_561(); } while (0);=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_562(vo= id) ; if (!(!(sizeof((((struct __sk_buff *)0)->cb)) !=3D sizeof((((struct q= disc_skb_cb *)0)->data))))) __compiletime_assert_562(); } while (0);=0D =0D =0D return qdisc_skb_cb(skb)->data;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __bpf_prog_run_save_cb(c= onst struct bpf_prog *prog,=0D const void *ctx)=0D {=0D const struct sk_buff *skb =3D ctx;=0D u8 *cb_data =3D bpf_skb_cb(skb);=0D u8 cb_saved[20];=0D u32 res;=0D =0D if (__builtin_expect(!!(prog->cb_access), 0)) {=0D memcpy(cb_saved, cb_data, sizeof(cb_saved));=0D memset(cb_data, 0, sizeof(cb_saved));=0D }=0D =0D res =3D bpf_prog_run(prog, skb);=0D =0D if (__builtin_expect(!!(prog->cb_access), 0))=0D memcpy(cb_data, cb_saved, sizeof(cb_saved));=0D =0D return res;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_prog_run_save_cb(con= st struct bpf_prog *prog,=0D struct sk_buff *skb)=0D {=0D u32 res;=0D =0D migrate_disable();=0D res =3D __bpf_prog_run_save_cb(prog, skb);=0D migrate_enable();=0D return res;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_prog_run_clear_cb(co= nst struct bpf_prog *prog,=0D struct sk_buff *skb)=0D {=0D u8 *cb_data =3D bpf_skb_cb(skb);=0D u32 res;=0D =0D if (__builtin_expect(!!(prog->cb_access), 0))=0D memset(cb_data, 0, 20);=0D =0D res =3D bpf_prog_run_pin_on_cpu(prog, skb);=0D return res;=0D }=0D =0D =0D =0D extern struct static_key_false bpf_master_redirect_enabled_key;=0D =0D u32 xdp_master_redirect(struct xdp_buff *xdp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) u32 bpf_prog_run_xdp(const struct bpf_prog *prog,=0D struct xdp_buff *xdp)=0D {=0D =0D =0D =0D =0D u32 act =3D __bpf_prog_run(prog, xdp, bpf_dispatcher_nop_func);=0D =0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&bp= f_master_redirect_enabled_key)->key), struct static_key) && !__builtin_type= s_compatible_p(typeof(*&(&bpf_master_redirect_enabled_key)->key), struct st= atic_key_true) && !__builtin_types_compatible_p(typeof(*&(&bpf_master_redir= ect_enabled_key)->key), struct static_key_false)) ____wrong_branch_error();= static_key_count((struct static_key *)&(&bpf_master_redirect_enabled_key)-= >key) > 0; })), 0)) {=0D if (act =3D=3D XDP_TX && netif_is_bond_slave(xdp->rxq->dev))=0D act =3D xdp_master_redirect(xdp);=0D }=0D =0D return act;=0D }=0D =0D void bpf_prog_change_xdp(struct bpf_prog *prev_prog, struct bpf_prog *prog)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_prog_insn_size(const= struct bpf_prog *prog)=0D {=0D return prog->len * sizeof(struct bpf_insn);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_prog_tag_scratch_siz= e(const struct bpf_prog *prog)=0D {=0D return ((((bpf_prog_insn_size(prog) + sizeof(__be64) + 1)-1) | ((__typeof_= _(bpf_prog_insn_size(prog) + sizeof(__be64) + 1))((64)-1)))+1);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int bpf_prog_size(u= nsigned int proglen)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof(sizeof(struct bpf_prog)) = *)1 =3D=3D (typeof(__builtin_offsetof(struct bpf_prog, insns[proglen])) *)1= ))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(sizeof(struct bpf= _prog)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)(= (long)(__builtin_offsetof(struct bpf_prog, insns[proglen])) * 0l)) : (int *= )8))))), ((sizeof(struct bpf_prog)) > (__builtin_offsetof(struct bpf_prog, = insns[proglen])) ? (sizeof(struct bpf_prog)) : (__builtin_offsetof(struct b= pf_prog, insns[proglen]))), ({ typeof(sizeof(struct bpf_prog)) __UNIQUE_ID_= __x563 =3D (sizeof(struct bpf_prog)); typeof(__builtin_offsetof(struct bpf_= prog, insns[proglen])) __UNIQUE_ID___y564 =3D (__builtin_offsetof(struct bp= f_prog, insns[proglen])); ((__UNIQUE_ID___x563) > (__UNIQUE_ID___y564) ? (_= _UNIQUE_ID___x563) : (__UNIQUE_ID___y564)); }));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_prog_was_classic(co= nst struct bpf_prog *prog)=0D {=0D =0D =0D =0D =0D =0D return prog->type =3D=3D BPF_PROG_TYPE_UNSPEC;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 bpf_ctx_off_adjust_machi= ne(u32 size)=0D {=0D const u32 size_machine =3D sizeof(unsigned long);=0D =0D if (size > size_machine && size % size_machine =3D=3D 0)=0D size =3D size_machine;=0D =0D return size;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D bpf_ctx_narrow_access_ok(u32 off, u32 size, u32 size_default)=0D {=0D return size <=3D size_default && (size & (size - 1)) =3D=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8=0D bpf_ctx_narrow_access_offset(u32 off, u32 size, u32 size_default)=0D {=0D u8 access_off =3D off & (size_default - 1);=0D =0D =0D return access_off;=0D =0D =0D =0D }=0D # 878 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_prog_lock_ro(struct= bpf_prog *fp)=0D {=0D =0D if (!fp->jited) {=0D set_vm_flush_reset_perms(fp);=0D set_memory_ro((unsigned long)fp, fp->pages);=0D }=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_jit_binary_lock_ro(= struct bpf_binary_header *hdr)=0D {=0D set_vm_flush_reset_perms(hdr);=0D set_memory_ro((unsigned long)hdr, hdr->size >> (12));=0D set_memory_x((unsigned long)hdr, hdr->size >> (12));=0D }=0D =0D int sk_filter_trim_cap(struct sock *sk, struct sk_buff *skb, unsigned int c= ap);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int sk_filter(struct sock *s= k, struct sk_buff *skb)=0D {=0D return sk_filter_trim_cap(sk, skb, 1);=0D }=0D =0D struct bpf_prog *bpf_prog_select_runtime(struct bpf_prog *fp, int *err);=0D void bpf_prog_free(struct bpf_prog *fp);=0D =0D bool bpf_opcode_in_insntable(u8 code);=0D =0D void bpf_prog_free_linfo(struct bpf_prog *prog);=0D void bpf_prog_fill_jited_linfo(struct bpf_prog *prog,=0D const u32 *insn_to_jit_off);=0D int bpf_prog_alloc_jited_linfo(struct bpf_prog *prog);=0D void bpf_prog_jit_attempt_done(struct bpf_prog *prog);=0D =0D struct bpf_prog *bpf_prog_alloc(unsigned int size, gfp_t gfp_extra_flags);= =0D struct bpf_prog *bpf_prog_alloc_no_stats(unsigned int size, gfp_t gfp_extra= _flags);=0D struct bpf_prog *bpf_prog_realloc(struct bpf_prog *fp_old, unsigned int siz= e,=0D gfp_t gfp_extra_flags);=0D void __bpf_prog_free(struct bpf_prog *fp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_prog_unlock_free(st= ruct bpf_prog *fp)=0D {=0D __bpf_prog_free(fp);=0D }=0D =0D typedef int (*bpf_aux_classic_check_t)(struct sock_filter *filter,=0D unsigned int flen);=0D =0D int bpf_prog_create(struct bpf_prog **pfp, struct sock_fprog_kern *fprog);= =0D int bpf_prog_create_from_user(struct bpf_prog **pfp, struct sock_fprog *fpr= og,=0D bpf_aux_classic_check_t trans, bool save_orig);=0D void bpf_prog_destroy(struct bpf_prog *fp);=0D =0D int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk);=0D int sk_attach_bpf(u32 ufd, struct sock *sk);=0D int sk_reuseport_attach_filter(struct sock_fprog *fprog, struct sock *sk);= =0D int sk_reuseport_attach_bpf(u32 ufd, struct sock *sk);=0D void sk_reuseport_prog_free(struct bpf_prog *prog);=0D int sk_detach_filter(struct sock *sk);=0D int sk_get_filter(struct sock *sk, struct sock_filter *filter,=0D unsigned int len);=0D =0D bool sk_filter_charge(struct sock *sk, struct sk_filter *fp);=0D void sk_filter_uncharge(struct sock *sk, struct sk_filter *fp);=0D =0D u64 __bpf_call_base(u64 r1, u64 r2, u64 r3, u64 r4, u64 r5);=0D =0D =0D =0D =0D struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog);=0D void bpf_jit_compile(struct bpf_prog *prog);=0D bool bpf_jit_needs_zext(void);=0D bool bpf_jit_supports_kfunc_call(void);=0D bool bpf_helper_changes_pkt_data(void *func);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_dump_raw_ok(const s= truct cred *cred)=0D {=0D =0D =0D =0D return kallsyms_show_value(cred);=0D }=0D =0D struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,=0D const struct bpf_insn *patch, u32 len);=0D int bpf_remove_insns(struct bpf_prog *prog, u32 off, u32 cnt);=0D =0D void bpf_clear_redirect_map(struct bpf_map *map);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xdp_return_frame_no_dir= ect(void)=0D {=0D struct bpf_redirect_info *ri =3D ({ do { const void *__vpp_verify =3D (typ= eof((&bpf_redirect_info) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&bpf_redirect= _info)) *)(&bpf_redirect_info)); (typeof((typeof(*(&bpf_redirect_info)) *)(= &bpf_redirect_info))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)= get_current())->cpu)])))); }); });=0D =0D return ri->kern_flags & ((((1UL))) << (0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xdp_set_return_frame_no= _direct(void)=0D {=0D struct bpf_redirect_info *ri =3D ({ do { const void *__vpp_verify =3D (typ= eof((&bpf_redirect_info) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&bpf_redirect= _info)) *)(&bpf_redirect_info)); (typeof((typeof(*(&bpf_redirect_info)) *)(= &bpf_redirect_info))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)= get_current())->cpu)])))); }); });=0D =0D ri->kern_flags |=3D ((((1UL))) << (0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xdp_clear_return_frame_= no_direct(void)=0D {=0D struct bpf_redirect_info *ri =3D ({ do { const void *__vpp_verify =3D (typ= eof((&bpf_redirect_info) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&bpf_redirect= _info)) *)(&bpf_redirect_info)); (typeof((typeof(*(&bpf_redirect_info)) *)(= &bpf_redirect_info))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)= get_current())->cpu)])))); }); });=0D =0D ri->kern_flags &=3D ~((((1UL))) << (0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xdp_ok_fwd_dev(const str= uct net_device *fwd,=0D unsigned int pktlen)=0D {=0D unsigned int len;=0D =0D if (__builtin_expect(!!(!(fwd->flags & IFF_UP)), 0))=0D return -100;=0D =0D len =3D fwd->mtu + fwd->hard_header_len + 4;=0D if (pktlen > len)=0D return -90;=0D =0D return 0;=0D }=0D =0D =0D =0D =0D =0D =0D =0D int xdp_do_generic_redirect(struct net_device *dev, struct sk_buff *skb,=0D struct xdp_buff *xdp, struct bpf_prog *prog);=0D int xdp_do_redirect(struct net_device *dev,=0D struct xdp_buff *xdp,=0D struct bpf_prog *prog);=0D int xdp_do_redirect_frame(struct net_device *dev,=0D struct xdp_buff *xdp,=0D struct xdp_frame *xdpf,=0D struct bpf_prog *prog);=0D void xdp_do_flush(void);=0D =0D =0D =0D =0D =0D =0D =0D void bpf_warn_invalid_xdp_action(struct net_device *dev, struct bpf_prog *p= rog, u32 act);=0D =0D =0D struct sock *bpf_run_sk_reuseport(struct sock_reuseport *reuse, struct sock= *sk,=0D struct bpf_prog *prog, struct sk_buff *skb,=0D struct sock *migrating_sk,=0D u32 hash);=0D # 1171 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ebpf_jit_enabled(void)= =0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_jit_blinding_enable= d(struct bpf_prog *prog)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_prog_ebpf_jited(con= st struct bpf_prog *fp)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D bpf_jit_add_poke_descriptor(struct bpf_prog *prog,=0D struct bpf_jit_poke_descriptor *poke)=0D {=0D return -524;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_jit_free(struct bpf= _prog *fp)=0D {=0D bpf_prog_unlock_free(fp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_jit_kallsyms_enable= d(void)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *=0D __bpf_address_lookup(unsigned long addr, unsigned long *size,=0D unsigned long *off, char *sym)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_bpf_text_address(uns= igned long addr)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_get_kallsym(unsigned= int symnum, unsigned long *value,=0D char *type, char *sym)=0D {=0D return -34;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *=0D bpf_address_lookup(unsigned long addr, unsigned long *size,=0D unsigned long *off, char **modname, char *sym)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_prog_kallsyms_add(s= truct bpf_prog *fp)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_prog_kallsyms_del(s= truct bpf_prog *fp)=0D {=0D }=0D =0D =0D =0D void bpf_prog_kallsyms_del_all(struct bpf_prog *fp);=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_needs_clear_a(const= struct sock_filter *first)=0D {=0D switch (first->code) {=0D case 0x06 | 0x00:=0D case 0x00 | 0x00 | 0x80:=0D return false;=0D =0D case 0x00 | 0x00 | 0x20:=0D case 0x00 | 0x08 | 0x20:=0D case 0x00 | 0x10 | 0x20:=0D if (first->k =3D=3D (-0x1000) + 40)=0D return true;=0D return false;=0D =0D default:=0D return true;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u16 bpf_anc_helper(const str= uct sock_filter *ftest)=0D {=0D do { if (__builtin_expect(!!(ftest->code & ((((1UL))) << (15))), 0)) do { = do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\= "aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".h= alf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i= " ("include/linux/filter.h"), "i" (1263), "i" (0), "i" (sizeof(struct bug_e= ntry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while = (0); } while (0);=0D =0D switch (ftest->code) {=0D case 0x00 | 0x00 | 0x20:=0D case 0x00 | 0x08 | 0x20:=0D case 0x00 | 0x10 | 0x20:=0D =0D =0D switch (ftest->k) {=0D case (-0x1000) + 0: return ((((1UL))) << (15)) | 0;=0D case (-0x1000) + 4: return ((((1UL))) << (15)) | 4;=0D case (-0x1000) + 8: return ((((1UL))) << (15)) | 8;=0D case (-0x1000) + 12: return ((((1UL))) << (15)) | 12;=0D case (-0x1000) + 16: return ((((1UL))) << (15)) | 16;=0D case (-0x1000) + 20: return ((((1UL))) << (15)) | 20;=0D case (-0x1000) + 24: return ((((1UL))) << (15)) | 24;=0D case (-0x1000) + 28: return ((((1UL))) << (15)) | 28;=0D case (-0x1000) + 32: return ((((1UL))) << (15)) | 32;=0D case (-0x1000) + 36: return ((((1UL))) << (15)) | 36;=0D case (-0x1000) + 40: return ((((1UL))) << (15)) | 40;=0D case (-0x1000) + 44: return ((((1UL))) << (15)) | 44;=0D case (-0x1000) + 48: return ((((1UL))) << (15)) | 48;=0D case (-0x1000) + 52: return ((((1UL))) << (15)) | 52;=0D case (-0x1000) + 56: return ((((1UL))) << (15)) | 56;=0D case (-0x1000) + 60: return ((((1UL))) << (15)) | 60;=0D }=0D __attribute__((__fallthrough__));=0D default:=0D return ftest->code;=0D }=0D }=0D =0D void *bpf_internal_load_pointer_neg_helper(const struct sk_buff *skb,=0D int k, unsigned int size);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int bpf_tell_extensions(void= )=0D {=0D return 64;=0D }=0D =0D struct bpf_sock_addr_kern {=0D struct sock *sk;=0D struct sockaddr *uaddr;=0D =0D =0D =0D =0D u64 tmp_reg;=0D void *t_ctx;=0D };=0D =0D struct bpf_sock_ops_kern {=0D struct sock *sk;=0D union {=0D u32 args[4];=0D u32 reply;=0D u32 replylong[4];=0D };=0D struct sk_buff *syn_skb;=0D struct sk_buff *skb;=0D void *skb_data_end;=0D u8 op;=0D u8 is_fullsock;=0D u8 remaining_opt_len;=0D u64 temp;=0D # 1336 "./include/linux/filter.h"=0D };=0D =0D struct bpf_sysctl_kern {=0D struct ctl_table_header *head;=0D struct ctl_table *table;=0D void *cur_val;=0D size_t cur_len;=0D void *new_val;=0D size_t new_len;=0D int new_updated;=0D int write;=0D loff_t *ppos;=0D =0D u64 tmp_reg;=0D };=0D =0D =0D struct bpf_sockopt_buf {=0D u8 data[32];=0D };=0D =0D struct bpf_sockopt_kern {=0D struct sock *sk;=0D u8 *optval;=0D u8 *optval_end;=0D s32 level;=0D s32 optname;=0D s32 optlen;=0D =0D struct task_struct *current_task;=0D =0D u64 tmp_reg;=0D };=0D =0D int copy_bpf_fprog_from_user(struct sock_fprog *dst, sockptr_t src, int len= );=0D =0D struct bpf_sk_lookup_kern {=0D u16 family;=0D u16 protocol;=0D __be16 sport;=0D u16 dport;=0D struct {=0D __be32 saddr;=0D __be32 daddr;=0D } v4;=0D struct {=0D const struct in6_addr *saddr;=0D const struct in6_addr *daddr;=0D } v6;=0D struct sock *selected_sk;=0D u32 ingress_ifindex;=0D bool no_reuseport;=0D };=0D =0D extern struct static_key_false bpf_sk_lookup_enabled;=0D # 1446 "./include/linux/filter.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_sk_lookup_run_v4(st= ruct net *net, int protocol,=0D const __be32 saddr, const __be16 sport,=0D const __be32 daddr, const u16 dport,=0D const int ifindex, struct sock **psk)=0D {=0D struct bpf_prog_array *run_array;=0D struct sock *selected_sk =3D ((void *)0);=0D bool no_reuseport =3D false;=0D =0D rcu_read_lock();=0D run_array =3D ({ typeof(*(net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) *__UNI= QUE_ID_rcu565 =3D (typeof(*(net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) *)({ = do { __attribute__((__noreturn__)) extern void __compiletime_assert_566(voi= d) ; if (!((sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof= (char) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(s= hort) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(in= t) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(long)= ) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(long l= ong))) __compiletime_assert_566(); } while (0); (*(const volatile typeof( _= Generic(((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])), char: (char)0, unsigne= d char: (unsigned char)0, signed char: (signed char)0, unsigned short: (uns= igned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0= , signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: = (signed long)0, unsigned long long: (unsigned long long)0, signed long long= : (signed long long)0, default: ((net->bpf.run_array[NETNS_BPF_SK_LOOKUP]))= )) *)&((net->bpf.run_array[NETNS_BPF_SK_LOOKUP]))); }); do { } while (0 && = (!((0) || rcu_read_lock_held()))); ; ((typeof(*(net->bpf.run_array[NETNS_BP= F_SK_LOOKUP])) *)(__UNIQUE_ID_rcu565)); });=0D if (run_array) {=0D struct bpf_sk_lookup_kern ctx =3D {=0D .family =3D 2,=0D .protocol =3D protocol,=0D .v4.saddr =3D saddr,=0D .v4.daddr =3D daddr,=0D .sport =3D sport,=0D .dport =3D dport,=0D .ingress_ifindex =3D ifindex,=0D };=0D u32 act;=0D =0D act =3D ({ struct bpf_sk_lookup_kern *_ctx =3D &(ctx); struct bpf_prog_ar= ray_item *_item; struct sock *_selected_sk =3D ((void *)0); bool _no_reusep= ort =3D false; struct bpf_prog *_prog; bool _all_pass =3D true; u32 _ret; m= igrate_disable(); _item =3D &(run_array)->items[0]; while ((_prog =3D ({ do= { __attribute__((__noreturn__)) extern void __compiletime_assert_567(void)= ; if (!((sizeof(_item->prog) =3D=3D sizeof(char) || sizeof(_item->prog) = =3D=3D sizeof(short) || sizeof(_item->prog) =3D=3D sizeof(int) || sizeof(_i= tem->prog) =3D=3D sizeof(long)) || sizeof(_item->prog) =3D=3D sizeof(long l= ong))) __compiletime_assert_567(); } while (0); (*(const volatile typeof( _= Generic((_item->prog), char: (char)0, unsigned char: (unsigned char)0, sign= ed char: (signed char)0, unsigned short: (unsigned short)0, signed short: (= signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, u= nsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long = long: (unsigned long long)0, signed long long: (signed long long)0, default= : (_item->prog))) *)&(_item->prog)); }))) { _ctx->selected_sk =3D _selected= _sk; _ctx->no_reuseport =3D _no_reuseport; _ret =3D bpf_prog_run(_prog, _ct= x); if (_ret =3D=3D SK_PASS && _ctx->selected_sk) { _selected_sk =3D _ctx->= selected_sk; _no_reuseport =3D _ctx->no_reuseport; } else if (_ret =3D=3D S= K_DROP && _all_pass) { _all_pass =3D false; } _item++; } _ctx->selected_sk = =3D _selected_sk; _ctx->no_reuseport =3D _no_reuseport; migrate_enable(); _= all_pass || _selected_sk ? SK_PASS : SK_DROP; });=0D if (act =3D=3D SK_PASS) {=0D selected_sk =3D ctx.selected_sk;=0D no_reuseport =3D ctx.no_reuseport;=0D } else {=0D selected_sk =3D ERR_PTR(-111);=0D }=0D }=0D rcu_read_unlock();=0D *psk =3D selected_sk;=0D return no_reuseport;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_sk_lookup_run_v6(st= ruct net *net, int protocol,=0D const struct in6_addr *saddr,=0D const __be16 sport,=0D const struct in6_addr *daddr,=0D const u16 dport,=0D const int ifindex, struct sock **psk)=0D {=0D struct bpf_prog_array *run_array;=0D struct sock *selected_sk =3D ((void *)0);=0D bool no_reuseport =3D false;=0D =0D rcu_read_lock();=0D run_array =3D ({ typeof(*(net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) *__UNI= QUE_ID_rcu568 =3D (typeof(*(net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) *)({ = do { __attribute__((__noreturn__)) extern void __compiletime_assert_569(voi= d) ; if (!((sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof= (char) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(s= hort) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(in= t) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(long)= ) || sizeof((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])) =3D=3D sizeof(long l= ong))) __compiletime_assert_569(); } while (0); (*(const volatile typeof( _= Generic(((net->bpf.run_array[NETNS_BPF_SK_LOOKUP])), char: (char)0, unsigne= d char: (unsigned char)0, signed char: (signed char)0, unsigned short: (uns= igned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0= , signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: = (signed long)0, unsigned long long: (unsigned long long)0, signed long long= : (signed long long)0, default: ((net->bpf.run_array[NETNS_BPF_SK_LOOKUP]))= )) *)&((net->bpf.run_array[NETNS_BPF_SK_LOOKUP]))); }); do { } while (0 && = (!((0) || rcu_read_lock_held()))); ; ((typeof(*(net->bpf.run_array[NETNS_BP= F_SK_LOOKUP])) *)(__UNIQUE_ID_rcu568)); });=0D if (run_array) {=0D struct bpf_sk_lookup_kern ctx =3D {=0D .family =3D 10,=0D .protocol =3D protocol,=0D .v6.saddr =3D saddr,=0D .v6.daddr =3D daddr,=0D .sport =3D sport,=0D .dport =3D dport,=0D .ingress_ifindex =3D ifindex,=0D };=0D u32 act;=0D =0D act =3D ({ struct bpf_sk_lookup_kern *_ctx =3D &(ctx); struct bpf_prog_ar= ray_item *_item; struct sock *_selected_sk =3D ((void *)0); bool _no_reusep= ort =3D false; struct bpf_prog *_prog; bool _all_pass =3D true; u32 _ret; m= igrate_disable(); _item =3D &(run_array)->items[0]; while ((_prog =3D ({ do= { __attribute__((__noreturn__)) extern void __compiletime_assert_570(void)= ; if (!((sizeof(_item->prog) =3D=3D sizeof(char) || sizeof(_item->prog) = =3D=3D sizeof(short) || sizeof(_item->prog) =3D=3D sizeof(int) || sizeof(_i= tem->prog) =3D=3D sizeof(long)) || sizeof(_item->prog) =3D=3D sizeof(long l= ong))) __compiletime_assert_570(); } while (0); (*(const volatile typeof( _= Generic((_item->prog), char: (char)0, unsigned char: (unsigned char)0, sign= ed char: (signed char)0, unsigned short: (unsigned short)0, signed short: (= signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, u= nsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long = long: (unsigned long long)0, signed long long: (signed long long)0, default= : (_item->prog))) *)&(_item->prog)); }))) { _ctx->selected_sk =3D _selected= _sk; _ctx->no_reuseport =3D _no_reuseport; _ret =3D bpf_prog_run(_prog, _ct= x); if (_ret =3D=3D SK_PASS && _ctx->selected_sk) { _selected_sk =3D _ctx->= selected_sk; _no_reuseport =3D _ctx->no_reuseport; } else if (_ret =3D=3D S= K_DROP && _all_pass) { _all_pass =3D false; } _item++; } _ctx->selected_sk = =3D _selected_sk; _ctx->no_reuseport =3D _no_reuseport; migrate_enable(); _= all_pass || _selected_sk ? SK_PASS : SK_DROP; });=0D if (act =3D=3D SK_PASS) {=0D selected_sk =3D ctx.selected_sk;=0D no_reuseport =3D ctx.no_reuseport;=0D } else {=0D selected_sk =3D ERR_PTR(-111);=0D }=0D }=0D rcu_read_unlock();=0D *psk =3D selected_sk;=0D return no_reuseport;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int __bpf_xdp_redirect_map(struct bpf_map *map, u32 ifindex,=0D u64 flags, const u64 flag_mask,=0D void *lookup_elem(struct bpf_map *map, u32 key))=0D {=0D struct bpf_redirect_info *ri =3D ({ do { const void *__vpp_verify =3D (typ= eof((&bpf_redirect_info) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&bpf_redirect= _info)) *)(&bpf_redirect_info)); (typeof((typeof(*(&bpf_redirect_info)) *)(= &bpf_redirect_info))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)= get_current())->cpu)])))); }); });=0D const u64 action_mask =3D XDP_ABORTED | XDP_DROP | XDP_PASS | XDP_TX;=0D =0D =0D if (__builtin_expect(!!(flags & ~(action_mask | flag_mask)), 0))=0D return XDP_ABORTED;=0D =0D ri->tgt_value =3D lookup_elem(map, ifindex);=0D if (__builtin_expect(!!(!ri->tgt_value), 0) && !(flags & BPF_F_BROADCAST))= {=0D =0D =0D =0D =0D =0D ri->map_id =3D ((int)(~0U >> 1));=0D ri->map_type =3D BPF_MAP_TYPE_UNSPEC;=0D return flags & action_mask;=0D }=0D =0D ri->tgt_index =3D ifindex;=0D ri->map_id =3D map->id;=0D ri->map_type =3D map->map_type;=0D =0D if (flags & BPF_F_BROADCAST) {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 571(void) ; if (!((sizeof(ri->map) =3D=3D sizeof(char) || sizeof(ri->map) = =3D=3D sizeof(short) || sizeof(ri->map) =3D=3D sizeof(int) || sizeof(ri->ma= p) =3D=3D sizeof(long)) || sizeof(ri->map) =3D=3D sizeof(long long))) __com= piletime_assert_571(); } while (0); do { *(volatile typeof(ri->map) *)&(ri-= >map) =3D (map); } while (0); } while (0);=0D ri->flags =3D flags;=0D } else {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 572(void) ; if (!((sizeof(ri->map) =3D=3D sizeof(char) || sizeof(ri->map) = =3D=3D sizeof(short) || sizeof(ri->map) =3D=3D sizeof(int) || sizeof(ri->ma= p) =3D=3D sizeof(long)) || sizeof(ri->map) =3D=3D sizeof(long long))) __com= piletime_assert_572(); } while (0); do { *(volatile typeof(ri->map) *)&(ri-= >map) =3D (((void *)0)); } while (0); } while (0);=0D ri->flags =3D 0;=0D }=0D =0D return XDP_REDIRECT;=0D }=0D # 6 "./include/net/sock_reuseport.h" 2=0D =0D =0D =0D =0D =0D extern spinlock_t reuseport_lock;=0D =0D struct sock_reuseport {=0D struct callback_head rcu;=0D =0D u16 max_socks;=0D u16 num_socks;=0D u16 num_closed_socks;=0D =0D =0D =0D unsigned int synq_overflow_ts;=0D =0D unsigned int reuseport_id;=0D unsigned int bind_inany:1;=0D unsigned int has_conns:1;=0D struct bpf_prog *prog;=0D struct sock *socks[];=0D };=0D =0D extern int reuseport_alloc(struct sock *sk, bool bind_inany);=0D extern int reuseport_add_sock(struct sock *sk, struct sock *sk2,=0D bool bind_inany);=0D extern void reuseport_detach_sock(struct sock *sk);=0D void reuseport_stop_listen_sock(struct sock *sk);=0D extern struct sock *reuseport_select_sock(struct sock *sk,=0D u32 hash,=0D struct sk_buff *skb,=0D int hdr_len);=0D struct sock *reuseport_migrate_sock(struct sock *sk,=0D struct sock *migrating_sk,=0D struct sk_buff *skb);=0D extern int reuseport_attach_prog(struct sock *sk, struct bpf_prog *prog);=0D extern int reuseport_detach_prog(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool reuseport_has_conns(str= uct sock *sk, bool set)=0D {=0D struct sock_reuseport *reuse;=0D bool ret =3D false;=0D =0D rcu_read_lock();=0D reuse =3D ({ typeof(*(sk->sk_reuseport_cb)) *__UNIQUE_ID_rcu573 =3D (typeo= f(*(sk->sk_reuseport_cb)) *)({ do { __attribute__((__noreturn__)) extern vo= id __compiletime_assert_574(void) ; if (!((sizeof((sk->sk_reuseport_cb)) = =3D=3D sizeof(char) || sizeof((sk->sk_reuseport_cb)) =3D=3D sizeof(short) |= | sizeof((sk->sk_reuseport_cb)) =3D=3D sizeof(int) || sizeof((sk->sk_reusep= ort_cb)) =3D=3D sizeof(long)) || sizeof((sk->sk_reuseport_cb)) =3D=3D sizeo= f(long long))) __compiletime_assert_574(); } while (0); (*(const volatile t= ypeof( _Generic(((sk->sk_reuseport_cb)), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: ((sk->sk_reuseport_cb)))) *)&((sk->sk_reuseport_cb))); = }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(sk->= sk_reuseport_cb)) *)(__UNIQUE_ID_rcu573)); });=0D if (reuse) {=0D if (set)=0D reuse->has_conns =3D 1;=0D ret =3D reuse->has_conns;=0D }=0D rcu_read_unlock();=0D =0D return ret;=0D }=0D # 36 "./include/net/tcp.h" 2=0D =0D =0D # 1 "./include/net/ip.h" 1=0D # 27 "./include/net/ip.h"=0D # 1 "./include/linux/static_key.h" 1=0D # 28 "./include/net/ip.h" 2=0D # 40 "./include/net/ip.h"=0D extern unsigned int sysctl_fib_sync_mem;=0D extern unsigned int sysctl_fib_sync_mem_min;=0D extern unsigned int sysctl_fib_sync_mem_max;=0D =0D struct sock;=0D =0D struct inet_skb_parm {=0D int iif;=0D struct ip_options opt;=0D u16 flags;=0D # 60 "./include/net/ip.h"=0D u16 frag_max_size;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ipv4_l3mdev_skb(u16 fla= gs)=0D {=0D return !!(flags & ((((1UL))) << (7)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip_hdrlen(const= struct sk_buff *skb)=0D {=0D return ip_hdr(skb)->ihl * 4;=0D }=0D =0D struct ipcm_cookie {=0D struct sockcm_cookie sockc;=0D __be32 addr;=0D int oif;=0D struct ip_options_rcu *opt;=0D __u8 ttl;=0D __s16 tos;=0D char priority;=0D __u16 gso_size;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipcm_init(struct ipcm_c= ookie *ipcm)=0D {=0D *ipcm =3D (struct ipcm_cookie) { .tos =3D -1 };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipcm_init_sk(struct ipc= m_cookie *ipcm,=0D const struct inet_sock *inet)=0D {=0D ipcm_init(ipcm);=0D =0D ipcm->sockc.mark =3D inet->sk.sk_mark;=0D ipcm->sockc.tsflags =3D inet->sk.sk_tsflags;=0D ipcm->oif =3D inet->sk.__sk_common.skc_bound_dev_if;=0D ipcm->addr =3D inet->inet_saddr;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int inet_sdif(const struct s= k_buff *skb)=0D {=0D =0D =0D =0D =0D return 0;=0D }=0D # 124 "./include/net/ip.h"=0D struct ip_ra_chain {=0D struct ip_ra_chain *next;=0D struct sock *sk;=0D union {=0D void (*destructor)(struct sock *);=0D struct sock *saved_sk;=0D };=0D struct callback_head rcu;=0D };=0D # 142 "./include/net/ip.h"=0D struct msghdr;=0D struct net_device;=0D struct packet_type;=0D struct rtable;=0D struct sockaddr;=0D =0D int igmp_mc_init(void);=0D =0D =0D =0D =0D =0D int ip_build_and_send_pkt(struct sk_buff *skb, const struct sock *sk,=0D __be32 saddr, __be32 daddr,=0D struct ip_options_rcu *opt, u8 tos);=0D int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type = *pt,=0D struct net_device *orig_dev);=0D void ip_list_rcv(struct list_head *head, struct packet_type *pt,=0D struct net_device *orig_dev);=0D int ip_local_deliver(struct sk_buff *skb);=0D void ip_protocol_deliver_rcu(struct net *net, struct sk_buff *skb, int prot= o);=0D int ip_mr_input(struct sk_buff *skb);=0D int ip_output(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int ip_mc_output(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int ip_do_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,=0D int (*output)(struct net *, struct sock *, struct sk_buff *));=0D =0D struct ip_fraglist_iter {=0D struct sk_buff *frag;=0D struct iphdr *iph;=0D int offset;=0D unsigned int hlen;=0D };=0D =0D void ip_fraglist_init(struct sk_buff *skb, struct iphdr *iph,=0D unsigned int hlen, struct ip_fraglist_iter *iter);=0D void ip_fraglist_prepare(struct sk_buff *skb, struct ip_fraglist_iter *iter= );=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *ip_fraglist_= next(struct ip_fraglist_iter *iter)=0D {=0D struct sk_buff *skb =3D iter->frag;=0D =0D iter->frag =3D skb->next;=0D skb_mark_not_on_list(skb);=0D =0D return skb;=0D }=0D =0D struct ip_frag_state {=0D bool DF;=0D unsigned int hlen;=0D unsigned int ll_rs;=0D unsigned int mtu;=0D unsigned int left;=0D int offset;=0D int ptr;=0D __be16 not_last_frag;=0D };=0D =0D void ip_frag_init(struct sk_buff *skb, unsigned int hlen, unsigned int ll_r= s,=0D unsigned int mtu, bool DF, struct ip_frag_state *state);=0D struct sk_buff *ip_frag_next(struct sk_buff *skb,=0D struct ip_frag_state *state);=0D =0D void ip_send_check(struct iphdr *ip);=0D int __ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb);= =0D int ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb);=0D =0D int __ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl,= =0D __u8 tos);=0D void ip_init(void);=0D int ip_append_data(struct sock *sk, struct flowi4 *fl4,=0D int getfrag(void *from, char *to, int offset, int len,=0D int odd, struct sk_buff *skb),=0D void *from, int len, int protolen,=0D struct ipcm_cookie *ipc,=0D struct rtable **rt,=0D unsigned int flags);=0D int ip_generic_getfrag(void *from, char *to, int offset, int len, int odd,= =0D struct sk_buff *skb);=0D ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *pa= ge,=0D int offset, size_t size, int flags);=0D struct sk_buff *__ip_make_skb(struct sock *sk, struct flowi4 *fl4,=0D struct sk_buff_head *queue,=0D struct inet_cork *cork);=0D int ip_send_skb(struct net *net, struct sk_buff *skb);=0D int ip_push_pending_frames(struct sock *sk, struct flowi4 *fl4);=0D void ip_flush_pending_frames(struct sock *sk);=0D struct sk_buff *ip_make_skb(struct sock *sk, struct flowi4 *fl4,=0D int getfrag(void *from, char *to, int offset,=0D int len, int odd, struct sk_buff *skb),=0D void *from, int length, int transhdrlen,=0D struct ipcm_cookie *ipc, struct rtable **rtp,=0D struct inet_cork *cork, unsigned int flags);=0D =0D int ip_queue_xmit(struct sock *sk, struct sk_buff *skb, struct flowi *fl);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *ip_finish_sk= b(struct sock *sk, struct flowi4 *fl4)=0D {=0D return __ip_make_skb(sk, fl4, &sk->sk_write_queue, &inet_sk(sk)->cork.base= );=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 get_rttos(struct ipcm_c= ookie* ipc, struct inet_sock *inet)=0D {=0D return (ipc->tos !=3D -1) ? ((ipc->tos)&0x1E) : ((inet->tos)&0x1E);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 get_rtconn_flags(struct= ipcm_cookie* ipc, struct sock* sk)=0D {=0D return (ipc->tos !=3D -1) ? (((ipc->tos)&0x1E) | sock_flag(sk, SOCK_LOCALR= OUTE)) : (((inet_sk(sk)->tos)&0x1E) | sock_flag(sk, SOCK_LOCALROUTE));=0D }=0D =0D =0D int __ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int add= r_len);=0D int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_= len);=0D =0D void ip4_datagram_release_cb(struct sock *sk);=0D =0D struct ip_reply_arg {=0D struct kvec iov[1];=0D int flags;=0D __wsum csum;=0D int csumoffset;=0D =0D int bound_dev_if;=0D u8 tos;=0D kuid_t uid;=0D };=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 ip_reply_arg_flowi_flag= s(const struct ip_reply_arg *arg)=0D {=0D return (arg->flags & 1) ? 0x01 : 0;=0D }=0D =0D void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb,=0D const struct ip_options *sopt,=0D __be32 daddr, __be32 saddr,=0D const struct ip_reply_arg *arg,=0D unsigned int len, u64 transmit_time);=0D # 295 "./include/net/ip.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 snmp_get_cpu_field(void = *mib, int cpu, int offt)=0D {=0D return *(((unsigned long *)({ do { const void *__vpp_verify =3D (typeof((m= ib) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __p= tr; __ptr =3D (unsigned long) ((typeof(*((mib))) *)((mib))); (typeof((typeo= f(*((mib))) *)((mib)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); })) + = offt);=0D }=0D =0D unsigned long snmp_fold_field(void *mib, int offt);=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 snmp_get_cpu_field64(voi= d *mib, int cpu, int offct,=0D size_t syncp_offset)=0D {=0D return snmp_get_cpu_field(mib, cpu, offct);=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 snmp_fold_field64(void *= mib, int offt, size_t syncp_off)=0D {=0D return snmp_fold_field(mib, offt);=0D }=0D # 342 "./include/net/ip.h"=0D void inet_get_local_port_range(struct net *net, int *low, int *high);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_is_local_reserved_= port(struct net *net, unsigned short port)=0D {=0D if (!net->ipv4.sysctl_local_reserved_ports)=0D return false;=0D return arch_test_bit(port, net->ipv4.sysctl_local_reserved_ports);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sysctl_dev_name_is_allo= wed(const char *name)=0D {=0D return strcmp(name, "default") !=3D 0 && strcmp(name, "all") !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_port_requires_bind= _service(struct net *net, unsigned short port)=0D {=0D return port < net->ipv4.sysctl_ip_prot_sock;=0D }=0D # 374 "./include/net/ip.h"=0D __be32 inet_current_timestamp(void);=0D =0D =0D extern int inet_peer_threshold;=0D extern int inet_peer_minttl;=0D extern int inet_peer_maxttl;=0D =0D void ipfrag_init(void);=0D =0D void ip_static_sysctl_init(void);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip_is_fragment(const st= ruct iphdr *iph)=0D {=0D return (iph->frag_off & (( __be16)(__builtin_constant_p((__u16)((0x2000 | = 0x1FFF))) ? ((__u16)( (((__u16)((0x2000 | 0x1FFF)) & (__u16)0x00ffU) << 8) = | (((__u16)((0x2000 | 0x1FFF)) & (__u16)0xff00U) >> 8))) : __fswab16((0x200= 0 | 0x1FFF))))) !=3D 0;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int ip_decrease_ttl(struct iphdr *iph)=0D {=0D u32 check =3D ( u32)iph->check;=0D check +=3D ( u32)(( __be16)(__builtin_constant_p((__u16)((0x0100))) ? ((__= u16)( (((__u16)((0x0100)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0100)) & (= __u16)0xff00U) >> 8))) : __fswab16((0x0100))));=0D iph->check =3D ( __sum16)(check + (check>=3D0xFFFF));=0D return --iph->ttl;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_mtu_locked(const stru= ct dst_entry *dst)=0D {=0D const struct rtable *rt =3D (const struct rtable *)dst;=0D =0D return rt->rt_mtu_locked || dst_metric_locked(dst, RTAX_MTU);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int ip_dont_fragment(const struct sock *sk, const struct dst_entry *dst)=0D {=0D u8 pmtudisc =3D ({ do { __attribute__((__noreturn__)) extern void __compil= etime_assert_575(void) ; if (!((sizeof(inet_sk(sk)->pmtudisc) =3D=3D sizeof= (char) || sizeof(inet_sk(sk)->pmtudisc) =3D=3D sizeof(short) || sizeof(inet= _sk(sk)->pmtudisc) =3D=3D sizeof(int) || sizeof(inet_sk(sk)->pmtudisc) =3D= =3D sizeof(long)) || sizeof(inet_sk(sk)->pmtudisc) =3D=3D sizeof(long long)= )) __compiletime_assert_575(); } while (0); (*(const volatile typeof( _Gene= ric((inet_sk(sk)->pmtudisc), char: (char)0, unsigned char: (unsigned char)0= , signed char: (signed char)0, unsigned short: (unsigned short)0, signed sh= ort: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed in= t)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned= long long: (unsigned long long)0, signed long long: (signed long long)0, d= efault: (inet_sk(sk)->pmtudisc))) *)&(inet_sk(sk)->pmtudisc)); });=0D =0D return pmtudisc =3D=3D 2 ||=0D (pmtudisc =3D=3D 1 &&=0D !ip_mtu_locked(dst));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip_sk_accept_pmtu(const= struct sock *sk)=0D {=0D return inet_sk(sk)->pmtudisc !=3D 4 &&=0D inet_sk(sk)->pmtudisc !=3D 5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip_sk_use_pmtu(const st= ruct sock *sk)=0D {=0D return inet_sk(sk)->pmtudisc < 3;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip_sk_ignore_df(const s= truct sock *sk)=0D {=0D return inet_sk(sk)->pmtudisc < 2 ||=0D inet_sk(sk)->pmtudisc =3D=3D 5;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip_dst_mtu_mayb= e_forward(const struct dst_entry *dst,=0D bool forwarding)=0D {=0D const struct rtable *rt =3D ({ void *__mptr =3D (void *)(dst); _Static_ass= ert(__builtin_types_compatible_p(typeof(*(dst)), typeof(((struct rtable *)0= )->dst)) || __builtin_types_compatible_p(typeof(*(dst)), typeof(void)), "po= inter type mismatch in container_of()"); ((struct rtable *)(__mptr - __buil= tin_offsetof(struct rtable, dst))); });=0D struct net *net =3D dev_net(dst->dev);=0D unsigned int mtu;=0D =0D if (net->ipv4.sysctl_ip_fwd_use_pmtu ||=0D ip_mtu_locked(dst) ||=0D !forwarding) {=0D mtu =3D rt->rt_pmtu;=0D if (mtu && (({ unsigned long __dummy; typeof(rt->dst.expires) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof= (jiffies) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long)((ji= ffies) - (rt->dst.expires)) < 0)))=0D goto out;=0D }=0D =0D =0D mtu =3D dst_metric_raw(dst, RTAX_MTU);=0D if (mtu)=0D goto out;=0D =0D mtu =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_576(void) ; if (!((sizeof(dst->dev->mtu) =3D=3D sizeof(char) || sizeof= (dst->dev->mtu) =3D=3D sizeof(short) || sizeof(dst->dev->mtu) =3D=3D sizeof= (int) || sizeof(dst->dev->mtu) =3D=3D sizeof(long)) || sizeof(dst->dev->mtu= ) =3D=3D sizeof(long long))) __compiletime_assert_576(); } while (0); (*(co= nst volatile typeof( _Generic((dst->dev->mtu), char: (char)0, unsigned char= : (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned = short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, sign= ed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signe= d long)0, unsigned long long: (unsigned long long)0, signed long long: (sig= ned long long)0, default: (dst->dev->mtu))) *)&(dst->dev->mtu)); });=0D =0D if (__builtin_expect(!!(ip_mtu_locked(dst)), 0)) {=0D if (rt->rt_uses_gateway && mtu > 576)=0D mtu =3D 576;=0D }=0D =0D out:=0D mtu =3D __builtin_choose_expr(((!!(sizeof((typeof((unsigned int)(mtu)) *)1= =3D=3D (typeof((unsigned int)(0xFFFFU)) *)1))) && ((sizeof(int) =3D=3D siz= eof(*(8 ? ((void *)((long)((unsigned int)(mtu)) * 0l)) : (int *)8))) && (si= zeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned int)(0xFFFFU)) * 0= l)) : (int *)8))))), (((unsigned int)(mtu)) < ((unsigned int)(0xFFFFU)) ? (= (unsigned int)(mtu)) : ((unsigned int)(0xFFFFU))), ({ typeof((unsigned int)= (mtu)) __UNIQUE_ID___x577 =3D ((unsigned int)(mtu)); typeof((unsigned int)(= 0xFFFFU)) __UNIQUE_ID___y578 =3D ((unsigned int)(0xFFFFU)); ((__UNIQUE_ID__= _x577) < (__UNIQUE_ID___y578) ? (__UNIQUE_ID___x577) : (__UNIQUE_ID___y578)= ); }));=0D =0D return mtu - lwtunnel_headroom(dst->lwtstate, mtu);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ip_skb_dst_mtu(= struct sock *sk,=0D const struct sk_buff *skb)=0D {=0D unsigned int mtu;=0D =0D if (!sk || !sk_fullsock(sk) || ip_sk_use_pmtu(sk)) {=0D bool forwarding =3D ((struct inet_skb_parm*)((skb)->cb))->flags & ((((1UL= ))) << (0));=0D =0D return ip_dst_mtu_maybe_forward(skb_dst(skb), forwarding);=0D }=0D =0D mtu =3D __builtin_choose_expr(((!!(sizeof((typeof(({ do { __attribute__((_= _noreturn__)) extern void __compiletime_assert_579(void) ; if (!((sizeof(sk= b_dst(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(skb_dst(skb)->dev->mtu)= =3D=3D sizeof(short) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(int) = || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)) || sizeof(skb_dst(sk= b)->dev->mtu) =3D=3D sizeof(long long))) __compiletime_assert_579(); } whil= e (0); (*(const volatile typeof( _Generic((skb_dst(skb)->dev->mtu), char: (= char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsig= ned short: (unsigned short)0, signed short: (signed short)0, unsigned int: = (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0= , signed long: (signed long)0, unsigned long long: (unsigned long long)0, s= igned long long: (signed long long)0, default: (skb_dst(skb)->dev->mtu))) *= )&(skb_dst(skb)->dev->mtu)); })) *)1 =3D=3D (typeof(0xFFFFU) *)1))) && ((si= zeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(({ do { __attribute__((__nor= eturn__)) extern void __compiletime_assert_579(void) ; if (!((sizeof(skb_ds= t(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(skb_dst(skb)->dev->mtu) =3D= =3D sizeof(short) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(int) || s= izeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)) || sizeof(skb_dst(skb)->= dev->mtu) =3D=3D sizeof(long long))) __compiletime_assert_579(); } while (0= ); (*(const volatile typeof( _Generic((skb_dst(skb)->dev->mtu), char: (char= )0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned = short: (unsigned short)0, signed short: (signed short)0, unsigned int: (uns= igned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, si= gned long: (signed long)0, unsigned long long: (unsigned long long)0, signe= d long long: (signed long long)0, default: (skb_dst(skb)->dev->mtu))) *)&(s= kb_dst(skb)->dev->mtu)); })) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D si= zeof(*(8 ? ((void *)((long)(0xFFFFU) * 0l)) : (int *)8))))), ((({ do { __at= tribute__((__noreturn__)) extern void __compiletime_assert_579(void) ; if (= !((sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(skb_dst(skb= )->dev->mtu) =3D=3D sizeof(short) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D = sizeof(int) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)) || sizeo= f(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long long))) __compiletime_assert_5= 79(); } while (0); (*(const volatile typeof( _Generic((skb_dst(skb)->dev->m= tu), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed c= har)0, unsigned short: (unsigned short)0, signed short: (signed short)0, un= signed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (uns= igned long)0, signed long: (signed long)0, unsigned long long: (unsigned lo= ng long)0, signed long long: (signed long long)0, default: (skb_dst(skb)->d= ev->mtu))) *)&(skb_dst(skb)->dev->mtu)); })) < (0xFFFFU) ? (({ do { __attri= bute__((__noreturn__)) extern void __compiletime_assert_579(void) ; if (!((= sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(skb_dst(skb)->= dev->mtu) =3D=3D sizeof(short) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D siz= eof(int) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)) || sizeof(s= kb_dst(skb)->dev->mtu) =3D=3D sizeof(long long))) __compiletime_assert_579(= ); } while (0); (*(const volatile typeof( _Generic((skb_dst(skb)->dev->mtu)= , char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char= )0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsig= ned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsign= ed long)0, signed long: (signed long)0, unsigned long long: (unsigned long = long)0, signed long long: (signed long long)0, default: (skb_dst(skb)->dev-= >mtu))) *)&(skb_dst(skb)->dev->mtu)); })) : (0xFFFFU)), ({ typeof(({ do { _= _attribute__((__noreturn__)) extern void __compiletime_assert_579(void) ; i= f (!((sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(skb_dst(= skb)->dev->mtu) =3D=3D sizeof(short) || sizeof(skb_dst(skb)->dev->mtu) =3D= =3D sizeof(int) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)) || s= izeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long long))) __compiletime_asse= rt_579(); } while (0); (*(const volatile typeof( _Generic((skb_dst(skb)->de= v->mtu), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: (skb_dst(skb= )->dev->mtu))) *)&(skb_dst(skb)->dev->mtu)); })) __UNIQUE_ID___x580 =3D (({= do { __attribute__((__noreturn__)) extern void __compiletime_assert_579(vo= id) ; if (!((sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(char) || sizeof(s= kb_dst(skb)->dev->mtu) =3D=3D sizeof(short) || sizeof(skb_dst(skb)->dev->mt= u) =3D=3D sizeof(int) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long)= ) || sizeof(skb_dst(skb)->dev->mtu) =3D=3D sizeof(long long))) __compiletim= e_assert_579(); } while (0); (*(const volatile typeof( _Generic((skb_dst(sk= b)->dev->mtu), char: (char)0, unsigned char: (unsigned char)0, signed char:= (signed char)0, unsigned short: (unsigned short)0, signed short: (signed s= hort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned = long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (u= nsigned long long)0, signed long long: (signed long long)0, default: (skb_d= st(skb)->dev->mtu))) *)&(skb_dst(skb)->dev->mtu)); })); typeof(0xFFFFU) __U= NIQUE_ID___y581 =3D (0xFFFFU); ((__UNIQUE_ID___x580) < (__UNIQUE_ID___y581)= ? (__UNIQUE_ID___x580) : (__UNIQUE_ID___y581)); }));=0D return mtu - lwtunnel_headroom(skb_dst(skb)->lwtstate, mtu);=0D }=0D =0D struct dst_metrics *ip_fib_metrics_init(struct net *net, struct nlattr *fc_= mx,=0D int fc_mx_len,=0D struct netlink_ext_ack *extack);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_fib_metrics_put(stru= ct dst_metrics *fib_metrics)=0D {=0D if (fib_metrics !=3D &dst_default_metrics &&=0D refcount_dec_and_test(&fib_metrics->refcnt))=0D kfree(fib_metrics);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void ip_dst_init_metrics(struct dst_entry *dst, struct dst_metrics *fib_met= rics)=0D {=0D dst_init_metrics(dst, fib_metrics->metrics, true);=0D =0D if (fib_metrics !=3D &dst_default_metrics) {=0D dst->_metrics |=3D 0x2UL;=0D refcount_inc(&fib_metrics->refcnt);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void ip_dst_metrics_put(struct dst_entry *dst)=0D {=0D struct dst_metrics *p =3D (struct dst_metrics *)((u32 *)(((dst)->_metrics)= & ~0x3UL));=0D =0D if (p !=3D &dst_default_metrics && refcount_dec_and_test(&p->refcnt))=0D kfree(p);=0D }=0D =0D void __ip_select_ident(struct net *net, struct iphdr *iph, int segs);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_select_ident_segs(st= ruct net *net, struct sk_buff *skb,=0D struct sock *sk, int segs)=0D {=0D struct iphdr *iph =3D ip_hdr(skb);=0D =0D =0D =0D =0D if (sk && inet_sk(sk)->sk.__sk_common.skc_daddr) {=0D iph->id =3D (( __be16)(__builtin_constant_p((__u16)((inet_sk(sk)->inet_id= ))) ? ((__u16)( (((__u16)((inet_sk(sk)->inet_id)) & (__u16)0x00ffU) << 8) |= (((__u16)((inet_sk(sk)->inet_id)) & (__u16)0xff00U) >> 8))) : __fswab16((i= net_sk(sk)->inet_id))));=0D inet_sk(sk)->inet_id +=3D segs;=0D return;=0D }=0D if ((iph->frag_off & (( __be16)(__builtin_constant_p((__u16)((0x4000))) ? = ((__u16)( (((__u16)((0x4000)) & (__u16)0x00ffU) << 8) | (((__u16)((0x4000))= & (__u16)0xff00U) >> 8))) : __fswab16((0x4000))))) && !skb->ignore_df) {=0D iph->id =3D 0;=0D } else {=0D =0D __ip_select_ident(net, iph, segs);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_select_ident(struct = net *net, struct sk_buff *skb,=0D struct sock *sk)=0D {=0D ip_select_ident_segs(net, skb, sk, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __wsum inet_compute_pseudo(s= truct sk_buff *skb, int proto)=0D {=0D return csum_tcpudp_nofold(ip_hdr(skb)->saddr, ip_hdr(skb)->daddr,=0D skb->len, proto, 0);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iph_to_flow_copy_v4addr= s(struct flow_keys *flow,=0D const struct iphdr *iph)=0D {=0D do { __attribute__((__noreturn__)) extern void __compiletime_assert_582(vo= id) ; if (!(!(__builtin_offsetof(typeof(flow->addrs), v4addrs.dst) !=3D __b= uiltin_offsetof(typeof(flow->addrs), v4addrs.src) + sizeof(flow->addrs.v4ad= drs.src)))) __compiletime_assert_582(); } while (0);=0D =0D =0D memcpy(&flow->addrs.v4addrs, &iph->saddr, sizeof(flow->addrs.v4addrs));=0D flow->control.addr_type =3D FLOW_DISSECTOR_KEY_IPV4_ADDRS;=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_eth_mc_map(__be32 na= ddr, char *buf)=0D {=0D __u32 addr=3D(__builtin_constant_p((__u32)(( __u32)(__be32)(naddr))) ? ((_= _u32)( (((__u32)(( __u32)(__be32)(naddr)) & (__u32)0x000000ffUL) << 24) | (= ((__u32)(( __u32)(__be32)(naddr)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= ( __u32)(__be32)(naddr)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(= __be32)(naddr)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32= )(naddr)));=0D buf[0]=3D0x01;=0D buf[1]=3D0x00;=0D buf[2]=3D0x5e;=0D buf[5]=3Daddr&0xFF;=0D addr>>=3D8;=0D buf[4]=3Daddr&0xFF;=0D addr>>=3D8;=0D buf[3]=3Daddr&0x7F;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_ib_mc_map(__be32 nad= dr, const unsigned char *broadcast, char *buf)=0D {=0D __u32 addr;=0D unsigned char scope =3D broadcast[5] & 0xF;=0D =0D buf[0] =3D 0;=0D buf[1] =3D 0xff;=0D buf[2] =3D 0xff;=0D buf[3] =3D 0xff;=0D addr =3D (__builtin_constant_p((__u32)(( __u32)(__be32)(naddr))) ? ((__u32= )( (((__u32)(( __u32)(__be32)(naddr)) & (__u32)0x000000ffUL) << 24) | (((__= u32)(( __u32)(__be32)(naddr)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __= u32)(__be32)(naddr)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be= 32)(naddr)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(na= ddr)));=0D buf[4] =3D 0xff;=0D buf[5] =3D 0x10 | scope;=0D buf[6] =3D 0x40;=0D buf[7] =3D 0x1b;=0D buf[8] =3D broadcast[8];=0D buf[9] =3D broadcast[9];=0D buf[10] =3D 0;=0D buf[11] =3D 0;=0D buf[12] =3D 0;=0D buf[13] =3D 0;=0D buf[14] =3D 0;=0D buf[15] =3D 0;=0D buf[19] =3D addr & 0xff;=0D addr >>=3D 8;=0D buf[18] =3D addr & 0xff;=0D addr >>=3D 8;=0D buf[17] =3D addr & 0xff;=0D addr >>=3D 8;=0D buf[16] =3D addr & 0x0f;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_ipgre_mc_map(__be32 = naddr, const unsigned char *broadcast, char *buf)=0D {=0D if ((broadcast[0] | broadcast[1] | broadcast[2] | broadcast[3]) !=3D 0)=0D memcpy(buf, broadcast, 4);=0D else=0D memcpy(buf, &naddr, sizeof(naddr));=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void inet_reset_saddr(struct= sock *sk)=0D {=0D inet_sk(sk)->sk.__sk_common.skc_rcv_saddr =3D inet_sk(sk)->inet_saddr =3D = 0;=0D =0D if (sk->__sk_common.skc_family =3D=3D 10) {=0D struct ipv6_pinfo *np =3D inet6_sk(sk);=0D =0D memset(&np->saddr, 0, sizeof(np->saddr));=0D memset(&sk->__sk_common.skc_v6_rcv_saddr, 0, sizeof(sk->__sk_common.skc_v= 6_rcv_saddr));=0D }=0D =0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int ipv4_addr_hash(= __be32 ip)=0D {=0D return ( unsigned int) ip;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 ipv4_portaddr_hash(const= struct net *net,=0D __be32 saddr,=0D unsigned int port)=0D {=0D return jhash_1word(( u32)saddr, net_hash_mix(net)) ^ port;=0D }=0D =0D bool ip_call_ra_chain(struct sk_buff *skb);=0D =0D =0D =0D =0D =0D enum ip_defrag_users {=0D IP_DEFRAG_LOCAL_DELIVER,=0D IP_DEFRAG_CALL_RA_CHAIN,=0D IP_DEFRAG_CONNTRACK_IN,=0D __IP_DEFRAG_CONNTRACK_IN_END =3D IP_DEFRAG_CONNTRACK_IN + ((unsigned short= )~0U),=0D IP_DEFRAG_CONNTRACK_OUT,=0D __IP_DEFRAG_CONNTRACK_OUT_END =3D IP_DEFRAG_CONNTRACK_OUT + ((unsigned sho= rt)~0U),=0D IP_DEFRAG_CONNTRACK_BRIDGE_IN,=0D __IP_DEFRAG_CONNTRACK_BRIDGE_IN =3D IP_DEFRAG_CONNTRACK_BRIDGE_IN + ((unsi= gned short)~0U),=0D IP_DEFRAG_VS_IN,=0D IP_DEFRAG_VS_OUT,=0D IP_DEFRAG_VS_FWD,=0D IP_DEFRAG_AF_PACKET,=0D IP_DEFRAG_MACVLAN,=0D };=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ip_defrag_user_in_betwe= en(u32 user,=0D enum ip_defrag_users lower_bond,=0D enum ip_defrag_users upper_bond)=0D {=0D return user >=3D lower_bond && user <=3D upper_bond;=0D }=0D =0D int ip_defrag(struct net *net, struct sk_buff *skb, u32 user);=0D =0D struct sk_buff *ip_check_defrag(struct net *net, struct sk_buff *skb, u32 u= ser);=0D # 707 "./include/net/ip.h"=0D int ip_forward(struct sk_buff *skb);=0D =0D =0D =0D =0D =0D void ip_options_build(struct sk_buff *skb, struct ip_options *opt,=0D __be32 daddr, struct rtable *rt);=0D =0D int __ip_options_echo(struct net *net, struct ip_options *dopt,=0D struct sk_buff *skb, const struct ip_options *sopt);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_options_echo(struct n= et *net, struct ip_options *dopt,=0D struct sk_buff *skb)=0D {=0D return __ip_options_echo(net, dopt, skb, &((struct inet_skb_parm*)((skb)->= cb))->opt);=0D }=0D =0D void ip_options_fragment(struct sk_buff *skb);=0D int __ip_options_compile(struct net *net, struct ip_options *opt,=0D struct sk_buff *skb, __be32 *info);=0D int ip_options_compile(struct net *net, struct ip_options *opt,=0D struct sk_buff *skb);=0D int ip_options_get(struct net *net, struct ip_options_rcu **optp,=0D sockptr_t data, int optlen);=0D void ip_options_undo(struct ip_options *opt);=0D void ip_forward_options(struct sk_buff *skb);=0D int ip_options_rcv_srr(struct sk_buff *skb, struct net_device *dev);=0D =0D =0D =0D =0D =0D void ipv4_pktinfo_prepare(const struct sock *sk, struct sk_buff *skb);=0D void ip_cmsg_recv_offset(struct msghdr *msg, struct sock *sk,=0D struct sk_buff *skb, int tlen, int offset);=0D int ip_cmsg_send(struct sock *sk, struct msghdr *msg,=0D struct ipcm_cookie *ipc, bool allow_ipv6);=0D extern struct static_key_false ip4_min_ttl;=0D int ip_setsockopt(struct sock *sk, int level, int optname, sockptr_t optval= ,=0D unsigned int optlen);=0D int ip_getsockopt(struct sock *sk, int level, int optname, char *optval,=0D int *optlen);=0D int ip_ra_control(struct sock *sk, unsigned char on,=0D void (*destructor)(struct sock *));=0D =0D int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_l= en);=0D void ip_icmp_error(struct sock *sk, struct sk_buff *skb, int err, __be16 po= rt,=0D u32 info, u8 *payload);=0D void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 dport,=0D u32 info);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_cmsg_recv(struct msg= hdr *msg, struct sk_buff *skb)=0D {=0D ip_cmsg_recv_offset(msg, skb->sk, skb, 0, 0);=0D }=0D =0D bool icmp_global_allow(void);=0D extern int sysctl_icmp_msgs_per_sec;=0D extern int sysctl_icmp_msgs_burst;=0D =0D =0D int ip_misc_proc_init(void);=0D =0D =0D int rtm_getroute_parse_ip_proto(struct nlattr *attr, u8 *ip_proto, u8 famil= y,=0D struct netlink_ext_ack *extack);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inetdev_valid_mtu(unsig= ned int mtu)=0D {=0D return __builtin_expect(!!(mtu >=3D 68), 1);=0D }=0D =0D void ip_sock_set_freebind(struct sock *sk);=0D int ip_sock_set_mtu_discover(struct sock *sk, int val);=0D void ip_sock_set_pktinfo(struct sock *sk);=0D void ip_sock_set_recverr(struct sock *sk);=0D void ip_sock_set_tos(struct sock *sk, int val);=0D void __ip_sock_set_tos(struct sock *sk, int val);=0D # 39 "./include/net/tcp.h" 2=0D =0D # 1 "./include/net/inet_ecn.h" 1=0D # 10 "./include/net/inet_ecn.h"=0D # 1 "./include/net/dsfield.h" 1=0D # 16 "./include/net/dsfield.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 ipv4_get_dsfield(const = struct iphdr *iph)=0D {=0D return iph->tos;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 ipv6_get_dsfield(const = struct ipv6hdr *ipv6h)=0D {=0D return (__builtin_constant_p((__u16)(( __u16)(__be16)(*( const __be16 *)ip= v6h))) ? ((__u16)( (((__u16)(( __u16)(__be16)(*( const __be16 *)ipv6h)) & (= __u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(*( const __be16 *)ipv6h))= & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(*( const __be16 *)i= pv6h))) >> 4;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv4_change_dsfield(str= uct iphdr *iph,__u8 mask,=0D __u8 value)=0D {=0D __u32 check =3D (__builtin_constant_p((__u16)(( __u16)(__be16)(( __= be16)iph->check))) ? ((__u16)( (((__u16)(( __u16)(__be16)(( __be16)iph->che= ck)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(( __be16)iph->che= ck)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(( __be16)iph->c= heck)));=0D __u8 dsfield;=0D =0D dsfield =3D (iph->tos & mask) | value;=0D check +=3D iph->tos;=0D if ((check+1) >> 16) check =3D (check+1) & 0xffff;=0D check -=3D dsfield;=0D check +=3D check >> 16;=0D iph->check =3D ( __sum16)(( __be16)(__builtin_constant_p((__u16)((check)))= ? ((__u16)( (((__u16)((check)) & (__u16)0x00ffU) << 8) | (((__u16)((check)= ) & (__u16)0xff00U) >> 8))) : __fswab16((check))));=0D iph->tos =3D dsfield;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_change_dsfield(str= uct ipv6hdr *ipv6h,__u8 mask,=0D __u8 value)=0D {=0D __be16 *p =3D ( __be16 *)ipv6h;=0D =0D *p =3D (*p & (( __be16)(__builtin_constant_p((__u16)(((((u16)mask << 4) | = 0xf00f)))) ? ((__u16)( (((__u16)(((((u16)mask << 4) | 0xf00f))) & (__u16)0x= 00ffU) << 8) | (((__u16)(((((u16)mask << 4) | 0xf00f))) & (__u16)0xff00U) >= > 8))) : __fswab16(((((u16)mask << 4) | 0xf00f)))))) | (( __be16)(__builtin= _constant_p((__u16)(((u16)value << 4))) ? ((__u16)( (((__u16)(((u16)value <= < 4)) & (__u16)0x00ffU) << 8) | (((__u16)(((u16)value << 4)) & (__u16)0xff0= 0U) >> 8))) : __fswab16(((u16)value << 4))));=0D }=0D # 11 "./include/net/inet_ecn.h" 2=0D =0D =0D enum {=0D INET_ECN_NOT_ECT =3D 0,=0D INET_ECN_ECT_1 =3D 1,=0D INET_ECN_ECT_0 =3D 2,=0D INET_ECN_CE =3D 3,=0D INET_ECN_MASK =3D 3,=0D };=0D =0D extern int sysctl_tunnel_ecn_log;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_is_ce(__u8 dsfi= eld)=0D {=0D return (dsfield & INET_ECN_MASK) =3D=3D INET_ECN_CE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_is_not_ect(__u8= dsfield)=0D {=0D return (dsfield & INET_ECN_MASK) =3D=3D INET_ECN_NOT_ECT;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_is_capable(__u8= dsfield)=0D {=0D return dsfield & INET_ECN_ECT_0;=0D }=0D # 46 "./include/net/inet_ecn.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u8 INET_ECN_encapsulate(__= u8 outer, __u8 inner)=0D {=0D outer &=3D ~INET_ECN_MASK;=0D outer |=3D !INET_ECN_is_ce(inner) ? (inner & INET_ECN_MASK) :=0D INET_ECN_ECT_0;=0D return outer;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INET_ECN_xmit(struct so= ck *sk)=0D {=0D inet_sk(sk)->tos |=3D INET_ECN_ECT_0;=0D if (inet6_sk(sk) !=3D ((void *)0))=0D inet6_sk(sk)->tclass |=3D INET_ECN_ECT_0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void INET_ECN_dontxmit(struc= t sock *sk)=0D {=0D inet_sk(sk)->tos &=3D ~INET_ECN_MASK;=0D if (inet6_sk(sk) !=3D ((void *)0))=0D inet6_sk(sk)->tclass &=3D ~INET_ECN_MASK;=0D }=0D # 77 "./include/net/inet_ecn.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP_ECN_set_ce(struct iph= dr *iph)=0D {=0D u32 ecn =3D (iph->tos + 1) & INET_ECN_MASK;=0D __be16 check_add;=0D # 89 "./include/net/inet_ecn.h"=0D if (!(ecn & 2))=0D return !ecn;=0D =0D =0D =0D =0D =0D =0D check_add =3D ( __be16)(( u16)(( __be16)(__builtin_constant_p((__u16)((0xF= FFB))) ? ((__u16)( (((__u16)((0xFFFB)) & (__u16)0x00ffU) << 8) | (((__u16)(= (0xFFFB)) & (__u16)0xff00U) >> 8))) : __fswab16((0xFFFB)))) +=0D ( u16)(( __be16)(__builtin_constant_p((__u16)((ecn))) ? ((__u16)( = (((__u16)((ecn)) & (__u16)0x00ffU) << 8) | (((__u16)((ecn)) & (__u16)0xff00= U) >> 8))) : __fswab16((ecn)))));=0D =0D iph->check =3D csum16_add(iph->check, check_add);=0D iph->tos |=3D INET_ECN_CE;=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP_ECN_set_ect1(struct i= phdr *iph)=0D {=0D if ((iph->tos & INET_ECN_MASK) !=3D INET_ECN_ECT_0)=0D return 0;=0D =0D iph->check =3D csum16_add(iph->check, (( __be16)(__builtin_constant_p((__u= 16)((0x1))) ? ((__u16)( (((__u16)((0x1)) & (__u16)0x00ffU) << 8) | (((__u16= )((0x1)) & (__u16)0xff00U) >> 8))) : __fswab16((0x1)))));=0D iph->tos ^=3D INET_ECN_MASK;=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void IP_ECN_clear(struct iph= dr *iph)=0D {=0D iph->tos &=3D ~INET_ECN_MASK;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv4_copy_dscp(unsigned= int dscp, struct iphdr *inner)=0D {=0D dscp &=3D ~INET_ECN_MASK;=0D ipv4_change_dsfield(inner, INET_ECN_MASK, dscp);=0D }=0D =0D struct ipv6hdr;=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP6_ECN_set_ce(struct sk= _buff *skb, struct ipv6hdr *iph)=0D {=0D __be32 from, to;=0D =0D if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))=0D return 0;=0D =0D from =3D *(__be32 *)iph;=0D to =3D from | (( __be32)(__builtin_constant_p((__u32)((INET_ECN_CE << 20))= ) ? ((__u32)( (((__u32)((INET_ECN_CE << 20)) & (__u32)0x000000ffUL) << 24) = | (((__u32)((INET_ECN_CE << 20)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((= INET_ECN_CE << 20)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((INET_ECN_CE <= < 20)) & (__u32)0xff000000UL) >> 24))) : __fswab32((INET_ECN_CE << 20))));= =0D *(__be32 *)iph =3D to;=0D if (skb->ip_summed =3D=3D 2)=0D skb->csum =3D csum_add(csum_sub(skb->csum, ( __wsum)from),=0D ( __wsum)to);=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP6_ECN_set_ect1(struct = sk_buff *skb, struct ipv6hdr *iph)=0D {=0D __be32 from, to;=0D =0D if ((ipv6_get_dsfield(iph) & INET_ECN_MASK) !=3D INET_ECN_ECT_0)=0D return 0;=0D =0D from =3D *(__be32 *)iph;=0D to =3D from ^ (( __be32)(__builtin_constant_p((__u32)((INET_ECN_MASK << 20= ))) ? ((__u32)( (((__u32)((INET_ECN_MASK << 20)) & (__u32)0x000000ffUL) << = 24) | (((__u32)((INET_ECN_MASK << 20)) & (__u32)0x0000ff00UL) << 8) | (((__= u32)((INET_ECN_MASK << 20)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)((INET_= ECN_MASK << 20)) & (__u32)0xff000000UL) >> 24))) : __fswab32((INET_ECN_MASK= << 20))));=0D *(__be32 *)iph =3D to;=0D if (skb->ip_summed =3D=3D 2)=0D skb->csum =3D csum_add(csum_sub(skb->csum, ( __wsum)from),=0D ( __wsum)to);=0D return 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ipv6_copy_dscp(unsigned= int dscp, struct ipv6hdr *inner)=0D {=0D dscp &=3D ~INET_ECN_MASK;=0D ipv6_change_dsfield(inner, INET_ECN_MASK, dscp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_set_ce(struct s= k_buff *skb)=0D {=0D switch (skb_protocol(skb, true)) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D if (skb_network_header(skb) + sizeof(struct iphdr) <=3D=0D skb_tail_pointer(skb))=0D return IP_ECN_set_ce(ip_hdr(skb));=0D break;=0D =0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D if (skb_network_header(skb) + sizeof(struct ipv6hdr) <=3D=0D skb_tail_pointer(skb))=0D return IP6_ECN_set_ce(skb, ipv6_hdr(skb));=0D break;=0D }=0D =0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_get_dsfield(struct s= k_buff *skb)=0D {=0D switch (skb_protocol(skb, true)) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D if (!pskb_network_may_pull(skb, sizeof(struct iphdr)))=0D break;=0D return ipv4_get_dsfield(ip_hdr(skb));=0D =0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D if (!pskb_network_may_pull(skb, sizeof(struct ipv6hdr)))=0D break;=0D return ipv6_get_dsfield(ipv6_hdr(skb));=0D }=0D =0D return -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_set_ect1(struct= sk_buff *skb)=0D {=0D switch (skb_protocol(skb, true)) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D if (skb_network_header(skb) + sizeof(struct iphdr) <=3D=0D skb_tail_pointer(skb))=0D return IP_ECN_set_ect1(ip_hdr(skb));=0D break;=0D =0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D if (skb_network_header(skb) + sizeof(struct ipv6hdr) <=3D=0D skb_tail_pointer(skb))=0D return IP6_ECN_set_ect1(skb, ipv6_hdr(skb));=0D break;=0D }=0D =0D return 0;=0D }=0D # 251 "./include/net/inet_ecn.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __INET_ECN_decapsulate(_= _u8 outer, __u8 inner, bool *set_ce)=0D {=0D if (INET_ECN_is_not_ect(inner)) {=0D switch (outer & INET_ECN_MASK) {=0D case INET_ECN_NOT_ECT:=0D return 0;=0D case INET_ECN_ECT_0:=0D case INET_ECN_ECT_1:=0D return 1;=0D case INET_ECN_CE:=0D return 2;=0D }=0D }=0D =0D *set_ce =3D INET_ECN_is_ce(outer);=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int INET_ECN_decapsulate(str= uct sk_buff *skb,=0D __u8 outer, __u8 inner)=0D {=0D bool set_ce =3D false;=0D int rc;=0D =0D rc =3D __INET_ECN_decapsulate(outer, inner, &set_ce);=0D if (!rc) {=0D if (set_ce)=0D INET_ECN_set_ce(skb);=0D else if ((outer & INET_ECN_MASK) =3D=3D INET_ECN_ECT_1)=0D INET_ECN_set_ect1(skb);=0D }=0D =0D return rc;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP_ECN_decapsulate(const= struct iphdr *oiph,=0D struct sk_buff *skb)=0D {=0D __u8 inner;=0D =0D switch (skb_protocol(skb, true)) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D inner =3D ip_hdr(skb)->tos;=0D break;=0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D inner =3D ipv6_get_dsfield(ipv6_hdr(skb));=0D break;=0D default:=0D return 0;=0D }=0D =0D return INET_ECN_decapsulate(skb, oiph->tos, inner);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int IP6_ECN_decapsulate(cons= t struct ipv6hdr *oipv6h,=0D struct sk_buff *skb)=0D {=0D __u8 inner;=0D =0D switch (skb_protocol(skb, true)) {=0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D inner =3D ip_hdr(skb)->tos;=0D break;=0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D inner =3D ipv6_get_dsfield(ipv6_hdr(skb));=0D break;=0D default:=0D return 0;=0D }=0D =0D return INET_ECN_decapsulate(skb, ipv6_get_dsfield(oipv6h), inner);=0D }=0D # 41 "./include/net/tcp.h" 2=0D =0D # 1 "./include/net/mptcp.h" 1=0D # 15 "./include/net/mptcp.h"=0D struct mptcp_info;=0D struct mptcp_sock;=0D struct seq_file;=0D =0D =0D struct mptcp_ext {=0D union {=0D u64 data_ack;=0D u32 data_ack32;=0D };=0D u64 data_seq;=0D u32 subflow_seq;=0D u16 data_len;=0D __sum16 csum;=0D u8 use_map:1,=0D dsn64:1,=0D data_fin:1,=0D use_ack:1,=0D ack64:1,=0D mpc_map:1,=0D frozen:1,=0D reset_transient:1;=0D u8 reset_reason:4,=0D csum_reqd:1;=0D };=0D =0D =0D =0D struct mptcp_rm_list {=0D u8 ids[8];=0D u8 nr;=0D };=0D =0D struct mptcp_addr_info {=0D u8 id;=0D sa_family_t family;=0D __be16 port;=0D union {=0D struct in_addr addr;=0D =0D =0D =0D };=0D };=0D =0D struct mptcp_out_options {=0D # 95 "./include/net/mptcp.h"=0D };=0D # 201 "./include/net/mptcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcp_init(void)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool sk_is_mptcp(const struc= t sock *sk)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rsk_is_mptcp(const stru= ct request_sock *req)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool rsk_drop_req(const stru= ct request_sock *req)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mptcp_syn_options(struc= t sock *sk, const struct sk_buff *skb,=0D unsigned int *size,=0D struct mptcp_out_options *opts)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mptcp_synack_options(co= nst struct request_sock *req,=0D unsigned int *size,=0D struct mptcp_out_options *opts)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mptcp_established_optio= ns(struct sock *sk,=0D struct sk_buff *skb,=0D unsigned int *size,=0D unsigned int remaining,=0D struct mptcp_out_options *opts)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mptcp_incoming_options(= struct sock *sk,=0D struct sk_buff *skb)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcp_skb_ext_move(stru= ct sk_buff *to,=0D const struct sk_buff *from)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcp_skb_ext_copy(stru= ct sk_buff *to,=0D struct sk_buff *from)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool mptcp_skb_can_collapse(= const struct sk_buff *to,=0D const struct sk_buff *from)=0D {=0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcp_space(const struc= t sock *ssk, int *s, int *fs) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcp_seq_show(struct s= eq_file *seq) { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mptcp_subflow_init_cooki= e_req(struct request_sock *req,=0D const struct sock *sk_listener,=0D struct sk_buff *skb)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 mptcp_reset_option(co= nst struct sk_buff *skb) { return (( __be32)(__builtin_constant_p((__u32)((= 0u))) ? ((__u32)( (((__u32)((0u)) & (__u32)0x000000ffUL) << 24) | (((__u32)= ((0u)) & (__u32)0x0000ff00UL) << 8) | (((__u32)((0u)) & (__u32)0x00ff0000UL= ) >> 8) | (((__u32)((0u)) & (__u32)0xff000000UL) >> 24))) : __fswab32((0u))= )); }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int mptcpv6_init(void) { ret= urn 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void mptcpv6_handle_mapped(s= truct sock *sk, bool mapped) { }=0D # 43 "./include/net/tcp.h" 2=0D =0D =0D =0D # 1 "./include/linux/bpf-cgroup.h" 1=0D # 14 "./include/linux/bpf-cgroup.h"=0D struct sock;=0D struct sockaddr;=0D struct cgroup;=0D struct sk_buff;=0D struct bpf_map;=0D struct bpf_prog;=0D struct bpf_sock_ops_kern;=0D struct bpf_cgroup_storage;=0D struct ctl_table;=0D struct ctl_table_header;=0D struct task_struct;=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum cgroup_bpf_attach_type= =0D to_cgroup_bpf_attach_type(enum bpf_attach_type attach_type)=0D {=0D switch (attach_type) {=0D case BPF_CGROUP_INET_INGRESS: return CGROUP_INET_INGRESS;=0D case BPF_CGROUP_INET_EGRESS: return CGROUP_INET_EGRESS;=0D case BPF_CGROUP_INET_SOCK_CREATE: return CGROUP_INET_SOCK_CREATE;=0D case BPF_CGROUP_SOCK_OPS: return CGROUP_SOCK_OPS;=0D case BPF_CGROUP_DEVICE: return CGROUP_DEVICE;=0D case BPF_CGROUP_INET4_BIND: return CGROUP_INET4_BIND;=0D case BPF_CGROUP_INET6_BIND: return CGROUP_INET6_BIND;=0D case BPF_CGROUP_INET4_CONNECT: return CGROUP_INET4_CONNECT;=0D case BPF_CGROUP_INET6_CONNECT: return CGROUP_INET6_CONNECT;=0D case BPF_CGROUP_INET4_POST_BIND: return CGROUP_INET4_POST_BIND;=0D case BPF_CGROUP_INET6_POST_BIND: return CGROUP_INET6_POST_BIND;=0D case BPF_CGROUP_UDP4_SENDMSG: return CGROUP_UDP4_SENDMSG;=0D case BPF_CGROUP_UDP6_SENDMSG: return CGROUP_UDP6_SENDMSG;=0D case BPF_CGROUP_SYSCTL: return CGROUP_SYSCTL;=0D case BPF_CGROUP_UDP4_RECVMSG: return CGROUP_UDP4_RECVMSG;=0D case BPF_CGROUP_UDP6_RECVMSG: return CGROUP_UDP6_RECVMSG;=0D case BPF_CGROUP_GETSOCKOPT: return CGROUP_GETSOCKOPT;=0D case BPF_CGROUP_SETSOCKOPT: return CGROUP_SETSOCKOPT;=0D case BPF_CGROUP_INET4_GETPEERNAME: return CGROUP_INET4_GETPEERNAME;=0D case BPF_CGROUP_INET6_GETPEERNAME: return CGROUP_INET6_GETPEERNAME;=0D case BPF_CGROUP_INET4_GETSOCKNAME: return CGROUP_INET4_GETSOCKNAME;=0D case BPF_CGROUP_INET6_GETSOCKNAME: return CGROUP_INET6_GETSOCKNAME;=0D case BPF_CGROUP_INET_SOCK_RELEASE: return CGROUP_INET_SOCK_RELEASE;=0D default:=0D return CGROUP_BPF_ATTACH_TYPE_INVALID;=0D }=0D }=0D =0D =0D =0D extern struct static_key_false cgroup_bpf_enabled_key[MAX_CGROUP_BPF_ATTACH= _TYPE];=0D =0D =0D =0D =0D =0D struct bpf_cgroup_storage_map;=0D =0D struct bpf_storage_buffer {=0D struct callback_head rcu;=0D char data[];=0D };=0D =0D struct bpf_cgroup_storage {=0D union {=0D struct bpf_storage_buffer *buf;=0D void *percpu_buf;=0D };=0D struct bpf_cgroup_storage_map *map;=0D struct bpf_cgroup_storage_key key;=0D struct list_head list_map;=0D struct list_head list_cg;=0D struct rb_node node;=0D struct callback_head rcu;=0D };=0D =0D struct bpf_cgroup_link {=0D struct bpf_link link;=0D struct cgroup *cgroup;=0D enum bpf_attach_type type;=0D };=0D =0D struct bpf_prog_list {=0D struct list_head node;=0D struct bpf_prog *prog;=0D struct bpf_cgroup_link *link;=0D struct bpf_cgroup_storage *storage[__BPF_CGROUP_STORAGE_MAX];=0D };=0D =0D int cgroup_bpf_inherit(struct cgroup *cgrp);=0D void cgroup_bpf_offline(struct cgroup *cgrp);=0D =0D int __cgroup_bpf_run_filter_skb(struct sock *sk,=0D struct sk_buff *skb,=0D enum cgroup_bpf_attach_type atype);=0D =0D int __cgroup_bpf_run_filter_sk(struct sock *sk,=0D enum cgroup_bpf_attach_type atype);=0D =0D int __cgroup_bpf_run_filter_sock_addr(struct sock *sk,=0D struct sockaddr *uaddr,=0D enum cgroup_bpf_attach_type atype,=0D void *t_ctx,=0D u32 *flags);=0D =0D int __cgroup_bpf_run_filter_sock_ops(struct sock *sk,=0D struct bpf_sock_ops_kern *sock_ops,=0D enum cgroup_bpf_attach_type atype);=0D =0D int __cgroup_bpf_check_dev_permission(short dev_type, u32 major, u32 minor,= =0D short access, enum cgroup_bpf_attach_type atype);=0D =0D int __cgroup_bpf_run_filter_sysctl(struct ctl_table_header *head,=0D struct ctl_table *table, int write,=0D char **buf, size_t *pcount, loff_t *ppos,=0D enum cgroup_bpf_attach_type atype);=0D =0D int __cgroup_bpf_run_filter_setsockopt(struct sock *sock, int *level,=0D int *optname, char *optval,=0D int *optlen, char **kernel_optval);=0D int __cgroup_bpf_run_filter_getsockopt(struct sock *sk, int level,=0D int optname, char *optval,=0D int *optlen, int max_optlen,=0D int retval);=0D =0D int __cgroup_bpf_run_filter_getsockopt_kern(struct sock *sk, int level,=0D int optname, void *optval,=0D int *optlen, int retval);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum bpf_cgroup_storage_type= cgroup_storage_type(=0D struct bpf_map *map)=0D {=0D if (map->map_type =3D=3D BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE)=0D return BPF_CGROUP_STORAGE_PERCPU;=0D =0D return BPF_CGROUP_STORAGE_SHARED;=0D }=0D =0D struct bpf_cgroup_storage *=0D cgroup_storage_lookup(struct bpf_cgroup_storage_map *map,=0D void *key, bool locked);=0D struct bpf_cgroup_storage *bpf_cgroup_storage_alloc(struct bpf_prog *prog,= =0D enum bpf_cgroup_storage_type stype);=0D void bpf_cgroup_storage_free(struct bpf_cgroup_storage *storage);=0D void bpf_cgroup_storage_link(struct bpf_cgroup_storage *storage,=0D struct cgroup *cgroup,=0D enum bpf_attach_type type);=0D void bpf_cgroup_storage_unlink(struct bpf_cgroup_storage *storage);=0D int bpf_cgroup_storage_assign(struct bpf_prog_aux *aux, struct bpf_map *map= );=0D =0D int bpf_percpu_cgroup_storage_copy(struct bpf_map *map, void *key, void *va= lue);=0D int bpf_percpu_cgroup_storage_update(struct bpf_map *map, void *key,=0D void *value, u64 flags);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cgroup_bpf_sock_enabled= (struct sock *sk,=0D enum cgroup_bpf_attach_type type)=0D {=0D struct cgroup *cgrp =3D sock_cgroup_ptr(&sk->sk_cgrp_data);=0D struct bpf_prog_array *array;=0D =0D array =3D ({ typeof(*(cgrp->bpf.effective[type])) *__UNIQUE_ID_rcu583 =3D = (typeof(*(cgrp->bpf.effective[type])) *)({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_584(void) ; if (!((sizeof((cgrp->bpf.ef= fective[type])) =3D=3D sizeof(char) || sizeof((cgrp->bpf.effective[type])) = =3D=3D sizeof(short) || sizeof((cgrp->bpf.effective[type])) =3D=3D sizeof(i= nt) || sizeof((cgrp->bpf.effective[type])) =3D=3D sizeof(long)) || sizeof((= cgrp->bpf.effective[type])) =3D=3D sizeof(long long))) __compiletime_assert= _584(); } while (0); (*(const volatile typeof( _Generic(((cgrp->bpf.effecti= ve[type])), char: (char)0, unsigned char: (unsigned char)0, signed char: (s= igned char)0, unsigned short: (unsigned short)0, signed short: (signed shor= t)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lon= g: (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsi= gned long long)0, signed long long: (signed long long)0, default: ((cgrp->b= pf.effective[type])))) *)&((cgrp->bpf.effective[type]))); }); ; ((typeof(*(= cgrp->bpf.effective[type])) *)(__UNIQUE_ID_rcu583)); });=0D return array !=3D &bpf_empty_prog_array.hdr;=0D }=0D # 407 "./include/linux/bpf-cgroup.h"=0D int cgroup_bpf_prog_attach(const union bpf_attr *attr,=0D enum bpf_prog_type ptype, struct bpf_prog *prog);=0D int cgroup_bpf_prog_detach(const union bpf_attr *attr,=0D enum bpf_prog_type ptype);=0D int cgroup_bpf_link_attach(const union bpf_attr *attr, struct bpf_prog *pro= g);=0D int cgroup_bpf_prog_query(const union bpf_attr *attr,=0D union bpf_attr *uattr);=0D # 47 "./include/net/tcp.h" 2=0D =0D =0D extern struct inet_hashinfo tcp_hashinfo;=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(unsigned int= ) tcp_orphan_count;=0D int tcp_orphan_count_sum(void);=0D =0D void tcp_time_wait(struct sock *sk, int state, int timeo);=0D # 248 "./include/net/tcp.h"=0D extern int sysctl_tcp_max_orphans;=0D extern long sysctl_tcp_mem[3];=0D =0D =0D =0D =0D =0D extern atomic_long_t tcp_memory_allocated;=0D extern struct percpu_counter tcp_sockets_allocated;=0D extern unsigned long tcp_memory_pressure;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_under_memory_pressu= re(const struct sock *sk)=0D {=0D if (0 && sk->sk_memcg &&=0D mem_cgroup_under_socket_pressure(sk->sk_memcg))=0D return true;=0D =0D return ({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_585(void) ; if (!((sizeof(tcp_memory_pressure) =3D=3D sizeof(char) || s= izeof(tcp_memory_pressure) =3D=3D sizeof(short) || sizeof(tcp_memory_pressu= re) =3D=3D sizeof(int) || sizeof(tcp_memory_pressure) =3D=3D sizeof(long)) = || sizeof(tcp_memory_pressure) =3D=3D sizeof(long long))) __compiletime_ass= ert_585(); } while (0); (*(const volatile typeof( _Generic((tcp_memory_pres= sure), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed= char)0, unsigned short: (unsigned short)0, signed short: (signed short)0, = unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (u= nsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned = long long)0, signed long long: (signed long long)0, default: (tcp_memory_pr= essure))) *)&(tcp_memory_pressure)); });=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool before(__u32 seq1, __u3= 2 seq2)=0D {=0D return (__s32)(seq1-seq2) < 0;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool between(__u32 seq1, __u= 32 seq2, __u32 seq3)=0D {=0D return seq3 - seq2 >=3D seq1 - seq2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_out_of_memory(struc= t sock *sk)=0D {=0D if (sk->sk_wmem_queued > ((2048 + ((((sizeof(struct sk_buff))) + ((typeof(= (sizeof(struct sk_buff))))(((1 << 6))) - 1)) & ~((typeof((sizeof(struct sk_= buff))))(((1 << 6))) - 1))) * 2) &&=0D sk_memory_allocated(sk) > sk_prot_mem_limits(sk, 2))=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_wmem_free_skb(struc= t sock *sk, struct sk_buff *skb)=0D {=0D sk_wmem_queued_add(sk, -skb->truesize);=0D if (!skb_zcopy_pure(skb))=0D sk_mem_uncharge(sk, skb->truesize);=0D else=0D sk_mem_uncharge(sk, ((skb_end_offset(skb)) + ((((sizeof(struct sk_buff)))= + ((typeof((sizeof(struct sk_buff))))(((1 << 6))) - 1)) & ~((typeof((sizeo= f(struct sk_buff))))(((1 << 6))) - 1)) + ((((sizeof(struct skb_shared_info)= )) + ((typeof((sizeof(struct skb_shared_info))))(((1 << 6))) - 1)) & ~((typ= eof((sizeof(struct skb_shared_info))))(((1 << 6))) - 1))));=0D __kfree_skb(skb);=0D }=0D =0D void sk_forced_mem_schedule(struct sock *sk, int size);=0D =0D bool tcp_check_oom(struct sock *sk, int shift);=0D =0D =0D extern struct proto tcp_prot;=0D =0D =0D =0D =0D =0D =0D void tcp_tasklet_init(void);=0D =0D int tcp_v4_err(struct sk_buff *skb, u32);=0D =0D void tcp_shutdown(struct sock *sk, int how);=0D =0D int tcp_v4_early_demux(struct sk_buff *skb);=0D int tcp_v4_rcv(struct sk_buff *skb);=0D =0D void tcp_remove_empty_skb(struct sock *sk);=0D int tcp_v4_tw_remember_stamp(struct inet_timewait_sock *tw);=0D int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size);=0D int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size);=0D int tcp_sendpage(struct sock *sk, struct page *page, int offset, size_t siz= e,=0D int flags);=0D int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset,=0D size_t size, int flags);=0D ssize_t do_tcp_sendpages(struct sock *sk, struct page *page, int offset,=0D size_t size, int flags);=0D int tcp_send_mss(struct sock *sk, int *size_goal, int flags);=0D void tcp_push(struct sock *sk, int flags, int mss_now, int nonagle,=0D int size_goal);=0D void tcp_release_cb(struct sock *sk);=0D void tcp_wfree(struct sk_buff *skb);=0D void tcp_write_timer_handler(struct sock *sk);=0D void tcp_delack_timer_handler(struct sock *sk);=0D int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg);=0D int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb);=0D void tcp_rcv_established(struct sock *sk, struct sk_buff *skb);=0D void tcp_rcv_space_adjust(struct sock *sk);=0D int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp);=0D void tcp_twsk_destructor(struct sock *sk);=0D ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos,=0D struct pipe_inode_info *pipe, size_t len,=0D unsigned int flags);=0D struct sk_buff *tcp_stream_alloc_skb(struct sock *sk, int size, gfp_t gfp,= =0D bool force_schedule);=0D =0D void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks);= =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_dec_quickack_mode(s= truct sock *sk,=0D const unsigned int pkts)=0D {=0D struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (icsk->icsk_ack.quick) {=0D if (pkts >=3D icsk->icsk_ack.quick) {=0D icsk->icsk_ack.quick =3D 0;=0D =0D icsk->icsk_ack.ato =3D ((unsigned)(100/25));=0D } else=0D icsk->icsk_ack.quick -=3D pkts;=0D }=0D }=0D =0D =0D =0D =0D =0D =0D enum tcp_tw_status {=0D TCP_TW_SUCCESS =3D 0,=0D TCP_TW_RST =3D 1,=0D TCP_TW_ACK =3D 2,=0D TCP_TW_SYN =3D 3=0D };=0D =0D =0D enum tcp_tw_status tcp_timewait_state_process(struct inet_timewait_sock *tw= ,=0D struct sk_buff *skb,=0D const struct tcphdr *th);=0D struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,=0D struct request_sock *req, bool fastopen,=0D bool *lost_race);=0D int tcp_child_process(struct sock *parent, struct sock *child,=0D struct sk_buff *skb);=0D void tcp_enter_loss(struct sock *sk);=0D void tcp_cwnd_reduction(struct sock *sk, int newly_acked_sacked, int newly_= lost, int flag);=0D void tcp_clear_retrans(struct tcp_sock *tp);=0D void tcp_update_metrics(struct sock *sk);=0D void tcp_init_metrics(struct sock *sk);=0D void tcp_metrics_init(void);=0D bool tcp_peer_is_proven(struct request_sock *req, struct dst_entry *dst);=0D void __tcp_close(struct sock *sk, long timeout);=0D void tcp_close(struct sock *sk, long timeout);=0D void tcp_init_sock(struct sock *sk);=0D void tcp_init_transfer(struct sock *sk, int bpf_op, struct sk_buff *skb);=0D __poll_t tcp_poll(struct file *file, struct socket *sock,=0D struct poll_table_struct *wait);=0D int tcp_getsockopt(struct sock *sk, int level, int optname,=0D char *optval, int *optlen);=0D bool tcp_bpf_bypass_getsockopt(int level, int optname);=0D int tcp_setsockopt(struct sock *sk, int level, int optname, sockptr_t optva= l,=0D unsigned int optlen);=0D void tcp_set_keepalive(struct sock *sk, int val);=0D void tcp_syn_ack_timeout(const struct request_sock *req);=0D int tcp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int nonblo= ck,=0D int flags, int *addr_len);=0D int tcp_set_rcvlowat(struct sock *sk, int val);=0D int tcp_set_window_clamp(struct sock *sk, int val);=0D void tcp_update_recv_tstamps(struct sk_buff *skb,=0D struct scm_timestamping_internal *tss);=0D void tcp_recv_timestamp(struct msghdr *msg, const struct sock *sk,=0D struct scm_timestamping_internal *tss);=0D void tcp_data_ready(struct sock *sk);=0D =0D int tcp_mmap(struct file *file, struct socket *sock,=0D struct vm_area_struct *vma);=0D =0D void tcp_parse_options(const struct net *net, const struct sk_buff *skb,=0D struct tcp_options_received *opt_rx,=0D int estab, struct tcp_fastopen_cookie *foc);=0D const u8 *tcp_parse_md5sig_option(const struct tcphdr *th);=0D =0D =0D =0D =0D u16 tcp_v4_get_syncookie(struct sock *sk, struct iphdr *iph,=0D struct tcphdr *th, u32 *cookie);=0D u16 tcp_v6_get_syncookie(struct sock *sk, struct ipv6hdr *iph,=0D struct tcphdr *th, u32 *cookie);=0D u16 tcp_get_syncookie_mss(struct request_sock_ops *rsk_ops,=0D const struct tcp_request_sock_ops *af_ops,=0D struct sock *sk, struct tcphdr *th);=0D =0D =0D =0D =0D void tcp_v4_send_check(struct sock *sk, struct sk_buff *skb);=0D void tcp_v4_mtu_reduced(struct sock *sk);=0D void tcp_req_err(struct sock *sk, u32 seq, bool abort);=0D void tcp_ld_RTO_revert(struct sock *sk, u32 seq);=0D int tcp_v4_conn_request(struct sock *sk, struct sk_buff *skb);=0D struct sock *tcp_create_openreq_child(const struct sock *sk,=0D struct request_sock *req,=0D struct sk_buff *skb);=0D void tcp_ca_openreq_child(struct sock *sk, const struct dst_entry *dst);=0D struct sock *tcp_v4_syn_recv_sock(const struct sock *sk, struct sk_buff *sk= b,=0D struct request_sock *req,=0D struct dst_entry *dst,=0D struct request_sock *req_unhash,=0D bool *own_req);=0D int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb);=0D int tcp_v4_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);= =0D int tcp_connect(struct sock *sk);=0D enum tcp_synack_type {=0D TCP_SYNACK_NORMAL,=0D TCP_SYNACK_FASTOPEN,=0D TCP_SYNACK_COOKIE,=0D };=0D struct sk_buff *tcp_make_synack(const struct sock *sk, struct dst_entry *ds= t,=0D struct request_sock *req,=0D struct tcp_fastopen_cookie *foc,=0D enum tcp_synack_type synack_type,=0D struct sk_buff *syn_skb);=0D int tcp_disconnect(struct sock *sk, int flags);=0D =0D void tcp_finish_connect(struct sock *sk, struct sk_buff *skb);=0D int tcp_send_rcvq(struct sock *sk, struct msghdr *msg, size_t size);=0D void inet_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb);=0D =0D =0D struct sock *tcp_get_cookie_sock(struct sock *sk, struct sk_buff *skb,=0D struct request_sock *req,=0D struct dst_entry *dst, u32 tsoff);=0D int __cookie_v4_check(const struct iphdr *iph, const struct tcphdr *th,=0D u32 cookie);=0D struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb);=0D struct request_sock *cookie_tcp_reqsk_alloc(const struct request_sock_ops *= ops,=0D const struct tcp_request_sock_ops *af_ops,=0D struct sock *sk, struct sk_buff *skb);=0D # 584 "./include/net/tcp.h"=0D void tcp_skb_entail(struct sock *sk, struct sk_buff *skb);=0D void tcp_mark_push(struct tcp_sock *tp, struct sk_buff *skb);=0D void __tcp_push_pending_frames(struct sock *sk, unsigned int cur_mss,=0D int nonagle);=0D int __tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs);=0D int tcp_retransmit_skb(struct sock *sk, struct sk_buff *skb, int segs);=0D void tcp_retransmit_timer(struct sock *sk);=0D void tcp_xmit_retransmit_queue(struct sock *);=0D void tcp_simple_retransmit(struct sock *);=0D void tcp_enter_recovery(struct sock *sk, bool ece_ack);=0D int tcp_trim_head(struct sock *, struct sk_buff *, u32);=0D enum tcp_queue {=0D TCP_FRAG_IN_WRITE_QUEUE,=0D TCP_FRAG_IN_RTX_QUEUE,=0D };=0D int tcp_fragment(struct sock *sk, enum tcp_queue tcp_queue,=0D struct sk_buff *skb, u32 len,=0D unsigned int mss_now, gfp_t gfp);=0D =0D void tcp_send_probe0(struct sock *);=0D void tcp_send_partial(struct sock *);=0D int tcp_write_wakeup(struct sock *, int mib);=0D void tcp_send_fin(struct sock *sk);=0D void tcp_send_active_reset(struct sock *sk, gfp_t priority);=0D int tcp_send_synack(struct sock *);=0D void tcp_push_one(struct sock *, unsigned int mss_now);=0D void __tcp_send_ack(struct sock *sk, u32 rcv_nxt);=0D void tcp_send_ack(struct sock *sk);=0D void tcp_send_delayed_ack(struct sock *sk);=0D void tcp_send_loss_probe(struct sock *sk);=0D bool tcp_schedule_loss_probe(struct sock *sk, bool advancing_rto);=0D void tcp_skb_collapse_tstamp(struct sk_buff *skb,=0D const struct sk_buff *next_skb);=0D =0D =0D void tcp_rearm_rto(struct sock *sk);=0D void tcp_synack_rtt_meas(struct sock *sk, struct request_sock *req);=0D void tcp_reset(struct sock *sk, struct sk_buff *skb);=0D void tcp_skb_mark_lost_uncond_verify(struct tcp_sock *tp, struct sk_buff *s= kb);=0D void tcp_fin(struct sock *sk);=0D void tcp_check_space(struct sock *sk);=0D =0D =0D void tcp_init_xmit_timers(struct sock *);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_clear_xmit_timers(s= truct sock *sk)=0D {=0D if (hrtimer_try_to_cancel(&tcp_sk(sk)->pacing_timer) =3D=3D 1)=0D __sock_put(sk);=0D =0D if (hrtimer_try_to_cancel(&tcp_sk(sk)->compressed_ack_timer) =3D=3D 1)=0D __sock_put(sk);=0D =0D inet_csk_clear_xmit_timers(sk);=0D }=0D =0D unsigned int tcp_sync_mss(struct sock *sk, u32 pmtu);=0D unsigned int tcp_current_mss(struct sock *sk);=0D u32 tcp_clamp_probe0_to_user_timeout(const struct sock *sk, u32 when);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_bound_to_half_wnd(st= ruct tcp_sock *tp, int pktsize)=0D {=0D int cutoff;=0D # 655 "./include/net/tcp.h"=0D if (tp->max_window > 536U)=0D cutoff =3D (tp->max_window >> 1);=0D else=0D cutoff =3D tp->max_window;=0D =0D if (cutoff && pktsize > cutoff)=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)(cutoff)) *)1 =3D= =3D (typeof((int)(68U - tp->tcp_header_len)) *)1))) && ((sizeof(int) =3D=3D= sizeof(*(8 ? ((void *)((long)((int)(cutoff)) * 0l)) : (int *)8))) && (size= of(int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)(68U - tp->tcp_header_len= )) * 0l)) : (int *)8))))), (((int)(cutoff)) > ((int)(68U - tp->tcp_header_l= en)) ? ((int)(cutoff)) : ((int)(68U - tp->tcp_header_len))), ({ typeof((int= )(cutoff)) __UNIQUE_ID___x586 =3D ((int)(cutoff)); typeof((int)(68U - tp->t= cp_header_len)) __UNIQUE_ID___y587 =3D ((int)(68U - tp->tcp_header_len)); (= (__UNIQUE_ID___x586) > (__UNIQUE_ID___y587) ? (__UNIQUE_ID___x586) : (__UNI= QUE_ID___y587)); }));=0D else=0D return pktsize;=0D }=0D =0D =0D void tcp_get_info(struct sock *, struct tcp_info *);=0D =0D =0D int tcp_read_sock(struct sock *sk, read_descriptor_t *desc,=0D sk_read_actor_t recv_actor);=0D =0D void tcp_initialize_rcv_mss(struct sock *sk);=0D =0D int tcp_mtu_to_mss(struct sock *sk, int pmtu);=0D int tcp_mss_to_mtu(struct sock *sk, int mss);=0D void tcp_mtup_init(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_bound_rto(const str= uct sock *sk)=0D {=0D if (inet_csk(sk)->icsk_rto > ((unsigned)(120*100)))=0D inet_csk(sk)->icsk_rto =3D ((unsigned)(120*100));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 __tcp_set_rto(const stru= ct tcp_sock *tp)=0D {=0D return usecs_to_jiffies((tp->srtt_us >> 3) + tp->rttvar_us);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __tcp_fast_path_on(stru= ct tcp_sock *tp, u32 snd_wnd)=0D {=0D =0D if (sk_is_mptcp((struct sock *)tp))=0D return;=0D =0D tp->pred_flags =3D (( __be32)(__builtin_constant_p((__u32)(((tp->tcp_heade= r_len << 26) | (__builtin_constant_p((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)= )) ? ((__u32)( (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x000000f= fUL) << 24) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x0000ff00= UL) << 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x00ff0000UL= ) >> 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0xff000000UL) = >> 24))) : __fswab32(( __u32)(__be32)(TCP_FLAG_ACK))) | snd_wnd))) ? ((__u3= 2)( (((__u32)(((tp->tcp_header_len << 26) | (__builtin_constant_p((__u32)((= __u32)(__be32)(TCP_FLAG_ACK))) ? ((__u32)( (((__u32)(( __u32)(__be32)(TCP_= FLAG_ACK)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(TCP_F= LAG_ACK)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(TCP_FLA= G_ACK)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_= ACK)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(TCP_FLAG= _ACK))) | snd_wnd)) & (__u32)0x000000ffUL) << 24) | (((__u32)(((tp->tcp_hea= der_len << 26) | (__builtin_constant_p((__u32)(( __u32)(__be32)(TCP_FLAG_AC= K))) ? ((__u32)( (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x00000= 0ffUL) << 24) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x0000ff= 00UL) << 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x00ff0000= UL) >> 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0xff000000UL= ) >> 24))) : __fswab32(( __u32)(__be32)(TCP_FLAG_ACK))) | snd_wnd)) & (__u3= 2)0x0000ff00UL) << 8) | (((__u32)(((tp->tcp_header_len << 26) | (__builtin_= constant_p((__u32)(( __u32)(__be32)(TCP_FLAG_ACK))) ? ((__u32)( (((__u32)((= __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( = __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __= u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u3= 2)(__be32)(TCP_FLAG_ACK)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u= 32)(__be32)(TCP_FLAG_ACK))) | snd_wnd)) & (__u32)0x00ff0000UL) >> 8) | (((_= _u32)(((tp->tcp_header_len << 26) | (__builtin_constant_p((__u32)(( __u32)(= __be32)(TCP_FLAG_ACK))) ? ((__u32)( (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK= )) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)= ) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) = & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & = (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(TCP_FLAG_ACK))) = | snd_wnd)) & (__u32)0xff000000UL) >> 24))) : __fswab32(((tp->tcp_header_le= n << 26) | (__builtin_constant_p((__u32)(( __u32)(__be32)(TCP_FLAG_ACK))) ?= ((__u32)( (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x000000ffUL)= << 24) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x0000ff00UL) = << 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0x00ff0000UL) >>= 8) | (((__u32)(( __u32)(__be32)(TCP_FLAG_ACK)) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32(( __u32)(__be32)(TCP_FLAG_ACK))) | snd_wnd))));=0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_fast_path_on(struct= tcp_sock *tp)=0D {=0D __tcp_fast_path_on(tp, tp->snd_wnd >> tp->rx_opt.snd_wscale);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_fast_path_check(str= uct sock *sk)=0D {=0D struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D if ((({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_588(void) ; if (!((sizeof((&tp->out_of_order_queue)->rb_node) =3D=3D size= of(char) || sizeof((&tp->out_of_order_queue)->rb_node) =3D=3D sizeof(short)= || sizeof((&tp->out_of_order_queue)->rb_node) =3D=3D sizeof(int) || sizeof= ((&tp->out_of_order_queue)->rb_node) =3D=3D sizeof(long)) || sizeof((&tp->o= ut_of_order_queue)->rb_node) =3D=3D sizeof(long long))) __compiletime_asser= t_588(); } while (0); (*(const volatile typeof( _Generic(((&tp->out_of_orde= r_queue)->rb_node), char: (char)0, unsigned char: (unsigned char)0, signed = char: (signed char)0, unsigned short: (unsigned short)0, signed short: (sig= ned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsi= gned long: (unsigned long)0, signed long: (signed long)0, unsigned long lon= g: (unsigned long long)0, signed long long: (signed long long)0, default: (= (&tp->out_of_order_queue)->rb_node))) *)&((&tp->out_of_order_queue)->rb_nod= e)); }) =3D=3D ((void *)0)) &&=0D tp->rcv_wnd &&=0D atomic_read(&sk->sk_backlog.rmem_alloc) < sk->sk_rcvbuf &&=0D !tp->urg_data)=0D tcp_fast_path_on(tp);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_rto_min(struct sock = *sk)=0D {=0D const struct dst_entry *dst =3D __sk_dst_get(sk);=0D u32 rto_min =3D inet_csk(sk)->icsk_rto_min;=0D =0D if (dst && dst_metric_locked(dst, RTAX_RTO_MIN))=0D rto_min =3D dst_metric_rtt(dst, RTAX_RTO_MIN);=0D return rto_min;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_rto_min_us(struct so= ck *sk)=0D {=0D return jiffies_to_usecs(tcp_rto_min(sk));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_ca_dst_locked(const= struct dst_entry *dst)=0D {=0D return dst_metric_locked(dst, RTAX_CC_ALGO);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_min_rtt(const struct= tcp_sock *tp)=0D {=0D return minmax_get(&tp->rtt_min);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_receive_window(const= struct tcp_sock *tp)=0D {=0D s32 win =3D tp->rcv_wup + tp->rcv_wnd - tp->rcv_nxt;=0D =0D if (win < 0)=0D win =3D 0;=0D return (u32) win;=0D }=0D =0D =0D =0D =0D =0D u32 __tcp_select_window(struct sock *sk);=0D =0D void tcp_send_window_probe(struct sock *sk);=0D # 778 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 tcp_clock_ns(void)=0D {=0D return ktime_get_ns();=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 tcp_clock_us(void)=0D {=0D return div_u64(tcp_clock_ns(), 1000L);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_time_stamp(const str= uct tcp_sock *tp)=0D {=0D return div_u64(tp->tcp_mstamp, 1000000L / 1000);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_ns_to_ts(u64 ns)=0D {=0D return div_u64(ns, 1000000000L / 1000);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_time_stamp_raw(void)= =0D {=0D return tcp_ns_to_ts(tcp_clock_ns());=0D }=0D =0D void tcp_mstamp_refresh(struct tcp_sock *tp);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_stamp_us_delta(u64 t= 1, u64 t0)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((s64)(t1 - t0)) *)1 =3D= =3D (typeof((s64)(0)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)= ((long)((s64)(t1 - t0)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(= *(8 ? ((void *)((long)((s64)(0)) * 0l)) : (int *)8))))), (((s64)(t1 - t0)) = > ((s64)(0)) ? ((s64)(t1 - t0)) : ((s64)(0))), ({ typeof((s64)(t1 - t0)) __= UNIQUE_ID___x589 =3D ((s64)(t1 - t0)); typeof((s64)(0)) __UNIQUE_ID___y590 = =3D ((s64)(0)); ((__UNIQUE_ID___x589) > (__UNIQUE_ID___y590) ? (__UNIQUE_ID= ___x589) : (__UNIQUE_ID___y590)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_skb_timestamp(const = struct sk_buff *skb)=0D {=0D return tcp_ns_to_ts(skb->skb_mstamp_ns);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 tcp_skb_timestamp_us(con= st struct sk_buff *skb)=0D {=0D return div_u64(skb->skb_mstamp_ns, 1000L);=0D }=0D # 844 "./include/net/tcp.h"=0D struct tcp_skb_cb {=0D __u32 seq;=0D __u32 end_seq;=0D union {=0D =0D =0D =0D =0D =0D =0D __u32 tcp_tw_isn;=0D struct {=0D u16 tcp_gso_segs;=0D u16 tcp_gso_size;=0D };=0D };=0D __u8 tcp_flags;=0D =0D __u8 sacked;=0D # 872 "./include/net/tcp.h"=0D __u8 ip_dsfield;=0D __u8 txstamp_ack:1,=0D eor:1,=0D has_rxtstamp:1,=0D unused:5;=0D __u32 ack_seq;=0D union {=0D struct {=0D =0D =0D __u32 is_app_limited:1,=0D delivered_ce:20,=0D unused:11;=0D =0D __u32 delivered;=0D =0D u64 first_tx_mstamp;=0D =0D u64 delivered_mstamp;=0D } tx;=0D union {=0D struct inet_skb_parm h4;=0D =0D struct inet6_skb_parm h6;=0D =0D } header;=0D };=0D };=0D =0D =0D =0D extern const struct inet_connection_sock_af_ops ipv4_specific;=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_v6_iif(const struct = sk_buff *skb)=0D {=0D return ((struct tcp_skb_cb *)&((skb)->cb[0]))->header.h6.iif;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_v6_iif_l3_slave(cons= t struct sk_buff *skb)=0D {=0D bool l3_slave =3D ipv6_l3mdev_skb(((struct tcp_skb_cb *)&((skb)->cb[0]))->= header.h6.flags);=0D =0D return l3_slave ? skb->skb_iif : ((struct tcp_skb_cb *)&((skb)->cb[0]))->h= eader.h6.iif;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_v6_sdif(const struct= sk_buff *skb)=0D {=0D =0D =0D =0D =0D return 0;=0D }=0D =0D extern const struct inet_connection_sock_af_ops ipv6_specific;=0D =0D = ;=0D ;=0D ;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_v4_sdif(struct sk_bu= ff *skb)=0D {=0D =0D =0D =0D =0D return 0;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_skb_pcount(const str= uct sk_buff *skb)=0D {=0D return ((struct tcp_skb_cb *)&((skb)->cb[0]))->tcp_gso_segs;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_skb_pcount_set(stru= ct sk_buff *skb, int segs)=0D {=0D ((struct tcp_skb_cb *)&((skb)->cb[0]))->tcp_gso_segs =3D segs;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_skb_pcount_add(stru= ct sk_buff *skb, int segs)=0D {=0D ((struct tcp_skb_cb *)&((skb)->cb[0]))->tcp_gso_segs +=3D segs;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_skb_mss(const struct= sk_buff *skb)=0D {=0D return ((struct tcp_skb_cb *)&((skb)->cb[0]))->tcp_gso_size;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_skb_can_collapse_to= (const struct sk_buff *skb)=0D {=0D return __builtin_expect(!!(!((struct tcp_skb_cb *)&((skb)->cb[0]))->eor), = 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_skb_can_collapse(co= nst struct sk_buff *to,=0D const struct sk_buff *from)=0D {=0D return __builtin_expect(!!(tcp_skb_can_collapse_to(to) && mptcp_skb_can_co= llapse(to, from) && skb_pure_zcopy_same(to, from)), 1);=0D =0D =0D }=0D =0D =0D enum tcp_ca_event {=0D CA_EVENT_TX_START,=0D CA_EVENT_CWND_RESTART,=0D CA_EVENT_COMPLETE_CWR,=0D CA_EVENT_LOSS,=0D CA_EVENT_ECN_NO_CE,=0D CA_EVENT_ECN_IS_CE,=0D };=0D =0D =0D enum tcp_ca_ack_event_flags {=0D CA_ACK_SLOWPATH =3D (1 << 0),=0D CA_ACK_WIN_UPDATE =3D (1 << 1),=0D CA_ACK_ECE =3D (1 << 2),=0D };=0D # 1018 "./include/net/tcp.h"=0D union tcp_cc_info;=0D =0D struct ack_sample {=0D u32 pkts_acked;=0D s32 rtt_us;=0D u32 in_flight;=0D };=0D # 1034 "./include/net/tcp.h"=0D struct rate_sample {=0D u64 prior_mstamp;=0D u32 prior_delivered;=0D u32 prior_delivered_ce;=0D s32 delivered;=0D s32 delivered_ce;=0D long interval_us;=0D u32 snd_interval_us;=0D u32 rcv_interval_us;=0D long rtt_us;=0D int losses;=0D u32 acked_sacked;=0D u32 prior_in_flight;=0D u32 last_end_seq;=0D bool is_app_limited;=0D bool is_retrans;=0D bool is_ack_delayed;=0D };=0D =0D struct tcp_congestion_ops {=0D =0D =0D =0D u32 (*ssthresh)(struct sock *sk);=0D =0D =0D void (*cong_avoid)(struct sock *sk, u32 ack, u32 acked);=0D =0D =0D void (*set_state)(struct sock *sk, u8 new_state);=0D =0D =0D void (*cwnd_event)(struct sock *sk, enum tcp_ca_event ev);=0D =0D =0D void (*in_ack_event)(struct sock *sk, u32 flags);=0D =0D =0D void (*pkts_acked)(struct sock *sk, const struct ack_sample *sample);=0D =0D =0D u32 (*min_tso_segs)(struct sock *sk);=0D =0D =0D =0D =0D void (*cong_control)(struct sock *sk, const struct rate_sample *rs);=0D =0D =0D =0D u32 (*undo_cwnd)(struct sock *sk);=0D =0D u32 (*sndbuf_expand)(struct sock *sk);=0D =0D =0D =0D size_t (*get_info)(struct sock *sk, u32 ext, int *attr,=0D union tcp_cc_info *info);=0D =0D char name[16];=0D struct module *owner;=0D struct list_head list;=0D u32 key;=0D u32 flags;=0D =0D =0D void (*init)(struct sock *sk);=0D =0D void (*release)(struct sock *sk);=0D } __attribute__((__aligned__((1 << 6))));=0D =0D int tcp_register_congestion_control(struct tcp_congestion_ops *type);=0D void tcp_unregister_congestion_control(struct tcp_congestion_ops *type);=0D =0D void tcp_assign_congestion_control(struct sock *sk);=0D void tcp_init_congestion_control(struct sock *sk);=0D void tcp_cleanup_congestion_control(struct sock *sk);=0D int tcp_set_default_congestion_control(struct net *net, const char *name);= =0D void tcp_get_default_congestion_control(struct net *net, char *name);=0D void tcp_get_available_congestion_control(char *buf, size_t len);=0D void tcp_get_allowed_congestion_control(char *buf, size_t len);=0D int tcp_set_allowed_congestion_control(char *allowed);=0D int tcp_set_congestion_control(struct sock *sk, const char *name, bool load= ,=0D bool cap_net_admin);=0D u32 tcp_slow_start(struct tcp_sock *tp, u32 acked);=0D void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked);=0D =0D u32 tcp_reno_ssthresh(struct sock *sk);=0D u32 tcp_reno_undo_cwnd(struct sock *sk);=0D void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 acked);=0D extern struct tcp_congestion_ops tcp_reno;=0D =0D struct tcp_congestion_ops *tcp_ca_find(const char *name);=0D struct tcp_congestion_ops *tcp_ca_find_key(u32 key);=0D u32 tcp_ca_get_key_by_name(struct net *net, const char *name, bool *ecn_ca)= ;=0D =0D char *tcp_ca_get_name_by_key(u32 key, char *buffer);=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_ca_needs_ecn(const = struct sock *sk)=0D {=0D const struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D return icsk->icsk_ca_ops->flags & 0x2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_set_ca_state(struct= sock *sk, const u8 ca_state)=0D {=0D struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (icsk->icsk_ca_ops->set_state)=0D icsk->icsk_ca_ops->set_state(sk, ca_state);=0D icsk->icsk_ca_state =3D ca_state;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_ca_event(struct soc= k *sk, const enum tcp_ca_event event)=0D {=0D const struct inet_connection_sock *icsk =3D inet_csk(sk);=0D =0D if (icsk->icsk_ca_ops->cwnd_event)=0D icsk->icsk_ca_ops->cwnd_event(sk, event);=0D }=0D =0D =0D void tcp_rate_skb_sent(struct sock *sk, struct sk_buff *skb);=0D void tcp_rate_skb_delivered(struct sock *sk, struct sk_buff *skb,=0D struct rate_sample *rs);=0D void tcp_rate_gen(struct sock *sk, u32 delivered, u32 lost,=0D bool is_sack_reneg, struct rate_sample *rs);=0D void tcp_rate_check_app_limited(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_skb_sent_after(u64 = t1, u64 t2, u32 seq1, u32 seq2)=0D {=0D return t1 > t2 || (t1 =3D=3D t2 && before(seq2, seq1));=0D }=0D # 1182 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_is_sack(const struct= tcp_sock *tp)=0D {=0D return __builtin_expect(!!(tp->rx_opt.sack_ok), 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_is_reno(const struc= t tcp_sock *tp)=0D {=0D return !tcp_is_sack(tp);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tcp_left_out(co= nst struct tcp_sock *tp)=0D {=0D return tp->sacked_out + tp->lost_out;=0D }=0D # 1211 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tcp_packets_in_= flight(const struct tcp_sock *tp)=0D {=0D return tp->packets_out - tcp_left_out(tp) + tp->retrans_out;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_in_slow_start(const= struct tcp_sock *tp)=0D {=0D return tp->snd_cwnd < tp->snd_ssthresh;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_in_initial_slowstar= t(const struct tcp_sock *tp)=0D {=0D return tp->snd_ssthresh >=3D 0x7fffffff;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_in_cwnd_reduction(c= onst struct sock *sk)=0D {=0D return ((1<icsk_ca_state);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 tcp_current_ssthresh(c= onst struct sock *sk)=0D {=0D const struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D if (tcp_in_cwnd_reduction(sk))=0D return tp->snd_ssthresh;=0D else=0D return __builtin_choose_expr(((!!(sizeof((typeof(tp->snd_ssthresh) *)1 = =3D=3D (typeof(((tp->snd_cwnd >> 1) + (tp->snd_cwnd >> 2))) *)1))) && ((siz= eof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(tp->snd_ssthresh) * 0l)) : (i= nt *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(((tp->snd_cw= nd >> 1) + (tp->snd_cwnd >> 2))) * 0l)) : (int *)8))))), ((tp->snd_ssthresh= ) > (((tp->snd_cwnd >> 1) + (tp->snd_cwnd >> 2))) ? (tp->snd_ssthresh) : ((= (tp->snd_cwnd >> 1) + (tp->snd_cwnd >> 2)))), ({ typeof(tp->snd_ssthresh) _= _UNIQUE_ID___x591 =3D (tp->snd_ssthresh); typeof(((tp->snd_cwnd >> 1) + (tp= ->snd_cwnd >> 2))) __UNIQUE_ID___y592 =3D (((tp->snd_cwnd >> 1) + (tp->snd_= cwnd >> 2))); ((__UNIQUE_ID___x591) > (__UNIQUE_ID___y592) ? (__UNIQUE_ID__= _x591) : (__UNIQUE_ID___y592)); }));=0D =0D =0D }=0D =0D =0D =0D =0D void tcp_enter_cwr(struct sock *sk);=0D __u32 tcp_init_cwnd(const struct tcp_sock *tp, const struct dst_entry *dst)= ;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 tcp_max_tso_deferred_m= ss(const struct tcp_sock *tp)=0D {=0D return 3;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_wnd_end(const struct= tcp_sock *tp)=0D {=0D return tp->snd_una + tp->snd_wnd;=0D }=0D # 1283 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_is_cwnd_limited(con= st struct sock *sk)=0D {=0D const struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D =0D if (tcp_in_slow_start(tp))=0D return tp->snd_cwnd < 2 * tp->max_packets_out;=0D =0D return tp->is_cwnd_limited;=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_needs_internal_paci= ng(const struct sock *sk)=0D {=0D return ({ typeof(*&sk->sk_pacing_status) ___p1 =3D ({ do { __attribute__((= __noreturn__)) extern void __compiletime_assert_593(void) ; if (!((sizeof(*= &sk->sk_pacing_status) =3D=3D sizeof(char) || sizeof(*&sk->sk_pacing_status= ) =3D=3D sizeof(short) || sizeof(*&sk->sk_pacing_status) =3D=3D sizeof(int)= || sizeof(*&sk->sk_pacing_status) =3D=3D sizeof(long)) || sizeof(*&sk->sk_= pacing_status) =3D=3D sizeof(long long))) __compiletime_assert_593(); } whi= le (0); (*(const volatile typeof( _Generic((*&sk->sk_pacing_status), char: = (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsi= gned short: (unsigned short)0, signed short: (signed short)0, unsigned int:= (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)= 0, signed long: (signed long)0, unsigned long long: (unsigned long long)0, = signed long long: (signed long long)0, default: (*&sk->sk_pacing_status))) = *)&(*&sk->sk_pacing_status)); }); do { __attribute__((__noreturn__)) extern= void __compiletime_assert_594(void) ; if (!((sizeof(*&sk->sk_pacing_status= ) =3D=3D sizeof(char) || sizeof(*&sk->sk_pacing_status) =3D=3D sizeof(short= ) || sizeof(*&sk->sk_pacing_status) =3D=3D sizeof(int) || sizeof(*&sk->sk_p= acing_status) =3D=3D sizeof(long)))) __compiletime_assert_594(); } while (0= ); __asm__ __volatile__ ("fence " "r" "," "rw" : : : "memory"); ___p1; }) = =3D=3D SK_PACING_NEEDED;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long tcp_pacing_del= ay(const struct sock *sk)=0D {=0D s64 delay =3D tcp_sk(sk)->tcp_wstamp_ns - tcp_sk(sk)->tcp_clock_cache;=0D =0D return delay > 0 ? nsecs_to_jiffies(delay) : 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_reset_xmit_timer(st= ruct sock *sk,=0D const int what,=0D unsigned long when,=0D const unsigned long max_when)=0D {=0D inet_csk_reset_xmit_timer(sk, what, when + tcp_pacing_delay(sk),=0D max_when);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long tcp_probe0_bas= e(const struct sock *sk)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof((unsigned long)(inet_csk(= sk)->icsk_rto)) *)1 =3D=3D (typeof((unsigned long)(((unsigned)(100/5)))) *)= 1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned long)(= inet_csk(sk)->icsk_rto)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof= (*(8 ? ((void *)((long)((unsigned long)(((unsigned)(100/5)))) * 0l)) : (int= *)8))))), (((unsigned long)(inet_csk(sk)->icsk_rto)) > ((unsigned long)(((= unsigned)(100/5)))) ? ((unsigned long)(inet_csk(sk)->icsk_rto)) : ((unsigne= d long)(((unsigned)(100/5))))), ({ typeof((unsigned long)(inet_csk(sk)->ics= k_rto)) __UNIQUE_ID___x595 =3D ((unsigned long)(inet_csk(sk)->icsk_rto)); t= ypeof((unsigned long)(((unsigned)(100/5)))) __UNIQUE_ID___y596 =3D ((unsign= ed long)(((unsigned)(100/5)))); ((__UNIQUE_ID___x595) > (__UNIQUE_ID___y596= ) ? (__UNIQUE_ID___x595) : (__UNIQUE_ID___y596)); }));=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long tcp_probe0_whe= n(const struct sock *sk,=0D unsigned long max_when)=0D {=0D u8 backoff =3D __builtin_choose_expr(((!!(sizeof((typeof((u8)(( __builtin_= constant_p(((unsigned)(120*100)) / ((unsigned)(100/5))) ? ((((unsigned)(120= *100)) / ((unsigned)(100/5))) < 2 ? 0 : 63 - __builtin_clzll(((unsigned)(12= 0*100)) / ((unsigned)(100/5)))) : (sizeof(((unsigned)(120*100)) / ((unsigne= d)(100/5))) <=3D 4) ? __ilog2_u32(((unsigned)(120*100)) / ((unsigned)(100/5= ))) : __ilog2_u64(((unsigned)(120*100)) / ((unsigned)(100/5))) ) + 1)) *)1 = =3D=3D (typeof((u8)(inet_csk(sk)->icsk_backoff)) *)1))) && ((sizeof(int) = =3D=3D sizeof(*(8 ? ((void *)((long)((u8)(( __builtin_constant_p(((unsigned= )(120*100)) / ((unsigned)(100/5))) ? ((((unsigned)(120*100)) / ((unsigned)(= 100/5))) < 2 ? 0 : 63 - __builtin_clzll(((unsigned)(120*100)) / ((unsigned)= (100/5)))) : (sizeof(((unsigned)(120*100)) / ((unsigned)(100/5))) <=3D 4) ?= __ilog2_u32(((unsigned)(120*100)) / ((unsigned)(100/5))) : __ilog2_u64(((u= nsigned)(120*100)) / ((unsigned)(100/5))) ) + 1)) * 0l)) : (int *)8))) && (= sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u8)(inet_csk(sk)->icsk_ba= ckoff)) * 0l)) : (int *)8))))), (((u8)(( __builtin_constant_p(((unsigned)(1= 20*100)) / ((unsigned)(100/5))) ? ((((unsigned)(120*100)) / ((unsigned)(100= /5))) < 2 ? 0 : 63 - __builtin_clzll(((unsigned)(120*100)) / ((unsigned)(10= 0/5)))) : (sizeof(((unsigned)(120*100)) / ((unsigned)(100/5))) <=3D 4) ? __= ilog2_u32(((unsigned)(120*100)) / ((unsigned)(100/5))) : __ilog2_u64(((unsi= gned)(120*100)) / ((unsigned)(100/5))) ) + 1)) < ((u8)(inet_csk(sk)->icsk_b= ackoff)) ? ((u8)(( __builtin_constant_p(((unsigned)(120*100)) / ((unsigned)= (100/5))) ? ((((unsigned)(120*100)) / ((unsigned)(100/5))) < 2 ? 0 : 63 - _= _builtin_clzll(((unsigned)(120*100)) / ((unsigned)(100/5)))) : (sizeof(((un= signed)(120*100)) / ((unsigned)(100/5))) <=3D 4) ? __ilog2_u32(((unsigned)(= 120*100)) / ((unsigned)(100/5))) : __ilog2_u64(((unsigned)(120*100)) / ((un= signed)(100/5))) ) + 1)) : ((u8)(inet_csk(sk)->icsk_backoff))), ({ typeof((= u8)(( __builtin_constant_p(((unsigned)(120*100)) / ((unsigned)(100/5))) ? (= (((unsigned)(120*100)) / ((unsigned)(100/5))) < 2 ? 0 : 63 - __builtin_clzl= l(((unsigned)(120*100)) / ((unsigned)(100/5)))) : (sizeof(((unsigned)(120*1= 00)) / ((unsigned)(100/5))) <=3D 4) ? __ilog2_u32(((unsigned)(120*100)) / (= (unsigned)(100/5))) : __ilog2_u64(((unsigned)(120*100)) / ((unsigned)(100/5= ))) ) + 1)) __UNIQUE_ID___x597 =3D ((u8)(( __builtin_constant_p(((unsigned)= (120*100)) / ((unsigned)(100/5))) ? ((((unsigned)(120*100)) / ((unsigned)(1= 00/5))) < 2 ? 0 : 63 - __builtin_clzll(((unsigned)(120*100)) / ((unsigned)(= 100/5)))) : (sizeof(((unsigned)(120*100)) / ((unsigned)(100/5))) <=3D 4) ? = __ilog2_u32(((unsigned)(120*100)) / ((unsigned)(100/5))) : __ilog2_u64(((un= signed)(120*100)) / ((unsigned)(100/5))) ) + 1)); typeof((u8)(inet_csk(sk)-= >icsk_backoff)) __UNIQUE_ID___y598 =3D ((u8)(inet_csk(sk)->icsk_backoff)); = ((__UNIQUE_ID___x597) < (__UNIQUE_ID___y598) ? (__UNIQUE_ID___x597) : (__UN= IQUE_ID___y598)); }));=0D =0D u64 when =3D (u64)tcp_probe0_base(sk) << backoff;=0D =0D return (unsigned long)__builtin_choose_expr(((!!(sizeof((typeof((u64)(when= )) *)1 =3D=3D (typeof((u64)(max_when)) *)1))) && ((sizeof(int) =3D=3D sizeo= f(*(8 ? ((void *)((long)((u64)(when)) * 0l)) : (int *)8))) && (sizeof(int) = =3D=3D sizeof(*(8 ? ((void *)((long)((u64)(max_when)) * 0l)) : (int *)8))))= ), (((u64)(when)) < ((u64)(max_when)) ? ((u64)(when)) : ((u64)(max_when))),= ({ typeof((u64)(when)) __UNIQUE_ID___x599 =3D ((u64)(when)); typeof((u64)(= max_when)) __UNIQUE_ID___y600 =3D ((u64)(max_when)); ((__UNIQUE_ID___x599) = < (__UNIQUE_ID___y600) ? (__UNIQUE_ID___x599) : (__UNIQUE_ID___y600)); }));= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_check_probe_timer(s= truct sock *sk)=0D {=0D if (!tcp_sk(sk)->packets_out && !inet_csk(sk)->icsk_pending)=0D tcp_reset_xmit_timer(sk, 3,=0D tcp_probe0_base(sk), ((unsigned)(120*100)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_init_wl(struct tcp_= sock *tp, u32 seq)=0D {=0D tp->snd_wl1 =3D seq;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_update_wl(struct tc= p_sock *tp, u32 seq)=0D {=0D tp->snd_wl1 =3D seq;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __sum16 tcp_v4_check(int len= , __be32 saddr,=0D __be32 daddr, __wsum base)=0D {=0D return csum_tcpudp_magic(saddr, daddr, len, IPPROTO_TCP, base);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_checksum_complete(s= truct sk_buff *skb)=0D {=0D return !skb_csum_unnecessary(skb) &&=0D __skb_checksum_complete(skb);=0D }=0D =0D bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb,=0D enum skb_drop_reason *reason);=0D =0D =0D void __sk_defer_free_flush(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void sk_defer_free_flush(str= uct sock *sk)=0D {=0D if (llist_empty(&sk->defer_list))=0D return;=0D __sk_defer_free_flush(sk);=0D }=0D =0D =0D =0D =0D int tcp_filter(struct sock *sk, struct sk_buff *skb);=0D void tcp_set_state(struct sock *sk, int state);=0D void tcp_done(struct sock *sk);=0D int tcp_abort(struct sock *sk, int err);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_sack_reset(struct t= cp_options_received *rx_opt)=0D {=0D rx_opt->dsack =3D 0;=0D rx_opt->num_sacks =3D 0;=0D }=0D =0D void tcp_cwnd_restart(struct sock *sk, s32 delta);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_slow_start_after_id= le_check(struct sock *sk)=0D {=0D const struct tcp_congestion_ops *ca_ops =3D inet_csk(sk)->icsk_ca_ops;=0D struct tcp_sock *tp =3D tcp_sk(sk);=0D s32 delta;=0D =0D if (!sock_net(sk)->ipv4.sysctl_tcp_slow_start_after_idle || tp->packets_ou= t ||=0D ca_ops->cong_control)=0D return;=0D delta =3D ((u32)jiffies) - tp->lsndtime;=0D if (delta > inet_csk(sk)->icsk_rto)=0D tcp_cwnd_restart(sk, delta);=0D }=0D =0D =0D void tcp_select_initial_window(const struct sock *sk, int __space,=0D __u32 mss, __u32 *rcv_wnd,=0D __u32 *window_clamp, int wscale_ok,=0D __u8 *rcv_wscale, __u32 init_rcv_wnd);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_win_from_space(const= struct sock *sk, int space)=0D {=0D int tcp_adv_win_scale =3D sock_net(sk)->ipv4.sysctl_tcp_adv_win_scale;=0D =0D return tcp_adv_win_scale <=3D 0 ?=0D (space>>(-tcp_adv_win_scale)) :=0D space - (space>>tcp_adv_win_scale);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_space(const struct s= ock *sk)=0D {=0D return tcp_win_from_space(sk, ({ do { __attribute__((__noreturn__)) extern= void __compiletime_assert_601(void) ; if (!((sizeof(sk->sk_rcvbuf) =3D=3D = sizeof(char) || sizeof(sk->sk_rcvbuf) =3D=3D sizeof(short) || sizeof(sk->sk= _rcvbuf) =3D=3D sizeof(int) || sizeof(sk->sk_rcvbuf) =3D=3D sizeof(long)) |= | sizeof(sk->sk_rcvbuf) =3D=3D sizeof(long long))) __compiletime_assert_601= (); } while (0); (*(const volatile typeof( _Generic((sk->sk_rcvbuf), char: = (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsi= gned short: (unsigned short)0, signed short: (signed short)0, unsigned int:= (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)= 0, signed long: (signed long)0, unsigned long long: (unsigned long long)0, = signed long long: (signed long long)0, default: (sk->sk_rcvbuf))) *)&(sk->s= k_rcvbuf)); }) -=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_602(void) ; if (!((sizeof(sk->sk_backlog.len) =3D=3D sizeof(char) || size= of(sk->sk_backlog.len) =3D=3D sizeof(short) || sizeof(sk->sk_backlog.len) = =3D=3D sizeof(int) || sizeof(sk->sk_backlog.len) =3D=3D sizeof(long)) || si= zeof(sk->sk_backlog.len) =3D=3D sizeof(long long))) __compiletime_assert_60= 2(); } while (0); (*(const volatile typeof( _Generic((sk->sk_backlog.len), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (sk->sk_backlog.len))= ) *)&(sk->sk_backlog.len)); }) -=0D atomic_read(&sk->sk_backlog.rmem_alloc));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_full_space(const str= uct sock *sk)=0D {=0D return tcp_win_from_space(sk, ({ do { __attribute__((__noreturn__)) extern= void __compiletime_assert_603(void) ; if (!((sizeof(sk->sk_rcvbuf) =3D=3D = sizeof(char) || sizeof(sk->sk_rcvbuf) =3D=3D sizeof(short) || sizeof(sk->sk= _rcvbuf) =3D=3D sizeof(int) || sizeof(sk->sk_rcvbuf) =3D=3D sizeof(long)) |= | sizeof(sk->sk_rcvbuf) =3D=3D sizeof(long long))) __compiletime_assert_603= (); } while (0); (*(const volatile typeof( _Generic((sk->sk_rcvbuf), char: = (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsi= gned short: (unsigned short)0, signed short: (signed short)0, unsigned int:= (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)= 0, signed long: (signed long)0, unsigned long long: (unsigned long long)0, = signed long long: (signed long long)0, default: (sk->sk_rcvbuf))) *)&(sk->s= k_rcvbuf)); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_adjust_rcv_ssthresh= (struct sock *sk)=0D {=0D int unused_mem =3D sk_unused_reserved_mem(sk);=0D struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D tp->rcv_ssthresh =3D __builtin_choose_expr(((!!(sizeof((typeof(tp->rcv_sst= hresh) *)1 =3D=3D (typeof(4U * tp->advmss) *)1))) && ((sizeof(int) =3D=3D s= izeof(*(8 ? ((void *)((long)(tp->rcv_ssthresh) * 0l)) : (int *)8))) && (siz= eof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(4U * tp->advmss) * 0l)) : (in= t *)8))))), ((tp->rcv_ssthresh) < (4U * tp->advmss) ? (tp->rcv_ssthresh) : = (4U * tp->advmss)), ({ typeof(tp->rcv_ssthresh) __UNIQUE_ID___x604 =3D (tp-= >rcv_ssthresh); typeof(4U * tp->advmss) __UNIQUE_ID___y605 =3D (4U * tp->ad= vmss); ((__UNIQUE_ID___x604) < (__UNIQUE_ID___y605) ? (__UNIQUE_ID___x604) = : (__UNIQUE_ID___y605)); }));=0D if (unused_mem)=0D tp->rcv_ssthresh =3D __builtin_choose_expr(((!!(sizeof((typeof((u32)(tp->= rcv_ssthresh)) *)1 =3D=3D (typeof((u32)(tcp_win_from_space(sk, unused_mem))= ) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(tp->rc= v_ssthresh)) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((voi= d *)((long)((u32)(tcp_win_from_space(sk, unused_mem))) * 0l)) : (int *)8)))= )), (((u32)(tp->rcv_ssthresh)) > ((u32)(tcp_win_from_space(sk, unused_mem))= ) ? ((u32)(tp->rcv_ssthresh)) : ((u32)(tcp_win_from_space(sk, unused_mem)))= ), ({ typeof((u32)(tp->rcv_ssthresh)) __UNIQUE_ID___x606 =3D ((u32)(tp->rcv= _ssthresh)); typeof((u32)(tcp_win_from_space(sk, unused_mem))) __UNIQUE_ID_= __y607 =3D ((u32)(tcp_win_from_space(sk, unused_mem))); ((__UNIQUE_ID___x60= 6) > (__UNIQUE_ID___y607) ? (__UNIQUE_ID___x606) : (__UNIQUE_ID___y607)); }= ));=0D =0D }=0D =0D void tcp_cleanup_rbuf(struct sock *sk, int copied);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_rmem_pressure(const= struct sock *sk)=0D {=0D int rcvbuf, threshold;=0D =0D if (tcp_under_memory_pressure(sk))=0D return true;=0D =0D rcvbuf =3D ({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_608(void) ; if (!((sizeof(sk->sk_rcvbuf) =3D=3D sizeof(char) || siz= eof(sk->sk_rcvbuf) =3D=3D sizeof(short) || sizeof(sk->sk_rcvbuf) =3D=3D siz= eof(int) || sizeof(sk->sk_rcvbuf) =3D=3D sizeof(long)) || sizeof(sk->sk_rcv= buf) =3D=3D sizeof(long long))) __compiletime_assert_608(); } while (0); (*= (const volatile typeof( _Generic((sk->sk_rcvbuf), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: (sk->sk_rcvbuf))) *)&(sk->sk_rcvbuf)); });=0D threshold =3D rcvbuf - (rcvbuf >> 3);=0D =0D return atomic_read(&sk->sk_backlog.rmem_alloc) > threshold;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_epollin_ready(const= struct sock *sk, int target)=0D {=0D const struct tcp_sock *tp =3D tcp_sk(sk);=0D int avail =3D ({ do { __attribute__((__noreturn__)) extern void __compilet= ime_assert_609(void) ; if (!((sizeof(tp->rcv_nxt) =3D=3D sizeof(char) || si= zeof(tp->rcv_nxt) =3D=3D sizeof(short) || sizeof(tp->rcv_nxt) =3D=3D sizeof= (int) || sizeof(tp->rcv_nxt) =3D=3D sizeof(long)) || sizeof(tp->rcv_nxt) = =3D=3D sizeof(long long))) __compiletime_assert_609(); } while (0); (*(cons= t volatile typeof( _Generic((tp->rcv_nxt), char: (char)0, unsigned char: (u= nsigned char)0, signed char: (signed char)0, unsigned short: (unsigned shor= t)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed i= nt: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lo= ng)0, unsigned long long: (unsigned long long)0, signed long long: (signed = long long)0, default: (tp->rcv_nxt))) *)&(tp->rcv_nxt)); }) - ({ do { __att= ribute__((__noreturn__)) extern void __compiletime_assert_610(void) ; if (!= ((sizeof(tp->copied_seq) =3D=3D sizeof(char) || sizeof(tp->copied_seq) =3D= =3D sizeof(short) || sizeof(tp->copied_seq) =3D=3D sizeof(int) || sizeof(tp= ->copied_seq) =3D=3D sizeof(long)) || sizeof(tp->copied_seq) =3D=3D sizeof(= long long))) __compiletime_assert_610(); } while (0); (*(const volatile typ= eof( _Generic((tp->copied_seq), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (tp->copied_seq))) *)&(tp->copied_seq)); });=0D =0D if (avail <=3D 0)=0D return false;=0D =0D return (avail >=3D target) || tcp_rmem_pressure(sk) ||=0D (tcp_receive_window(tp) <=3D inet_csk(sk)->icsk_ack.rcv_mss);=0D }=0D =0D extern void tcp_openreq_init_rwin(struct request_sock *req,=0D const struct sock *sk_listener,=0D const struct dst_entry *dst);=0D =0D void tcp_enter_memory_pressure(struct sock *sk);=0D void tcp_leave_memory_pressure(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int keepalive_intvl_when(con= st struct tcp_sock *tp)=0D {=0D struct net *net =3D sock_net((struct sock *)tp);=0D =0D return tp->keepalive_intvl ? : net->ipv4.sysctl_tcp_keepalive_intvl;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int keepalive_time_when(cons= t struct tcp_sock *tp)=0D {=0D struct net *net =3D sock_net((struct sock *)tp);=0D =0D return tp->keepalive_time ? : net->ipv4.sysctl_tcp_keepalive_time;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int keepalive_probes(const s= truct tcp_sock *tp)=0D {=0D struct net *net =3D sock_net((struct sock *)tp);=0D =0D return tp->keepalive_probes ? : net->ipv4.sysctl_tcp_keepalive_probes;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 keepalive_time_elapsed(c= onst struct tcp_sock *tp)=0D {=0D const struct inet_connection_sock *icsk =3D &tp->inet_conn;=0D =0D return __builtin_choose_expr(((!!(sizeof((typeof((u32)(((u32)jiffies) - ic= sk->icsk_ack.lrcvtime)) *)1 =3D=3D (typeof((u32)(((u32)jiffies) - tp->rcv_t= stamp)) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(= ((u32)jiffies) - icsk->icsk_ack.lrcvtime)) * 0l)) : (int *)8))) && (sizeof(= int) =3D=3D sizeof(*(8 ? ((void *)((long)((u32)(((u32)jiffies) - tp->rcv_ts= tamp)) * 0l)) : (int *)8))))), (((u32)(((u32)jiffies) - icsk->icsk_ack.lrcv= time)) < ((u32)(((u32)jiffies) - tp->rcv_tstamp)) ? ((u32)(((u32)jiffies) -= icsk->icsk_ack.lrcvtime)) : ((u32)(((u32)jiffies) - tp->rcv_tstamp))), ({ = typeof((u32)(((u32)jiffies) - icsk->icsk_ack.lrcvtime)) __UNIQUE_ID___x611 = =3D ((u32)(((u32)jiffies) - icsk->icsk_ack.lrcvtime)); typeof((u32)(((u32)j= iffies) - tp->rcv_tstamp)) __UNIQUE_ID___y612 =3D ((u32)(((u32)jiffies) - t= p->rcv_tstamp)); ((__UNIQUE_ID___x611) < (__UNIQUE_ID___y612) ? (__UNIQUE_I= D___x611) : (__UNIQUE_ID___y612)); }));=0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_fin_time(const struc= t sock *sk)=0D {=0D int fin_timeout =3D tcp_sk(sk)->linger2 ? : sock_net(sk)->ipv4.sysctl_tcp_= fin_timeout;=0D const int rto =3D inet_csk(sk)->icsk_rto;=0D =0D if (fin_timeout < (rto << 2) - (rto >> 1))=0D fin_timeout =3D (rto << 2) - (rto >> 1);=0D =0D return fin_timeout;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_paws_check(const st= ruct tcp_options_received *rx_opt,=0D int paws_win)=0D {=0D if ((s32)(rx_opt->ts_recent - rx_opt->rcv_tsval) <=3D paws_win)=0D return true;=0D if (__builtin_expect(!!(!((s32)((u32)(ktime_get_seconds()) - (u32)(rx_opt-= >ts_recent_stamp + (60 * 60 * 24 * 24))) < 0)), 0))=0D =0D return true;=0D =0D =0D =0D =0D =0D if (!rx_opt->ts_recent)=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_paws_reject(const s= truct tcp_options_received *rx_opt,=0D int rst)=0D {=0D if (tcp_paws_check(rx_opt, 0))=0D return false;=0D # 1575 "./include/net/tcp.h"=0D if (rst && !((s32)((u32)(ktime_get_seconds()) - (u32)(rx_opt->ts_recent_st= amp + 60)) < 0))=0D =0D return false;=0D return true;=0D }=0D =0D bool tcp_oow_rate_limited(struct net *net, const struct sk_buff *skb,=0D int mib_idx, u32 *last_oow_ack_time);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_mib_init(struct net= *net)=0D {=0D =0D do { do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistic= s->mibs[TCP_MIB_RTOALGORITHM])) + 0))((void *)0); (void)__vpp_verify; } whi= le (0); switch(sizeof((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM]= )) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typ= eof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM])) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_= MIB_RTOALGORITHM]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORI= THM]))); (typeof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALG= ORITHM]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM])))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__fla= gs) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); a= rch_local_irq_restore(__flags); } while (0); } while (0);break; case 2: do = { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __d= ummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq= _save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&= ((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM])) + 0))((void *)0); = (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigne= d long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM])= )) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM]))); (typeof((= typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM]))) *)(&((n= et)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM])))) (__ptr + (((__per_c= pu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1;= } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (voi= d)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_rest= ore(__flags); } while (0); } while (0);break; case 4: do { unsigned long __= flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__d= ummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (= 0); do { *({ do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_st= atistics->mibs[TCP_MIB_RTOALGORITHM])) + 0))((void *)0); (void)__vpp_verify= ; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*= (&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM]))) *)(&((net)->mib= =2Etcp_statistics->mibs[TCP_MIB_RTOALGORITHM]))); (typeof((typeof(*(&((net)= ->mib.tcp_statistics->mibs[TCP_MIB_RTOALGORITHM]))) *)(&((net)->mib.tcp_sta= tistics->mibs[TCP_MIB_RTOALGORITHM])))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 8: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[= TCP_MIB_RTOALGORITHM])) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.t= cp_statistics->mibs[TCP_MIB_RTOALGORITHM]))) *)(&((net)->mib.tcp_statistics= ->mibs[TCP_MIB_RTOALGORITHM]))); (typeof((typeof(*(&((net)->mib.tcp_statist= ics->mibs[TCP_MIB_RTOALGORITHM]))) *)(&((net)->mib.tcp_statistics->mibs[TCP= _MIB_RTOALGORITHM])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *= )get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned lo= ng __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1;= }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whil= e (0);break; default: __bad_size_call_parameter();break; } } while (0);=0D do { do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistic= s->mibs[TCP_MIB_RTOMIN])) + 0))((void *)0); (void)__vpp_verify; } while (0)= ; switch(sizeof((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN])) { case 1:= do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local= _irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeo= f((&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN])) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))) *)(&(= (net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))); (typeof((typeof(*(&((ne= t)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))) *)(&((net)->mib.tcp_statist= ics->mibs[TCP_MIB_RTOMIN])))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); }) +=3D ((unsigned)(100/5))*1000/100= ; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (vo= id)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_res= tore(__flags); } while (0); } while (0);break; case 2: do { unsigned long _= _flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while = (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_s= tatistics->mibs[TCP_MIB_RTOMIN])) + 0))((void *)0); (void)__vpp_verify; } w= hile (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((n= et)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))) *)(&((net)->mib.tcp_statis= tics->mibs[TCP_MIB_RTOMIN]))); (typeof((typeof(*(&((net)->mib.tcp_statistic= s->mibs[TCP_MIB_RTOMIN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTO= MIN])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current()= )->cpu)])))); }); }) +=3D ((unsigned)(100/5))*1000/100; } while (0); do { (= { unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &= __dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } whil= e (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { co= nst void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP_M= IB_RTOMIN])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned= long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_statisti= cs->mibs[TCP_MIB_RTOMIN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RT= OMIN]))); (typeof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMI= N]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN])))) (__ptr + (((= __per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) = +=3D ((unsigned)(100/5))*1000/100; } while (0); do { ({ unsigned long __dum= my; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do = { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);br= eak; case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typ= eof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN])) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RT= OMIN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))); (typeof((= typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMIN]))) *)(&((net)->m= ib.tcp_statistics->mibs[TCP_MIB_RTOMIN])))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); }) +=3D ((unsigned)(10= 0/5))*1000/100; } while (0); do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch= _local_irq_restore(__flags); } while (0); } while (0);break; default: __bad= _size_call_parameter();break; } } while (0);=0D do { do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistic= s->mibs[TCP_MIB_RTOMAX])) + 0))((void *)0); (void)__vpp_verify; } while (0)= ; switch(sizeof((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX])) { case 1:= do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local= _irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeo= f((&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX])) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned = long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))) *)(&(= (net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))); (typeof((typeof(*(&((ne= t)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))) *)(&((net)->mib.tcp_statist= ics->mibs[TCP_MIB_RTOMAX])))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); }) +=3D ((unsigned)(120*100))*1000/1= 00; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_r= estore(__flags); } while (0); } while (0);break; case 2: do { unsigned long= __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&= __dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } whil= e (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp= _statistics->mibs[TCP_MIB_RTOMAX])) + 0))((void *)0); (void)__vpp_verify; }= while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(= (net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))) *)(&((net)->mib.tcp_stat= istics->mibs[TCP_MIB_RTOMAX]))); (typeof((typeof(*(&((net)->mib.tcp_statist= ics->mibs[TCP_MIB_RTOMAX]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_R= TOMAX])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current= ())->cpu)])))); }); }) +=3D ((unsigned)(120*100))*1000/100; } while (0); do= { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; case 4: do { unsigned long __flags; do { ({ = unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__= dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do= { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[= TCP_MIB_RTOMAX])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ uns= igned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_sta= tistics->mibs[TCP_MIB_RTOMAX]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_M= IB_RTOMAX]))); (typeof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_= RTOMAX]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX])))) (__ptr = + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); })= ; }) +=3D ((unsigned)(120*100))*1000/100; } while (0); do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } while= (0);break; case 8: do { unsigned long __flags; do { ({ unsigned long __dum= my; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __f= lags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vp= p_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX])) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_M= IB_RTOMAX]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))); (typ= eof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX]))) *)(&((ne= t)->mib.tcp_statistics->mibs[TCP_MIB_RTOMAX])))) (__ptr + (((__per_cpu_offs= et[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D ((unsigne= d)(120*100))*1000/100; } while (0); do { ({ unsigned long __dummy; typeof(_= _flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0= ); arch_local_irq_restore(__flags); } while (0); } while (0);break; default= : __bad_size_call_parameter();break; } } while (0);=0D do { do { const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistic= s->mibs[TCP_MIB_MAXCONN])) + 0))((void *)0); (void)__vpp_verify; } while (0= ); switch(sizeof((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])) { case = 1: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flag= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_loc= al_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typ= eof((&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))) *= )(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))); (typeof((typeof(*(= &((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))) *)(&((net)->mib.tcp_s= tatistics->mibs[TCP_MIB_MAXCONN])))) (__ptr + (((__per_cpu_offset[(((struct= thread_info *)get_current())->cpu)])))); }); }) +=3D -1; } while (0); do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } wh= ile (0); } while (0);break; case 2: do { unsigned long __flags; do { ({ uns= igned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dum= my2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { = const void *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP= _MIB_MAXCONN])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_stati= stics->mibs[TCP_MIB_MAXCONN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MI= B_MAXCONN]))); (typeof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_= MAXCONN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])))) (__pt= r + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); = }); }) +=3D -1; } while (0); do { ({ unsigned long __dummy; typeof(__flags)= __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch= _local_irq_restore(__flags); } while (0); } while (0);break; case 4: do { u= nsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dumm= y2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_sa= ve(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((n= et)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))) *)(&((net)= ->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))); (typeof((typeof(*(&((net)->= mib.tcp_statistics->mibs[TCP_MIB_MAXCONN]))) *)(&((net)->mib.tcp_statistics= ->mibs[TCP_MIB_MAXCONN])))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); }) +=3D -1; } while (0); do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); = } while (0);break; case 8: do { unsigned long __flags; do { ({ unsigned lon= g __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; = }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const voi= d *__vpp_verify =3D (typeof((&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXC= ONN])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long = __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.tcp_statistics->mi= bs[TCP_MIB_MAXCONN]))) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN= ]))); (typeof((typeof(*(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])= )) *)(&((net)->mib.tcp_statistics->mibs[TCP_MIB_MAXCONN])))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D -1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy= 2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_i= rq_restore(__flags); } while (0); } while (0);break; default: __bad_size_ca= ll_parameter();break; } } while (0);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_clear_retrans_hints= _partial(struct tcp_sock *tp)=0D {=0D tp->lost_skb_hint =3D ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_clear_all_retrans_h= ints(struct tcp_sock *tp)=0D {=0D tcp_clear_retrans_hints_partial(tp);=0D tp->retransmit_skb_hint =3D ((void *)0);=0D }=0D =0D union tcp_md5_addr {=0D struct in_addr a4;=0D =0D struct in6_addr a6;=0D =0D };=0D =0D =0D struct tcp_md5sig_key {=0D struct hlist_node node;=0D u8 keylen;=0D u8 family;=0D u8 prefixlen;=0D u8 flags;=0D union tcp_md5_addr addr;=0D int l3index;=0D u8 key[80];=0D struct callback_head rcu;=0D };=0D =0D =0D struct tcp_md5sig_info {=0D struct hlist_head head;=0D struct callback_head rcu;=0D };=0D =0D =0D struct tcp4_pseudohdr {=0D __be32 saddr;=0D __be32 daddr;=0D __u8 pad;=0D __u8 protocol;=0D __be16 len;=0D };=0D =0D struct tcp6_pseudohdr {=0D struct in6_addr saddr;=0D struct in6_addr daddr;=0D __be32 len;=0D __be32 protocol;=0D };=0D =0D union tcp_md5sum_block {=0D struct tcp4_pseudohdr ip4;=0D =0D struct tcp6_pseudohdr ip6;=0D =0D };=0D =0D =0D struct tcp_md5sig_pool {=0D struct ahash_request *md5_req;=0D void *scratch;=0D };=0D =0D =0D int tcp_v4_md5_hash_skb(char *md5_hash, const struct tcp_md5sig_key *key,=0D const struct sock *sk, const struct sk_buff *skb);=0D int tcp_md5_do_add(struct sock *sk, const union tcp_md5_addr *addr,=0D int family, u8 prefixlen, int l3index, u8 flags,=0D const u8 *newkey, u8 newkeylen, gfp_t gfp);=0D int tcp_md5_do_del(struct sock *sk, const union tcp_md5_addr *addr,=0D int family, u8 prefixlen, int l3index, u8 flags);=0D struct tcp_md5sig_key *tcp_v4_md5_lookup(const struct sock *sk,=0D const struct sock *addr_sk);=0D # 1694 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tcp_md5sig_key *=0D tcp_md5_do_lookup(const struct sock *sk, int l3index,=0D const union tcp_md5_addr *addr, int family)=0D {=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) enum skb_drop_reason=0D tcp_inbound_md5_hash(const struct sock *sk, const struct sk_buff *skb,=0D const void *saddr, const void *daddr,=0D int family, int dif, int sdif)=0D {=0D return SKB_NOT_DROPPED_YET;=0D }=0D =0D =0D =0D bool tcp_alloc_md5sig_pool(void);=0D =0D struct tcp_md5sig_pool *tcp_get_md5sig_pool(void);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_put_md5sig_pool(voi= d)=0D {=0D local_bh_enable();=0D }=0D =0D int tcp_md5_hash_skb_data(struct tcp_md5sig_pool *, const struct sk_buff *,= =0D unsigned int header_len);=0D int tcp_md5_hash_key(struct tcp_md5sig_pool *hp,=0D const struct tcp_md5sig_key *key);=0D =0D =0D void tcp_fastopen_cache_get(struct sock *sk, u16 *mss,=0D struct tcp_fastopen_cookie *cookie);=0D void tcp_fastopen_cache_set(struct sock *sk, u16 mss,=0D struct tcp_fastopen_cookie *cookie, bool syn_lost,=0D u16 try_exp);=0D struct tcp_fastopen_request {=0D =0D struct tcp_fastopen_cookie cookie;=0D struct msghdr *data;=0D size_t size;=0D int copied;=0D struct ubuf_info *uarg;=0D };=0D void tcp_free_fastopen_req(struct tcp_sock *tp);=0D void tcp_fastopen_destroy_cipher(struct sock *sk);=0D void tcp_fastopen_ctx_destroy(struct net *net);=0D int tcp_fastopen_reset_cipher(struct net *net, struct sock *sk,=0D void *primary_key, void *backup_key);=0D int tcp_fastopen_get_cipher(struct net *net, struct inet_connection_sock *i= csk,=0D u64 *key);=0D void tcp_fastopen_add_skb(struct sock *sk, struct sk_buff *skb);=0D struct sock *tcp_try_fastopen(struct sock *sk, struct sk_buff *skb,=0D struct request_sock *req,=0D struct tcp_fastopen_cookie *foc,=0D const struct dst_entry *dst);=0D void tcp_fastopen_init_key_once(struct net *net);=0D bool tcp_fastopen_cookie_check(struct sock *sk, u16 *mss,=0D struct tcp_fastopen_cookie *cookie);=0D bool tcp_fastopen_defer_connect(struct sock *sk, int *err);=0D =0D =0D =0D =0D =0D =0D struct tcp_fastopen_context {=0D siphash_key_t key[2];=0D int num;=0D struct callback_head rcu;=0D };=0D =0D void tcp_fastopen_active_disable(struct sock *sk);=0D bool tcp_fastopen_active_should_disable(struct sock *sk);=0D void tcp_fastopen_active_disable_ofo_check(struct sock *sk);=0D void tcp_fastopen_active_detect_blackhole(struct sock *sk, bool expired);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D struct tcp_fastopen_context *tcp_fastopen_get_ctx(const struct sock *sk)=0D {=0D struct tcp_fastopen_context *ctx;=0D =0D ctx =3D ({ typeof(*(inet_csk(sk)->icsk_accept_queue.fastopenq.ctx)) *__UNI= QUE_ID_rcu613 =3D (typeof(*(inet_csk(sk)->icsk_accept_queue.fastopenq.ctx))= *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_6= 14(void) ; if (!((sizeof((inet_csk(sk)->icsk_accept_queue.fastopenq.ctx)) = =3D=3D sizeof(char) || sizeof((inet_csk(sk)->icsk_accept_queue.fastopenq.ct= x)) =3D=3D sizeof(short) || sizeof((inet_csk(sk)->icsk_accept_queue.fastope= nq.ctx)) =3D=3D sizeof(int) || sizeof((inet_csk(sk)->icsk_accept_queue.fast= openq.ctx)) =3D=3D sizeof(long)) || sizeof((inet_csk(sk)->icsk_accept_queue= =2Efastopenq.ctx)) =3D=3D sizeof(long long))) __compiletime_assert_614(); }= while (0); (*(const volatile typeof( _Generic(((inet_csk(sk)->icsk_accept_= queue.fastopenq.ctx)), char: (char)0, unsigned char: (unsigned char)0, sign= ed char: (signed char)0, unsigned short: (unsigned short)0, signed short: (= signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, u= nsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long = long: (unsigned long long)0, signed long long: (signed long long)0, default= : ((inet_csk(sk)->icsk_accept_queue.fastopenq.ctx)))) *)&((inet_csk(sk)->ic= sk_accept_queue.fastopenq.ctx))); }); do { } while (0 && (!((0) || rcu_read= _lock_held()))); ; ((typeof(*(inet_csk(sk)->icsk_accept_queue.fastopenq.ctx= )) *)(__UNIQUE_ID_rcu613)); });=0D if (!ctx)=0D ctx =3D ({ typeof(*(sock_net(sk)->ipv4.tcp_fastopen_ctx)) *__UNIQUE_ID_rc= u615 =3D (typeof(*(sock_net(sk)->ipv4.tcp_fastopen_ctx)) *)({ do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_616(void) ; if (!((s= izeof((sock_net(sk)->ipv4.tcp_fastopen_ctx)) =3D=3D sizeof(char) || sizeof(= (sock_net(sk)->ipv4.tcp_fastopen_ctx)) =3D=3D sizeof(short) || sizeof((sock= _net(sk)->ipv4.tcp_fastopen_ctx)) =3D=3D sizeof(int) || sizeof((sock_net(sk= )->ipv4.tcp_fastopen_ctx)) =3D=3D sizeof(long)) || sizeof((sock_net(sk)->ip= v4.tcp_fastopen_ctx)) =3D=3D sizeof(long long))) __compiletime_assert_616()= ; } while (0); (*(const volatile typeof( _Generic(((sock_net(sk)->ipv4.tcp_= fastopen_ctx)), char: (char)0, unsigned char: (unsigned char)0, signed char= : (signed char)0, unsigned short: (unsigned short)0, signed short: (signed = short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned= long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (= unsigned long long)0, signed long long: (signed long long)0, default: ((soc= k_net(sk)->ipv4.tcp_fastopen_ctx)))) *)&((sock_net(sk)->ipv4.tcp_fastopen_c= tx))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof= (*(sock_net(sk)->ipv4.tcp_fastopen_ctx)) *)(__UNIQUE_ID_rcu615)); });=0D return ctx;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D bool tcp_fastopen_cookie_match(const struct tcp_fastopen_cookie *foc,=0D const struct tcp_fastopen_cookie *orig)=0D {=0D if (orig->len =3D=3D 8 &&=0D orig->len =3D=3D foc->len &&=0D !memcmp(orig->val, foc->val, foc->len))=0D return true;=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D int tcp_fastopen_context_len(const struct tcp_fastopen_context *ctx)=0D {=0D return ctx->num;=0D }=0D =0D =0D =0D =0D enum tcp_chrono {=0D TCP_CHRONO_UNSPEC,=0D TCP_CHRONO_BUSY,=0D TCP_CHRONO_RWND_LIMITED,=0D TCP_CHRONO_SNDBUF_LIMITED,=0D __TCP_CHRONO_MAX,=0D };=0D =0D void tcp_chrono_start(struct sock *sk, const enum tcp_chrono type);=0D void tcp_chrono_stop(struct sock *sk, const enum tcp_chrono type);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_skb_tsorted_anchor_= cleanup(struct sk_buff *skb)=0D {=0D skb->destructor =3D ((void *)0);=0D skb->_skb_refdst =3D 0UL;=0D }=0D # 1831 "./include/net/tcp.h"=0D void tcp_write_queue_purge(struct sock *sk);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *tcp_rtx_queu= e_head(const struct sock *sk)=0D {=0D return ({ typeof(rb_first(&sk->tcp_rtx_queue)) ____ptr =3D (rb_first(&sk->= tcp_rtx_queue)); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((struct sk_b= uff *)0)->rbnode)) || __builtin_types_compatible_p(typeof(*(____ptr)), type= of(void)), "pointer type mismatch in container_of()"); ((struct sk_buff *)(= __mptr - __builtin_offsetof(struct sk_buff, rbnode))); }) : ((void *)0); })= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *tcp_rtx_queu= e_tail(const struct sock *sk)=0D {=0D return ({ typeof(rb_last(&sk->tcp_rtx_queue)) ____ptr =3D (rb_last(&sk->tc= p_rtx_queue)); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_ass= ert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((struct sk_buf= f *)0)->rbnode)) || __builtin_types_compatible_p(typeof(*(____ptr)), typeof= (void)), "pointer type mismatch in container_of()"); ((struct sk_buff *)(__= mptr - __builtin_offsetof(struct sk_buff, rbnode))); }) : ((void *)0); });= =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *tcp_write_qu= eue_tail(const struct sock *sk)=0D {=0D return skb_peek_tail(&sk->sk_write_queue);=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *tcp_send_hea= d(const struct sock *sk)=0D {=0D return skb_peek(&sk->sk_write_queue);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_skb_is_last(const s= truct sock *sk,=0D const struct sk_buff *skb)=0D {=0D return skb_queue_is_last(&sk->sk_write_queue, skb);=0D }=0D # 1869 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_write_queue_empty(c= onst struct sock *sk)=0D {=0D const struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D return tp->write_seq =3D=3D tp->snd_nxt;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_rtx_queue_empty(con= st struct sock *sk)=0D {=0D return (({ do { __attribute__((__noreturn__)) extern void __compiletime_as= sert_617(void) ; if (!((sizeof((&sk->tcp_rtx_queue)->rb_node) =3D=3D sizeof= (char) || sizeof((&sk->tcp_rtx_queue)->rb_node) =3D=3D sizeof(short) || siz= eof((&sk->tcp_rtx_queue)->rb_node) =3D=3D sizeof(int) || sizeof((&sk->tcp_r= tx_queue)->rb_node) =3D=3D sizeof(long)) || sizeof((&sk->tcp_rtx_queue)->rb= _node) =3D=3D sizeof(long long))) __compiletime_assert_617(); } while (0); = (*(const volatile typeof( _Generic(((&sk->tcp_rtx_queue)->rb_node), char: (= char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsig= ned short: (unsigned short)0, signed short: (signed short)0, unsigned int: = (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0= , signed long: (signed long)0, unsigned long long: (unsigned long long)0, s= igned long long: (signed long long)0, default: ((&sk->tcp_rtx_queue)->rb_no= de))) *)&((&sk->tcp_rtx_queue)->rb_node)); }) =3D=3D ((void *)0));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_rtx_and_write_queue= s_empty(const struct sock *sk)=0D {=0D return tcp_rtx_queue_empty(sk) && tcp_write_queue_empty(sk);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_add_write_queue_tai= l(struct sock *sk, struct sk_buff *skb)=0D {=0D __skb_queue_tail(&sk->sk_write_queue, skb);=0D =0D =0D if (sk->sk_write_queue.next =3D=3D skb)=0D tcp_chrono_start(sk, TCP_CHRONO_BUSY);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_insert_write_queue_= before(struct sk_buff *new,=0D struct sk_buff *skb,=0D struct sock *sk)=0D {=0D __skb_queue_before(&sk->sk_write_queue, skb, new);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_unlink_write_queue(= struct sk_buff *skb, struct sock *sk)=0D {=0D tcp_skb_tsorted_anchor_cleanup(skb);=0D __skb_unlink(skb, &sk->sk_write_queue);=0D }=0D =0D void tcp_rbtree_insert(struct rb_root *root, struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_rtx_queue_unlink(st= ruct sk_buff *skb, struct sock *sk)=0D {=0D tcp_skb_tsorted_anchor_cleanup(skb);=0D rb_erase(&skb->rbnode, &sk->tcp_rtx_queue);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_rtx_queue_unlink_an= d_free(struct sk_buff *skb, struct sock *sk)=0D {=0D list_del(&skb->tcp_tsorted_anchor);=0D tcp_rtx_queue_unlink(skb, sk);=0D tcp_wmem_free_skb(sk, skb);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_push_pending_frames= (struct sock *sk)=0D {=0D if (tcp_send_head(sk)) {=0D struct tcp_sock *tp =3D tcp_sk(sk);=0D =0D __tcp_push_pending_frames(sk, tcp_current_mss(sk), tp->nonagle);=0D }=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_highest_sack_seq(str= uct tcp_sock *tp)=0D {=0D if (!tp->sacked_out)=0D return tp->snd_una;=0D =0D if (tp->highest_sack =3D=3D ((void *)0))=0D return tp->snd_nxt;=0D =0D return ((struct tcp_skb_cb *)&((tp->highest_sack)->cb[0]))->seq;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_advance_highest_sac= k(struct sock *sk, struct sk_buff *skb)=0D {=0D tcp_sk(sk)->highest_sack =3D ({ typeof(rb_next(&(skb)->rbnode)) ____ptr = =3D (rb_next(&(skb)->rbnode)); ____ptr ? ({ void *__mptr =3D (void *)(____p= tr); _Static_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof= (((struct sk_buff *)0)->rbnode)) || __builtin_types_compatible_p(typeof(*(_= ___ptr)), typeof(void)), "pointer type mismatch in container_of()"); ((stru= ct sk_buff *)(__mptr - __builtin_offsetof(struct sk_buff, rbnode))); }) : (= (void *)0); });=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *tcp_highest_= sack(struct sock *sk)=0D {=0D return tcp_sk(sk)->highest_sack;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_highest_sack_reset(= struct sock *sk)=0D {=0D tcp_sk(sk)->highest_sack =3D tcp_rtx_queue_head(sk);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_highest_sack_replac= e(struct sock *sk,=0D struct sk_buff *old,=0D struct sk_buff *new)=0D {=0D if (old =3D=3D tcp_highest_sack(sk))=0D tcp_sk(sk)->highest_sack =3D new;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool inet_sk_transparent(con= st struct sock *sk)=0D {=0D switch (sk->__sk_common.skc_state) {=0D case TCP_TIME_WAIT:=0D return inet_twsk(sk)->tw_transparent;=0D case TCP_NEW_SYN_RECV:=0D return inet_rsk(inet_reqsk(sk))->no_srccheck;=0D }=0D return inet_sk(sk)->transparent;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_stream_is_thin(stru= ct tcp_sock *tp)=0D {=0D return tp->packets_out < 4 && !tcp_in_initial_slowstart(tp);=0D }=0D =0D =0D enum tcp_seq_states {=0D TCP_SEQ_STATE_LISTENING,=0D TCP_SEQ_STATE_ESTABLISHED,=0D };=0D =0D void *tcp_seq_start(struct seq_file *seq, loff_t *pos);=0D void *tcp_seq_next(struct seq_file *seq, void *v, loff_t *pos);=0D void tcp_seq_stop(struct seq_file *seq, void *v);=0D =0D struct tcp_seq_afinfo {=0D sa_family_t family;=0D };=0D =0D struct tcp_iter_state {=0D struct seq_net_private p;=0D enum tcp_seq_states state;=0D struct sock *syn_wait_sk;=0D int bucket, offset, sbucket, num;=0D loff_t last_pos;=0D };=0D =0D extern struct request_sock_ops tcp_request_sock_ops;=0D extern struct request_sock_ops tcp6_request_sock_ops;=0D =0D void tcp_v4_destroy_sock(struct sock *sk);=0D =0D struct sk_buff *tcp_gso_segment(struct sk_buff *skb,=0D netdev_features_t features);=0D struct sk_buff *tcp_gro_receive(struct list_head *head, struct sk_buff *skb= );=0D = ;=0D = ;=0D = ;=0D = ;=0D int tcp_gro_complete(struct sk_buff *skb);=0D =0D void __tcp_v4_send_check(struct sk_buff *skb, __be32 saddr, __be32 daddr);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_notsent_lowat(const = struct tcp_sock *tp)=0D {=0D struct net *net =3D sock_net((struct sock *)tp);=0D return tp->notsent_lowat ?: net->ipv4.sysctl_tcp_notsent_lowat;=0D }=0D =0D bool tcp_stream_memory_free(const struct sock *sk, int wake);=0D =0D =0D int tcp4_proc_init(void);=0D void tcp4_proc_exit(void);=0D =0D =0D int tcp_rtx_synack(const struct sock *sk, struct request_sock *req);=0D int tcp_conn_request(struct request_sock_ops *rsk_ops,=0D const struct tcp_request_sock_ops *af_ops,=0D struct sock *sk, struct sk_buff *skb);=0D =0D =0D struct tcp_sock_af_ops {=0D # 2062 "./include/net/tcp.h"=0D };=0D =0D struct tcp_request_sock_ops {=0D u16 mss_clamp;=0D # 2078 "./include/net/tcp.h"=0D struct dst_entry *(*route_req)(const struct sock *sk,=0D struct sk_buff *skb,=0D struct flowi *fl,=0D struct request_sock *req);=0D u32 (*init_seq)(const struct sk_buff *skb);=0D u32 (*init_ts_off)(const struct net *net, const struct sk_buff *skb);=0D int (*send_synack)(const struct sock *sk, struct dst_entry *dst,=0D struct flowi *fl, struct request_sock *req,=0D struct tcp_fastopen_cookie *foc,=0D enum tcp_synack_type synack_type,=0D struct sk_buff *syn_skb);=0D };=0D =0D extern const struct tcp_request_sock_ops tcp_request_sock_ipv4_ops;=0D =0D extern const struct tcp_request_sock_ops tcp_request_sock_ipv6_ops;=0D # 2106 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 cookie_init_sequence(c= onst struct tcp_request_sock_ops *ops,=0D const struct sock *sk, struct sk_buff *skb,=0D __u16 *mss)=0D {=0D return 0;=0D }=0D =0D =0D int tcpv4_offload_init(void);=0D =0D void tcp_v4_init(void);=0D void tcp_init(void);=0D =0D =0D void tcp_mark_skb_lost(struct sock *sk, struct sk_buff *skb);=0D void tcp_newreno_mark_lost(struct sock *sk, bool snd_una_advanced);=0D extern s32 tcp_rack_skb_timeout(struct tcp_sock *tp, struct sk_buff *skb,=0D u32 reo_wnd);=0D extern bool tcp_rack_mark_lost(struct sock *sk);=0D extern void tcp_rack_advance(struct tcp_sock *tp, u8 sacked, u32 end_seq,=0D u64 xmit_time);=0D extern void tcp_rack_reo_timeout(struct sock *sk);=0D extern void tcp_rack_update_reo_wnd(struct sock *sk, struct rate_sample *rs= );=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) s64 tcp_rto_delta_us(const s= truct sock *sk)=0D {=0D const struct sk_buff *skb =3D tcp_rtx_queue_head(sk);=0D u32 rto =3D inet_csk(sk)->icsk_rto;=0D u64 rto_time_stamp_us =3D tcp_skb_timestamp_us(skb) + jiffies_to_usecs(rto= );=0D =0D return rto_time_stamp_us - tcp_sk(sk)->tcp_mstamp;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ip_options_rcu *tcp_v= 4_save_options(struct net *net,=0D struct sk_buff *skb)=0D {=0D const struct ip_options *opt =3D &((struct tcp_skb_cb *)&((skb)->cb[0]))->= header.h4.opt;=0D struct ip_options_rcu *dopt =3D ((void *)0);=0D =0D if (opt->optlen) {=0D int opt_size =3D sizeof(*dopt) + opt->optlen;=0D =0D dopt =3D kmalloc(opt_size, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x8= 00u)));=0D if (dopt && __ip_options_echo(net, &dopt->opt, skb, opt)) {=0D kfree(dopt);=0D dopt =3D ((void *)0);=0D }=0D }=0D return dopt;=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_is_tcp_pure_ack(con= st struct sk_buff *skb)=0D {=0D return skb->truesize =3D=3D 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void skb_set_tcp_pure_ack(st= ruct sk_buff *skb)=0D {=0D skb->truesize =3D 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_inq(struct sock *sk)= =0D {=0D struct tcp_sock *tp =3D tcp_sk(sk);=0D int answ;=0D =0D if ((1 << sk->__sk_common.skc_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) {= =0D answ =3D 0;=0D } else if (sock_flag(sk, SOCK_URGINLINE) ||=0D !tp->urg_data ||=0D before(tp->urg_seq, tp->copied_seq) ||=0D !before(tp->urg_seq, tp->rcv_nxt)) {=0D =0D answ =3D tp->rcv_nxt - tp->copied_seq;=0D =0D =0D if (answ && sock_flag(sk, SOCK_DONE))=0D answ--;=0D } else {=0D answ =3D tp->urg_seq - tp->copied_seq;=0D }=0D =0D return answ;=0D }=0D =0D int tcp_peek_len(struct socket *sock);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_segs_in(struct tcp_= sock *tp, const struct sk_buff *skb)=0D {=0D u16 segs_in;=0D =0D segs_in =3D __builtin_choose_expr(((!!(sizeof((typeof((u16)(1)) *)1 =3D=3D= (typeof((u16)(((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs= )) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u16)(1)) *= 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u= 16)(((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_segs)) * 0l)) := (int *)8))))), (((u16)(1)) > ((u16)(((struct skb_shared_info *)(skb_end_po= inter(skb)))->gso_segs)) ? ((u16)(1)) : ((u16)(((struct skb_shared_info *)(= skb_end_pointer(skb)))->gso_segs))), ({ typeof((u16)(1)) __UNIQUE_ID___x618= =3D ((u16)(1)); typeof((u16)(((struct skb_shared_info *)(skb_end_pointer(s= kb)))->gso_segs)) __UNIQUE_ID___y619 =3D ((u16)(((struct skb_shared_info *)= (skb_end_pointer(skb)))->gso_segs)); ((__UNIQUE_ID___x618) > (__UNIQUE_ID__= _y619) ? (__UNIQUE_ID___x618) : (__UNIQUE_ID___y619)); }));=0D =0D =0D =0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_6= 20(void) ; if (!((sizeof(tp->segs_in) =3D=3D sizeof(char) || sizeof(tp->seg= s_in) =3D=3D sizeof(short) || sizeof(tp->segs_in) =3D=3D sizeof(int) || siz= eof(tp->segs_in) =3D=3D sizeof(long)) || sizeof(tp->segs_in) =3D=3D sizeof(= long long))) __compiletime_assert_620(); } while (0); do { *(volatile typeo= f(tp->segs_in) *)&(tp->segs_in) =3D (tp->segs_in + segs_in); } while (0); }= while (0);=0D if (skb->len > tcp_hdrlen(skb))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 621(void) ; if (!((sizeof(tp->data_segs_in) =3D=3D sizeof(char) || sizeof(t= p->data_segs_in) =3D=3D sizeof(short) || sizeof(tp->data_segs_in) =3D=3D si= zeof(int) || sizeof(tp->data_segs_in) =3D=3D sizeof(long)) || sizeof(tp->da= ta_segs_in) =3D=3D sizeof(long long))) __compiletime_assert_621(); } while = (0); do { *(volatile typeof(tp->data_segs_in) *)&(tp->data_segs_in) =3D (tp= ->data_segs_in + segs_in); } while (0); } while (0);=0D }=0D # 2223 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_listendrop(const st= ruct sock *sk)=0D {=0D atomic_inc(&((struct sock *)sk)->sk_drops);=0D ({ __this_cpu_preempt_check("add"); do { do { const void *__vpp_verify =3D= (typeof((&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]= )) + 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof((sock_n= et(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS])) { case 1: do { *= ({ do { const void *__vpp_verify =3D (typeof((&((sock_net(sk))->mib.net_sta= tistics->mibs[LINUX_MIB_LISTENDROPS])) + 0))((void *)0); (void)__vpp_verify= ; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*= (&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]))) *)(&(= (sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]))); (typeof= ((typeof(*(&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS= ]))) *)(&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]))= )) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu= )])))); }); }) +=3D 1; } while (0);break; case 2: do { *({ do { const void = *__vpp_verify =3D (typeof((&((sock_net(sk))->mib.net_statistics->mibs[LINUX= _MIB_LISTENDROPS])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ u= nsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((sock_net(sk))->= mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]))) *)(&((sock_net(sk))->mib= =2Enet_statistics->mibs[LINUX_MIB_LISTENDROPS]))); (typeof((typeof(*(&((soc= k_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS]))) *)(&((sock_n= et(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS])))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0);break; case 4: do { *({ do { const void *__vpp_verify = =3D (typeof((&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDRO= PS])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long _= _ptr; __ptr =3D (unsigned long) ((typeof(*(&((sock_net(sk))->mib.net_statis= tics->mibs[LINUX_MIB_LISTENDROPS]))) *)(&((sock_net(sk))->mib.net_statistic= s->mibs[LINUX_MIB_LISTENDROPS]))); (typeof((typeof(*(&((sock_net(sk))->mib.= net_statistics->mibs[LINUX_MIB_LISTENDROPS]))) *)(&((sock_net(sk))->mib.net= _statistics->mibs[LINUX_MIB_LISTENDROPS])))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0= );break; case 8: do { *({ do { const void *__vpp_verify =3D (typeof((&((soc= k_net(sk))->mib.net_statistics->mibs[LINUX_MIB_LISTENDROPS])) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MI= B_LISTENDROPS]))) *)(&((sock_net(sk))->mib.net_statistics->mibs[LINUX_MIB_L= ISTENDROPS]))); (typeof((typeof(*(&((sock_net(sk))->mib.net_statistics->mib= s[LINUX_MIB_LISTENDROPS]))) *)(&((sock_net(sk))->mib.net_statistics->mibs[L= INUX_MIB_LISTENDROPS])))) (__ptr + (((__per_cpu_offset[(((struct thread_inf= o *)get_current())->cpu)])))); }); }) +=3D 1; } while (0);break; default: _= _bad_size_call_parameter();break; } } while (0); });=0D }=0D =0D enum hrtimer_restart tcp_pace_kick(struct hrtimer *timer);=0D # 2239 "./include/net/tcp.h"=0D struct tcp_ulp_ops {=0D struct list_head list;=0D =0D =0D int (*init)(struct sock *sk);=0D =0D void (*update)(struct sock *sk, struct proto *p,=0D void (*write_space)(struct sock *sk));=0D =0D void (*release)(struct sock *sk);=0D =0D int (*get_info)(const struct sock *sk, struct sk_buff *skb);=0D size_t (*get_info_size)(const struct sock *sk);=0D =0D void (*clone)(const struct request_sock *req, struct sock *newsk,=0D const gfp_t priority);=0D =0D char name[16];=0D struct module *owner;=0D };=0D int tcp_register_ulp(struct tcp_ulp_ops *type);=0D void tcp_unregister_ulp(struct tcp_ulp_ops *type);=0D int tcp_set_ulp(struct sock *sk, const char *name);=0D void tcp_get_available_ulp(char *buf, size_t len);=0D void tcp_cleanup_ulp(struct sock *sk);=0D void tcp_update_ulp(struct sock *sk, struct proto *p,=0D void (*write_space)(struct sock *sk));=0D =0D =0D =0D =0D =0D =0D struct sk_msg;=0D struct sk_psock;=0D =0D =0D struct proto *tcp_bpf_get_proto(struct sock *sk, struct sk_psock *psock);=0D int tcp_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool rest= ore);=0D void tcp_bpf_clone(const struct sock *sk, struct sock *newsk);=0D =0D =0D int tcp_bpf_sendmsg_redir(struct sock *sk, struct sk_msg *msg, u32 bytes,=0D int flags);=0D # 2292 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void bpf_skops_init_skb(stru= ct bpf_sock_ops_kern *skops,=0D struct sk_buff *skb,=0D unsigned int end_offset)=0D {=0D skops->skb =3D skb;=0D skops->skb_data_end =3D skb->data + end_offset;=0D }=0D # 2313 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_call_bpf(struct sock= *sk, int op, u32 nargs, u32 *args)=0D {=0D struct bpf_sock_ops_kern sock_ops;=0D int ret;=0D =0D memset(&sock_ops, 0, __builtin_offsetof(struct bpf_sock_ops_kern, temp));= =0D if (sk_fullsock(sk)) {=0D sock_ops.is_fullsock =3D 1;=0D sock_owned_by_me(sk);=0D }=0D =0D sock_ops.sk =3D sk;=0D sock_ops.op =3D op;=0D if (nargs > 0)=0D memcpy(sock_ops.args, args, nargs * sizeof(*args));=0D =0D ret =3D ({ int __ret =3D 0; if (__builtin_expect(!!(({ if (!__builtin_type= s_compatible_p(typeof(*&(&cgroup_bpf_enabled_key[CGROUP_SOCK_OPS])->key), s= truct static_key) && !__builtin_types_compatible_p(typeof(*&(&cgroup_bpf_en= abled_key[CGROUP_SOCK_OPS])->key), struct static_key_true) && !__builtin_ty= pes_compatible_p(typeof(*&(&cgroup_bpf_enabled_key[CGROUP_SOCK_OPS])->key),= struct static_key_false)) ____wrong_branch_error(); static_key_count((stru= ct static_key *)&(&cgroup_bpf_enabled_key[CGROUP_SOCK_OPS])->key) > 0; })),= 0) && (&sock_ops)->sk) { typeof(sk) __sk =3D sk_to_full_sk((&sock_ops)->sk= ); if (__sk && sk_fullsock(__sk)) __ret =3D __cgroup_bpf_run_filter_sock_op= s(__sk, &sock_ops, CGROUP_SOCK_OPS); } __ret; });=0D if (ret =3D=3D 0)=0D ret =3D sock_ops.reply;=0D else=0D ret =3D -1;=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_call_bpf_2arg(struct= sock *sk, int op, u32 arg1, u32 arg2)=0D {=0D u32 args[2] =3D {arg1, arg2};=0D =0D return tcp_call_bpf(sk, op, 2, args);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int tcp_call_bpf_3arg(struct= sock *sk, int op, u32 arg1, u32 arg2,=0D u32 arg3)=0D {=0D u32 args[3] =3D {arg1, arg2, arg3};=0D =0D return tcp_call_bpf(sk, op, 3, args);=0D }=0D # 2371 "./include/net/tcp.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_timeout_init(struct = sock *sk)=0D {=0D int timeout;=0D =0D timeout =3D tcp_call_bpf(sk, BPF_SOCK_OPS_TIMEOUT_INIT, 0, ((void *)0));=0D =0D if (timeout <=3D 0)=0D timeout =3D ((unsigned)(1*100));=0D return __builtin_choose_expr(((!!(sizeof((typeof((int)(timeout)) *)1 =3D= =3D (typeof((int)(((unsigned)(120*100)))) *)1))) && ((sizeof(int) =3D=3D si= zeof(*(8 ? ((void *)((long)((int)(timeout)) * 0l)) : (int *)8))) && (sizeof= (int) =3D=3D sizeof(*(8 ? ((void *)((long)((int)(((unsigned)(120*100)))) * = 0l)) : (int *)8))))), (((int)(timeout)) < ((int)(((unsigned)(120*100)))) ? = ((int)(timeout)) : ((int)(((unsigned)(120*100))))), ({ typeof((int)(timeout= )) __UNIQUE_ID___x622 =3D ((int)(timeout)); typeof((int)(((unsigned)(120*10= 0)))) __UNIQUE_ID___y623 =3D ((int)(((unsigned)(120*100)))); ((__UNIQUE_ID_= __x622) < (__UNIQUE_ID___y623) ? (__UNIQUE_ID___x622) : (__UNIQUE_ID___y623= )); }));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u32 tcp_rwnd_init_bpf(struct= sock *sk)=0D {=0D int rwnd;=0D =0D rwnd =3D tcp_call_bpf(sk, BPF_SOCK_OPS_RWND_INIT, 0, ((void *)0));=0D =0D if (rwnd < 0)=0D rwnd =3D 0;=0D return rwnd;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool tcp_bpf_ca_needs_ecn(st= ruct sock *sk)=0D {=0D return (tcp_call_bpf(sk, BPF_SOCK_OPS_NEEDS_ECN, 0, ((void *)0)) =3D=3D 1)= ;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_bpf_rtt(struct sock= *sk)=0D {=0D if ((tcp_sk(sk)->bpf_sock_ops_cb_flags & BPF_SOCK_OPS_RTT_CB_FLAG))=0D tcp_call_bpf(sk, BPF_SOCK_OPS_RTT_CB, 0, ((void *)0));=0D }=0D # 2415 "./include/net/tcp.h"=0D extern struct static_key_false tcp_tx_delay_enabled;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tcp_add_tx_delay(struct= sk_buff *skb,=0D const struct tcp_sock *tp)=0D {=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&tc= p_tx_delay_enabled)->key), struct static_key) && !__builtin_types_compatibl= e_p(typeof(*&(&tcp_tx_delay_enabled)->key), struct static_key_true) && !__b= uiltin_types_compatible_p(typeof(*&(&tcp_tx_delay_enabled)->key), struct st= atic_key_false)) ____wrong_branch_error(); static_key_count((struct static_= key *)&(&tcp_tx_delay_enabled)->key) > 0; })), 0))=0D skb->skb_mstamp_ns +=3D (u64)tp->tcp_tx_delay * 1000L;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u64 tcp_transmit_time(const = struct sock *sk)=0D {=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&tc= p_tx_delay_enabled)->key), struct static_key) && !__builtin_types_compatibl= e_p(typeof(*&(&tcp_tx_delay_enabled)->key), struct static_key_true) && !__b= uiltin_types_compatible_p(typeof(*&(&tcp_tx_delay_enabled)->key), struct st= atic_key_false)) ____wrong_branch_error(); static_key_count((struct static_= key *)&(&tcp_tx_delay_enabled)->key) > 0; })), 0)) {=0D u32 delay =3D (sk->__sk_common.skc_state =3D=3D TCP_TIME_WAIT) ?=0D tcp_twsk(sk)->tw_tx_delay : tcp_sk(sk)->tcp_tx_delay;=0D =0D return tcp_clock_ns() + (u64)delay * 1000L;=0D }=0D return 0;=0D }=0D # 53 "net/ipv6/route.c" 2=0D =0D =0D # 1 "./include/net/dst_metadata.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/net/ip_tunnels.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/if_tunnel.h" 1=0D =0D =0D =0D =0D =0D =0D # 1 "./include/uapi/linux/if_tunnel.h" 1=0D # 48 "./include/uapi/linux/if_tunnel.h"=0D struct ip_tunnel_parm {=0D char name[16];=0D int link;=0D __be16 i_flags;=0D __be16 o_flags;=0D __be32 i_key;=0D __be32 o_key;=0D struct iphdr iph;=0D };=0D =0D enum {=0D IFLA_IPTUN_UNSPEC,=0D IFLA_IPTUN_LINK,=0D IFLA_IPTUN_LOCAL,=0D IFLA_IPTUN_REMOTE,=0D IFLA_IPTUN_TTL,=0D IFLA_IPTUN_TOS,=0D IFLA_IPTUN_ENCAP_LIMIT,=0D IFLA_IPTUN_FLOWINFO,=0D IFLA_IPTUN_FLAGS,=0D IFLA_IPTUN_PROTO,=0D IFLA_IPTUN_PMTUDISC,=0D IFLA_IPTUN_6RD_PREFIX,=0D IFLA_IPTUN_6RD_RELAY_PREFIX,=0D IFLA_IPTUN_6RD_PREFIXLEN,=0D IFLA_IPTUN_6RD_RELAY_PREFIXLEN,=0D IFLA_IPTUN_ENCAP_TYPE,=0D IFLA_IPTUN_ENCAP_FLAGS,=0D IFLA_IPTUN_ENCAP_SPORT,=0D IFLA_IPTUN_ENCAP_DPORT,=0D IFLA_IPTUN_COLLECT_METADATA,=0D IFLA_IPTUN_FWMARK,=0D __IFLA_IPTUN_MAX,=0D };=0D =0D =0D enum tunnel_encap_types {=0D TUNNEL_ENCAP_NONE,=0D TUNNEL_ENCAP_FOU,=0D TUNNEL_ENCAP_GUE,=0D TUNNEL_ENCAP_MPLS,=0D };=0D # 98 "./include/uapi/linux/if_tunnel.h"=0D struct ip_tunnel_prl {=0D __be32 addr;=0D __u16 flags;=0D __u16 __reserved;=0D __u32 datalen;=0D __u32 __reserved2;=0D =0D };=0D =0D =0D =0D =0D struct ip_tunnel_6rd {=0D struct in6_addr prefix;=0D __be32 relay_prefix;=0D __u16 prefixlen;=0D __u16 relay_prefixlen;=0D };=0D =0D enum {=0D IFLA_GRE_UNSPEC,=0D IFLA_GRE_LINK,=0D IFLA_GRE_IFLAGS,=0D IFLA_GRE_OFLAGS,=0D IFLA_GRE_IKEY,=0D IFLA_GRE_OKEY,=0D IFLA_GRE_LOCAL,=0D IFLA_GRE_REMOTE,=0D IFLA_GRE_TTL,=0D IFLA_GRE_TOS,=0D IFLA_GRE_PMTUDISC,=0D IFLA_GRE_ENCAP_LIMIT,=0D IFLA_GRE_FLOWINFO,=0D IFLA_GRE_FLAGS,=0D IFLA_GRE_ENCAP_TYPE,=0D IFLA_GRE_ENCAP_FLAGS,=0D IFLA_GRE_ENCAP_SPORT,=0D IFLA_GRE_ENCAP_DPORT,=0D IFLA_GRE_COLLECT_METADATA,=0D IFLA_GRE_IGNORE_DF,=0D IFLA_GRE_FWMARK,=0D IFLA_GRE_ERSPAN_INDEX,=0D IFLA_GRE_ERSPAN_VER,=0D IFLA_GRE_ERSPAN_DIR,=0D IFLA_GRE_ERSPAN_HWID,=0D __IFLA_GRE_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D enum {=0D IFLA_VTI_UNSPEC,=0D IFLA_VTI_LINK,=0D IFLA_VTI_IKEY,=0D IFLA_VTI_OKEY,=0D IFLA_VTI_LOCAL,=0D IFLA_VTI_REMOTE,=0D IFLA_VTI_FWMARK,=0D __IFLA_VTI_MAX,=0D };=0D # 8 "./include/linux/if_tunnel.h" 2=0D # 6 "./include/net/ip_tunnels.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D # 1 "./include/net/gro_cells.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct gro_cell;=0D =0D struct gro_cells {=0D struct gro_cell *cells;=0D };=0D =0D int gro_cells_receive(struct gro_cells *gcells, struct sk_buff *skb);=0D int gro_cells_init(struct gro_cells *gcells, struct net_device *dev);=0D void gro_cells_destroy(struct gro_cells *gcells);=0D # 15 "./include/net/ip_tunnels.h" 2=0D =0D # 1 "./include/net/netns/generic.h" 1=0D # 28 "./include/net/netns/generic.h"=0D struct net_generic {=0D union {=0D struct {=0D unsigned int len;=0D struct callback_head rcu;=0D } s;=0D =0D void *ptr[0];=0D };=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *net_generic(const stru= ct net *net, unsigned int id)=0D {=0D struct net_generic *ng;=0D void *ptr;=0D =0D rcu_read_lock();=0D ng =3D ({ typeof(*(net->gen)) *__UNIQUE_ID_rcu624 =3D (typeof(*(net->gen))= *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_6= 25(void) ; if (!((sizeof((net->gen)) =3D=3D sizeof(char) || sizeof((net->ge= n)) =3D=3D sizeof(short) || sizeof((net->gen)) =3D=3D sizeof(int) || sizeof= ((net->gen)) =3D=3D sizeof(long)) || sizeof((net->gen)) =3D=3D sizeof(long = long))) __compiletime_assert_625(); } while (0); (*(const volatile typeof( = _Generic(((net->gen)), char: (char)0, unsigned char: (unsigned char)0, sign= ed char: (signed char)0, unsigned short: (unsigned short)0, signed short: (= signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, u= nsigned long: (unsigned long)0, signed long: (signed long)0, unsigned long = long: (unsigned long long)0, signed long long: (signed long long)0, default= : ((net->gen)))) *)&((net->gen))); }); do { } while (0 && (!((0) || rcu_rea= d_lock_held()))); ; ((typeof(*(net->gen)) *)(__UNIQUE_ID_rcu624)); });=0D ptr =3D ng->ptr[id];=0D rcu_read_unlock();=0D =0D return ptr;=0D }=0D # 17 "./include/net/ip_tunnels.h" 2=0D =0D =0D # 1 "./include/net/dst_cache.h" 1=0D # 11 "./include/net/dst_cache.h"=0D struct dst_cache {=0D struct dst_cache_pcpu *cache;=0D unsigned long reset_ts;=0D };=0D # 24 "./include/net/dst_cache.h"=0D struct dst_entry *dst_cache_get(struct dst_cache *dst_cache);=0D # 33 "./include/net/dst_cache.h"=0D struct rtable *dst_cache_get_ip4(struct dst_cache *dst_cache, __be32 *saddr= );=0D # 43 "./include/net/dst_cache.h"=0D void dst_cache_set_ip4(struct dst_cache *dst_cache, struct dst_entry *dst,= =0D __be32 saddr);=0D # 56 "./include/net/dst_cache.h"=0D void dst_cache_set_ip6(struct dst_cache *dst_cache, struct dst_entry *dst,= =0D const struct in6_addr *saddr);=0D # 66 "./include/net/dst_cache.h"=0D struct dst_entry *dst_cache_get_ip6(struct dst_cache *dst_cache,=0D struct in6_addr *saddr);=0D # 77 "./include/net/dst_cache.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void dst_cache_reset(struct = dst_cache *dst_cache)=0D {=0D dst_cache->reset_ts =3D jiffies;=0D }=0D # 91 "./include/net/dst_cache.h"=0D void dst_cache_reset_now(struct dst_cache *dst_cache);=0D =0D =0D =0D =0D =0D =0D int dst_cache_init(struct dst_cache *dst_cache, gfp_t gfp);=0D # 107 "./include/net/dst_cache.h"=0D void dst_cache_destroy(struct dst_cache *dst_cache);=0D # 20 "./include/net/ip_tunnels.h" 2=0D # 39 "./include/net/ip_tunnels.h"=0D struct ip_tunnel_key {=0D __be64 tun_id;=0D union {=0D struct {=0D __be32 src;=0D __be32 dst;=0D } ipv4;=0D struct {=0D struct in6_addr src;=0D struct in6_addr dst;=0D } ipv6;=0D } u;=0D __be16 tun_flags;=0D u8 tos;=0D u8 ttl;=0D __be32 label;=0D __be16 tp_src;=0D __be16 tp_dst;=0D };=0D # 69 "./include/net/ip_tunnels.h"=0D struct ip_tunnel_info {=0D struct ip_tunnel_key key;=0D =0D struct dst_cache dst_cache;=0D =0D u8 options_len;=0D u8 mode;=0D };=0D # 88 "./include/net/ip_tunnels.h"=0D struct ip_tunnel_encap {=0D u16 type;=0D u16 flags;=0D __be16 sport;=0D __be16 dport;=0D };=0D =0D struct ip_tunnel_prl_entry {=0D struct ip_tunnel_prl_entry *next;=0D __be32 addr;=0D u16 flags;=0D struct callback_head callback_head;=0D };=0D =0D struct metadata_dst;=0D =0D struct ip_tunnel {=0D struct ip_tunnel *next;=0D struct hlist_node hash_node;=0D =0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D =0D struct net *net;=0D =0D unsigned long err_time;=0D =0D int err_count;=0D =0D =0D u32 i_seqno;=0D atomic_t o_seqno;=0D int tun_hlen;=0D =0D =0D u32 index;=0D u8 erspan_ver;=0D u8 dir;=0D u16 hwid;=0D =0D struct dst_cache dst_cache;=0D =0D struct ip_tunnel_parm parms;=0D =0D int mlink;=0D int encap_hlen;=0D int hlen;=0D struct ip_tunnel_encap encap;=0D =0D =0D =0D =0D =0D struct ip_tunnel_prl_entry *prl;=0D unsigned int prl_count;=0D unsigned int ip_tnl_net_id;=0D struct gro_cells gro_cells;=0D __u32 fwmark;=0D bool collect_md;=0D bool ignore_df;=0D };=0D =0D struct tnl_ptk_info {=0D __be16 flags;=0D __be16 proto;=0D __be32 key;=0D __be32 seq;=0D int hdr_len;=0D };=0D # 165 "./include/net/ip_tunnels.h"=0D struct ip_tunnel_net {=0D struct net_device *fb_tunnel_dev;=0D struct rtnl_link_ops *rtnl_link_ops;=0D struct hlist_head tunnels[(1 << 7)];=0D struct ip_tunnel *collect_md_tun;=0D int type;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_tunnel_key_init(stru= ct ip_tunnel_key *key,=0D __be32 saddr, __be32 daddr,=0D u8 tos, u8 ttl, __be32 label,=0D __be16 tp_src, __be16 tp_dst,=0D __be64 tun_id, __be16 tun_flags)=0D {=0D key->tun_id =3D tun_id;=0D key->u.ipv4.src =3D saddr;=0D key->u.ipv4.dst =3D daddr;=0D memset((unsigned char *)key + (__builtin_offsetof(struct ip_tunnel_key, u.= ipv4.dst) + sizeof((((struct ip_tunnel_key *)0)->u.ipv4.dst))),=0D 0, (sizeof((((struct ip_tunnel_key *)0)->u)) - sizeof((((struct ip_= tunnel_key *)0)->u.ipv4))));=0D key->tos =3D tos;=0D key->ttl =3D ttl;=0D key->label =3D label;=0D key->tun_flags =3D tun_flags;=0D =0D =0D =0D =0D =0D key->tp_src =3D tp_src;=0D key->tp_dst =3D tp_dst;=0D =0D =0D if (sizeof(*key) !=3D (__builtin_offsetof(struct ip_tunnel_key, tp_dst) + = sizeof((((struct ip_tunnel_key *)0)->tp_dst))))=0D memset((unsigned char *)key + (__builtin_offsetof(struct ip_tunnel_key, t= p_dst) + sizeof((((struct ip_tunnel_key *)0)->tp_dst))),=0D 0, sizeof(*key) - (__builtin_offsetof(struct ip_tunnel_key, tp_dst= ) + sizeof((((struct ip_tunnel_key *)0)->tp_dst))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D ip_tunnel_dst_cache_usable(const struct sk_buff *skb,=0D const struct ip_tunnel_info *info)=0D {=0D if (skb->mark)=0D return false;=0D if (!info)=0D return true;=0D if (info->key.tun_flags & (( __be16)(__builtin_constant_p((__u16)((0x2000)= )) ? ((__u16)( (((__u16)((0x2000)) & (__u16)0x00ffU) << 8) | (((__u16)((0x2= 000)) & (__u16)0xff00U) >> 8))) : __fswab16((0x2000)))))=0D return false;=0D =0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned short ip_tunnel_inf= o_af(const struct ip_tunnel_info=0D *tun_info)=0D {=0D return tun_info->mode & 0x02 ? 10 : 2;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be64 key32_to_tunnel_id(__= be32 key)=0D {=0D =0D =0D =0D return ( __be64)(( u64)key << 32);=0D =0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __be32 tunnel_id_to_key32(__= be64 tun_id)=0D {=0D =0D =0D =0D return ( __be32)(( u64)tun_id >> 32);=0D =0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_tunnel_init_flow(str= uct flowi4 *fl4,=0D int proto,=0D __be32 daddr, __be32 saddr,=0D __be32 key, __u8 tos,=0D struct net *net, int oif,=0D __u32 mark, __u32 tun_inner_hash)=0D {=0D memset(fl4, 0, sizeof(*fl4));=0D =0D if (oif) {=0D fl4->__fl_common.flowic_l3mdev =3D l3mdev_master_upper_ifindex_by_index_r= cu(net, oif);=0D =0D fl4->__fl_common.flowic_oif =3D fl4->__fl_common.flowic_l3mdev ? 0 : oif;= =0D }=0D =0D fl4->daddr =3D daddr;=0D fl4->saddr =3D saddr;=0D fl4->__fl_common.flowic_tos =3D tos;=0D fl4->__fl_common.flowic_proto =3D proto;=0D fl4->uli.gre_key =3D key;=0D fl4->__fl_common.flowic_mark =3D mark;=0D fl4->__fl_common.flowic_multipath_hash =3D tun_inner_hash;=0D }=0D =0D int ip_tunnel_init(struct net_device *dev);=0D void ip_tunnel_uninit(struct net_device *dev);=0D void ip_tunnel_dellink(struct net_device *dev, struct list_head *head);=0D struct net *ip_tunnel_get_link_net(const struct net_device *dev);=0D int ip_tunnel_get_iflink(const struct net_device *dev);=0D int ip_tunnel_init_net(struct net *net, unsigned int ip_tnl_net_id,=0D struct rtnl_link_ops *ops, char *devname);=0D =0D void ip_tunnel_delete_nets(struct list_head *list_net, unsigned int id,=0D struct rtnl_link_ops *ops);=0D =0D void ip_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,=0D const struct iphdr *tnl_params, const u8 protocol);=0D void ip_md_tunnel_xmit(struct sk_buff *skb, struct net_device *dev,=0D const u8 proto, int tunnel_hlen);=0D int ip_tunnel_ctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd= );=0D int ip_tunnel_siocdevprivate(struct net_device *dev, struct ifreq *ifr,=0D void *data, int cmd);=0D int __ip_tunnel_change_mtu(struct net_device *dev, int new_mtu, bool strict= );=0D int ip_tunnel_change_mtu(struct net_device *dev, int new_mtu);=0D =0D struct ip_tunnel *ip_tunnel_lookup(struct ip_tunnel_net *itn,=0D int link, __be16 flags,=0D __be32 remote, __be32 local,=0D __be32 key);=0D =0D int ip_tunnel_rcv(struct ip_tunnel *tunnel, struct sk_buff *skb,=0D const struct tnl_ptk_info *tpi, struct metadata_dst *tun_dst,=0D bool log_ecn_error);=0D int ip_tunnel_changelink(struct net_device *dev, struct nlattr *tb[],=0D struct ip_tunnel_parm *p, __u32 fwmark);=0D int ip_tunnel_newlink(struct net_device *dev, struct nlattr *tb[],=0D struct ip_tunnel_parm *p, __u32 fwmark);=0D void ip_tunnel_setup(struct net_device *dev, unsigned int net_id);=0D =0D extern const struct header_ops ip_tunnel_header_ops;=0D __be16 ip_tunnel_parse_protocol(const struct sk_buff *skb);=0D =0D struct ip_tunnel_encap_ops {=0D size_t (*encap_hlen)(struct ip_tunnel_encap *e);=0D int (*build_header)(struct sk_buff *skb, struct ip_tunnel_encap *e,=0D u8 *protocol, struct flowi4 *fl4);=0D int (*err_handler)(struct sk_buff *skb, u32 info);=0D };=0D =0D =0D =0D extern const struct ip_tunnel_encap_ops *=0D iptun_encaps[8];=0D =0D int ip_tunnel_encap_add_ops(const struct ip_tunnel_encap_ops *op,=0D unsigned int num);=0D int ip_tunnel_encap_del_ops(const struct ip_tunnel_encap_ops *op,=0D unsigned int num);=0D =0D int ip_tunnel_encap_setup(struct ip_tunnel *t,=0D struct ip_tunnel_encap *ipencap);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool pskb_inet_may_pull(stru= ct sk_buff *skb)=0D {=0D int nhlen;=0D =0D switch (skb->protocol) {=0D =0D case (( __be16)(__builtin_constant_p((__u16)((0x86DD))) ? ((__u16)( (((__u= 16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)((0x86DD)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x86DD)))):=0D nhlen =3D sizeof(struct ipv6hdr);=0D break;=0D =0D case (( __be16)(__builtin_constant_p((__u16)((0x0800))) ? ((__u16)( (((__u= 16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x0800)) & (__u16)0xff00= U) >> 8))) : __fswab16((0x0800)))):=0D nhlen =3D sizeof(struct iphdr);=0D break;=0D default:=0D nhlen =3D 0;=0D }=0D =0D return pskb_network_may_pull(skb, nhlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_encap_hlen(struct ip_= tunnel_encap *e)=0D {=0D const struct ip_tunnel_encap_ops *ops;=0D int hlen =3D -22;=0D =0D if (e->type =3D=3D TUNNEL_ENCAP_NONE)=0D return 0;=0D =0D if (e->type >=3D 8)=0D return -22;=0D =0D rcu_read_lock();=0D ops =3D ({ typeof(*(iptun_encaps[e->type])) *__UNIQUE_ID_rcu626 =3D (typeo= f(*(iptun_encaps[e->type])) *)({ do { __attribute__((__noreturn__)) extern = void __compiletime_assert_627(void) ; if (!((sizeof((iptun_encaps[e->type])= ) =3D=3D sizeof(char) || sizeof((iptun_encaps[e->type])) =3D=3D sizeof(shor= t) || sizeof((iptun_encaps[e->type])) =3D=3D sizeof(int) || sizeof((iptun_e= ncaps[e->type])) =3D=3D sizeof(long)) || sizeof((iptun_encaps[e->type])) = =3D=3D sizeof(long long))) __compiletime_assert_627(); } while (0); (*(cons= t volatile typeof( _Generic(((iptun_encaps[e->type])), char: (char)0, unsig= ned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (u= nsigned short)0, signed short: (signed short)0, unsigned int: (unsigned int= )0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long= : (signed long)0, unsigned long long: (unsigned long long)0, signed long lo= ng: (signed long long)0, default: ((iptun_encaps[e->type])))) *)&((iptun_en= caps[e->type]))); }); do { } while (0 && (!((0) || rcu_read_lock_held())));= ; ((typeof(*(iptun_encaps[e->type])) *)(__UNIQUE_ID_rcu626)); });=0D if (__builtin_expect(!!(ops && ops->encap_hlen), 1))=0D hlen =3D ops->encap_hlen(e);=0D rcu_read_unlock();=0D =0D return hlen;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_tunnel_encap(struct s= k_buff *skb, struct ip_tunnel *t,=0D u8 *protocol, struct flowi4 *fl4)=0D {=0D const struct ip_tunnel_encap_ops *ops;=0D int ret =3D -22;=0D =0D if (t->encap.type =3D=3D TUNNEL_ENCAP_NONE)=0D return 0;=0D =0D if (t->encap.type >=3D 8)=0D return -22;=0D =0D rcu_read_lock();=0D ops =3D ({ typeof(*(iptun_encaps[t->encap.type])) *__UNIQUE_ID_rcu628 =3D = (typeof(*(iptun_encaps[t->encap.type])) *)({ do { __attribute__((__noreturn= __)) extern void __compiletime_assert_629(void) ; if (!((sizeof((iptun_enca= ps[t->encap.type])) =3D=3D sizeof(char) || sizeof((iptun_encaps[t->encap.ty= pe])) =3D=3D sizeof(short) || sizeof((iptun_encaps[t->encap.type])) =3D=3D = sizeof(int) || sizeof((iptun_encaps[t->encap.type])) =3D=3D sizeof(long)) |= | sizeof((iptun_encaps[t->encap.type])) =3D=3D sizeof(long long))) __compil= etime_assert_629(); } while (0); (*(const volatile typeof( _Generic(((iptun= _encaps[t->encap.type])), char: (char)0, unsigned char: (unsigned char)0, s= igned char: (signed char)0, unsigned short: (unsigned short)0, signed short= : (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0= , unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lo= ng long: (unsigned long long)0, signed long long: (signed long long)0, defa= ult: ((iptun_encaps[t->encap.type])))) *)&((iptun_encaps[t->encap.type])));= }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(ipt= un_encaps[t->encap.type])) *)(__UNIQUE_ID_rcu628)); });=0D if (__builtin_expect(!!(ops && ops->build_header), 1))=0D ret =3D ops->build_header(skb, &t->encap, protocol, fl4);=0D rcu_read_unlock();=0D =0D return ret;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 ip_tunnel_get_dsfield(con= st struct iphdr *iph,=0D const struct sk_buff *skb)=0D {=0D if (skb->protocol =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x0800))= ) ? ((__u16)( (((__u16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x08= 00)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0800)))))=0D return iph->tos;=0D else if (skb->protocol =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x8= 6DD))) ? ((__u16)( (((__u16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)(= (0x86DD)) & (__u16)0xff00U) >> 8))) : __fswab16((0x86DD)))))=0D return ipv6_get_dsfield((const struct ipv6hdr *)iph);=0D else=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 ip_tunnel_get_ttl(const s= truct iphdr *iph,=0D const struct sk_buff *skb)=0D {=0D if (skb->protocol =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x0800))= ) ? ((__u16)( (((__u16)((0x0800)) & (__u16)0x00ffU) << 8) | (((__u16)((0x08= 00)) & (__u16)0xff00U) >> 8))) : __fswab16((0x0800)))))=0D return iph->ttl;=0D else if (skb->protocol =3D=3D (( __be16)(__builtin_constant_p((__u16)((0x8= 6DD))) ? ((__u16)( (((__u16)((0x86DD)) & (__u16)0x00ffU) << 8) | (((__u16)(= (0x86DD)) & (__u16)0xff00U) >> 8))) : __fswab16((0x86DD)))))=0D return ((const struct ipv6hdr *)iph)->hop_limit;=0D else=0D return 0;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) u8 ip_tunnel_ecn_encap(u8 to= s, const struct iphdr *iph,=0D const struct sk_buff *skb)=0D {=0D u8 inner =3D ip_tunnel_get_dsfield(iph, skb);=0D =0D return INET_ECN_encapsulate(tos, inner);=0D }=0D =0D int __iptunnel_pull_header(struct sk_buff *skb, int hdr_len,=0D __be16 inner_proto, bool raw_proto, bool xnet);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int iptunnel_pull_header(str= uct sk_buff *skb, int hdr_len,=0D __be16 inner_proto, bool xnet)=0D {=0D return __iptunnel_pull_header(skb, hdr_len, inner_proto, false, xnet);=0D }=0D =0D void iptunnel_xmit(struct sock *sk, struct rtable *rt, struct sk_buff *skb,= =0D __be32 src, __be32 dst, u8 proto,=0D u8 tos, u8 ttl, __be16 df, bool xnet);=0D struct metadata_dst *iptunnel_metadata_reply(struct metadata_dst *md,=0D gfp_t flags);=0D int skb_tunnel_check_pmtu(struct sk_buff *skb, struct dst_entry *encap_dst,= =0D int headroom, bool reply);=0D =0D int iptunnel_handle_offloads(struct sk_buff *skb, int gso_type_mask);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int iptunnel_pull_offloads(s= truct sk_buff *skb)=0D {=0D if (skb_is_gso(skb)) {=0D int err;=0D =0D err =3D skb_unclone(skb, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800= u)));=0D if (__builtin_expect(!!(err), 0))=0D return err;=0D ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type &=3D ~((((ne= tdev_features_t)1 << (NETIF_F_GSO_GRE_BIT)) | ((netdev_features_t)1 << (NET= IF_F_GSO_GRE_CSUM_BIT)) | ((netdev_features_t)1 << (NETIF_F_GSO_IPXIP4_BIT)= ) | ((netdev_features_t)1 << (NETIF_F_GSO_IPXIP6_BIT)) | ((netdev_features_= t)1 << (NETIF_F_GSO_UDP_TUNNEL_BIT)) | ((netdev_features_t)1 << (NETIF_F_GS= O_UDP_TUNNEL_CSUM_BIT))) >>=0D NETIF_F_GSO_SHIFT);=0D }=0D =0D skb->encapsulation =3D 0;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void iptunnel_xmit_stats(str= uct net_device *dev, int pkt_len)=0D {=0D if (pkt_len > 0) {=0D struct pcpu_sw_netstats *tstats =3D ({ do { __preempt_count_add(1); __asm= __ __volatile__("": : :"memory"); } while (0); ({ do { const void *__vpp_ve= rify =3D (typeof((dev->tstats) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(dev->ts= tats)) *)(dev->tstats)); (typeof((typeof(*(dev->tstats)) *)(dev->tstats))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }); });=0D =0D u64_stats_update_begin(&tstats->syncp);=0D tstats->tx_bytes +=3D pkt_len;=0D tstats->tx_packets++;=0D u64_stats_update_end(&tstats->syncp);=0D do { (void)(tstats); do { __asm__ __volatile__("": : :"memory"); __preemp= t_count_sub(1); } while (0); } while (0);=0D } else {=0D struct net_device_stats *err_stats =3D &dev->stats;=0D =0D if (pkt_len < 0) {=0D err_stats->tx_errors++;=0D err_stats->tx_aborted_errors++;=0D } else {=0D err_stats->tx_dropped++;=0D }=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *ip_tunnel_info_opts(st= ruct ip_tunnel_info *info)=0D {=0D return info + 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_tunnel_info_opts_get= (void *to,=0D const struct ip_tunnel_info *info)=0D {=0D memcpy(to, info + 1, info->options_len);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ip_tunnel_info_opts_set= (struct ip_tunnel_info *info,=0D const void *from, int len,=0D __be16 flags)=0D {=0D info->options_len =3D len;=0D if (len > 0) {=0D memcpy(ip_tunnel_info_opts(info), from, len);=0D info->key.tun_flags |=3D flags;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ip_tunnel_info *lwt_t= un_info(struct lwtunnel_state *lwtstate)=0D {=0D return (struct ip_tunnel_info *)lwtstate->data;=0D }=0D =0D extern struct static_key_false ip_tunnel_metadata_cnt;=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ip_tunnel_collect_metada= ta(void)=0D {=0D return __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(= &ip_tunnel_metadata_cnt)->key), struct static_key) && !__builtin_types_comp= atible_p(typeof(*&(&ip_tunnel_metadata_cnt)->key), struct static_key_true) = && !__builtin_types_compatible_p(typeof(*&(&ip_tunnel_metadata_cnt)->key), = struct static_key_false)) ____wrong_branch_error(); static_key_count((struc= t static_key *)&(&ip_tunnel_metadata_cnt)->key) > 0; })), 0);=0D }=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) ip_tunnel_core_init(void);=0D =0D void ip_tunnel_need_metadata(void);=0D void ip_tunnel_unneed_metadata(void);=0D # 7 "./include/net/dst_metadata.h" 2=0D =0D =0D enum metadata_type {=0D METADATA_IP_TUNNEL,=0D METADATA_HW_PORT_MUX,=0D };=0D =0D struct hw_port_info {=0D struct net_device *lower_dev;=0D u32 port_id;=0D };=0D =0D struct metadata_dst {=0D struct dst_entry dst;=0D enum metadata_type type;=0D union {=0D struct ip_tunnel_info tun_info;=0D struct hw_port_info port_info;=0D } u;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *skb_met= adata_dst(const struct sk_buff *skb)=0D {=0D struct metadata_dst *md_dst =3D (struct metadata_dst *) skb_dst(skb);=0D =0D if (md_dst && md_dst->dst.flags & 0x0080)=0D return md_dst;=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ip_tunnel_info *=0D skb_tunnel_info(const struct sk_buff *skb)=0D {=0D struct metadata_dst *md_dst =3D skb_metadata_dst(skb);=0D struct dst_entry *dst;=0D =0D if (md_dst && md_dst->type =3D=3D METADATA_IP_TUNNEL)=0D return &md_dst->u.tun_info;=0D =0D dst =3D skb_dst(skb);=0D if (dst && dst->lwtstate &&=0D (dst->lwtstate->type =3D=3D LWTUNNEL_ENCAP_IP ||=0D dst->lwtstate->type =3D=3D LWTUNNEL_ENCAP_IP6))=0D return lwt_tun_info(dst->lwtstate);=0D =0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool skb_valid_dst(const str= uct sk_buff *skb)=0D {=0D struct dst_entry *dst =3D skb_dst(skb);=0D =0D return dst && !(dst->flags & 0x0080);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int skb_metadata_dst_cmp(con= st struct sk_buff *skb_a,=0D const struct sk_buff *skb_b)=0D {=0D const struct metadata_dst *a, *b;=0D =0D if (!(skb_a->_skb_refdst | skb_b->_skb_refdst))=0D return 0;=0D =0D a =3D (const struct metadata_dst *) skb_dst(skb_a);=0D b =3D (const struct metadata_dst *) skb_dst(skb_b);=0D =0D if (!a !=3D !b || a->type !=3D b->type)=0D return 1;=0D =0D switch (a->type) {=0D case METADATA_HW_PORT_MUX:=0D return memcmp(&a->u.port_info, &b->u.port_info,=0D sizeof(a->u.port_info));=0D case METADATA_IP_TUNNEL:=0D return memcmp(&a->u.tun_info, &b->u.tun_info,=0D sizeof(a->u.tun_info) +=0D a->u.tun_info.options_len);=0D default:=0D return 1;=0D }=0D }=0D =0D void metadata_dst_free(struct metadata_dst *);=0D struct metadata_dst *metadata_dst_alloc(u8 optslen, enum metadata_type type= ,=0D gfp_t flags);=0D void metadata_dst_free_percpu(struct metadata_dst *md_dst);=0D struct metadata_dst *=0D metadata_dst_alloc_percpu(u8 optslen, enum metadata_type type, gfp_t flags)= ;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *tun_rx_= dst(int md_size)=0D {=0D struct metadata_dst *tun_dst;=0D =0D tun_dst =3D metadata_dst_alloc(md_size, METADATA_IP_TUNNEL, ((( gfp_t)0x20= u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D if (!tun_dst)=0D return ((void *)0);=0D =0D tun_dst->u.tun_info.options_len =3D 0;=0D tun_dst->u.tun_info.mode =3D 0;=0D return tun_dst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *tun_dst= _unclone(struct sk_buff *skb)=0D {=0D struct metadata_dst *md_dst =3D skb_metadata_dst(skb);=0D int md_size;=0D struct metadata_dst *new_md;=0D =0D if (!md_dst || md_dst->type !=3D METADATA_IP_TUNNEL)=0D return ERR_PTR(-22);=0D =0D md_size =3D md_dst->u.tun_info.options_len;=0D new_md =3D metadata_dst_alloc(md_size, METADATA_IP_TUNNEL, ((( gfp_t)0x20u= )|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D if (!new_md)=0D return ERR_PTR(-12);=0D =0D memcpy(&new_md->u.tun_info, &md_dst->u.tun_info,=0D sizeof(struct ip_tunnel_info) + md_size);=0D =0D =0D if (new_md->u.tun_info.dst_cache.cache) {=0D int ret;=0D =0D ret =3D dst_cache_init(&new_md->u.tun_info.dst_cache, ((( gfp_t)0x20u)|((= gfp_t)0x200u)|(( gfp_t)0x800u)));=0D if (ret) {=0D metadata_dst_free(new_md);=0D return ERR_PTR(ret);=0D }=0D }=0D =0D =0D skb_dst_drop(skb);=0D skb_dst_set(skb, &new_md->dst);=0D return new_md;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ip_tunnel_info *skb_t= unnel_info_unclone(struct sk_buff *skb)=0D {=0D struct metadata_dst *dst;=0D =0D dst =3D tun_dst_unclone(skb);=0D if (IS_ERR(dst))=0D return ((void *)0);=0D =0D return &dst->u.tun_info;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *__ip_tu= n_set_dst(__be32 saddr,=0D __be32 daddr,=0D __u8 tos, __u8 ttl,=0D __be16 tp_dst,=0D __be16 flags,=0D __be64 tunnel_id,=0D int md_size)=0D {=0D struct metadata_dst *tun_dst;=0D =0D tun_dst =3D tun_rx_dst(md_size);=0D if (!tun_dst)=0D return ((void *)0);=0D =0D ip_tunnel_key_init(&tun_dst->u.tun_info.key,=0D saddr, daddr, tos, ttl,=0D 0, 0, tp_dst, tunnel_id, flags);=0D return tun_dst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *ip_tun_= rx_dst(struct sk_buff *skb,=0D __be16 flags,=0D __be64 tunnel_id,=0D int md_size)=0D {=0D const struct iphdr *iph =3D ip_hdr(skb);=0D =0D return __ip_tun_set_dst(iph->saddr, iph->daddr, iph->tos, iph->ttl,=0D 0, flags, tunnel_id, md_size);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *__ipv6_= tun_set_dst(const struct in6_addr *saddr,=0D const struct in6_addr *daddr,=0D __u8 tos, __u8 ttl,=0D __be16 tp_dst,=0D __be32 label,=0D __be16 flags,=0D __be64 tunnel_id,=0D int md_size)=0D {=0D struct metadata_dst *tun_dst;=0D struct ip_tunnel_info *info;=0D =0D tun_dst =3D tun_rx_dst(md_size);=0D if (!tun_dst)=0D return ((void *)0);=0D =0D info =3D &tun_dst->u.tun_info;=0D info->mode =3D 0x02;=0D info->key.tun_flags =3D flags;=0D info->key.tun_id =3D tunnel_id;=0D info->key.tp_src =3D 0;=0D info->key.tp_dst =3D tp_dst;=0D =0D info->key.u.ipv6.src =3D *saddr;=0D info->key.u.ipv6.dst =3D *daddr;=0D =0D info->key.tos =3D tos;=0D info->key.ttl =3D ttl;=0D info->key.label =3D label;=0D =0D return tun_dst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct metadata_dst *ipv6_tu= n_rx_dst(struct sk_buff *skb,=0D __be16 flags,=0D __be64 tunnel_id,=0D int md_size)=0D {=0D const struct ipv6hdr *ip6h =3D ipv6_hdr(skb);=0D =0D return __ipv6_tun_set_dst(&ip6h->saddr, &ip6h->daddr,=0D ipv6_get_dsfield(ip6h), ip6h->hop_limit,=0D 0, ip6_flowlabel(ip6h), flags, tunnel_id,=0D md_size);=0D }=0D # 56 "net/ipv6/route.c" 2=0D # 1 "./include/net/xfrm.h" 1=0D # 11 "./include/net/xfrm.h"=0D # 1 "./include/uapi/linux/pfkeyv2.h" 1=0D # 15 "./include/uapi/linux/pfkeyv2.h"=0D struct sadb_msg {=0D __u8 sadb_msg_version;=0D __u8 sadb_msg_type;=0D __u8 sadb_msg_errno;=0D __u8 sadb_msg_satype;=0D __u16 sadb_msg_len;=0D __u16 sadb_msg_reserved;=0D __u32 sadb_msg_seq;=0D __u32 sadb_msg_pid;=0D } __attribute__((packed));=0D =0D =0D struct sadb_ext {=0D __u16 sadb_ext_len;=0D __u16 sadb_ext_type;=0D } __attribute__((packed));=0D =0D =0D struct sadb_sa {=0D __u16 sadb_sa_len;=0D __u16 sadb_sa_exttype;=0D __be32 sadb_sa_spi;=0D __u8 sadb_sa_replay;=0D __u8 sadb_sa_state;=0D __u8 sadb_sa_auth;=0D __u8 sadb_sa_encrypt;=0D __u32 sadb_sa_flags;=0D } __attribute__((packed));=0D =0D =0D struct sadb_lifetime {=0D __u16 sadb_lifetime_len;=0D __u16 sadb_lifetime_exttype;=0D __u32 sadb_lifetime_allocations;=0D __u64 sadb_lifetime_bytes;=0D __u64 sadb_lifetime_addtime;=0D __u64 sadb_lifetime_usetime;=0D } __attribute__((packed));=0D =0D =0D struct sadb_address {=0D __u16 sadb_address_len;=0D __u16 sadb_address_exttype;=0D __u8 sadb_address_proto;=0D __u8 sadb_address_prefixlen;=0D __u16 sadb_address_reserved;=0D } __attribute__((packed));=0D =0D =0D struct sadb_key {=0D __u16 sadb_key_len;=0D __u16 sadb_key_exttype;=0D __u16 sadb_key_bits;=0D __u16 sadb_key_reserved;=0D } __attribute__((packed));=0D =0D =0D struct sadb_ident {=0D __u16 sadb_ident_len;=0D __u16 sadb_ident_exttype;=0D __u16 sadb_ident_type;=0D __u16 sadb_ident_reserved;=0D __u64 sadb_ident_id;=0D } __attribute__((packed));=0D =0D =0D struct sadb_sens {=0D __u16 sadb_sens_len;=0D __u16 sadb_sens_exttype;=0D __u32 sadb_sens_dpd;=0D __u8 sadb_sens_sens_level;=0D __u8 sadb_sens_sens_len;=0D __u8 sadb_sens_integ_level;=0D __u8 sadb_sens_integ_len;=0D __u32 sadb_sens_reserved;=0D } __attribute__((packed));=0D =0D =0D =0D =0D =0D =0D struct sadb_prop {=0D __u16 sadb_prop_len;=0D __u16 sadb_prop_exttype;=0D __u8 sadb_prop_replay;=0D __u8 sadb_prop_reserved[3];=0D } __attribute__((packed));=0D =0D =0D =0D =0D =0D =0D =0D struct sadb_comb {=0D __u8 sadb_comb_auth;=0D __u8 sadb_comb_encrypt;=0D __u16 sadb_comb_flags;=0D __u16 sadb_comb_auth_minbits;=0D __u16 sadb_comb_auth_maxbits;=0D __u16 sadb_comb_encrypt_minbits;=0D __u16 sadb_comb_encrypt_maxbits;=0D __u32 sadb_comb_reserved;=0D __u32 sadb_comb_soft_allocations;=0D __u32 sadb_comb_hard_allocations;=0D __u64 sadb_comb_soft_bytes;=0D __u64 sadb_comb_hard_bytes;=0D __u64 sadb_comb_soft_addtime;=0D __u64 sadb_comb_hard_addtime;=0D __u64 sadb_comb_soft_usetime;=0D __u64 sadb_comb_hard_usetime;=0D } __attribute__((packed));=0D =0D =0D struct sadb_supported {=0D __u16 sadb_supported_len;=0D __u16 sadb_supported_exttype;=0D __u32 sadb_supported_reserved;=0D } __attribute__((packed));=0D =0D =0D =0D =0D =0D =0D =0D struct sadb_alg {=0D __u8 sadb_alg_id;=0D __u8 sadb_alg_ivlen;=0D __u16 sadb_alg_minbits;=0D __u16 sadb_alg_maxbits;=0D __u16 sadb_alg_reserved;=0D } __attribute__((packed));=0D =0D =0D struct sadb_spirange {=0D __u16 sadb_spirange_len;=0D __u16 sadb_spirange_exttype;=0D __u32 sadb_spirange_min;=0D __u32 sadb_spirange_max;=0D __u32 sadb_spirange_reserved;=0D } __attribute__((packed));=0D =0D =0D struct sadb_x_kmprivate {=0D __u16 sadb_x_kmprivate_len;=0D __u16 sadb_x_kmprivate_exttype;=0D __u32 sadb_x_kmprivate_reserved;=0D } __attribute__((packed));=0D =0D =0D struct sadb_x_sa2 {=0D __u16 sadb_x_sa2_len;=0D __u16 sadb_x_sa2_exttype;=0D __u8 sadb_x_sa2_mode;=0D __u8 sadb_x_sa2_reserved1;=0D __u16 sadb_x_sa2_reserved2;=0D __u32 sadb_x_sa2_sequence;=0D __u32 sadb_x_sa2_reqid;=0D } __attribute__((packed));=0D =0D =0D struct sadb_x_policy {=0D __u16 sadb_x_policy_len;=0D __u16 sadb_x_policy_exttype;=0D __u16 sadb_x_policy_type;=0D __u8 sadb_x_policy_dir;=0D __u8 sadb_x_policy_reserved;=0D __u32 sadb_x_policy_id;=0D __u32 sadb_x_policy_priority;=0D } __attribute__((packed));=0D =0D =0D struct sadb_x_ipsecrequest {=0D __u16 sadb_x_ipsecrequest_len;=0D __u16 sadb_x_ipsecrequest_proto;=0D __u8 sadb_x_ipsecrequest_mode;=0D __u8 sadb_x_ipsecrequest_level;=0D __u16 sadb_x_ipsecrequest_reserved1;=0D __u32 sadb_x_ipsecrequest_reqid;=0D __u32 sadb_x_ipsecrequest_reserved2;=0D } __attribute__((packed));=0D =0D =0D =0D =0D =0D struct sadb_x_nat_t_type {=0D __u16 sadb_x_nat_t_type_len;=0D __u16 sadb_x_nat_t_type_exttype;=0D __u8 sadb_x_nat_t_type_type;=0D __u8 sadb_x_nat_t_type_reserved[3];=0D } __attribute__((packed));=0D =0D =0D =0D struct sadb_x_nat_t_port {=0D __u16 sadb_x_nat_t_port_len;=0D __u16 sadb_x_nat_t_port_exttype;=0D __be16 sadb_x_nat_t_port_port;=0D __u16 sadb_x_nat_t_port_reserved;=0D } __attribute__((packed));=0D =0D =0D =0D struct sadb_x_sec_ctx {=0D __u16 sadb_x_sec_len;=0D __u16 sadb_x_sec_exttype;=0D __u8 sadb_x_ctx_alg;=0D __u8 sadb_x_ctx_doi;=0D __u16 sadb_x_ctx_len;=0D } __attribute__((packed));=0D =0D =0D =0D =0D struct sadb_x_kmaddress {=0D __u16 sadb_x_kmaddress_len;=0D __u16 sadb_x_kmaddress_exttype;=0D __u32 sadb_x_kmaddress_reserved;=0D } __attribute__((packed));=0D =0D =0D =0D struct sadb_x_filter {=0D __u16 sadb_x_filter_len;=0D __u16 sadb_x_filter_exttype;=0D __u32 sadb_x_filter_saddr[4];=0D __u32 sadb_x_filter_daddr[4];=0D __u16 sadb_x_filter_family;=0D __u8 sadb_x_filter_splen;=0D __u8 sadb_x_filter_dplen;=0D } __attribute__((packed));=0D # 12 "./include/net/xfrm.h" 2=0D # 1 "./include/uapi/linux/ipsec.h" 1=0D # 13 "./include/uapi/linux/ipsec.h"=0D enum {=0D IPSEC_MODE_ANY =3D 0,=0D IPSEC_MODE_TRANSPORT =3D 1,=0D IPSEC_MODE_TUNNEL =3D 2,=0D IPSEC_MODE_BEET =3D 3=0D };=0D =0D enum {=0D IPSEC_DIR_ANY =3D 0,=0D IPSEC_DIR_INBOUND =3D 1,=0D IPSEC_DIR_OUTBOUND =3D 2,=0D IPSEC_DIR_FWD =3D 3,=0D IPSEC_DIR_MAX =3D 4,=0D IPSEC_DIR_INVALID =3D 5=0D };=0D =0D enum {=0D IPSEC_POLICY_DISCARD =3D 0,=0D IPSEC_POLICY_NONE =3D 1,=0D IPSEC_POLICY_IPSEC =3D 2,=0D IPSEC_POLICY_ENTRUST =3D 3,=0D IPSEC_POLICY_BYPASS =3D 4=0D };=0D =0D enum {=0D IPSEC_LEVEL_DEFAULT =3D 0,=0D IPSEC_LEVEL_USE =3D 1,=0D IPSEC_LEVEL_REQUIRE =3D 2,=0D IPSEC_LEVEL_UNIQUE =3D 3=0D };=0D # 13 "./include/net/xfrm.h" 2=0D =0D =0D # 1 "./include/linux/audit.h" 1=0D # 13 "./include/linux/audit.h"=0D # 1 "./include/linux/ptrace.h" 1=0D # 10 "./include/linux/ptrace.h"=0D # 1 "./include/linux/pid_namespace.h" 1=0D # 17 "./include/linux/pid_namespace.h"=0D struct fs_pin;=0D =0D struct pid_namespace {=0D struct idr idr;=0D struct callback_head rcu;=0D unsigned int pid_allocated;=0D struct task_struct *child_reaper;=0D struct kmem_cache *pid_cachep;=0D unsigned int level;=0D struct pid_namespace *parent;=0D =0D =0D =0D struct user_namespace *user_ns;=0D struct ucounts *ucounts;=0D int reboot;=0D struct ns_common ns;=0D } ;=0D =0D extern struct pid_namespace init_pid_ns;=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct pid_namespace *get_pi= d_ns(struct pid_namespace *ns)=0D {=0D if (ns !=3D &init_pid_ns)=0D refcount_inc(&ns->ns.count);=0D return ns;=0D }=0D =0D extern struct pid_namespace *copy_pid_ns(unsigned long flags,=0D struct user_namespace *user_ns, struct pid_namespace *ns);=0D extern void zap_pid_ns_processes(struct pid_namespace *pid_ns);=0D extern int reboot_pid_ns(struct pid_namespace *pid_ns, int cmd);=0D extern void put_pid_ns(struct pid_namespace *ns);=0D # 85 "./include/linux/pid_namespace.h"=0D extern struct pid_namespace *task_active_pid_ns(struct task_struct *tsk);=0D void pidhash_init(void);=0D void pid_idr_init(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool task_is_in_init_pid_ns(= struct task_struct *tsk)=0D {=0D return task_active_pid_ns(tsk) =3D=3D &init_pid_ns;=0D }=0D # 11 "./include/linux/ptrace.h" 2=0D # 1 "./include/uapi/linux/ptrace.h" 1=0D # 59 "./include/uapi/linux/ptrace.h"=0D struct ptrace_peeksiginfo_args {=0D __u64 off;=0D __u32 flags;=0D __s32 nr;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct seccomp_metadata {=0D __u64 filter_off;=0D __u64 flags;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct ptrace_syscall_info {=0D __u8 op;=0D __u8 pad[3];=0D __u32 arch;=0D __u64 instruction_pointer;=0D __u64 stack_pointer;=0D union {=0D struct {=0D __u64 nr;=0D __u64 args[6];=0D } entry;=0D struct {=0D __s64 rval;=0D __u8 is_error;=0D } exit;=0D struct {=0D __u64 nr;=0D __u64 args[6];=0D __u32 ret_data;=0D } seccomp;=0D };=0D };=0D =0D =0D =0D struct ptrace_rseq_configuration {=0D __u64 rseq_abi_pointer;=0D __u32 rseq_abi_size;=0D __u32 signature;=0D __u32 flags;=0D __u32 pad;=0D };=0D # 12 "./include/linux/ptrace.h" 2=0D =0D =0D =0D struct syscall_info {=0D __u64 sp;=0D struct seccomp_data data;=0D };=0D =0D extern int ptrace_access_vm(struct task_struct *tsk, unsigned long addr,=0D void *buf, int len, unsigned int gup_flags);=0D # 56 "./include/linux/ptrace.h"=0D extern long arch_ptrace(struct task_struct *child, long request,=0D unsigned long addr, unsigned long data);=0D extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char= *dst, int len);=0D extern int ptrace_writedata(struct task_struct *tsk, char *src, unsigned lo= ng dst, int len);=0D extern void ptrace_disable(struct task_struct *);=0D extern int ptrace_request(struct task_struct *child, long request,=0D unsigned long addr, unsigned long data);=0D extern int ptrace_notify(int exit_code, unsigned long message);=0D extern void __ptrace_link(struct task_struct *child,=0D struct task_struct *new_parent,=0D const struct cred *ptracer_cred);=0D extern void __ptrace_unlink(struct task_struct *child);=0D extern void exit_ptrace(struct task_struct *tracer, struct list_head *dead)= ;=0D # 95 "./include/linux/ptrace.h"=0D extern bool ptrace_may_access(struct task_struct *task, unsigned int mode);= =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptrace_reparented(struct= task_struct *child)=0D {=0D return !same_thread_group(child->real_parent, child->parent);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_unlink(struct ta= sk_struct *child)=0D {=0D if (__builtin_expect(!!(child->ptrace), 0))=0D __ptrace_unlink(child);=0D }=0D =0D int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,=0D unsigned long data);=0D int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,=0D unsigned long data);=0D # 124 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct task_struct *ptrace_p= arent(struct task_struct *task)=0D {=0D if (__builtin_expect(!!(task->ptrace), 0))=0D return ({ typeof(*(task->parent)) *__UNIQUE_ID_rcu630 =3D (typeof(*(task-= >parent)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_631(void) ; if (!((sizeof((task->parent)) =3D=3D sizeof(char) || si= zeof((task->parent)) =3D=3D sizeof(short) || sizeof((task->parent)) =3D=3D = sizeof(int) || sizeof((task->parent)) =3D=3D sizeof(long)) || sizeof((task-= >parent)) =3D=3D sizeof(long long))) __compiletime_assert_631(); } while (0= ); (*(const volatile typeof( _Generic(((task->parent)), char: (char)0, unsi= gned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (= unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned in= t)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lon= g: (signed long)0, unsigned long long: (unsigned long long)0, signed long l= ong: (signed long long)0, default: ((task->parent)))) *)&((task->parent)));= }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(tas= k->parent)) *)(__UNIQUE_ID_rcu630)); });=0D return ((void *)0);=0D }=0D # 140 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ptrace_event_enabled(st= ruct task_struct *task, int event)=0D {=0D return task->ptrace & (1 << (3 + (event)));=0D }=0D # 155 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_event(int event,= unsigned long message)=0D {=0D if (__builtin_expect(!!(ptrace_event_enabled(get_current(), event)), 0)) {= =0D ptrace_notify((event << 8) | 5, message);=0D } else if (event =3D=3D 4) {=0D =0D if ((get_current()->ptrace & (0x00000001|0x00010000)) =3D=3D 0x00000001)= =0D send_sig(5, get_current(), 0);=0D }=0D }=0D # 177 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_event_pid(int ev= ent, struct pid *pid)=0D {=0D =0D =0D =0D =0D =0D =0D unsigned long message =3D 0;=0D struct pid_namespace *ns;=0D =0D rcu_read_lock();=0D ns =3D task_active_pid_ns(({ typeof(*(get_current()->parent)) *__UNIQUE_ID= _rcu632 =3D (typeof(*(get_current()->parent)) *)({ do { __attribute__((__no= return__)) extern void __compiletime_assert_633(void) ; if (!((sizeof((get_= current()->parent)) =3D=3D sizeof(char) || sizeof((get_current()->parent)) = =3D=3D sizeof(short) || sizeof((get_current()->parent)) =3D=3D sizeof(int) = || sizeof((get_current()->parent)) =3D=3D sizeof(long)) || sizeof((get_curr= ent()->parent)) =3D=3D sizeof(long long))) __compiletime_assert_633(); } wh= ile (0); (*(const volatile typeof( _Generic(((get_current()->parent)), char= : (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, un= signed short: (unsigned short)0, signed short: (signed short)0, unsigned in= t: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned lon= g)0, signed long: (signed long)0, unsigned long long: (unsigned long long)0= , signed long long: (signed long long)0, default: ((get_current()->parent))= )) *)&((get_current()->parent))); }); do { } while (0 && (!((0) || rcu_read= _lock_held()))); ; ((typeof(*(get_current()->parent)) *)(__UNIQUE_ID_rcu632= )); }));=0D if (ns)=0D message =3D pid_nr_ns(pid, ns);=0D rcu_read_unlock();=0D =0D ptrace_event(event, message);=0D }=0D # 207 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_init_task(struct= task_struct *child, bool ptrace)=0D {=0D INIT_LIST_HEAD(&child->ptrace_entry);=0D INIT_LIST_HEAD(&child->ptraced);=0D child->jobctl =3D 0;=0D child->ptrace =3D 0;=0D child->parent =3D child->real_parent;=0D =0D if (__builtin_expect(!!(ptrace), 0) && get_current()->ptrace) {=0D child->ptrace =3D get_current()->ptrace;=0D __ptrace_link(child, get_current()->parent, get_current()->ptracer_cred);= =0D =0D if (child->ptrace & 0x00010000)=0D task_set_jobctl_pending(child, (1UL << 19));=0D else=0D sigaddset(&child->pending.signal, 19);=0D }=0D else=0D child->ptracer_cred =3D ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_release_task(str= uct task_struct *task)=0D {=0D do { if (__builtin_expect(!!(!list_empty(&task->ptraced)), 0)) do { do { _= _asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\= n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" "= %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("in= clude/linux/ptrace.h"), "i" (236), "i" (0), "i" (sizeof(struct bug_entry)))= ; } while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } = while (0);=0D ptrace_unlink(task);=0D do { if (__builtin_expect(!!(!list_empty(&task->ptrace_entry)), 0)) do { d= o { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"= aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".ha= lf" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i"= ("include/linux/ptrace.h"), "i" (238), "i" (0), "i" (sizeof(struct bug_ent= ry))); } while (0); do { ; __builtin_unreachable(); } while (0); } while (0= ); } while (0);=0D }=0D # 294 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_enable_single_step= (struct task_struct *task)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/ptrace.h"), "i" (296), "i" (0), "i" (sizeof(struct = bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } w= hile (0);=0D }=0D # 308 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_disable_single_ste= p(struct task_struct *task)=0D {=0D }=0D # 337 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_enable_block_step(= struct task_struct *task)=0D {=0D do { do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_t= able,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\= t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" = : : "i" ("include/linux/ptrace.h"), "i" (339), "i" (0), "i" (sizeof(struct = bug_entry))); } while (0); do { ; __builtin_unreachable(); } while (0); } w= hile (0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void user_single_step_report= (struct pt_regs *regs)=0D {=0D kernel_siginfo_t info;=0D clear_siginfo(&info);=0D info.si_signo =3D 5;=0D info.si_errno =3D 0;=0D info.si_code =3D 0;=0D info._sifields._kill._pid =3D 0;=0D info._sifields._kill._uid =3D 0;=0D force_sig_info(&info);=0D }=0D # 412 "./include/linux/ptrace.h"=0D extern int task_current_syscall(struct task_struct *target, struct syscall_= info *info);=0D =0D extern void sigaction_compat_abi(struct k_sigaction *act, struct k_sigactio= n *oact);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ptrace_report_syscall(un= signed long message)=0D {=0D int ptrace =3D get_current()->ptrace;=0D int signr;=0D =0D if (!(ptrace & 0x00000001))=0D return 0;=0D =0D signr =3D ptrace_notify(5 | ((ptrace & (1 << (3 + (0)))) ? 0x80 : 0),=0D message);=0D =0D =0D =0D =0D =0D =0D if (signr)=0D send_sig(signr, get_current(), 1);=0D =0D return fatal_signal_pending(get_current());=0D }=0D # 461 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__warn_unused= _result__)) int ptrace_report_syscall_entry(=0D struct pt_regs *regs)=0D {=0D return ptrace_report_syscall(1);=0D }=0D # 484 "./include/linux/ptrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void ptrace_report_syscall_e= xit(struct pt_regs *regs, int step)=0D {=0D if (step)=0D user_single_step_report(regs);=0D else=0D ptrace_report_syscall(2);=0D }=0D # 14 "./include/linux/audit.h" 2=0D # 1 "./include/linux/audit_arch.h" 1=0D # 12 "./include/linux/audit_arch.h"=0D enum auditsc_class_t {=0D AUDITSC_NATIVE =3D 0,=0D AUDITSC_COMPAT,=0D AUDITSC_OPEN,=0D AUDITSC_OPENAT,=0D AUDITSC_SOCKETCALL,=0D AUDITSC_EXECVE,=0D AUDITSC_OPENAT2,=0D =0D AUDITSC_NVALS=0D };=0D # 15 "./include/linux/audit.h" 2=0D # 1 "./include/uapi/linux/audit.h" 1=0D # 328 "./include/uapi/linux/audit.h"=0D enum {=0D Audit_equal,=0D Audit_not_equal,=0D Audit_bitmask,=0D Audit_bittest,=0D Audit_lt,=0D Audit_gt,=0D Audit_le,=0D Audit_ge,=0D Audit_bad=0D };=0D # 455 "./include/uapi/linux/audit.h"=0D enum audit_nlgrps {=0D AUDIT_NLGRP_NONE,=0D AUDIT_NLGRP_READLOG,=0D __AUDIT_NLGRP_MAX=0D };=0D =0D =0D struct audit_status {=0D __u32 mask;=0D __u32 enabled;=0D __u32 failure;=0D __u32 pid;=0D __u32 rate_limit;=0D __u32 backlog_limit;=0D __u32 lost;=0D __u32 backlog;=0D union {=0D __u32 version;=0D __u32 feature_bitmap;=0D };=0D __u32 backlog_wait_time;=0D __u32 backlog_wait_time_actual;=0D =0D =0D };=0D =0D struct audit_features {=0D =0D __u32 vers;=0D __u32 mask;=0D __u32 features;=0D __u32 lock;=0D };=0D # 496 "./include/uapi/linux/audit.h"=0D struct audit_tty_status {=0D __u32 enabled;=0D __u32 log_passwd;=0D };=0D # 508 "./include/uapi/linux/audit.h"=0D struct audit_rule_data {=0D __u32 flags;=0D __u32 action;=0D __u32 field_count;=0D __u32 mask[64];=0D __u32 fields[64];=0D __u32 values[64];=0D __u32 fieldflags[64];=0D __u32 buflen;=0D char buf[];=0D };=0D # 16 "./include/linux/audit.h" 2=0D # 1 "./include/uapi/linux/netfilter/nf_tables.h" 1=0D # 22 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_registers {=0D NFT_REG_VERDICT,=0D NFT_REG_1,=0D NFT_REG_2,=0D NFT_REG_3,=0D NFT_REG_4,=0D __NFT_REG_MAX,=0D =0D NFT_REG32_00 =3D 8,=0D NFT_REG32_01,=0D NFT_REG32_02,=0D NFT_REG32_03,=0D NFT_REG32_04,=0D NFT_REG32_05,=0D NFT_REG32_06,=0D NFT_REG32_07,=0D NFT_REG32_08,=0D NFT_REG32_09,=0D NFT_REG32_10,=0D NFT_REG32_11,=0D NFT_REG32_12,=0D NFT_REG32_13,=0D NFT_REG32_14,=0D NFT_REG32_15,=0D };=0D # 64 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_verdicts {=0D NFT_CONTINUE =3D -1,=0D NFT_BREAK =3D -2,=0D NFT_JUMP =3D -3,=0D NFT_GOTO =3D -4,=0D NFT_RETURN =3D -5,=0D };=0D # 101 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nf_tables_msg_types {=0D NFT_MSG_NEWTABLE,=0D NFT_MSG_GETTABLE,=0D NFT_MSG_DELTABLE,=0D NFT_MSG_NEWCHAIN,=0D NFT_MSG_GETCHAIN,=0D NFT_MSG_DELCHAIN,=0D NFT_MSG_NEWRULE,=0D NFT_MSG_GETRULE,=0D NFT_MSG_DELRULE,=0D NFT_MSG_NEWSET,=0D NFT_MSG_GETSET,=0D NFT_MSG_DELSET,=0D NFT_MSG_NEWSETELEM,=0D NFT_MSG_GETSETELEM,=0D NFT_MSG_DELSETELEM,=0D NFT_MSG_NEWGEN,=0D NFT_MSG_GETGEN,=0D NFT_MSG_TRACE,=0D NFT_MSG_NEWOBJ,=0D NFT_MSG_GETOBJ,=0D NFT_MSG_DELOBJ,=0D NFT_MSG_GETOBJ_RESET,=0D NFT_MSG_NEWFLOWTABLE,=0D NFT_MSG_GETFLOWTABLE,=0D NFT_MSG_DELFLOWTABLE,=0D NFT_MSG_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D enum nft_list_attributes {=0D NFTA_LIST_UNSPEC,=0D NFTA_LIST_ELEM,=0D __NFTA_LIST_MAX=0D };=0D # 150 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_hook_attributes {=0D NFTA_HOOK_UNSPEC,=0D NFTA_HOOK_HOOKNUM,=0D NFTA_HOOK_PRIORITY,=0D NFTA_HOOK_DEV,=0D NFTA_HOOK_DEVS,=0D __NFTA_HOOK_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_table_flags {=0D NFT_TABLE_F_DORMANT =3D 0x1,=0D NFT_TABLE_F_OWNER =3D 0x2,=0D };=0D # 181 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_table_attributes {=0D NFTA_TABLE_UNSPEC,=0D NFTA_TABLE_NAME,=0D NFTA_TABLE_FLAGS,=0D NFTA_TABLE_USE,=0D NFTA_TABLE_HANDLE,=0D NFTA_TABLE_PAD,=0D NFTA_TABLE_USERDATA,=0D NFTA_TABLE_OWNER,=0D __NFTA_TABLE_MAX=0D };=0D =0D =0D enum nft_chain_flags {=0D NFT_CHAIN_BASE =3D (1 << 0),=0D NFT_CHAIN_HW_OFFLOAD =3D (1 << 1),=0D NFT_CHAIN_BINDING =3D (1 << 2),=0D };=0D # 218 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_chain_attributes {=0D NFTA_CHAIN_UNSPEC,=0D NFTA_CHAIN_TABLE,=0D NFTA_CHAIN_HANDLE,=0D NFTA_CHAIN_NAME,=0D NFTA_CHAIN_HOOK,=0D NFTA_CHAIN_POLICY,=0D NFTA_CHAIN_USE,=0D NFTA_CHAIN_TYPE,=0D NFTA_CHAIN_COUNTERS,=0D NFTA_CHAIN_PAD,=0D NFTA_CHAIN_FLAGS,=0D NFTA_CHAIN_ID,=0D NFTA_CHAIN_USERDATA,=0D __NFTA_CHAIN_MAX=0D };=0D # 249 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_rule_attributes {=0D NFTA_RULE_UNSPEC,=0D NFTA_RULE_TABLE,=0D NFTA_RULE_CHAIN,=0D NFTA_RULE_HANDLE,=0D NFTA_RULE_EXPRESSIONS,=0D NFTA_RULE_COMPAT,=0D NFTA_RULE_POSITION,=0D NFTA_RULE_USERDATA,=0D NFTA_RULE_PAD,=0D NFTA_RULE_ID,=0D NFTA_RULE_POSITION_ID,=0D NFTA_RULE_CHAIN_ID,=0D __NFTA_RULE_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_rule_compat_flags {=0D NFT_RULE_COMPAT_F_INV =3D (1 << 1),=0D NFT_RULE_COMPAT_F_MASK =3D NFT_RULE_COMPAT_F_INV,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_rule_compat_attributes {=0D NFTA_RULE_COMPAT_UNSPEC,=0D NFTA_RULE_COMPAT_PROTO,=0D NFTA_RULE_COMPAT_FLAGS,=0D __NFTA_RULE_COMPAT_MAX=0D };=0D # 303 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_set_flags {=0D NFT_SET_ANONYMOUS =3D 0x1,=0D NFT_SET_CONSTANT =3D 0x2,=0D NFT_SET_INTERVAL =3D 0x4,=0D NFT_SET_MAP =3D 0x8,=0D NFT_SET_TIMEOUT =3D 0x10,=0D NFT_SET_EVAL =3D 0x20,=0D NFT_SET_OBJECT =3D 0x40,=0D NFT_SET_CONCAT =3D 0x80,=0D NFT_SET_EXPR =3D 0x100,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_set_policies {=0D NFT_SET_POL_PERFORMANCE,=0D NFT_SET_POL_MEMORY,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_set_desc_attributes {=0D NFTA_SET_DESC_UNSPEC,=0D NFTA_SET_DESC_SIZE,=0D NFTA_SET_DESC_CONCAT,=0D __NFTA_SET_DESC_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_set_field_attributes {=0D NFTA_SET_FIELD_UNSPEC,=0D NFTA_SET_FIELD_LEN,=0D __NFTA_SET_FIELD_MAX=0D };=0D # 373 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_set_attributes {=0D NFTA_SET_UNSPEC,=0D NFTA_SET_TABLE,=0D NFTA_SET_NAME,=0D NFTA_SET_FLAGS,=0D NFTA_SET_KEY_TYPE,=0D NFTA_SET_KEY_LEN,=0D NFTA_SET_DATA_TYPE,=0D NFTA_SET_DATA_LEN,=0D NFTA_SET_POLICY,=0D NFTA_SET_DESC,=0D NFTA_SET_ID,=0D NFTA_SET_TIMEOUT,=0D NFTA_SET_GC_INTERVAL,=0D NFTA_SET_USERDATA,=0D NFTA_SET_PAD,=0D NFTA_SET_OBJ_TYPE,=0D NFTA_SET_HANDLE,=0D NFTA_SET_EXPR,=0D NFTA_SET_EXPRESSIONS,=0D __NFTA_SET_MAX=0D };=0D # 403 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_set_elem_flags {=0D NFT_SET_ELEM_INTERVAL_END =3D 0x1,=0D NFT_SET_ELEM_CATCHALL =3D 0x2,=0D };=0D # 422 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_set_elem_attributes {=0D NFTA_SET_ELEM_UNSPEC,=0D NFTA_SET_ELEM_KEY,=0D NFTA_SET_ELEM_DATA,=0D NFTA_SET_ELEM_FLAGS,=0D NFTA_SET_ELEM_TIMEOUT,=0D NFTA_SET_ELEM_EXPIRATION,=0D NFTA_SET_ELEM_USERDATA,=0D NFTA_SET_ELEM_EXPR,=0D NFTA_SET_ELEM_PAD,=0D NFTA_SET_ELEM_OBJREF,=0D NFTA_SET_ELEM_KEY_END,=0D NFTA_SET_ELEM_EXPRESSIONS,=0D __NFTA_SET_ELEM_MAX=0D };=0D # 447 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_set_elem_list_attributes {=0D NFTA_SET_ELEM_LIST_UNSPEC,=0D NFTA_SET_ELEM_LIST_TABLE,=0D NFTA_SET_ELEM_LIST_SET,=0D NFTA_SET_ELEM_LIST_ELEMENTS,=0D NFTA_SET_ELEM_LIST_SET_ID,=0D __NFTA_SET_ELEM_LIST_MAX=0D };=0D # 471 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_data_types {=0D NFT_DATA_VALUE,=0D NFT_DATA_VERDICT =3D 0xffffff00U,=0D };=0D # 484 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_data_attributes {=0D NFTA_DATA_UNSPEC,=0D NFTA_DATA_VALUE,=0D NFTA_DATA_VERDICT,=0D __NFTA_DATA_MAX=0D };=0D # 502 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_verdict_attributes {=0D NFTA_VERDICT_UNSPEC,=0D NFTA_VERDICT_CODE,=0D NFTA_VERDICT_CHAIN,=0D NFTA_VERDICT_CHAIN_ID,=0D __NFTA_VERDICT_MAX=0D };=0D # 517 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_expr_attributes {=0D NFTA_EXPR_UNSPEC,=0D NFTA_EXPR_NAME,=0D NFTA_EXPR_DATA,=0D __NFTA_EXPR_MAX=0D };=0D # 531 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_immediate_attributes {=0D NFTA_IMMEDIATE_UNSPEC,=0D NFTA_IMMEDIATE_DREG,=0D NFTA_IMMEDIATE_DATA,=0D __NFTA_IMMEDIATE_MAX=0D };=0D # 547 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_bitwise_ops {=0D NFT_BITWISE_BOOL,=0D NFT_BITWISE_LSHIFT,=0D NFT_BITWISE_RSHIFT,=0D };=0D # 578 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_bitwise_attributes {=0D NFTA_BITWISE_UNSPEC,=0D NFTA_BITWISE_SREG,=0D NFTA_BITWISE_DREG,=0D NFTA_BITWISE_LEN,=0D NFTA_BITWISE_MASK,=0D NFTA_BITWISE_XOR,=0D NFTA_BITWISE_OP,=0D NFTA_BITWISE_DATA,=0D __NFTA_BITWISE_MAX=0D };=0D # 597 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_byteorder_ops {=0D NFT_BYTEORDER_NTOH,=0D NFT_BYTEORDER_HTON,=0D };=0D # 611 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_byteorder_attributes {=0D NFTA_BYTEORDER_UNSPEC,=0D NFTA_BYTEORDER_SREG,=0D NFTA_BYTEORDER_DREG,=0D NFTA_BYTEORDER_OP,=0D NFTA_BYTEORDER_LEN,=0D NFTA_BYTEORDER_SIZE,=0D __NFTA_BYTEORDER_MAX=0D };=0D # 632 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_cmp_ops {=0D NFT_CMP_EQ,=0D NFT_CMP_NEQ,=0D NFT_CMP_LT,=0D NFT_CMP_LTE,=0D NFT_CMP_GT,=0D NFT_CMP_GTE,=0D };=0D # 648 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_cmp_attributes {=0D NFTA_CMP_UNSPEC,=0D NFTA_CMP_SREG,=0D NFTA_CMP_OP,=0D NFTA_CMP_DATA,=0D __NFTA_CMP_MAX=0D };=0D # 663 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_range_ops {=0D NFT_RANGE_EQ,=0D NFT_RANGE_NEQ,=0D };=0D # 676 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_range_attributes {=0D NFTA_RANGE_UNSPEC,=0D NFTA_RANGE_SREG,=0D NFTA_RANGE_OP,=0D NFTA_RANGE_FROM_DATA,=0D NFTA_RANGE_TO_DATA,=0D __NFTA_RANGE_MAX=0D };=0D =0D =0D enum nft_lookup_flags {=0D NFT_LOOKUP_F_INV =3D (1 << 0),=0D };=0D # 699 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_lookup_attributes {=0D NFTA_LOOKUP_UNSPEC,=0D NFTA_LOOKUP_SET,=0D NFTA_LOOKUP_SREG,=0D NFTA_LOOKUP_DREG,=0D NFTA_LOOKUP_SET_ID,=0D NFTA_LOOKUP_FLAGS,=0D __NFTA_LOOKUP_MAX=0D };=0D =0D =0D enum nft_dynset_ops {=0D NFT_DYNSET_OP_ADD,=0D NFT_DYNSET_OP_UPDATE,=0D NFT_DYNSET_OP_DELETE,=0D };=0D =0D enum nft_dynset_flags {=0D NFT_DYNSET_F_INV =3D (1 << 0),=0D NFT_DYNSET_F_EXPR =3D (1 << 1),=0D };=0D # 734 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_dynset_attributes {=0D NFTA_DYNSET_UNSPEC,=0D NFTA_DYNSET_SET_NAME,=0D NFTA_DYNSET_SET_ID,=0D NFTA_DYNSET_OP,=0D NFTA_DYNSET_SREG_KEY,=0D NFTA_DYNSET_SREG_DATA,=0D NFTA_DYNSET_TIMEOUT,=0D NFTA_DYNSET_EXPR,=0D NFTA_DYNSET_PAD,=0D NFTA_DYNSET_FLAGS,=0D NFTA_DYNSET_EXPRESSIONS,=0D __NFTA_DYNSET_MAX,=0D };=0D # 758 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_payload_bases {=0D NFT_PAYLOAD_LL_HEADER,=0D NFT_PAYLOAD_NETWORK_HEADER,=0D NFT_PAYLOAD_TRANSPORT_HEADER,=0D NFT_PAYLOAD_INNER_HEADER,=0D };=0D # 772 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_payload_csum_types {=0D NFT_PAYLOAD_CSUM_NONE,=0D NFT_PAYLOAD_CSUM_INET,=0D NFT_PAYLOAD_CSUM_SCTP,=0D };=0D =0D enum nft_payload_csum_flags {=0D NFT_PAYLOAD_L4CSUM_PSEUDOHDR =3D (1 << 0),=0D };=0D # 794 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_payload_attributes {=0D NFTA_PAYLOAD_UNSPEC,=0D NFTA_PAYLOAD_DREG,=0D NFTA_PAYLOAD_BASE,=0D NFTA_PAYLOAD_OFFSET,=0D NFTA_PAYLOAD_LEN,=0D NFTA_PAYLOAD_SREG,=0D NFTA_PAYLOAD_CSUM_TYPE,=0D NFTA_PAYLOAD_CSUM_OFFSET,=0D NFTA_PAYLOAD_CSUM_FLAGS,=0D __NFTA_PAYLOAD_MAX=0D };=0D =0D =0D enum nft_exthdr_flags {=0D NFT_EXTHDR_F_PRESENT =3D (1 << 0),=0D };=0D # 820 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_exthdr_op {=0D NFT_EXTHDR_OP_IPV6,=0D NFT_EXTHDR_OP_TCPOPT,=0D NFT_EXTHDR_OP_IPV4,=0D NFT_EXTHDR_OP_SCTP,=0D __NFT_EXTHDR_OP_MAX=0D };=0D # 840 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_exthdr_attributes {=0D NFTA_EXTHDR_UNSPEC,=0D NFTA_EXTHDR_DREG,=0D NFTA_EXTHDR_TYPE,=0D NFTA_EXTHDR_OFFSET,=0D NFTA_EXTHDR_LEN,=0D NFTA_EXTHDR_FLAGS,=0D NFTA_EXTHDR_OP,=0D NFTA_EXTHDR_SREG,=0D __NFTA_EXTHDR_MAX=0D };=0D # 892 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_meta_keys {=0D NFT_META_LEN,=0D NFT_META_PROTOCOL,=0D NFT_META_PRIORITY,=0D NFT_META_MARK,=0D NFT_META_IIF,=0D NFT_META_OIF,=0D NFT_META_IIFNAME,=0D NFT_META_OIFNAME,=0D NFT_META_IFTYPE,=0D =0D NFT_META_OIFTYPE,=0D NFT_META_SKUID,=0D NFT_META_SKGID,=0D NFT_META_NFTRACE,=0D NFT_META_RTCLASSID,=0D NFT_META_SECMARK,=0D NFT_META_NFPROTO,=0D NFT_META_L4PROTO,=0D NFT_META_BRI_IIFNAME,=0D NFT_META_BRI_OIFNAME,=0D NFT_META_PKTTYPE,=0D NFT_META_CPU,=0D NFT_META_IIFGROUP,=0D NFT_META_OIFGROUP,=0D NFT_META_CGROUP,=0D NFT_META_PRANDOM,=0D NFT_META_SECPATH,=0D NFT_META_IIFKIND,=0D NFT_META_OIFKIND,=0D NFT_META_BRI_IIFPVID,=0D NFT_META_BRI_IIFVPROTO,=0D NFT_META_TIME_NS,=0D NFT_META_TIME_DAY,=0D NFT_META_TIME_HOUR,=0D NFT_META_SDIF,=0D NFT_META_SDIFNAME,=0D __NFT_META_IIFTYPE,=0D };=0D # 941 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_rt_keys {=0D NFT_RT_CLASSID,=0D NFT_RT_NEXTHOP4,=0D NFT_RT_NEXTHOP6,=0D NFT_RT_TCPMSS,=0D NFT_RT_XFRM,=0D __NFT_RT_MAX=0D };=0D # 957 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_hash_types {=0D NFT_HASH_JENKINS,=0D NFT_HASH_SYM,=0D };=0D # 975 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_hash_attributes {=0D NFTA_HASH_UNSPEC,=0D NFTA_HASH_SREG,=0D NFTA_HASH_DREG,=0D NFTA_HASH_LEN,=0D NFTA_HASH_MODULUS,=0D NFTA_HASH_SEED,=0D NFTA_HASH_OFFSET,=0D NFTA_HASH_TYPE,=0D NFTA_HASH_SET_NAME,=0D NFTA_HASH_SET_ID,=0D __NFTA_HASH_MAX,=0D };=0D # 997 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_meta_attributes {=0D NFTA_META_UNSPEC,=0D NFTA_META_DREG,=0D NFTA_META_KEY,=0D NFTA_META_SREG,=0D __NFTA_META_MAX=0D };=0D # 1012 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_rt_attributes {=0D NFTA_RT_UNSPEC,=0D NFTA_RT_DREG,=0D NFTA_RT_KEY,=0D __NFTA_RT_MAX=0D };=0D # 1027 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_socket_attributes {=0D NFTA_SOCKET_UNSPEC,=0D NFTA_SOCKET_KEY,=0D NFTA_SOCKET_DREG,=0D NFTA_SOCKET_LEVEL,=0D __NFTA_SOCKET_MAX=0D };=0D # 1044 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_socket_keys {=0D NFT_SOCKET_TRANSPARENT,=0D NFT_SOCKET_MARK,=0D NFT_SOCKET_WILDCARD,=0D NFT_SOCKET_CGROUPV2,=0D __NFT_SOCKET_MAX=0D };=0D # 1081 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_ct_keys {=0D NFT_CT_STATE,=0D NFT_CT_DIRECTION,=0D NFT_CT_STATUS,=0D NFT_CT_MARK,=0D NFT_CT_SECMARK,=0D NFT_CT_EXPIRATION,=0D NFT_CT_HELPER,=0D NFT_CT_L3PROTOCOL,=0D NFT_CT_SRC,=0D NFT_CT_DST,=0D NFT_CT_PROTOCOL,=0D NFT_CT_PROTO_SRC,=0D NFT_CT_PROTO_DST,=0D NFT_CT_LABELS,=0D NFT_CT_PKTS,=0D NFT_CT_BYTES,=0D NFT_CT_AVGPKT,=0D NFT_CT_ZONE,=0D NFT_CT_EVENTMASK,=0D NFT_CT_SRC_IP,=0D NFT_CT_DST_IP,=0D NFT_CT_SRC_IP6,=0D NFT_CT_DST_IP6,=0D NFT_CT_ID,=0D __NFT_CT_MAX=0D };=0D # 1118 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_ct_attributes {=0D NFTA_CT_UNSPEC,=0D NFTA_CT_DREG,=0D NFTA_CT_KEY,=0D NFTA_CT_DIRECTION,=0D NFTA_CT_SREG,=0D __NFTA_CT_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum nft_offload_attributes {=0D NFTA_FLOW_UNSPEC,=0D NFTA_FLOW_TABLE_NAME,=0D __NFTA_FLOW_MAX,=0D };=0D =0D =0D enum nft_limit_type {=0D NFT_LIMIT_PKTS,=0D NFT_LIMIT_PKT_BYTES=0D };=0D =0D enum nft_limit_flags {=0D NFT_LIMIT_F_INV =3D (1 << 0),=0D };=0D # 1157 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_limit_attributes {=0D NFTA_LIMIT_UNSPEC,=0D NFTA_LIMIT_RATE,=0D NFTA_LIMIT_UNIT,=0D NFTA_LIMIT_BURST,=0D NFTA_LIMIT_TYPE,=0D NFTA_LIMIT_FLAGS,=0D NFTA_LIMIT_PAD,=0D __NFTA_LIMIT_MAX=0D };=0D =0D =0D enum nft_connlimit_flags {=0D NFT_CONNLIMIT_F_INV =3D (1 << 0),=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_connlimit_attributes {=0D NFTA_CONNLIMIT_UNSPEC,=0D NFTA_CONNLIMIT_COUNT,=0D NFTA_CONNLIMIT_FLAGS,=0D __NFTA_CONNLIMIT_MAX=0D };=0D # 1193 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_counter_attributes {=0D NFTA_COUNTER_UNSPEC,=0D NFTA_COUNTER_BYTES,=0D NFTA_COUNTER_PACKETS,=0D NFTA_COUNTER_PAD,=0D __NFTA_COUNTER_MAX=0D };=0D # 1208 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_last_attributes {=0D NFTA_LAST_UNSPEC,=0D NFTA_LAST_SET,=0D NFTA_LAST_MSECS,=0D NFTA_LAST_PAD,=0D __NFTA_LAST_MAX=0D };=0D # 1227 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_log_attributes {=0D NFTA_LOG_UNSPEC,=0D NFTA_LOG_GROUP,=0D NFTA_LOG_PREFIX,=0D NFTA_LOG_SNAPLEN,=0D NFTA_LOG_QTHRESHOLD,=0D NFTA_LOG_LEVEL,=0D NFTA_LOG_FLAGS,=0D __NFTA_LOG_MAX=0D };=0D # 1252 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_log_level {=0D NFT_LOGLEVEL_EMERG,=0D NFT_LOGLEVEL_ALERT,=0D NFT_LOGLEVEL_CRIT,=0D NFT_LOGLEVEL_ERR,=0D NFT_LOGLEVEL_WARNING,=0D NFT_LOGLEVEL_NOTICE,=0D NFT_LOGLEVEL_INFO,=0D NFT_LOGLEVEL_DEBUG,=0D NFT_LOGLEVEL_AUDIT,=0D __NFT_LOGLEVEL_MAX=0D };=0D # 1274 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_queue_attributes {=0D NFTA_QUEUE_UNSPEC,=0D NFTA_QUEUE_NUM,=0D NFTA_QUEUE_TOTAL,=0D NFTA_QUEUE_FLAGS,=0D NFTA_QUEUE_SREG_QNUM,=0D __NFTA_QUEUE_MAX=0D };=0D =0D =0D =0D =0D =0D =0D enum nft_quota_flags {=0D NFT_QUOTA_F_INV =3D (1 << 0),=0D NFT_QUOTA_F_DEPLETED =3D (1 << 1),=0D };=0D # 1300 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_quota_attributes {=0D NFTA_QUOTA_UNSPEC,=0D NFTA_QUOTA_BYTES,=0D NFTA_QUOTA_FLAGS,=0D NFTA_QUOTA_PAD,=0D NFTA_QUOTA_CONSUMED,=0D __NFTA_QUOTA_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_secmark_attributes {=0D NFTA_SECMARK_UNSPEC,=0D NFTA_SECMARK_CTX,=0D __NFTA_SECMARK_MAX,=0D };=0D # 1332 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_reject_types {=0D NFT_REJECT_ICMP_UNREACH,=0D NFT_REJECT_TCP_RST,=0D NFT_REJECT_ICMPX_UNREACH,=0D };=0D # 1348 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_reject_inet_code {=0D NFT_REJECT_ICMPX_NO_ROUTE =3D 0,=0D NFT_REJECT_ICMPX_PORT_UNREACH,=0D NFT_REJECT_ICMPX_HOST_UNREACH,=0D NFT_REJECT_ICMPX_ADMIN_PROHIBITED,=0D __NFT_REJECT_ICMPX_MAX=0D };=0D # 1363 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_reject_attributes {=0D NFTA_REJECT_UNSPEC,=0D NFTA_REJECT_TYPE,=0D NFTA_REJECT_ICMP_CODE,=0D __NFTA_REJECT_MAX=0D };=0D # 1377 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_nat_types {=0D NFT_NAT_SNAT,=0D NFT_NAT_DNAT,=0D };=0D # 1393 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_nat_attributes {=0D NFTA_NAT_UNSPEC,=0D NFTA_NAT_TYPE,=0D NFTA_NAT_FAMILY,=0D NFTA_NAT_REG_ADDR_MIN,=0D NFTA_NAT_REG_ADDR_MAX,=0D NFTA_NAT_REG_PROTO_MIN,=0D NFTA_NAT_REG_PROTO_MAX,=0D NFTA_NAT_FLAGS,=0D __NFTA_NAT_MAX=0D };=0D # 1413 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_tproxy_attributes {=0D NFTA_TPROXY_UNSPEC,=0D NFTA_TPROXY_FAMILY,=0D NFTA_TPROXY_REG_ADDR,=0D NFTA_TPROXY_REG_PORT,=0D __NFTA_TPROXY_MAX=0D };=0D # 1429 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_masq_attributes {=0D NFTA_MASQ_UNSPEC,=0D NFTA_MASQ_FLAGS,=0D NFTA_MASQ_REG_PROTO_MIN,=0D NFTA_MASQ_REG_PROTO_MAX,=0D __NFTA_MASQ_MAX=0D };=0D # 1445 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_redir_attributes {=0D NFTA_REDIR_UNSPEC,=0D NFTA_REDIR_REG_PROTO_MIN,=0D NFTA_REDIR_REG_PROTO_MAX,=0D NFTA_REDIR_FLAGS,=0D __NFTA_REDIR_MAX=0D };=0D # 1460 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_dup_attributes {=0D NFTA_DUP_UNSPEC,=0D NFTA_DUP_SREG_ADDR,=0D NFTA_DUP_SREG_DEV,=0D __NFTA_DUP_MAX=0D };=0D # 1475 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_fwd_attributes {=0D NFTA_FWD_UNSPEC,=0D NFTA_FWD_SREG_DEV,=0D NFTA_FWD_SREG_ADDR,=0D NFTA_FWD_NFPROTO,=0D __NFTA_FWD_MAX=0D };=0D # 1493 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_objref_attributes {=0D NFTA_OBJREF_UNSPEC,=0D NFTA_OBJREF_IMM_TYPE,=0D NFTA_OBJREF_IMM_NAME,=0D NFTA_OBJREF_SET_SREG,=0D NFTA_OBJREF_SET_NAME,=0D NFTA_OBJREF_SET_ID,=0D __NFTA_OBJREF_MAX=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_gen_attributes {=0D NFTA_GEN_UNSPEC,=0D NFTA_GEN_ID,=0D NFTA_GEN_PROC_PID,=0D NFTA_GEN_PROC_NAME,=0D __NFTA_GEN_MAX=0D };=0D # 1528 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_fib_attributes {=0D NFTA_FIB_UNSPEC,=0D NFTA_FIB_DREG,=0D NFTA_FIB_RESULT,=0D NFTA_FIB_FLAGS,=0D __NFTA_FIB_MAX=0D };=0D =0D =0D enum nft_fib_result {=0D NFT_FIB_RESULT_UNSPEC,=0D NFT_FIB_RESULT_OIF,=0D NFT_FIB_RESULT_OIFNAME,=0D NFT_FIB_RESULT_ADDRTYPE,=0D __NFT_FIB_RESULT_MAX=0D };=0D =0D =0D enum nft_fib_flags {=0D NFTA_FIB_F_SADDR =3D 1 << 0,=0D NFTA_FIB_F_DADDR =3D 1 << 1,=0D NFTA_FIB_F_MARK =3D 1 << 2,=0D NFTA_FIB_F_IIF =3D 1 << 3,=0D NFTA_FIB_F_OIF =3D 1 << 4,=0D NFTA_FIB_F_PRESENT =3D 1 << 5,=0D };=0D =0D enum nft_ct_helper_attributes {=0D NFTA_CT_HELPER_UNSPEC,=0D NFTA_CT_HELPER_NAME,=0D NFTA_CT_HELPER_L3PROTO,=0D NFTA_CT_HELPER_L4PROTO,=0D __NFTA_CT_HELPER_MAX,=0D };=0D =0D =0D enum nft_ct_timeout_timeout_attributes {=0D NFTA_CT_TIMEOUT_UNSPEC,=0D NFTA_CT_TIMEOUT_L3PROTO,=0D NFTA_CT_TIMEOUT_L4PROTO,=0D NFTA_CT_TIMEOUT_DATA,=0D __NFTA_CT_TIMEOUT_MAX,=0D };=0D =0D =0D enum nft_ct_expectation_attributes {=0D NFTA_CT_EXPECT_UNSPEC,=0D NFTA_CT_EXPECT_L3PROTO,=0D NFTA_CT_EXPECT_L4PROTO,=0D NFTA_CT_EXPECT_DPORT,=0D NFTA_CT_EXPECT_TIMEOUT,=0D NFTA_CT_EXPECT_SIZE,=0D __NFTA_CT_EXPECT_MAX,=0D };=0D # 1609 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_object_attributes {=0D NFTA_OBJ_UNSPEC,=0D NFTA_OBJ_TABLE,=0D NFTA_OBJ_NAME,=0D NFTA_OBJ_TYPE,=0D NFTA_OBJ_DATA,=0D NFTA_OBJ_USE,=0D NFTA_OBJ_HANDLE,=0D NFTA_OBJ_PAD,=0D NFTA_OBJ_USERDATA,=0D __NFTA_OBJ_MAX=0D };=0D # 1629 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_flowtable_flags {=0D NFT_FLOWTABLE_HW_OFFLOAD =3D 0x1,=0D NFT_FLOWTABLE_COUNTER =3D 0x2,=0D NFT_FLOWTABLE_MASK =3D (NFT_FLOWTABLE_HW_OFFLOAD |=0D NFT_FLOWTABLE_COUNTER)=0D };=0D # 1646 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_flowtable_attributes {=0D NFTA_FLOWTABLE_UNSPEC,=0D NFTA_FLOWTABLE_TABLE,=0D NFTA_FLOWTABLE_NAME,=0D NFTA_FLOWTABLE_HOOK,=0D NFTA_FLOWTABLE_USE,=0D NFTA_FLOWTABLE_HANDLE,=0D NFTA_FLOWTABLE_PAD,=0D NFTA_FLOWTABLE_FLAGS,=0D __NFTA_FLOWTABLE_MAX=0D };=0D # 1666 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_flowtable_hook_attributes {=0D NFTA_FLOWTABLE_HOOK_UNSPEC,=0D NFTA_FLOWTABLE_HOOK_NUM,=0D NFTA_FLOWTABLE_HOOK_PRIORITY,=0D NFTA_FLOWTABLE_HOOK_DEVS,=0D __NFTA_FLOWTABLE_HOOK_MAX=0D };=0D # 1682 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_osf_attributes {=0D NFTA_OSF_UNSPEC,=0D NFTA_OSF_DREG,=0D NFTA_OSF_TTL,=0D NFTA_OSF_FLAGS,=0D __NFTA_OSF_MAX,=0D };=0D =0D =0D enum nft_osf_flags {=0D NFT_OSF_F_VERSION =3D (1 << 0),=0D };=0D # 1702 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_synproxy_attributes {=0D NFTA_SYNPROXY_UNSPEC,=0D NFTA_SYNPROXY_MSS,=0D NFTA_SYNPROXY_WSCALE,=0D NFTA_SYNPROXY_FLAGS,=0D __NFTA_SYNPROXY_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum nft_devices_attributes {=0D NFTA_DEVICE_UNSPEC,=0D NFTA_DEVICE_NAME,=0D __NFTA_DEVICE_MAX=0D };=0D # 1731 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_xfrm_attributes {=0D NFTA_XFRM_UNSPEC,=0D NFTA_XFRM_DREG,=0D NFTA_XFRM_KEY,=0D NFTA_XFRM_DIR,=0D NFTA_XFRM_SPNUM,=0D __NFTA_XFRM_MAX=0D };=0D =0D =0D enum nft_xfrm_keys {=0D NFT_XFRM_KEY_UNSPEC,=0D NFT_XFRM_KEY_DADDR_IP4,=0D NFT_XFRM_KEY_DADDR_IP6,=0D NFT_XFRM_KEY_SADDR_IP4,=0D NFT_XFRM_KEY_SADDR_IP6,=0D NFT_XFRM_KEY_REQID,=0D NFT_XFRM_KEY_SPI,=0D __NFT_XFRM_KEY_MAX,=0D };=0D # 1773 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_trace_attributes {=0D NFTA_TRACE_UNSPEC,=0D NFTA_TRACE_TABLE,=0D NFTA_TRACE_CHAIN,=0D NFTA_TRACE_RULE_HANDLE,=0D NFTA_TRACE_TYPE,=0D NFTA_TRACE_VERDICT,=0D NFTA_TRACE_ID,=0D NFTA_TRACE_LL_HEADER,=0D NFTA_TRACE_NETWORK_HEADER,=0D NFTA_TRACE_TRANSPORT_HEADER,=0D NFTA_TRACE_IIF,=0D NFTA_TRACE_IIFTYPE,=0D NFTA_TRACE_OIF,=0D NFTA_TRACE_OIFTYPE,=0D NFTA_TRACE_MARK,=0D NFTA_TRACE_NFPROTO,=0D NFTA_TRACE_POLICY,=0D NFTA_TRACE_PAD,=0D __NFTA_TRACE_MAX=0D };=0D =0D =0D enum nft_trace_types {=0D NFT_TRACETYPE_UNSPEC,=0D NFT_TRACETYPE_POLICY,=0D NFT_TRACETYPE_RETURN,=0D NFT_TRACETYPE_RULE,=0D __NFT_TRACETYPE_MAX=0D };=0D # 1815 "./include/uapi/linux/netfilter/nf_tables.h"=0D enum nft_ng_attributes {=0D NFTA_NG_UNSPEC,=0D NFTA_NG_DREG,=0D NFTA_NG_MODULUS,=0D NFTA_NG_TYPE,=0D NFTA_NG_OFFSET,=0D NFTA_NG_SET_NAME,=0D NFTA_NG_SET_ID,=0D __NFTA_NG_MAX=0D };=0D =0D =0D enum nft_ng_types {=0D NFT_NG_INCREMENTAL,=0D NFT_NG_RANDOM,=0D __NFT_NG_MAX=0D };=0D =0D =0D enum nft_tunnel_key_ip_attributes {=0D NFTA_TUNNEL_KEY_IP_UNSPEC,=0D NFTA_TUNNEL_KEY_IP_SRC,=0D NFTA_TUNNEL_KEY_IP_DST,=0D __NFTA_TUNNEL_KEY_IP_MAX=0D };=0D =0D =0D enum nft_tunnel_ip6_attributes {=0D NFTA_TUNNEL_KEY_IP6_UNSPEC,=0D NFTA_TUNNEL_KEY_IP6_SRC,=0D NFTA_TUNNEL_KEY_IP6_DST,=0D NFTA_TUNNEL_KEY_IP6_FLOWLABEL,=0D __NFTA_TUNNEL_KEY_IP6_MAX=0D };=0D =0D =0D enum nft_tunnel_opts_attributes {=0D NFTA_TUNNEL_KEY_OPTS_UNSPEC,=0D NFTA_TUNNEL_KEY_OPTS_VXLAN,=0D NFTA_TUNNEL_KEY_OPTS_ERSPAN,=0D NFTA_TUNNEL_KEY_OPTS_GENEVE,=0D __NFTA_TUNNEL_KEY_OPTS_MAX=0D };=0D =0D =0D enum nft_tunnel_opts_vxlan_attributes {=0D NFTA_TUNNEL_KEY_VXLAN_UNSPEC,=0D NFTA_TUNNEL_KEY_VXLAN_GBP,=0D __NFTA_TUNNEL_KEY_VXLAN_MAX=0D };=0D =0D =0D enum nft_tunnel_opts_erspan_attributes {=0D NFTA_TUNNEL_KEY_ERSPAN_UNSPEC,=0D NFTA_TUNNEL_KEY_ERSPAN_VERSION,=0D NFTA_TUNNEL_KEY_ERSPAN_V1_INDEX,=0D NFTA_TUNNEL_KEY_ERSPAN_V2_HWID,=0D NFTA_TUNNEL_KEY_ERSPAN_V2_DIR,=0D __NFTA_TUNNEL_KEY_ERSPAN_MAX=0D };=0D =0D =0D enum nft_tunnel_opts_geneve_attributes {=0D NFTA_TUNNEL_KEY_GENEVE_UNSPEC,=0D NFTA_TUNNEL_KEY_GENEVE_CLASS,=0D NFTA_TUNNEL_KEY_GENEVE_TYPE,=0D NFTA_TUNNEL_KEY_GENEVE_DATA,=0D __NFTA_TUNNEL_KEY_GENEVE_MAX=0D };=0D =0D =0D enum nft_tunnel_flags {=0D NFT_TUNNEL_F_ZERO_CSUM_TX =3D (1 << 0),=0D NFT_TUNNEL_F_DONT_FRAGMENT =3D (1 << 1),=0D NFT_TUNNEL_F_SEQ_NUMBER =3D (1 << 2),=0D };=0D =0D =0D =0D =0D enum nft_tunnel_key_attributes {=0D NFTA_TUNNEL_KEY_UNSPEC,=0D NFTA_TUNNEL_KEY_ID,=0D NFTA_TUNNEL_KEY_IP,=0D NFTA_TUNNEL_KEY_IP6,=0D NFTA_TUNNEL_KEY_FLAGS,=0D NFTA_TUNNEL_KEY_TOS,=0D NFTA_TUNNEL_KEY_TTL,=0D NFTA_TUNNEL_KEY_SPORT,=0D NFTA_TUNNEL_KEY_DPORT,=0D NFTA_TUNNEL_KEY_OPTS,=0D __NFTA_TUNNEL_KEY_MAX=0D };=0D =0D =0D enum nft_tunnel_keys {=0D NFT_TUNNEL_PATH,=0D NFT_TUNNEL_ID,=0D __NFT_TUNNEL_MAX=0D };=0D =0D =0D enum nft_tunnel_mode {=0D NFT_TUNNEL_MODE_NONE,=0D NFT_TUNNEL_MODE_RX,=0D NFT_TUNNEL_MODE_TX,=0D __NFT_TUNNEL_MODE_MAX=0D };=0D =0D =0D enum nft_tunnel_attributes {=0D NFTA_TUNNEL_UNSPEC,=0D NFTA_TUNNEL_KEY,=0D NFTA_TUNNEL_DREG,=0D NFTA_TUNNEL_MODE,=0D __NFTA_TUNNEL_MAX=0D };=0D # 17 "./include/linux/audit.h" 2=0D =0D =0D =0D =0D struct audit_sig_info {=0D uid_t uid;=0D pid_t pid;=0D char ctx[];=0D };=0D =0D struct audit_buffer;=0D struct audit_context;=0D struct inode;=0D struct netlink_skb_parms;=0D struct path;=0D struct linux_binprm;=0D struct mq_attr;=0D struct mqstat;=0D struct audit_watch;=0D struct audit_tree;=0D struct sk_buff;=0D =0D struct audit_krule {=0D u32 pflags;=0D u32 flags;=0D u32 listnr;=0D u32 action;=0D u32 mask[64];=0D u32 buflen;=0D u32 field_count;=0D char *filterkey;=0D struct audit_field *fields;=0D struct audit_field *arch_f;=0D struct audit_field *inode_f;=0D struct audit_watch *watch;=0D struct audit_tree *tree;=0D struct audit_fsnotify_mark *exe;=0D struct list_head rlist;=0D struct list_head list;=0D u64 prio;=0D };=0D =0D =0D =0D =0D struct audit_field {=0D u32 type;=0D union {=0D u32 val;=0D kuid_t uid;=0D kgid_t gid;=0D struct {=0D char *lsm_str;=0D void *lsm_rule;=0D };=0D };=0D u32 op;=0D };=0D =0D enum audit_ntp_type {=0D AUDIT_NTP_OFFSET,=0D AUDIT_NTP_FREQ,=0D AUDIT_NTP_STATUS,=0D AUDIT_NTP_TAI,=0D AUDIT_NTP_TICK,=0D AUDIT_NTP_ADJUST,=0D =0D AUDIT_NTP_NVALS=0D };=0D # 96 "./include/linux/audit.h"=0D struct audit_ntp_data {};=0D =0D =0D enum audit_nfcfgop {=0D AUDIT_XT_OP_REGISTER,=0D AUDIT_XT_OP_REPLACE,=0D AUDIT_XT_OP_UNREGISTER,=0D AUDIT_NFT_OP_TABLE_REGISTER,=0D AUDIT_NFT_OP_TABLE_UNREGISTER,=0D AUDIT_NFT_OP_CHAIN_REGISTER,=0D AUDIT_NFT_OP_CHAIN_UNREGISTER,=0D AUDIT_NFT_OP_RULE_REGISTER,=0D AUDIT_NFT_OP_RULE_UNREGISTER,=0D AUDIT_NFT_OP_SET_REGISTER,=0D AUDIT_NFT_OP_SET_UNREGISTER,=0D AUDIT_NFT_OP_SETELEM_REGISTER,=0D AUDIT_NFT_OP_SETELEM_UNREGISTER,=0D AUDIT_NFT_OP_GEN_REGISTER,=0D AUDIT_NFT_OP_OBJ_REGISTER,=0D AUDIT_NFT_OP_OBJ_UNREGISTER,=0D AUDIT_NFT_OP_OBJ_RESET,=0D AUDIT_NFT_OP_FLOWTABLE_REGISTER,=0D AUDIT_NFT_OP_FLOWTABLE_UNREGISTER,=0D AUDIT_NFT_OP_INVALID,=0D };=0D =0D extern int is_audit_feature_set(int which);=0D =0D extern int __attribute__((__section__(".init.text"))) __attribute__((__cold= __)) __attribute__((__no_sanitize__("cfi"))) audit_register_class(int class= , unsigned *list);=0D extern int audit_classify_syscall(int abi, unsigned syscall);=0D extern int audit_classify_arch(int arch);=0D =0D extern unsigned compat_write_class[];=0D extern unsigned compat_read_class[];=0D extern unsigned compat_dir_class[];=0D extern unsigned compat_chattr_class[];=0D extern unsigned compat_signal_class[];=0D =0D extern int audit_classify_compat_syscall(int abi, unsigned syscall);=0D # 150 "./include/linux/audit.h"=0D struct filename;=0D # 214 "./include/linux/audit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__format__(pr= intf, 4, 5)))=0D void audit_log(struct audit_context *ctx, gfp_t gfp_mask, int type,=0D const char *fmt, ...)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct audit_buffer *audit_l= og_start(struct audit_context *ctx,=0D gfp_t gfp_mask, int type)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__format__(pr= intf, 2, 3)))=0D void audit_log_format(struct audit_buffer *ab, const char *fmt, ...)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_end(struct au= dit_buffer *ab)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_n_hex(struct = audit_buffer *ab,=0D const unsigned char *buf, size_t len)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_n_string(stru= ct audit_buffer *ab,=0D const char *buf, size_t n)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_n_untrustedst= ring(struct audit_buffer *ab,=0D const char *string, size_t n)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_untrustedstri= ng(struct audit_buffer *ab,=0D const char *string)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_d_path(struct= audit_buffer *ab,=0D const char *prefix,=0D const struct path *path)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_key(struct au= dit_buffer *ab, char *key)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_path_denied(i= nt type, const char *operation)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_log_task_context(s= truct audit_buffer *ab)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_task_info(str= uct audit_buffer *ab)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) kuid_t audit_get_loginuid(st= ruct task_struct *tsk)=0D {=0D return (kuid_t){ -1 };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int audit_get_sessi= onid(struct task_struct *tsk)=0D {=0D return ((unsigned int)-1);=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_signal_info(int si= g, struct task_struct *t)=0D {=0D return 0;=0D }=0D # 579 "./include/linux/audit.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_alloc(struct task_= struct *task)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_alloc_kernel(struc= t task_struct *task)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_free(struct task_= struct *task)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_uring_entry(u8 op= )=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_uring_exit(int su= ccess, long code)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_syscall_entry(int= major, unsigned long a0,=0D unsigned long a1, unsigned long a2,=0D unsigned long a3)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_syscall_exit(void= *pt_regs)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool audit_dummy_context(voi= d)=0D {=0D return true;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_set_context(struc= t task_struct *task, struct audit_context *ctx)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct audit_context *audit_= context(void)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct filename *audit_reuse= name(const char *name)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_getname(struct fi= lename *name)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_inode(struct file= name *name,=0D const struct dentry *dentry,=0D unsigned int aflags)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_file(struct file = *file)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_inode_parent_hidd= en(struct filename *name,=0D const struct dentry *dentry)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_inode_child(struc= t inode *parent,=0D const struct dentry *dentry,=0D const unsigned char type)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_core_dumps(long s= ignr)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_seccomp(unsigned = long syscall, long signr, int code)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_seccomp_actions_l= ogged(const char *names,=0D const char *old_names, int res)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ipc_obj(struct ke= rn_ipc_perm *ipcp)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ipc_set_perm(unsi= gned long qbytes, uid_t uid,=0D gid_t gid, umode_t mode)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_bprm(struct linux= _binprm *bprm)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_socketcall(int nar= gs, unsigned long *args)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_socketcall_compat(= int nargs, u32 *args)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_fd_pair(int fd1, = int fd2)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_sockaddr(int len, = void *addr)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_mq_open(int oflag= , umode_t mode, struct mq_attr *attr)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_mq_sendrecv(mqd_t= mqdes, size_t msg_len,=0D unsigned int msg_prio,=0D const struct timespec64 *abs_timeout)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_mq_notify(mqd_t m= qdes,=0D const struct sigevent *notification)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_mq_getsetattr(mqd= _t mqdes, struct mq_attr *mqstat)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int audit_log_bprm_fcaps(str= uct linux_binprm *bprm,=0D const struct cred *new,=0D const struct cred *old)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_capset(const = struct cred *new,=0D const struct cred *old)=0D { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_mmap_fd(int fd, i= nt flags)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_openat2_how(struc= t open_how *how)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_kern_module(c= har *name)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_fanotify(unsigned= int response)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_tk_injoffset(stru= ct timespec64 offset)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ntp_init(struct a= udit_ntp_data *ad)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ntp_set_old(struc= t audit_ntp_data *ad,=0D enum audit_ntp_type type, long long val)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ntp_set_new(struc= t audit_ntp_data *ad,=0D enum audit_ntp_type type, long long val)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ntp_log(const str= uct audit_ntp_data *ad)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_ptrace(struct tas= k_struct *t)=0D { }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void audit_log_nfcfg(const c= har *name, u8 af,=0D unsigned int nentries,=0D enum audit_nfcfgop op, gfp_t gfp)=0D { }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool audit_loginuid_set(stru= ct task_struct *tsk)=0D {=0D return uid_valid(audit_get_loginuid(tsk));=0D }=0D # 16 "./include/net/xfrm.h" 2=0D # 120 "./include/net/xfrm.h"=0D struct xfrm_state_walk {=0D struct list_head all;=0D u8 state;=0D u8 dying;=0D u8 proto;=0D u32 seq;=0D struct xfrm_address_filter *filter;=0D };=0D =0D struct xfrm_state_offload {=0D struct net_device *dev;=0D netdevice_tracker dev_tracker;=0D struct net_device *real_dev;=0D unsigned long offload_handle;=0D unsigned int num_exthdrs;=0D u8 flags;=0D };=0D =0D struct xfrm_mode {=0D u8 encap;=0D u8 family;=0D u8 flags;=0D };=0D =0D =0D enum {=0D XFRM_MODE_FLAG_TUNNEL =3D 1,=0D };=0D =0D enum xfrm_replay_mode {=0D XFRM_REPLAY_MODE_LEGACY,=0D XFRM_REPLAY_MODE_BMP,=0D XFRM_REPLAY_MODE_ESN,=0D };=0D =0D =0D struct xfrm_state {=0D possible_net_t xs_net;=0D union {=0D struct hlist_node gclist;=0D struct hlist_node bydst;=0D };=0D struct hlist_node bysrc;=0D struct hlist_node byspi;=0D struct hlist_node byseq;=0D =0D refcount_t refcnt;=0D spinlock_t lock;=0D =0D struct xfrm_id id;=0D struct xfrm_selector sel;=0D struct xfrm_mark mark;=0D u32 if_id;=0D u32 tfcpad;=0D =0D u32 genid;=0D =0D =0D struct xfrm_state_walk km;=0D =0D =0D struct {=0D u32 reqid;=0D u8 mode;=0D u8 replay_window;=0D u8 aalgo, ealgo, calgo;=0D u8 flags;=0D u16 family;=0D xfrm_address_t saddr;=0D int header_len;=0D int trailer_len;=0D u32 extra_flags;=0D struct xfrm_mark smark;=0D } props;=0D =0D struct xfrm_lifetime_cfg lft;=0D =0D =0D struct xfrm_algo_auth *aalg;=0D struct xfrm_algo *ealg;=0D struct xfrm_algo *calg;=0D struct xfrm_algo_aead *aead;=0D const char *geniv;=0D =0D =0D __be16 new_mapping_sport;=0D u32 new_mapping;=0D u32 mapping_maxage;=0D =0D =0D struct xfrm_encap_tmpl *encap;=0D struct sock *encap_sk;=0D =0D =0D xfrm_address_t *coaddr;=0D =0D =0D struct xfrm_state *tunnel;=0D =0D =0D atomic_t tunnel_users;=0D =0D =0D struct xfrm_replay_state replay;=0D struct xfrm_replay_state_esn *replay_esn;=0D =0D =0D struct xfrm_replay_state preplay;=0D struct xfrm_replay_state_esn *preplay_esn;=0D =0D =0D enum xfrm_replay_mode repl_mode;=0D =0D =0D =0D u32 xflags;=0D =0D =0D u32 replay_maxage;=0D u32 replay_maxdiff;=0D =0D =0D struct timer_list rtimer;=0D =0D =0D struct xfrm_stats stats;=0D =0D struct xfrm_lifetime_cur curlft;=0D struct hrtimer mtimer;=0D =0D struct xfrm_state_offload xso;=0D =0D =0D long saved_tmo;=0D =0D =0D time64_t lastused;=0D =0D struct page_frag xfrag;=0D =0D =0D =0D const struct xfrm_type *type;=0D struct xfrm_mode inner_mode;=0D struct xfrm_mode inner_mode_iaf;=0D struct xfrm_mode outer_mode;=0D =0D const struct xfrm_type_offload *type_offload;=0D =0D =0D struct xfrm_sec_ctx *security;=0D =0D =0D =0D void *data;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *xs_net(struct xf= rm_state *x)=0D {=0D return read_pnet(&x->xs_net);=0D }=0D =0D =0D =0D =0D =0D enum {=0D XFRM_STATE_VOID,=0D XFRM_STATE_ACQ,=0D XFRM_STATE_VALID,=0D XFRM_STATE_ERROR,=0D XFRM_STATE_EXPIRED,=0D XFRM_STATE_DEAD=0D };=0D =0D =0D struct km_event {=0D union {=0D u32 hard;=0D u32 proto;=0D u32 byid;=0D u32 aevent;=0D u32 type;=0D } data;=0D =0D u32 seq;=0D u32 portid;=0D u32 event;=0D struct net *net;=0D };=0D =0D struct xfrm_if_cb {=0D struct xfrm_if *(*decode_session)(struct sk_buff *skb,=0D unsigned short family);=0D };=0D =0D void xfrm_if_register_cb(const struct xfrm_if_cb *ifcb);=0D void xfrm_if_unregister_cb(void);=0D =0D struct net_device;=0D struct xfrm_type;=0D struct xfrm_dst;=0D struct xfrm_policy_afinfo {=0D struct dst_ops *dst_ops;=0D struct dst_entry *(*dst_lookup)(struct net *net,=0D int tos, int oif,=0D const xfrm_address_t *saddr,=0D const xfrm_address_t *daddr,=0D u32 mark);=0D int (*get_saddr)(struct net *net, int oif,=0D xfrm_address_t *saddr,=0D xfrm_address_t *daddr,=0D u32 mark);=0D int (*fill_dst)(struct xfrm_dst *xdst,=0D struct net_device *dev,=0D const struct flowi *fl);=0D struct dst_entry *(*blackhole_route)(struct net *net, struct dst_entry *or= ig);=0D };=0D =0D int xfrm_policy_register_afinfo(const struct xfrm_policy_afinfo *afinfo, in= t family);=0D void xfrm_policy_unregister_afinfo(const struct xfrm_policy_afinfo *afinfo)= ;=0D void km_policy_notify(struct xfrm_policy *xp, int dir,=0D const struct km_event *c);=0D void km_state_notify(struct xfrm_state *x, const struct km_event *c);=0D =0D struct xfrm_tmpl;=0D int km_query(struct xfrm_state *x, struct xfrm_tmpl *t,=0D struct xfrm_policy *pol);=0D void km_state_expired(struct xfrm_state *x, int hard, u32 portid);=0D int __xfrm_state_delete(struct xfrm_state *x);=0D =0D struct xfrm_state_afinfo {=0D u8 family;=0D u8 proto;=0D =0D const struct xfrm_type_offload *type_offload_esp;=0D =0D const struct xfrm_type *type_esp;=0D const struct xfrm_type *type_ipip;=0D const struct xfrm_type *type_ipip6;=0D const struct xfrm_type *type_comp;=0D const struct xfrm_type *type_ah;=0D const struct xfrm_type *type_routing;=0D const struct xfrm_type *type_dstopts;=0D =0D int (*output)(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int (*transport_finish)(struct sk_buff *skb,=0D int async);=0D void (*local_error)(struct sk_buff *skb, u32 mtu);=0D };=0D =0D int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo);=0D int xfrm_state_unregister_afinfo(struct xfrm_state_afinfo *afinfo);=0D struct xfrm_state_afinfo *xfrm_state_get_afinfo(unsigned int family);=0D struct xfrm_state_afinfo *xfrm_state_afinfo_get_rcu(unsigned int family);=0D =0D struct xfrm_input_afinfo {=0D u8 family;=0D bool is_ipip;=0D int (*callback)(struct sk_buff *skb, u8 protocol,=0D int err);=0D };=0D =0D int xfrm_input_register_afinfo(const struct xfrm_input_afinfo *afinfo);=0D int xfrm_input_unregister_afinfo(const struct xfrm_input_afinfo *afinfo);=0D =0D void xfrm_flush_gc(void);=0D void xfrm_state_delete_tunnel(struct xfrm_state *x);=0D =0D struct xfrm_type {=0D struct module *owner;=0D u8 proto;=0D u8 flags;=0D =0D =0D =0D =0D =0D int (*init_state)(struct xfrm_state *x);=0D void (*destructor)(struct xfrm_state *);=0D int (*input)(struct xfrm_state *, struct sk_buff *skb);=0D int (*output)(struct xfrm_state *, struct sk_buff *pskb);=0D int (*reject)(struct xfrm_state *, struct sk_buff *,=0D const struct flowi *);=0D };=0D =0D int xfrm_register_type(const struct xfrm_type *type, unsigned short family)= ;=0D void xfrm_unregister_type(const struct xfrm_type *type, unsigned short fami= ly);=0D =0D struct xfrm_type_offload {=0D struct module *owner;=0D u8 proto;=0D void (*encap)(struct xfrm_state *, struct sk_buff *pskb);=0D int (*input_tail)(struct xfrm_state *x, struct sk_buff *skb);=0D int (*xmit)(struct xfrm_state *, struct sk_buff *pskb, netdev_features_t f= eatures);=0D };=0D =0D int xfrm_register_type_offload(const struct xfrm_type_offload *type, unsign= ed short family);=0D void xfrm_unregister_type_offload(const struct xfrm_type_offload *type, uns= igned short family);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_af2proto(unsigned i= nt family)=0D {=0D switch(family) {=0D case 2:=0D return IPPROTO_IPIP;=0D case 10:=0D return IPPROTO_IPV6;=0D default:=0D return 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const struct xfrm_mode *xfrm= _ip2inner_mode(struct xfrm_state *x, int ipproto)=0D {=0D if ((ipproto =3D=3D IPPROTO_IPIP && x->props.family =3D=3D 2) ||=0D (ipproto =3D=3D IPPROTO_IPV6 && x->props.family =3D=3D 10))=0D return &x->inner_mode;=0D else=0D return &x->inner_mode_iaf;=0D }=0D =0D struct xfrm_tmpl {=0D =0D =0D =0D =0D =0D =0D struct xfrm_id id;=0D =0D =0D xfrm_address_t saddr;=0D =0D unsigned short encap_family;=0D =0D u32 reqid;=0D =0D =0D u8 mode;=0D =0D =0D u8 share;=0D =0D =0D u8 optional;=0D =0D =0D u8 allalgs;=0D =0D =0D u32 aalgos;=0D u32 ealgos;=0D u32 calgos;=0D };=0D =0D =0D =0D =0D struct xfrm_policy_walk_entry {=0D struct list_head all;=0D u8 dead;=0D };=0D =0D struct xfrm_policy_walk {=0D struct xfrm_policy_walk_entry walk;=0D u8 type;=0D u32 seq;=0D };=0D =0D struct xfrm_policy_queue {=0D struct sk_buff_head hold_queue;=0D struct timer_list hold_timer;=0D unsigned long timeout;=0D };=0D =0D struct xfrm_policy {=0D possible_net_t xp_net;=0D struct hlist_node bydst;=0D struct hlist_node byidx;=0D =0D =0D rwlock_t lock;=0D refcount_t refcnt;=0D u32 pos;=0D struct timer_list timer;=0D =0D atomic_t genid;=0D u32 priority;=0D u32 index;=0D u32 if_id;=0D struct xfrm_mark mark;=0D struct xfrm_selector selector;=0D struct xfrm_lifetime_cfg lft;=0D struct xfrm_lifetime_cur curlft;=0D struct xfrm_policy_walk_entry walk;=0D struct xfrm_policy_queue polq;=0D bool bydst_reinsert;=0D u8 type;=0D u8 action;=0D u8 flags;=0D u8 xfrm_nr;=0D u16 family;=0D struct xfrm_sec_ctx *security;=0D struct xfrm_tmpl xfrm_vec[6];=0D struct hlist_node bydst_inexact_list;=0D struct callback_head rcu;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct net *xp_net(const str= uct xfrm_policy *xp)=0D {=0D return read_pnet(&xp->xp_net);=0D }=0D =0D struct xfrm_kmaddress {=0D xfrm_address_t local;=0D xfrm_address_t remote;=0D u32 reserved;=0D u16 family;=0D };=0D =0D struct xfrm_migrate {=0D xfrm_address_t old_daddr;=0D xfrm_address_t old_saddr;=0D xfrm_address_t new_daddr;=0D xfrm_address_t new_saddr;=0D u8 proto;=0D u8 mode;=0D u16 reserved;=0D u32 reqid;=0D u16 old_family;=0D u16 new_family;=0D };=0D # 565 "./include/net/xfrm.h"=0D struct xfrm_mgr {=0D struct list_head list;=0D int (*notify)(struct xfrm_state *x, const struct km_event *c);=0D int (*acquire)(struct xfrm_state *x, struct xfrm_tmpl *, struct xfrm_polic= y *xp);=0D struct xfrm_policy *(*compile_policy)(struct sock *sk, int opt, u8 *data, = int len, int *dir);=0D int (*new_mapping)(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 sp= ort);=0D int (*notify_policy)(struct xfrm_policy *x, int dir, const struct km_event= *c);=0D int (*report)(struct net *net, u8 proto, struct xfrm_selector *sel, xfrm_a= ddress_t *addr);=0D int (*migrate)(const struct xfrm_selector *sel,=0D u8 dir, u8 type,=0D const struct xfrm_migrate *m,=0D int num_bundles,=0D const struct xfrm_kmaddress *k,=0D const struct xfrm_encap_tmpl *encap);=0D bool (*is_alive)(const struct km_event *c);=0D };=0D =0D int xfrm_register_km(struct xfrm_mgr *km);=0D int xfrm_unregister_km(struct xfrm_mgr *km);=0D =0D struct xfrm_tunnel_skb_cb {=0D union {=0D struct inet_skb_parm h4;=0D struct inet6_skb_parm h6;=0D } header;=0D =0D union {=0D struct ip_tunnel *ip4;=0D struct ip6_tnl *ip6;=0D } tunnel;=0D };=0D # 604 "./include/net/xfrm.h"=0D struct xfrm_skb_cb {=0D struct xfrm_tunnel_skb_cb header;=0D =0D =0D union {=0D struct {=0D __u32 low;=0D __u32 hi;=0D } output;=0D struct {=0D __be32 low;=0D __be32 hi;=0D } input;=0D } seq;=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct xfrm_mode_skb_cb {=0D struct xfrm_tunnel_skb_cb header;=0D =0D =0D __be16 id;=0D __be16 frag_off;=0D =0D =0D u8 ihl;=0D =0D =0D u8 tos;=0D =0D =0D u8 ttl;=0D =0D =0D u8 protocol;=0D =0D =0D u8 optlen;=0D =0D =0D u8 flow_lbl[3];=0D };=0D =0D =0D =0D =0D =0D =0D =0D struct xfrm_spi_skb_cb {=0D struct xfrm_tunnel_skb_cb header;=0D =0D unsigned int daddroff;=0D unsigned int family;=0D __be32 seq;=0D };=0D # 712 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_policy_add(s= truct xfrm_policy *xp, int result,=0D bool task_valid)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_policy_delet= e(struct xfrm_policy *xp, int result,=0D bool task_valid)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_add(st= ruct xfrm_state *x, int result,=0D bool task_valid)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_delete= (struct xfrm_state *x, int result,=0D bool task_valid)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_replay= _overflow(struct xfrm_state *x,=0D struct sk_buff *skb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_replay= (struct xfrm_state *x,=0D struct sk_buff *skb, __be32 net_seq)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_notfou= nd_simple(struct sk_buff *skb,=0D u16 family)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_notfou= nd(struct sk_buff *skb, u16 family,=0D __be32 net_spi, __be32 net_seq)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_audit_state_icvfai= l(struct xfrm_state *x,=0D struct sk_buff *skb, u8 proto)=0D {=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_pol_hold(struct xf= rm_policy *policy)=0D {=0D if (__builtin_expect(!!(policy !=3D ((void *)0)), 1))=0D refcount_inc(&policy->refcnt);=0D }=0D =0D void xfrm_policy_destroy(struct xfrm_policy *policy);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_pol_put(struct xfr= m_policy *policy)=0D {=0D if (refcount_dec_and_test(&policy->refcnt))=0D xfrm_policy_destroy(policy);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_pols_put(struct xf= rm_policy **pols, int npols)=0D {=0D int i;=0D for (i =3D npols - 1; i >=3D 0; --i)=0D xfrm_pol_put(pols[i]);=0D }=0D =0D void __xfrm_state_destroy(struct xfrm_state *, bool);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __xfrm_state_put(struct= xfrm_state *x)=0D {=0D refcount_dec(&x->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_state_put(struct x= frm_state *x)=0D {=0D if (refcount_dec_and_test(&x->refcnt))=0D __xfrm_state_destroy(x, false);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_state_put_sync(str= uct xfrm_state *x)=0D {=0D if (refcount_dec_and_test(&x->refcnt))=0D __xfrm_state_destroy(x, true);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_state_hold(struct = xfrm_state *x)=0D {=0D refcount_inc(&x->refcnt);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool addr_match(const void *= token1, const void *token2,=0D unsigned int prefixlen)=0D {=0D const __be32 *a1 =3D token1;=0D const __be32 *a2 =3D token2;=0D unsigned int pdw;=0D unsigned int pbi;=0D =0D pdw =3D prefixlen >> 5;=0D pbi =3D prefixlen & 0x1f;=0D =0D if (pdw)=0D if (memcmp(a1, a2, pdw << 2))=0D return false;=0D =0D if (pbi) {=0D __be32 mask;=0D =0D mask =3D (( __be32)(__builtin_constant_p((__u32)(((0xffffffff) << (32 - p= bi)))) ? ((__u32)( (((__u32)(((0xffffffff) << (32 - pbi))) & (__u32)0x00000= 0ffUL) << 24) | (((__u32)(((0xffffffff) << (32 - pbi))) & (__u32)0x0000ff00= UL) << 8) | (((__u32)(((0xffffffff) << (32 - pbi))) & (__u32)0x00ff0000UL) = >> 8) | (((__u32)(((0xffffffff) << (32 - pbi))) & (__u32)0xff000000UL) >> 2= 4))) : __fswab32(((0xffffffff) << (32 - pbi)))));=0D =0D if ((a1[pdw] ^ a2[pdw]) & mask)=0D return false;=0D }=0D =0D return true;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool addr4_match(__be32 a1, = __be32 a2, u8 prefixlen)=0D {=0D =0D if (sizeof(long) =3D=3D 4 && prefixlen =3D=3D 0)=0D return true;=0D return !((a1 ^ a2) & (( __be32)(__builtin_constant_p((__u32)((~0UL << (32 = - prefixlen)))) ? ((__u32)( (((__u32)((~0UL << (32 - prefixlen))) & (__u32)= 0x000000ffUL) << 24) | (((__u32)((~0UL << (32 - prefixlen))) & (__u32)0x000= 0ff00UL) << 8) | (((__u32)((~0UL << (32 - prefixlen))) & (__u32)0x00ff0000U= L) >> 8) | (((__u32)((~0UL << (32 - prefixlen))) & (__u32)0xff000000UL) >> = 24))) : __fswab32((~0UL << (32 - prefixlen))))));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D __be16 xfrm_flowi_sport(const struct flowi *fl, const union flowi_uli *uli)= =0D {=0D __be16 port;=0D switch(fl->u.__fl_common.flowic_proto) {=0D case IPPROTO_TCP:=0D case IPPROTO_UDP:=0D case IPPROTO_UDPLITE:=0D case IPPROTO_SCTP:=0D port =3D uli->ports.sport;=0D break;=0D case IPPROTO_ICMP:=0D case 58:=0D port =3D (( __be16)(__builtin_constant_p((__u16)((uli->icmpt.type))) ? ((= __u16)( (((__u16)((uli->icmpt.type)) & (__u16)0x00ffU) << 8) | (((__u16)((u= li->icmpt.type)) & (__u16)0xff00U) >> 8))) : __fswab16((uli->icmpt.type))))= ;=0D break;=0D case 135:=0D port =3D (( __be16)(__builtin_constant_p((__u16)((uli->mht.type))) ? ((__= u16)( (((__u16)((uli->mht.type)) & (__u16)0x00ffU) << 8) | (((__u16)((uli->= mht.type)) & (__u16)0xff00U) >> 8))) : __fswab16((uli->mht.type))));=0D break;=0D case IPPROTO_GRE:=0D port =3D (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((= __u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( __u32)(__be= 32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be3= 2)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)= (uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(u= li->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(= uli->gre_key))) >> 16))) ? ((__u16)( (((__u16)(((__builtin_constant_p((__u3= 2)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( __u32)(__be32)(= uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(u= li->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(uli= ->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(uli->= gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(uli-= >gre_key))) >> 16)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_constan= t_p((__u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( __u32)= (__be32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(= __be32)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__= be32)(uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be= 32)(uli->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__b= e32)(uli->gre_key))) >> 16)) & (__u16)0xff00U) >> 8))) : __fswab16(((__buil= tin_constant_p((__u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u3= 2)(( __u32)(__be32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32= )(( __u32)(__be32)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(= ( __u32)(__be32)(uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( = __u32)(__be32)(uli->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32((= __u32)(__be32)(uli->gre_key))) >> 16))));=0D break;=0D default:=0D port =3D 0;=0D }=0D return port;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D __be16 xfrm_flowi_dport(const struct flowi *fl, const union flowi_uli *uli)= =0D {=0D __be16 port;=0D switch(fl->u.__fl_common.flowic_proto) {=0D case IPPROTO_TCP:=0D case IPPROTO_UDP:=0D case IPPROTO_UDPLITE:=0D case IPPROTO_SCTP:=0D port =3D uli->ports.dport;=0D break;=0D case IPPROTO_ICMP:=0D case 58:=0D port =3D (( __be16)(__builtin_constant_p((__u16)((uli->icmpt.code))) ? ((= __u16)( (((__u16)((uli->icmpt.code)) & (__u16)0x00ffU) << 8) | (((__u16)((u= li->icmpt.code)) & (__u16)0xff00U) >> 8))) : __fswab16((uli->icmpt.code))))= ;=0D break;=0D case IPPROTO_GRE:=0D port =3D (( __be16)(__builtin_constant_p((__u16)(((__builtin_constant_p((= __u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( __u32)(__be= 32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be3= 2)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)= (uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(u= li->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(= uli->gre_key))) & 0xffff))) ? ((__u16)( (((__u16)(((__builtin_constant_p((_= _u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( __u32)(__be3= 2)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32= )(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u32)(__be32)(= uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32)(__be32)(ul= i->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u32)(__be32)(u= li->gre_key))) & 0xffff)) & (__u16)0x00ffU) << 8) | (((__u16)(((__builtin_c= onstant_p((__u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)( (((__u32)(( = __u32)(__be32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) | (((__u32)(( _= _u32)(__be32)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (((__u32)(( __u= 32)(__be32)(uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((__u32)(( __u32= )(__be32)(uli->gre_key)) & (__u32)0xff000000UL) >> 24))) : __fswab32(( __u3= 2)(__be32)(uli->gre_key))) & 0xffff)) & (__u16)0xff00U) >> 8))) : __fswab16= (((__builtin_constant_p((__u32)(( __u32)(__be32)(uli->gre_key))) ? ((__u32)= ( (((__u32)(( __u32)(__be32)(uli->gre_key)) & (__u32)0x000000ffUL) << 24) |= (((__u32)(( __u32)(__be32)(uli->gre_key)) & (__u32)0x0000ff00UL) << 8) | (= ((__u32)(( __u32)(__be32)(uli->gre_key)) & (__u32)0x00ff0000UL) >> 8) | (((= __u32)(( __u32)(__be32)(uli->gre_key)) & (__u32)0xff000000UL) >> 24))) : __= fswab32(( __u32)(__be32)(uli->gre_key))) & 0xffff))));=0D break;=0D default:=0D port =3D 0;=0D }=0D return port;=0D }=0D =0D bool xfrm_selector_match(const struct xfrm_selector *sel,=0D const struct flowi *fl, unsigned short family);=0D # 905 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm_sec_ctx_match(stru= ct xfrm_sec_ctx *s1, struct xfrm_sec_ctx *s2)=0D {=0D return true;=0D }=0D # 922 "./include/net/xfrm.h"=0D struct xfrm_dst {=0D union {=0D struct dst_entry dst;=0D struct rtable rt;=0D struct rt6_info rt6;=0D } u;=0D struct dst_entry *route;=0D struct dst_entry *child;=0D struct dst_entry *path;=0D struct xfrm_policy *pols[XFRM_POLICY_TYPE_MAX];=0D int num_pols, num_xfrms;=0D u32 xfrm_genid;=0D u32 policy_genid;=0D u32 route_mtu_cached;=0D u32 child_mtu_cached;=0D u32 route_cookie;=0D u32 path_cookie;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *xfrm_dst_p= ath(const struct dst_entry *dst)=0D {=0D =0D =0D =0D =0D =0D =0D =0D return (struct dst_entry *) dst;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct dst_entry *xfrm_dst_c= hild(const struct dst_entry *dst)=0D {=0D =0D =0D =0D =0D =0D =0D return ((void *)0);=0D }=0D # 979 "./include/net/xfrm.h"=0D void xfrm_dst_ifdown(struct dst_entry *dst, struct net_device *dev);=0D =0D struct xfrm_if_parms {=0D int link;=0D u32 if_id;=0D };=0D =0D struct xfrm_if {=0D struct xfrm_if *next;=0D struct net_device *dev;=0D struct net *net;=0D struct xfrm_if_parms p;=0D =0D struct gro_cells gro_cells;=0D };=0D =0D struct xfrm_offload {=0D =0D struct {=0D __u32 low;=0D __u32 hi;=0D } seq;=0D =0D __u32 flags;=0D # 1013 "./include/net/xfrm.h"=0D __u32 status;=0D # 1023 "./include/net/xfrm.h"=0D __u8 proto;=0D __u8 inner_ipproto;=0D };=0D =0D struct sec_path {=0D int len;=0D int olen;=0D =0D struct xfrm_state *xvec[6];=0D struct xfrm_offload ovec[1];=0D };=0D =0D struct sec_path *secpath_set(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D secpath_reset(struct sk_buff *skb)=0D {=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D xfrm_addr_any(const xfrm_address_t *addr, unsigned short family)=0D {=0D switch (family) {=0D case 2:=0D return addr->a4 =3D=3D 0;=0D case 10:=0D return ipv6_addr_any(&addr->in6);=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D __xfrm4_state_addr_cmp(const struct xfrm_tmpl *tmpl, const struct xfrm_stat= e *x)=0D {=0D return (tmpl->saddr.a4 &&=0D tmpl->saddr.a4 !=3D x->props.saddr.a4);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D __xfrm6_state_addr_cmp(const struct xfrm_tmpl *tmpl, const struct xfrm_stat= e *x)=0D {=0D return (!ipv6_addr_any((struct in6_addr*)&tmpl->saddr) &&=0D !ipv6_addr_equal((struct in6_addr *)&tmpl->saddr, (struct in6_addr*)&x->= props.saddr));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D xfrm_state_addr_cmp(const struct xfrm_tmpl *tmpl, const struct xfrm_state *= x, unsigned short family)=0D {=0D switch (family) {=0D case 2:=0D return __xfrm4_state_addr_cmp(tmpl, x);=0D case 10:=0D return __xfrm6_state_addr_cmp(tmpl, x);=0D }=0D return !0;=0D }=0D # 1209 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_sk_free_policy(str= uct sock *sk) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_sk_clone_policy(str= uct sock *sk, const struct sock *osk) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm6_route_forward(stru= ct sk_buff *skb) { return 1; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm4_route_forward(stru= ct sk_buff *skb) { return 1; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm6_policy_check(struc= t sock *sk, int dir, struct sk_buff *skb)=0D {=0D return 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm4_policy_check(struc= t sock *sk, int dir, struct sk_buff *skb)=0D {=0D return 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_policy_check(struct= sock *sk, int dir, struct sk_buff *skb, unsigned short family)=0D {=0D return 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_decode_session_reve= rse(struct sk_buff *skb,=0D struct flowi *fl,=0D unsigned int family)=0D {=0D return -38;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm4_policy_check_rever= se(struct sock *sk, int dir,=0D struct sk_buff *skb)=0D {=0D return 1;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm6_policy_check_rever= se(struct sock *sk, int dir,=0D struct sk_buff *skb)=0D {=0D return 1;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D xfrm_address_t *xfrm_flowi_daddr(const struct flowi *fl, unsigned short fam= ily)=0D {=0D switch (family){=0D case 2:=0D return (xfrm_address_t *)&fl->u.ip4.daddr;=0D case 10:=0D return (xfrm_address_t *)&fl->u.ip6.daddr;=0D }=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D xfrm_address_t *xfrm_flowi_saddr(const struct flowi *fl, unsigned short fam= ily)=0D {=0D switch (family){=0D case 2:=0D return (xfrm_address_t *)&fl->u.ip4.saddr;=0D case 10:=0D return (xfrm_address_t *)&fl->u.ip6.saddr;=0D }=0D return ((void *)0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void xfrm_flowi_addr_get(const struct flowi *fl,=0D xfrm_address_t *saddr, xfrm_address_t *daddr,=0D unsigned short family)=0D {=0D switch(family) {=0D case 2:=0D memcpy(&saddr->a4, &fl->u.ip4.saddr, sizeof(saddr->a4));=0D memcpy(&daddr->a4, &fl->u.ip4.daddr, sizeof(daddr->a4));=0D break;=0D case 10:=0D saddr->in6 =3D fl->u.ip6.saddr;=0D daddr->in6 =3D fl->u.ip6.daddr;=0D break;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D __xfrm4_state_addr_check(const struct xfrm_state *x,=0D const xfrm_address_t *daddr, const xfrm_address_t *saddr)=0D {=0D if (daddr->a4 =3D=3D x->id.daddr.a4 &&=0D (saddr->a4 =3D=3D x->props.saddr.a4 || !saddr->a4 || !x->props.saddr.a= 4))=0D return 1;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D __xfrm6_state_addr_check(const struct xfrm_state *x,=0D const xfrm_address_t *daddr, const xfrm_address_t *saddr)=0D {=0D if (ipv6_addr_equal((struct in6_addr *)daddr, (struct in6_addr *)&x->id.da= ddr) &&=0D (ipv6_addr_equal((struct in6_addr *)saddr, (struct in6_addr *)&x->prop= s.saddr) ||=0D ipv6_addr_any((struct in6_addr *)saddr) ||=0D ipv6_addr_any((struct in6_addr *)&x->props.saddr)))=0D return 1;=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D xfrm_state_addr_check(const struct xfrm_state *x,=0D const xfrm_address_t *daddr, const xfrm_address_t *saddr,=0D unsigned short family)=0D {=0D switch (family) {=0D case 2:=0D return __xfrm4_state_addr_check(x, daddr, saddr);=0D case 10:=0D return __xfrm6_state_addr_check(x, daddr, saddr);=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D xfrm_state_addr_flow_check(const struct xfrm_state *x, const struct flowi *= fl,=0D unsigned short family)=0D {=0D switch (family) {=0D case 2:=0D return __xfrm4_state_addr_check(x,=0D (const xfrm_address_t *)&fl->u.ip4.daddr,=0D (const xfrm_address_t *)&fl->u.ip4.saddr);=0D case 10:=0D return __xfrm6_state_addr_check(x,=0D (const xfrm_address_t *)&fl->u.ip6.daddr,=0D (const xfrm_address_t *)&fl->u.ip6.saddr);=0D }=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_state_kern(const st= ruct xfrm_state *x)=0D {=0D return atomic_read(&x->tunnel_users);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm_id_proto_valid(u8 = proto)=0D {=0D switch (proto) {=0D case IPPROTO_AH:=0D case IPPROTO_ESP:=0D case IPPROTO_COMP:=0D =0D case 43:=0D case 60:=0D =0D return true;=0D default:=0D return false;=0D }=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_id_proto_match(u8 p= roto, u8 userproto)=0D {=0D return (!userproto || proto =3D=3D userproto ||=0D (userproto =3D=3D 255 && (proto =3D=3D IPPROTO_AH ||=0D proto =3D=3D IPPROTO_ESP ||=0D proto =3D=3D IPPROTO_COMP)));=0D }=0D =0D =0D =0D =0D struct xfrm_algo_aead_info {=0D char *geniv;=0D u16 icv_truncbits;=0D };=0D =0D struct xfrm_algo_auth_info {=0D u16 icv_truncbits;=0D u16 icv_fullbits;=0D };=0D =0D struct xfrm_algo_encr_info {=0D char *geniv;=0D u16 blockbits;=0D u16 defkeybits;=0D };=0D =0D struct xfrm_algo_comp_info {=0D u16 threshold;=0D };=0D =0D struct xfrm_algo_desc {=0D char *name;=0D char *compat;=0D u8 available:1;=0D u8 pfkey_supported:1;=0D union {=0D struct xfrm_algo_aead_info aead;=0D struct xfrm_algo_auth_info auth;=0D struct xfrm_algo_encr_info encr;=0D struct xfrm_algo_comp_info comp;=0D } uinfo;=0D struct sadb_alg desc;=0D };=0D =0D =0D struct xfrm4_protocol {=0D int (*handler)(struct sk_buff *skb);=0D int (*input_handler)(struct sk_buff *skb, int nexthdr, __be32 spi,=0D int encap_type);=0D int (*cb_handler)(struct sk_buff *skb, int err);=0D int (*err_handler)(struct sk_buff *skb, u32 info);=0D =0D struct xfrm4_protocol *next;=0D int priority;=0D };=0D =0D struct xfrm6_protocol {=0D int (*handler)(struct sk_buff *skb);=0D int (*input_handler)(struct sk_buff *skb, int nexthdr, __be32 spi,=0D int encap_type);=0D int (*cb_handler)(struct sk_buff *skb, int err);=0D int (*err_handler)(struct sk_buff *skb, struct inet6_skb_parm *opt,=0D u8 type, u8 code, int offset, __be32 info);=0D =0D struct xfrm6_protocol *next;=0D int priority;=0D };=0D =0D =0D struct xfrm_tunnel {=0D int (*handler)(struct sk_buff *skb);=0D int (*cb_handler)(struct sk_buff *skb, int err);=0D int (*err_handler)(struct sk_buff *skb, u32 info);=0D =0D struct xfrm_tunnel *next;=0D int priority;=0D };=0D =0D struct xfrm6_tunnel {=0D int (*handler)(struct sk_buff *skb);=0D int (*cb_handler)(struct sk_buff *skb, int err);=0D int (*err_handler)(struct sk_buff *skb, struct inet6_skb_parm *opt,=0D u8 type, u8 code, int offset, __be32 info);=0D struct xfrm6_tunnel *next;=0D int priority;=0D };=0D =0D void xfrm_init(void);=0D void xfrm4_init(void);=0D int xfrm_state_init(struct net *net);=0D void xfrm_state_fini(struct net *net);=0D void xfrm4_state_init(void);=0D void xfrm4_protocol_init(void);=0D # 1461 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm6_init(void)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm6_fini(void)=0D {=0D ;=0D }=0D =0D =0D =0D =0D =0D =0D =0D int xfrm_sysctl_init(struct net *net);=0D =0D void xfrm_sysctl_fini(struct net *net);=0D =0D =0D =0D =0D =0D =0D void xfrm_state_walk_init(struct xfrm_state_walk *walk, u8 proto,=0D struct xfrm_address_filter *filter);=0D int xfrm_state_walk(struct net *net, struct xfrm_state_walk *walk,=0D int (*func)(struct xfrm_state *, int, void*), void *);=0D void xfrm_state_walk_done(struct xfrm_state_walk *walk, struct net *net);=0D struct xfrm_state *xfrm_state_alloc(struct net *net);=0D void xfrm_state_free(struct xfrm_state *x);=0D struct xfrm_state *xfrm_state_find(const xfrm_address_t *daddr,=0D const xfrm_address_t *saddr,=0D const struct flowi *fl,=0D struct xfrm_tmpl *tmpl,=0D struct xfrm_policy *pol, int *err,=0D unsigned short family, u32 if_id);=0D struct xfrm_state *xfrm_stateonly_find(struct net *net, u32 mark, u32 if_id= ,=0D xfrm_address_t *daddr,=0D xfrm_address_t *saddr,=0D unsigned short family,=0D u8 mode, u8 proto, u32 reqid);=0D struct xfrm_state *xfrm_state_lookup_byspi(struct net *net, __be32 spi,=0D unsigned short family);=0D int xfrm_state_check_expire(struct xfrm_state *x);=0D void xfrm_state_insert(struct xfrm_state *x);=0D int xfrm_state_add(struct xfrm_state *x);=0D int xfrm_state_update(struct xfrm_state *x);=0D struct xfrm_state *xfrm_state_lookup(struct net *net, u32 mark,=0D const xfrm_address_t *daddr, __be32 spi,=0D u8 proto, unsigned short family);=0D struct xfrm_state *xfrm_state_lookup_byaddr(struct net *net, u32 mark,=0D const xfrm_address_t *daddr,=0D const xfrm_address_t *saddr,=0D u8 proto,=0D unsigned short family);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_tmpl_sort(struct x= frm_tmpl **d, struct xfrm_tmpl **s,=0D int n, unsigned short family)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_state_sort(struct = xfrm_state **d, struct xfrm_state **s,=0D int n, unsigned short family)=0D {=0D }=0D =0D =0D struct xfrmk_sadinfo {=0D u32 sadhcnt;=0D u32 sadhmcnt;=0D u32 sadcnt;=0D };=0D =0D struct xfrmk_spdinfo {=0D u32 incnt;=0D u32 outcnt;=0D u32 fwdcnt;=0D u32 inscnt;=0D u32 outscnt;=0D u32 fwdscnt;=0D u32 spdhcnt;=0D u32 spdhmcnt;=0D };=0D =0D struct xfrm_state *xfrm_find_acq_byseq(struct net *net, u32 mark, u32 seq);= =0D int xfrm_state_delete(struct xfrm_state *x);=0D int xfrm_state_flush(struct net *net, u8 proto, bool task_valid, bool sync)= ;=0D int xfrm_dev_state_flush(struct net *net, struct net_device *dev, bool task= _valid);=0D void xfrm_sad_getinfo(struct net *net, struct xfrmk_sadinfo *si);=0D void xfrm_spd_getinfo(struct net *net, struct xfrmk_spdinfo *si);=0D u32 xfrm_replay_seqhi(struct xfrm_state *x, __be32 net_seq);=0D int xfrm_init_replay(struct xfrm_state *x);=0D u32 xfrm_state_mtu(struct xfrm_state *x, int mtu);=0D int __xfrm_init_state(struct xfrm_state *x, bool init_replay, bool offload)= ;=0D int xfrm_init_state(struct xfrm_state *x);=0D int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type= );=0D int xfrm_input_resume(struct sk_buff *skb, int nexthdr);=0D int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,=0D int (*finish)(struct net *, struct sock *,=0D struct sk_buff *));=0D int xfrm_trans_queue(struct sk_buff *skb,=0D int (*finish)(struct net *, struct sock *,=0D struct sk_buff *));=0D int xfrm_output_resume(struct sock *sk, struct sk_buff *skb, int err);=0D int xfrm_output(struct sock *sk, struct sk_buff *skb);=0D =0D =0D =0D =0D =0D void xfrm_local_error(struct sk_buff *skb, int mtu);=0D int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb);=0D int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi,=0D int encap_type);=0D int xfrm4_transport_finish(struct sk_buff *skb, int async);=0D int xfrm4_rcv(struct sk_buff *skb);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm4_rcv_spi(struct sk_= buff *skb, int nexthdr, __be32 spi)=0D {=0D ((struct xfrm_tunnel_skb_cb *)&((skb)->cb[0]))->tunnel.ip4 =3D ((void *)0)= ;=0D ((struct xfrm_spi_skb_cb *)&((skb)->cb[0]))->family =3D 2;=0D ((struct xfrm_spi_skb_cb *)&((skb)->cb[0]))->daddroff =3D __builtin_offset= of(struct iphdr, daddr);=0D return xfrm_input(skb, nexthdr, spi, 0);=0D }=0D =0D int xfrm4_output(struct net *net, struct sock *sk, struct sk_buff *skb);=0D int xfrm4_protocol_register(struct xfrm4_protocol *handler, unsigned char p= rotocol);=0D int xfrm4_protocol_deregister(struct xfrm4_protocol *handler, unsigned char= protocol);=0D int xfrm4_tunnel_register(struct xfrm_tunnel *handler, unsigned short famil= y);=0D int xfrm4_tunnel_deregister(struct xfrm_tunnel *handler, unsigned short fam= ily);=0D void xfrm4_local_error(struct sk_buff *skb, u32 mtu);=0D int xfrm6_extract_input(struct xfrm_state *x, struct sk_buff *skb);=0D int xfrm6_rcv_spi(struct sk_buff *skb, int nexthdr, __be32 spi,=0D struct ip6_tnl *t);=0D int xfrm6_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi,=0D int encap_type);=0D int xfrm6_transport_finish(struct sk_buff *skb, int async);=0D int xfrm6_rcv_tnl(struct sk_buff *skb, struct ip6_tnl *t);=0D int xfrm6_rcv(struct sk_buff *skb);=0D int xfrm6_input_addr(struct sk_buff *skb, xfrm_address_t *daddr,=0D xfrm_address_t *saddr, u8 proto);=0D void xfrm6_local_error(struct sk_buff *skb, u32 mtu);=0D int xfrm6_protocol_register(struct xfrm6_protocol *handler, unsigned char p= rotocol);=0D int xfrm6_protocol_deregister(struct xfrm6_protocol *handler, unsigned char= protocol);=0D int xfrm6_tunnel_register(struct xfrm6_tunnel *handler, unsigned short fami= ly);=0D int xfrm6_tunnel_deregister(struct xfrm6_tunnel *handler, unsigned short fa= mily);=0D __be32 xfrm6_tunnel_alloc_spi(struct net *net, xfrm_address_t *saddr);=0D __be32 xfrm6_tunnel_spi_lookup(struct net *net, const xfrm_address_t *saddr= );=0D int xfrm6_output(struct net *net, struct sock *sk, struct sk_buff *skb);=0D # 1624 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_user_policy(struct = sock *sk, int optname,=0D sockptr_t optval, int optlen)=0D {=0D return -92;=0D }=0D =0D =0D struct dst_entry *__xfrm_dst_lookup(struct net *net, int tos, int oif,=0D const xfrm_address_t *saddr,=0D const xfrm_address_t *daddr,=0D int family, u32 mark);=0D =0D struct xfrm_policy *xfrm_policy_alloc(struct net *net, gfp_t gfp);=0D =0D void xfrm_policy_walk_init(struct xfrm_policy_walk *walk, u8 type);=0D int xfrm_policy_walk(struct net *net, struct xfrm_policy_walk *walk,=0D int (*func)(struct xfrm_policy *, int, int, void*),=0D void *);=0D void xfrm_policy_walk_done(struct xfrm_policy_walk *walk, struct net *net);= =0D int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl);=0D struct xfrm_policy *xfrm_policy_bysel_ctx(struct net *net,=0D const struct xfrm_mark *mark,=0D u32 if_id, u8 type, int dir,=0D struct xfrm_selector *sel,=0D struct xfrm_sec_ctx *ctx, int delete,=0D int *err);=0D struct xfrm_policy *xfrm_policy_byid(struct net *net,=0D const struct xfrm_mark *mark, u32 if_id,=0D u8 type, int dir, u32 id, int delete,=0D int *err);=0D int xfrm_policy_flush(struct net *net, u8 type, bool task_valid);=0D void xfrm_policy_hash_rebuild(struct net *net);=0D u32 xfrm_get_acqseq(void);=0D int verify_spi_info(u8 proto, u32 min, u32 max);=0D int xfrm_alloc_spi(struct xfrm_state *x, u32 minspi, u32 maxspi);=0D struct xfrm_state *xfrm_find_acq(struct net *net, const struct xfrm_mark *m= ark,=0D u8 mode, u32 reqid, u32 if_id, u8 proto,=0D const xfrm_address_t *daddr,=0D const xfrm_address_t *saddr, int create,=0D unsigned short family);=0D int xfrm_sk_policy_insert(struct sock *sk, int dir, struct xfrm_policy *pol= );=0D # 1682 "./include/net/xfrm.h"=0D int km_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr, __be16 spo= rt);=0D void km_policy_expired(struct xfrm_policy *pol, int dir, int hard, u32 port= id);=0D int km_report(struct net *net, u8 proto, struct xfrm_selector *sel,=0D xfrm_address_t *addr);=0D =0D void xfrm_input_init(void);=0D int xfrm_parse_spi(struct sk_buff *skb, u8 nexthdr, __be32 *spi, __be32 *se= q);=0D =0D void xfrm_probe_algs(void);=0D int xfrm_count_pfkey_auth_supported(void);=0D int xfrm_count_pfkey_enc_supported(void);=0D struct xfrm_algo_desc *xfrm_aalg_get_byidx(unsigned int idx);=0D struct xfrm_algo_desc *xfrm_ealg_get_byidx(unsigned int idx);=0D struct xfrm_algo_desc *xfrm_aalg_get_byid(int alg_id);=0D struct xfrm_algo_desc *xfrm_ealg_get_byid(int alg_id);=0D struct xfrm_algo_desc *xfrm_calg_get_byid(int alg_id);=0D struct xfrm_algo_desc *xfrm_aalg_get_byname(const char *name, int probe);=0D struct xfrm_algo_desc *xfrm_ealg_get_byname(const char *name, int probe);=0D struct xfrm_algo_desc *xfrm_calg_get_byname(const char *name, int probe);=0D struct xfrm_algo_desc *xfrm_aead_get_byname(const char *name, int icv_len,= =0D int probe);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm6_addr_equal(const = xfrm_address_t *a,=0D const xfrm_address_t *b)=0D {=0D return ipv6_addr_equal((const struct in6_addr *)a,=0D (const struct in6_addr *)b);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm_addr_equal(const x= frm_address_t *a,=0D const xfrm_address_t *b,=0D sa_family_t family)=0D {=0D switch (family) {=0D default:=0D case 2:=0D return (( u32)a->a4 ^ ( u32)b->a4) =3D=3D 0;=0D case 10:=0D return xfrm6_addr_equal(a, b);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_policy_id2dir(u32 i= ndex)=0D {=0D return index & 7;=0D }=0D # 1764 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int aead_len(struct= xfrm_algo_aead *alg)=0D {=0D return sizeof(*alg) + ((alg->alg_key_len + 7) / 8);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int xfrm_alg_len(co= nst struct xfrm_algo *alg)=0D {=0D return sizeof(*alg) + ((alg->alg_key_len + 7) / 8);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int xfrm_alg_auth_l= en(const struct xfrm_algo_auth *alg)=0D {=0D return sizeof(*alg) + ((alg->alg_key_len + 7) / 8);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int xfrm_replay_sta= te_esn_len(struct xfrm_replay_state_esn *replay_esn)=0D {=0D return sizeof(*replay_esn) + replay_esn->bmp_len * sizeof(__u32);=0D }=0D # 1843 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xfrm_offload *xfrm_of= fload(struct sk_buff *skb)=0D {=0D # 1853 "./include/net/xfrm.h"=0D return ((void *)0);=0D =0D }=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) xfrm_dev_init(void);=0D # 1914 "./include/net/xfrm.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_dev_resume(struct = sk_buff *skb)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_dev_backlog(struct= softnet_data *sd)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct sk_buff *validate_xmi= t_xfrm(struct sk_buff *skb, netdev_features_t features, bool *again)=0D {=0D return skb;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_dev_state_add(struc= t net *net, struct xfrm_state *x, struct xfrm_user_offload *xuo)=0D {=0D return 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_dev_state_delete(s= truct xfrm_state *x)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_dev_state_free(str= uct xfrm_state *x)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm_dev_offload_ok(str= uct sk_buff *skb, struct xfrm_state *x)=0D {=0D return false;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_dev_state_advance_= esn(struct xfrm_state *x)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm_dst_offload_ok(str= uct dst_entry *dst)=0D {=0D return false;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_mark_get(struct nla= ttr **attrs, struct xfrm_mark *m)=0D {=0D if (attrs[XFRMA_MARK])=0D memcpy(m, nla_data(attrs[XFRMA_MARK]), sizeof(struct xfrm_mark));=0D else=0D m->v =3D m->m =3D 0;=0D =0D return m->v & m->m;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_mark_put(struct sk_= buff *skb, const struct xfrm_mark *m)=0D {=0D int ret =3D 0;=0D =0D if (m->m | m->v)=0D ret =3D nla_put(skb, XFRMA_MARK, sizeof(struct xfrm_mark), m);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __u32 xfrm_smark_get(__u32 m= ark, struct xfrm_state *x)=0D {=0D struct xfrm_mark *m =3D &x->props.smark;=0D =0D return (m->v & m->m) | (mark & ~m->m);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_if_id_put(struct sk= _buff *skb, __u32 if_id)=0D {=0D int ret =3D 0;=0D =0D if (if_id)=0D ret =3D nla_put_u32(skb, XFRMA_IF_ID, if_id);=0D return ret;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int xfrm_tunnel_check(struct= sk_buff *skb, struct xfrm_state *x,=0D unsigned int family)=0D {=0D bool tunnel =3D false;=0D =0D switch(family) {=0D case 2:=0D if (((struct xfrm_tunnel_skb_cb *)&((skb)->cb[0]))->tunnel.ip4)=0D tunnel =3D true;=0D break;=0D case 10:=0D if (((struct xfrm_tunnel_skb_cb *)&((skb)->cb[0]))->tunnel.ip6)=0D tunnel =3D true;=0D break;=0D }=0D if (tunnel && !(x->outer_mode.flags & XFRM_MODE_FLAG_TUNNEL))=0D return -22;=0D =0D return 0;=0D }=0D =0D extern const int xfrm_msg_min[((__XFRM_MSG_MAX - 1) + 1 - XFRM_MSG_BASE)];= =0D extern const struct nla_policy xfrma_policy[(__XFRMA_MAX - 1)+1];=0D =0D struct xfrm_translator {=0D =0D int (*alloc_compat)(struct sk_buff *skb, const struct nlmsghdr *src);=0D =0D =0D struct nlmsghdr *(*rcv_msg_compat)(const struct nlmsghdr *nlh,=0D int maxtype, const struct nla_policy *policy,=0D struct netlink_ext_ack *extack);=0D =0D =0D int (*xlate_user_policy_sockptr)(u8 **pdata32, int optlen);=0D =0D struct module *owner;=0D };=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct xfrm_translator *xfrm= _get_translator(void)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void xfrm_put_translator(str= uct xfrm_translator *xtr)=0D {=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool xfrm6_local_dontfrag(co= nst struct sock *sk)=0D {=0D int proto;=0D =0D if (!sk || sk->__sk_common.skc_family !=3D 10)=0D return false;=0D =0D proto =3D sk->sk_protocol;=0D if (proto =3D=3D IPPROTO_UDP || proto =3D=3D IPPROTO_RAW)=0D return inet6_sk(sk)->dontfrag;=0D =0D return false;=0D }=0D # 57 "net/ipv6/route.c" 2=0D # 1 "./include/net/netevent.h" 1=0D # 15 "./include/net/netevent.h"=0D struct dst_entry;=0D struct neighbour;=0D =0D struct netevent_redirect {=0D struct dst_entry *old;=0D struct dst_entry *new;=0D struct neighbour *neigh;=0D const void *daddr;=0D };=0D =0D enum netevent_notif_type {=0D NETEVENT_NEIGH_UPDATE =3D 1,=0D NETEVENT_REDIRECT,=0D NETEVENT_DELAY_PROBE_TIME_UPDATE,=0D NETEVENT_IPV4_MPATH_HASH_UPDATE,=0D NETEVENT_IPV6_MPATH_HASH_UPDATE,=0D NETEVENT_IPV4_FWD_UPDATE_PRIORITY_UPDATE,=0D };=0D =0D int register_netevent_notifier(struct notifier_block *nb);=0D int unregister_netevent_notifier(struct notifier_block *nb);=0D int call_netevent_notifiers(unsigned long val, void *v);=0D # 58 "net/ipv6/route.c" 2=0D =0D # 1 "./include/net/rtnh.h" 1=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rtnh_ok(const struct rtn= exthop *rtnh, int remaining)=0D {=0D return remaining >=3D (int)sizeof(*rtnh) &&=0D rtnh->rtnh_len >=3D sizeof(*rtnh) &&=0D rtnh->rtnh_len <=3D remaining;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct rtnexthop *rtnh_next(= const struct rtnexthop *rtnh,=0D int *remaining)=0D {=0D int totlen =3D (((rtnh->rtnh_len) + 4 - 1) & ~(4 - 1));=0D =0D *remaining -=3D totlen;=0D return (struct rtnexthop *) ((char *) rtnh + totlen);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct nlattr *rtnh_attrs(co= nst struct rtnexthop *rtnh)=0D {=0D return (struct nlattr *) ((char *) rtnh + (((sizeof(*rtnh)) + 4 - 1) & ~(4= - 1)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int rtnh_attrlen(const struc= t rtnexthop *rtnh)=0D {=0D return rtnh->rtnh_len - (((sizeof(*rtnh)) + 4 - 1) & ~(4 - 1));=0D }=0D # 60 "net/ipv6/route.c" 2=0D =0D =0D =0D =0D =0D # 1 "./include/linux/btf_ids.h" 1=0D =0D =0D =0D =0D =0D struct btf_id_set {=0D u32 cnt;=0D u32 ids[];=0D };=0D # 183 "./include/linux/btf_ids.h"=0D enum {=0D =0D BTF_SOCK_TYPE_INET, BTF_SOCK_TYPE_INET_CONN, BTF_SOCK_TYPE_INET_REQ, BTF_SO= CK_TYPE_INET_TW, BTF_SOCK_TYPE_REQ, BTF_SOCK_TYPE_SOCK, BTF_SOCK_TYPE_SOCK_= COMMON, BTF_SOCK_TYPE_TCP, BTF_SOCK_TYPE_TCP_REQ, BTF_SOCK_TYPE_TCP_TW, BTF= _SOCK_TYPE_TCP6, BTF_SOCK_TYPE_UDP, BTF_SOCK_TYPE_UDP6, BTF_SOCK_TYPE_UNIX,= =0D =0D MAX_BTF_SOCK_TYPE,=0D };=0D =0D extern u32 btf_sock_ids[];=0D =0D =0D =0D =0D =0D =0D =0D enum {=0D =0D BTF_TRACING_TYPE_TASK, BTF_TRACING_TYPE_FILE, BTF_TRACING_TYPE_VMA,=0D =0D MAX_BTF_TRACING_TYPE,=0D };=0D =0D extern u32 btf_tracing_ids[];=0D # 66 "net/ipv6/route.c" 2=0D =0D =0D =0D =0D =0D static int ip6_rt_type_to_error(u8 fib6_type);=0D =0D =0D =0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 22 "./include/linux/tracepoint.h"=0D # 1 "./include/linux/static_call.h" 1=0D # 135 "./include/linux/static_call.h"=0D # 1 "./include/linux/cpu.h" 1=0D # 17 "./include/linux/cpu.h"=0D # 1 "./include/linux/node.h" 1=0D # 31 "./include/linux/node.h"=0D struct node_hmem_attrs {=0D unsigned int read_bandwidth;=0D unsigned int write_bandwidth;=0D unsigned int read_latency;=0D unsigned int write_latency;=0D };=0D =0D enum cache_indexing {=0D NODE_CACHE_DIRECT_MAP,=0D NODE_CACHE_INDEXED,=0D NODE_CACHE_OTHER,=0D };=0D =0D enum cache_write_policy {=0D NODE_CACHE_WRITE_BACK,=0D NODE_CACHE_WRITE_THROUGH,=0D NODE_CACHE_WRITE_OTHER,=0D };=0D # 59 "./include/linux/node.h"=0D struct node_cache_attrs {=0D enum cache_indexing indexing;=0D enum cache_write_policy write_policy;=0D u64 size;=0D u16 line_size;=0D u8 level;=0D };=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_add_cache(unsigned= int nid,=0D struct node_cache_attrs *cache_attrs)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_set_perf_attrs(uns= igned int nid,=0D struct node_hmem_attrs *hmem_attrs,=0D unsigned access)=0D {=0D }=0D =0D =0D struct node {=0D struct device dev;=0D struct list_head access_list;=0D # 95 "./include/linux/node.h"=0D };=0D =0D struct memory_block;=0D extern struct node *node_devices[];=0D typedef void (*node_registration_func_t)(struct node *);=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void register_memory_blocks_= under_node(int nid, unsigned long start_pfn,=0D unsigned long end_pfn,=0D enum meminit_context context)=0D {=0D }=0D =0D =0D extern void unregister_node(struct node *node);=0D # 153 "./include/linux/node.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void node_dev_init(void)=0D {=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __register_one_node(int = nid)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_one_node(int ni= d)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_one_node(int = nid)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_cpu_under_node(= unsigned int cpu, unsigned int nid)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_cpu_under_nod= e(unsigned int cpu, unsigned int nid)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unregister_memory_block= _under_nodes(struct memory_block *mem_blk)=0D {=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void register_hugetlbfs_with= _node(node_registration_func_t reg,=0D node_registration_func_t unreg)=0D {=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool node_is_toptier(int nod= e)=0D {=0D return node_state(node, N_CPU);=0D }=0D # 18 "./include/linux/cpu.h" 2=0D =0D =0D # 1 "./include/linux/cpuhotplug.h" 1=0D # 57 "./include/linux/cpuhotplug.h"=0D enum cpuhp_state {=0D CPUHP_INVALID =3D -1,=0D =0D =0D CPUHP_OFFLINE =3D 0,=0D CPUHP_CREATE_THREADS,=0D CPUHP_PERF_PREPARE,=0D CPUHP_PERF_X86_PREPARE,=0D CPUHP_PERF_X86_AMD_UNCORE_PREP,=0D CPUHP_PERF_POWER,=0D CPUHP_PERF_SUPERH,=0D CPUHP_X86_HPET_DEAD,=0D CPUHP_X86_APB_DEAD,=0D CPUHP_X86_MCE_DEAD,=0D CPUHP_VIRT_NET_DEAD,=0D CPUHP_SLUB_DEAD,=0D CPUHP_DEBUG_OBJ_DEAD,=0D CPUHP_MM_WRITEBACK_DEAD,=0D =0D CPUHP_MM_DEMOTION_DEAD,=0D CPUHP_MM_VMSTAT_DEAD,=0D CPUHP_SOFTIRQ_DEAD,=0D CPUHP_NET_MVNETA_DEAD,=0D CPUHP_CPUIDLE_DEAD,=0D CPUHP_ARM64_FPSIMD_DEAD,=0D CPUHP_ARM_OMAP_WAKE_DEAD,=0D CPUHP_IRQ_POLL_DEAD,=0D CPUHP_BLOCK_SOFTIRQ_DEAD,=0D CPUHP_BIO_DEAD,=0D CPUHP_ACPI_CPUDRV_DEAD,=0D CPUHP_S390_PFAULT_DEAD,=0D CPUHP_BLK_MQ_DEAD,=0D CPUHP_FS_BUFF_DEAD,=0D CPUHP_PRINTK_DEAD,=0D CPUHP_MM_MEMCQ_DEAD,=0D CPUHP_XFS_DEAD,=0D CPUHP_PERCPU_CNT_DEAD,=0D CPUHP_RADIX_DEAD,=0D CPUHP_PAGE_ALLOC,=0D CPUHP_NET_DEV_DEAD,=0D CPUHP_PCI_XGENE_DEAD,=0D CPUHP_IOMMU_IOVA_DEAD,=0D CPUHP_LUSTRE_CFS_DEAD,=0D CPUHP_AP_ARM_CACHE_B15_RAC_DEAD,=0D CPUHP_PADATA_DEAD,=0D CPUHP_AP_DTPM_CPU_DEAD,=0D CPUHP_RANDOM_PREPARE,=0D CPUHP_WORKQUEUE_PREP,=0D CPUHP_POWER_NUMA_PREPARE,=0D CPUHP_HRTIMERS_PREPARE,=0D CPUHP_PROFILE_PREPARE,=0D CPUHP_X2APIC_PREPARE,=0D CPUHP_SMPCFD_PREPARE,=0D CPUHP_RELAY_PREPARE,=0D CPUHP_SLAB_PREPARE,=0D CPUHP_MD_RAID5_PREPARE,=0D CPUHP_RCUTREE_PREP,=0D CPUHP_CPUIDLE_COUPLED_PREPARE,=0D CPUHP_POWERPC_PMAC_PREPARE,=0D CPUHP_POWERPC_MMU_CTX_PREPARE,=0D CPUHP_XEN_PREPARE,=0D CPUHP_XEN_EVTCHN_PREPARE,=0D CPUHP_ARM_SHMOBILE_SCU_PREPARE,=0D CPUHP_SH_SH3X_PREPARE,=0D CPUHP_NET_FLOW_PREPARE,=0D CPUHP_TOPOLOGY_PREPARE,=0D CPUHP_NET_IUCV_PREPARE,=0D CPUHP_ARM_BL_PREPARE,=0D CPUHP_TRACE_RB_PREPARE,=0D CPUHP_MM_ZS_PREPARE,=0D CPUHP_MM_ZSWP_MEM_PREPARE,=0D CPUHP_MM_ZSWP_POOL_PREPARE,=0D CPUHP_KVM_PPC_BOOK3S_PREPARE,=0D CPUHP_ZCOMP_PREPARE,=0D CPUHP_TIMERS_PREPARE,=0D CPUHP_MIPS_SOC_PREPARE,=0D CPUHP_BP_PREPARE_DYN,=0D CPUHP_BP_PREPARE_DYN_END =3D CPUHP_BP_PREPARE_DYN + 20,=0D CPUHP_BRINGUP_CPU,=0D =0D =0D =0D =0D =0D CPUHP_AP_IDLE_DEAD,=0D CPUHP_AP_OFFLINE,=0D CPUHP_AP_SCHED_STARTING,=0D CPUHP_AP_RCUTREE_DYING,=0D CPUHP_AP_CPU_PM_STARTING,=0D CPUHP_AP_IRQ_GIC_STARTING,=0D CPUHP_AP_IRQ_HIP04_STARTING,=0D CPUHP_AP_IRQ_APPLE_AIC_STARTING,=0D CPUHP_AP_IRQ_ARMADA_XP_STARTING,=0D CPUHP_AP_IRQ_BCM2836_STARTING,=0D CPUHP_AP_IRQ_MIPS_GIC_STARTING,=0D CPUHP_AP_IRQ_RISCV_STARTING,=0D CPUHP_AP_IRQ_SIFIVE_PLIC_STARTING,=0D CPUHP_AP_ARM_MVEBU_COHERENCY,=0D CPUHP_AP_MICROCODE_LOADER,=0D CPUHP_AP_PERF_X86_AMD_UNCORE_STARTING,=0D CPUHP_AP_PERF_X86_STARTING,=0D CPUHP_AP_PERF_X86_AMD_IBS_STARTING,=0D CPUHP_AP_PERF_X86_CQM_STARTING,=0D CPUHP_AP_PERF_X86_CSTATE_STARTING,=0D CPUHP_AP_PERF_XTENSA_STARTING,=0D CPUHP_AP_MIPS_OP_LOONGSON3_STARTING,=0D CPUHP_AP_ARM_SDEI_STARTING,=0D CPUHP_AP_ARM_VFP_STARTING,=0D CPUHP_AP_ARM64_DEBUG_MONITORS_STARTING,=0D CPUHP_AP_PERF_ARM_HW_BREAKPOINT_STARTING,=0D CPUHP_AP_PERF_ARM_ACPI_STARTING,=0D CPUHP_AP_PERF_ARM_STARTING,=0D CPUHP_AP_PERF_RISCV_STARTING,=0D CPUHP_AP_ARM_L2X0_STARTING,=0D CPUHP_AP_EXYNOS4_MCT_TIMER_STARTING,=0D CPUHP_AP_ARM_ARCH_TIMER_STARTING,=0D CPUHP_AP_ARM_GLOBAL_TIMER_STARTING,=0D CPUHP_AP_JCORE_TIMER_STARTING,=0D CPUHP_AP_ARM_TWD_STARTING,=0D CPUHP_AP_QCOM_TIMER_STARTING,=0D CPUHP_AP_TEGRA_TIMER_STARTING,=0D CPUHP_AP_ARMADA_TIMER_STARTING,=0D CPUHP_AP_MARCO_TIMER_STARTING,=0D CPUHP_AP_MIPS_GIC_TIMER_STARTING,=0D CPUHP_AP_ARC_TIMER_STARTING,=0D CPUHP_AP_RISCV_TIMER_STARTING,=0D CPUHP_AP_CLINT_TIMER_STARTING,=0D CPUHP_AP_CSKY_TIMER_STARTING,=0D CPUHP_AP_TI_GP_TIMER_STARTING,=0D CPUHP_AP_HYPERV_TIMER_STARTING,=0D CPUHP_AP_KVM_STARTING,=0D CPUHP_AP_KVM_ARM_VGIC_INIT_STARTING,=0D CPUHP_AP_KVM_ARM_VGIC_STARTING,=0D CPUHP_AP_KVM_ARM_TIMER_STARTING,=0D =0D CPUHP_AP_DUMMY_TIMER_STARTING,=0D CPUHP_AP_ARM_XEN_STARTING,=0D CPUHP_AP_ARM_CORESIGHT_STARTING,=0D CPUHP_AP_ARM_CORESIGHT_CTI_STARTING,=0D CPUHP_AP_ARM64_ISNDEP_STARTING,=0D CPUHP_AP_SMPCFD_DYING,=0D CPUHP_AP_X86_TBOOT_DYING,=0D CPUHP_AP_ARM_CACHE_B15_RAC_DYING,=0D CPUHP_AP_ONLINE,=0D CPUHP_TEARDOWN_CPU,=0D =0D =0D CPUHP_AP_ONLINE_IDLE,=0D CPUHP_AP_SCHED_WAIT_EMPTY,=0D CPUHP_AP_SMPBOOT_THREADS,=0D CPUHP_AP_X86_VDSO_VMA_ONLINE,=0D CPUHP_AP_IRQ_AFFINITY_ONLINE,=0D CPUHP_AP_BLK_MQ_ONLINE,=0D CPUHP_AP_ARM_MVEBU_SYNC_CLOCKS,=0D CPUHP_AP_X86_INTEL_EPB_ONLINE,=0D CPUHP_AP_PERF_ONLINE,=0D CPUHP_AP_PERF_X86_ONLINE,=0D CPUHP_AP_PERF_X86_UNCORE_ONLINE,=0D CPUHP_AP_PERF_X86_AMD_UNCORE_ONLINE,=0D CPUHP_AP_PERF_X86_AMD_POWER_ONLINE,=0D CPUHP_AP_PERF_X86_RAPL_ONLINE,=0D CPUHP_AP_PERF_X86_CQM_ONLINE,=0D CPUHP_AP_PERF_X86_CSTATE_ONLINE,=0D CPUHP_AP_PERF_X86_IDXD_ONLINE,=0D CPUHP_AP_PERF_S390_CF_ONLINE,=0D CPUHP_AP_PERF_S390_SF_ONLINE,=0D CPUHP_AP_PERF_ARM_CCI_ONLINE,=0D CPUHP_AP_PERF_ARM_CCN_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_DDRC_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_HHA_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_L3_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_PA_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_SLLC_ONLINE,=0D CPUHP_AP_PERF_ARM_HISI_PCIE_PMU_ONLINE,=0D CPUHP_AP_PERF_ARM_L2X0_ONLINE,=0D CPUHP_AP_PERF_ARM_QCOM_L2_ONLINE,=0D CPUHP_AP_PERF_ARM_QCOM_L3_ONLINE,=0D CPUHP_AP_PERF_ARM_APM_XGENE_ONLINE,=0D CPUHP_AP_PERF_ARM_CAVIUM_TX2_UNCORE_ONLINE,=0D CPUHP_AP_PERF_ARM_MARVELL_CN10K_DDR_ONLINE,=0D CPUHP_AP_PERF_POWERPC_NEST_IMC_ONLINE,=0D CPUHP_AP_PERF_POWERPC_CORE_IMC_ONLINE,=0D CPUHP_AP_PERF_POWERPC_THREAD_IMC_ONLINE,=0D CPUHP_AP_PERF_POWERPC_TRACE_IMC_ONLINE,=0D CPUHP_AP_PERF_POWERPC_HV_24x7_ONLINE,=0D CPUHP_AP_PERF_POWERPC_HV_GPCI_ONLINE,=0D CPUHP_AP_PERF_CSKY_ONLINE,=0D CPUHP_AP_WATCHDOG_ONLINE,=0D CPUHP_AP_WORKQUEUE_ONLINE,=0D CPUHP_AP_RANDOM_ONLINE,=0D CPUHP_AP_RCUTREE_ONLINE,=0D CPUHP_AP_BASE_CACHEINFO_ONLINE,=0D CPUHP_AP_ONLINE_DYN,=0D CPUHP_AP_ONLINE_DYN_END =3D CPUHP_AP_ONLINE_DYN + 30,=0D =0D CPUHP_AP_MM_DEMOTION_ONLINE,=0D CPUHP_AP_X86_HPET_ONLINE,=0D CPUHP_AP_X86_KVM_CLK_ONLINE,=0D CPUHP_AP_ACTIVE,=0D CPUHP_ONLINE,=0D };=0D =0D int __cpuhp_setup_state(enum cpuhp_state state, const char *name, bool invo= ke,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu), bool multi_instance);=0D =0D int __cpuhp_setup_state_cpuslocked(enum cpuhp_state state, const char *name= ,=0D bool invoke,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu),=0D bool multi_instance);=0D # 279 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_setup_state(enum c= puhp_state state,=0D const char *name,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu))=0D {=0D return __cpuhp_setup_state(state, name, true, startup, teardown, false);=0D }=0D # 299 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_setup_state_cpuslo= cked(enum cpuhp_state state,=0D const char *name,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu))=0D {=0D return __cpuhp_setup_state_cpuslocked(state, name, true, startup,=0D teardown, false);=0D }=0D # 319 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_setup_state_nocall= s(enum cpuhp_state state,=0D const char *name,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu))=0D {=0D return __cpuhp_setup_state(state, name, false, startup, teardown,=0D false);=0D }=0D # 341 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_setup_state_nocall= s_cpuslocked(enum cpuhp_state state,=0D const char *name,=0D int (*startup)(unsigned int cpu),=0D int (*teardown)(unsigned int cpu))=0D {=0D return __cpuhp_setup_state_cpuslocked(state, name, false, startup,=0D teardown, false);=0D }=0D # 362 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_setup_state_multi(= enum cpuhp_state state,=0D const char *name,=0D int (*startup)(unsigned int cpu,=0D struct hlist_node *node),=0D int (*teardown)(unsigned int cpu,=0D struct hlist_node *node))=0D {=0D return __cpuhp_setup_state(state, name, false,=0D (void *) startup,=0D (void *) teardown, true);=0D }=0D =0D int __cpuhp_state_add_instance(enum cpuhp_state state, struct hlist_node *n= ode,=0D bool invoke);=0D int __cpuhp_state_add_instance_cpuslocked(enum cpuhp_state state,=0D struct hlist_node *node, bool invoke);=0D # 390 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_state_add_instance= (enum cpuhp_state state,=0D struct hlist_node *node)=0D {=0D return __cpuhp_state_add_instance(state, node, true);=0D }=0D # 406 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_state_add_instance= _nocalls(enum cpuhp_state state,=0D struct hlist_node *node)=0D {=0D return __cpuhp_state_add_instance(state, node, false);=0D }=0D # 423 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D cpuhp_state_add_instance_nocalls_cpuslocked(enum cpuhp_state state,=0D struct hlist_node *node)=0D {=0D return __cpuhp_state_add_instance_cpuslocked(state, node, false);=0D }=0D =0D void __cpuhp_remove_state(enum cpuhp_state state, bool invoke);=0D void __cpuhp_remove_state_cpuslocked(enum cpuhp_state state, bool invoke);= =0D # 440 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuhp_remove_state(enum= cpuhp_state state)=0D {=0D __cpuhp_remove_state(state, true);=0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuhp_remove_state_noca= lls(enum cpuhp_state state)=0D {=0D __cpuhp_remove_state(state, false);=0D }=0D # 463 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuhp_remove_state_noca= lls_cpuslocked(enum cpuhp_state state)=0D {=0D __cpuhp_remove_state_cpuslocked(state, false);=0D }=0D # 476 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpuhp_remove_multi_stat= e(enum cpuhp_state state)=0D {=0D __cpuhp_remove_state(state, false);=0D }=0D =0D int __cpuhp_state_remove_instance(enum cpuhp_state state,=0D struct hlist_node *node, bool invoke);=0D # 493 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_state_remove_insta= nce(enum cpuhp_state state,=0D struct hlist_node *node)=0D {=0D return __cpuhp_state_remove_instance(state, node, true);=0D }=0D # 507 "./include/linux/cpuhotplug.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_state_remove_insta= nce_nocalls(enum cpuhp_state state,=0D struct hlist_node *node)=0D {=0D return __cpuhp_state_remove_instance(state, node, false);=0D }=0D =0D =0D void cpuhp_online_idle(enum cpuhp_state state);=0D # 21 "./include/linux/cpu.h" 2=0D =0D struct device;=0D struct device_node;=0D struct attribute_group;=0D =0D struct cpu {=0D int node_id;=0D int hotpluggable;=0D struct device dev;=0D };=0D =0D extern void boot_cpu_init(void);=0D extern void boot_cpu_hotplug_init(void);=0D extern void cpu_init(void);=0D extern void trap_init(void);=0D =0D extern int register_cpu(struct cpu *cpu, int num);=0D extern struct device *get_cpu_device(unsigned cpu);=0D extern bool cpu_is_hotpluggable(unsigned cpu);=0D extern bool arch_match_cpu_phys_id(int cpu, u64 phys_id);=0D extern bool arch_find_n_match_cpu_physical_id(struct device_node *cpun,=0D int cpu, unsigned int *thread);=0D =0D extern int cpu_add_dev_attr(struct device_attribute *attr);=0D extern void cpu_remove_dev_attr(struct device_attribute *attr);=0D =0D extern int cpu_add_dev_attr_group(struct attribute_group *attrs);=0D extern void cpu_remove_dev_attr_group(struct attribute_group *attrs);=0D =0D extern ssize_t cpu_show_meltdown(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_spectre_v1(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_spectre_v2(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_spec_store_bypass(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_l1tf(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_mds(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_tsx_async_abort(struct device *dev,=0D struct device_attribute *attr,=0D char *buf);=0D extern ssize_t cpu_show_itlb_multihit(struct device *dev,=0D struct device_attribute *attr, char *buf);=0D extern ssize_t cpu_show_srbds(struct device *dev, struct device_attribute *= attr, char *buf);=0D =0D extern __attribute__((__format__(printf, 4, 5)))=0D struct device *cpu_device_create(struct device *parent, void *drvdata,=0D const struct attribute_group **groups,=0D const char *fmt, ...);=0D =0D extern void unregister_cpu(struct cpu *cpu);=0D extern ssize_t arch_cpu_probe(const char *, size_t);=0D extern ssize_t arch_cpu_release(const char *, size_t);=0D # 91 "./include/linux/cpu.h"=0D extern bool cpuhp_tasks_frozen;=0D int add_cpu(unsigned int cpu);=0D int cpu_device_up(struct device *dev);=0D void notify_cpu_starting(unsigned int cpu);=0D extern void cpu_maps_update_begin(void);=0D extern void cpu_maps_update_done(void);=0D int bringup_hibernate_cpu(unsigned int sleep_cpu);=0D void bringup_nonboot_cpus(unsigned int setup_max_cpus);=0D # 114 "./include/linux/cpu.h"=0D extern struct bus_type cpu_subsys;=0D =0D extern int lockdep_is_cpus_held(void);=0D =0D =0D extern void cpus_write_lock(void);=0D extern void cpus_write_unlock(void);=0D extern void cpus_read_lock(void);=0D extern void cpus_read_unlock(void);=0D extern int cpus_read_trylock(void);=0D extern void lockdep_assert_cpus_held(void);=0D extern void cpu_hotplug_disable(void);=0D extern void cpu_hotplug_enable(void);=0D void clear_tasks_mm_cpumask(int cpu);=0D int remove_cpu(unsigned int cpu);=0D int cpu_device_down(struct device *dev);=0D extern void smp_shutdown_nonboot_cpus(unsigned int primary_cpu);=0D # 165 "./include/linux/cpu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void thaw_secondary_cpus(voi= d) {}=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int suspend_disable_secondar= y_cpus(void) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void suspend_enable_secondar= y_cpus(void) { }=0D =0D =0D void __attribute__((__noreturn__)) cpu_startup_entry(enum cpuhp_state state= );=0D =0D void cpu_idle_poll_ctrl(bool enable);=0D =0D =0D =0D =0D bool cpu_in_idle(unsigned long pc);=0D =0D void arch_cpu_idle(void);=0D void arch_cpu_idle_prepare(void);=0D void arch_cpu_idle_enter(void);=0D void arch_cpu_idle_exit(void);=0D void arch_cpu_idle_dead(void);=0D =0D int cpu_report_state(int cpu);=0D int cpu_check_up_prepare(int cpu);=0D void cpu_set_state_online(int cpu);=0D void play_idle_precise(u64 duration_ns, u64 latency_ns);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void play_idle(unsigned long= duration_us)=0D {=0D play_idle_precise(duration_us * 1000L, ((u64)~0ULL));=0D }=0D =0D =0D bool cpu_wait_death(unsigned int cpu, int seconds);=0D bool cpu_report_death(void);=0D void cpuhp_report_idle_dead(void);=0D =0D =0D =0D =0D enum cpuhp_smt_control {=0D CPU_SMT_ENABLED,=0D CPU_SMT_DISABLED,=0D CPU_SMT_FORCE_DISABLED,=0D CPU_SMT_NOT_SUPPORTED,=0D CPU_SMT_NOT_IMPLEMENTED,=0D };=0D # 220 "./include/linux/cpu.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_smt_disable(bool fo= rce) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void cpu_smt_check_topology(= void) { }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool cpu_smt_possible(void) = { return false; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_smt_enable(void) {= return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int cpuhp_smt_disable(enum c= puhp_smt_control ctrlval) { return 0; }=0D =0D =0D extern bool cpu_mitigations_off(void);=0D extern bool cpu_mitigations_auto_nosmt(void);=0D # 136 "./include/linux/static_call.h" 2=0D # 282 "./include/linux/static_call.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int static_call_init(void) {= return 0; }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) long __static_call_return0(v= oid)=0D {=0D return 0;=0D }=0D # 304 "./include/linux/static_call.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __static_call_nop(void)= { }=0D # 328 "./include/linux/static_call.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void __static_call_update(struct static_call_key *key, void *tramp, void *f= unc)=0D {=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_6= 34(void) ; if (!((sizeof(key->func) =3D=3D sizeof(char) || sizeof(key->func= ) =3D=3D sizeof(short) || sizeof(key->func) =3D=3D sizeof(int) || sizeof(ke= y->func) =3D=3D sizeof(long)) || sizeof(key->func) =3D=3D sizeof(long long)= )) __compiletime_assert_634(); } while (0); do { *(volatile typeof(key->fun= c) *)&(key->func) =3D (func); } while (0); } while (0);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int static_call_text_reserve= d(void *start, void *end)=0D {=0D return 0;=0D }=0D # 23 "./include/linux/tracepoint.h" 2=0D =0D struct module;=0D struct tracepoint;=0D struct notifier_block;=0D =0D struct trace_eval_map {=0D const char *system;=0D const char *eval_string;=0D unsigned long eval_value;=0D };=0D =0D =0D =0D extern struct srcu_struct tracepoint_srcu;=0D =0D extern int=0D tracepoint_probe_register(struct tracepoint *tp, void *probe, void *data);= =0D extern int=0D tracepoint_probe_register_prio(struct tracepoint *tp, void *probe, void *da= ta,=0D int prio);=0D extern int=0D tracepoint_probe_register_prio_may_exist(struct tracepoint *tp, void *probe= , void *data,=0D int prio);=0D extern int=0D tracepoint_probe_unregister(struct tracepoint *tp, void *probe, void *data)= ;=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int=0D tracepoint_probe_register_may_exist(struct tracepoint *tp, void *probe,=0D void *data)=0D {=0D return tracepoint_probe_register_prio_may_exist(tp, probe, data,=0D 10);=0D }=0D extern void=0D for_each_kernel_tracepoint(void (*fct)(struct tracepoint *tp, void *priv),= =0D void *priv);=0D =0D =0D struct tp_module {=0D struct list_head list;=0D struct module *mod;=0D };=0D =0D bool trace_module_has_bad_taint(struct module *mod);=0D extern int register_tracepoint_module_notifier(struct notifier_block *nb);= =0D extern int unregister_tracepoint_module_notifier(struct notifier_block *nb)= ;=0D # 91 "./include/linux/tracepoint.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tracepoint_synchronize_= unregister(void)=0D {=0D synchronize_srcu(&tracepoint_srcu);=0D synchronize_rcu();=0D }=0D =0D =0D =0D =0D =0D =0D extern int syscall_regfunc(void);=0D extern void syscall_unregfunc(void);=0D # 125 "./include/linux/tracepoint.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct tracepoint *tracepoin= t_ptr_deref(tracepoint_ptr_t *p)=0D {=0D return *p;=0D }=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D extern int __traceiter_fib6_table_lookup(void *__data, const struct net *ne= t, const struct fib6_result *res, struct fib6_table *table, const struct fl= owi6 *flp); extern struct static_call_key __SCK__tp_func_fib6_table_lookup;= extern typeof(__traceiter_fib6_table_lookup) __SCT__tp_func_fib6_table_loo= kup;; extern struct tracepoint __tracepoint_fib6_table_lookup; static inlin= e __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribute__= ((patchable_function_entry(0, 0))) void trace_fib6_table_lookup(const struc= t net *net, const struct fib6_result *res, struct fib6_table *table, const = struct flowi6 *flp) { if (static_key_false(&__tracepoint_fib6_table_lookup.= key)) do { int __attribute__((__unused__)) __idx =3D 0; if (!(cpu_online(((= (struct thread_info *)get_current())->cpu)))) return; ({ int __ret_warn_on = =3D !!(0 && ((preempt_count() & (((1UL << (4))-1) << (((0 + 8) + 8) + 4))))= ); if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( = "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" = " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2"= "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("include/trace/events/fib= 6.h"), "i" (87), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct= bug_entry))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); }); do = { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0= ); if (0) { __idx =3D srcu_read_lock_notrace(&tracepoint_srcu); rcu_irq_ent= er_irqson(); } __traceiter_fib6_table_lookup(((void *)0), net, res, table, = flp); if (0) { rcu_irq_exit_irqson(); srcu_read_unlock_notrace(&tracepoint_= srcu, __idx); } do { __asm__ __volatile__("": : :"memory"); __preempt_count= _sub(1); } while (0); } while (0); if (1 && (cpu_online((((struct thread_in= fo *)get_current())->cpu)))) { rcu_read_lock_sched_notrace(); ({ typeof(*(_= _tracepoint_fib6_table_lookup.funcs)) *__UNIQUE_ID_rcu635 =3D (typeof(*(__t= racepoint_fib6_table_lookup.funcs)) *)({ do { __attribute__((__noreturn__))= extern void __compiletime_assert_636(void) ; if (!((sizeof((__tracepoint_f= ib6_table_lookup.funcs)) =3D=3D sizeof(char) || sizeof((__tracepoint_fib6_t= able_lookup.funcs)) =3D=3D sizeof(short) || sizeof((__tracepoint_fib6_table= _lookup.funcs)) =3D=3D sizeof(int) || sizeof((__tracepoint_fib6_table_looku= p.funcs)) =3D=3D sizeof(long)) || sizeof((__tracepoint_fib6_table_lookup.fu= ncs)) =3D=3D sizeof(long long))) __compiletime_assert_636(); } while (0); (= *(const volatile typeof( _Generic(((__tracepoint_fib6_table_lookup.funcs)),= char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)= 0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsign= ed int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigne= d long)0, signed long: (signed long)0, unsigned long long: (unsigned long l= ong)0, signed long long: (signed long long)0, default: ((__tracepoint_fib6_= table_lookup.funcs)))) *)&((__tracepoint_fib6_table_lookup.funcs))); }); do= { } while (0 && (!((0) || rcu_read_lock_sched_held()))); ; ((typeof(*(__tr= acepoint_fib6_table_lookup.funcs)) *)(__UNIQUE_ID_rcu635)); }); rcu_read_un= lock_sched_notrace(); } } static inline __attribute__((__gnu_inline__)) __a= ttribute__((__unused__)) __attribute__((patchable_function_entry(0, 0))) vo= id trace_fib6_table_lookup_rcuidle(const struct net *net, const struct fib6= _result *res, struct fib6_table *table, const struct flowi6 *flp) { if (sta= tic_key_false(&__tracepoint_fib6_table_lookup.key)) do { int __attribute__(= (__unused__)) __idx =3D 0; if (!(cpu_online((((struct thread_info *)get_cur= rent())->cpu)))) return; ({ int __ret_warn_on =3D !!(1 && ((preempt_count()= & (((1UL << (4))-1) << (((0 + 8) + 8) + 4))))); if (__builtin_expect(!!(__= ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsec= tion __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %= 0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".= popsection" : : "i" ("include/trace/events/fib6.h"), "i" (87), "i" ((1 << 0= )|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); _= _builtin_expect(!!(__ret_warn_on), 0); }); do { __preempt_count_add(1); __a= sm__ __volatile__("": : :"memory"); } while (0); if (1) { __idx =3D srcu_re= ad_lock_notrace(&tracepoint_srcu); rcu_irq_enter_irqson(); } __traceiter_fi= b6_table_lookup(((void *)0), net, res, table, flp); if (1) { rcu_irq_exit_i= rqson(); srcu_read_unlock_notrace(&tracepoint_srcu, __idx); } do { __asm__ = __volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); } while= (0); } static inline __attribute__((__gnu_inline__)) __attribute__((__unus= ed__)) __attribute__((patchable_function_entry(0, 0))) int register_trace_f= ib6_table_lookup(void (*probe)(void *__data, const struct net *net, const s= truct fib6_result *res, struct fib6_table *table, const struct flowi6 *flp)= , void *data) { return tracepoint_probe_register(&__tracepoint_fib6_table_l= ookup, (void *)probe, data); } static inline __attribute__((__gnu_inline__)= ) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0)= )) int register_trace_prio_fib6_table_lookup(void (*probe)(void *__data, co= nst struct net *net, const struct fib6_result *res, struct fib6_table *tabl= e, const struct flowi6 *flp), void *data, int prio) { return tracepoint_pro= be_register_prio(&__tracepoint_fib6_table_lookup, (void *)probe, data, prio= ); } static inline __attribute__((__gnu_inline__)) __attribute__((__unused_= _)) __attribute__((patchable_function_entry(0, 0))) int unregister_trace_fi= b6_table_lookup(void (*probe)(void *__data, const struct net *net, const st= ruct fib6_result *res, struct fib6_table *table, const struct flowi6 *flp),= void *data) { return tracepoint_probe_unregister(&__tracepoint_fib6_table_= lookup, (void *)probe, data); } static inline __attribute__((__gnu_inline__= )) __attribute__((__unused__)) __attribute__((patchable_function_entry(0, 0= ))) void check_trace_callback_type_fib6_table_lookup(void (*cb)(void *__dat= a, const struct net *net, const struct fib6_result *res, struct fib6_table = *table, const struct flowi6 *flp)) { } static inline __attribute__((__gnu_i= nline__)) __attribute__((__unused__)) __attribute__((patchable_function_ent= ry(0, 0))) bool trace_fib6_table_lookup_enabled(void) { return static_key_f= alse(&__tracepoint_fib6_table_lookup.key); };=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 95 "./include/trace/define_trace.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static const char __tpstrtab_fib6_table_lookup[] __attribute__((__section__= ("__tracepoints_strings"))) =3D "fib6_table_lookup"; extern struct static_c= all_key __SCK__tp_func_fib6_table_lookup; int __traceiter_fib6_table_lookup= (void *__data, const struct net *net, const struct fib6_result *res, struct= fib6_table *table, const struct flowi6 *flp); struct tracepoint __tracepoi= nt_fib6_table_lookup __attribute__((__used__)) __attribute__((__section__("= __tracepoints"))) =3D { .name =3D __tpstrtab_fib6_table_lookup, .key =3D { = =2Eenabled =3D { (0) } }, .static_call_key =3D &__SCK__tp_func_fib6_table_l= ookup, .static_call_tramp =3D ((void *)0), .iterator =3D &__traceiter_fib6_= table_lookup, .regfunc =3D ((void *)0), .unregfunc =3D ((void *)0), .funcs = =3D ((void *)0) }; static tracepoint_ptr_t __tracepoint_ptr_fib6_table_look= up __attribute__((__used__)) __attribute__((__section__("__tracepoints_ptrs= "))) =3D &__tracepoint_fib6_table_lookup; int __traceiter_fib6_table_lookup= (void *__data, const struct net *net, const struct fib6_result *res, struct= fib6_table *table, const struct flowi6 *flp) { struct tracepoint_func *it_= func_ptr; void *it_func; it_func_ptr =3D ({ typeof((&__tracepoint_fib6_tabl= e_lookup)->funcs) __UNIQUE_ID_rcu637 =3D ({ do { __attribute__((__noreturn_= _)) extern void __compiletime_assert_638(void) ; if (!((sizeof((&__tracepoi= nt_fib6_table_lookup)->funcs) =3D=3D sizeof(char) || sizeof((&__tracepoint_= fib6_table_lookup)->funcs) =3D=3D sizeof(short) || sizeof((&__tracepoint_fi= b6_table_lookup)->funcs) =3D=3D sizeof(int) || sizeof((&__tracepoint_fib6_t= able_lookup)->funcs) =3D=3D sizeof(long)) || sizeof((&__tracepoint_fib6_tab= le_lookup)->funcs) =3D=3D sizeof(long long))) __compiletime_assert_638(); }= while (0); (*(const volatile typeof( _Generic(((&__tracepoint_fib6_table_l= ookup)->funcs), char: (char)0, unsigned char: (unsigned char)0, signed char= : (signed char)0, unsigned short: (unsigned short)0, signed short: (signed = short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned= long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (= unsigned long long)0, signed long long: (signed long long)0, default: ((&__= tracepoint_fib6_table_lookup)->funcs))) *)&((&__tracepoint_fib6_table_looku= p)->funcs)); }); ((typeof(*(&__tracepoint_fib6_table_lookup)->funcs) *)(__U= NIQUE_ID_rcu637)); }); if (it_func_ptr) { do { it_func =3D ({ do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_639(void) ; if (!((s= izeof((it_func_ptr)->func) =3D=3D sizeof(char) || sizeof((it_func_ptr)->fun= c) =3D=3D sizeof(short) || sizeof((it_func_ptr)->func) =3D=3D sizeof(int) |= | sizeof((it_func_ptr)->func) =3D=3D sizeof(long)) || sizeof((it_func_ptr)-= >func) =3D=3D sizeof(long long))) __compiletime_assert_639(); } while (0); = (*(const volatile typeof( _Generic(((it_func_ptr)->func), char: (char)0, un= signed char: (unsigned char)0, signed char: (signed char)0, unsigned short:= (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned = int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed l= ong: (signed long)0, unsigned long long: (unsigned long long)0, signed long= long: (signed long long)0, default: ((it_func_ptr)->func))) *)&((it_func_p= tr)->func)); }); __data =3D (it_func_ptr)->data; ((void(*)(void *, const st= ruct net *net, const struct fib6_result *res, struct fib6_table *table, con= st struct flowi6 *flp))(it_func))(__data, net, res, table, flp); } while ((= ++it_func_ptr)->func); } return 0; } extern struct static_call_key __SCK__t= p_func_fib6_table_lookup; extern typeof(__traceiter_fib6_table_lookup) __SC= T__tp_func_fib6_table_lookup;; struct static_call_key __SCK__tp_func_fib6_t= able_lookup =3D { .func =3D __traceiter_fib6_table_lookup, };;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 96 "./include/trace/define_trace.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./include/trace/trace_events.h" 1=0D # 21 "./include/trace/trace_events.h"=0D # 1 "./include/linux/trace_events.h" 1=0D =0D =0D =0D =0D =0D # 1 "./include/linux/ring_buffer.h" 1=0D =0D =0D =0D =0D =0D =0D =0D =0D struct trace_buffer;=0D struct ring_buffer_iter;=0D =0D =0D =0D =0D struct ring_buffer_event {=0D u32 type_len:5, time_delta:27;=0D =0D u32 array[];=0D };=0D # 55 "./include/linux/ring_buffer.h"=0D enum ring_buffer_type {=0D RINGBUF_TYPE_DATA_TYPE_LEN_MAX =3D 28,=0D RINGBUF_TYPE_PADDING,=0D RINGBUF_TYPE_TIME_EXTEND,=0D RINGBUF_TYPE_TIME_STAMP,=0D };=0D =0D unsigned ring_buffer_event_length(struct ring_buffer_event *event);=0D void *ring_buffer_event_data(struct ring_buffer_event *event);=0D u64 ring_buffer_event_time_stamp(struct trace_buffer *buffer,=0D struct ring_buffer_event *event);=0D # 81 "./include/linux/ring_buffer.h"=0D void ring_buffer_discard_commit(struct trace_buffer *buffer,=0D struct ring_buffer_event *event);=0D =0D =0D =0D =0D struct trace_buffer *=0D __ring_buffer_alloc(unsigned long size, unsigned flags, struct lock_class_k= ey *key);=0D # 101 "./include/linux/ring_buffer.h"=0D int ring_buffer_wait(struct trace_buffer *buffer, int cpu, int full);=0D __poll_t ring_buffer_poll_wait(struct trace_buffer *buffer, int cpu,=0D struct file *filp, poll_table *poll_table);=0D =0D =0D =0D =0D void ring_buffer_free(struct trace_buffer *buffer);=0D =0D int ring_buffer_resize(struct trace_buffer *buffer, unsigned long size, int= cpu);=0D =0D void ring_buffer_change_overwrite(struct trace_buffer *buffer, int val);=0D =0D struct ring_buffer_event *ring_buffer_lock_reserve(struct trace_buffer *buf= fer,=0D unsigned long length);=0D int ring_buffer_unlock_commit(struct trace_buffer *buffer,=0D struct ring_buffer_event *event);=0D int ring_buffer_write(struct trace_buffer *buffer,=0D unsigned long length, void *data);=0D =0D void ring_buffer_nest_start(struct trace_buffer *buffer);=0D void ring_buffer_nest_end(struct trace_buffer *buffer);=0D =0D struct ring_buffer_event *=0D ring_buffer_peek(struct trace_buffer *buffer, int cpu, u64 *ts,=0D unsigned long *lost_events);=0D struct ring_buffer_event *=0D ring_buffer_consume(struct trace_buffer *buffer, int cpu, u64 *ts,=0D unsigned long *lost_events);=0D =0D struct ring_buffer_iter *=0D ring_buffer_read_prepare(struct trace_buffer *buffer, int cpu, gfp_t flags)= ;=0D void ring_buffer_read_prepare_sync(void);=0D void ring_buffer_read_start(struct ring_buffer_iter *iter);=0D void ring_buffer_read_finish(struct ring_buffer_iter *iter);=0D =0D struct ring_buffer_event *=0D ring_buffer_iter_peek(struct ring_buffer_iter *iter, u64 *ts);=0D void ring_buffer_iter_advance(struct ring_buffer_iter *iter);=0D void ring_buffer_iter_reset(struct ring_buffer_iter *iter);=0D int ring_buffer_iter_empty(struct ring_buffer_iter *iter);=0D bool ring_buffer_iter_dropped(struct ring_buffer_iter *iter);=0D =0D unsigned long ring_buffer_size(struct trace_buffer *buffer, int cpu);=0D =0D void ring_buffer_reset_cpu(struct trace_buffer *buffer, int cpu);=0D void ring_buffer_reset_online_cpus(struct trace_buffer *buffer);=0D void ring_buffer_reset(struct trace_buffer *buffer);=0D =0D =0D int ring_buffer_swap_cpu(struct trace_buffer *buffer_a,=0D struct trace_buffer *buffer_b, int cpu);=0D # 162 "./include/linux/ring_buffer.h"=0D bool ring_buffer_empty(struct trace_buffer *buffer);=0D bool ring_buffer_empty_cpu(struct trace_buffer *buffer, int cpu);=0D =0D void ring_buffer_record_disable(struct trace_buffer *buffer);=0D void ring_buffer_record_enable(struct trace_buffer *buffer);=0D void ring_buffer_record_off(struct trace_buffer *buffer);=0D void ring_buffer_record_on(struct trace_buffer *buffer);=0D bool ring_buffer_record_is_on(struct trace_buffer *buffer);=0D bool ring_buffer_record_is_set_on(struct trace_buffer *buffer);=0D void ring_buffer_record_disable_cpu(struct trace_buffer *buffer, int cpu);= =0D void ring_buffer_record_enable_cpu(struct trace_buffer *buffer, int cpu);=0D =0D u64 ring_buffer_oldest_event_ts(struct trace_buffer *buffer, int cpu);=0D unsigned long ring_buffer_bytes_cpu(struct trace_buffer *buffer, int cpu);= =0D unsigned long ring_buffer_entries(struct trace_buffer *buffer);=0D unsigned long ring_buffer_overruns(struct trace_buffer *buffer);=0D unsigned long ring_buffer_entries_cpu(struct trace_buffer *buffer, int cpu)= ;=0D unsigned long ring_buffer_overrun_cpu(struct trace_buffer *buffer, int cpu)= ;=0D unsigned long ring_buffer_commit_overrun_cpu(struct trace_buffer *buffer, i= nt cpu);=0D unsigned long ring_buffer_dropped_events_cpu(struct trace_buffer *buffer, i= nt cpu);=0D unsigned long ring_buffer_read_events_cpu(struct trace_buffer *buffer, int = cpu);=0D =0D u64 ring_buffer_time_stamp(struct trace_buffer *buffer);=0D void ring_buffer_normalize_time_stamp(struct trace_buffer *buffer,=0D int cpu, u64 *ts);=0D void ring_buffer_set_clock(struct trace_buffer *buffer,=0D u64 (*clock)(void));=0D void ring_buffer_set_time_stamp_abs(struct trace_buffer *buffer, bool abs);= =0D bool ring_buffer_time_stamp_abs(struct trace_buffer *buffer);=0D =0D size_t ring_buffer_nr_pages(struct trace_buffer *buffer, int cpu);=0D size_t ring_buffer_nr_dirty_pages(struct trace_buffer *buffer, int cpu);=0D =0D void *ring_buffer_alloc_read_page(struct trace_buffer *buffer, int cpu);=0D void ring_buffer_free_read_page(struct trace_buffer *buffer, int cpu, void = *data);=0D int ring_buffer_read_page(struct trace_buffer *buffer, void **data_page,=0D size_t len, int cpu, int full);=0D =0D struct trace_seq;=0D =0D int ring_buffer_print_entry_header(struct trace_seq *s);=0D int ring_buffer_print_page_header(struct trace_seq *s);=0D =0D enum ring_buffer_flags {=0D RB_FL_OVERWRITE =3D 1 << 0,=0D };=0D =0D =0D int trace_rb_cpu_prepare(unsigned int cpu, struct hlist_node *node);=0D # 7 "./include/linux/trace_events.h" 2=0D # 1 "./include/linux/trace_seq.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/seq_buf.h" 1=0D # 19 "./include/linux/seq_buf.h"=0D struct seq_buf {=0D char *buffer;=0D size_t size;=0D size_t len;=0D loff_t readpos;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_buf_clear(struct se= q_buf *s)=0D {=0D s->len =3D 0;=0D s->readpos =3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D seq_buf_init(struct seq_buf *s, char *buf, unsigned int size)=0D {=0D s->buffer =3D buf;=0D s->size =3D size;=0D seq_buf_clear(s);=0D }=0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D seq_buf_has_overflowed(struct seq_buf *s)=0D {=0D return s->len > s->size;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D seq_buf_set_overflow(struct seq_buf *s)=0D {=0D s->len =3D s->size + 1;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int=0D seq_buf_buffer_left(struct seq_buf *s)=0D {=0D if (seq_buf_has_overflowed(s))=0D return 0;=0D =0D return s->size - s->len;=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int seq_buf_used(st= ruct seq_buf *s)=0D {=0D return __builtin_choose_expr(((!!(sizeof((typeof(s->len) *)1 =3D=3D (typeo= f(s->size) *)1))) && ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)(s->= len) * 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((lo= ng)(s->size) * 0l)) : (int *)8))))), ((s->len) < (s->size) ? (s->len) : (s-= >size)), ({ typeof(s->len) __UNIQUE_ID___x640 =3D (s->len); typeof(s->size)= __UNIQUE_ID___y641 =3D (s->size); ((__UNIQUE_ID___x640) < (__UNIQUE_ID___y= 641) ? (__UNIQUE_ID___x640) : (__UNIQUE_ID___y641)); }));=0D }=0D # 88 "./include/linux/seq_buf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_buf_terminate(struc= t seq_buf *s)=0D {=0D if (({ int __ret_warn_on =3D !!(s->size =3D=3D 0); if (__builtin_expect(!!= (__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".push= section __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" = " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t"= ".popsection" : : "i" ("include/linux/seq_buf.h"), "i" (90), "i" ((1 << 0)= |(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_exp= ect(!!(__ret_warn_on), 0); }))=0D return;=0D =0D if (seq_buf_buffer_left(s))=0D s->buffer[s->len] =3D 0;=0D else=0D s->buffer[s->size - 1] =3D 0;=0D }=0D # 107 "./include/linux/seq_buf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) size_t seq_buf_get_buf(struc= t seq_buf *s, char **bufp)=0D {=0D ({ int __ret_warn_on =3D !!(s->len > s->size + 1); if (__builtin_expect(!!= (__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".push= section __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" = " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t"= ".popsection" : : "i" ("include/linux/seq_buf.h"), "i" (109), "i" ((1 << 0= )|(((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_ex= pect(!!(__ret_warn_on), 0); });=0D =0D if (s->len < s->size) {=0D *bufp =3D s->buffer + s->len;=0D return s->size - s->len;=0D }=0D =0D *bufp =3D ((void *)0);=0D return 0;=0D }=0D # 129 "./include/linux/seq_buf.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void seq_buf_commit(struct s= eq_buf *s, int num)=0D {=0D if (num < 0) {=0D seq_buf_set_overflow(s);=0D } else {=0D =0D do { if (__builtin_expect(!!(s->len + num > s->size), 0)) do { do { __asm= __ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t"= "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\= n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("includ= e/linux/seq_buf.h"), "i" (135), "i" (0), "i" (sizeof(struct bug_entry))); }= while (0); do { ; __builtin_unreachable(); } while (0); } while (0); } whi= le (0);=0D s->len +=3D num;=0D }=0D }=0D =0D extern __attribute__((__format__(printf, 2, 3)))=0D int seq_buf_printf(struct seq_buf *s, const char *fmt, ...);=0D extern __attribute__((__format__(printf, 2, 0)))=0D int seq_buf_vprintf(struct seq_buf *s, const char *fmt, va_list args);=0D extern int seq_buf_print_seq(struct seq_file *m, struct seq_buf *s);=0D extern int seq_buf_to_user(struct seq_buf *s, char *ubuf,=0D int cnt);=0D extern int seq_buf_puts(struct seq_buf *s, const char *str);=0D extern int seq_buf_putc(struct seq_buf *s, unsigned char c);=0D extern int seq_buf_putmem(struct seq_buf *s, const void *mem, unsigned int = len);=0D extern int seq_buf_putmem_hex(struct seq_buf *s, const void *mem,=0D unsigned int len);=0D extern int seq_buf_path(struct seq_buf *s, const struct path *path, const c= har *esc);=0D extern int seq_buf_hex_dump(struct seq_buf *s, const char *prefix_str,=0D int prefix_type, int rowsize, int groupsize,=0D const void *buf, size_t len, bool ascii);=0D =0D =0D extern int=0D seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary);=0D # 6 "./include/linux/trace_seq.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D struct trace_seq {=0D char buffer[((1UL) << (12))];=0D struct seq_buf seq;=0D int full;=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D trace_seq_init(struct trace_seq *s)=0D {=0D seq_buf_init(&s->seq, s->buffer, ((1UL) << (12)));=0D s->full =3D 0;=0D }=0D # 40 "./include/linux/trace_seq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int trace_seq_used(struct tr= ace_seq *s)=0D {=0D return seq_buf_used(&s->seq);=0D }=0D # 54 "./include/linux/trace_seq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) char *=0D trace_seq_buffer_ptr(struct trace_seq *s)=0D {=0D return s->buffer + seq_buf_used(&s->seq);=0D }=0D # 67 "./include/linux/trace_seq.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool trace_seq_has_overflowe= d(struct trace_seq *s)=0D {=0D return s->full || seq_buf_has_overflowed(&s->seq);=0D }=0D =0D =0D =0D =0D =0D extern __attribute__((__format__(printf, 2, 3)))=0D void trace_seq_printf(struct trace_seq *s, const char *fmt, ...);=0D extern __attribute__((__format__(printf, 2, 0)))=0D void trace_seq_vprintf(struct trace_seq *s, const char *fmt, va_list args);= =0D extern void=0D trace_seq_bprintf(struct trace_seq *s, const char *fmt, const u32 *binary);= =0D extern int trace_print_seq(struct seq_file *m, struct trace_seq *s);=0D extern int trace_seq_to_user(struct trace_seq *s, char *ubuf,=0D int cnt);=0D extern void trace_seq_puts(struct trace_seq *s, const char *str);=0D extern void trace_seq_putc(struct trace_seq *s, unsigned char c);=0D extern void trace_seq_putmem(struct trace_seq *s, const void *mem, unsigned= int len);=0D extern void trace_seq_putmem_hex(struct trace_seq *s, const void *mem,=0D unsigned int len);=0D extern int trace_seq_path(struct trace_seq *s, const struct path *path);=0D =0D extern void trace_seq_bitmask(struct trace_seq *s, const unsigned long *mas= kp,=0D int nmaskbits);=0D =0D extern int trace_seq_hex_dump(struct trace_seq *s, const char *prefix_str,= =0D int prefix_type, int rowsize, int groupsize,=0D const void *buf, size_t len, bool ascii);=0D # 8 "./include/linux/trace_events.h" 2=0D =0D =0D # 1 "./include/linux/perf_event.h" 1=0D # 17 "./include/linux/perf_event.h"=0D # 1 "./include/uapi/linux/perf_event.h" 1=0D # 29 "./include/uapi/linux/perf_event.h"=0D enum perf_type_id {=0D PERF_TYPE_HARDWARE =3D 0,=0D PERF_TYPE_SOFTWARE =3D 1,=0D PERF_TYPE_TRACEPOINT =3D 2,=0D PERF_TYPE_HW_CACHE =3D 3,=0D PERF_TYPE_RAW =3D 4,=0D PERF_TYPE_BREAKPOINT =3D 5,=0D =0D PERF_TYPE_MAX,=0D };=0D # 60 "./include/uapi/linux/perf_event.h"=0D enum perf_hw_id {=0D =0D =0D =0D PERF_COUNT_HW_CPU_CYCLES =3D 0,=0D PERF_COUNT_HW_INSTRUCTIONS =3D 1,=0D PERF_COUNT_HW_CACHE_REFERENCES =3D 2,=0D PERF_COUNT_HW_CACHE_MISSES =3D 3,=0D PERF_COUNT_HW_BRANCH_INSTRUCTIONS =3D 4,=0D PERF_COUNT_HW_BRANCH_MISSES =3D 5,=0D PERF_COUNT_HW_BUS_CYCLES =3D 6,=0D PERF_COUNT_HW_STALLED_CYCLES_FRONTEND =3D 7,=0D PERF_COUNT_HW_STALLED_CYCLES_BACKEND =3D 8,=0D PERF_COUNT_HW_REF_CPU_CYCLES =3D 9,=0D =0D PERF_COUNT_HW_MAX,=0D };=0D # 85 "./include/uapi/linux/perf_event.h"=0D enum perf_hw_cache_id {=0D PERF_COUNT_HW_CACHE_L1D =3D 0,=0D PERF_COUNT_HW_CACHE_L1I =3D 1,=0D PERF_COUNT_HW_CACHE_LL =3D 2,=0D PERF_COUNT_HW_CACHE_DTLB =3D 3,=0D PERF_COUNT_HW_CACHE_ITLB =3D 4,=0D PERF_COUNT_HW_CACHE_BPU =3D 5,=0D PERF_COUNT_HW_CACHE_NODE =3D 6,=0D =0D PERF_COUNT_HW_CACHE_MAX,=0D };=0D =0D enum perf_hw_cache_op_id {=0D PERF_COUNT_HW_CACHE_OP_READ =3D 0,=0D PERF_COUNT_HW_CACHE_OP_WRITE =3D 1,=0D PERF_COUNT_HW_CACHE_OP_PREFETCH =3D 2,=0D =0D PERF_COUNT_HW_CACHE_OP_MAX,=0D };=0D =0D enum perf_hw_cache_op_result_id {=0D PERF_COUNT_HW_CACHE_RESULT_ACCESS =3D 0,=0D PERF_COUNT_HW_CACHE_RESULT_MISS =3D 1,=0D =0D PERF_COUNT_HW_CACHE_RESULT_MAX,=0D };=0D =0D =0D =0D =0D =0D =0D =0D enum perf_sw_ids {=0D PERF_COUNT_SW_CPU_CLOCK =3D 0,=0D PERF_COUNT_SW_TASK_CLOCK =3D 1,=0D PERF_COUNT_SW_PAGE_FAULTS =3D 2,=0D PERF_COUNT_SW_CONTEXT_SWITCHES =3D 3,=0D PERF_COUNT_SW_CPU_MIGRATIONS =3D 4,=0D PERF_COUNT_SW_PAGE_FAULTS_MIN =3D 5,=0D PERF_COUNT_SW_PAGE_FAULTS_MAJ =3D 6,=0D PERF_COUNT_SW_ALIGNMENT_FAULTS =3D 7,=0D PERF_COUNT_SW_EMULATION_FAULTS =3D 8,=0D PERF_COUNT_SW_DUMMY =3D 9,=0D PERF_COUNT_SW_BPF_OUTPUT =3D 10,=0D PERF_COUNT_SW_CGROUP_SWITCHES =3D 11,=0D =0D PERF_COUNT_SW_MAX,=0D };=0D =0D =0D =0D =0D =0D enum perf_event_sample_format {=0D PERF_SAMPLE_IP =3D 1U << 0,=0D PERF_SAMPLE_TID =3D 1U << 1,=0D PERF_SAMPLE_TIME =3D 1U << 2,=0D PERF_SAMPLE_ADDR =3D 1U << 3,=0D PERF_SAMPLE_READ =3D 1U << 4,=0D PERF_SAMPLE_CALLCHAIN =3D 1U << 5,=0D PERF_SAMPLE_ID =3D 1U << 6,=0D PERF_SAMPLE_CPU =3D 1U << 7,=0D PERF_SAMPLE_PERIOD =3D 1U << 8,=0D PERF_SAMPLE_STREAM_ID =3D 1U << 9,=0D PERF_SAMPLE_RAW =3D 1U << 10,=0D PERF_SAMPLE_BRANCH_STACK =3D 1U << 11,=0D PERF_SAMPLE_REGS_USER =3D 1U << 12,=0D PERF_SAMPLE_STACK_USER =3D 1U << 13,=0D PERF_SAMPLE_WEIGHT =3D 1U << 14,=0D PERF_SAMPLE_DATA_SRC =3D 1U << 15,=0D PERF_SAMPLE_IDENTIFIER =3D 1U << 16,=0D PERF_SAMPLE_TRANSACTION =3D 1U << 17,=0D PERF_SAMPLE_REGS_INTR =3D 1U << 18,=0D PERF_SAMPLE_PHYS_ADDR =3D 1U << 19,=0D PERF_SAMPLE_AUX =3D 1U << 20,=0D PERF_SAMPLE_CGROUP =3D 1U << 21,=0D PERF_SAMPLE_DATA_PAGE_SIZE =3D 1U << 22,=0D PERF_SAMPLE_CODE_PAGE_SIZE =3D 1U << 23,=0D PERF_SAMPLE_WEIGHT_STRUCT =3D 1U << 24,=0D =0D PERF_SAMPLE_MAX =3D 1U << 25,=0D =0D __PERF_SAMPLE_CALLCHAIN_EARLY =3D 1ULL << 63,=0D };=0D # 182 "./include/uapi/linux/perf_event.h"=0D enum perf_branch_sample_type_shift {=0D PERF_SAMPLE_BRANCH_USER_SHIFT =3D 0,=0D PERF_SAMPLE_BRANCH_KERNEL_SHIFT =3D 1,=0D PERF_SAMPLE_BRANCH_HV_SHIFT =3D 2,=0D =0D PERF_SAMPLE_BRANCH_ANY_SHIFT =3D 3,=0D PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT =3D 4,=0D PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT =3D 5,=0D PERF_SAMPLE_BRANCH_IND_CALL_SHIFT =3D 6,=0D PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT =3D 7,=0D PERF_SAMPLE_BRANCH_IN_TX_SHIFT =3D 8,=0D PERF_SAMPLE_BRANCH_NO_TX_SHIFT =3D 9,=0D PERF_SAMPLE_BRANCH_COND_SHIFT =3D 10,=0D =0D PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT =3D 11,=0D PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT =3D 12,=0D PERF_SAMPLE_BRANCH_CALL_SHIFT =3D 13,=0D =0D PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT =3D 14,=0D PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT =3D 15,=0D =0D PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT =3D 16,=0D =0D PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT =3D 17,=0D =0D PERF_SAMPLE_BRANCH_MAX_SHIFT=0D };=0D =0D enum perf_branch_sample_type {=0D PERF_SAMPLE_BRANCH_USER =3D 1U << PERF_SAMPLE_BRANCH_USER_SHIFT,=0D PERF_SAMPLE_BRANCH_KERNEL =3D 1U << PERF_SAMPLE_BRANCH_KERNEL_SHIFT,=0D PERF_SAMPLE_BRANCH_HV =3D 1U << PERF_SAMPLE_BRANCH_HV_SHIFT,=0D =0D PERF_SAMPLE_BRANCH_ANY =3D 1U << PERF_SAMPLE_BRANCH_ANY_SHIFT,=0D PERF_SAMPLE_BRANCH_ANY_CALL =3D 1U << PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT,=0D PERF_SAMPLE_BRANCH_ANY_RETURN =3D 1U << PERF_SAMPLE_BRANCH_ANY_RETURN_SHIF= T,=0D PERF_SAMPLE_BRANCH_IND_CALL =3D 1U << PERF_SAMPLE_BRANCH_IND_CALL_SHIFT,=0D PERF_SAMPLE_BRANCH_ABORT_TX =3D 1U << PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT,=0D PERF_SAMPLE_BRANCH_IN_TX =3D 1U << PERF_SAMPLE_BRANCH_IN_TX_SHIFT,=0D PERF_SAMPLE_BRANCH_NO_TX =3D 1U << PERF_SAMPLE_BRANCH_NO_TX_SHIFT,=0D PERF_SAMPLE_BRANCH_COND =3D 1U << PERF_SAMPLE_BRANCH_COND_SHIFT,=0D =0D PERF_SAMPLE_BRANCH_CALL_STACK =3D 1U << PERF_SAMPLE_BRANCH_CALL_STACK_SHIF= T,=0D PERF_SAMPLE_BRANCH_IND_JUMP =3D 1U << PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT,=0D PERF_SAMPLE_BRANCH_CALL =3D 1U << PERF_SAMPLE_BRANCH_CALL_SHIFT,=0D =0D PERF_SAMPLE_BRANCH_NO_FLAGS =3D 1U << PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT,=0D PERF_SAMPLE_BRANCH_NO_CYCLES =3D 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,= =0D =0D PERF_SAMPLE_BRANCH_TYPE_SAVE =3D=0D 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,=0D =0D PERF_SAMPLE_BRANCH_HW_INDEX =3D 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,=0D =0D PERF_SAMPLE_BRANCH_MAX =3D 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,=0D };=0D =0D =0D =0D =0D enum {=0D PERF_BR_UNKNOWN =3D 0,=0D PERF_BR_COND =3D 1,=0D PERF_BR_UNCOND =3D 2,=0D PERF_BR_IND =3D 3,=0D PERF_BR_CALL =3D 4,=0D PERF_BR_IND_CALL =3D 5,=0D PERF_BR_RET =3D 6,=0D PERF_BR_SYSCALL =3D 7,=0D PERF_BR_SYSRET =3D 8,=0D PERF_BR_COND_CALL =3D 9,=0D PERF_BR_COND_RET =3D 10,=0D PERF_BR_ERET =3D 11,=0D PERF_BR_IRQ =3D 12,=0D PERF_BR_MAX,=0D };=0D # 267 "./include/uapi/linux/perf_event.h"=0D enum perf_sample_regs_abi {=0D PERF_SAMPLE_REGS_ABI_NONE =3D 0,=0D PERF_SAMPLE_REGS_ABI_32 =3D 1,=0D PERF_SAMPLE_REGS_ABI_64 =3D 2,=0D };=0D =0D =0D =0D =0D =0D enum {=0D PERF_TXN_ELISION =3D (1 << 0),=0D PERF_TXN_TRANSACTION =3D (1 << 1),=0D PERF_TXN_SYNC =3D (1 << 2),=0D PERF_TXN_ASYNC =3D (1 << 3),=0D PERF_TXN_RETRY =3D (1 << 4),=0D PERF_TXN_CONFLICT =3D (1 << 5),=0D PERF_TXN_CAPACITY_WRITE =3D (1 << 6),=0D PERF_TXN_CAPACITY_READ =3D (1 << 7),=0D =0D PERF_TXN_MAX =3D (1 << 8),=0D =0D =0D =0D PERF_TXN_ABORT_MASK =3D (0xffffffffULL << 32),=0D PERF_TXN_ABORT_SHIFT =3D 32,=0D };=0D # 315 "./include/uapi/linux/perf_event.h"=0D enum perf_event_read_format {=0D PERF_FORMAT_TOTAL_TIME_ENABLED =3D 1U << 0,=0D PERF_FORMAT_TOTAL_TIME_RUNNING =3D 1U << 1,=0D PERF_FORMAT_ID =3D 1U << 2,=0D PERF_FORMAT_GROUP =3D 1U << 3,=0D =0D PERF_FORMAT_MAX =3D 1U << 4,=0D };=0D # 340 "./include/uapi/linux/perf_event.h"=0D struct perf_event_attr {=0D =0D =0D =0D =0D __u32 type;=0D =0D =0D =0D =0D __u32 size;=0D =0D =0D =0D =0D __u64 config;=0D =0D union {=0D __u64 sample_period;=0D __u64 sample_freq;=0D };=0D =0D __u64 sample_type;=0D __u64 read_format;=0D =0D __u64 disabled : 1,=0D inherit : 1,=0D pinned : 1,=0D exclusive : 1,=0D exclude_user : 1,=0D exclude_kernel : 1,=0D exclude_hv : 1,=0D exclude_idle : 1,=0D mmap : 1,=0D comm : 1,=0D freq : 1,=0D inherit_stat : 1,=0D enable_on_exec : 1,=0D task : 1,=0D watermark : 1,=0D # 390 "./include/uapi/linux/perf_event.h"=0D precise_ip : 2,=0D mmap_data : 1,=0D sample_id_all : 1,=0D =0D exclude_host : 1,=0D exclude_guest : 1,=0D =0D exclude_callchain_kernel : 1,=0D exclude_callchain_user : 1,=0D mmap2 : 1,=0D comm_exec : 1,=0D use_clockid : 1,=0D context_switch : 1,=0D write_backward : 1,=0D namespaces : 1,=0D ksymbol : 1,=0D bpf_event : 1,=0D aux_output : 1,=0D cgroup : 1,=0D text_poke : 1,=0D build_id : 1,=0D inherit_thread : 1,=0D remove_on_exec : 1,=0D sigtrap : 1,=0D __reserved_1 : 26;=0D =0D union {=0D __u32 wakeup_events;=0D __u32 wakeup_watermark;=0D };=0D =0D __u32 bp_type;=0D union {=0D __u64 bp_addr;=0D __u64 kprobe_func;=0D __u64 uprobe_path;=0D __u64 config1;=0D };=0D union {=0D __u64 bp_len;=0D __u64 kprobe_addr;=0D __u64 probe_offset;=0D __u64 config2;=0D };=0D __u64 branch_sample_type;=0D =0D =0D =0D =0D =0D __u64 sample_regs_user;=0D =0D =0D =0D =0D __u32 sample_stack_user;=0D =0D __s32 clockid;=0D # 456 "./include/uapi/linux/perf_event.h"=0D __u64 sample_regs_intr;=0D =0D =0D =0D =0D __u32 aux_watermark;=0D __u16 sample_max_stack;=0D __u16 __reserved_2;=0D __u32 aux_sample_size;=0D __u32 __reserved_3;=0D =0D =0D =0D =0D =0D =0D =0D __u64 sig_data;=0D };=0D =0D =0D =0D =0D =0D =0D struct perf_event_query_bpf {=0D =0D =0D =0D __u32 ids_len;=0D =0D =0D =0D =0D __u32 prog_cnt;=0D =0D =0D =0D __u32 ids[0];=0D };=0D # 513 "./include/uapi/linux/perf_event.h"=0D enum perf_event_ioc_flags {=0D PERF_IOC_FLAG_GROUP =3D 1U << 0,=0D };=0D =0D =0D =0D =0D struct perf_event_mmap_page {=0D __u32 version;=0D __u32 compat_version;=0D # 559 "./include/uapi/linux/perf_event.h"=0D __u32 lock;=0D __u32 index;=0D __s64 offset;=0D __u64 time_enabled;=0D __u64 time_running;=0D union {=0D __u64 capabilities;=0D struct {=0D __u64 cap_bit0 : 1,=0D cap_bit0_is_deprecated : 1,=0D =0D cap_user_rdpmc : 1,=0D cap_user_time : 1,=0D cap_user_time_zero : 1,=0D cap_user_time_short : 1,=0D cap_____res : 58;=0D };=0D };=0D # 587 "./include/uapi/linux/perf_event.h"=0D __u16 pmc_width;=0D # 613 "./include/uapi/linux/perf_event.h"=0D __u16 time_shift;=0D __u32 time_mult;=0D __u64 time_offset;=0D # 632 "./include/uapi/linux/perf_event.h"=0D __u64 time_zero;=0D =0D __u32 size;=0D __u32 __reserved_1;=0D # 648 "./include/uapi/linux/perf_event.h"=0D __u64 time_cycles;=0D __u64 time_mask;=0D =0D =0D =0D =0D =0D __u8 __reserved[116*8];=0D # 673 "./include/uapi/linux/perf_event.h"=0D __u64 data_head;=0D __u64 data_tail;=0D __u64 data_offset;=0D __u64 data_size;=0D # 689 "./include/uapi/linux/perf_event.h"=0D __u64 aux_head;=0D __u64 aux_tail;=0D __u64 aux_offset;=0D __u64 aux_size;=0D };=0D # 764 "./include/uapi/linux/perf_event.h"=0D struct perf_event_header {=0D __u32 type;=0D __u16 misc;=0D __u16 size;=0D };=0D =0D struct perf_ns_link_info {=0D __u64 dev;=0D __u64 ino;=0D };=0D =0D enum {=0D NET_NS_INDEX =3D 0,=0D UTS_NS_INDEX =3D 1,=0D IPC_NS_INDEX =3D 2,=0D PID_NS_INDEX =3D 3,=0D USER_NS_INDEX =3D 4,=0D MNT_NS_INDEX =3D 5,=0D CGROUP_NS_INDEX =3D 6,=0D =0D NR_NAMESPACES,=0D };=0D =0D enum perf_event_type {=0D # 828 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_MMAP =3D 1,=0D # 838 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_LOST =3D 2,=0D # 849 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_COMM =3D 3,=0D # 860 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_EXIT =3D 4,=0D # 871 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_THROTTLE =3D 5,=0D PERF_RECORD_UNTHROTTLE =3D 6,=0D # 883 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_FORK =3D 7,=0D # 894 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_READ =3D 8,=0D # 976 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_SAMPLE =3D 9,=0D # 1008 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_MMAP2 =3D 10,=0D # 1022 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_AUX =3D 11,=0D # 1034 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_ITRACE_START =3D 12,=0D # 1046 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_LOST_SAMPLES =3D 13,=0D # 1058 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_SWITCH =3D 14,=0D # 1072 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_SWITCH_CPU_WIDE =3D 15,=0D # 1084 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_NAMESPACES =3D 16,=0D # 1099 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_KSYMBOL =3D 17,=0D # 1118 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_BPF_EVENT =3D 18,=0D # 1128 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_CGROUP =3D 19,=0D # 1146 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_TEXT_POKE =3D 20,=0D # 1161 "./include/uapi/linux/perf_event.h"=0D PERF_RECORD_AUX_OUTPUT_HW_ID =3D 21,=0D =0D PERF_RECORD_MAX,=0D };=0D =0D enum perf_record_ksymbol_type {=0D PERF_RECORD_KSYMBOL_TYPE_UNKNOWN =3D 0,=0D PERF_RECORD_KSYMBOL_TYPE_BPF =3D 1,=0D =0D =0D =0D =0D PERF_RECORD_KSYMBOL_TYPE_OOL =3D 2,=0D PERF_RECORD_KSYMBOL_TYPE_MAX=0D };=0D =0D =0D =0D enum perf_bpf_event_type {=0D PERF_BPF_EVENT_UNKNOWN =3D 0,=0D PERF_BPF_EVENT_PROG_LOAD =3D 1,=0D PERF_BPF_EVENT_PROG_UNLOAD =3D 2,=0D PERF_BPF_EVENT_MAX,=0D };=0D =0D =0D =0D =0D enum perf_callchain_context {=0D PERF_CONTEXT_HV =3D (__u64)-32,=0D PERF_CONTEXT_KERNEL =3D (__u64)-128,=0D PERF_CONTEXT_USER =3D (__u64)-512,=0D =0D PERF_CONTEXT_GUEST =3D (__u64)-2048,=0D PERF_CONTEXT_GUEST_KERNEL =3D (__u64)-2176,=0D PERF_CONTEXT_GUEST_USER =3D (__u64)-2560,=0D =0D PERF_CONTEXT_MAX =3D (__u64)-4095,=0D };=0D # 1220 "./include/uapi/linux/perf_event.h"=0D union perf_mem_data_src {=0D __u64 val;=0D struct {=0D __u64 mem_op:5,=0D mem_lvl:14,=0D mem_snoop:5,=0D mem_lock:2,=0D mem_dtlb:7,=0D mem_lvl_num:4,=0D mem_remote:1,=0D mem_snoopx:2,=0D mem_blk:3,=0D mem_hops:3,=0D mem_rsvd:18;=0D };=0D };=0D # 1364 "./include/uapi/linux/perf_event.h"=0D struct perf_branch_entry {=0D __u64 from;=0D __u64 to;=0D __u64 mispred:1,=0D predicted:1,=0D in_tx:1,=0D abort:1,=0D cycles:16,=0D type:4,=0D reserved:40;=0D };=0D =0D union perf_sample_weight {=0D __u64 full;=0D =0D struct {=0D __u32 var1_dw;=0D __u16 var2_w;=0D __u16 var3_w;=0D };=0D # 1393 "./include/uapi/linux/perf_event.h"=0D };=0D # 18 "./include/linux/perf_event.h" 2=0D # 1 "./include/uapi/linux/bpf_perf_event.h" 1=0D # 11 "./include/uapi/linux/bpf_perf_event.h"=0D # 1 "./arch/riscv/include/uapi/asm/bpf_perf_event.h" 1=0D =0D =0D =0D =0D =0D =0D typedef struct user_regs_struct bpf_user_pt_regs_t;=0D # 12 "./include/uapi/linux/bpf_perf_event.h" 2=0D =0D struct bpf_perf_event_data {=0D bpf_user_pt_regs_t regs;=0D __u64 sample_period;=0D __u64 addr;=0D };=0D # 19 "./include/linux/perf_event.h" 2=0D =0D =0D =0D =0D =0D =0D # 1 "./arch/riscv/include/asm/perf_event.h" 1=0D # 11 "./arch/riscv/include/asm/perf_event.h"=0D # 1 "./include/linux/perf_event.h" 1=0D # 12 "./arch/riscv/include/asm/perf_event.h" 2=0D # 26 "./include/linux/perf_event.h" 2=0D # 1 "./arch/riscv/include/generated/asm/local64.h" 1=0D # 27 "./include/linux/perf_event.h" 2=0D =0D =0D =0D =0D =0D struct perf_guest_info_callbacks {=0D unsigned int (*state)(void);=0D unsigned long (*get_ip)(void);=0D unsigned int (*handle_intel_pt_intr)(void);=0D };=0D # 51 "./include/linux/perf_event.h"=0D # 1 "./include/linux/ftrace.h" 1=0D # 10 "./include/linux/ftrace.h"=0D # 1 "./include/linux/trace_recursion.h" 1=0D # 22 "./include/linux/trace_recursion.h"=0D enum {=0D =0D TRACE_FTRACE_BIT,=0D TRACE_FTRACE_NMI_BIT,=0D TRACE_FTRACE_IRQ_BIT,=0D TRACE_FTRACE_SIRQ_BIT,=0D TRACE_FTRACE_TRANSITION_BIT,=0D =0D =0D TRACE_INTERNAL_BIT,=0D TRACE_INTERNAL_NMI_BIT,=0D TRACE_INTERNAL_IRQ_BIT,=0D TRACE_INTERNAL_SIRQ_BIT,=0D TRACE_INTERNAL_TRANSITION_BIT,=0D =0D TRACE_BRANCH_BIT,=0D =0D =0D =0D =0D =0D =0D =0D TRACE_IRQ_BIT,=0D =0D =0D TRACE_GRAPH_BIT,=0D # 66 "./include/linux/trace_recursion.h"=0D TRACE_GRAPH_DEPTH_START_BIT,=0D TRACE_GRAPH_DEPTH_END_BIT,=0D =0D =0D =0D =0D =0D =0D TRACE_GRAPH_NOTRACE_BIT,=0D =0D =0D TRACE_RECORD_RECURSION_BIT,=0D };=0D # 109 "./include/linux/trace_recursion.h"=0D enum {=0D TRACE_CTX_NMI,=0D TRACE_CTX_IRQ,=0D TRACE_CTX_SOFTIRQ,=0D TRACE_CTX_NORMAL,=0D TRACE_CTX_TRANSITION,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int trace_get_context_bit(void)=0D {=0D unsigned char bit =3D interrupt_context_level();=0D =0D return TRACE_CTX_NORMAL - bit;=0D }=0D =0D =0D extern void ftrace_record_recursion(unsigned long ip, unsigned long parent_= ip);=0D # 141 "./include/linux/trace_recursion.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int trace_test_and_set_recursion(unsigned long ip, unsigned long pip= ,=0D int start)=0D {=0D unsigned int val =3D ({ do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_642(void) ; if (!((sizeof(get_current()->trace_recursion)= =3D=3D sizeof(char) || sizeof(get_current()->trace_recursion) =3D=3D sizeo= f(short) || sizeof(get_current()->trace_recursion) =3D=3D sizeof(int) || si= zeof(get_current()->trace_recursion) =3D=3D sizeof(long)) || sizeof(get_cur= rent()->trace_recursion) =3D=3D sizeof(long long))) __compiletime_assert_64= 2(); } while (0); (*(const volatile typeof( _Generic((get_current()->trace_= recursion), char: (char)0, unsigned char: (unsigned char)0, signed char: (s= igned char)0, unsigned short: (unsigned short)0, signed short: (signed shor= t)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned lon= g: (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsi= gned long long)0, signed long long: (signed long long)0, default: (get_curr= ent()->trace_recursion))) *)&(get_current()->trace_recursion)); });=0D int bit;=0D =0D bit =3D trace_get_context_bit() + start;=0D if (__builtin_expect(!!(val & (1 << bit)), 0)) {=0D # 157 "./include/linux/trace_recursion.h"=0D bit =3D TRACE_CTX_TRANSITION + start;=0D if (val & (1 << bit)) {=0D do { if (!((get_current())->trace_recursion & (1<<(TRACE_RECORD_RECURSIO= N_BIT)))) { do { (get_current())->trace_recursion |=3D (1<<(TRACE_RECORD_RE= CURSION_BIT)); } while (0); ftrace_record_recursion(ip, pip); do { (get_cur= rent())->trace_recursion &=3D ~(1<<(TRACE_RECORD_RECURSION_BIT)); } while (= 0); } } while (0);=0D return -1;=0D }=0D }=0D =0D val |=3D 1 << bit;=0D get_current()->trace_recursion =3D val;=0D __asm__ __volatile__("": : :"memory");=0D =0D do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } whil= e (0);=0D =0D return bit;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void trace_clear_recursion(int bit)=0D {=0D do { __asm__ __volatile__("": : :"memory"); __preempt_count_sub(1); } whil= e (0);=0D __asm__ __volatile__("": : :"memory");=0D do { (get_current())->trace_recursion &=3D ~(1<<(bit)); } while (0);=0D }=0D # 192 "./include/linux/trace_recursion.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) int ftrace_test_recursion_trylock(unsigned long ip,=0D unsigned long parent_ip)=0D {=0D return trace_test_and_set_recursion(ip, parent_ip, TRACE_FTRACE_BIT);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void ftrace_test_recursion_unlock(int bit)=0D {=0D trace_clear_recursion(bit);=0D }=0D # 11 "./include/linux/ftrace.h" 2=0D # 1 "./include/linux/trace_clock.h" 1=0D # 16 "./include/linux/trace_clock.h"=0D # 1 "./arch/riscv/include/generated/asm/trace_clock.h" 1=0D # 1 "./include/asm-generic/trace_clock.h" 1=0D # 2 "./arch/riscv/include/generated/asm/trace_clock.h" 2=0D # 17 "./include/linux/trace_clock.h" 2=0D =0D extern u64 __attribute__((patchable_function_entry(0, 0))) trace_clock_loca= l(void);=0D extern u64 __attribute__((patchable_function_entry(0, 0))) trace_clock(void= );=0D extern u64 __attribute__((patchable_function_entry(0, 0))) trace_clock_jiff= ies(void);=0D extern u64 __attribute__((patchable_function_entry(0, 0))) trace_clock_glob= al(void);=0D extern u64 __attribute__((patchable_function_entry(0, 0))) trace_clock_coun= ter(void);=0D # 12 "./include/linux/ftrace.h" 2=0D # 23 "./include/linux/ftrace.h"=0D # 1 "./arch/riscv/include/asm/ftrace.h" 1=0D # 28 "./arch/riscv/include/asm/ftrace.h"=0D void _mcount(void);=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long ftrace_call_ad= just(unsigned long addr)=0D {=0D return addr;=0D }=0D =0D struct dyn_arch_ftrace {=0D };=0D # 81 "./arch/riscv/include/asm/ftrace.h"=0D struct dyn_ftrace;=0D int ftrace_init_nop(struct module *mod, struct dyn_ftrace *rec);=0D # 24 "./include/linux/ftrace.h" 2=0D # 35 "./include/linux/ftrace.h"=0D extern void ftrace_boot_snapshot(void);=0D =0D =0D =0D =0D =0D struct ftrace_ops;=0D struct ftrace_regs;=0D # 56 "./include/linux/ftrace.h"=0D void arch_ftrace_ops_list_func(unsigned long ip, unsigned long parent_ip,=0D struct ftrace_ops *op, struct ftrace_regs *fregs);=0D =0D =0D =0D =0D =0D void trace_init(void);=0D void early_trace_init(void);=0D =0D =0D =0D =0D =0D struct module;=0D struct ftrace_hash;=0D struct ftrace_direct_func;=0D =0D =0D =0D const char *=0D ftrace_mod_address_lookup(unsigned long addr, unsigned long *size,=0D unsigned long *off, char **modname, char *sym);=0D # 89 "./include/linux/ftrace.h"=0D int ftrace_mod_get_kallsym(unsigned int symnum, unsigned long *value,=0D char *type, char *name,=0D char *module_name, int *exported);=0D # 103 "./include/linux/ftrace.h"=0D extern int ftrace_enabled;=0D extern int=0D ftrace_enable_sysctl(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D =0D =0D struct ftrace_regs {=0D struct pt_regs regs;=0D };=0D # 124 "./include/linux/ftrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) struct pt_regs *ftrace_get_regs(struct ftrace_regs *fregs)=0D {=0D if (!fregs)=0D return ((void *)0);=0D =0D return (&(fregs)->regs);=0D }=0D =0D typedef void (*ftrace_func_t)(unsigned long ip, unsigned long parent_ip,=0D struct ftrace_ops *op, struct ftrace_regs *fregs);=0D =0D ftrace_func_t ftrace_ops_get_func(struct ftrace_ops *ops);=0D # 193 "./include/linux/ftrace.h"=0D enum {=0D FTRACE_OPS_FL_ENABLED =3D ((((1UL))) << (0)),=0D FTRACE_OPS_FL_DYNAMIC =3D ((((1UL))) << (1)),=0D FTRACE_OPS_FL_SAVE_REGS =3D ((((1UL))) << (2)),=0D FTRACE_OPS_FL_SAVE_REGS_IF_SUPPORTED =3D ((((1UL))) << (3)),=0D FTRACE_OPS_FL_RECURSION =3D ((((1UL))) << (4)),=0D FTRACE_OPS_FL_STUB =3D ((((1UL))) << (5)),=0D FTRACE_OPS_FL_INITIALIZED =3D ((((1UL))) << (6)),=0D FTRACE_OPS_FL_DELETED =3D ((((1UL))) << (7)),=0D FTRACE_OPS_FL_ADDING =3D ((((1UL))) << (8)),=0D FTRACE_OPS_FL_REMOVING =3D ((((1UL))) << (9)),=0D FTRACE_OPS_FL_MODIFYING =3D ((((1UL))) << (10)),=0D FTRACE_OPS_FL_ALLOC_TRAMP =3D ((((1UL))) << (11)),=0D FTRACE_OPS_FL_IPMODIFY =3D ((((1UL))) << (12)),=0D FTRACE_OPS_FL_PID =3D ((((1UL))) << (13)),=0D FTRACE_OPS_FL_RCU =3D ((((1UL))) << (14)),=0D FTRACE_OPS_FL_TRACE_ARRAY =3D ((((1UL))) << (15)),=0D FTRACE_OPS_FL_PERMANENT =3D ((((1UL))) << (16)),=0D FTRACE_OPS_FL_DIRECT =3D ((((1UL))) << (17)),=0D };=0D =0D =0D =0D struct ftrace_ops_hash {=0D struct ftrace_hash *notrace_hash;=0D struct ftrace_hash *filter_hash;=0D struct mutex regex_lock;=0D };=0D =0D void ftrace_free_init_mem(void);=0D void ftrace_free_mem(struct module *mod, void *start, void *end);=0D # 243 "./include/linux/ftrace.h"=0D struct ftrace_ops {=0D ftrace_func_t func;=0D struct ftrace_ops *next;=0D unsigned long flags;=0D void *private;=0D ftrace_func_t saved_func;=0D =0D struct ftrace_ops_hash local_hash;=0D struct ftrace_ops_hash *func_hash;=0D struct ftrace_ops_hash old_hash;=0D unsigned long trampoline;=0D unsigned long trampoline_size;=0D struct list_head list;=0D =0D };=0D =0D extern struct ftrace_ops *ftrace_ops_list;=0D extern struct ftrace_ops ftrace_list_end;=0D # 285 "./include/linux/ftrace.h"=0D enum ftrace_tracing_type_t {=0D FTRACE_TYPE_ENTER =3D 0,=0D FTRACE_TYPE_RETURN,=0D };=0D =0D =0D extern enum ftrace_tracing_type_t ftrace_tracing_type;=0D # 300 "./include/linux/ftrace.h"=0D int register_ftrace_function(struct ftrace_ops *ops);=0D int unregister_ftrace_function(struct ftrace_ops *ops);=0D =0D extern void ftrace_stub(unsigned long a0, unsigned long a1,=0D struct ftrace_ops *op, struct ftrace_regs *fregs);=0D # 318 "./include/linux/ftrace.h"=0D struct ftrace_func_entry {=0D struct hlist_node hlist;=0D unsigned long ip;=0D unsigned long direct;=0D };=0D =0D struct dyn_ftrace;=0D # 342 "./include/linux/ftrace.h"=0D struct ftrace_ops;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_ftrace_direct(u= nsigned long ip, unsigned long addr)=0D {=0D return -524;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_ftrace_direct= (unsigned long ip, unsigned long addr)=0D {=0D return -524;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int modify_ftrace_direct(uns= igned long ip,=0D unsigned long old_addr, unsigned long new_addr)=0D {=0D return -524;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct ftrace_direct_func *f= trace_find_direct_func(unsigned long addr)=0D {=0D return ((void *)0);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int ftrace_modify_direct_cal= ler(struct ftrace_func_entry *entry,=0D struct dyn_ftrace *rec,=0D unsigned long old_addr,=0D unsigned long new_addr)=0D {=0D return -19;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long ftrace_find_re= c_direct(unsigned long ip)=0D {=0D return 0;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int register_ftrace_direct_m= ulti(struct ftrace_ops *ops, unsigned long addr)=0D {=0D return -19;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int unregister_ftrace_direct= _multi(struct ftrace_ops *ops, unsigned long addr)=0D {=0D return -19;=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int modify_ftrace_direct_mul= ti(struct ftrace_ops *ops, unsigned long addr)=0D {=0D return -19;=0D }=0D # 400 "./include/linux/ftrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void arch_ftrace_set_direct_= caller(struct pt_regs *regs,=0D unsigned long addr) { }=0D =0D =0D =0D =0D extern int stack_tracer_enabled;=0D =0D int stack_trace_sysctl(struct ctl_table *table, int write, void *buffer,=0D size_t *lenp, loff_t *ppos);=0D =0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) disable= _stack_tracer;=0D # 425 "./include/linux/ftrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void stack_tracer_disable(vo= id)=0D {=0D =0D if (0)=0D ({ int __ret_warn_on =3D !!(!preempt_count() || !({ unsigned long _flags;= do { ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); _flags =3D arch_local_save_flags(); } while (0); = ({ ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); arch_irqs_disabled_flags(_flags); }); })); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/ftrace.h"), "i" (429),= "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D do { do { const void *__vpp_verify =3D (typeof((&(disable_stack_tracer)) += 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(disable_sta= ck_tracer)) { case 1: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer))); (typeof(= (typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __du= mmy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_loca= l_irq_restore(__flags); } while (0); } while (0);break; case 2: do { unsign= ed long __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (= void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save();= } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((&(disable= _stack_tracer)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsig= ned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(disable_stack_tracer= ))) *)(&(disable_stack_tracer))); (typeof((typeof(*(&(disable_stack_tracer)= )) *)(&(disable_stack_tracer)))) (__ptr + (((__per_cpu_offset[(((struct thr= ead_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ u= nsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__d= ummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } while (= 0); } while (0);break; case 4: do { unsigned long __flags; do { ({ unsigned= long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2);= 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const= void *__vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)));= (typeof((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); = arch_local_irq_restore(__flags); } while (0); } while (0);break; case 8: do= { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_ir= q_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((= &(disable_stack_tracer)) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(disable_sta= ck_tracer))) *)(&(disable_stack_tracer))); (typeof((typeof(*(&(disable_stac= k_tracer))) *)(&(disable_stack_tracer)))) (__ptr + (((__per_cpu_offset[(((s= truct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); = do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags)= ; } while (0); } while (0);break; default: __bad_size_call_parameter();brea= k; } } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void stack_tracer_enable(voi= d)=0D {=0D if (0)=0D ({ int __ret_warn_on =3D !!(!preempt_count() || !({ unsigned long _flags;= do { ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); _flags =3D arch_local_save_flags(); } while (0); = ({ ({ unsigned long __dummy; typeof(_flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); arch_irqs_disabled_flags(_flags); }); })); if (__bui= ltin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "eb= reak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "= \n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".or= g 2b + %3\n\t" ".popsection" : : "i" ("include/linux/ftrace.h"), "i" (442),= "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); }= while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D do { do { const void *__vpp_verify =3D (typeof((&(disable_stack_tracer)) += 0))((void *)0); (void)__vpp_verify; } while (0); switch(sizeof(disable_sta= ck_tracer)) { case 1: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer))); (typeof(= (typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(disable_stack_tracer))(1); } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; case 2: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer))); (typeof(= (typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(disable_stack_tracer))(1); } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; case 4: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer))); (typeof(= (typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(disable_stack_tracer))(1); } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; case 8: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&(disable_stack_tracer)) + 0))((void *)0); (void)__= vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) = ((typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer))); (typeof(= (typeof(*(&(disable_stack_tracer))) *)(&(disable_stack_tracer)))) (__ptr + = (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); = }) +=3D -(typeof(disable_stack_tracer))(1); } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; default: __bad_size_call_parameter();break; } } while (0);=0D }=0D =0D =0D =0D =0D =0D =0D =0D int ftrace_arch_code_modify_prepare(void);=0D int ftrace_arch_code_modify_post_process(void);=0D =0D enum ftrace_bug_type {=0D FTRACE_BUG_UNKNOWN,=0D FTRACE_BUG_INIT,=0D FTRACE_BUG_NOP,=0D FTRACE_BUG_CALL,=0D FTRACE_BUG_UPDATE,=0D };=0D extern enum ftrace_bug_type ftrace_bug_type;=0D =0D =0D =0D =0D =0D extern const void *ftrace_expected;=0D =0D void ftrace_bug(int err, struct dyn_ftrace *rec);=0D =0D struct seq_file;=0D =0D extern int ftrace_text_reserved(const void *start, const void *end);=0D =0D struct ftrace_ops *ftrace_ops_trampoline(unsigned long addr);=0D =0D bool is_ftrace_trampoline(unsigned long addr);=0D # 500 "./include/linux/ftrace.h"=0D enum {=0D FTRACE_FL_ENABLED =3D (1UL << 31),=0D FTRACE_FL_REGS =3D (1UL << 30),=0D FTRACE_FL_REGS_EN =3D (1UL << 29),=0D FTRACE_FL_TRAMP =3D (1UL << 28),=0D FTRACE_FL_TRAMP_EN =3D (1UL << 27),=0D FTRACE_FL_IPMODIFY =3D (1UL << 26),=0D FTRACE_FL_DISABLED =3D (1UL << 25),=0D FTRACE_FL_DIRECT =3D (1UL << 24),=0D FTRACE_FL_DIRECT_EN =3D (1UL << 23),=0D };=0D =0D =0D =0D =0D =0D =0D struct dyn_ftrace {=0D unsigned long ip;=0D unsigned long flags;=0D struct dyn_arch_ftrace arch;=0D };=0D =0D int ftrace_set_filter_ip(struct ftrace_ops *ops, unsigned long ip,=0D int remove, int reset);=0D int ftrace_set_filter_ips(struct ftrace_ops *ops, unsigned long *ips,=0D unsigned int cnt, int remove, int reset);=0D int ftrace_set_filter(struct ftrace_ops *ops, unsigned char *buf,=0D int len, int reset);=0D int ftrace_set_notrace(struct ftrace_ops *ops, unsigned char *buf,=0D int len, int reset);=0D void ftrace_set_global_filter(unsigned char *buf, int len, int reset);=0D void ftrace_set_global_notrace(unsigned char *buf, int len, int reset);=0D void ftrace_free_filter(struct ftrace_ops *ops);=0D void ftrace_ops_set_global_filter(struct ftrace_ops *ops);=0D =0D enum {=0D FTRACE_UPDATE_CALLS =3D (1 << 0),=0D FTRACE_DISABLE_CALLS =3D (1 << 1),=0D FTRACE_UPDATE_TRACE_FUNC =3D (1 << 2),=0D FTRACE_START_FUNC_RET =3D (1 << 3),=0D FTRACE_STOP_FUNC_RET =3D (1 << 4),=0D FTRACE_MAY_SLEEP =3D (1 << 5),=0D };=0D # 556 "./include/linux/ftrace.h"=0D enum {=0D FTRACE_UPDATE_IGNORE,=0D FTRACE_UPDATE_MAKE_CALL,=0D FTRACE_UPDATE_MODIFY_CALL,=0D FTRACE_UPDATE_MAKE_NOP,=0D };=0D =0D enum {=0D FTRACE_ITER_FILTER =3D (1 << 0),=0D FTRACE_ITER_NOTRACE =3D (1 << 1),=0D FTRACE_ITER_PRINTALL =3D (1 << 2),=0D FTRACE_ITER_DO_PROBES =3D (1 << 3),=0D FTRACE_ITER_PROBE =3D (1 << 4),=0D FTRACE_ITER_MOD =3D (1 << 5),=0D FTRACE_ITER_ENABLED =3D (1 << 6),=0D };=0D =0D void arch_ftrace_update_code(int command);=0D void arch_ftrace_update_trampoline(struct ftrace_ops *ops);=0D void *arch_ftrace_trampoline_func(struct ftrace_ops *ops, struct dyn_ftrace= *rec);=0D void arch_ftrace_trampoline_free(struct ftrace_ops *ops);=0D =0D struct ftrace_rec_iter;=0D =0D struct ftrace_rec_iter *ftrace_rec_iter_start(void);=0D struct ftrace_rec_iter *ftrace_rec_iter_next(struct ftrace_rec_iter *iter);= =0D struct dyn_ftrace *ftrace_rec_iter_record(struct ftrace_rec_iter *iter);=0D =0D =0D =0D =0D =0D =0D =0D int ftrace_update_record(struct dyn_ftrace *rec, bool enable);=0D int ftrace_test_record(struct dyn_ftrace *rec, bool enable);=0D void ftrace_run_stop_machine(int command);=0D unsigned long ftrace_location(unsigned long ip);=0D unsigned long ftrace_location_range(unsigned long start, unsigned long end)= ;=0D unsigned long ftrace_get_addr_new(struct dyn_ftrace *rec);=0D unsigned long ftrace_get_addr_curr(struct dyn_ftrace *rec);=0D =0D extern ftrace_func_t ftrace_trace_function;=0D =0D int ftrace_regex_open(struct ftrace_ops *ops, int flag,=0D struct inode *inode, struct file *file);=0D ssize_t ftrace_filter_write(struct file *file, const char *ubuf,=0D size_t cnt, loff_t *ppos);=0D ssize_t ftrace_notrace_write(struct file *file, const char *ubuf,=0D size_t cnt, loff_t *ppos);=0D int ftrace_regex_release(struct inode *inode, struct file *file);=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi")))=0D ftrace_set_early_filter(struct ftrace_ops *ops, char *buf, int enable);=0D =0D =0D extern int ftrace_ip_converted(unsigned long ip);=0D extern int ftrace_dyn_arch_init(void);=0D extern void ftrace_replace_code(int enable);=0D extern int ftrace_update_ftrace_func(ftrace_func_t func);=0D extern void ftrace_caller(void);=0D extern void ftrace_regs_caller(void);=0D extern void ftrace_call(void);=0D extern void ftrace_regs_call(void);=0D extern void mcount_call(void);=0D =0D void ftrace_modify_all_code(int command);=0D # 651 "./include/linux/ftrace.h"=0D extern void ftrace_graph_caller(void);=0D extern int ftrace_enable_ftrace_graph_caller(void);=0D extern int ftrace_disable_ftrace_graph_caller(void);=0D # 680 "./include/linux/ftrace.h"=0D extern int ftrace_make_nop(struct module *mod,=0D struct dyn_ftrace *rec, unsigned long addr);=0D # 748 "./include/linux/ftrace.h"=0D extern int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr);=0D # 772 "./include/linux/ftrace.h"=0D extern int ftrace_modify_call(struct dyn_ftrace *rec, unsigned long old_add= r,=0D unsigned long addr);=0D # 784 "./include/linux/ftrace.h"=0D extern int ftrace_arch_read_dyn_info(char *buf, int size);=0D =0D extern int skip_trace(unsigned long ip);=0D extern void ftrace_module_init(struct module *mod);=0D extern void ftrace_module_enable(struct module *mod);=0D extern void ftrace_release_mod(struct module *mod);=0D =0D extern void ftrace_disable_daemon(void);=0D extern void ftrace_enable_daemon(void);=0D # 846 "./include/linux/ftrace.h"=0D void ftrace_kill(void);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tracer_disable(void)=0D {=0D =0D ftrace_enabled =3D 0;=0D =0D }=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int __ftrace_enabled_save(vo= id)=0D {=0D =0D int saved_ftrace_enabled =3D ftrace_enabled;=0D ftrace_enabled =3D 0;=0D return saved_ftrace_enabled;=0D =0D =0D =0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void __ftrace_enabled_restor= e(int enabled)=0D {=0D =0D ftrace_enabled =3D enabled;=0D =0D }=0D # 900 "./include/linux/ftrace.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long get_lock_paren= t_ip(void)=0D {=0D unsigned long addr =3D ((unsigned long)__builtin_return_address(0));=0D =0D if (!in_lock_functions(addr))=0D return addr;=0D addr =3D ((unsigned long)__builtin_return_address(1));=0D if (!in_lock_functions(addr))=0D return addr;=0D return ((unsigned long)__builtin_return_address(2));=0D }=0D # 925 "./include/linux/ftrace.h"=0D extern void ftrace_init(void);=0D # 940 "./include/linux/ftrace.h"=0D struct ftrace_graph_ent {=0D unsigned long func;=0D int depth;=0D } __attribute__((__packed__));=0D =0D =0D =0D =0D =0D =0D struct ftrace_graph_ret {=0D unsigned long func;=0D int depth;=0D =0D unsigned int overrun;=0D unsigned long long calltime;=0D unsigned long long rettime;=0D } __attribute__((__packed__));=0D =0D =0D typedef void (*trace_func_graph_ret_t)(struct ftrace_graph_ret *);=0D typedef int (*trace_func_graph_ent_t)(struct ftrace_graph_ent *);=0D =0D extern int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace);=0D =0D =0D =0D struct fgraph_ops {=0D trace_func_graph_ent_t entryfunc;=0D trace_func_graph_ret_t retfunc;=0D };=0D =0D =0D =0D =0D =0D =0D struct ftrace_ret_stack {=0D unsigned long ret;=0D unsigned long func;=0D unsigned long long calltime;=0D =0D unsigned long long subtime;=0D =0D =0D unsigned long fp;=0D =0D =0D unsigned long *retp;=0D =0D };=0D =0D =0D =0D =0D =0D =0D extern void return_to_handler(void);=0D =0D extern int=0D function_graph_enter(unsigned long ret, unsigned long func,=0D unsigned long frame_pointer, unsigned long *retp);=0D =0D struct ftrace_ret_stack *=0D ftrace_graph_get_ret_stack(struct task_struct *task, int idx);=0D =0D unsigned long ftrace_graph_ret_addr(struct task_struct *task, int *idx,=0D unsigned long ret, unsigned long *retp);=0D # 1019 "./include/linux/ftrace.h"=0D extern int register_ftrace_graph(struct fgraph_ops *ops);=0D extern void unregister_ftrace_graph(struct fgraph_ops *ops);=0D # 1029 "./include/linux/ftrace.h"=0D extern struct static_key_false kill_ftrace_graph;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool ftrace_graph_is_dead(vo= id)=0D {=0D return __builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(= &kill_ftrace_graph)->key), struct static_key) && !__builtin_types_compatibl= e_p(typeof(*&(&kill_ftrace_graph)->key), struct static_key_true) && !__buil= tin_types_compatible_p(typeof(*&(&kill_ftrace_graph)->key), struct static_k= ey_false)) ____wrong_branch_error(); static_key_count((struct static_key *)= &(&kill_ftrace_graph)->key) > 0; })), 0);=0D }=0D =0D extern void ftrace_graph_stop(void);=0D =0D =0D extern trace_func_graph_ret_t ftrace_graph_return;=0D extern trace_func_graph_ent_t ftrace_graph_entry;=0D =0D extern void ftrace_graph_init_task(struct task_struct *t);=0D extern void ftrace_graph_exit_task(struct task_struct *t);=0D extern void ftrace_graph_init_idle_task(struct task_struct *t, int cpu);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void pause_graph_tracing(voi= d)=0D {=0D atomic_inc(&get_current()->tracing_graph_pause);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void unpause_graph_tracing(v= oid)=0D {=0D atomic_dec(&get_current()->tracing_graph_pause);=0D }=0D # 1081 "./include/linux/ftrace.h"=0D enum {=0D TSK_TRACE_FL_TRACE_BIT =3D 0,=0D TSK_TRACE_FL_GRAPH_BIT =3D 1,=0D };=0D enum {=0D TSK_TRACE_FL_TRACE =3D 1 << TSK_TRACE_FL_TRACE_BIT,=0D TSK_TRACE_FL_GRAPH =3D 1 << TSK_TRACE_FL_GRAPH_BIT,=0D };=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_tsk_trace_trace(str= uct task_struct *tsk)=0D {=0D set_bit(TSK_TRACE_FL_TRACE_BIT, &tsk->trace);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_trace_trace(s= truct task_struct *tsk)=0D {=0D clear_bit(TSK_TRACE_FL_TRACE_BIT, &tsk->trace);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_tsk_trace_trace(str= uct task_struct *tsk)=0D {=0D return tsk->trace & TSK_TRACE_FL_TRACE;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void set_tsk_trace_graph(str= uct task_struct *tsk)=0D {=0D set_bit(TSK_TRACE_FL_GRAPH_BIT, &tsk->trace);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void clear_tsk_trace_graph(s= truct task_struct *tsk)=0D {=0D clear_bit(TSK_TRACE_FL_GRAPH_BIT, &tsk->trace);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int test_tsk_trace_graph(str= uct task_struct *tsk)=0D {=0D return tsk->trace & TSK_TRACE_FL_GRAPH;=0D }=0D =0D enum ftrace_dump_mode;=0D =0D extern enum ftrace_dump_mode ftrace_dump_on_oops;=0D extern int tracepoint_printk;=0D =0D extern void disable_trace_on_warning(void);=0D extern int __disable_trace_on_warning;=0D =0D int tracepoint_printk_sysctl(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D =0D =0D =0D =0D =0D =0D =0D unsigned long arch_syscall_addr(int nr);=0D # 52 "./include/linux/perf_event.h" 2=0D =0D # 1 "./include/linux/irq_work.h" 1=0D # 17 "./include/linux/irq_work.h"=0D struct irq_work {=0D struct __call_single_node node;=0D void (*func)(struct irq_work *);=0D struct rcuwait irqwait;=0D };=0D # 36 "./include/linux/irq_work.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0)))=0D void init_irq_work(struct irq_work *work, void (*func)(struct irq_work *))= =0D {=0D *work =3D (struct irq_work){ .node =3D { .u_flags =3D (0), }, .func =3D (f= unc), .irqwait =3D { .task =3D ((void *)0), }, };=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_work_is_pending(str= uct irq_work *work)=0D {=0D return atomic_read(&work->node.a_flags) & IRQ_WORK_PENDING;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_work_is_busy(struct= irq_work *work)=0D {=0D return atomic_read(&work->node.a_flags) & IRQ_WORK_BUSY;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool irq_work_is_hard(struct= irq_work *work)=0D {=0D return atomic_read(&work->node.a_flags) & IRQ_WORK_HARD_IRQ;=0D }=0D =0D bool irq_work_queue(struct irq_work *work);=0D bool irq_work_queue_on(struct irq_work *work, int cpu);=0D =0D void irq_work_tick(void);=0D void irq_work_sync(struct irq_work *work);=0D =0D =0D =0D # 1 "./arch/riscv/include/asm/irq_work.h" 1=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool arch_irq_work_has_inter= rupt(void)=0D {=0D return true;=0D }=0D extern void arch_irq_work_raise(void);=0D # 65 "./include/linux/irq_work.h" 2=0D =0D void irq_work_run(void);=0D bool irq_work_needs_cpu(void);=0D void irq_work_single(void *arg);=0D # 54 "./include/linux/perf_event.h" 2=0D # 1 "./include/linux/static_key.h" 1=0D # 55 "./include/linux/perf_event.h" 2=0D =0D =0D =0D # 1 "./include/linux/perf_regs.h" 1=0D =0D =0D =0D =0D # 1 "./include/linux/sched/task_stack.h" 1=0D # 10 "./include/linux/sched/task_stack.h"=0D # 1 "./include/uapi/linux/magic.h" 1=0D # 11 "./include/linux/sched/task_stack.h" 2=0D =0D =0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *task_stack_page(const = struct task_struct *task)=0D {=0D return task->stack;=0D }=0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long *end_of_stack(= const struct task_struct *task)=0D {=0D =0D =0D =0D return task->stack;=0D =0D }=0D # 66 "./include/linux/sched/task_stack.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void *try_get_task_stack(str= uct task_struct *tsk)=0D {=0D return refcount_inc_not_zero(&tsk->stack_refcount) ?=0D task_stack_page(tsk) : ((void *)0);=0D }=0D =0D extern void put_task_stack(struct task_struct *tsk);=0D # 82 "./include/linux/sched/task_stack.h"=0D void exit_task_stack_account(struct task_struct *tsk);=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int object_is_on_stack(const= void *obj)=0D {=0D void *stack =3D task_stack_page(get_current());=0D =0D return (obj >=3D stack) && (obj < (stack + (((1UL) << (12)) << (2 + 0))));= =0D }=0D =0D extern void thread_stack_cache_init(void);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long stack_not_used= (struct task_struct *p)=0D {=0D unsigned long *n =3D end_of_stack(p);=0D =0D do {=0D =0D =0D =0D n++;=0D =0D } while (!*n);=0D =0D =0D =0D =0D return (unsigned long)n - (unsigned long)end_of_stack(p);=0D =0D }=0D =0D extern void set_task_stack_end_magic(struct task_struct *tsk);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int kstack_end(void *addr)=0D {=0D =0D =0D =0D return !(((unsigned long)addr+sizeof(void*)-1) & ((((1UL) << (12)) << (2 += 0))-sizeof(void*)));=0D }=0D # 6 "./include/linux/perf_regs.h" 2=0D =0D struct perf_regs {=0D __u64 abi;=0D struct pt_regs *regs;=0D };=0D =0D =0D =0D # 1 "./arch/riscv/include/uapi/asm/perf_regs.h" 1=0D =0D =0D =0D =0D =0D =0D enum perf_event_riscv_regs {=0D PERF_REG_RISCV_PC,=0D PERF_REG_RISCV_RA,=0D PERF_REG_RISCV_SP,=0D PERF_REG_RISCV_GP,=0D PERF_REG_RISCV_TP,=0D PERF_REG_RISCV_T0,=0D PERF_REG_RISCV_T1,=0D PERF_REG_RISCV_T2,=0D PERF_REG_RISCV_S0,=0D PERF_REG_RISCV_S1,=0D PERF_REG_RISCV_A0,=0D PERF_REG_RISCV_A1,=0D PERF_REG_RISCV_A2,=0D PERF_REG_RISCV_A3,=0D PERF_REG_RISCV_A4,=0D PERF_REG_RISCV_A5,=0D PERF_REG_RISCV_A6,=0D PERF_REG_RISCV_A7,=0D PERF_REG_RISCV_S2,=0D PERF_REG_RISCV_S3,=0D PERF_REG_RISCV_S4,=0D PERF_REG_RISCV_S5,=0D PERF_REG_RISCV_S6,=0D PERF_REG_RISCV_S7,=0D PERF_REG_RISCV_S8,=0D PERF_REG_RISCV_S9,=0D PERF_REG_RISCV_S10,=0D PERF_REG_RISCV_S11,=0D PERF_REG_RISCV_T3,=0D PERF_REG_RISCV_T4,=0D PERF_REG_RISCV_T5,=0D PERF_REG_RISCV_T6,=0D PERF_REG_RISCV_MAX,=0D };=0D # 14 "./include/linux/perf_regs.h" 2=0D =0D =0D =0D =0D =0D u64 perf_reg_value(struct pt_regs *regs, int idx);=0D int perf_reg_validate(u64 mask);=0D u64 perf_reg_abi(struct task_struct *task);=0D void perf_get_regs_user(struct perf_regs *regs_user,=0D struct pt_regs *regs);=0D # 59 "./include/linux/perf_event.h" 2=0D =0D =0D =0D =0D # 1 "./arch/riscv/include/generated/asm/local.h" 1=0D # 64 "./include/linux/perf_event.h" 2=0D =0D struct perf_callchain_entry {=0D __u64 nr;=0D __u64 ip[];=0D };=0D =0D struct perf_callchain_entry_ctx {=0D struct perf_callchain_entry *entry;=0D u32 max_stack;=0D u32 nr;=0D short contexts;=0D bool contexts_maxed;=0D };=0D =0D typedef unsigned long (*perf_copy_f)(void *dst, const void *src,=0D unsigned long off, unsigned long len);=0D =0D struct perf_raw_frag {=0D union {=0D struct perf_raw_frag *next;=0D unsigned long pad;=0D };=0D perf_copy_f copy;=0D void *data;=0D u32 size;=0D } __attribute__((__packed__));=0D =0D struct perf_raw_record {=0D struct perf_raw_frag frag;=0D u32 size;=0D };=0D # 116 "./include/linux/perf_event.h"=0D struct perf_branch_stack {=0D __u64 nr;=0D __u64 hw_idx;=0D struct perf_branch_entry entries[];=0D };=0D =0D struct task_struct;=0D =0D =0D =0D =0D struct hw_perf_event_extra {=0D u64 config;=0D unsigned int reg;=0D int alloc;=0D int idx;=0D };=0D # 146 "./include/linux/perf_event.h"=0D struct hw_perf_event {=0D =0D union {=0D struct {=0D u64 config;=0D u64 last_tag;=0D unsigned long config_base;=0D unsigned long event_base;=0D int event_base_rdpmc;=0D int idx;=0D int last_cpu;=0D int flags;=0D =0D struct hw_perf_event_extra extra_reg;=0D struct hw_perf_event_extra branch_reg;=0D };=0D struct {=0D struct hrtimer hrtimer;=0D };=0D struct {=0D =0D struct list_head tp_list;=0D };=0D struct {=0D u64 pwr_acc;=0D u64 ptsc;=0D };=0D # 184 "./include/linux/perf_event.h"=0D struct {=0D u8 iommu_bank;=0D u8 iommu_cntr;=0D u16 padding;=0D u64 conf;=0D u64 conf1;=0D };=0D };=0D =0D =0D =0D =0D struct task_struct *target;=0D =0D =0D =0D =0D =0D void *addr_filters;=0D =0D =0D unsigned long addr_filters_gen;=0D # 214 "./include/linux/perf_event.h"=0D int state;=0D =0D =0D =0D =0D =0D local64_t prev_count;=0D =0D =0D =0D =0D u64 sample_period;=0D =0D union {=0D struct {=0D =0D =0D =0D u64 last_period;=0D =0D =0D =0D =0D =0D =0D =0D local64_t period_left;=0D };=0D struct {=0D u64 saved_metric;=0D u64 saved_slots;=0D };=0D };=0D =0D =0D =0D =0D =0D u64 interrupts_seq;=0D u64 interrupts;=0D =0D =0D =0D =0D =0D u64 freq_time_stamp;=0D u64 freq_count_stamp;=0D =0D };=0D =0D struct perf_event;=0D # 286 "./include/linux/perf_event.h"=0D struct perf_output_handle;=0D =0D =0D =0D =0D struct pmu {=0D struct list_head entry;=0D =0D struct module *module;=0D struct device *dev;=0D const struct attribute_group **attr_groups;=0D const struct attribute_group **attr_update;=0D const char *name;=0D int type;=0D =0D =0D =0D =0D int capabilities;=0D =0D int *pmu_disable_count;=0D struct perf_cpu_context *pmu_cpu_context;=0D atomic_t exclusive_cnt;=0D int task_ctx_nr;=0D int hrtimer_interval_ms;=0D =0D =0D unsigned int nr_addr_filters;=0D =0D =0D =0D =0D =0D void (*pmu_enable) (struct pmu *pmu);=0D void (*pmu_disable) (struct pmu *pmu);=0D # 338 "./include/linux/perf_event.h"=0D int (*event_init) (struct perf_event *event);=0D =0D =0D =0D =0D =0D void (*event_mapped) (struct perf_event *event, struct mm_struct *mm);=0D void (*event_unmapped) (struct perf_event *event, struct mm_struct *mm);=0D # 373 "./include/linux/perf_event.h"=0D int (*add) (struct perf_event *event, int flags);=0D void (*del) (struct perf_event *event, int flags);=0D # 394 "./include/linux/perf_event.h"=0D void (*start) (struct perf_event *event, int flags);=0D void (*stop) (struct perf_event *event, int flags);=0D =0D =0D =0D =0D =0D =0D =0D void (*read) (struct perf_event *event);=0D # 415 "./include/linux/perf_event.h"=0D void (*start_txn) (struct pmu *pmu, unsigned int txn_flags);=0D # 424 "./include/linux/perf_event.h"=0D int (*commit_txn) (struct pmu *pmu);=0D =0D =0D =0D =0D =0D =0D void (*cancel_txn) (struct pmu *pmu);=0D =0D =0D =0D =0D =0D int (*event_idx) (struct perf_event *event);=0D =0D =0D =0D =0D void (*sched_task) (struct perf_event_context *ctx,=0D bool sched_in);=0D =0D =0D =0D =0D struct kmem_cache *task_ctx_cache;=0D =0D =0D =0D =0D =0D =0D =0D void (*swap_task_ctx) (struct perf_event_context *prev,=0D struct perf_event_context *next);=0D =0D =0D =0D =0D =0D void *(*setup_aux) (struct perf_event *event, void **pages,=0D int nr_pages, bool overwrite);=0D =0D =0D =0D =0D =0D void (*free_aux) (void *aux);=0D # 481 "./include/linux/perf_event.h"=0D long (*snapshot_aux) (struct perf_event *event,=0D struct perf_output_handle *handle,=0D unsigned long size);=0D # 493 "./include/linux/perf_event.h"=0D int (*addr_filters_validate) (struct list_head *filters);=0D # 507 "./include/linux/perf_event.h"=0D void (*addr_filters_sync) (struct perf_event *event);=0D # 517 "./include/linux/perf_event.h"=0D int (*aux_output_match) (struct perf_event *event);=0D =0D =0D =0D =0D =0D int (*filter_match) (struct perf_event *event);=0D =0D =0D =0D =0D int (*check_period) (struct perf_event *event, u64 value);=0D };=0D =0D enum perf_addr_filter_action_t {=0D PERF_ADDR_FILTER_ACTION_STOP =3D 0,=0D PERF_ADDR_FILTER_ACTION_START,=0D PERF_ADDR_FILTER_ACTION_FILTER,=0D };=0D # 547 "./include/linux/perf_event.h"=0D struct perf_addr_filter {=0D struct list_head entry;=0D struct path path;=0D unsigned long offset;=0D unsigned long size;=0D enum perf_addr_filter_action_t action;=0D };=0D # 565 "./include/linux/perf_event.h"=0D struct perf_addr_filters_head {=0D struct list_head list;=0D raw_spinlock_t lock;=0D unsigned int nr_file_filters;=0D };=0D =0D struct perf_addr_filter_range {=0D unsigned long start;=0D unsigned long size;=0D };=0D =0D =0D =0D =0D enum perf_event_state {=0D PERF_EVENT_STATE_DEAD =3D -4,=0D PERF_EVENT_STATE_EXIT =3D -3,=0D PERF_EVENT_STATE_ERROR =3D -2,=0D PERF_EVENT_STATE_OFF =3D -1,=0D PERF_EVENT_STATE_INACTIVE =3D 0,=0D PERF_EVENT_STATE_ACTIVE =3D 1,=0D };=0D =0D struct file;=0D struct perf_sample_data;=0D =0D typedef void (*perf_overflow_handler_t)(struct perf_event *,=0D struct perf_sample_data *,=0D struct pt_regs *regs);=0D # 612 "./include/linux/perf_event.h"=0D struct swevent_hlist {=0D struct hlist_head heads[(1 << 8)];=0D struct callback_head callback_head;=0D };=0D # 625 "./include/linux/perf_event.h"=0D struct bpf_prog;=0D struct perf_cgroup;=0D struct perf_buffer;=0D =0D struct pmu_event_list {=0D raw_spinlock_t lock;=0D struct list_head list;=0D };=0D # 641 "./include/linux/perf_event.h"=0D struct perf_event {=0D =0D =0D =0D =0D =0D =0D struct list_head event_entry;=0D =0D =0D =0D =0D =0D struct list_head sibling_list;=0D struct list_head active_list;=0D =0D =0D =0D struct rb_node group_node;=0D u64 group_index;=0D =0D =0D =0D =0D =0D struct list_head migrate_entry;=0D =0D struct hlist_node hlist_entry;=0D struct list_head active_entry;=0D int nr_siblings;=0D =0D =0D int event_caps;=0D =0D int group_caps;=0D =0D struct perf_event *group_leader;=0D struct pmu *pmu;=0D void *pmu_private;=0D =0D enum perf_event_state state;=0D unsigned int attach_state;=0D local64_t count;=0D atomic64_t child_count;=0D =0D =0D =0D =0D =0D =0D =0D u64 total_time_enabled;=0D u64 total_time_running;=0D u64 tstamp;=0D =0D struct perf_event_attr attr;=0D u16 header_size;=0D u16 id_header_size;=0D u16 read_size;=0D struct hw_perf_event hw;=0D =0D struct perf_event_context *ctx;=0D atomic_long_t refcount;=0D =0D =0D =0D =0D =0D atomic64_t child_total_time_enabled;=0D atomic64_t child_total_time_running;=0D =0D =0D =0D =0D struct mutex child_mutex;=0D struct list_head child_list;=0D struct perf_event *parent;=0D =0D int oncpu;=0D int cpu;=0D =0D struct list_head owner_entry;=0D struct task_struct *owner;=0D =0D =0D struct mutex mmap_mutex;=0D atomic_t mmap_count;=0D =0D struct perf_buffer *rb;=0D struct list_head rb_entry;=0D unsigned long rcu_batches;=0D int rcu_pending;=0D =0D =0D wait_queue_head_t waitq;=0D struct fasync_struct *fasync;=0D =0D =0D int pending_wakeup;=0D int pending_kill;=0D int pending_disable;=0D unsigned long pending_addr;=0D struct irq_work pending;=0D =0D atomic_t event_limit;=0D =0D =0D struct perf_addr_filters_head addr_filters;=0D =0D struct perf_addr_filter_range *addr_filter_ranges;=0D unsigned long addr_filters_gen;=0D =0D =0D struct perf_event *aux_event;=0D =0D void (*destroy)(struct perf_event *);=0D struct callback_head callback_head;=0D =0D struct pid_namespace *ns;=0D u64 id;=0D =0D u64 (*clock)(void);=0D perf_overflow_handler_t overflow_handler;=0D void *overflow_handler_context;=0D =0D perf_overflow_handler_t orig_overflow_handler;=0D struct bpf_prog *prog;=0D u64 bpf_cookie;=0D =0D =0D =0D struct trace_event_call *tp_event;=0D struct event_filter *filter;=0D =0D struct ftrace_ops ftrace_ops;=0D # 786 "./include/linux/perf_event.h"=0D struct list_head sb_list;=0D =0D };=0D =0D =0D struct perf_event_groups {=0D struct rb_root tree;=0D u64 index;=0D };=0D =0D =0D =0D =0D =0D =0D struct perf_event_context {=0D struct pmu *pmu;=0D =0D =0D =0D =0D raw_spinlock_t lock;=0D =0D =0D =0D =0D =0D struct mutex mutex;=0D =0D struct list_head active_ctx_list;=0D struct perf_event_groups pinned_groups;=0D struct perf_event_groups flexible_groups;=0D struct list_head event_list;=0D =0D struct list_head pinned_active;=0D struct list_head flexible_active;=0D =0D int nr_events;=0D int nr_active;=0D int nr_user;=0D int is_active;=0D int nr_stat;=0D int nr_freq;=0D int rotate_disable;=0D =0D =0D =0D =0D int rotate_necessary;=0D refcount_t refcount;=0D struct task_struct *task;=0D =0D =0D =0D =0D u64 time;=0D u64 timestamp;=0D u64 timeoffset;=0D =0D =0D =0D =0D =0D struct perf_event_context *parent_ctx;=0D u64 parent_gen;=0D u64 generation;=0D int pin_count;=0D =0D =0D =0D void *task_ctx_data;=0D struct callback_head callback_head;=0D };=0D # 869 "./include/linux/perf_event.h"=0D struct perf_cpu_context {=0D struct perf_event_context ctx;=0D struct perf_event_context *task_ctx;=0D int active_oncpu;=0D int exclusive;=0D =0D raw_spinlock_t hrtimer_lock;=0D struct hrtimer hrtimer;=0D ktime_t hrtimer_interval;=0D unsigned int hrtimer_active;=0D =0D =0D =0D =0D =0D =0D struct list_head sched_cb_entry;=0D int sched_cb_usage;=0D =0D int online;=0D =0D =0D =0D =0D int heap_size;=0D struct perf_event **heap;=0D struct perf_event *heap_default[2];=0D };=0D =0D struct perf_output_handle {=0D struct perf_event *event;=0D struct perf_buffer *rb;=0D unsigned long wakeup;=0D unsigned long size;=0D u64 aux_flags;=0D union {=0D void *addr;=0D unsigned long head;=0D };=0D int page;=0D };=0D =0D struct bpf_perf_event_data_kern {=0D bpf_user_pt_regs_t *regs;=0D struct perf_sample_data *data;=0D struct perf_event *event;=0D };=0D # 952 "./include/linux/perf_event.h"=0D extern void *perf_aux_output_begin(struct perf_output_handle *handle,=0D struct perf_event *event);=0D extern void perf_aux_output_end(struct perf_output_handle *handle,=0D unsigned long size);=0D extern int perf_aux_output_skip(struct perf_output_handle *handle,=0D unsigned long size);=0D extern void *perf_get_aux(struct perf_output_handle *handle);=0D extern void perf_aux_output_flag(struct perf_output_handle *handle, u64 fla= gs);=0D extern void perf_event_itrace_started(struct perf_event *event);=0D =0D extern int perf_pmu_register(struct pmu *pmu, const char *name, int type);= =0D extern void perf_pmu_unregister(struct pmu *pmu);=0D =0D extern void __perf_event_task_sched_in(struct task_struct *prev,=0D struct task_struct *task);=0D extern void __perf_event_task_sched_out(struct task_struct *prev,=0D struct task_struct *next);=0D extern int perf_event_init_task(struct task_struct *child, u64 clone_flags)= ;=0D extern void perf_event_exit_task(struct task_struct *child);=0D extern void perf_event_free_task(struct task_struct *task);=0D extern void perf_event_delayed_put(struct task_struct *task);=0D extern struct file *perf_event_get(unsigned int fd);=0D extern const struct perf_event *perf_get_event(struct file *file);=0D extern const struct perf_event_attr *perf_event_attrs(struct perf_event *ev= ent);=0D extern void perf_event_print_debug(void);=0D extern void perf_pmu_disable(struct pmu *pmu);=0D extern void perf_pmu_enable(struct pmu *pmu);=0D extern void perf_sched_cb_dec(struct pmu *pmu);=0D extern void perf_sched_cb_inc(struct pmu *pmu);=0D extern int perf_event_task_disable(void);=0D extern int perf_event_task_enable(void);=0D =0D extern void perf_pmu_resched(struct pmu *pmu);=0D =0D extern int perf_event_refresh(struct perf_event *event, int refresh);=0D extern void perf_event_update_userpage(struct perf_event *event);=0D extern int perf_event_release_kernel(struct perf_event *event);=0D extern struct perf_event *=0D perf_event_create_kernel_counter(struct perf_event_attr *attr,=0D int cpu,=0D struct task_struct *task,=0D perf_overflow_handler_t callback,=0D void *context);=0D extern void perf_pmu_migrate_context(struct pmu *pmu,=0D int src_cpu, int dst_cpu);=0D int perf_event_read_local(struct perf_event *event, u64 *value,=0D u64 *enabled, u64 *running);=0D extern u64 perf_event_read_value(struct perf_event *event,=0D u64 *enabled, u64 *running);=0D =0D =0D struct perf_sample_data {=0D =0D =0D =0D =0D u64 addr;=0D struct perf_raw_record *raw;=0D struct perf_branch_stack *br_stack;=0D u64 period;=0D union perf_sample_weight weight;=0D u64 txn;=0D union perf_mem_data_src data_src;=0D =0D =0D =0D =0D =0D u64 type;=0D u64 ip;=0D struct {=0D u32 pid;=0D u32 tid;=0D } tid_entry;=0D u64 time;=0D u64 id;=0D u64 stream_id;=0D struct {=0D u32 cpu;=0D u32 reserved;=0D } cpu_entry;=0D struct perf_callchain_entry *callchain;=0D u64 aux_size;=0D =0D struct perf_regs regs_user;=0D struct perf_regs regs_intr;=0D u64 stack_user_size;=0D =0D u64 phys_addr;=0D u64 cgroup;=0D u64 data_page_size;=0D u64 code_page_size;=0D } __attribute__((__aligned__((1 << 6))));=0D # 1053 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_sample_data_init(s= truct perf_sample_data *data,=0D u64 addr, u64 period)=0D {=0D =0D data->addr =3D addr;=0D data->raw =3D ((void *)0);=0D data->br_stack =3D ((void *)0);=0D data->period =3D period;=0D data->weight.full =3D 0;=0D data->data_src.val =3D ((((__u64)0x01) << 0) | (((__u64)0x01) << 5) | (((_= _u64)0x01) << 19) | (((__u64)0x01) << 24) | (((__u64)0x01) << 26));=0D data->txn =3D 0;=0D }=0D =0D extern void perf_output_sample(struct perf_output_handle *handle,=0D struct perf_event_header *header,=0D struct perf_sample_data *data,=0D struct perf_event *event);=0D extern void perf_prepare_sample(struct perf_event_header *header,=0D struct perf_sample_data *data,=0D struct perf_event *event,=0D struct pt_regs *regs);=0D =0D extern int perf_event_overflow(struct perf_event *event,=0D struct perf_sample_data *data,=0D struct pt_regs *regs);=0D =0D extern void perf_event_output_forward(struct perf_event *event,=0D struct perf_sample_data *data,=0D struct pt_regs *regs);=0D extern void perf_event_output_backward(struct perf_event *event,=0D struct perf_sample_data *data,=0D struct pt_regs *regs);=0D extern int perf_event_output(struct perf_event *event,=0D struct perf_sample_data *data,=0D struct pt_regs *regs);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool=0D is_default_overflow_handler(struct perf_event *event)=0D {=0D if (__builtin_expect(!!(event->overflow_handler =3D=3D perf_event_output_f= orward), 1))=0D return true;=0D if (__builtin_expect(!!(event->overflow_handler =3D=3D perf_event_output_b= ackward), 0))=0D return true;=0D return false;=0D }=0D =0D extern void=0D perf_event_header__init_id(struct perf_event_header *header,=0D struct perf_sample_data *data,=0D struct perf_event *event);=0D extern void=0D perf_event__output_id_sample(struct perf_event *event,=0D struct perf_output_handle *handle,=0D struct perf_sample_data *sample);=0D =0D extern void=0D perf_log_lost_samples(struct perf_event *event, u64 lost);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool event_has_any_exclude_f= lag(struct perf_event *event)=0D {=0D struct perf_event_attr *attr =3D &event->attr;=0D =0D return attr->exclude_idle || attr->exclude_user ||=0D attr->exclude_kernel || attr->exclude_hv ||=0D attr->exclude_guest || attr->exclude_host;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_sampling_event(struc= t perf_event *event)=0D {=0D return event->attr.sample_period !=3D 0;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_software_event(struct= perf_event *event)=0D {=0D return event->event_caps & ((((1UL))) << (0));=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int in_software_context(stru= ct perf_event *event)=0D {=0D return event->ctx->pmu->task_ctx_nr =3D=3D perf_sw_context;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int is_exclusive_pmu(struct = pmu *pmu)=0D {=0D return pmu->capabilities & 0x0010;=0D }=0D =0D extern struct static_key perf_swevent_enabled[PERF_COUNT_SW_MAX];=0D =0D extern void ___perf_sw_event(u32, u64, struct pt_regs *, u64);=0D extern void __perf_sw_event(u32, u64, struct pt_regs *, u64);=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_arch_fetch_caller_= regs(struct pt_regs *regs, unsigned long ip) { }=0D # 1169 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_fetch_caller_regs(= struct pt_regs *regs)=0D {=0D perf_arch_fetch_caller_regs(regs, ((unsigned long)__builtin_return_address= (0)));=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void=0D perf_sw_event(u32 event_id, u64 nr, struct pt_regs *regs, u64 addr)=0D {=0D if (static_key_false(&perf_swevent_enabled[event_id]))=0D __perf_sw_event(event_id, nr, regs, addr);=0D }=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct pt_re= gs) __perf_regs[4];=0D =0D =0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) void __perf_sw_event_sched(u32 event_id, u64 nr, u64 addr)=0D {=0D struct pt_regs *regs =3D ({ do { const void *__vpp_verify =3D (typeof((&__= perf_regs[0]) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigne= d long __ptr; __ptr =3D (unsigned long) ((typeof(*(&__perf_regs[0])) *)(&__= perf_regs[0])); (typeof((typeof(*(&__perf_regs[0])) *)(&__perf_regs[0]))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); });=0D =0D perf_fetch_caller_regs(regs);=0D ___perf_sw_event(event_id, nr, regs, addr);=0D }=0D =0D extern struct static_key_false perf_sched_events;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool __perf_sw_enabled(int swevt)=0D {=0D return static_key_false(&perf_swevent_enabled[swevt]);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_event_task_migrate= (struct task_struct *task)=0D {=0D if (__perf_sw_enabled(PERF_COUNT_SW_CPU_MIGRATIONS))=0D task->sched_migrated =3D 1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_event_task_sched_i= n(struct task_struct *prev,=0D struct task_struct *task)=0D {=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&pe= rf_sched_events)->key), struct static_key) && !__builtin_types_compatible_p= (typeof(*&(&perf_sched_events)->key), struct static_key_true) && !__builtin= _types_compatible_p(typeof(*&(&perf_sched_events)->key), struct static_key_= false)) ____wrong_branch_error(); static_key_count((struct static_key *)&(&= perf_sched_events)->key) > 0; })), 0))=0D __perf_event_task_sched_in(prev, task);=0D =0D if (__perf_sw_enabled(PERF_COUNT_SW_CPU_MIGRATIONS) &&=0D task->sched_migrated) {=0D __perf_sw_event_sched(PERF_COUNT_SW_CPU_MIGRATIONS, 1, 0);=0D task->sched_migrated =3D 0;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_event_task_sched_o= ut(struct task_struct *prev,=0D struct task_struct *next)=0D {=0D if (__perf_sw_enabled(PERF_COUNT_SW_CONTEXT_SWITCHES))=0D __perf_sw_event_sched(PERF_COUNT_SW_CONTEXT_SWITCHES, 1, 0);=0D # 1235 "./include/linux/perf_event.h"=0D if (__builtin_expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&pe= rf_sched_events)->key), struct static_key) && !__builtin_types_compatible_p= (typeof(*&(&perf_sched_events)->key), struct static_key_true) && !__builtin= _types_compatible_p(typeof(*&(&perf_sched_events)->key), struct static_key_= false)) ____wrong_branch_error(); static_key_count((struct static_key *)&(&= perf_sched_events)->key) > 0; })), 0))=0D __perf_event_task_sched_out(prev, next);=0D }=0D =0D extern void perf_event_mmap(struct vm_area_struct *vma);=0D =0D extern void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,=0D bool unregister, const char *sym);=0D extern void perf_event_bpf_event(struct bpf_prog *prog,=0D enum perf_bpf_event_type type,=0D u16 flags);=0D # 1269 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int perf_guest_stat= e(void) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned long perf_guest_get= _ip(void) { return 0; }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int perf_guest_hand= le_intel_pt_intr(void) { return 0; }=0D =0D =0D extern void perf_event_exec(void);=0D extern void perf_event_comm(struct task_struct *tsk, bool exec);=0D extern void perf_event_namespaces(struct task_struct *tsk);=0D extern void perf_event_fork(struct task_struct *tsk);=0D extern void perf_event_text_poke(const void *addr,=0D const void *old_bytes, size_t old_len,=0D const void *new_bytes, size_t new_len);=0D =0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct perf_= callchain_entry) perf_callchain_entry;=0D =0D extern void perf_callchain_user(struct perf_callchain_entry_ctx *entry, str= uct pt_regs *regs);=0D extern void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, s= truct pt_regs *regs);=0D extern struct perf_callchain_entry *=0D get_perf_callchain(struct pt_regs *regs, u32 init_nr, bool kernel, bool use= r,=0D u32 max_stack, bool crosstask, bool add_mark);=0D extern struct perf_callchain_entry *perf_callchain(struct perf_event *event= , struct pt_regs *regs);=0D extern int get_callchain_buffers(int max_stack);=0D extern void put_callchain_buffers(void);=0D extern struct perf_callchain_entry *get_callchain_entry(int *rctx);=0D extern void put_callchain_entry(int rctx);=0D =0D extern int sysctl_perf_event_max_stack;=0D extern int sysctl_perf_event_max_contexts_per_stack;=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_callchain_store_con= text(struct perf_callchain_entry_ctx *ctx, u64 ip)=0D {=0D if (ctx->contexts < sysctl_perf_event_max_contexts_per_stack) {=0D struct perf_callchain_entry *entry =3D ctx->entry;=0D entry->ip[entry->nr++] =3D ip;=0D ++ctx->contexts;=0D return 0;=0D } else {=0D ctx->contexts_maxed =3D true;=0D return -1;=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_callchain_store(str= uct perf_callchain_entry_ctx *ctx, u64 ip)=0D {=0D if (ctx->nr < ctx->max_stack && !ctx->contexts_maxed) {=0D struct perf_callchain_entry *entry =3D ctx->entry;=0D entry->ip[entry->nr++] =3D ip;=0D ++ctx->nr;=0D return 0;=0D } else {=0D return -1;=0D }=0D }=0D =0D extern int sysctl_perf_event_paranoid;=0D extern int sysctl_perf_event_mlock;=0D extern int sysctl_perf_event_sample_rate;=0D extern int sysctl_perf_cpu_time_max_percent;=0D =0D extern void perf_sample_event_took(u64 sample_len_ns);=0D =0D int perf_proc_update_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int perf_cpu_time_max_percent_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D int perf_event_max_stack_handler(struct ctl_table *table, int write,=0D void *buffer, size_t *lenp, loff_t *ppos);=0D # 1346 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_is_paranoid(void)=0D {=0D return sysctl_perf_event_paranoid > -1;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_allow_kernel(struct= perf_event_attr *attr)=0D {=0D if (sysctl_perf_event_paranoid > 1 && !perfmon_capable())=0D return -13;=0D =0D return security_perf_event_open(attr, 2);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_allow_cpu(struct pe= rf_event_attr *attr)=0D {=0D if (sysctl_perf_event_paranoid > 0 && !perfmon_capable())=0D return -13;=0D =0D return security_perf_event_open(attr, 1);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) int perf_allow_tracepoint(st= ruct perf_event_attr *attr)=0D {=0D if (sysctl_perf_event_paranoid > -1 && !perfmon_capable())=0D return -1;=0D =0D return security_perf_event_open(attr, 3);=0D }=0D =0D extern void perf_event_init(void);=0D extern void perf_tp_event(u16 event_type, u64 count, void *record,=0D int entry_size, struct pt_regs *regs,=0D struct hlist_head *head, int rctx,=0D struct task_struct *task);=0D extern void perf_bp_event(struct perf_event *event, void *data);=0D # 1391 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool has_branch_stack(struct= perf_event *event)=0D {=0D return event->attr.sample_type & PERF_SAMPLE_BRANCH_STACK;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool needs_branch_stack(stru= ct perf_event *event)=0D {=0D return event->attr.branch_sample_type !=3D 0;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool has_aux(struct perf_eve= nt *event)=0D {=0D return event->pmu->setup_aux;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool is_write_backward(struc= t perf_event *event)=0D {=0D return !!event->attr.write_backward;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool has_addr_filter(struct = perf_event *event)=0D {=0D return event->pmu->nr_addr_filters;=0D }=0D =0D =0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct perf_addr_filters_hea= d *=0D perf_event_addr_filters(struct perf_event *event)=0D {=0D struct perf_addr_filters_head *ifh =3D &event->addr_filters;=0D =0D if (event->parent)=0D ifh =3D &event->parent->addr_filters;=0D =0D return ifh;=0D }=0D =0D extern void perf_event_addr_filters_sync(struct perf_event *event);=0D extern void perf_report_aux_output_id(struct perf_event *event, u64 hw_id);= =0D =0D extern int perf_output_begin(struct perf_output_handle *handle,=0D struct perf_sample_data *data,=0D struct perf_event *event, unsigned int size);=0D extern int perf_output_begin_forward(struct perf_output_handle *handle,=0D struct perf_sample_data *data,=0D struct perf_event *event,=0D unsigned int size);=0D extern int perf_output_begin_backward(struct perf_output_handle *handle,=0D struct perf_sample_data *data,=0D struct perf_event *event,=0D unsigned int size);=0D =0D extern void perf_output_end(struct perf_output_handle *handle);=0D extern unsigned int perf_output_copy(struct perf_output_handle *handle,=0D const void *buf, unsigned int len);=0D extern unsigned int perf_output_skip(struct perf_output_handle *handle,=0D unsigned int len);=0D extern long perf_output_copy_aux(struct perf_output_handle *aux_handle,=0D struct perf_output_handle *handle,=0D unsigned long from, unsigned long to);=0D extern int perf_swevent_get_recursion_context(void);=0D extern void perf_swevent_put_recursion_context(int rctx);=0D extern u64 perf_swevent_set_period(struct perf_event *event);=0D extern void perf_event_enable(struct perf_event *event);=0D extern void perf_event_disable(struct perf_event *event);=0D extern void perf_event_disable_local(struct perf_event *event);=0D extern void perf_event_disable_inatomic(struct perf_event *event);=0D extern void perf_event_task_tick(void);=0D extern int perf_event_account_interrupt(struct perf_event *event);=0D extern int perf_event_period(struct perf_event *event, u64 value);=0D extern u64 perf_event_pause(struct perf_event *event, bool reset);=0D # 1555 "./include/linux/perf_event.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void perf_restore_debug_stor= e(void) { }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool perf_raw_frag_last(const struct perf_raw_frag *frag)=0D {=0D return frag->pad < sizeof(u64);=0D }=0D =0D =0D =0D struct perf_pmu_events_attr {=0D struct device_attribute attr;=0D u64 id;=0D const char *event_str;=0D };=0D =0D struct perf_pmu_events_ht_attr {=0D struct device_attribute attr;=0D u64 id;=0D const char *event_str_ht;=0D const char *event_str_noht;=0D };=0D =0D struct perf_pmu_events_hybrid_attr {=0D struct device_attribute attr;=0D u64 id;=0D const char *event_str;=0D u64 pmu_type;=0D };=0D =0D struct perf_pmu_format_hybrid_attr {=0D struct device_attribute attr;=0D u64 pmu_type;=0D };=0D =0D ssize_t perf_event_sysfs_show(struct device *dev, struct device_attribute *= attr,=0D char *page);=0D # 1626 "./include/linux/perf_event.h"=0D int perf_event_init_cpu(unsigned int cpu);=0D int perf_event_exit_cpu(unsigned int cpu);=0D =0D =0D =0D =0D =0D extern void __attribute__((__weak__)) arch_perf_update_userpage(struct perf= _event *event,=0D struct perf_event_mmap_page *userpg,=0D u64 now);=0D =0D =0D extern __attribute__((__weak__)) u64 arch_perf_get_page_size(struct mm_stru= ct *mm, unsigned long addr);=0D # 1659 "./include/linux/perf_event.h"=0D typedef int (perf_snapshot_branch_stack_t)(struct perf_branch_entry *entrie= s,=0D unsigned int cnt);=0D extern struct static_call_key __SCK__perf_snapshot_branch_stack; extern typ= eof(perf_snapshot_branch_stack_t) __SCT__perf_snapshot_branch_stack;;=0D # 11 "./include/linux/trace_events.h" 2=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/linux/trace_events.h" 2=0D =0D struct trace_array;=0D struct array_buffer;=0D struct tracer;=0D struct dentry;=0D struct bpf_prog;=0D union bpf_attr;=0D =0D const char *trace_print_flags_seq(struct trace_seq *p, const char *delim,=0D unsigned long flags,=0D const struct trace_print_flags *flag_array);=0D =0D const char *trace_print_symbols_seq(struct trace_seq *p, unsigned long val,= =0D const struct trace_print_flags *symbol_array);=0D # 38 "./include/linux/trace_events.h"=0D const char *trace_print_bitmask_seq(struct trace_seq *p, void *bitmask_ptr,= =0D unsigned int bitmask_size);=0D =0D const char *trace_print_hex_seq(struct trace_seq *p,=0D const unsigned char *buf, int len,=0D bool concatenate);=0D =0D const char *trace_print_array_seq(struct trace_seq *p,=0D const void *buf, int count,=0D size_t el_size);=0D =0D const char *=0D trace_print_hex_dump_seq(struct trace_seq *p, const char *prefix_str,=0D int prefix_type, int rowsize, int groupsize,=0D const void *buf, size_t len, bool ascii);=0D =0D struct trace_iterator;=0D struct trace_event;=0D =0D int trace_raw_output_prep(struct trace_iterator *iter,=0D struct trace_event *event);=0D extern __attribute__((__format__(printf, 2, 3)))=0D void trace_event_printf(struct trace_iterator *iter, const char *fmt, ...);= =0D =0D =0D =0D =0D =0D =0D =0D struct trace_entry {=0D unsigned short type;=0D unsigned char flags;=0D unsigned char preempt_count;=0D int pid;=0D };=0D # 82 "./include/linux/trace_events.h"=0D struct trace_iterator {=0D struct trace_array *tr;=0D struct tracer *trace;=0D struct array_buffer *array_buffer;=0D void *private;=0D int cpu_file;=0D struct mutex mutex;=0D struct ring_buffer_iter **buffer_iter;=0D unsigned long iter_flags;=0D void *temp;=0D unsigned int temp_size;=0D char *fmt;=0D unsigned int fmt_size;=0D =0D =0D struct trace_seq tmp_seq;=0D =0D cpumask_var_t started;=0D =0D =0D bool snapshot;=0D =0D =0D struct trace_seq seq;=0D struct trace_entry *ent;=0D unsigned long lost_events;=0D int leftover;=0D int ent_size;=0D int cpu;=0D u64 ts;=0D =0D loff_t pos;=0D long idx;=0D =0D =0D };=0D =0D enum trace_iter_flags {=0D TRACE_FILE_LAT_FMT =3D 1,=0D TRACE_FILE_ANNOTATE =3D 2,=0D TRACE_FILE_TIME_IN_NS =3D 4,=0D };=0D =0D =0D typedef enum print_line_t (*trace_print_func)(struct trace_iterator *iter,= =0D int flags, struct trace_event *event);=0D =0D struct trace_event_functions {=0D trace_print_func trace;=0D trace_print_func raw;=0D trace_print_func hex;=0D trace_print_func binary;=0D };=0D =0D struct trace_event {=0D struct hlist_node node;=0D struct list_head list;=0D int type;=0D struct trace_event_functions *funcs;=0D };=0D =0D extern int register_trace_event(struct trace_event *event);=0D extern int unregister_trace_event(struct trace_event *event);=0D =0D =0D enum print_line_t {=0D TRACE_TYPE_PARTIAL_LINE =3D 0,=0D TRACE_TYPE_HANDLED =3D 1,=0D TRACE_TYPE_UNHANDLED =3D 2,=0D TRACE_TYPE_NO_CONSUME =3D 3=0D };=0D =0D enum print_line_t trace_handle_return(struct trace_seq *s);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void tracing_generic_entry_u= pdate(struct trace_entry *entry,=0D unsigned short type,=0D unsigned int trace_ctx)=0D {=0D entry->preempt_count =3D trace_ctx & 0xff;=0D entry->pid =3D get_current()->pid;=0D entry->type =3D type;=0D entry->flags =3D trace_ctx >> 16;=0D }=0D =0D unsigned int tracing_gen_ctx_irq_test(unsigned int irqs_status);=0D =0D enum trace_flag_type {=0D TRACE_FLAG_IRQS_OFF =3D 0x01,=0D TRACE_FLAG_IRQS_NOSUPPORT =3D 0x02,=0D TRACE_FLAG_NEED_RESCHED =3D 0x04,=0D TRACE_FLAG_HARDIRQ =3D 0x08,=0D TRACE_FLAG_SOFTIRQ =3D 0x10,=0D TRACE_FLAG_PREEMPT_RESCHED =3D 0x20,=0D TRACE_FLAG_NMI =3D 0x40,=0D TRACE_FLAG_BH_OFF =3D 0x80,=0D };=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tracing_gen_ctx= _flags(unsigned long irqflags)=0D {=0D unsigned int irq_status =3D ({ ({ unsigned long __dummy; typeof(irqflags) = __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); arch_irqs_disabled_flag= s(irqflags); }) ?=0D TRACE_FLAG_IRQS_OFF : 0;=0D return tracing_gen_ctx_irq_test(irq_status);=0D }=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tracing_gen_ctx= (void)=0D {=0D unsigned long irqflags;=0D =0D do { ({ unsigned long __dummy; typeof(irqflags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); irqflags =3D arch_local_save_flags(); } while (0)= ;=0D return tracing_gen_ctx_flags(irqflags);=0D }=0D # 205 "./include/linux/trace_events.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) unsigned int tracing_gen_ctx= _dec(void)=0D {=0D unsigned int trace_ctx;=0D =0D trace_ctx =3D tracing_gen_ctx();=0D =0D =0D =0D =0D if (0)=0D trace_ctx--;=0D return trace_ctx;=0D }=0D =0D struct trace_event_file;=0D =0D struct ring_buffer_event *=0D trace_event_buffer_lock_reserve(struct trace_buffer **current_buffer,=0D struct trace_event_file *trace_file,=0D int type, unsigned long len,=0D unsigned int trace_ctx);=0D =0D =0D =0D =0D void tracing_record_taskinfo(struct task_struct *task, int flags);=0D void tracing_record_taskinfo_sched_switch(struct task_struct *prev,=0D struct task_struct *next, int flags);=0D =0D void tracing_record_cmdline(struct task_struct *task);=0D void tracing_record_tgid(struct task_struct *task);=0D =0D int trace_output_call(struct trace_iterator *iter, char *name, char *fmt, .= =2E.);=0D =0D struct event_filter;=0D =0D enum trace_reg {=0D TRACE_REG_REGISTER,=0D TRACE_REG_UNREGISTER,=0D =0D TRACE_REG_PERF_REGISTER,=0D TRACE_REG_PERF_UNREGISTER,=0D TRACE_REG_PERF_OPEN,=0D TRACE_REG_PERF_CLOSE,=0D =0D =0D =0D =0D =0D TRACE_REG_PERF_ADD,=0D TRACE_REG_PERF_DEL,=0D =0D };=0D =0D struct trace_event_call;=0D =0D =0D =0D struct trace_event_fields {=0D const char *type;=0D union {=0D struct {=0D const char *name;=0D const int size;=0D const int align;=0D const int is_signed;=0D const int filter_type;=0D };=0D int (*define_fields)(struct trace_event_call *);=0D };=0D };=0D =0D struct trace_event_class {=0D const char *system;=0D void *probe;=0D =0D void *perf_probe;=0D =0D int (*reg)(struct trace_event_call *event,=0D enum trace_reg type, void *data);=0D struct trace_event_fields *fields_array;=0D struct list_head *(*get_fields)(struct trace_event_call *);=0D struct list_head fields;=0D int (*raw_init)(struct trace_event_call *);=0D };=0D =0D extern int trace_event_reg(struct trace_event_call *event,=0D enum trace_reg type, void *data);=0D =0D struct trace_event_buffer {=0D struct trace_buffer *buffer;=0D struct ring_buffer_event *event;=0D struct trace_event_file *trace_file;=0D void *entry;=0D unsigned int trace_ctx;=0D struct pt_regs *regs;=0D };=0D =0D void *trace_event_buffer_reserve(struct trace_event_buffer *fbuffer,=0D struct trace_event_file *trace_file,=0D unsigned long len);=0D =0D void trace_event_buffer_commit(struct trace_event_buffer *fbuffer);=0D =0D enum {=0D TRACE_EVENT_FL_FILTERED_BIT,=0D TRACE_EVENT_FL_CAP_ANY_BIT,=0D TRACE_EVENT_FL_NO_SET_FILTER_BIT,=0D TRACE_EVENT_FL_IGNORE_ENABLE_BIT,=0D TRACE_EVENT_FL_TRACEPOINT_BIT,=0D TRACE_EVENT_FL_DYNAMIC_BIT,=0D TRACE_EVENT_FL_KPROBE_BIT,=0D TRACE_EVENT_FL_UPROBE_BIT,=0D TRACE_EVENT_FL_EPROBE_BIT,=0D TRACE_EVENT_FL_CUSTOM_BIT,=0D };=0D # 337 "./include/linux/trace_events.h"=0D enum {=0D TRACE_EVENT_FL_FILTERED =3D (1 << TRACE_EVENT_FL_FILTERED_BIT),=0D TRACE_EVENT_FL_CAP_ANY =3D (1 << TRACE_EVENT_FL_CAP_ANY_BIT),=0D TRACE_EVENT_FL_NO_SET_FILTER =3D (1 << TRACE_EVENT_FL_NO_SET_FILTER_BIT),= =0D TRACE_EVENT_FL_IGNORE_ENABLE =3D (1 << TRACE_EVENT_FL_IGNORE_ENABLE_BIT),= =0D TRACE_EVENT_FL_TRACEPOINT =3D (1 << TRACE_EVENT_FL_TRACEPOINT_BIT),=0D TRACE_EVENT_FL_DYNAMIC =3D (1 << TRACE_EVENT_FL_DYNAMIC_BIT),=0D TRACE_EVENT_FL_KPROBE =3D (1 << TRACE_EVENT_FL_KPROBE_BIT),=0D TRACE_EVENT_FL_UPROBE =3D (1 << TRACE_EVENT_FL_UPROBE_BIT),=0D TRACE_EVENT_FL_EPROBE =3D (1 << TRACE_EVENT_FL_EPROBE_BIT),=0D TRACE_EVENT_FL_CUSTOM =3D (1 << TRACE_EVENT_FL_CUSTOM_BIT),=0D };=0D =0D =0D =0D struct trace_event_call {=0D struct list_head list;=0D struct trace_event_class *class;=0D union {=0D char *name;=0D =0D struct tracepoint *tp;=0D };=0D struct trace_event event;=0D char *print_fmt;=0D struct event_filter *filter;=0D =0D =0D =0D =0D union {=0D void *module;=0D atomic_t refcnt;=0D };=0D void *data;=0D =0D =0D int flags;=0D =0D =0D int perf_refcount;=0D struct hlist_head *perf_events;=0D struct bpf_prog_array *prog_array;=0D =0D int (*perf_perm)(struct trace_event_call *,=0D struct perf_event *);=0D =0D };=0D =0D =0D bool trace_event_dyn_try_get_ref(struct trace_event_call *call);=0D void trace_event_dyn_put_ref(struct trace_event_call *call);=0D bool trace_event_dyn_busy(struct trace_event_call *call);=0D # 406 "./include/linux/trace_events.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool trace_event_try_get_ref= (struct trace_event_call *call)=0D {=0D if (call->flags & TRACE_EVENT_FL_DYNAMIC)=0D return trace_event_dyn_try_get_ref(call);=0D else=0D return try_module_get(call->module);=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void trace_event_put_ref(str= uct trace_event_call *call)=0D {=0D if (call->flags & TRACE_EVENT_FL_DYNAMIC)=0D trace_event_dyn_put_ref(call);=0D else=0D module_put(call->module);=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) bool bpf_prog_array_valid(st= ruct trace_event_call *call)=0D {=0D # 442 "./include/linux/trace_events.h"=0D return !!({ do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_643(void) ; if (!((sizeof(call->prog_array) =3D=3D sizeof(char) || si= zeof(call->prog_array) =3D=3D sizeof(short) || sizeof(call->prog_array) =3D= =3D sizeof(int) || sizeof(call->prog_array) =3D=3D sizeof(long)) || sizeof(= call->prog_array) =3D=3D sizeof(long long))) __compiletime_assert_643(); } = while (0); (*(const volatile typeof( _Generic((call->prog_array), char: (ch= ar)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigne= d short: (unsigned short)0, signed short: (signed short)0, unsigned int: (u= nsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, = signed long: (signed long)0, unsigned long long: (unsigned long long)0, sig= ned long long: (signed long long)0, default: (call->prog_array))) *)&(call-= >prog_array)); });=0D }=0D =0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const char *=0D trace_event_name(struct trace_event_call *call)=0D {=0D if (call->flags & TRACE_EVENT_FL_CUSTOM)=0D return call->name;=0D else if (call->flags & TRACE_EVENT_FL_TRACEPOINT)=0D return call->tp ? call->tp->name : ((void *)0);=0D else=0D return call->name;=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) struct list_head *=0D trace_get_fields(struct trace_event_call *event_call)=0D {=0D if (!event_call->class->get_fields)=0D return &event_call->class->fields;=0D return event_call->class->get_fields(event_call);=0D }=0D =0D struct trace_subsystem_dir;=0D =0D enum {=0D EVENT_FILE_FL_ENABLED_BIT,=0D EVENT_FILE_FL_RECORDED_CMD_BIT,=0D EVENT_FILE_FL_RECORDED_TGID_BIT,=0D EVENT_FILE_FL_FILTERED_BIT,=0D EVENT_FILE_FL_NO_SET_FILTER_BIT,=0D EVENT_FILE_FL_SOFT_MODE_BIT,=0D EVENT_FILE_FL_SOFT_DISABLED_BIT,=0D EVENT_FILE_FL_TRIGGER_MODE_BIT,=0D EVENT_FILE_FL_TRIGGER_COND_BIT,=0D EVENT_FILE_FL_PID_FILTER_BIT,=0D EVENT_FILE_FL_WAS_ENABLED_BIT,=0D };=0D =0D extern struct trace_event_file *trace_get_event_file(const char *instance,= =0D const char *system,=0D const char *event);=0D extern void trace_put_event_file(struct trace_event_file *file);=0D =0D =0D =0D enum dynevent_type {=0D DYNEVENT_TYPE_SYNTH =3D 1,=0D DYNEVENT_TYPE_KPROBE,=0D DYNEVENT_TYPE_NONE,=0D };=0D =0D struct dynevent_cmd;=0D =0D typedef int (*dynevent_create_fn_t)(struct dynevent_cmd *cmd);=0D =0D struct dynevent_cmd {=0D struct seq_buf seq;=0D const char *event_name;=0D unsigned int n_fields;=0D enum dynevent_type type;=0D dynevent_create_fn_t run_command;=0D void *private_data;=0D };=0D =0D extern int dynevent_create(struct dynevent_cmd *cmd);=0D =0D extern int synth_event_delete(const char *name);=0D =0D extern void synth_event_cmd_init(struct dynevent_cmd *cmd,=0D char *buf, int maxlen);=0D =0D extern int __synth_event_gen_cmd_start(struct dynevent_cmd *cmd,=0D const char *name,=0D struct module *mod, ...);=0D =0D =0D =0D =0D struct synth_field_desc {=0D const char *type;=0D const char *name;=0D };=0D =0D extern int synth_event_gen_cmd_array_start(struct dynevent_cmd *cmd,=0D const char *name,=0D struct module *mod,=0D struct synth_field_desc *fields,=0D unsigned int n_fields);=0D extern int synth_event_create(const char *name,=0D struct synth_field_desc *fields,=0D unsigned int n_fields, struct module *mod);=0D =0D extern int synth_event_add_field(struct dynevent_cmd *cmd,=0D const char *type,=0D const char *name);=0D extern int synth_event_add_field_str(struct dynevent_cmd *cmd,=0D const char *type_name);=0D extern int synth_event_add_fields(struct dynevent_cmd *cmd,=0D struct synth_field_desc *fields,=0D unsigned int n_fields);=0D =0D =0D =0D =0D struct synth_event;=0D =0D struct synth_event_trace_state {=0D struct trace_event_buffer fbuffer;=0D struct synth_trace_event *entry;=0D struct trace_buffer *buffer;=0D struct synth_event *event;=0D unsigned int cur_field;=0D unsigned int n_u64;=0D bool disabled;=0D bool add_next;=0D bool add_name;=0D };=0D =0D extern int synth_event_trace(struct trace_event_file *file,=0D unsigned int n_vals, ...);=0D extern int synth_event_trace_array(struct trace_event_file *file, u64 *vals= ,=0D unsigned int n_vals);=0D extern int synth_event_trace_start(struct trace_event_file *file,=0D struct synth_event_trace_state *trace_state);=0D extern int synth_event_add_next_val(u64 val,=0D struct synth_event_trace_state *trace_state);=0D extern int synth_event_add_val(const char *field_name, u64 val,=0D struct synth_event_trace_state *trace_state);=0D extern int synth_event_trace_end(struct synth_event_trace_state *trace_stat= e);=0D =0D extern int kprobe_event_delete(const char *name);=0D =0D extern void kprobe_event_cmd_init(struct dynevent_cmd *cmd,=0D char *buf, int maxlen);=0D =0D =0D =0D =0D =0D =0D =0D extern int __kprobe_event_gen_cmd_start(struct dynevent_cmd *cmd,=0D bool kretprobe,=0D const char *name,=0D const char *loc, ...);=0D =0D =0D =0D =0D =0D =0D =0D extern int __kprobe_event_add_fields(struct dynevent_cmd *cmd, ...);=0D # 618 "./include/linux/trace_events.h"=0D enum {=0D EVENT_FILE_FL_ENABLED =3D (1 << EVENT_FILE_FL_ENABLED_BIT),=0D EVENT_FILE_FL_RECORDED_CMD =3D (1 << EVENT_FILE_FL_RECORDED_CMD_BIT),=0D EVENT_FILE_FL_RECORDED_TGID =3D (1 << EVENT_FILE_FL_RECORDED_TGID_BIT),=0D EVENT_FILE_FL_FILTERED =3D (1 << EVENT_FILE_FL_FILTERED_BIT),=0D EVENT_FILE_FL_NO_SET_FILTER =3D (1 << EVENT_FILE_FL_NO_SET_FILTER_BIT),=0D EVENT_FILE_FL_SOFT_MODE =3D (1 << EVENT_FILE_FL_SOFT_MODE_BIT),=0D EVENT_FILE_FL_SOFT_DISABLED =3D (1 << EVENT_FILE_FL_SOFT_DISABLED_BIT),=0D EVENT_FILE_FL_TRIGGER_MODE =3D (1 << EVENT_FILE_FL_TRIGGER_MODE_BIT),=0D EVENT_FILE_FL_TRIGGER_COND =3D (1 << EVENT_FILE_FL_TRIGGER_COND_BIT),=0D EVENT_FILE_FL_PID_FILTER =3D (1 << EVENT_FILE_FL_PID_FILTER_BIT),=0D EVENT_FILE_FL_WAS_ENABLED =3D (1 << EVENT_FILE_FL_WAS_ENABLED_BIT),=0D };=0D =0D struct trace_event_file {=0D struct list_head list;=0D struct trace_event_call *event_call;=0D struct event_filter *filter;=0D struct dentry *dir;=0D struct trace_array *tr;=0D struct trace_subsystem_dir *system;=0D struct list_head triggers;=0D # 657 "./include/linux/trace_events.h"=0D unsigned long flags;=0D atomic_t sm_ref;=0D atomic_t tm_ref;=0D };=0D # 687 "./include/linux/trace_events.h"=0D enum event_trigger_type {=0D ETT_NONE =3D (0),=0D ETT_TRACE_ONOFF =3D (1 << 0),=0D ETT_SNAPSHOT =3D (1 << 1),=0D ETT_STACKTRACE =3D (1 << 2),=0D ETT_EVENT_ENABLE =3D (1 << 3),=0D ETT_EVENT_HIST =3D (1 << 4),=0D ETT_HIST_ENABLE =3D (1 << 5),=0D ETT_EVENT_EPROBE =3D (1 << 6),=0D };=0D =0D extern int filter_match_preds(struct event_filter *filter, void *rec);=0D =0D extern enum event_trigger_type=0D event_triggers_call(struct trace_event_file *file,=0D struct trace_buffer *buffer, void *rec,=0D struct ring_buffer_event *event);=0D extern void=0D event_triggers_post_call(struct trace_event_file *file,=0D enum event_trigger_type tt);=0D =0D bool trace_event_ignore_this_pid(struct trace_event_file *trace_file);=0D =0D bool __trace_trigger_soft_disabled(struct trace_event_file *file);=0D # 721 "./include/linux/trace_events.h"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((__always_inli= ne__)) bool=0D trace_trigger_soft_disabled(struct trace_event_file *file)=0D {=0D unsigned long eflags =3D file->flags;=0D =0D if (__builtin_expect(!!(!(eflags & (EVENT_FILE_FL_TRIGGER_MODE | EVENT_FIL= E_FL_SOFT_DISABLED | EVENT_FILE_FL_PID_FILTER))), 1))=0D =0D =0D return false;=0D =0D if (__builtin_expect(!!(eflags & EVENT_FILE_FL_TRIGGER_COND), 1))=0D return false;=0D =0D return __trace_trigger_soft_disabled(file);=0D }=0D =0D =0D unsigned int trace_call_bpf(struct trace_event_call *call, void *ctx);=0D int perf_event_attach_bpf_prog(struct perf_event *event, struct bpf_prog *p= rog, u64 bpf_cookie);=0D void perf_event_detach_bpf_prog(struct perf_event *event);=0D int perf_event_query_prog_array(struct perf_event *event, void *info);=0D int bpf_probe_register(struct bpf_raw_event_map *btp, struct bpf_prog *prog= );=0D int bpf_probe_unregister(struct bpf_raw_event_map *btp, struct bpf_prog *pr= og);=0D struct bpf_raw_event_map *bpf_get_raw_tracepoint(const char *name);=0D void bpf_put_raw_tracepoint(struct bpf_raw_event_map *btp);=0D int bpf_get_perf_event_info(const struct perf_event *event, u32 *prog_id,=0D u32 *fd_type, const char **buf,=0D u64 *probe_offset, u64 *probe_addr);=0D int bpf_kprobe_multi_link_attach(const union bpf_attr *attr, struct bpf_pro= g *prog);=0D # 798 "./include/linux/trace_events.h"=0D enum {=0D FILTER_OTHER =3D 0,=0D FILTER_STATIC_STRING,=0D FILTER_DYN_STRING,=0D FILTER_RDYN_STRING,=0D FILTER_PTR_STRING,=0D FILTER_TRACE_FN,=0D FILTER_COMM,=0D FILTER_CPU,=0D };=0D =0D extern int trace_event_raw_init(struct trace_event_call *call);=0D extern int trace_define_field(struct trace_event_call *call, const char *ty= pe,=0D const char *name, int offset, int size,=0D int is_signed, int filter_type);=0D extern int trace_add_event_call(struct trace_event_call *call);=0D extern int trace_remove_event_call(struct trace_event_call *call);=0D extern int trace_event_get_offsets(struct trace_event_call *call);=0D =0D =0D =0D int ftrace_set_clr_event(struct trace_array *tr, char *buf, int set);=0D int trace_set_clr_event(const char *system, const char *event, int set);=0D int trace_array_set_clr_event(struct trace_array *tr, const char *system,=0D const char *event, bool enable);=0D # 843 "./include/linux/trace_events.h"=0D struct perf_event;=0D =0D extern __attribute__((section(".data..percpu" ""))) __typeof__(struct pt_re= gs) perf_trace_regs;=0D extern __attribute__((section(".data..percpu" ""))) __typeof__(int) bpf_kpr= obe_override;=0D =0D extern int perf_trace_init(struct perf_event *event);=0D extern void perf_trace_destroy(struct perf_event *event);=0D extern int perf_trace_add(struct perf_event *event, int flags);=0D extern void perf_trace_del(struct perf_event *event, int flags);=0D =0D extern int perf_kprobe_init(struct perf_event *event, bool is_retprobe);=0D extern void perf_kprobe_destroy(struct perf_event *event);=0D extern int bpf_get_kprobe_info(const struct perf_event *event,=0D u32 *fd_type, const char **symbol,=0D u64 *probe_offset, u64 *probe_addr,=0D bool perf_type_tracepoint);=0D =0D =0D extern int perf_uprobe_init(struct perf_event *event,=0D unsigned long ref_ctr_offset, bool is_retprobe);=0D extern void perf_uprobe_destroy(struct perf_event *event);=0D extern int bpf_get_uprobe_info(const struct perf_event *event,=0D u32 *fd_type, const char **filename,=0D u64 *probe_offset, bool perf_type_tracepoint);=0D =0D extern int ftrace_profile_set_filter(struct perf_event *event, int event_id= ,=0D char *filter_str);=0D extern void ftrace_profile_free_filter(struct perf_event *event);=0D void perf_trace_buf_update(void *record, u16 type);=0D void *perf_trace_buf_alloc(int size, struct pt_regs **regs, int *rctxp);=0D =0D int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog= , u64 bpf_cookie);=0D void perf_event_free_bpf_prog(struct perf_event *event);=0D =0D void bpf_trace_run1(struct bpf_prog *prog, u64 arg1);=0D void bpf_trace_run2(struct bpf_prog *prog, u64 arg1, u64 arg2);=0D void bpf_trace_run3(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3);=0D void bpf_trace_run4(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4);=0D void bpf_trace_run5(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5);=0D void bpf_trace_run6(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6);=0D void bpf_trace_run7(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7);=0D void bpf_trace_run8(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7,=0D u64 arg8);=0D void bpf_trace_run9(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7,=0D u64 arg8, u64 arg9);=0D void bpf_trace_run10(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7,=0D u64 arg8, u64 arg9, u64 arg10);=0D void bpf_trace_run11(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7,=0D u64 arg8, u64 arg9, u64 arg10, u64 arg11);=0D void bpf_trace_run12(struct bpf_prog *prog, u64 arg1, u64 arg2,=0D u64 arg3, u64 arg4, u64 arg5, u64 arg6, u64 arg7,=0D u64 arg8, u64 arg9, u64 arg10, u64 arg11, u64 arg12);=0D void perf_trace_run_bpf_submit(void *raw_data, int size, int rctx,=0D struct trace_event_call *call, u64 count,=0D struct pt_regs *regs, struct hlist_head *head,=0D struct task_struct *task);=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void=0D perf_trace_buf_submit(void *raw_data, int size, int rctx, u16 type,=0D u64 count, struct pt_regs *regs, void *head,=0D struct task_struct *task)=0D {=0D perf_tp_event(type, count, raw_data, size, regs, head, rctx, task);=0D }=0D # 22 "./include/trace/trace_events.h" 2=0D =0D =0D =0D =0D =0D # 1 "./include/trace/stages/init.h" 1=0D # 11 "./include/trace/stages/init.h"=0D static const char str__fib6__trace_system_name[] =3D "fib6";=0D # 28 "./include/trace/trace_events.h" 2=0D # 48 "./include/trace/trace_events.h"=0D # 1 "./include/trace/stages/stage1_struct_define.h" 1=0D # 49 "./include/trace/trace_events.h" 2=0D # 94 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D struct trace_event_raw_fib6_table_lookup { struct trace_entry ent; u32 tb_i= d; int err; int oif; int iif; __u8 tos; __u8 scope; __u8 flags; __u8 src[16= ]; __u8 dst[16]; u16 sport; u16 dport; u8 proto; u8 rt_type; u32 __data_loc= _name; __u8 gw[16]; char __data[]; }; static struct trace_event_class event= _class_fib6_table_lookup;; static struct trace_event_call __attribute__((__= used__)) __attribute__((__aligned__(4))) event_fib6_table_lookup;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 95 "./include/trace/trace_events.h" 2=0D # 112 "./include/trace/trace_events.h"=0D # 1 "./include/trace/stages/stage2_data_offsets.h" 1=0D # 113 "./include/trace/trace_events.h" 2=0D # 132 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D struct trace_event_data_offsets_fib6_table_lookup { u32 name;; };; ;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 133 "./include/trace/trace_events.h" 2=0D # 184 "./include/trace/trace_events.h"=0D # 1 "./include/trace/stages/stage3_trace_output.h" 1=0D # 185 "./include/trace/trace_events.h" 2=0D # 237 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static __attribute__((patchable_function_entry(0, 0))) enum print_line_t tr= ace_raw_output_fib6_table_lookup(struct trace_iterator *iter, int flags, st= ruct trace_event *trace_event) { struct trace_seq *s =3D &iter->seq; struct= trace_seq __attribute__((__unused__)) *p =3D &iter->tmp_seq; struct trace_= event_raw_fib6_table_lookup *field; int ret; field =3D (typeof(field))iter-= >ent; ret =3D trace_raw_output_prep(iter, trace_event); if (ret !=3D TRACE_= TYPE_HANDLED) return ret; trace_event_printf(iter, "table %3u oif %d iif %d= proto %u %pI6c/%u -> %pI6c/%u tos %d scope %d flags %x =3D=3D> dev %s gw %= pI6c err %d" "\n", field->tb_id, field->oif, field->iif, field->proto, fiel= d->src, field->sport, field->dst, field->dport, field->tos, field->scope, f= ield->flags, ((char *)((void *)field + (field->__data_loc_name & 0xffff))),= field->gw, field->err); return trace_handle_return(s); } static struct tra= ce_event_functions trace_event_type_funcs_fib6_table_lookup =3D { .trace = =3D trace_raw_output_fib6_table_lookup, };; ;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 238 "./include/trace/trace_events.h" 2=0D =0D # 1 "./include/trace/stages/stage4_event_fields.h" 1=0D # 240 "./include/trace/trace_events.h" 2=0D # 250 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static struct trace_event_fields trace_event_fields_fib6_table_lookup[] =3D= { { .type =3D "u32", .name =3D "tb_id", .size =3D sizeof(u32), .align =3D = __alignof__(u32), .is_signed =3D (((u32)(-1)) < (u32)1), .filter_type =3D F= ILTER_OTHER }, { .type =3D "int", .name =3D "err", .size =3D sizeof(int), .= align =3D __alignof__(int), .is_signed =3D (((int)(-1)) < (int)1), .filter_= type =3D FILTER_OTHER }, { .type =3D "int", .name =3D "oif", .size =3D size= of(int), .align =3D __alignof__(int), .is_signed =3D (((int)(-1)) < (int)1)= , .filter_type =3D FILTER_OTHER }, { .type =3D "int", .name =3D "iif", .siz= e =3D sizeof(int), .align =3D __alignof__(int), .is_signed =3D (((int)(-1))= < (int)1), .filter_type =3D FILTER_OTHER }, { .type =3D "__u8", .name =3D = "tos", .size =3D sizeof(__u8), .align =3D __alignof__(__u8), .is_signed =3D= (((__u8)(-1)) < (__u8)1), .filter_type =3D FILTER_OTHER }, { .type =3D "__= u8", .name =3D "scope", .size =3D sizeof(__u8), .align =3D __alignof__(__u8= ), .is_signed =3D (((__u8)(-1)) < (__u8)1), .filter_type =3D FILTER_OTHER }= , { .type =3D "__u8", .name =3D "flags", .size =3D sizeof(__u8), .align =3D= __alignof__(__u8), .is_signed =3D (((__u8)(-1)) < (__u8)1), .filter_type = =3D FILTER_OTHER }, { .type =3D "__u8""[""16""]", .name =3D "src", .size = =3D sizeof(__u8[16]), .align =3D __alignof__(__u8), .is_signed =3D (((__u8)= (-1)) < (__u8)1), .filter_type =3D FILTER_OTHER }, { .type =3D "__u8""[""16= ""]", .name =3D "dst", .size =3D sizeof(__u8[16]), .align =3D __alignof__(_= _u8), .is_signed =3D (((__u8)(-1)) < (__u8)1), .filter_type =3D FILTER_OTHE= R }, { .type =3D "u16", .name =3D "sport", .size =3D sizeof(u16), .align = =3D __alignof__(u16), .is_signed =3D (((u16)(-1)) < (u16)1), .filter_type = =3D FILTER_OTHER }, { .type =3D "u16", .name =3D "dport", .size =3D sizeof(= u16), .align =3D __alignof__(u16), .is_signed =3D (((u16)(-1)) < (u16)1), .= filter_type =3D FILTER_OTHER }, { .type =3D "u8", .name =3D "proto", .size = =3D sizeof(u8), .align =3D __alignof__(u8), .is_signed =3D (((u8)(-1)) < (u= 8)1), .filter_type =3D FILTER_OTHER }, { .type =3D "u8", .name =3D "rt_type= ", .size =3D sizeof(u8), .align =3D __alignof__(u8), .is_signed =3D (((u8)(= -1)) < (u8)1), .filter_type =3D FILTER_OTHER }, { .type =3D "__data_loc " "= char" "[]", .name =3D "name", .size =3D 4, .align =3D 4, .is_signed =3D (((= char)(-1)) < (char)1), .filter_type =3D FILTER_OTHER }, { .type =3D "__u8""= [""16""]", .name =3D "gw", .size =3D sizeof(__u8[16]), .align =3D __alignof= __(__u8), .is_signed =3D (((__u8)(-1)) < (__u8)1), .filter_type =3D FILTER_= OTHER }, {} };; ;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 251 "./include/trace/trace_events.h" 2=0D =0D # 1 "./include/trace/stages/stage5_get_offsets.h" 1=0D # 253 "./include/trace/trace_events.h" 2=0D # 268 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) __attribute__((patchable_fun= ction_entry(0, 0))) int trace_event_get_offsets_fib6_table_lookup( struct t= race_event_data_offsets_fib6_table_lookup *__data_offsets, const struct net= *net, const struct fib6_result *res, struct fib6_table *table, const struc= t flowi6 *flp) { int __data_size =3D 0; int __attribute__((__unused__)) __i= tem_length; struct trace_event_raw_fib6_table_lookup __attribute__((__unuse= d__)) *entry; __item_length =3D (16) * sizeof(char); __data_offsets->name = =3D __data_size + __builtin_offsetof(typeof(*entry), __data); __data_offset= s->name |=3D __item_length << 16; __data_size +=3D __item_length;; return _= _data_size; }; ;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 269 "./include/trace/trace_events.h" 2=0D # 375 "./include/trace/trace_events.h"=0D # 1 "./include/trace/stages/stage6_event_callback.h" 1=0D # 376 "./include/trace/trace_events.h" 2=0D # 419 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static __attribute__((patchable_function_entry(0, 0))) void trace_event_raw= _event_fib6_table_lookup(void *__data, const struct net *net, const struct = fib6_result *res, struct fib6_table *table, const struct flowi6 *flp) { str= uct trace_event_file *trace_file =3D __data; struct trace_event_data_offset= s_fib6_table_lookup __attribute__((__unused__)) __data_offsets; struct trac= e_event_buffer fbuffer; struct trace_event_raw_fib6_table_lookup *entry; in= t __data_size; if (trace_trigger_soft_disabled(trace_file)) return; __data_= size =3D trace_event_get_offsets_fib6_table_lookup(&__data_offsets, net, re= s, table, flp); entry =3D trace_event_buffer_reserve(&fbuffer, trace_file, = sizeof(*entry) + __data_size); if (!entry) return; entry->__data_loc_name = =3D __data_offsets.name; { struct in6_addr *in6; entry->tb_id =3D table->tb= 6_id; entry->err =3D ip6_rt_type_to_error(res->fib6_type); entry->oif =3D f= lp->__fl_common.flowic_oif; entry->iif =3D flp->__fl_common.flowic_iif; ent= ry->tos =3D ip6_tclass(flp->flowlabel); entry->scope =3D flp->__fl_common.f= lowic_scope; entry->flags =3D flp->__fl_common.flowic_flags; in6 =3D (struc= t in6_addr *)entry->src; *in6 =3D flp->saddr; in6 =3D (struct in6_addr *)en= try->dst; *in6 =3D flp->daddr; entry->proto =3D flp->__fl_common.flowic_pro= to; if (entry->proto =3D=3D IPPROTO_TCP || entry->proto =3D=3D IPPROTO_UDP)= { entry->sport =3D (__builtin_constant_p((__u16)(( __u16)(__be16)(flp->uli= =2Eports.sport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(flp->uli.ports.spo= rt)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(flp->uli.ports.sp= ort)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(flp->uli.ports= =2Esport))); entry->dport =3D (__builtin_constant_p((__u16)(( __u16)(__be16= )(flp->uli.ports.dport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(flp->uli.p= orts.dport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(flp->uli.= ports.dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(flp->u= li.ports.dport))); } else { entry->sport =3D 0; entry->dport =3D 0; } if (r= es->nh && res->nh->nh_common.nhc_dev) { strcpy(((char *)((void *)entry + (e= ntry->__data_loc_name & 0xffff))), (res->nh->nh_common.nhc_dev) ? (const ch= ar *)(res->nh->nh_common.nhc_dev) : "(null)");; } else { strcpy(((char *)((= void *)entry + (entry->__data_loc_name & 0xffff))), ("-") ? (const char *)(= "-") : "(null)");; } if (res->f6i =3D=3D net->ipv6.fib6_null_entry) { struc= t in6_addr in6_zero =3D {}; in6 =3D (struct in6_addr *)entry->gw; *in6 =3D = in6_zero; } else if (res->nh) { in6 =3D (struct in6_addr *)entry->gw; *in6 = =3D res->nh->nh_common.nhc_gw.ipv6; }; } trace_event_buffer_commit(&fbuffer= ); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unused= __)) __attribute__((patchable_function_entry(0, 0))) void ftrace_test_probe= _fib6_table_lookup(void) { check_trace_callback_type_fib6_table_lookup(trac= e_event_raw_event_fib6_table_lookup); };;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 420 "./include/trace/trace_events.h" 2=0D =0D # 1 "./include/trace/stages/stage7_class_define.h" 1=0D # 422 "./include/trace/trace_events.h" 2=0D # 469 "./include/trace/trace_events.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static __attribute__((patchable_function_entry(0, 0))) void perf_trace_fib6= _table_lookup(void *__data, const struct net *net, const struct fib6_result= *res, struct fib6_table *table, const struct flowi6 *flp);; static char pr= int_fmt_fib6_table_lookup[] =3D "\"" "table %3u oif %d iif %d proto %u %pI6= c/%u -> %pI6c/%u tos %d scope %d flags %x =3D=3D> dev %s gw %pI6c err %d" "= \", " "REC->tb_id, REC->oif, REC->iif, REC->proto, REC->src, REC->sport, RE= C->dst, REC->dport, REC->tos, REC->scope, REC->flags, __get_str(name), REC-= >gw, REC->err"; static struct trace_event_class __attribute__((__used__)) _= _attribute__((__section__(".ref.data"))) event_class_fib6_table_lookup =3D = { .system =3D str__fib6__trace_system_name, .fields_array =3D trace_event_f= ields_fib6_table_lookup, .fields =3D { &(event_class_fib6_table_lookup.fiel= ds), &(event_class_fib6_table_lookup.fields) }, .raw_init =3D trace_event_r= aw_init, .probe =3D trace_event_raw_event_fib6_table_lookup, .reg =3D trace= _event_reg, .perf_probe =3D perf_trace_fib6_table_lookup, };; static struct= trace_event_call __attribute__((__used__)) event_fib6_table_lookup =3D { .= class =3D &event_class_fib6_table_lookup, { .tp =3D &__tracepoint_fib6_tabl= e_lookup, }, .event.funcs =3D &trace_event_type_funcs_fib6_table_lookup, .p= rint_fmt =3D print_fmt_fib6_table_lookup, .flags =3D TRACE_EVENT_FL_TRACEPO= INT, }; static struct trace_event_call __attribute__((__used__)) __attribut= e__((__section__("_ftrace_events"))) *__event_fib6_table_lookup =3D &event_= fib6_table_lookup;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 470 "./include/trace/trace_events.h" 2=0D # 103 "./include/trace/define_trace.h" 2=0D # 1 "./include/trace/perf.h" 1=0D # 113 "./include/trace/perf.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static __attribute__((patchable_function_entry(0, 0))) void perf_trace_fib6= _table_lookup(void *__data, const struct net *net, const struct fib6_result= *res, struct fib6_table *table, const struct flowi6 *flp) { struct trace_e= vent_call *event_call =3D __data; struct trace_event_data_offsets_fib6_tabl= e_lookup __attribute__((__unused__)) __data_offsets; struct trace_event_raw= _fib6_table_lookup *entry; struct pt_regs *__regs; u64 __count =3D 1; struc= t task_struct *__task =3D ((void *)0); struct hlist_head *head; int __entry= _size; int __data_size; int rctx; __data_size =3D trace_event_get_offsets_f= ib6_table_lookup(&__data_offsets, net, res, table, flp); head =3D ({ do { c= onst void *__vpp_verify =3D (typeof((event_call->perf_events) + 0))((void *= )0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (un= signed long) ((typeof(*(event_call->perf_events)) *)(event_call->perf_event= s)); (typeof((typeof(*(event_call->perf_events)) *)(event_call->perf_events= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); }); if (!bpf_prog_array_valid(event_call) && __builtin_constan= t_p(!__task) && !__task && hlist_empty(head)) return; __entry_size =3D ((((= __data_size + sizeof(*entry) + sizeof(u32))) + ((typeof((__data_size + size= of(*entry) + sizeof(u32))))((sizeof(u64))) - 1)) & ~((typeof((__data_size += sizeof(*entry) + sizeof(u32))))((sizeof(u64))) - 1)); __entry_size -=3D si= zeof(u32); entry =3D perf_trace_buf_alloc(__entry_size, &__regs, &rctx); if= (!entry) return; perf_fetch_caller_regs(__regs); entry->__data_loc_name = =3D __data_offsets.name; { struct in6_addr *in6; entry->tb_id =3D table->tb= 6_id; entry->err =3D ip6_rt_type_to_error(res->fib6_type); entry->oif =3D f= lp->__fl_common.flowic_oif; entry->iif =3D flp->__fl_common.flowic_iif; ent= ry->tos =3D ip6_tclass(flp->flowlabel); entry->scope =3D flp->__fl_common.f= lowic_scope; entry->flags =3D flp->__fl_common.flowic_flags; in6 =3D (struc= t in6_addr *)entry->src; *in6 =3D flp->saddr; in6 =3D (struct in6_addr *)en= try->dst; *in6 =3D flp->daddr; entry->proto =3D flp->__fl_common.flowic_pro= to; if (entry->proto =3D=3D IPPROTO_TCP || entry->proto =3D=3D IPPROTO_UDP)= { entry->sport =3D (__builtin_constant_p((__u16)(( __u16)(__be16)(flp->uli= =2Eports.sport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(flp->uli.ports.spo= rt)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(flp->uli.ports.sp= ort)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(flp->uli.ports= =2Esport))); entry->dport =3D (__builtin_constant_p((__u16)(( __u16)(__be16= )(flp->uli.ports.dport))) ? ((__u16)( (((__u16)(( __u16)(__be16)(flp->uli.p= orts.dport)) & (__u16)0x00ffU) << 8) | (((__u16)(( __u16)(__be16)(flp->uli.= ports.dport)) & (__u16)0xff00U) >> 8))) : __fswab16(( __u16)(__be16)(flp->u= li.ports.dport))); } else { entry->sport =3D 0; entry->dport =3D 0; } if (r= es->nh && res->nh->nh_common.nhc_dev) { strcpy(((char *)((void *)entry + (e= ntry->__data_loc_name & 0xffff))), (res->nh->nh_common.nhc_dev) ? (const ch= ar *)(res->nh->nh_common.nhc_dev) : "(null)");; } else { strcpy(((char *)((= void *)entry + (entry->__data_loc_name & 0xffff))), ("-") ? (const char *)(= "-") : "(null)");; } if (res->f6i =3D=3D net->ipv6.fib6_null_entry) { struc= t in6_addr in6_zero =3D {}; in6 =3D (struct in6_addr *)entry->gw; *in6 =3D = in6_zero; } else if (res->nh) { in6 =3D (struct in6_addr *)entry->gw; *in6 = =3D res->nh->nh_common.nhc_gw.ipv6; }; } perf_trace_run_bpf_submit(entry, _= _entry_size, rctx, event_call, __count, __regs, head, __task); }; static in= line __attribute__((__gnu_inline__)) __attribute__((__unused__)) __attribut= e__((patchable_function_entry(0, 0))) void perf_test_probe_fib6_table_looku= p(void) { check_trace_callback_type_fib6_table_lookup(perf_trace_fib6_table= _lookup); };;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 114 "./include/trace/perf.h" 2=0D # 104 "./include/trace/define_trace.h" 2=0D # 1 "./include/trace/bpf_probe.h" 1=0D # 153 "./include/trace/bpf_probe.h"=0D # 1 "./include/trace/events/fib6.h" 1=0D # 11 "./include/trace/events/fib6.h"=0D # 1 "./include/linux/tracepoint.h" 1=0D # 12 "./include/trace/events/fib6.h" 2=0D =0D static __attribute__((patchable_function_entry(0, 0))) void __bpf_trace_fib= 6_table_lookup(void *__data, const struct net *net, const struct fib6_resul= t *res, struct fib6_table *table, const struct flowi6 *flp) { struct bpf_pr= og *prog =3D __data; bpf_trace_run4(prog, ({ typeof(net) __src =3D (net); _= _typeof__(__builtin_choose_expr(sizeof(net) =3D=3D 1, (u8)1, __builtin_choo= se_expr(sizeof(net) =3D=3D 2, (u16)2, __builtin_choose_expr(sizeof(net) =3D= =3D 4, (u32)3, __builtin_choose_expr(sizeof(net) =3D=3D 8, (u64)4, (void)5)= )))) __dst; memcpy(&__dst, &__src, sizeof(__dst)); (u64)__dst; }), ({ typeo= f(res) __src =3D (res); __typeof__(__builtin_choose_expr(sizeof(res) =3D=3D= 1, (u8)1, __builtin_choose_expr(sizeof(res) =3D=3D 2, (u16)2, __builtin_ch= oose_expr(sizeof(res) =3D=3D 4, (u32)3, __builtin_choose_expr(sizeof(res) = =3D=3D 8, (u64)4, (void)5))))) __dst; memcpy(&__dst, &__src, sizeof(__dst))= ; (u64)__dst; }), ({ typeof(table) __src =3D (table); __typeof__(__builtin_= choose_expr(sizeof(table) =3D=3D 1, (u8)1, __builtin_choose_expr(sizeof(tab= le) =3D=3D 2, (u16)2, __builtin_choose_expr(sizeof(table) =3D=3D 4, (u32)3,= __builtin_choose_expr(sizeof(table) =3D=3D 8, (u64)4, (void)5))))) __dst; = memcpy(&__dst, &__src, sizeof(__dst)); (u64)__dst; }), ({ typeof(flp) __src= =3D (flp); __typeof__(__builtin_choose_expr(sizeof(flp) =3D=3D 1, (u8)1, _= _builtin_choose_expr(sizeof(flp) =3D=3D 2, (u16)2, __builtin_choose_expr(si= zeof(flp) =3D=3D 4, (u32)3, __builtin_choose_expr(sizeof(flp) =3D=3D 8, (u6= 4)4, (void)5))))) __dst; memcpy(&__dst, &__src, sizeof(__dst)); (u64)__dst;= })); }; static inline __attribute__((__gnu_inline__)) __attribute__((__unu= sed__)) __attribute__((patchable_function_entry(0, 0))) void bpf_test_probe= _fib6_table_lookup(void) { check_trace_callback_type_fib6_table_lookup(__bp= f_trace_fib6_table_lookup); } typedef void (*btf_trace_fib6_table_lookup)(v= oid *__data, const struct net *net, const struct fib6_result *res, struct f= ib6_table *table, const struct flowi6 *flp); static union { struct bpf_raw_= event_map event; btf_trace_fib6_table_lookup handler; } __bpf_trace_tp_map_= fib6_table_lookup __attribute__((__used__)) __attribute__((__section__("__b= pf_raw_tp_map"))) =3D { .event =3D { .tp =3D &__tracepoint_fib6_table_looku= p, .bpf_func =3D __bpf_trace_fib6_table_lookup, .num_args =3D 4, .writable_= size =3D 0, }, };;;=0D # 92 "./include/trace/events/fib6.h"=0D # 1 "./include/trace/define_trace.h" 1=0D # 93 "./include/trace/events/fib6.h" 2=0D # 154 "./include/trace/bpf_probe.h" 2=0D # 105 "./include/trace/define_trace.h" 2=0D # 93 "./include/trace/events/fib6.h" 2=0D # 75 "net/ipv6/route.c" 2=0D extern typeof(__tracepoint_fib6_table_lookup) __tracepoint_fib6_table_looku= p; extern const char __kstrtab___tracepoint_fib6_table_lookup[]; extern con= st char __kstrtabns___tracepoint_fib6_table_lookup[]; ; asm(" .section \"__= ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "__tracepoint_fib6_t= able_lookup" ": \n" " .asciz \"" "__tracepoint_fib6_table_lookup" "\" = \n" "__kstrtabns_" "__tracepoint_fib6_table_lookup" ": \n" " .asciz= \"" "" "\" \n" " .previous \n"); static const struct kernel_symb= ol __ksymtab___tracepoint_fib6_table_lookup __attribute__((section("___ksym= tab" "_gpl" "+" "__tracepoint_fib6_table_lookup"), used)) __attribute__((__= aligned__(sizeof(void *)))) =3D { (unsigned long)&__tracepoint_fib6_table_l= ookup, __kstrtab___tracepoint_fib6_table_lookup, __kstrtabns___tracepoint_f= ib6_table_lookup }; extern typeof(__traceiter_fib6_table_lookup) __traceite= r_fib6_table_lookup; extern const char __kstrtab___traceiter_fib6_table_loo= kup[]; extern const char __kstrtabns___traceiter_fib6_table_lookup[]; ; asm= (" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "__t= raceiter_fib6_table_lookup" ": \n" " .asciz \"" "__traceiter_fib6_tabl= e_lookup" "\" \n" "__kstrtabns_" "__traceiter_fib6_table_lookup" ": = \n" " .asciz \"" "" "\" \n" " .previous \n"); static const struc= t kernel_symbol __ksymtab___traceiter_fib6_table_lookup __attribute__((sect= ion("___ksymtab" "_gpl" "+" "__traceiter_fib6_table_lookup"), used)) __attr= ibute__((__aligned__(sizeof(void *)))) =3D { (unsigned long)&__traceiter_fi= b6_table_lookup, __kstrtab___traceiter_fib6_table_lookup, __kstrtabns___tra= ceiter_fib6_table_lookup }; extern typeof(__SCK__tp_func_fib6_table_lookup)= __SCK__tp_func_fib6_table_lookup; extern const char __kstrtab___SCK__tp_fu= nc_fib6_table_lookup[]; extern const char __kstrtabns___SCK__tp_func_fib6_t= able_lookup[]; ; asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \= n" "__kstrtab_" "__SCK__tp_func_fib6_table_lookup" ": \n" " .asciz \""= "__SCK__tp_func_fib6_table_lookup" "\" \n" "__kstrtabns_" "__SCK__tp_f= unc_fib6_table_lookup" ": \n" " .asciz \"" "" "\" \n" " .previous = \n"); static const struct kernel_symbol __ksymtab___SCK__tp_func_fib6_= table_lookup __attribute__((section("___ksymtab" "_gpl" "+" "__SCK__tp_func= _fib6_table_lookup"), used)) __attribute__((__aligned__(sizeof(void *)))) = =3D { (unsigned long)&__SCK__tp_func_fib6_table_lookup, __kstrtab___SCK__tp= _func_fib6_table_lookup, __kstrtabns___SCK__tp_func_fib6_table_lookup };=0D =0D =0D enum rt6_nud_state {=0D RT6_NUD_FAIL_HARD =3D -3,=0D RT6_NUD_FAIL_PROBE =3D -2,=0D RT6_NUD_FAIL_DO_RR =3D -1,=0D RT6_NUD_SUCCEED =3D 1=0D };=0D =0D static=0D struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie);=0D static unsigned int ip6_default_advmss(const struct dst_entry *dst);=0D static=0D unsigned int ip6_mtu(const struct dst_entry *dst);=0D static struct dst_entry *ip6_negative_advice(struct dst_entry *);=0D static void ip6_dst_destroy(struct dst_entry *);=0D static void ip6_dst_ifdown(struct dst_entry *,=0D struct net_device *dev, int how);=0D static int ip6_dst_gc(struct dst_ops *ops);=0D =0D static int ip6_pkt_discard(struct sk_buff *skb);=0D static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_= buff *skb);=0D static int ip6_pkt_prohibit(struct sk_buff *skb);=0D static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk= _buff *skb);=0D static void ip6_link_failure(struct sk_buff *skb);=0D static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb, u32 mtu,=0D bool confirm_neigh);=0D static void rt6_do_redirect(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb);=0D static int rt6_score_route(const struct fib6_nh *nh, u32 fib6_flags, int oi= f,=0D int strict);=0D static size_t rt6_nlmsg_size(struct fib6_info *f6i);=0D static int rt6_fill_node(struct net *net, struct sk_buff *skb,=0D struct fib6_info *rt, struct dst_entry *dst,=0D struct in6_addr *dest, struct in6_addr *src,=0D int iif, int type, u32 portid, u32 seq,=0D unsigned int flags);=0D static struct rt6_info *rt6_find_cached_rt(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr);=0D # 130 "net/ipv6/route.c"=0D struct uncached_list {=0D spinlock_t lock;=0D struct list_head head;=0D struct list_head quarantine;=0D };=0D =0D static __attribute__((section(".data..percpu" "..shared_aligned"))) __typeo= f__(struct uncached_list) rt6_uncached_list __attribute__((__aligned__((1 <= < 6))));=0D =0D void rt6_uncached_list_add(struct rt6_info *rt)=0D {=0D struct uncached_list *ul =3D ({ do { const void *__vpp_verify =3D (typeof(= (&rt6_uncached_list) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ = unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&rt6_uncached_lis= t)) *)(&rt6_uncached_list)); (typeof((typeof(*(&rt6_uncached_list)) *)(&rt6= _uncached_list))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_= current())->cpu)])))); }); });=0D =0D rt->rt6i_uncached_list =3D ul;=0D =0D spin_lock_bh(&ul->lock);=0D list_add_tail(&rt->rt6i_uncached, &ul->head);=0D spin_unlock_bh(&ul->lock);=0D }=0D =0D void rt6_uncached_list_del(struct rt6_info *rt)=0D {=0D if (!list_empty(&rt->rt6i_uncached)) {=0D struct uncached_list *ul =3D rt->rt6i_uncached_list;=0D =0D spin_lock_bh(&ul->lock);=0D list_del_init(&rt->rt6i_uncached);=0D spin_unlock_bh(&ul->lock);=0D }=0D }=0D =0D static void rt6_uncached_list_flush_dev(struct net_device *dev)=0D {=0D int cpu;=0D =0D for (((cpu)) =3D -1; ((cpu)) =3D cpumask_next(((cpu)), (((const struct cpu= mask *)&__cpu_possible_mask))), ((cpu)) < nr_cpu_ids;) {=0D struct uncached_list *ul =3D ({ do { const void *__vpp_verify =3D (typeof= ((&rt6_uncached_list) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*((&rt6_uncached_l= ist))) *)((&rt6_uncached_list))); (typeof((typeof(*((&rt6_uncached_list))) = *)((&rt6_uncached_list)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); });= =0D struct rt6_info *rt, *safe;=0D =0D if (list_empty(&ul->head))=0D continue;=0D =0D spin_lock_bh(&ul->lock);=0D for (rt =3D ({ void *__mptr =3D (void *)((&ul->head)->next); _Static_asse= rt(__builtin_types_compatible_p(typeof(*((&ul->head)->next)), typeof(((type= of(*rt) *)0)->rt6i_uncached)) || __builtin_types_compatible_p(typeof(*((&ul= ->head)->next)), typeof(void)), "pointer type mismatch in container_of()");= ((typeof(*rt) *)(__mptr - __builtin_offsetof(typeof(*rt), rt6i_uncached)))= ; }), safe =3D ({ void *__mptr =3D (void *)((rt)->rt6i_uncached.next); _Sta= tic_assert(__builtin_types_compatible_p(typeof(*((rt)->rt6i_uncached.next))= , typeof(((typeof(*(rt)) *)0)->rt6i_uncached)) || __builtin_types_compatibl= e_p(typeof(*((rt)->rt6i_uncached.next)), typeof(void)), "pointer type misma= tch in container_of()"); ((typeof(*(rt)) *)(__mptr - __builtin_offsetof(typ= eof(*(rt)), rt6i_uncached))); }); !(&rt->rt6i_uncached =3D=3D (&ul->head));= rt =3D safe, safe =3D ({ void *__mptr =3D (void *)((safe)->rt6i_uncached.n= ext); _Static_assert(__builtin_types_compatible_p(typeof(*((safe)->rt6i_unc= ached.next)), typeof(((typeof(*(safe)) *)0)->rt6i_uncached)) || __builtin_t= ypes_compatible_p(typeof(*((safe)->rt6i_uncached.next)), typeof(void)), "po= inter type mismatch in container_of()"); ((typeof(*(safe)) *)(__mptr - __bu= iltin_offsetof(typeof(*(safe)), rt6i_uncached))); })) {=0D struct inet6_dev *rt_idev =3D rt->rt6i_idev;=0D struct net_device *rt_dev =3D rt->dst.dev;=0D bool handled =3D false;=0D =0D if (rt_idev->dev =3D=3D dev) {=0D rt->rt6i_idev =3D in6_dev_get(blackhole_netdev);=0D in6_dev_put(rt_idev);=0D handled =3D true;=0D }=0D =0D if (rt_dev =3D=3D dev) {=0D rt->dst.dev =3D blackhole_netdev;=0D dev_replace_track(rt_dev, blackhole_netdev,=0D &rt->dst.dev_tracker,=0D ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D handled =3D true;=0D }=0D if (handled)=0D list_move(&rt->rt6i_uncached,=0D &ul->quarantine);=0D }=0D spin_unlock_bh(&ul->lock);=0D }=0D }=0D =0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) const void *choose_neigh_dad= dr(const struct in6_addr *p,=0D struct sk_buff *skb,=0D const void *daddr)=0D {=0D if (!ipv6_addr_any(p))=0D return (const void *) p;=0D else if (skb)=0D return &ipv6_hdr(skb)->daddr;=0D return daddr;=0D }=0D =0D struct neighbour *ip6_neigh_lookup(const struct in6_addr *gw,=0D struct net_device *dev,=0D struct sk_buff *skb,=0D const void *daddr)=0D {=0D struct neighbour *n;=0D =0D daddr =3D choose_neigh_daddr(gw, skb, daddr);=0D n =3D __ipv6_neigh_lookup(dev, daddr);=0D if (n)=0D return n;=0D =0D n =3D neigh_create(&nd_tbl, daddr, dev);=0D return IS_ERR(n) ? ((void *)0) : n;=0D }=0D =0D static struct neighbour *ip6_dst_neigh_lookup(const struct dst_entry *dst,= =0D struct sk_buff *skb,=0D const void *daddr)=0D {=0D const struct rt6_info *rt =3D ({ void *__mptr =3D (void *)(dst); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(dst)), typeof(((struct rt6_info= *)0)->dst)) || __builtin_types_compatible_p(typeof(*(dst)), typeof(void)),= "pointer type mismatch in container_of()"); ((struct rt6_info *)(__mptr - = __builtin_offsetof(struct rt6_info, dst))); });=0D =0D return ip6_neigh_lookup(rt6_nexthop(rt, &in6addr_any),=0D dst->dev, skb, daddr);=0D }=0D =0D static void ip6_confirm_neigh(const struct dst_entry *dst, const void *dadd= r)=0D {=0D struct net_device *dev =3D dst->dev;=0D struct rt6_info *rt =3D (struct rt6_info *)dst;=0D =0D daddr =3D choose_neigh_daddr(rt6_nexthop(rt, &in6addr_any), ((void *)0), d= addr);=0D if (!daddr)=0D return;=0D if (dev->flags & (IFF_NOARP | IFF_LOOPBACK))=0D return;=0D if (ipv6_addr_is_multicast((const struct in6_addr *)daddr))=0D return;=0D __ipv6_confirm_neigh(dev, daddr);=0D }=0D =0D static struct dst_ops ip6_dst_ops_template =3D {=0D .family =3D 10,=0D .gc =3D ip6_dst_gc,=0D .gc_thresh =3D 1024,=0D .check =3D ip6_dst_check,=0D .default_advmss =3D ip6_default_advmss,=0D .mtu =3D ip6_mtu,=0D .cow_metrics =3D dst_cow_metrics_generic,=0D .destroy =3D ip6_dst_destroy,=0D .ifdown =3D ip6_dst_ifdown,=0D .negative_advice =3D ip6_negative_advice,=0D .link_failure =3D ip6_link_failure,=0D .update_pmtu =3D ip6_rt_update_pmtu,=0D .redirect =3D rt6_do_redirect,=0D .local_out =3D __ip6_local_out,=0D .neigh_lookup =3D ip6_dst_neigh_lookup,=0D .confirm_neigh =3D ip6_confirm_neigh,=0D };=0D =0D static struct dst_ops ip6_dst_blackhole_ops =3D {=0D .family =3D 10,=0D .default_advmss =3D ip6_default_advmss,=0D .neigh_lookup =3D ip6_dst_neigh_lookup,=0D .check =3D ip6_dst_check,=0D .destroy =3D ip6_dst_destroy,=0D .cow_metrics =3D dst_cow_metrics_generic,=0D .update_pmtu =3D dst_blackhole_update_pmtu,=0D .redirect =3D dst_blackhole_redirect,=0D .mtu =3D dst_blackhole_mtu,=0D };=0D =0D static const u32 ip6_template_metrics[(__RTAX_MAX - 1)] =3D {=0D [RTAX_HOPLIMIT - 1] =3D 0,=0D };=0D =0D static const struct fib6_info fib6_null_entry_template =3D {=0D .fib6_flags =3D (0x0200 | 0x00200000),=0D .fib6_protocol =3D 2,=0D .fib6_metric =3D ~(u32)0,=0D .fib6_ref =3D { .refs =3D { (1) }, },=0D .fib6_type =3D RTN_UNREACHABLE,=0D .fib6_metrics =3D (struct dst_metrics *)&dst_default_metrics,=0D };=0D =0D static const struct rt6_info ip6_null_entry_template =3D {=0D .dst =3D {=0D .__refcnt =3D { (1) },=0D .__use =3D 1,=0D .obsolete =3D -1,=0D .error =3D -101,=0D .input =3D ip6_pkt_discard,=0D .output =3D ip6_pkt_discard_out,=0D },=0D .rt6i_flags =3D (0x0200 | 0x00200000),=0D };=0D # 334 "net/ipv6/route.c"=0D static void rt6_info_init(struct rt6_info *rt)=0D {=0D ({ u8 *__ptr =3D (u8 *)(rt); typeof(0) __val =3D (0); memset(__ptr + (__bu= iltin_offsetof(typeof(*(rt)), dst) + sizeof((((typeof(*(rt)) *)0)->dst))), = __val, sizeof(*(rt)) - (__builtin_offsetof(typeof(*(rt)), dst) + sizeof((((= typeof(*(rt)) *)0)->dst)))); });=0D INIT_LIST_HEAD(&rt->rt6i_uncached);=0D }=0D =0D =0D struct rt6_info *ip6_dst_alloc(struct net *net, struct net_device *dev,=0D int flags)=0D {=0D struct rt6_info *rt =3D dst_alloc(&net->ipv6.ip6_dst_ops, dev,=0D 1, -1, flags);=0D =0D if (rt) {=0D rt6_info_init(rt);=0D atomic_inc(&net->ipv6.rt6_stats->fib_rt_alloc);=0D }=0D =0D return rt;=0D }=0D extern typeof(ip6_dst_alloc) ip6_dst_alloc; extern const char __kstrtab_ip6= _dst_alloc[]; extern const char __kstrtabns_ip6_dst_alloc[]; ; asm(" .secti= on \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_dst_allo= c" ": \n" " .asciz \"" "ip6_dst_alloc" "\" \n" "__kstrtabns_" "ip6= _dst_alloc" ": \n" " .asciz \"" "" "\" \n" " .previous \n"); = static const struct kernel_symbol __ksymtab_ip6_dst_alloc __attribute__((se= ction("___ksymtab" "" "+" "ip6_dst_alloc"), used)) __attribute__((__aligned= __(sizeof(void *)))) =3D { (unsigned long)&ip6_dst_alloc, __kstrtab_ip6_dst= _alloc, __kstrtabns_ip6_dst_alloc };=0D =0D static void ip6_dst_destroy(struct dst_entry *dst)=0D {=0D struct rt6_info *rt =3D (struct rt6_info *)dst;=0D struct fib6_info *from;=0D struct inet6_dev *idev;=0D =0D ip_dst_metrics_put(dst);=0D rt6_uncached_list_del(rt);=0D =0D idev =3D rt->rt6i_idev;=0D if (idev) {=0D rt->rt6i_idev =3D ((void *)0);=0D in6_dev_put(idev);=0D }=0D =0D from =3D ({ typeof(( struct fib6_info **)&rt->from) __ai_ptr =3D (( struct= fib6_info **)&rt->from); do { } while (0); instrument_atomic_write(__ai_pt= r, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _x_ =3D (((void *)0)); (_= _typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D ((__ai_ptr)); _= _typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_ptr))) __ret; switch (si= zeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ ( " amoswap.w.aqrl %0, %2= , %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; c= ase 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2, %1\n" : "=3Dr" (__re= t), "+A" (*__ptr) : "r" (__new) : "memory"); break; default: do { __attribu= te__((__noreturn__)) extern void __compiletime_assert_644(void) ; if (!(!(1= ))) __compiletime_assert_644(); } while (0); } __ret; }); }); });=0D fib6_info_release(from);=0D }=0D =0D static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,=0D int how)=0D {=0D struct rt6_info *rt =3D (struct rt6_info *)dst;=0D struct inet6_dev *idev =3D rt->rt6i_idev;=0D =0D if (idev && idev->dev !=3D blackhole_netdev) {=0D struct inet6_dev *blackhole_idev =3D in6_dev_get(blackhole_netdev);=0D =0D if (blackhole_idev) {=0D rt->rt6i_idev =3D blackhole_idev;=0D in6_dev_put(idev);=0D }=0D }=0D }=0D =0D static bool __rt6_check_expired(const struct rt6_info *rt)=0D {=0D if (rt->rt6i_flags & 0x00400000)=0D return (({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dum= my =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(rt->dst.exp= ires) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long)((rt->ds= t.expires) - (jiffies)) < 0));=0D else=0D return false;=0D }=0D =0D static bool rt6_check_expired(const struct rt6_info *rt)=0D {=0D struct fib6_info *from;=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu645 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _646(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_646(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu645)); });=0D =0D if (rt->rt6i_flags & 0x00400000) {=0D if ((({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(rt->dst.expire= s) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long)((rt->dst.e= xpires) - (jiffies)) < 0)))=0D return true;=0D } else if (from) {=0D return rt->dst.obsolete !=3D -1 ||=0D fib6_check_expired(from);=0D }=0D return false;=0D }=0D =0D void fib6_select_path(const struct net *net, struct fib6_result *res,=0D struct flowi6 *fl6, int oif, bool have_oif_match,=0D const struct sk_buff *skb, int strict)=0D {=0D struct fib6_info *sibling, *next_sibling;=0D struct fib6_info *match =3D res->f6i;=0D =0D if (!match->nh && (!match->fib6_nsiblings || have_oif_match))=0D goto out;=0D =0D if (match->nh && have_oif_match && res->nh)=0D return;=0D =0D =0D =0D =0D if (!fl6->mp_hash &&=0D (!match->nh || nexthop_is_multipath(match->nh)))=0D fl6->mp_hash =3D rt6_multipath_hash(net, fl6, skb, ((void *)0));=0D =0D if (__builtin_expect(!!(match->nh), 0)) {=0D nexthop_path_fib6_result(res, fl6->mp_hash);=0D return;=0D }=0D =0D if (fl6->mp_hash <=3D atomic_read(&match->fib6_nh->nh_common.nhc_upper_bou= nd))=0D goto out;=0D =0D for (sibling =3D ({ void *__mptr =3D (void *)((&match->fib6_siblings)->nex= t); _Static_assert(__builtin_types_compatible_p(typeof(*((&match->fib6_sibl= ings)->next)), typeof(((typeof(*sibling) *)0)->fib6_siblings)) || __builtin= _types_compatible_p(typeof(*((&match->fib6_siblings)->next)), typeof(void))= , "pointer type mismatch in container_of()"); ((typeof(*sibling) *)(__mptr = - __builtin_offsetof(typeof(*sibling), fib6_siblings))); }), next_sibling = =3D ({ void *__mptr =3D (void *)((sibling)->fib6_siblings.next); _Static_as= sert(__builtin_types_compatible_p(typeof(*((sibling)->fib6_siblings.next)),= typeof(((typeof(*(sibling)) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((sibling)->fib6_siblings.next)), typeof(void)), "pointer t= ype mismatch in container_of()"); ((typeof(*(sibling)) *)(__mptr - __builti= n_offsetof(typeof(*(sibling)), fib6_siblings))); }); !(&sibling->fib6_sibli= ngs =3D=3D (&match->fib6_siblings)); sibling =3D next_sibling, next_sibling= =3D ({ void *__mptr =3D (void *)((next_sibling)->fib6_siblings.next); _Sta= tic_assert(__builtin_types_compatible_p(typeof(*((next_sibling)->fib6_sibli= ngs.next)), typeof(((typeof(*(next_sibling)) *)0)->fib6_siblings)) || __bui= ltin_types_compatible_p(typeof(*((next_sibling)->fib6_siblings.next)), type= of(void)), "pointer type mismatch in container_of()"); ((typeof(*(next_sibl= ing)) *)(__mptr - __builtin_offsetof(typeof(*(next_sibling)), fib6_siblings= ))); })) {=0D =0D const struct fib6_nh *nh =3D sibling->fib6_nh;=0D int nh_upper_bound;=0D =0D nh_upper_bound =3D atomic_read(&nh->nh_common.nhc_upper_bound);=0D if (fl6->mp_hash > nh_upper_bound)=0D continue;=0D if (rt6_score_route(nh, sibling->fib6_flags, oif, strict) < 0)=0D break;=0D match =3D sibling;=0D break;=0D }=0D =0D out:=0D res->f6i =3D match;=0D res->nh =3D match->fib6_nh;=0D }=0D =0D =0D =0D =0D =0D static bool __rt6_device_match(struct net *net, const struct fib6_nh *nh,=0D const struct in6_addr *saddr, int oif, int flags)=0D {=0D const struct net_device *dev;=0D =0D if (nh->nh_common.nhc_flags & 1)=0D return false;=0D =0D dev =3D nh->nh_common.nhc_dev;=0D if (oif) {=0D if (dev->ifindex =3D=3D oif)=0D return true;=0D } else {=0D if (ipv6_chk_addr(net, saddr, dev,=0D flags & 0x00000001))=0D return true;=0D }=0D =0D return false;=0D }=0D =0D struct fib6_nh_dm_arg {=0D struct net *net;=0D const struct in6_addr *saddr;=0D int oif;=0D int flags;=0D struct fib6_nh *nh;=0D };=0D =0D static int __rt6_nh_dev_match(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_dm_arg *arg =3D _arg;=0D =0D arg->nh =3D nh;=0D return __rt6_device_match(arg->net, nh, arg->saddr, arg->oif,=0D arg->flags);=0D }=0D =0D =0D static struct fib6_nh *rt6_nh_dev_match(struct net *net, struct nexthop *nh= ,=0D struct fib6_result *res,=0D const struct in6_addr *saddr,=0D int oif, int flags)=0D {=0D struct fib6_nh_dm_arg arg =3D {=0D .net =3D net,=0D .saddr =3D saddr,=0D .oif =3D oif,=0D .flags =3D flags,=0D };=0D =0D if (nexthop_is_blackhole(nh))=0D return ((void *)0);=0D =0D if (nexthop_for_each_fib6_nh(nh, __rt6_nh_dev_match, &arg))=0D return arg.nh;=0D =0D return ((void *)0);=0D }=0D =0D static void rt6_device_match(struct net *net, struct fib6_result *res,=0D const struct in6_addr *saddr, int oif, int flags)=0D {=0D struct fib6_info *f6i =3D res->f6i;=0D struct fib6_info *spf6i;=0D struct fib6_nh *nh;=0D =0D if (!oif && ipv6_addr_any(saddr)) {=0D if (__builtin_expect(!!(f6i->nh), 0)) {=0D nh =3D nexthop_fib6_nh(f6i->nh);=0D if (nexthop_is_blackhole(f6i->nh))=0D goto out_blackhole;=0D } else {=0D nh =3D f6i->fib6_nh;=0D }=0D if (!(nh->nh_common.nhc_flags & 1))=0D goto out;=0D }=0D =0D for (spf6i =3D f6i; spf6i; spf6i =3D ({ typeof(*(spf6i->fib6_next)) *__UNI= QUE_ID_rcu647 =3D (typeof(*(spf6i->fib6_next)) *)({ do { __attribute__((__n= oreturn__)) extern void __compiletime_assert_648(void) ; if (!((sizeof((spf= 6i->fib6_next)) =3D=3D sizeof(char) || sizeof((spf6i->fib6_next)) =3D=3D si= zeof(short) || sizeof((spf6i->fib6_next)) =3D=3D sizeof(int) || sizeof((spf= 6i->fib6_next)) =3D=3D sizeof(long)) || sizeof((spf6i->fib6_next)) =3D=3D s= izeof(long long))) __compiletime_assert_648(); } while (0); (*(const volati= le typeof( _Generic(((spf6i->fib6_next)), char: (char)0, unsigned char: (un= signed char)0, signed char: (signed char)0, unsigned short: (unsigned short= )0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed in= t: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lon= g)0, unsigned long long: (unsigned long long)0, signed long long: (signed l= ong long)0, default: ((spf6i->fib6_next)))) *)&((spf6i->fib6_next))); }); d= o { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(spf6i->fi= b6_next)) *)(__UNIQUE_ID_rcu647)); })) {=0D bool matched =3D false;=0D =0D if (__builtin_expect(!!(spf6i->nh), 0)) {=0D nh =3D rt6_nh_dev_match(net, spf6i->nh, res, saddr,=0D oif, flags);=0D if (nh)=0D matched =3D true;=0D } else {=0D nh =3D spf6i->fib6_nh;=0D if (__rt6_device_match(net, nh, saddr, oif, flags))=0D matched =3D true;=0D }=0D if (matched) {=0D res->f6i =3D spf6i;=0D goto out;=0D }=0D }=0D =0D if (oif && flags & 0x00000001) {=0D res->f6i =3D net->ipv6.fib6_null_entry;=0D nh =3D res->f6i->fib6_nh;=0D goto out;=0D }=0D =0D if (__builtin_expect(!!(f6i->nh), 0)) {=0D nh =3D nexthop_fib6_nh(f6i->nh);=0D if (nexthop_is_blackhole(f6i->nh))=0D goto out_blackhole;=0D } else {=0D nh =3D f6i->fib6_nh;=0D }=0D =0D if (nh->nh_common.nhc_flags & 1) {=0D res->f6i =3D net->ipv6.fib6_null_entry;=0D nh =3D res->f6i->fib6_nh;=0D }=0D out:=0D res->nh =3D nh;=0D res->fib6_type =3D res->f6i->fib6_type;=0D res->fib6_flags =3D res->f6i->fib6_flags;=0D return;=0D =0D out_blackhole:=0D res->fib6_flags |=3D 0x0200;=0D res->fib6_type =3D RTN_BLACKHOLE;=0D res->nh =3D nh;=0D }=0D # 673 "net/ipv6/route.c"=0D static inline __attribute__((__gnu_inline__)) __attribute__((__unused__)) _= _attribute__((patchable_function_entry(0, 0))) void rt6_probe(struct fib6_n= h *fib6_nh)=0D {=0D }=0D =0D =0D =0D =0D =0D static enum rt6_nud_state rt6_check_neigh(const struct fib6_nh *fib6_nh)=0D {=0D enum rt6_nud_state ret =3D RT6_NUD_FAIL_HARD;=0D struct neighbour *neigh;=0D =0D rcu_read_lock_bh();=0D neigh =3D __ipv6_neigh_lookup_noref(fib6_nh->nh_common.nhc_dev,=0D &fib6_nh->nh_common.nhc_gw.ipv6);=0D if (neigh) {=0D _raw_read_lock(&neigh->lock);=0D if (neigh->nud_state & (0x80|0x40|0x02|0x10|0x04|0x08))=0D ret =3D RT6_NUD_SUCCEED;=0D =0D =0D =0D =0D =0D =0D _raw_read_unlock(&neigh->lock);=0D } else {=0D ret =3D 0 ?=0D RT6_NUD_SUCCEED : RT6_NUD_FAIL_DO_RR;=0D }=0D rcu_read_unlock_bh();=0D =0D return ret;=0D }=0D =0D static int rt6_score_route(const struct fib6_nh *nh, u32 fib6_flags, int oi= f,=0D int strict)=0D {=0D int m =3D 0;=0D =0D if (!oif || nh->nh_common.nhc_dev->ifindex =3D=3D oif)=0D m =3D 2;=0D =0D if (!m && (strict & 0x00000001))=0D return RT6_NUD_FAIL_HARD;=0D =0D =0D =0D if ((strict & 0x00000002) &&=0D !(fib6_flags & 0x00200000) && nh->nh_common.nhc_gw_family) {=0D int n =3D rt6_check_neigh(nh);=0D if (n < 0)=0D return n;=0D }=0D return m;=0D }=0D =0D static bool find_match(struct fib6_nh *nh, u32 fib6_flags,=0D int oif, int strict, int *mpri, bool *do_rr)=0D {=0D bool match_do_rr =3D false;=0D bool rc =3D false;=0D int m;=0D =0D if (nh->nh_common.nhc_flags & 1)=0D goto out;=0D =0D if (ip6_ignore_linkdown(nh->nh_common.nhc_dev) &&=0D nh->nh_common.nhc_flags & 16 &&=0D !(strict & 0x00000040))=0D goto out;=0D =0D m =3D rt6_score_route(nh, fib6_flags, oif, strict);=0D if (m =3D=3D RT6_NUD_FAIL_DO_RR) {=0D match_do_rr =3D true;=0D m =3D 0;=0D } else if (m =3D=3D RT6_NUD_FAIL_HARD) {=0D goto out;=0D }=0D =0D if (strict & 0x00000002)=0D rt6_probe(nh);=0D =0D =0D if (m > *mpri) {=0D *do_rr =3D match_do_rr;=0D *mpri =3D m;=0D rc =3D true;=0D }=0D out:=0D return rc;=0D }=0D =0D struct fib6_nh_frl_arg {=0D u32 flags;=0D int oif;=0D int strict;=0D int *mpri;=0D bool *do_rr;=0D struct fib6_nh *nh;=0D };=0D =0D static int rt6_nh_find_match(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_frl_arg *arg =3D _arg;=0D =0D arg->nh =3D nh;=0D return find_match(nh, arg->flags, arg->oif, arg->strict,=0D arg->mpri, arg->do_rr);=0D }=0D =0D static void __find_rr_leaf(struct fib6_info *f6i_start,=0D struct fib6_info *nomatch, u32 metric,=0D struct fib6_result *res, struct fib6_info **cont,=0D int oif, int strict, bool *do_rr, int *mpri)=0D {=0D struct fib6_info *f6i;=0D =0D for (f6i =3D f6i_start;=0D f6i && f6i !=3D nomatch;=0D f6i =3D ({ typeof(*(f6i->fib6_next)) *__UNIQUE_ID_rcu649 =3D (typeof(= *(f6i->fib6_next)) *)({ do { __attribute__((__noreturn__)) extern void __co= mpiletime_assert_650(void) ; if (!((sizeof((f6i->fib6_next)) =3D=3D sizeof(= char) || sizeof((f6i->fib6_next)) =3D=3D sizeof(short) || sizeof((f6i->fib6= _next)) =3D=3D sizeof(int) || sizeof((f6i->fib6_next)) =3D=3D sizeof(long))= || sizeof((f6i->fib6_next)) =3D=3D sizeof(long long))) __compiletime_asser= t_650(); } while (0); (*(const volatile typeof( _Generic(((f6i->fib6_next))= , char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char= )0, unsigned short: (unsigned short)0, signed short: (signed short)0, unsig= ned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsign= ed long)0, signed long: (signed long)0, unsigned long long: (unsigned long = long)0, signed long long: (signed long long)0, default: ((f6i->fib6_next)))= ) *)&((f6i->fib6_next))); }); do { } while (0 && (!((0) || rcu_read_lock_he= ld()))); ; ((typeof(*(f6i->fib6_next)) *)(__UNIQUE_ID_rcu649)); })) {=0D bool matched =3D false;=0D struct fib6_nh *nh;=0D =0D if (cont && f6i->fib6_metric !=3D metric) {=0D *cont =3D f6i;=0D return;=0D }=0D =0D if (fib6_check_expired(f6i))=0D continue;=0D =0D if (__builtin_expect(!!(f6i->nh), 0)) {=0D struct fib6_nh_frl_arg arg =3D {=0D .flags =3D f6i->fib6_flags,=0D .oif =3D oif,=0D .strict =3D strict,=0D .mpri =3D mpri,=0D .do_rr =3D do_rr=0D };=0D =0D if (nexthop_is_blackhole(f6i->nh)) {=0D res->fib6_flags =3D 0x0200;=0D res->fib6_type =3D RTN_BLACKHOLE;=0D res->f6i =3D f6i;=0D res->nh =3D nexthop_fib6_nh(f6i->nh);=0D return;=0D }=0D if (nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_find_match,=0D &arg)) {=0D matched =3D true;=0D nh =3D arg.nh;=0D }=0D } else {=0D nh =3D f6i->fib6_nh;=0D if (find_match(nh, f6i->fib6_flags, oif, strict,=0D mpri, do_rr))=0D matched =3D true;=0D }=0D if (matched) {=0D res->f6i =3D f6i;=0D res->nh =3D nh;=0D res->fib6_flags =3D f6i->fib6_flags;=0D res->fib6_type =3D f6i->fib6_type;=0D }=0D }=0D }=0D =0D static void find_rr_leaf(struct fib6_node *fn, struct fib6_info *leaf,=0D struct fib6_info *rr_head, int oif, int strict,=0D bool *do_rr, struct fib6_result *res)=0D {=0D u32 metric =3D rr_head->fib6_metric;=0D struct fib6_info *cont =3D ((void *)0);=0D int mpri =3D -1;=0D =0D __find_rr_leaf(rr_head, ((void *)0), metric, res, &cont,=0D oif, strict, do_rr, &mpri);=0D =0D __find_rr_leaf(leaf, rr_head, metric, res, &cont,=0D oif, strict, do_rr, &mpri);=0D =0D if (res->f6i || !cont)=0D return;=0D =0D __find_rr_leaf(cont, ((void *)0), metric, res, ((void *)0),=0D oif, strict, do_rr, &mpri);=0D }=0D =0D static void rt6_select(struct net *net, struct fib6_node *fn, int oif,=0D struct fib6_result *res, int strict)=0D {=0D struct fib6_info *leaf =3D ({ typeof(*(fn->leaf)) *__UNIQUE_ID_rcu651 =3D = (typeof(*(fn->leaf)) *)({ do { __attribute__((__noreturn__)) extern void __= compiletime_assert_652(void) ; if (!((sizeof((fn->leaf)) =3D=3D sizeof(char= ) || sizeof((fn->leaf)) =3D=3D sizeof(short) || sizeof((fn->leaf)) =3D=3D s= izeof(int) || sizeof((fn->leaf)) =3D=3D sizeof(long)) || sizeof((fn->leaf))= =3D=3D sizeof(long long))) __compiletime_assert_652(); } while (0); (*(con= st volatile typeof( _Generic(((fn->leaf)), char: (char)0, unsigned char: (u= nsigned char)0, signed char: (signed char)0, unsigned short: (unsigned shor= t)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed i= nt: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lo= ng)0, unsigned long long: (unsigned long long)0, signed long long: (signed = long long)0, default: ((fn->leaf)))) *)&((fn->leaf))); }); do { } while (0 = && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(fn->leaf)) *)(__UNIQUE_I= D_rcu651)); });=0D struct fib6_info *rt0;=0D bool do_rr =3D false;=0D int key_plen;=0D =0D =0D res->f6i =3D ((void *)0);=0D =0D if (!leaf || leaf =3D=3D net->ipv6.fib6_null_entry)=0D goto out;=0D =0D rt0 =3D ({ typeof(*(fn->rr_ptr)) *__UNIQUE_ID_rcu653 =3D (typeof(*(fn->rr_= ptr)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_654(void) ; if (!((sizeof((fn->rr_ptr)) =3D=3D sizeof(char) || sizeof((= fn->rr_ptr)) =3D=3D sizeof(short) || sizeof((fn->rr_ptr)) =3D=3D sizeof(int= ) || sizeof((fn->rr_ptr)) =3D=3D sizeof(long)) || sizeof((fn->rr_ptr)) =3D= =3D sizeof(long long))) __compiletime_assert_654(); } while (0); (*(const v= olatile typeof( _Generic(((fn->rr_ptr)), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: ((fn->rr_ptr)))) *)&((fn->rr_ptr))); }); do { } while (= 0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(fn->rr_ptr)) *)(__UNIQ= UE_ID_rcu653)); });=0D if (!rt0)=0D rt0 =3D leaf;=0D =0D =0D =0D =0D =0D =0D key_plen =3D rt0->fib6_dst.plen;=0D =0D =0D =0D =0D if (fn->fn_bit !=3D key_plen)=0D goto out;=0D =0D find_rr_leaf(fn, leaf, rt0, oif, strict, &do_rr, res);=0D if (do_rr) {=0D struct fib6_info *next =3D ({ typeof(*(rt0->fib6_next)) *__UNIQUE_ID_rcu6= 55 =3D (typeof(*(rt0->fib6_next)) *)({ do { __attribute__((__noreturn__)) e= xtern void __compiletime_assert_656(void) ; if (!((sizeof((rt0->fib6_next))= =3D=3D sizeof(char) || sizeof((rt0->fib6_next)) =3D=3D sizeof(short) || si= zeof((rt0->fib6_next)) =3D=3D sizeof(int) || sizeof((rt0->fib6_next)) =3D= =3D sizeof(long)) || sizeof((rt0->fib6_next)) =3D=3D sizeof(long long))) __= compiletime_assert_656(); } while (0); (*(const volatile typeof( _Generic((= (rt0->fib6_next)), char: (char)0, unsigned char: (unsigned char)0, signed c= har: (signed char)0, unsigned short: (unsigned short)0, signed short: (sign= ed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsig= ned long: (unsigned long)0, signed long: (signed long)0, unsigned long long= : (unsigned long long)0, signed long long: (signed long long)0, default: ((= rt0->fib6_next)))) *)&((rt0->fib6_next))); }); do { } while (0 && (!((0) ||= rcu_read_lock_held()))); ; ((typeof(*(rt0->fib6_next)) *)(__UNIQUE_ID_rcu6= 55)); });=0D =0D =0D if (!next || next->fib6_metric !=3D rt0->fib6_metric)=0D next =3D leaf;=0D =0D if (next !=3D rt0) {=0D spin_lock_bh(&leaf->fib6_table->tb6_lock);=0D =0D if (next->fib6_node)=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(next); ; if (__builtin_constan= t_p(next) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribu= te__((__noreturn__)) extern void __compiletime_assert_657(void) ; if (!((si= zeof((fn->rr_ptr)) =3D=3D sizeof(char) || sizeof((fn->rr_ptr)) =3D=3D sizeo= f(short) || sizeof((fn->rr_ptr)) =3D=3D sizeof(int) || sizeof((fn->rr_ptr))= =3D=3D sizeof(long)) || sizeof((fn->rr_ptr)) =3D=3D sizeof(long long))) __= compiletime_assert_657(); } while (0); do { *(volatile typeof((fn->rr_ptr))= *)&((fn->rr_ptr)) =3D ((typeof(fn->rr_ptr))(_r_a_p__v)); } while (0); } wh= ile (0); else do { do { } while (0); do { do { __attribute__((__noreturn__)= ) extern void __compiletime_assert_658(void) ; if (!((sizeof(*&fn->rr_ptr) = =3D=3D sizeof(char) || sizeof(*&fn->rr_ptr) =3D=3D sizeof(short) || sizeof(= *&fn->rr_ptr) =3D=3D sizeof(int) || sizeof(*&fn->rr_ptr) =3D=3D sizeof(long= )))) __compiletime_assert_658(); } while (0); __asm__ __volatile__ ("fence = " "rw" "," "w" : : : "memory"); do { do { __attribute__((__noreturn__)) ext= ern void __compiletime_assert_659(void) ; if (!((sizeof(*&fn->rr_ptr) =3D= =3D sizeof(char) || sizeof(*&fn->rr_ptr) =3D=3D sizeof(short) || sizeof(*&f= n->rr_ptr) =3D=3D sizeof(int) || sizeof(*&fn->rr_ptr) =3D=3D sizeof(long)) = || sizeof(*&fn->rr_ptr) =3D=3D sizeof(long long))) __compiletime_assert_659= (); } while (0); do { *(volatile typeof(*&fn->rr_ptr) *)&(*&fn->rr_ptr) =3D= ((typeof(*((typeof(fn->rr_ptr))_r_a_p__v)) *)((typeof(fn->rr_ptr))_r_a_p__= v)); } while (0); } while (0); } while (0); } while (0); } while (0);=0D spin_unlock_bh(&leaf->fib6_table->tb6_lock);=0D }=0D }=0D =0D out:=0D if (!res->f6i) {=0D res->f6i =3D net->ipv6.fib6_null_entry;=0D res->nh =3D res->f6i->fib6_nh;=0D res->fib6_flags =3D res->f6i->fib6_flags;=0D res->fib6_type =3D res->f6i->fib6_type;=0D }=0D }=0D =0D static bool rt6_is_gw_or_nonexthop(const struct fib6_result *res)=0D {=0D return (res->f6i->fib6_flags & 0x00200000) ||=0D res->nh->nh_common.nhc_gw_family;=0D }=0D # 1007 "net/ipv6/route.c"=0D static struct net_device *ip6_rt_get_dev_rcu(const struct fib6_result *res)= =0D {=0D struct net_device *dev =3D res->nh->nh_common.nhc_dev;=0D =0D if (res->fib6_flags & (0x80000000 | 0x00100000)) {=0D =0D =0D =0D =0D if (netif_is_l3_slave(dev) &&=0D !rt6_need_strict(&res->f6i->fib6_dst.addr))=0D dev =3D l3mdev_master_dev_rcu(dev);=0D else if (!netif_is_l3_master(dev))=0D dev =3D dev_net(dev)->loopback_dev;=0D =0D =0D =0D }=0D =0D return dev;=0D }=0D =0D static const int fib6_prop[(__RTN_MAX - 1) + 1] =3D {=0D [RTN_UNSPEC] =3D 0,=0D [RTN_UNICAST] =3D 0,=0D [RTN_LOCAL] =3D 0,=0D [RTN_BROADCAST] =3D 0,=0D [RTN_ANYCAST] =3D 0,=0D [RTN_MULTICAST] =3D 0,=0D [RTN_BLACKHOLE] =3D -22,=0D [RTN_UNREACHABLE] =3D -113,=0D [RTN_PROHIBIT] =3D -13,=0D [RTN_THROW] =3D -11,=0D [RTN_NAT] =3D -22,=0D [RTN_XRESOLVE] =3D -22,=0D };=0D =0D static int ip6_rt_type_to_error(u8 fib6_type)=0D {=0D return fib6_prop[fib6_type];=0D }=0D =0D static unsigned short fib6_info_dst_flags(struct fib6_info *rt)=0D {=0D unsigned short flags =3D 0;=0D =0D if (rt->dst_nocount)=0D flags |=3D 0x0008;=0D if (rt->dst_nopolicy)=0D flags |=3D 0x0004;=0D =0D return flags;=0D }=0D =0D static void ip6_rt_init_dst_reject(struct rt6_info *rt, u8 fib6_type)=0D {=0D rt->dst.error =3D ip6_rt_type_to_error(fib6_type);=0D =0D switch (fib6_type) {=0D case RTN_BLACKHOLE:=0D rt->dst.output =3D dst_discard_out;=0D rt->dst.input =3D dst_discard;=0D break;=0D case RTN_PROHIBIT:=0D rt->dst.output =3D ip6_pkt_prohibit_out;=0D rt->dst.input =3D ip6_pkt_prohibit;=0D break;=0D case RTN_THROW:=0D case RTN_UNREACHABLE:=0D default:=0D rt->dst.output =3D ip6_pkt_discard_out;=0D rt->dst.input =3D ip6_pkt_discard;=0D break;=0D }=0D }=0D =0D static void ip6_rt_init_dst(struct rt6_info *rt, const struct fib6_result *= res)=0D {=0D struct fib6_info *f6i =3D res->f6i;=0D =0D if (res->fib6_flags & 0x0200) {=0D ip6_rt_init_dst_reject(rt, res->fib6_type);=0D return;=0D }=0D =0D rt->dst.error =3D 0;=0D rt->dst.output =3D ip6_output;=0D =0D if (res->fib6_type =3D=3D RTN_LOCAL || res->fib6_type =3D=3D RTN_ANYCAST) = {=0D rt->dst.input =3D ip6_input;=0D } else if (ipv6_addr_type(&f6i->fib6_dst.addr) & 0x0002U) {=0D rt->dst.input =3D ip6_mc_input;=0D } else {=0D rt->dst.input =3D ip6_forward;=0D }=0D =0D if (res->nh->nh_common.nhc_lwtstate) {=0D rt->dst.lwtstate =3D lwtstate_get(res->nh->nh_common.nhc_lwtstate);=0D lwtunnel_set_redirect(&rt->dst);=0D }=0D =0D rt->dst.lastuse =3D jiffies;=0D }=0D =0D =0D static void rt6_set_from(struct rt6_info *rt, struct fib6_info *from)=0D {=0D rt->rt6i_flags &=3D ~0x00400000;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(from); ; if (__builtin_constant_p= (from) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attribute_= _((__noreturn__)) extern void __compiletime_assert_660(void) ; if (!((sizeo= f((rt->from)) =3D=3D sizeof(char) || sizeof((rt->from)) =3D=3D sizeof(short= ) || sizeof((rt->from)) =3D=3D sizeof(int) || sizeof((rt->from)) =3D=3D siz= eof(long)) || sizeof((rt->from)) =3D=3D sizeof(long long))) __compiletime_a= ssert_660(); } while (0); do { *(volatile typeof((rt->from)) *)&((rt->from)= ) =3D ((typeof(rt->from))(_r_a_p__v)); } while (0); } while (0); else do { = do { } while (0); do { do { __attribute__((__noreturn__)) extern void __com= piletime_assert_661(void) ; if (!((sizeof(*&rt->from) =3D=3D sizeof(char) |= | sizeof(*&rt->from) =3D=3D sizeof(short) || sizeof(*&rt->from) =3D=3D size= of(int) || sizeof(*&rt->from) =3D=3D sizeof(long)))) __compiletime_assert_6= 61(); } while (0); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memor= y"); do { do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_662(void) ; if (!((sizeof(*&rt->from) =3D=3D sizeof(char) || sizeof(*&rt= ->from) =3D=3D sizeof(short) || sizeof(*&rt->from) =3D=3D sizeof(int) || si= zeof(*&rt->from) =3D=3D sizeof(long)) || sizeof(*&rt->from) =3D=3D sizeof(l= ong long))) __compiletime_assert_662(); } while (0); do { *(volatile typeof= (*&rt->from) *)&(*&rt->from) =3D ((typeof(*((typeof(rt->from))_r_a_p__v)) *= )((typeof(rt->from))_r_a_p__v)); } while (0); } while (0); } while (0); } w= hile (0); } while (0);=0D ip_dst_init_metrics(&rt->dst, from->fib6_metrics);=0D }=0D =0D =0D static void ip6_rt_copy_init(struct rt6_info *rt, const struct fib6_result = *res)=0D {=0D const struct fib6_nh *nh =3D res->nh;=0D const struct net_device *dev =3D nh->nh_common.nhc_dev;=0D struct fib6_info *f6i =3D res->f6i;=0D =0D ip6_rt_init_dst(rt, res);=0D =0D rt->rt6i_dst =3D f6i->fib6_dst;=0D rt->rt6i_idev =3D dev ? in6_dev_get(dev) : ((void *)0);=0D rt->rt6i_flags =3D res->fib6_flags;=0D if (nh->nh_common.nhc_gw_family) {=0D rt->rt6i_gateway =3D nh->nh_common.nhc_gw.ipv6;=0D rt->rt6i_flags |=3D 0x0002;=0D }=0D rt6_set_from(rt, f6i);=0D =0D =0D =0D }=0D =0D static struct fib6_node* fib6_backtrack(struct fib6_node *fn,=0D struct in6_addr *saddr)=0D {=0D struct fib6_node *pn, *sn;=0D while (1) {=0D if (fn->fn_flags & 0x0001)=0D return ((void *)0);=0D pn =3D ({ typeof(*(fn->parent)) *__UNIQUE_ID_rcu663 =3D (typeof(*(fn->par= ent)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_664(void) ; if (!((sizeof((fn->parent)) =3D=3D sizeof(char) || sizeof((= fn->parent)) =3D=3D sizeof(short) || sizeof((fn->parent)) =3D=3D sizeof(int= ) || sizeof((fn->parent)) =3D=3D sizeof(long)) || sizeof((fn->parent)) =3D= =3D sizeof(long long))) __compiletime_assert_664(); } while (0); (*(const v= olatile typeof( _Generic(((fn->parent)), char: (char)0, unsigned char: (uns= igned char)0, signed char: (signed char)0, unsigned short: (unsigned short)= 0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed int= : (signed int)0, unsigned long: (unsigned long)0, signed long: (signed long= )0, unsigned long long: (unsigned long long)0, signed long long: (signed lo= ng long)0, default: ((fn->parent)))) *)&((fn->parent))); }); do { } while (= 0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(fn->parent)) *)(__UNIQ= UE_ID_rcu663)); });=0D sn =3D ((void *)0);=0D if (sn && sn !=3D fn)=0D fn =3D fib6_node_lookup(sn, ((void *)0), saddr);=0D else=0D fn =3D pn;=0D if (fn->fn_flags & 0x0004)=0D return fn;=0D }=0D }=0D =0D static bool ip6_hold_safe(struct net *net, struct rt6_info **prt)=0D {=0D struct rt6_info *rt =3D *prt;=0D =0D if (dst_hold_safe(&rt->dst))=0D return true;=0D if (net) {=0D rt =3D net->ipv6.ip6_null_entry;=0D dst_hold(&rt->dst);=0D } else {=0D rt =3D ((void *)0);=0D }=0D *prt =3D rt;=0D return false;=0D }=0D =0D =0D static struct rt6_info *ip6_create_rt_rcu(const struct fib6_result *res)=0D {=0D struct net_device *dev =3D res->nh->nh_common.nhc_dev;=0D struct fib6_info *f6i =3D res->f6i;=0D unsigned short flags;=0D struct rt6_info *nrt;=0D =0D if (!fib6_info_hold_safe(f6i))=0D goto fallback;=0D =0D flags =3D fib6_info_dst_flags(f6i);=0D nrt =3D ip6_dst_alloc(dev_net(dev), dev, flags);=0D if (!nrt) {=0D fib6_info_release(f6i);=0D goto fallback;=0D }=0D =0D ip6_rt_copy_init(nrt, res);=0D return nrt;=0D =0D fallback:=0D nrt =3D dev_net(dev)->ipv6.ip6_null_entry;=0D dst_hold(&nrt->dst);=0D return nrt;=0D }=0D =0D static struct rt6_info *ip6_pol_route_lookup(struct net *net,=0D struct fib6_table *table,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D struct fib6_result res =3D {};=0D struct fib6_node *fn;=0D struct rt6_info *rt;=0D =0D rcu_read_lock();=0D fn =3D fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr);=0D restart:=0D res.f6i =3D ({ typeof(*(fn->leaf)) *__UNIQUE_ID_rcu665 =3D (typeof(*(fn->l= eaf)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_666(void) ; if (!((sizeof((fn->leaf)) =3D=3D sizeof(char) || sizeof((fn= ->leaf)) =3D=3D sizeof(short) || sizeof((fn->leaf)) =3D=3D sizeof(int) || s= izeof((fn->leaf)) =3D=3D sizeof(long)) || sizeof((fn->leaf)) =3D=3D sizeof(= long long))) __compiletime_assert_666(); } while (0); (*(const volatile typ= eof( _Generic(((fn->leaf)), char: (char)0, unsigned char: (unsigned char)0,= signed char: (signed char)0, unsigned short: (unsigned short)0, signed sho= rt: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int= )0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned = long long: (unsigned long long)0, signed long long: (signed long long)0, de= fault: ((fn->leaf)))) *)&((fn->leaf))); }); do { } while (0 && (!((0) || rc= u_read_lock_held()))); ; ((typeof(*(fn->leaf)) *)(__UNIQUE_ID_rcu665)); });= =0D if (!res.f6i)=0D res.f6i =3D net->ipv6.fib6_null_entry;=0D else=0D rt6_device_match(net, &res, &fl6->saddr, fl6->__fl_common.flowic_oif,=0D flags);=0D =0D if (res.f6i =3D=3D net->ipv6.fib6_null_entry) {=0D fn =3D fib6_backtrack(fn, &fl6->saddr);=0D if (fn)=0D goto restart;=0D =0D rt =3D net->ipv6.ip6_null_entry;=0D dst_hold(&rt->dst);=0D goto out;=0D } else if (res.fib6_flags & 0x0200) {=0D goto do_create;=0D }=0D =0D fib6_select_path(net, &res, fl6, fl6->__fl_common.flowic_oif,=0D fl6->__fl_common.flowic_oif !=3D 0, skb, flags);=0D =0D =0D rt =3D rt6_find_cached_rt(&res, &fl6->daddr, &fl6->saddr);=0D if (rt) {=0D if (ip6_hold_safe(net, &rt))=0D dst_use_noref(&rt->dst, jiffies);=0D } else {=0D do_create:=0D rt =3D ip6_create_rt_rcu(&res);=0D }=0D =0D out:=0D trace_fib6_table_lookup(net, &res, table, fl6);=0D =0D rcu_read_unlock();=0D =0D return rt;=0D }=0D =0D struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6,=0D const struct sk_buff *skb, int flags)=0D {=0D return fib6_rule_lookup(net, fl6, skb, flags, ip6_pol_route_lookup);=0D }=0D extern typeof(ip6_route_lookup) ip6_route_lookup; extern const char __kstrt= ab_ip6_route_lookup[]; extern const char __kstrtabns_ip6_route_lookup[]; ; = asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "= ip6_route_lookup" ": \n" " .asciz \"" "ip6_route_lookup" "\" \n" "= __kstrtabns_" "ip6_route_lookup" ": \n" " .asciz \"" "" "\" \n" " = =2Eprevious \n"); static const struct kernel_symbol __ksymtab_ip6_rout= e_lookup __attribute__((section("___ksymtab" "_gpl" "+" "ip6_route_lookup")= , used)) __attribute__((__aligned__(sizeof(void *)))) =3D { (unsigned long)= &ip6_route_lookup, __kstrtab_ip6_route_lookup, __kstrtabns_ip6_route_lookup= };=0D =0D struct rt6_info *rt6_lookup(struct net *net, const struct in6_addr *daddr,= =0D const struct in6_addr *saddr, int oif,=0D const struct sk_buff *skb, int strict)=0D {=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_oif =3D oif,=0D .daddr =3D *daddr,=0D };=0D struct dst_entry *dst;=0D int flags =3D strict ? 0x00000001 : 0;=0D =0D if (saddr) {=0D memcpy(&fl6.saddr, saddr, sizeof(*saddr));=0D flags |=3D 0x00000004;=0D }=0D =0D dst =3D fib6_rule_lookup(net, &fl6, skb, flags, ip6_pol_route_lookup);=0D if (dst->error =3D=3D 0)=0D return (struct rt6_info *) dst;=0D =0D dst_release(dst);=0D =0D return ((void *)0);=0D }=0D extern typeof(rt6_lookup) rt6_lookup; extern const char __kstrtab_rt6_looku= p[]; extern const char __kstrtabns_rt6_lookup[]; ; asm(" .section \"__ksymt= ab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "rt6_lookup" ": \n" "= .asciz \"" "rt6_lookup" "\" \n" "__kstrtabns_" "rt6_lookup" ": \n= " " .asciz \"" "" "\" \n" " .previous \n"); static const struct k= ernel_symbol __ksymtab_rt6_lookup __attribute__((section("___ksymtab" "" "+= " "rt6_lookup"), used)) __attribute__((__aligned__(sizeof(void *)))) =3D { = (unsigned long)&rt6_lookup, __kstrtab_rt6_lookup, __kstrtabns_rt6_lookup };= =0D =0D =0D =0D =0D =0D =0D =0D static int __ip6_ins_rt(struct fib6_info *rt, struct nl_info *info,=0D struct netlink_ext_ack *extack)=0D {=0D int err;=0D struct fib6_table *table;=0D =0D table =3D rt->fib6_table;=0D spin_lock_bh(&table->tb6_lock);=0D err =3D fib6_add(&table->tb6_root, rt, info, extack);=0D spin_unlock_bh(&table->tb6_lock);=0D =0D return err;=0D }=0D =0D int ip6_ins_rt(struct net *net, struct fib6_info *rt)=0D {=0D struct nl_info info =3D { .nl_net =3D net, };=0D =0D return __ip6_ins_rt(rt, &info, ((void *)0));=0D }=0D =0D static struct rt6_info *ip6_rt_cache_alloc(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D struct fib6_info *f6i =3D res->f6i;=0D struct net_device *dev;=0D struct rt6_info *rt;=0D =0D =0D =0D =0D =0D if (!fib6_info_hold_safe(f6i))=0D return ((void *)0);=0D =0D dev =3D ip6_rt_get_dev_rcu(res);=0D rt =3D ip6_dst_alloc(dev_net(dev), dev, 0);=0D if (!rt) {=0D fib6_info_release(f6i);=0D return ((void *)0);=0D }=0D =0D ip6_rt_copy_init(rt, res);=0D rt->rt6i_flags |=3D 0x01000000;=0D rt->rt6i_dst.addr =3D *daddr;=0D rt->rt6i_dst.plen =3D 128;=0D =0D if (!rt6_is_gw_or_nonexthop(res)) {=0D if (f6i->fib6_dst.plen !=3D 128 &&=0D ipv6_addr_equal(&f6i->fib6_dst.addr, daddr))=0D rt->rt6i_flags |=3D 0x00100000;=0D =0D =0D =0D =0D =0D =0D }=0D =0D return rt;=0D }=0D =0D static struct rt6_info *ip6_rt_pcpu_alloc(const struct fib6_result *res)=0D {=0D struct fib6_info *f6i =3D res->f6i;=0D unsigned short flags =3D fib6_info_dst_flags(f6i);=0D struct net_device *dev;=0D struct rt6_info *pcpu_rt;=0D =0D if (!fib6_info_hold_safe(f6i))=0D return ((void *)0);=0D =0D rcu_read_lock();=0D dev =3D ip6_rt_get_dev_rcu(res);=0D pcpu_rt =3D ip6_dst_alloc(dev_net(dev), dev, flags | 0x0008);=0D rcu_read_unlock();=0D if (!pcpu_rt) {=0D fib6_info_release(f6i);=0D return ((void *)0);=0D }=0D ip6_rt_copy_init(pcpu_rt, res);=0D pcpu_rt->rt6i_flags |=3D 0x40000000;=0D =0D if (f6i->nh)=0D pcpu_rt->sernum =3D rt_genid_ipv6(dev_net(dev));=0D =0D return pcpu_rt;=0D }=0D =0D static bool rt6_is_valid(const struct rt6_info *rt6)=0D {=0D return rt6->sernum =3D=3D rt_genid_ipv6(dev_net(rt6->dst.dev));=0D }=0D =0D =0D static struct rt6_info *rt6_get_pcpu_route(const struct fib6_result *res)=0D {=0D struct rt6_info *pcpu_rt;=0D =0D pcpu_rt =3D ({ typeof(*res->nh->rt6i_pcpu) pscr_ret__; do { const void *__= vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__v= pp_verify; } while (0); switch(sizeof(*res->nh->rt6i_pcpu)) { case 1: pscr_= ret__ =3D ({ typeof(*res->nh->rt6i_pcpu) __ret; if ((sizeof(*res->nh->rt6i_= pcpu) =3D=3D sizeof(char) || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(shor= t) || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(int) || sizeof(*res->nh->rt= 6i_pcpu) =3D=3D sizeof(long))) __ret =3D ({ typeof(*res->nh->rt6i_pcpu) ___= ret; do { __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } = while (0); ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_667(void) ; if (!((sizeof(*({ do { const void *__vpp_veri= fy =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&= (*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_= offset[(((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D si= zeof(char) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(*res-= >nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsi= gned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu= ))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu)))= *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread= _info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*= ({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))= ((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr= =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6= i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_p= cpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())= ->cpu)])))); }); })) =3D=3D sizeof(int) || sizeof(*({ do { const void *__vp= p_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp= _verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((t= ypeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((type= of(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__pe= r_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) =3D= =3D sizeof(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((= &(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); = ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt= 6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_= pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct= thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long long))= ) __compiletime_assert_667(); } while (0); (*(const volatile typeof( _Gener= ic((*({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh= ->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->r= t6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_curre= nt())->cpu)])))); }); })), char: (char)0, unsigned char: (unsigned char)0, = signed char: (signed char)0, unsigned short: (unsigned short)0, signed shor= t: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)= 0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned l= ong long: (unsigned long long)0, signed long long: (signed long long)0, def= ault: (*({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu= )) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res-= >nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh= ->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); })))) *)&(*({ do { const void *__vpp_verify =3D (t= ypeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res-= >nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh= ->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); }))); }); do { __asm__= __volatile__("": : :"memory"); __preempt_count_sub(1); } while (0); ___ret= ; }); else __ret =3D ({ typeof(*res->nh->rt6i_pcpu) ___ret; unsigned long _= __flags; do { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&= __dummy =3D=3D &__dummy2); 1; }); ___flags =3D arch_local_irq_save(); } whi= le (0); ___ret =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(*res= ->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ uns= igned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcp= u))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))= ) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct threa= d_info *)get_current())->cpu)])))); }); }); }); do { ({ unsigned long __dum= my; typeof(___flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do= { } while (0); arch_local_irq_restore(___flags); } while (0); ___ret; }); = __ret; }); break; case 2: pscr_ret__ =3D ({ typeof(*res->nh->rt6i_pcpu) __r= et; if ((sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(char) || sizeof(*res->nh= ->rt6i_pcpu) =3D=3D sizeof(short) || sizeof(*res->nh->rt6i_pcpu) =3D=3D siz= eof(int) || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(long))) __ret =3D ({ = typeof(*res->nh->rt6i_pcpu) ___ret; do { __preempt_count_add(1); __asm__ __= volatile__("": : :"memory"); } while (0); ___ret =3D ({ do { __attribute__(= (__noreturn__)) extern void __compiletime_assert_668(void) ; if (!((sizeof(= *({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0)= )((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __pt= r =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt= 6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_= pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current()= )->cpu)])))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *__= vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__v= pp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) (= (typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((ty= peof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(short) || sizeof(*({ do { const void *__vpp_verify =3D (typeo= f((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0= ); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh-= >rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt= 6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((str= uct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int) || = sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu= )) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res-= >nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh= ->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cu= rrent())->cpu)])))); }); })) =3D=3D sizeof(long)) || sizeof(*({ do { const = void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (= void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned= long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (ty= peof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr= + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }= ); })) =3D=3D sizeof(long long))) __compiletime_assert_668(); } while (0); = (*(const volatile typeof( _Generic((*({ do { const void *__vpp_verify =3D (= typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } whi= le (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res= ->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->n= h->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(= ((struct thread_info *)get_current())->cpu)])))); }); })), char: (char)0, u= nsigned char: (unsigned char)0, signed char: (signed char)0, unsigned short= : (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned= int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed = long: (signed long)0, unsigned long long: (unsigned long long)0, signed lon= g long: (signed long long)0, default: (*({ do { const void *__vpp_verify = =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; = } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&= (*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*r= es->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_off= set[(((struct thread_info *)get_current())->cpu)])))); }); })))) *)&(*({ do= { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((voi= d *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D = (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcp= u))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))= )) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu= )])))); }); }))); }); do { __asm__ __volatile__("": : :"memory"); __preempt= _count_sub(1); } while (0); ___ret; }); else __ret =3D ({ typeof(*res->nh->= rt6i_pcpu) ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; t= ypeof(___flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flag= s =3D arch_local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void= *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof= ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (= ((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }= ); }); do { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__= _flags); } while (0); ___ret; }); __ret; }); break; case 4: pscr_ret__ =3D = ({ typeof(*res->nh->rt6i_pcpu) __ret; if ((sizeof(*res->nh->rt6i_pcpu) =3D= =3D sizeof(char) || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(short) || siz= eof(*res->nh->rt6i_pcpu) =3D=3D sizeof(int) || sizeof(*res->nh->rt6i_pcpu) = =3D=3D sizeof(long))) __ret =3D ({ typeof(*res->nh->rt6i_pcpu) ___ret; do {= __preempt_count_add(1); __asm__ __volatile__("": : :"memory"); } while (0)= ; ___ret =3D ({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_669(void) ; if (!((sizeof(*({ do { const void *__vpp_verify =3D (t= ypeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } whil= e (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res-= >nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh= ->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[((= (struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(char= ) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i= _pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long= __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(= *res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*re= s->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); })) =3D=3D sizeof(short) || sizeof(*({ do { c= onst void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)= 0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (uns= igned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))= ; (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (= __ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))= )); }); })) =3D=3D sizeof(int) || sizeof(*({ do { const void *__vpp_verify = =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; = } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&= (*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*r= es->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_off= set[(((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D sizeo= f(long)) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(*res->n= h->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsign= ed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))= ) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *= )(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_i= nfo *)get_current())->cpu)])))); }); })) =3D=3D sizeof(long long))) __compi= letime_assert_669(); } while (0); (*(const volatile typeof( _Generic((*({ d= o { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((vo= id *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D= (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pc= pu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); })), char: (char)0, unsigned char: (unsigned char)0, signed ch= ar: (signed char)0, unsigned short: (unsigned short)0, signed short: (signe= d short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsign= ed long: (unsigned long)0, signed long: (signed long)0, unsigned long long:= (unsigned long long)0, signed long long: (signed long long)0, default: (*(= { do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i= _pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pc= pu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())-= >cpu)])))); }); })))) *)&(*({ do { const void *__vpp_verify =3D (typeof((&(= *res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i= _pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pc= pu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct t= hread_info *)get_current())->cpu)])))); }); }))); }); do { __asm__ __volati= le__("": : :"memory"); __preempt_count_sub(1); } while (0); ___ret; }); els= e __ret =3D ({ typeof(*res->nh->rt6i_pcpu) ___ret; unsigned long ___flags; = do { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy = =3D=3D &__dummy2); 1; }); ___flags =3D arch_local_irq_save(); } while (0); = ___ret =3D ({ *({ do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt= 6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned lo= ng __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(= &(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*= res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *= )get_current())->cpu)])))); }); }); }); do { ({ unsigned long __dummy; type= of(___flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } whi= le (0); arch_local_irq_restore(___flags); } while (0); ___ret; }); __ret; }= ); break; case 8: pscr_ret__ =3D ({ typeof(*res->nh->rt6i_pcpu) __ret; if (= (sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(char) || sizeof(*res->nh->rt6i_p= cpu) =3D=3D sizeof(short) || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(int)= || sizeof(*res->nh->rt6i_pcpu) =3D=3D sizeof(long))) __ret =3D ({ typeof(*= res->nh->rt6i_pcpu) ___ret; do { __preempt_count_add(1); __asm__ __volatile= __("": : :"memory"); } while (0); ___ret =3D ({ do { __attribute__((__noret= urn__)) extern void __compiletime_assert_670(void) ; if (!((sizeof(*({ do {= const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void = *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (u= nsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)= )); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))))= (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]= )))); }); })) =3D=3D sizeof(char) || sizeof(*({ do { const void *__vpp_veri= fy =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&= (*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_= offset[(((struct thread_info *)get_current())->cpu)])))); }); })) =3D=3D si= zeof(short) || sizeof(*({ do { const void *__vpp_verify =3D (typeof((&(*res= ->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ uns= igned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcp= u))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))= ) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struct threa= d_info *)get_current())->cpu)])))); }); })) =3D=3D sizeof(int) || sizeof(*(= { do { const void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i= _pcpu))); (typeof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pc= pu)))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())-= >cpu)])))); }); })) =3D=3D sizeof(long)) || sizeof(*({ do { const void *__v= pp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vp= p_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((= typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typ= eof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__p= er_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); })) = =3D=3D sizeof(long long))) __compiletime_assert_670(); } while (0); (*(cons= t volatile typeof( _Generic((*({ do { const void *__vpp_verify =3D (typeof(= (&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (0);= ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh->r= t6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->rt6i= _pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((struc= t thread_info *)get_current())->cpu)])))); }); })), char: (char)0, unsigned= char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsi= gned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0,= signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (= signed long)0, unsigned long long: (unsigned long long)0, signed long long:= (signed long long)0, default: (*({ do { const void *__vpp_verify =3D (type= of((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_verify; } while (= 0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&(*res->nh= ->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(*(&(*res->nh->r= t6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_cpu_offset[(((st= ruct thread_info *)get_current())->cpu)])))); }); })))) *)&(*({ do { const = void *__vpp_verify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (= void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned= long) ((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (ty= peof((typeof(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr= + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }= ); }))); }); do { __asm__ __volatile__("": : :"memory"); __preempt_count_su= b(1); } while (0); ___ret; }); else __ret =3D ({ typeof(*res->nh->rt6i_pcpu= ) ___ret; unsigned long ___flags; do { ({ unsigned long __dummy; typeof(___= flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); ___flags =3D arc= h_local_irq_save(); } while (0); ___ret =3D ({ *({ do { const void *__vpp_v= erify =3D (typeof((&(*res->nh->rt6i_pcpu)) + 0))((void *)0); (void)__vpp_ve= rify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((type= of(*(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu))); (typeof((typeof(= *(&(*res->nh->rt6i_pcpu))) *)(&(*res->nh->rt6i_pcpu)))) (__ptr + (((__per_c= pu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }); }); do= { ({ unsigned long __dummy; typeof(___flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(___flags); = } while (0); ___ret; }); __ret; }); break; default: __bad_size_call_paramet= er(); break; } pscr_ret__; });=0D =0D if (pcpu_rt && pcpu_rt->sernum && !rt6_is_valid(pcpu_rt)) {=0D struct rt6_info *prev, **p;=0D =0D p =3D ({ do { const void *__vpp_verify =3D (typeof((res->nh->rt6i_pcpu) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(res->nh->rt6i_pcpu)) *)(res->nh->rt6i_p= cpu)); (typeof((typeof(*(res->nh->rt6i_pcpu)) *)(res->nh->rt6i_pcpu))) (__p= tr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)]))));= }); });=0D prev =3D ({ typeof(p) __ai_ptr =3D (p); do { } while (0); instrument_atom= ic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _x_ =3D (= ((void *)0)); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D= ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_ptr))) _= _ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ ( " amosw= ap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "me= mory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2, %1\n= " : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; default= : do { __attribute__((__noreturn__)) extern void __compiletime_assert_671(v= oid) ; if (!(!(1))) __compiletime_assert_671(); } while (0); } __ret; }); }= ); });=0D if (prev) {=0D dst_dev_put(&prev->dst);=0D dst_release(&prev->dst);=0D }=0D =0D pcpu_rt =3D ((void *)0);=0D }=0D =0D return pcpu_rt;=0D }=0D =0D static struct rt6_info *rt6_make_pcpu_route(struct net *net,=0D const struct fib6_result *res)=0D {=0D struct rt6_info *pcpu_rt, *prev, **p;=0D =0D pcpu_rt =3D ip6_rt_pcpu_alloc(res);=0D if (!pcpu_rt)=0D return ((void *)0);=0D =0D p =3D ({ do { const void *__vpp_verify =3D (typeof((res->nh->rt6i_pcpu) + = 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __= ptr =3D (unsigned long) ((typeof(*(res->nh->rt6i_pcpu)) *)(res->nh->rt6i_pc= pu)); (typeof((typeof(*(res->nh->rt6i_pcpu)) *)(res->nh->rt6i_pcpu))) (__pt= r + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); = }); });=0D prev =3D ({ typeof(p) __ai_ptr =3D (p); do { } while (0); instrument_atomi= c_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _o_ =3D ((= (void *)0)); __typeof__(*(__ai_ptr)) _n_ =3D (pcpu_rt); (__typeof__(*(__ai_= ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D ((__ai_ptr)); __typeof__(*((__ai= _ptr))) __old =3D (_o_); __typeof__(*((__ai_ptr))) __new =3D (_n_); __typeo= f__(*((__ai_ptr))) __ret; register unsigned int __rc; switch (sizeof(*(__ai= _ptr))) { case 4: __asm__ __volatile__ ( "0: lr.w %0, %2\n" " bne %0, %z3,= 1f\n" " sc.w.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fence rw, rw\n" "1:\n" := "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" ((long)__old), "rJ" = (__new) : "memory"); break; case 8: __asm__ __volatile__ ( "0: lr.d %0, %2\= n" " bne %0, %z3, 1f\n" " sc.d.rl %1, %z4, %2\n" " bnez %1, 0b\n" " fence r= w, rw\n" "1:\n" : "=3D&r" (__ret), "=3D&r" (__rc), "+A" (*__ptr) : "rJ" (__= old), "rJ" (__new) : "memory"); break; default: do { __attribute__((__noret= urn__)) extern void __compiletime_assert_672(void) ; if (!(!(1))) __compile= time_assert_672(); } while (0); } __ret; }); }); });=0D do { if (__builtin_expect(!!(prev), 0)) do { do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("net/ipv6/route.c"), "i" (= 1423), "i" (0), "i" (sizeof(struct bug_entry))); } while (0); do { ; __buil= tin_unreachable(); } while (0); } while (0); } while (0);=0D =0D if (res->f6i->fib6_destroying) {=0D struct fib6_info *from;=0D =0D from =3D ({ typeof(( struct fib6_info **)&pcpu_rt->from) __ai_ptr =3D (( = struct fib6_info **)&pcpu_rt->from); do { } while (0); instrument_atomic_wr= ite(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _x_ =3D (((voi= d *)0)); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) __ptr =3D ((__= ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_ptr))) __ret;= switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ ( " amoswap.w.= aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"= ); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2, %1\n" : "= =3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; default: do = { __attribute__((__noreturn__)) extern void __compiletime_assert_673(void) = ; if (!(!(1))) __compiletime_assert_673(); } while (0); } __ret; }); }); })= ;=0D fib6_info_release(from);=0D }=0D =0D return pcpu_rt;=0D }=0D =0D =0D =0D static spinlock_t rt6_exception_lock =3D (spinlock_t) { { .rlock =3D { .raw= _lock =3D { 0 }, .magic =3D 0xdead4ead, .owner_cpu =3D -1, .owner =3D ((voi= d *)-1L), .dep_map =3D { .name =3D "rt6_exception_lock", .wait_type_inner = =3D LD_WAIT_CONFIG, } } } };=0D =0D =0D =0D =0D static void rt6_remove_exception(struct rt6_exception_bucket *bucket,=0D struct rt6_exception *rt6_ex)=0D {=0D struct fib6_info *from;=0D struct net *net;=0D =0D if (!bucket || !rt6_ex)=0D return;=0D =0D net =3D dev_net(rt6_ex->rt6i->dst.dev);=0D net->ipv6.rt6_stats->fib_rt_cache--;=0D =0D =0D =0D =0D from =3D ({ typeof(( struct fib6_info **)&rt6_ex->rt6i->from) __ai_ptr =3D= (( struct fib6_info **)&rt6_ex->rt6i->from); do { } while (0); instrument_= atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__ai_ptr)) _x_ = =3D (((void *)0)); (__typeof__(*(__ai_ptr))) ({ __typeof__((__ai_ptr)) __pt= r =3D ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__(*((__ai_ptr= ))) __ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __volatile__ ( " = amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) = : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.aqrl %0, %2,= %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"); break; de= fault: do { __attribute__((__noreturn__)) extern void __compiletime_assert_= 674(void) ; if (!(!(1))) __compiletime_assert_674(); } while (0); } __ret; = }); }); });=0D fib6_info_release(from);=0D dst_dev_put(&rt6_ex->rt6i->dst);=0D =0D hlist_del_rcu(&rt6_ex->hlist);=0D dst_release(&rt6_ex->rt6i->dst);=0D do { typeof (rt6_ex) ___p =3D (rt6_ex); if (___p) { do { __attribute__((__= noreturn__)) extern void __compiletime_assert_675(void) ; if (!(!(!((__buil= tin_offsetof(typeof(*(rt6_ex)), rcu)) < 4096)))) __compiletime_assert_675()= ; } while (0); kvfree_call_rcu(&((___p)->rcu), (rcu_callback_t)(unsigned lo= ng) (__builtin_offsetof(typeof(*(rt6_ex)), rcu))); } } while (0);=0D ({ int __ret_warn_on =3D !!(!bucket->depth); if (__builtin_expect(!!(__ret= _warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsectio= n __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 -= 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".pop= section" : : "i" ("net/ipv6/route.c"), "i" (1464), "i" ((1 << 0)|((1 << 1) = | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_exp= ect(!!(__ret_warn_on), 0); });=0D bucket->depth--;=0D }=0D =0D =0D =0D =0D static void rt6_exception_remove_oldest(struct rt6_exception_bucket *bucket= )=0D {=0D struct rt6_exception *rt6_ex, *oldest =3D ((void *)0);=0D =0D if (!bucket)=0D return;=0D =0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket->= chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_as= sert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(rt6= _ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), typ= eof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6_ex))= *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((void *)= 0); }); rt6_ex; rt6_ex =3D ({ typeof((rt6_ex)->hlist.next) ____ptr =3D ((rt= 6_ex)->hlist.next); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Stati= c_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*= (rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)),= typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6_= ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((voi= d *)0); })) {=0D if (!oldest || (({ unsigned long __dummy; typeof(oldest->stamp) __dummy2;= (void)(&__dummy =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; type= of(rt6_ex->stamp) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((l= ong)((rt6_ex->stamp) - (oldest->stamp)) < 0)))=0D oldest =3D rt6_ex;=0D }=0D rt6_remove_exception(bucket, oldest);=0D }=0D =0D static u32 rt6_exception_hash(const struct in6_addr *dst,=0D const struct in6_addr *src)=0D {=0D static siphash_key_t __attribute__((__aligned__(16))) rt6_exception_key;=0D struct {=0D struct in6_addr dst;=0D struct in6_addr src;=0D } __attribute__((__aligned__(__alignof__(u64)))) combined =3D {=0D .dst =3D *dst,=0D };=0D u64 val;=0D =0D ({ bool ___ret =3D false; static bool __attribute__((__section__(".data.on= ce"))) ___done =3D false; static struct static_key_true ___once_key =3D (st= ruct static_key_true) { .key =3D { .enabled =3D { (1) } }, }; if (__builtin= _expect(!!(({ if (!__builtin_types_compatible_p(typeof(*&(&___once_key)->ke= y), struct static_key) && !__builtin_types_compatible_p(typeof(*&(&___once_= key)->key), struct static_key_true) && !__builtin_types_compatible_p(typeof= (*&(&___once_key)->key), struct static_key_false)) ____wrong_branch_error()= ; static_key_count((struct static_key *)&(&___once_key)->key) > 0; })), 0))= { unsigned long ___flags; ___ret =3D __do_once_start(&___done, &___flags);= if (__builtin_expect(!!(___ret), 0)) { get_random_bytes(((&rt6_exception_k= ey)), ((sizeof(rt6_exception_key)))); __do_once_done(&___done, &___once_key= , &___flags, ((struct module *)0)); } } ___ret; });=0D =0D =0D =0D =0D =0D val =3D siphash(&combined, sizeof(combined), &rt6_exception_key);=0D =0D return hash_64_generic(val, 10);=0D }=0D =0D =0D =0D =0D =0D =0D static struct rt6_exception *=0D __rt6_find_exception_spinlock(struct rt6_exception_bucket **bucket,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D struct rt6_exception *rt6_ex;=0D u32 hval;=0D =0D if (!(*bucket) || !daddr)=0D return ((void *)0);=0D =0D hval =3D rt6_exception_hash(daddr, saddr);=0D *bucket +=3D hval;=0D =0D for (rt6_ex =3D ({ typeof((&(*bucket)->chain)->first) ____ptr =3D ((&(*buc= ket)->chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Sta= tic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof= (*(rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)= ), typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt= 6_ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((v= oid *)0); }); rt6_ex; rt6_ex =3D ({ typeof((rt6_ex)->hlist.next) ____ptr = =3D ((rt6_ex)->hlist.next); ____ptr ? ({ void *__mptr =3D (void *)(____ptr)= ; _Static_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((= typeof(*(rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(__= __ptr)), typeof(void)), "pointer type mismatch in container_of()"); ((typeo= f(*(rt6_ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); })= : ((void *)0); })) {=0D struct rt6_info *rt6 =3D rt6_ex->rt6i;=0D bool matched =3D ipv6_addr_equal(daddr, &rt6->rt6i_dst.addr);=0D =0D =0D =0D =0D =0D if (matched)=0D return rt6_ex;=0D }=0D return ((void *)0);=0D }=0D =0D =0D =0D =0D =0D =0D static struct rt6_exception *=0D __rt6_find_exception_rcu(struct rt6_exception_bucket **bucket,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D struct rt6_exception *rt6_ex;=0D u32 hval;=0D =0D ({ int __ret_warn_on =3D !!(!rcu_read_lock_held()); if (__builtin_expect(!= !(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pus= hsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word"= " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t= " ".popsection" : : "i" ("net/ipv6/route.c"), "i" (1554), "i" ((1 << 0)|((1= << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __buil= tin_expect(!!(__ret_warn_on), 0); });=0D =0D if (!(*bucket) || !daddr)=0D return ((void *)0);=0D =0D hval =3D rt6_exception_hash(daddr, saddr);=0D *bucket +=3D hval;=0D =0D for (({ ; }), rt6_ex =3D ({ typeof(({ typeof((*((struct hlist_node **)(&(&= (*bucket)->chain)->first)))) __UNIQUE_ID_rcu676 =3D ({ do { __attribute__((= __noreturn__)) extern void __compiletime_assert_677(void) ; if (!((sizeof((= *((struct hlist_node **)(&(&(*bucket)->chain)->first)))) =3D=3D sizeof(char= ) || sizeof((*((struct hlist_node **)(&(&(*bucket)->chain)->first)))) =3D= =3D sizeof(short) || sizeof((*((struct hlist_node **)(&(&(*bucket)->chain)-= >first)))) =3D=3D sizeof(int) || sizeof((*((struct hlist_node **)(&(&(*buck= et)->chain)->first)))) =3D=3D sizeof(long)) || sizeof((*((struct hlist_node= **)(&(&(*bucket)->chain)->first)))) =3D=3D sizeof(long long))) __compileti= me_assert_677(); } while (0); (*(const volatile typeof( _Generic(((*((struc= t hlist_node **)(&(&(*bucket)->chain)->first)))), char: (char)0, unsigned c= har: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsign= ed short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, s= igned int: (signed int)0, unsigned long: (unsigned long)0, signed long: (si= gned long)0, unsigned long long: (unsigned long long)0, signed long long: (= signed long long)0, default: ((*((struct hlist_node **)(&(&(*bucket)->chain= )->first)))))) *)&((*((struct hlist_node **)(&(&(*bucket)->chain)->first)))= )); }); ((typeof(*(*((struct hlist_node **)(&(&(*bucket)->chain)->first))))= *)(__UNIQUE_ID_rcu676)); })) ____ptr =3D (({ typeof((*((struct hlist_node = **)(&(&(*bucket)->chain)->first)))) __UNIQUE_ID_rcu676 =3D ({ do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_677(void) ; if (!((s= izeof((*((struct hlist_node **)(&(&(*bucket)->chain)->first)))) =3D=3D size= of(char) || sizeof((*((struct hlist_node **)(&(&(*bucket)->chain)->first)))= ) =3D=3D sizeof(short) || sizeof((*((struct hlist_node **)(&(&(*bucket)->ch= ain)->first)))) =3D=3D sizeof(int) || sizeof((*((struct hlist_node **)(&(&(= *bucket)->chain)->first)))) =3D=3D sizeof(long)) || sizeof((*((struct hlist= _node **)(&(&(*bucket)->chain)->first)))) =3D=3D sizeof(long long))) __comp= iletime_assert_677(); } while (0); (*(const volatile typeof( _Generic(((*((= struct hlist_node **)(&(&(*bucket)->chain)->first)))), char: (char)0, unsig= ned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (u= nsigned short)0, signed short: (signed short)0, unsigned int: (unsigned int= )0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed long= : (signed long)0, unsigned long long: (unsigned long long)0, signed long lo= ng: (signed long long)0, default: ((*((struct hlist_node **)(&(&(*bucket)->= chain)->first)))))) *)&((*((struct hlist_node **)(&(&(*bucket)->chain)->fir= st))))); }); ((typeof(*(*((struct hlist_node **)(&(&(*bucket)->chain)->firs= t)))) *)(__UNIQUE_ID_rcu676)); })); ____ptr ? ({ void *__mptr =3D (void *)(= ____ptr); _Static_assert(__builtin_types_compatible_p(typeof(*(____ptr)), t= ypeof(((typeof(*(rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typ= eof(*(____ptr)), typeof(void)), "pointer type mismatch in container_of()");= ((typeof(*(rt6_ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlis= t))); }) : ((void *)0); }); rt6_ex; rt6_ex =3D ({ typeof(({ typeof((*((stru= ct hlist_node **)(&(&(rt6_ex)->hlist)->next)))) __UNIQUE_ID_rcu678 =3D ({ d= o { __attribute__((__noreturn__)) extern void __compiletime_assert_679(void= ) ; if (!((sizeof((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)))) = =3D=3D sizeof(char) || sizeof((*((struct hlist_node **)(&(&(rt6_ex)->hlist)= ->next)))) =3D=3D sizeof(short) || sizeof((*((struct hlist_node **)(&(&(rt6= _ex)->hlist)->next)))) =3D=3D sizeof(int) || sizeof((*((struct hlist_node *= *)(&(&(rt6_ex)->hlist)->next)))) =3D=3D sizeof(long)) || sizeof((*((struct = hlist_node **)(&(&(rt6_ex)->hlist)->next)))) =3D=3D sizeof(long long))) __c= ompiletime_assert_679(); } while (0); (*(const volatile typeof( _Generic(((= *((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)))), char: (char)0, unsi= gned char: (unsigned char)0, signed char: (signed char)0, unsigned short: (= unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned in= t)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lon= g: (signed long)0, unsigned long long: (unsigned long long)0, signed long l= ong: (signed long long)0, default: ((*((struct hlist_node **)(&(&(rt6_ex)->= hlist)->next)))))) *)&((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)= )))); }); ((typeof(*(*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next))))= *)(__UNIQUE_ID_rcu678)); })) ____ptr =3D (({ typeof((*((struct hlist_node = **)(&(&(rt6_ex)->hlist)->next)))) __UNIQUE_ID_rcu678 =3D ({ do { __attribut= e__((__noreturn__)) extern void __compiletime_assert_679(void) ; if (!((siz= eof((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)))) =3D=3D sizeof(c= har) || sizeof((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)))) =3D= =3D sizeof(short) || sizeof((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->= next)))) =3D=3D sizeof(int) || sizeof((*((struct hlist_node **)(&(&(rt6_ex)= ->hlist)->next)))) =3D=3D sizeof(long)) || sizeof((*((struct hlist_node **)= (&(&(rt6_ex)->hlist)->next)))) =3D=3D sizeof(long long))) __compiletime_ass= ert_679(); } while (0); (*(const volatile typeof( _Generic(((*((struct hlis= t_node **)(&(&(rt6_ex)->hlist)->next)))), char: (char)0, unsigned char: (un= signed char)0, signed char: (signed char)0, unsigned short: (unsigned short= )0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed in= t: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lon= g)0, unsigned long long: (unsigned long long)0, signed long long: (signed l= ong long)0, default: ((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next))= )))) *)&((*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next))))); }); ((ty= peof(*(*((struct hlist_node **)(&(&(rt6_ex)->hlist)->next)))) *)(__UNIQUE_I= D_rcu678)); })); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(rt= 6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), ty= peof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6_ex)= ) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((void *= )0); })) {=0D struct rt6_info *rt6 =3D rt6_ex->rt6i;=0D bool matched =3D ipv6_addr_equal(daddr, &rt6->rt6i_dst.addr);=0D =0D =0D =0D =0D =0D if (matched)=0D return rt6_ex;=0D }=0D return ((void *)0);=0D }=0D =0D static unsigned int fib6_mtu(const struct fib6_result *res)=0D {=0D const struct fib6_nh *nh =3D res->nh;=0D unsigned int mtu;=0D =0D if (res->f6i->fib6_metrics->metrics[RTAX_MTU-1]) {=0D mtu =3D res->f6i->fib6_metrics->metrics[RTAX_MTU-1];=0D } else {=0D struct net_device *dev =3D nh->nh_common.nhc_dev;=0D struct inet6_dev *idev;=0D =0D rcu_read_lock();=0D idev =3D __in6_dev_get(dev);=0D mtu =3D idev->cnf.mtu6;=0D rcu_read_unlock();=0D }=0D =0D mtu =3D __builtin_choose_expr(((!!(sizeof((typeof((unsigned int)(mtu)) *)1= =3D=3D (typeof((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) *)1))) &= & ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned int)(mtu)) *= 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u= nsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) * 0l)) : (int *)8))))), ((= (unsigned int)(mtu)) < ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) = ? ((unsigned int)(mtu)) : ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr))= ))), ({ typeof((unsigned int)(mtu)) __UNIQUE_ID___x680 =3D ((unsigned int)(= mtu)); typeof((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) __UNIQUE_I= D___y681 =3D ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))); ((__UNIQU= E_ID___x680) < (__UNIQUE_ID___y681) ? (__UNIQUE_ID___x680) : (__UNIQUE_ID__= _y681)); }));=0D =0D return mtu - lwtunnel_headroom(nh->nh_common.nhc_lwtstate, mtu);=0D }=0D # 1605 "net/ipv6/route.c"=0D static=0D struct rt6_exception_bucket *fib6_nh_get_excptn_bucket(const struct fib6_nh= *nh,=0D spinlock_t *lock)=0D {=0D struct rt6_exception_bucket *bucket;=0D =0D if (lock)=0D bucket =3D ({ do { } while (0 && (!((lock_is_held(&(lock)->dep_map))))); = ; ((typeof(*(nh->rt6i_exception_bucket)) *)((nh->rt6i_exception_bucket))); = });=0D =0D else=0D bucket =3D ({ typeof(*(nh->rt6i_exception_bucket)) *__UNIQUE_ID_rcu682 = =3D (typeof(*(nh->rt6i_exception_bucket)) *)({ do { __attribute__((__noretu= rn__)) extern void __compiletime_assert_683(void) ; if (!((sizeof((nh->rt6i= _exception_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i_exception_bucke= t)) =3D=3D sizeof(short) || sizeof((nh->rt6i_exception_bucket)) =3D=3D size= of(int) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long)) || size= of((nh->rt6i_exception_bucket)) =3D=3D sizeof(long long))) __compiletime_as= sert_683(); } while (0); (*(const volatile typeof( _Generic(((nh->rt6i_exce= ption_bucket)), char: (char)0, unsigned char: (unsigned char)0, signed char= : (signed char)0, unsigned short: (unsigned short)0, signed short: (signed = short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned= long: (unsigned long)0, signed long: (signed long)0, unsigned long long: (= unsigned long long)0, signed long long: (signed long long)0, default: ((nh-= >rt6i_exception_bucket)))) *)&((nh->rt6i_exception_bucket))); }); do { } wh= ile (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*(nh->rt6i_exceptio= n_bucket)) *)(__UNIQUE_ID_rcu682)); });=0D =0D =0D if (bucket) {=0D unsigned long p =3D (unsigned long)bucket;=0D =0D p &=3D ~0x1UL;=0D bucket =3D (struct rt6_exception_bucket *)p;=0D }=0D =0D return bucket;=0D }=0D =0D static bool fib6_nh_excptn_bucket_flushed(struct rt6_exception_bucket *buck= et)=0D {=0D unsigned long p =3D (unsigned long)bucket;=0D =0D return !!(p & 0x1UL);=0D }=0D =0D =0D static void fib6_nh_excptn_bucket_set_flushed(struct fib6_nh *nh,=0D spinlock_t *lock)=0D {=0D struct rt6_exception_bucket *bucket;=0D unsigned long p;=0D =0D bucket =3D ({ do { } while (0 && (!((lock_is_held(&(lock)->dep_map))))); ;= ((typeof(*(nh->rt6i_exception_bucket)) *)((nh->rt6i_exception_bucket))); }= );=0D =0D =0D p =3D (unsigned long)bucket;=0D p |=3D 0x1UL;=0D bucket =3D (struct rt6_exception_bucket *)p;=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(bucket); ; if (__builtin_constant= _p(bucket) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attrib= ute__((__noreturn__)) extern void __compiletime_assert_684(void) ; if (!((s= izeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i_= exception_bucket)) =3D=3D sizeof(short) || sizeof((nh->rt6i_exception_bucke= t)) =3D=3D sizeof(int) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof= (long)) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long long))) _= _compiletime_assert_684(); } while (0); do { *(volatile typeof((nh->rt6i_ex= ception_bucket)) *)&((nh->rt6i_exception_bucket)) =3D ((typeof(nh->rt6i_exc= eption_bucket))(_r_a_p__v)); } while (0); } while (0); else do { do { } whi= le (0); do { do { __attribute__((__noreturn__)) extern void __compiletime_a= ssert_685(void) ; if (!((sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(= char) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeof= (*&nh->rt6i_exception_bucket) =3D=3D sizeof(int) || sizeof(*&nh->rt6i_excep= tion_bucket) =3D=3D sizeof(long)))) __compiletime_assert_685(); } while (0)= ; __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do { do { __= attribute__((__noreturn__)) extern void __compiletime_assert_686(void) ; if= (!((sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(char) || sizeof(*&nh= ->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeof(*&nh->rt6i_exceptio= n_bucket) =3D=3D sizeof(int) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D = sizeof(long)) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(long lon= g))) __compiletime_assert_686(); } while (0); do { *(volatile typeof(*&nh->= rt6i_exception_bucket) *)&(*&nh->rt6i_exception_bucket) =3D ((typeof(*((typ= eof(nh->rt6i_exception_bucket))_r_a_p__v)) *)((typeof(nh->rt6i_exception_bu= cket))_r_a_p__v)); } while (0); } while (0); } while (0); } while (0); } wh= ile (0);=0D }=0D =0D static int rt6_insert_exception(struct rt6_info *nrt,=0D const struct fib6_result *res)=0D {=0D struct net *net =3D dev_net(nrt->dst.dev);=0D struct rt6_exception_bucket *bucket;=0D struct fib6_info *f6i =3D res->f6i;=0D struct in6_addr *src_key =3D ((void *)0);=0D struct rt6_exception *rt6_ex;=0D struct fib6_nh *nh =3D res->nh;=0D int max_depth;=0D int err =3D 0;=0D =0D spin_lock_bh(&rt6_exception_lock);=0D =0D bucket =3D ({ do { } while (0 && (!((lock_is_held(&(&rt6_exception_lock)->= dep_map))))); ; ((typeof(*(nh->rt6i_exception_bucket)) *)((nh->rt6i_excepti= on_bucket))); });=0D =0D if (!bucket) {=0D bucket =3D kcalloc((1 << 10), sizeof(*bucket),=0D ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u)));=0D if (!bucket) {=0D err =3D -12;=0D goto out;=0D }=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(bucket); ; if (__builtin_constan= t_p(bucket) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do { __attri= bute__((__noreturn__)) extern void __compiletime_assert_687(void) ; if (!((= sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i= _exception_bucket)) =3D=3D sizeof(short) || sizeof((nh->rt6i_exception_buck= et)) =3D=3D sizeof(int) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeo= f(long)) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long long))) = __compiletime_assert_687(); } while (0); do { *(volatile typeof((nh->rt6i_e= xception_bucket)) *)&((nh->rt6i_exception_bucket)) =3D ((typeof(nh->rt6i_ex= ception_bucket))(_r_a_p__v)); } while (0); } while (0); else do { do { } wh= ile (0); do { do { __attribute__((__noreturn__)) extern void __compiletime_= assert_688(void) ; if (!((sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof= (char) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeo= f(*&nh->rt6i_exception_bucket) =3D=3D sizeof(int) || sizeof(*&nh->rt6i_exce= ption_bucket) =3D=3D sizeof(long)))) __compiletime_assert_688(); } while (0= ); __asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do { do { _= _attribute__((__noreturn__)) extern void __compiletime_assert_689(void) ; i= f (!((sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(char) || sizeof(*&n= h->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeof(*&nh->rt6i_excepti= on_bucket) =3D=3D sizeof(int) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D= sizeof(long)) || sizeof(*&nh->rt6i_exception_bucket) =3D=3D sizeof(long lo= ng))) __compiletime_assert_689(); } while (0); do { *(volatile typeof(*&nh-= >rt6i_exception_bucket) *)&(*&nh->rt6i_exception_bucket) =3D ((typeof(*((ty= peof(nh->rt6i_exception_bucket))_r_a_p__v)) *)((typeof(nh->rt6i_exception_b= ucket))_r_a_p__v)); } while (0); } while (0); } while (0); } while (0); } w= hile (0);=0D } else if (fib6_nh_excptn_bucket_flushed(bucket)) {=0D err =3D -22;=0D goto out;=0D }=0D # 1694 "net/ipv6/route.c"=0D if (dst_metric_raw(&nrt->dst, RTAX_MTU) >=3D fib6_mtu(res)) {=0D err =3D -22;=0D goto out;=0D }=0D =0D rt6_ex =3D __rt6_find_exception_spinlock(&bucket, &nrt->rt6i_dst.addr,=0D src_key);=0D if (rt6_ex)=0D rt6_remove_exception(bucket, rt6_ex);=0D =0D rt6_ex =3D kzalloc(sizeof(*rt6_ex), ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( g= fp_t)0x800u)));=0D if (!rt6_ex) {=0D err =3D -12;=0D goto out;=0D }=0D rt6_ex->rt6i =3D nrt;=0D rt6_ex->stamp =3D jiffies;=0D hlist_add_head_rcu(&rt6_ex->hlist, &bucket->chain);=0D bucket->depth++;=0D net->ipv6.rt6_stats->fib_rt_cache++;=0D =0D =0D max_depth =3D 5 + prandom_u32_max(5);=0D while (bucket->depth > max_depth)=0D rt6_exception_remove_oldest(bucket);=0D =0D out:=0D spin_unlock_bh(&rt6_exception_lock);=0D =0D =0D if (!err) {=0D spin_lock_bh(&f6i->fib6_table->tb6_lock);=0D fib6_update_sernum(net, f6i);=0D spin_unlock_bh(&f6i->fib6_table->tb6_lock);=0D fib6_force_start_gc(net);=0D }=0D =0D return err;=0D }=0D =0D static void fib6_nh_flush_exceptions(struct fib6_nh *nh, struct fib6_info *= =66rom)=0D {=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D struct hlist_node *tmp;=0D int i;=0D =0D spin_lock_bh(&rt6_exception_lock);=0D =0D bucket =3D fib6_nh_get_excptn_bucket(nh, &rt6_exception_lock);=0D if (!bucket)=0D goto out;=0D =0D =0D if (!from)=0D fib6_nh_excptn_bucket_set_flushed(nh, &rt6_exception_lock);=0D =0D for (i =3D 0; i < (1 << 10); i++) {=0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket-= >chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*rt6= _ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), type= of(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_ex) *)= (__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)0); }= ); rt6_ex && ({ tmp =3D rt6_ex->hlist.next; 1; }); rt6_ex =3D ({ typeof(tmp= ) ____ptr =3D (tmp); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Stat= ic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(= *rt6_ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), = typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_ex= ) *)(__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)0= ); })) {=0D if (!from ||=0D ({ typeof(*(rt6_ex->rt6i->from)) *__UNIQUE_ID_rcu690 =3D (typeof(*(r= t6_ex->rt6i->from)) *)({ do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_691(void) ; if (!((sizeof((rt6_ex->rt6i->from)) =3D=3D si= zeof(char) || sizeof((rt6_ex->rt6i->from)) =3D=3D sizeof(short) || sizeof((= rt6_ex->rt6i->from)) =3D=3D sizeof(int) || sizeof((rt6_ex->rt6i->from)) =3D= =3D sizeof(long)) || sizeof((rt6_ex->rt6i->from)) =3D=3D sizeof(long long))= ) __compiletime_assert_691(); } while (0); (*(const volatile typeof( _Gener= ic(((rt6_ex->rt6i->from)), char: (char)0, unsigned char: (unsigned char)0, = signed char: (signed char)0, unsigned short: (unsigned short)0, signed shor= t: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)= 0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned l= ong long: (unsigned long long)0, signed long long: (signed long long)0, def= ault: ((rt6_ex->rt6i->from)))) *)&((rt6_ex->rt6i->from))); }); ; ((typeof(*= (rt6_ex->rt6i->from)) *)(__UNIQUE_ID_rcu690)); }) =3D=3D from)=0D rt6_remove_exception(bucket, rt6_ex);=0D }=0D ({ int __ret_warn_on =3D !!(!from && bucket->depth); if (__builtin_expect= (!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".p= ushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".wor= d" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n= \t" ".popsection" : : "i" ("net/ipv6/route.c"), "i" (1757), "i" ((1 << 0)|(= (1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __bu= iltin_expect(!!(__ret_warn_on), 0); });=0D bucket++;=0D }=0D out:=0D spin_unlock_bh(&rt6_exception_lock);=0D }=0D =0D static int rt6_nh_flush_exceptions(struct fib6_nh *nh, void *arg)=0D {=0D struct fib6_info *f6i =3D arg;=0D =0D fib6_nh_flush_exceptions(nh, f6i);=0D =0D return 0;=0D }=0D =0D void rt6_flush_exceptions(struct fib6_info *f6i)=0D {=0D if (f6i->nh)=0D nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_flush_exceptions,=0D f6i);=0D else=0D fib6_nh_flush_exceptions(f6i->fib6_nh, f6i);=0D }=0D =0D =0D =0D =0D static struct rt6_info *rt6_find_cached_rt(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D const struct in6_addr *src_key =3D ((void *)0);=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D struct rt6_info *ret =3D ((void *)0);=0D # 1810 "net/ipv6/route.c"=0D bucket =3D fib6_nh_get_excptn_bucket(res->nh, ((void *)0));=0D rt6_ex =3D __rt6_find_exception_rcu(&bucket, daddr, src_key);=0D =0D if (rt6_ex && !rt6_check_expired(rt6_ex->rt6i))=0D ret =3D rt6_ex->rt6i;=0D # 1824 "net/ipv6/route.c"=0D return ret;=0D }=0D =0D =0D static int fib6_nh_remove_exception(const struct fib6_nh *nh, int plen,=0D const struct rt6_info *rt)=0D {=0D const struct in6_addr *src_key =3D ((void *)0);=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D int err;=0D =0D if (!({ typeof(*(nh->rt6i_exception_bucket)) *__UNIQUE_ID_rcu692 =3D (type= of(*(nh->rt6i_exception_bucket)) *)({ do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_693(void) ; if (!((sizeof((nh->rt6i_exceptio= n_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i_exception_bucket)) =3D= =3D sizeof(short) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(int)= || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long)) || sizeof((nh-= >rt6i_exception_bucket)) =3D=3D sizeof(long long))) __compiletime_assert_69= 3(); } while (0); (*(const volatile typeof( _Generic(((nh->rt6i_exception_b= ucket)), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: ((nh->rt6i_e= xception_bucket)))) *)&((nh->rt6i_exception_bucket))); }); ; ((typeof(*(nh-= >rt6i_exception_bucket)) *)(__UNIQUE_ID_rcu692)); }))=0D return -2;=0D =0D spin_lock_bh(&rt6_exception_lock);=0D bucket =3D fib6_nh_get_excptn_bucket(nh, &rt6_exception_lock);=0D # 1852 "net/ipv6/route.c"=0D rt6_ex =3D __rt6_find_exception_spinlock(&bucket,=0D &rt->rt6i_dst.addr,=0D src_key);=0D if (rt6_ex) {=0D rt6_remove_exception(bucket, rt6_ex);=0D err =3D 0;=0D } else {=0D err =3D -2;=0D }=0D =0D spin_unlock_bh(&rt6_exception_lock);=0D return err;=0D }=0D =0D struct fib6_nh_excptn_arg {=0D struct rt6_info *rt;=0D int plen;=0D };=0D =0D static int rt6_nh_remove_exception_rt(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_excptn_arg *arg =3D _arg;=0D int err;=0D =0D err =3D fib6_nh_remove_exception(nh, arg->plen, arg->rt);=0D if (err =3D=3D 0)=0D return 1;=0D =0D return 0;=0D }=0D =0D static int rt6_remove_exception_rt(struct rt6_info *rt)=0D {=0D struct fib6_info *from;=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu694 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _695(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_695(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu694)); });=0D if (!from || !(rt->rt6i_flags & 0x01000000))=0D return -22;=0D =0D if (from->nh) {=0D struct fib6_nh_excptn_arg arg =3D {=0D .rt =3D rt,=0D .plen =3D from->fib6_src.plen=0D };=0D int rc;=0D =0D =0D rc =3D nexthop_for_each_fib6_nh(from->nh,=0D rt6_nh_remove_exception_rt,=0D &arg);=0D return rc ? 0 : -2;=0D }=0D =0D return fib6_nh_remove_exception(from->fib6_nh,=0D from->fib6_src.plen, rt);=0D }=0D =0D =0D =0D =0D static void fib6_nh_update_exception(const struct fib6_nh *nh, int plen,=0D const struct rt6_info *rt)=0D {=0D const struct in6_addr *src_key =3D ((void *)0);=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D =0D bucket =3D fib6_nh_get_excptn_bucket(nh, ((void *)0));=0D # 1930 "net/ipv6/route.c"=0D rt6_ex =3D __rt6_find_exception_rcu(&bucket, &rt->rt6i_dst.addr, src_key);= =0D if (rt6_ex)=0D rt6_ex->stamp =3D jiffies;=0D }=0D =0D struct fib6_nh_match_arg {=0D const struct net_device *dev;=0D const struct in6_addr *gw;=0D struct fib6_nh *match;=0D };=0D =0D =0D static int fib6_nh_find_match(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_match_arg *arg =3D _arg;=0D =0D if (arg->dev !=3D nh->nh_common.nhc_dev ||=0D (arg->gw && !nh->nh_common.nhc_gw_family) ||=0D (!arg->gw && nh->nh_common.nhc_gw_family) ||=0D (arg->gw && !ipv6_addr_equal(arg->gw, &nh->nh_common.nhc_gw.ipv6)))=0D return 0;=0D =0D arg->match =3D nh;=0D =0D =0D return 1;=0D }=0D =0D static void rt6_update_exception_stamp_rt(struct rt6_info *rt)=0D {=0D struct fib6_info *from;=0D struct fib6_nh *fib6_nh;=0D =0D rcu_read_lock();=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu696 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _697(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_697(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu696)); });=0D if (!from || !(rt->rt6i_flags & 0x01000000))=0D goto unlock;=0D =0D if (from->nh) {=0D struct fib6_nh_match_arg arg =3D {=0D .dev =3D rt->dst.dev,=0D .gw =3D &rt->rt6i_gateway,=0D };=0D =0D nexthop_for_each_fib6_nh(from->nh, fib6_nh_find_match, &arg);=0D =0D if (!arg.match)=0D goto unlock;=0D fib6_nh =3D arg.match;=0D } else {=0D fib6_nh =3D from->fib6_nh;=0D }=0D fib6_nh_update_exception(fib6_nh, from->fib6_src.plen, rt);=0D unlock:=0D rcu_read_unlock();=0D }=0D =0D static bool rt6_mtu_change_route_allowed(struct inet6_dev *idev,=0D struct rt6_info *rt, int mtu)=0D {=0D # 2001 "net/ipv6/route.c"=0D if (dst_mtu(&rt->dst) >=3D mtu)=0D return true;=0D =0D if (dst_mtu(&rt->dst) =3D=3D idev->cnf.mtu6)=0D return true;=0D =0D return false;=0D }=0D =0D static void rt6_exceptions_update_pmtu(struct inet6_dev *idev,=0D const struct fib6_nh *nh, int mtu)=0D {=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D int i;=0D =0D bucket =3D fib6_nh_get_excptn_bucket(nh, &rt6_exception_lock);=0D if (!bucket)=0D return;=0D =0D for (i =3D 0; i < (1 << 10); i++) {=0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket-= >chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(rt= 6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), ty= peof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6_ex)= ) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((void *= )0); }); rt6_ex; rt6_ex =3D ({ typeof((rt6_ex)->hlist.next) ____ptr =3D ((r= t6_ex)->hlist.next); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Stat= ic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(= *(rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr))= , typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6= _ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((vo= id *)0); })) {=0D struct rt6_info *entry =3D rt6_ex->rt6i;=0D =0D =0D =0D =0D =0D if (dst_metric_raw(&entry->dst, RTAX_MTU) &&=0D rt6_mtu_change_route_allowed(idev, entry, mtu))=0D dst_metric_set(&entry->dst, RTAX_MTU, mtu);=0D }=0D bucket++;=0D }=0D }=0D =0D =0D =0D static void fib6_nh_exceptions_clean_tohost(const struct fib6_nh *nh,=0D const struct in6_addr *gateway)=0D {=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D struct hlist_node *tmp;=0D int i;=0D =0D if (!({ typeof(*(nh->rt6i_exception_bucket)) *__UNIQUE_ID_rcu698 =3D (type= of(*(nh->rt6i_exception_bucket)) *)({ do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_699(void) ; if (!((sizeof((nh->rt6i_exceptio= n_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i_exception_bucket)) =3D= =3D sizeof(short) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(int)= || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long)) || sizeof((nh-= >rt6i_exception_bucket)) =3D=3D sizeof(long long))) __compiletime_assert_69= 9(); } while (0); (*(const volatile typeof( _Generic(((nh->rt6i_exception_b= ucket)), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: ((nh->rt6i_e= xception_bucket)))) *)&((nh->rt6i_exception_bucket))); }); ; ((typeof(*(nh-= >rt6i_exception_bucket)) *)(__UNIQUE_ID_rcu698)); }))=0D return;=0D =0D spin_lock_bh(&rt6_exception_lock);=0D bucket =3D fib6_nh_get_excptn_bucket(nh, &rt6_exception_lock);=0D if (bucket) {=0D for (i =3D 0; i < (1 << 10); i++) {=0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket= ->chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_= assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*rt= 6_ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), typ= eof(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_ex) *= )(__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)0); = }); rt6_ex && ({ tmp =3D rt6_ex->hlist.next; 1; }); rt6_ex =3D ({ typeof(tm= p) ____ptr =3D (tmp); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Sta= tic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof= (*rt6_ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)),= typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_e= x) *)(__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)= 0); })) {=0D =0D struct rt6_info *entry =3D rt6_ex->rt6i;=0D =0D if ((entry->rt6i_flags & (0x0002 | 0x01000000)) =3D=3D=0D (0x0002 | 0x01000000) &&=0D ipv6_addr_equal(gateway,=0D &entry->rt6i_gateway)) {=0D rt6_remove_exception(bucket, rt6_ex);=0D }=0D }=0D bucket++;=0D }=0D }=0D =0D spin_unlock_bh(&rt6_exception_lock);=0D }=0D =0D static void rt6_age_examine_exception(struct rt6_exception_bucket *bucket,= =0D struct rt6_exception *rt6_ex,=0D struct fib6_gc_args *gc_args,=0D unsigned long now)=0D {=0D struct rt6_info *rt =3D rt6_ex->rt6i;=0D =0D =0D =0D =0D =0D =0D =0D if (!(rt->rt6i_flags & 0x00400000)) {=0D if ((({ unsigned long __dummy; typeof(now) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(rt->dst.lastuse += gc_args->timeout) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((= long)((now) - (rt->dst.lastuse + gc_args->timeout)) >=3D 0))) {=0D do { ; } while (0);=0D rt6_remove_exception(bucket, rt6_ex);=0D return;=0D }=0D } else if ((({ unsigned long __dummy; typeof(jiffies) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; typeof(rt->dst.= expires) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long)((rt-= >dst.expires) - (jiffies)) < 0))) {=0D do { ; } while (0);=0D rt6_remove_exception(bucket, rt6_ex);=0D return;=0D }=0D =0D if (rt->rt6i_flags & 0x0002) {=0D struct neighbour *neigh;=0D =0D neigh =3D __ipv6_neigh_lookup_noref(rt->dst.dev, &rt->rt6i_gateway);=0D =0D if (!(neigh && (neigh->flags & (1 << 7)))) {=0D do { ; } while (0);=0D =0D rt6_remove_exception(bucket, rt6_ex);=0D return;=0D }=0D }=0D =0D gc_args->more++;=0D }=0D =0D static void fib6_nh_age_exceptions(const struct fib6_nh *nh,=0D struct fib6_gc_args *gc_args,=0D unsigned long now)=0D {=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D struct hlist_node *tmp;=0D int i;=0D =0D if (!({ typeof(*(nh->rt6i_exception_bucket)) *__UNIQUE_ID_rcu700 =3D (type= of(*(nh->rt6i_exception_bucket)) *)({ do { __attribute__((__noreturn__)) ex= tern void __compiletime_assert_701(void) ; if (!((sizeof((nh->rt6i_exceptio= n_bucket)) =3D=3D sizeof(char) || sizeof((nh->rt6i_exception_bucket)) =3D= =3D sizeof(short) || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(int)= || sizeof((nh->rt6i_exception_bucket)) =3D=3D sizeof(long)) || sizeof((nh-= >rt6i_exception_bucket)) =3D=3D sizeof(long long))) __compiletime_assert_70= 1(); } while (0); (*(const volatile typeof( _Generic(((nh->rt6i_exception_b= ucket)), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: ((nh->rt6i_e= xception_bucket)))) *)&((nh->rt6i_exception_bucket))); }); ; ((typeof(*(nh-= >rt6i_exception_bucket)) *)(__UNIQUE_ID_rcu700)); }))=0D return;=0D =0D rcu_read_lock_bh();=0D spin_lock(&rt6_exception_lock);=0D bucket =3D fib6_nh_get_excptn_bucket(nh, &rt6_exception_lock);=0D if (bucket) {=0D for (i =3D 0; i < (1 << 10); i++) {=0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket= ->chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_= assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*rt= 6_ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), typ= eof(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_ex) *= )(__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)0); = }); rt6_ex && ({ tmp =3D rt6_ex->hlist.next; 1; }); rt6_ex =3D ({ typeof(tm= p) ____ptr =3D (tmp); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Sta= tic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof= (*rt6_ex) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)),= typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*rt6_e= x) *)(__mptr - __builtin_offsetof(typeof(*rt6_ex), hlist))); }) : ((void *)= 0); })) {=0D =0D rt6_age_examine_exception(bucket, rt6_ex,=0D gc_args, now);=0D }=0D bucket++;=0D }=0D }=0D spin_unlock(&rt6_exception_lock);=0D rcu_read_unlock_bh();=0D }=0D =0D struct fib6_nh_age_excptn_arg {=0D struct fib6_gc_args *gc_args;=0D unsigned long now;=0D };=0D =0D static int rt6_nh_age_exceptions(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_age_excptn_arg *arg =3D _arg;=0D =0D fib6_nh_age_exceptions(nh, arg->gc_args, arg->now);=0D return 0;=0D }=0D =0D void rt6_age_exceptions(struct fib6_info *f6i,=0D struct fib6_gc_args *gc_args,=0D unsigned long now)=0D {=0D if (f6i->nh) {=0D struct fib6_nh_age_excptn_arg arg =3D {=0D .gc_args =3D gc_args,=0D .now =3D now=0D };=0D =0D nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_age_exceptions,=0D &arg);=0D } else {=0D fib6_nh_age_exceptions(f6i->fib6_nh, gc_args, now);=0D }=0D }=0D =0D =0D int fib6_table_lookup(struct net *net, struct fib6_table *table, int oif,=0D struct flowi6 *fl6, struct fib6_result *res, int strict)=0D {=0D struct fib6_node *fn, *saved_fn;=0D =0D fn =3D fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr);=0D saved_fn =3D fn;=0D =0D redo_rt6_select:=0D rt6_select(net, fn, oif, res, strict);=0D if (res->f6i =3D=3D net->ipv6.fib6_null_entry) {=0D fn =3D fib6_backtrack(fn, &fl6->saddr);=0D if (fn)=0D goto redo_rt6_select;=0D else if (strict & 0x00000002) {=0D =0D strict &=3D ~0x00000002;=0D fn =3D saved_fn;=0D goto redo_rt6_select;=0D }=0D }=0D =0D trace_fib6_table_lookup(net, res, table, fl6);=0D =0D return 0;=0D }=0D =0D struct rt6_info *ip6_pol_route(struct net *net, struct fib6_table *table,=0D int oif, struct flowi6 *fl6,=0D const struct sk_buff *skb, int flags)=0D {=0D struct fib6_result res =3D {};=0D struct rt6_info *rt =3D ((void *)0);=0D int strict =3D 0;=0D =0D ({ int __ret_warn_on =3D !!((flags & 0x00000080) && !rcu_read_lock_held())= ; if (__builtin_expect(!!(__ret_warn_on), 0)) do { __asm__ __volatile__ ( "= 1:\n\t" "ebreak\n" ".pushsection __bug_table,\"aw\"\n\t" "2:\n\t" ".word" "= 1b - 2b" "\n\t" ".word" " %0 - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" = "\n\t" ".org 2b + %3\n\t" ".popsection" : : "i" ("net/ipv6/route.c"), "i" (= 2209), "i" ((1 << 0)|((1 << 1) | ((9) << 8))), "i" (sizeof(struct bug_entry= ))); } while (0); __builtin_expect(!!(__ret_warn_on), 0); });=0D =0D =0D strict |=3D flags & 0x00000001;=0D strict |=3D flags & 0x00000040;=0D if (net->ipv6.devconf_all->forwarding =3D=3D 0)=0D strict |=3D 0x00000002;=0D =0D rcu_read_lock();=0D =0D fib6_table_lookup(net, table, oif, fl6, &res, strict);=0D if (res.f6i =3D=3D net->ipv6.fib6_null_entry)=0D goto out;=0D =0D fib6_select_path(net, &res, fl6, oif, false, skb, strict);=0D =0D =0D rt =3D rt6_find_cached_rt(&res, &fl6->daddr, &fl6->saddr);=0D if (rt) {=0D goto out;=0D } else if (__builtin_expect(!!((fl6->__fl_common.flowic_flags & 0x02) && != res.nh->nh_common.nhc_gw_family), 0)) {=0D =0D =0D =0D =0D =0D =0D rt =3D ip6_rt_cache_alloc(&res, &fl6->daddr, ((void *)0));=0D =0D if (rt) {=0D =0D =0D =0D =0D =0D rt6_uncached_list_add(rt);=0D rcu_read_unlock();=0D =0D return rt;=0D }=0D } else {=0D =0D local_bh_disable();=0D rt =3D rt6_get_pcpu_route(&res);=0D =0D if (!rt)=0D rt =3D rt6_make_pcpu_route(net, &res);=0D =0D local_bh_enable();=0D }=0D out:=0D if (!rt)=0D rt =3D net->ipv6.ip6_null_entry;=0D if (!(flags & 0x00000080))=0D ip6_hold_safe(net, &rt);=0D rcu_read_unlock();=0D =0D return rt;=0D }=0D extern typeof(ip6_pol_route) ip6_pol_route; extern const char __kstrtab_ip6= _pol_route[]; extern const char __kstrtabns_ip6_pol_route[]; ; asm(" .secti= on \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_pol_rout= e" ": \n" " .asciz \"" "ip6_pol_route" "\" \n" "__kstrtabns_" "ip6= _pol_route" ": \n" " .asciz \"" "" "\" \n" " .previous \n"); = static const struct kernel_symbol __ksymtab_ip6_pol_route __attribute__((se= ction("___ksymtab" "_gpl" "+" "ip6_pol_route"), used)) __attribute__((__ali= gned__(sizeof(void *)))) =3D { (unsigned long)&ip6_pol_route, __kstrtab_ip6= _pol_route, __kstrtabns_ip6_pol_route };=0D =0D static struct rt6_info *ip6_pol_route_input(struct net *net,=0D struct fib6_table *table,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D return ip6_pol_route(net, table, fl6->__fl_common.flowic_iif, fl6, skb, fl= ags);=0D }=0D =0D struct dst_entry *ip6_route_input_lookup(struct net *net,=0D struct net_device *dev,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D if (rt6_need_strict(&fl6->daddr) && dev->type !=3D 779)=0D flags |=3D 0x00000001;=0D =0D return fib6_rule_lookup(net, fl6, skb, flags, ip6_pol_route_input);=0D }=0D extern typeof(ip6_route_input_lookup) ip6_route_input_lookup; extern const = char __kstrtab_ip6_route_input_lookup[]; extern const char __kstrtabns_ip6_= route_input_lookup[]; ; asm(" .section \"__ksymtab_strings\",\"aMS\",%progb= its,1 \n" "__kstrtab_" "ip6_route_input_lookup" ": \n" " .asciz \"" "i= p6_route_input_lookup" "\" \n" "__kstrtabns_" "ip6_route_input_lookup" = ": \n" " .asciz \"" "" "\" \n" " .previous \n"); static const= struct kernel_symbol __ksymtab_ip6_route_input_lookup __attribute__((secti= on("___ksymtab" "_gpl" "+" "ip6_route_input_lookup"), used)) __attribute__(= (__aligned__(sizeof(void *)))) =3D { (unsigned long)&ip6_route_input_lookup= , __kstrtab_ip6_route_input_lookup, __kstrtabns_ip6_route_input_lookup };=0D =0D static void ip6_multipath_l3_keys(const struct sk_buff *skb,=0D struct flow_keys *keys,=0D struct flow_keys *flkeys)=0D {=0D const struct ipv6hdr *outer_iph =3D ipv6_hdr(skb);=0D const struct ipv6hdr *key_iph =3D outer_iph;=0D struct flow_keys *_flkeys =3D flkeys;=0D const struct ipv6hdr *inner_iph;=0D const struct icmp6hdr *icmph;=0D struct ipv6hdr _inner_iph;=0D struct icmp6hdr _icmph;=0D =0D if (__builtin_expect(!!(outer_iph->nexthdr !=3D 58), 1))=0D goto out;=0D =0D icmph =3D skb_header_pointer(skb, skb_transport_offset(skb),=0D sizeof(_icmph), &_icmph);=0D if (!icmph)=0D goto out;=0D =0D if (!icmpv6_is_err(icmph->icmp6_type))=0D goto out;=0D =0D inner_iph =3D skb_header_pointer(skb,=0D skb_transport_offset(skb) + sizeof(*icmph),=0D sizeof(_inner_iph), &_inner_iph);=0D if (!inner_iph)=0D goto out;=0D =0D key_iph =3D inner_iph;=0D _flkeys =3D ((void *)0);=0D out:=0D if (_flkeys) {=0D keys->addrs.v6addrs.src =3D _flkeys->addrs.v6addrs.src;=0D keys->addrs.v6addrs.dst =3D _flkeys->addrs.v6addrs.dst;=0D keys->tags.flow_label =3D _flkeys->tags.flow_label;=0D keys->basic.ip_proto =3D _flkeys->basic.ip_proto;=0D } else {=0D keys->addrs.v6addrs.src =3D key_iph->saddr;=0D keys->addrs.v6addrs.dst =3D key_iph->daddr;=0D keys->tags.flow_label =3D ip6_flowlabel(key_iph);=0D keys->basic.ip_proto =3D key_iph->nexthdr;=0D }=0D }=0D =0D static u32 rt6_multipath_custom_hash_outer(const struct net *net,=0D const struct sk_buff *skb,=0D bool *p_has_inner)=0D {=0D u32 hash_fields =3D ip6_multipath_hash_fields(net);=0D struct flow_keys keys, hash_keys;=0D =0D if (!(hash_fields & (((((1UL))) << (0)) | ((((1UL))) << (1)) | ((((1UL))) = << (2)) | ((((1UL))) << (3)) | ((((1UL))) << (4)) | ((((1UL))) << (5)))))=0D return 0;=0D =0D memset(&hash_keys, 0, sizeof(hash_keys));=0D skb_flow_dissect_flow_keys(skb, &keys, ((((1UL))) << (2)));=0D =0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D if (hash_fields & ((((1UL))) << (0)))=0D hash_keys.addrs.v6addrs.src =3D keys.addrs.v6addrs.src;=0D if (hash_fields & ((((1UL))) << (1)))=0D hash_keys.addrs.v6addrs.dst =3D keys.addrs.v6addrs.dst;=0D if (hash_fields & ((((1UL))) << (2)))=0D hash_keys.basic.ip_proto =3D keys.basic.ip_proto;=0D if (hash_fields & ((((1UL))) << (3)))=0D hash_keys.tags.flow_label =3D keys.tags.flow_label;=0D if (hash_fields & ((((1UL))) << (4)))=0D hash_keys.ports.src =3D keys.ports.src;=0D if (hash_fields & ((((1UL))) << (5)))=0D hash_keys.ports.dst =3D keys.ports.dst;=0D =0D *p_has_inner =3D !!(keys.control.flags & ((((1UL))) << (2)));=0D return flow_hash_from_keys(&hash_keys);=0D }=0D =0D static u32 rt6_multipath_custom_hash_inner(const struct net *net,=0D const struct sk_buff *skb,=0D bool has_inner)=0D {=0D u32 hash_fields =3D ip6_multipath_hash_fields(net);=0D struct flow_keys keys, hash_keys;=0D =0D =0D =0D =0D =0D if (!has_inner)=0D return 0;=0D =0D if (!(hash_fields & (((((1UL))) << (6)) | ((((1UL))) << (7)) | ((((1UL))) = << (8)) | ((((1UL))) << (9)) | ((((1UL))) << (10)) | ((((1UL))) << (11)))))= =0D return 0;=0D =0D memset(&hash_keys, 0, sizeof(hash_keys));=0D skb_flow_dissect_flow_keys(skb, &keys, 0);=0D =0D if (!(keys.control.flags & ((((1UL))) << (2))))=0D return 0;=0D =0D if (keys.control.addr_type =3D=3D FLOW_DISSECTOR_KEY_IPV4_ADDRS) {=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV4_ADDRS;=0D if (hash_fields & ((((1UL))) << (6)))=0D hash_keys.addrs.v4addrs.src =3D keys.addrs.v4addrs.src;=0D if (hash_fields & ((((1UL))) << (7)))=0D hash_keys.addrs.v4addrs.dst =3D keys.addrs.v4addrs.dst;=0D } else if (keys.control.addr_type =3D=3D FLOW_DISSECTOR_KEY_IPV6_ADDRS) {= =0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D if (hash_fields & ((((1UL))) << (6)))=0D hash_keys.addrs.v6addrs.src =3D keys.addrs.v6addrs.src;=0D if (hash_fields & ((((1UL))) << (7)))=0D hash_keys.addrs.v6addrs.dst =3D keys.addrs.v6addrs.dst;=0D if (hash_fields & ((((1UL))) << (9)))=0D hash_keys.tags.flow_label =3D keys.tags.flow_label;=0D }=0D =0D if (hash_fields & ((((1UL))) << (8)))=0D hash_keys.basic.ip_proto =3D keys.basic.ip_proto;=0D if (hash_fields & ((((1UL))) << (10)))=0D hash_keys.ports.src =3D keys.ports.src;=0D if (hash_fields & ((((1UL))) << (11)))=0D hash_keys.ports.dst =3D keys.ports.dst;=0D =0D return flow_hash_from_keys(&hash_keys);=0D }=0D =0D static u32 rt6_multipath_custom_hash_skb(const struct net *net,=0D const struct sk_buff *skb)=0D {=0D u32 mhash, mhash_inner;=0D bool has_inner =3D true;=0D =0D mhash =3D rt6_multipath_custom_hash_outer(net, skb, &has_inner);=0D mhash_inner =3D rt6_multipath_custom_hash_inner(net, skb, has_inner);=0D =0D return jhash_2words(mhash, mhash_inner, 0);=0D }=0D =0D static u32 rt6_multipath_custom_hash_fl6(const struct net *net,=0D const struct flowi6 *fl6)=0D {=0D u32 hash_fields =3D ip6_multipath_hash_fields(net);=0D struct flow_keys hash_keys;=0D =0D if (!(hash_fields & (((((1UL))) << (0)) | ((((1UL))) << (1)) | ((((1UL))) = << (2)) | ((((1UL))) << (3)) | ((((1UL))) << (4)) | ((((1UL))) << (5)))))=0D return 0;=0D =0D memset(&hash_keys, 0, sizeof(hash_keys));=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D if (hash_fields & ((((1UL))) << (0)))=0D hash_keys.addrs.v6addrs.src =3D fl6->saddr;=0D if (hash_fields & ((((1UL))) << (1)))=0D hash_keys.addrs.v6addrs.dst =3D fl6->daddr;=0D if (hash_fields & ((((1UL))) << (2)))=0D hash_keys.basic.ip_proto =3D fl6->__fl_common.flowic_proto;=0D if (hash_fields & ((((1UL))) << (3)))=0D hash_keys.tags.flow_label =3D ( u32)flowi6_get_flowlabel(fl6);=0D if (hash_fields & ((((1UL))) << (4)))=0D hash_keys.ports.src =3D fl6->uli.ports.sport;=0D if (hash_fields & ((((1UL))) << (5)))=0D hash_keys.ports.dst =3D fl6->uli.ports.dport;=0D =0D return flow_hash_from_keys(&hash_keys);=0D }=0D =0D =0D u32 rt6_multipath_hash(const struct net *net, const struct flowi6 *fl6,=0D const struct sk_buff *skb, struct flow_keys *flkeys)=0D {=0D struct flow_keys hash_keys;=0D u32 mhash =3D 0;=0D =0D switch (ip6_multipath_hash_policy(net)) {=0D case 0:=0D memset(&hash_keys, 0, sizeof(hash_keys));=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D if (skb) {=0D ip6_multipath_l3_keys(skb, &hash_keys, flkeys);=0D } else {=0D hash_keys.addrs.v6addrs.src =3D fl6->saddr;=0D hash_keys.addrs.v6addrs.dst =3D fl6->daddr;=0D hash_keys.tags.flow_label =3D ( u32)flowi6_get_flowlabel(fl6);=0D hash_keys.basic.ip_proto =3D fl6->__fl_common.flowic_proto;=0D }=0D mhash =3D flow_hash_from_keys(&hash_keys);=0D break;=0D case 1:=0D if (skb) {=0D unsigned int flag =3D ((((1UL))) << (2));=0D struct flow_keys keys;=0D =0D =0D if (skb->l4_hash)=0D return skb_get_hash_raw(skb) >> 1;=0D =0D memset(&hash_keys, 0, sizeof(hash_keys));=0D =0D if (!flkeys) {=0D skb_flow_dissect_flow_keys(skb, &keys, flag);=0D flkeys =3D &keys;=0D }=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D hash_keys.addrs.v6addrs.src =3D flkeys->addrs.v6addrs.src;=0D hash_keys.addrs.v6addrs.dst =3D flkeys->addrs.v6addrs.dst;=0D hash_keys.ports.src =3D flkeys->ports.src;=0D hash_keys.ports.dst =3D flkeys->ports.dst;=0D hash_keys.basic.ip_proto =3D flkeys->basic.ip_proto;=0D } else {=0D memset(&hash_keys, 0, sizeof(hash_keys));=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D hash_keys.addrs.v6addrs.src =3D fl6->saddr;=0D hash_keys.addrs.v6addrs.dst =3D fl6->daddr;=0D hash_keys.ports.src =3D fl6->uli.ports.sport;=0D hash_keys.ports.dst =3D fl6->uli.ports.dport;=0D hash_keys.basic.ip_proto =3D fl6->__fl_common.flowic_proto;=0D }=0D mhash =3D flow_hash_from_keys(&hash_keys);=0D break;=0D case 2:=0D memset(&hash_keys, 0, sizeof(hash_keys));=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D if (skb) {=0D struct flow_keys keys;=0D =0D if (!flkeys) {=0D skb_flow_dissect_flow_keys(skb, &keys, 0);=0D flkeys =3D &keys;=0D }=0D =0D =0D if (flkeys->control.addr_type =3D=3D FLOW_DISSECTOR_KEY_IPV4_ADDRS) {=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV4_ADDRS;=0D hash_keys.addrs.v4addrs.src =3D flkeys->addrs.v4addrs.src;=0D hash_keys.addrs.v4addrs.dst =3D flkeys->addrs.v4addrs.dst;=0D } else if (flkeys->control.addr_type =3D=3D FLOW_DISSECTOR_KEY_IPV6_ADDR= S) {=0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D hash_keys.addrs.v6addrs.src =3D flkeys->addrs.v6addrs.src;=0D hash_keys.addrs.v6addrs.dst =3D flkeys->addrs.v6addrs.dst;=0D hash_keys.tags.flow_label =3D flkeys->tags.flow_label;=0D hash_keys.basic.ip_proto =3D flkeys->basic.ip_proto;=0D } else {=0D =0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D ip6_multipath_l3_keys(skb, &hash_keys, flkeys);=0D }=0D } else {=0D =0D hash_keys.control.addr_type =3D FLOW_DISSECTOR_KEY_IPV6_ADDRS;=0D hash_keys.addrs.v6addrs.src =3D fl6->saddr;=0D hash_keys.addrs.v6addrs.dst =3D fl6->daddr;=0D hash_keys.tags.flow_label =3D ( u32)flowi6_get_flowlabel(fl6);=0D hash_keys.basic.ip_proto =3D fl6->__fl_common.flowic_proto;=0D }=0D mhash =3D flow_hash_from_keys(&hash_keys);=0D break;=0D case 3:=0D if (skb)=0D mhash =3D rt6_multipath_custom_hash_skb(net, skb);=0D else=0D mhash =3D rt6_multipath_custom_hash_fl6(net, fl6);=0D break;=0D }=0D =0D return mhash >> 1;=0D }=0D =0D =0D void ip6_route_input(struct sk_buff *skb)=0D {=0D const struct ipv6hdr *iph =3D ipv6_hdr(skb);=0D struct net *net =3D dev_net(skb->dev);=0D int flags =3D 0x00000004 | 0x00000080;=0D struct ip_tunnel_info *tun_info;=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_iif =3D skb->dev->ifindex,=0D .daddr =3D iph->daddr,=0D .saddr =3D iph->saddr,=0D .flowlabel =3D ip6_flowinfo(iph),=0D .__fl_common.flowic_mark =3D skb->mark,=0D .__fl_common.flowic_proto =3D iph->nexthdr,=0D };=0D struct flow_keys *flkeys =3D ((void *)0), _flkeys;=0D =0D tun_info =3D skb_tunnel_info(skb);=0D if (tun_info && !(tun_info->mode & 0x01))=0D fl6.__fl_common.flowic_tun_key.tun_id =3D tun_info->key.tun_id;=0D =0D if (fib6_rules_early_flow_dissect(net, skb, &fl6, &_flkeys))=0D flkeys =3D &_flkeys;=0D =0D if (__builtin_expect(!!(fl6.__fl_common.flowic_proto =3D=3D 58), 0))=0D fl6.mp_hash =3D rt6_multipath_hash(net, &fl6, skb, flkeys);=0D skb_dst_drop(skb);=0D skb_dst_set_noref(skb, ip6_route_input_lookup(net, skb->dev,=0D &fl6, skb, flags));=0D }=0D =0D static struct rt6_info *ip6_pol_route_output(struct net *net,=0D struct fib6_table *table,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D return ip6_pol_route(net, table, fl6->__fl_common.flowic_oif, fl6, skb, fl= ags);=0D }=0D =0D struct dst_entry *ip6_route_output_flags_noref(struct net *net,=0D const struct sock *sk,=0D struct flowi6 *fl6, int flags)=0D {=0D bool any_src;=0D =0D if (ipv6_addr_type(&fl6->daddr) &=0D (0x0002U | 0x0020U)) {=0D struct dst_entry *dst;=0D =0D =0D dst =3D l3mdev_link_scope_lookup(net, fl6);=0D if (dst)=0D return dst;=0D }=0D =0D fl6->__fl_common.flowic_iif =3D 1;=0D =0D flags |=3D 0x00000080;=0D any_src =3D ipv6_addr_any(&fl6->saddr);=0D if ((sk && sk->__sk_common.skc_bound_dev_if) || rt6_need_strict(&fl6->dadd= r) ||=0D (fl6->__fl_common.flowic_oif && any_src))=0D flags |=3D 0x00000001;=0D =0D if (!any_src)=0D flags |=3D 0x00000004;=0D else if (sk)=0D flags |=3D rt6_srcprefs2flags(inet6_sk(sk)->srcprefs);=0D =0D return fib6_rule_lookup(net, fl6, ((void *)0), flags, ip6_pol_route_output= );=0D }=0D extern typeof(ip6_route_output_flags_noref) ip6_route_output_flags_noref; e= xtern const char __kstrtab_ip6_route_output_flags_noref[]; extern const cha= r __kstrtabns_ip6_route_output_flags_noref[]; ; asm(" .section \"__ksymtab_= strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_route_output_flags_nore= f" ": \n" " .asciz \"" "ip6_route_output_flags_noref" "\" \n" "__k= strtabns_" "ip6_route_output_flags_noref" ": \n" " .asciz \"" "" "\" = \n" " .previous \n"); static const struct kernel_symbol __ksymtab_i= p6_route_output_flags_noref __attribute__((section("___ksymtab" "_gpl" "+" = "ip6_route_output_flags_noref"), used)) __attribute__((__aligned__(sizeof(v= oid *)))) =3D { (unsigned long)&ip6_route_output_flags_noref, __kstrtab_ip6= _route_output_flags_noref, __kstrtabns_ip6_route_output_flags_noref };=0D =0D struct dst_entry *ip6_route_output_flags(struct net *net,=0D const struct sock *sk,=0D struct flowi6 *fl6,=0D int flags)=0D {=0D struct dst_entry *dst;=0D struct rt6_info *rt6;=0D =0D rcu_read_lock();=0D dst =3D ip6_route_output_flags_noref(net, sk, fl6, flags);=0D rt6 =3D (struct rt6_info *)dst;=0D =0D if (list_empty(&rt6->rt6i_uncached) && !dst_hold_safe(dst)) {=0D dst =3D &net->ipv6.ip6_null_entry->dst;=0D dst_hold(dst);=0D }=0D rcu_read_unlock();=0D =0D return dst;=0D }=0D extern typeof(ip6_route_output_flags) ip6_route_output_flags; extern const = char __kstrtab_ip6_route_output_flags[]; extern const char __kstrtabns_ip6_= route_output_flags[]; ; asm(" .section \"__ksymtab_strings\",\"aMS\",%progb= its,1 \n" "__kstrtab_" "ip6_route_output_flags" ": \n" " .asciz \"" "i= p6_route_output_flags" "\" \n" "__kstrtabns_" "ip6_route_output_flags" = ": \n" " .asciz \"" "" "\" \n" " .previous \n"); static const= struct kernel_symbol __ksymtab_ip6_route_output_flags __attribute__((secti= on("___ksymtab" "_gpl" "+" "ip6_route_output_flags"), used)) __attribute__(= (__aligned__(sizeof(void *)))) =3D { (unsigned long)&ip6_route_output_flags= , __kstrtab_ip6_route_output_flags, __kstrtabns_ip6_route_output_flags };=0D =0D struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *ds= t_orig)=0D {=0D struct rt6_info *rt, *ort =3D (struct rt6_info *) dst_orig;=0D struct net_device *loopback_dev =3D net->loopback_dev;=0D struct dst_entry *new =3D ((void *)0);=0D =0D rt =3D dst_alloc(&ip6_dst_blackhole_ops, loopback_dev, 1,=0D 2, 0);=0D if (rt) {=0D rt6_info_init(rt);=0D atomic_inc(&net->ipv6.rt6_stats->fib_rt_alloc);=0D =0D new =3D &rt->dst;=0D new->__use =3D 1;=0D new->input =3D dst_discard;=0D new->output =3D dst_discard_out;=0D =0D dst_copy_metrics(new, &ort->dst);=0D =0D rt->rt6i_idev =3D in6_dev_get(loopback_dev);=0D rt->rt6i_gateway =3D ort->rt6i_gateway;=0D rt->rt6i_flags =3D ort->rt6i_flags & ~0x40000000;=0D =0D memcpy(&rt->rt6i_dst, &ort->rt6i_dst, sizeof(struct rt6key));=0D =0D =0D =0D }=0D =0D dst_release(dst_orig);=0D return new ? new : ERR_PTR(-12);=0D }=0D =0D =0D =0D =0D =0D static bool fib6_check(struct fib6_info *f6i, u32 cookie)=0D {=0D u32 rt_cookie =3D 0;=0D =0D if (!fib6_get_cookie_safe(f6i, &rt_cookie) || rt_cookie !=3D cookie)=0D return false;=0D =0D if (fib6_check_expired(f6i))=0D return false;=0D =0D return true;=0D }=0D =0D static struct dst_entry *rt6_check(struct rt6_info *rt,=0D struct fib6_info *from,=0D u32 cookie)=0D {=0D u32 rt_cookie =3D 0;=0D =0D if (!from || !fib6_get_cookie_safe(from, &rt_cookie) ||=0D rt_cookie !=3D cookie)=0D return ((void *)0);=0D =0D if (rt6_check_expired(rt))=0D return ((void *)0);=0D =0D return &rt->dst;=0D }=0D =0D static struct dst_entry *rt6_dst_from_check(struct rt6_info *rt,=0D struct fib6_info *from,=0D u32 cookie)=0D {=0D if (!__rt6_check_expired(rt) &&=0D rt->dst.obsolete =3D=3D -1 &&=0D fib6_check(from, cookie))=0D return &rt->dst;=0D else=0D return ((void *)0);=0D }=0D =0D static struct dst_entry *ip6_dst_check(struct dst_entry *dst,=0D u32 cookie)=0D {=0D struct dst_entry *dst_ret;=0D struct fib6_info *from;=0D struct rt6_info *rt;=0D =0D rt =3D ({ void *__mptr =3D (void *)(dst); _Static_assert(__builtin_types_c= ompatible_p(typeof(*(dst)), typeof(((struct rt6_info *)0)->dst)) || __built= in_types_compatible_p(typeof(*(dst)), typeof(void)), "pointer type mismatch= in container_of()"); ((struct rt6_info *)(__mptr - __builtin_offsetof(stru= ct rt6_info, dst))); });=0D =0D if (rt->sernum)=0D return rt6_is_valid(rt) ? dst : ((void *)0);=0D =0D rcu_read_lock();=0D =0D =0D =0D =0D =0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu702 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _703(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_703(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu702)); });=0D =0D if (from && (rt->rt6i_flags & 0x40000000 ||=0D __builtin_expect(!!(!list_empty(&rt->rt6i_uncached)), 0)))=0D dst_ret =3D rt6_dst_from_check(rt, from, cookie);=0D else=0D dst_ret =3D rt6_check(rt, from, cookie);=0D =0D rcu_read_unlock();=0D =0D return dst_ret;=0D }=0D ;=0D =0D static struct dst_entry *ip6_negative_advice(struct dst_entry *dst)=0D {=0D struct rt6_info *rt =3D (struct rt6_info *) dst;=0D =0D if (rt) {=0D if (rt->rt6i_flags & 0x01000000) {=0D rcu_read_lock();=0D if (rt6_check_expired(rt)) {=0D rt6_remove_exception_rt(rt);=0D dst =3D ((void *)0);=0D }=0D rcu_read_unlock();=0D } else {=0D dst_release(dst);=0D dst =3D ((void *)0);=0D }=0D }=0D return dst;=0D }=0D =0D static void ip6_link_failure(struct sk_buff *skb)=0D {=0D struct rt6_info *rt;=0D =0D icmpv6_send(skb, 1, 3, 0);=0D =0D rt =3D (struct rt6_info *) skb_dst(skb);=0D if (rt) {=0D rcu_read_lock();=0D if (rt->rt6i_flags & 0x01000000) {=0D rt6_remove_exception_rt(rt);=0D } else {=0D struct fib6_info *from;=0D struct fib6_node *fn;=0D =0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu704 =3D (typeof(*(rt->fr= om)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_705(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt-= >from)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || si= zeof((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(l= ong long))) __compiletime_assert_705(); } while (0); (*(const volatile type= of( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, = signed char: (signed char)0, unsigned short: (unsigned short)0, signed shor= t: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)= 0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned l= ong long: (unsigned long long)0, signed long long: (signed long long)0, def= ault: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu= _read_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu704)); });= =0D if (from) {=0D fn =3D ({ typeof(*(from->fib6_node)) *__UNIQUE_ID_rcu706 =3D (typeof(*(= =66rom->fib6_node)) *)({ do { __attribute__((__noreturn__)) extern void __c= ompiletime_assert_707(void) ; if (!((sizeof((from->fib6_node)) =3D=3D sizeo= f(char) || sizeof((from->fib6_node)) =3D=3D sizeof(short) || sizeof((from->= fib6_node)) =3D=3D sizeof(int) || sizeof((from->fib6_node)) =3D=3D sizeof(l= ong)) || sizeof((from->fib6_node)) =3D=3D sizeof(long long))) __compiletime= _assert_707(); } while (0); (*(const volatile typeof( _Generic(((from->fib6= _node)), char: (char)0, unsigned char: (unsigned char)0, signed char: (sign= ed char)0, unsigned short: (unsigned short)0, signed short: (signed short)0= , unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: = (unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigne= d long long)0, signed long long: (signed long long)0, default: ((from->fib6= _node)))) *)&((from->fib6_node))); }); do { } while (0 && (!((0) || rcu_rea= d_lock_held()))); ; ((typeof(*(from->fib6_node)) *)(__UNIQUE_ID_rcu706)); }= );=0D if (fn && (rt->rt6i_flags & 0x00010000))=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_asse= rt_708(void) ; if (!((sizeof(fn->fn_sernum) =3D=3D sizeof(char) || sizeof(f= n->fn_sernum) =3D=3D sizeof(short) || sizeof(fn->fn_sernum) =3D=3D sizeof(i= nt) || sizeof(fn->fn_sernum) =3D=3D sizeof(long)) || sizeof(fn->fn_sernum) = =3D=3D sizeof(long long))) __compiletime_assert_708(); } while (0); do { *(= volatile typeof(fn->fn_sernum) *)&(fn->fn_sernum) =3D (-1); } while (0); } = while (0);=0D }=0D }=0D rcu_read_unlock();=0D }=0D }=0D =0D static void rt6_update_expires(struct rt6_info *rt0, int timeout)=0D {=0D if (!(rt0->rt6i_flags & 0x00400000)) {=0D struct fib6_info *from;=0D =0D rcu_read_lock();=0D from =3D ({ typeof(*(rt0->from)) *__UNIQUE_ID_rcu709 =3D (typeof(*(rt0->f= rom)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_710(void) ; if (!((sizeof((rt0->from)) =3D=3D sizeof(char) || sizeof((r= t0->from)) =3D=3D sizeof(short) || sizeof((rt0->from)) =3D=3D sizeof(int) |= | sizeof((rt0->from)) =3D=3D sizeof(long)) || sizeof((rt0->from)) =3D=3D si= zeof(long long))) __compiletime_assert_710(); } while (0); (*(const volatil= e typeof( _Generic(((rt0->from)), char: (char)0, unsigned char: (unsigned c= har)0, signed char: (signed char)0, unsigned short: (unsigned short)0, sign= ed short: (signed short)0, unsigned int: (unsigned int)0, signed int: (sign= ed int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, uns= igned long long: (unsigned long long)0, signed long long: (signed long long= )0, default: ((rt0->from)))) *)&((rt0->from))); }); do { } while (0 && (!((= 0) || rcu_read_lock_held()))); ; ((typeof(*(rt0->from)) *)(__UNIQUE_ID_rcu7= 09)); });=0D if (from)=0D rt0->dst.expires =3D from->expires;=0D rcu_read_unlock();=0D }=0D =0D dst_set_expires(&rt0->dst, timeout);=0D rt0->rt6i_flags |=3D 0x00400000;=0D }=0D =0D static void rt6_do_update_pmtu(struct rt6_info *rt, u32 mtu)=0D {=0D struct net *net =3D dev_net(rt->dst.dev);=0D =0D dst_metric_set(&rt->dst, RTAX_MTU, mtu);=0D rt->rt6i_flags |=3D 0x0020;=0D rt6_update_expires(rt, net->ipv6.sysctl.ip6_rt_mtu_expires);=0D }=0D =0D static bool rt6_cache_allowed_for_pmtu(const struct rt6_info *rt)=0D {=0D return !(rt->rt6i_flags & 0x01000000) &&=0D (rt->rt6i_flags & 0x40000000 || ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu71= 1 =3D (typeof(*(rt->from)) *)({ do { __attribute__((__noreturn__)) extern v= oid __compiletime_assert_712(void) ; if (!((sizeof((rt->from)) =3D=3D sizeo= f(char) || sizeof((rt->from)) =3D=3D sizeof(short) || sizeof((rt->from)) = =3D=3D sizeof(int) || sizeof((rt->from)) =3D=3D sizeof(long)) || sizeof((rt= ->from)) =3D=3D sizeof(long long))) __compiletime_assert_712(); } while (0)= ; (*(const volatile typeof( _Generic(((rt->from)), char: (char)0, unsigned = char: (unsigned char)0, signed char: (signed char)0, unsigned short: (unsig= ned short)0, signed short: (signed short)0, unsigned int: (unsigned int)0, = signed int: (signed int)0, unsigned long: (unsigned long)0, signed long: (s= igned long)0, unsigned long long: (unsigned long long)0, signed long long: = (signed long long)0, default: ((rt->from)))) *)&((rt->from))); }); ; ((type= of(*(rt->from)) *)(__UNIQUE_ID_rcu711)); }));=0D }=0D =0D static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *= sk,=0D const struct ipv6hdr *iph, u32 mtu,=0D bool confirm_neigh)=0D {=0D const struct in6_addr *daddr, *saddr;=0D struct rt6_info *rt6 =3D (struct rt6_info *)dst;=0D =0D =0D =0D =0D =0D =0D if (iph) {=0D daddr =3D &iph->daddr;=0D saddr =3D &iph->saddr;=0D } else if (sk) {=0D daddr =3D &sk->__sk_common.skc_v6_daddr;=0D saddr =3D &inet6_sk(sk)->saddr;=0D } else {=0D daddr =3D ((void *)0);=0D saddr =3D ((void *)0);=0D }=0D =0D if (confirm_neigh)=0D dst_confirm_neigh(dst, daddr);=0D =0D if (mtu < 1280)=0D return;=0D if (mtu >=3D dst_mtu(dst))=0D return;=0D =0D if (!rt6_cache_allowed_for_pmtu(rt6)) {=0D rt6_do_update_pmtu(rt6, mtu);=0D =0D if (rt6->rt6i_flags & 0x01000000)=0D rt6_update_exception_stamp_rt(rt6);=0D } else if (daddr) {=0D struct fib6_result res =3D {};=0D struct rt6_info *nrt6;=0D =0D rcu_read_lock();=0D res.f6i =3D ({ typeof(*(rt6->from)) *__UNIQUE_ID_rcu713 =3D (typeof(*(rt6= ->from)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_= assert_714(void) ; if (!((sizeof((rt6->from)) =3D=3D sizeof(char) || sizeof= ((rt6->from)) =3D=3D sizeof(short) || sizeof((rt6->from)) =3D=3D sizeof(int= ) || sizeof((rt6->from)) =3D=3D sizeof(long)) || sizeof((rt6->from)) =3D=3D= sizeof(long long))) __compiletime_assert_714(); } while (0); (*(const vola= tile typeof( _Generic(((rt6->from)), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: ((rt6->from)))) *)&((rt6->from))); }); do { } while (0 && (= !((0) || rcu_read_lock_held()))); ; ((typeof(*(rt6->from)) *)(__UNIQUE_ID_r= cu713)); });=0D if (!res.f6i)=0D goto out_unlock;=0D =0D res.fib6_flags =3D res.f6i->fib6_flags;=0D res.fib6_type =3D res.f6i->fib6_type;=0D =0D if (res.f6i->nh) {=0D struct fib6_nh_match_arg arg =3D {=0D .dev =3D dst->dev,=0D .gw =3D &rt6->rt6i_gateway,=0D };=0D =0D nexthop_for_each_fib6_nh(res.f6i->nh,=0D fib6_nh_find_match, &arg);=0D =0D =0D =0D =0D if (!arg.match)=0D goto out_unlock;=0D =0D res.nh =3D arg.match;=0D } else {=0D res.nh =3D res.f6i->fib6_nh;=0D }=0D =0D nrt6 =3D ip6_rt_cache_alloc(&res, daddr, saddr);=0D if (nrt6) {=0D rt6_do_update_pmtu(nrt6, mtu);=0D if (rt6_insert_exception(nrt6, &res))=0D dst_release_immediate(&nrt6->dst);=0D }=0D out_unlock:=0D rcu_read_unlock();=0D }=0D }=0D =0D static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,=0D struct sk_buff *skb, u32 mtu,=0D bool confirm_neigh)=0D {=0D __ip6_rt_update_pmtu(dst, sk, skb ? ipv6_hdr(skb) : ((void *)0), mtu,=0D confirm_neigh);=0D }=0D =0D void ip6_update_pmtu(struct sk_buff *skb, struct net *net, __be32 mtu,=0D int oif, u32 mark, kuid_t uid)=0D {=0D const struct ipv6hdr *iph =3D (struct ipv6hdr *) skb->data;=0D struct dst_entry *dst;=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_oif =3D oif,=0D .__fl_common.flowic_mark =3D mark ? mark : ((net)->ipv6.sysctl.fwmark_ref= lect ? (skb->mark) : 0),=0D .daddr =3D iph->daddr,=0D .saddr =3D iph->saddr,=0D .flowlabel =3D ip6_flowinfo(iph),=0D .__fl_common.flowic_uid =3D uid,=0D };=0D =0D dst =3D ip6_route_output(net, ((void *)0), &fl6);=0D if (!dst->error)=0D __ip6_rt_update_pmtu(dst, ((void *)0), iph, (__builtin_constant_p((__u32)= (( __u32)(__be32)(mtu))) ? ((__u32)( (((__u32)(( __u32)(__be32)(mtu)) & (__= u32)0x000000ffUL) << 24) | (((__u32)(( __u32)(__be32)(mtu)) & (__u32)0x0000= ff00UL) << 8) | (((__u32)(( __u32)(__be32)(mtu)) & (__u32)0x00ff0000UL) >> = 8) | (((__u32)(( __u32)(__be32)(mtu)) & (__u32)0xff000000UL) >> 24))) : __f= swab32(( __u32)(__be32)(mtu))), true);=0D dst_release(dst);=0D }=0D extern typeof(ip6_update_pmtu) ip6_update_pmtu; extern const char __kstrtab= _ip6_update_pmtu[]; extern const char __kstrtabns_ip6_update_pmtu[]; ; asm(= " .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_= update_pmtu" ": \n" " .asciz \"" "ip6_update_pmtu" "\" \n" "__kstr= tabns_" "ip6_update_pmtu" ": \n" " .asciz \"" "" "\" \n" " .previo= us \n"); static const struct kernel_symbol __ksymtab_ip6_update_pmtu _= _attribute__((section("___ksymtab" "_gpl" "+" "ip6_update_pmtu"), used)) __= attribute__((__aligned__(sizeof(void *)))) =3D { (unsigned long)&ip6_update= _pmtu, __kstrtab_ip6_update_pmtu, __kstrtabns_ip6_update_pmtu };=0D =0D void ip6_sk_update_pmtu(struct sk_buff *skb, struct sock *sk, __be32 mtu)=0D {=0D int oif =3D sk->__sk_common.skc_bound_dev_if;=0D struct dst_entry *dst;=0D =0D if (!oif && skb->dev)=0D oif =3D l3mdev_master_ifindex(skb->dev);=0D =0D ip6_update_pmtu(skb, sock_net(sk), mtu, oif, sk->sk_mark, sk->sk_uid);=0D =0D dst =3D __sk_dst_get(sk);=0D if (!dst || !dst->obsolete ||=0D dst->ops->check(dst, inet6_sk(sk)->dst_cookie))=0D return;=0D =0D spin_lock(&((sk)->sk_lock.slock));=0D if (!sock_owned_by_user(sk) && !ipv6_addr_v4mapped(&sk->__sk_common.skc_v6= _daddr))=0D ip6_datagram_dst_update(sk, false);=0D spin_unlock(&((sk)->sk_lock.slock));=0D }=0D extern typeof(ip6_sk_update_pmtu) ip6_sk_update_pmtu; extern const char __k= strtab_ip6_sk_update_pmtu[]; extern const char __kstrtabns_ip6_sk_update_pm= tu[]; ; asm(" .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kst= rtab_" "ip6_sk_update_pmtu" ": \n" " .asciz \"" "ip6_sk_update_pmtu" "= \" \n" "__kstrtabns_" "ip6_sk_update_pmtu" ": \n" " .asciz \"" "" = "\" \n" " .previous \n"); static const struct kernel_symbol __ksym= tab_ip6_sk_update_pmtu __attribute__((section("___ksymtab" "_gpl" "+" "ip6_= sk_update_pmtu"), used)) __attribute__((__aligned__(sizeof(void *)))) =3D {= (unsigned long)&ip6_sk_update_pmtu, __kstrtab_ip6_sk_update_pmtu, __kstrta= bns_ip6_sk_update_pmtu };=0D =0D void ip6_sk_dst_store_flow(struct sock *sk, struct dst_entry *dst,=0D const struct flowi6 *fl6)=0D {=0D =0D =0D =0D =0D ip6_dst_store(sk, dst,=0D ipv6_addr_equal(&fl6->daddr, &sk->__sk_common.skc_v6_daddr) ?=0D &sk->__sk_common.skc_v6_daddr : ((void *)0),=0D =0D =0D =0D =0D ((void *)0));=0D }=0D =0D static bool ip6_redirect_nh_match(const struct fib6_result *res,=0D struct flowi6 *fl6,=0D const struct in6_addr *gw,=0D struct rt6_info **ret)=0D {=0D const struct fib6_nh *nh =3D res->nh;=0D =0D if (nh->nh_common.nhc_flags & 1 || !nh->nh_common.nhc_gw_family ||=0D fl6->__fl_common.flowic_oif !=3D nh->nh_common.nhc_dev->ifindex)=0D return false;=0D =0D =0D =0D =0D =0D =0D if (!ipv6_addr_equal(gw, &nh->nh_common.nhc_gw.ipv6)) {=0D struct rt6_info *rt_cache;=0D =0D rt_cache =3D rt6_find_cached_rt(res, &fl6->daddr, &fl6->saddr);=0D if (rt_cache &&=0D ipv6_addr_equal(gw, &rt_cache->rt6i_gateway)) {=0D *ret =3D rt_cache;=0D return true;=0D }=0D return false;=0D }=0D return true;=0D }=0D =0D struct fib6_nh_rd_arg {=0D struct fib6_result *res;=0D struct flowi6 *fl6;=0D const struct in6_addr *gw;=0D struct rt6_info **ret;=0D };=0D =0D static int fib6_nh_redirect_match(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_rd_arg *arg =3D _arg;=0D =0D arg->res->nh =3D nh;=0D return ip6_redirect_nh_match(arg->res, arg->fl6, arg->gw, arg->ret);=0D }=0D =0D =0D struct ip6rd_flowi {=0D struct flowi6 fl6;=0D struct in6_addr gateway;=0D };=0D =0D static struct rt6_info *__ip6_route_redirect(struct net *net,=0D struct fib6_table *table,=0D struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D int flags)=0D {=0D struct ip6rd_flowi *rdfl =3D (struct ip6rd_flowi *)fl6;=0D struct rt6_info *ret =3D ((void *)0);=0D struct fib6_result res =3D {};=0D struct fib6_nh_rd_arg arg =3D {=0D .res =3D &res,=0D .fl6 =3D fl6,=0D .gw =3D &rdfl->gateway,=0D .ret =3D &ret=0D };=0D struct fib6_info *rt;=0D struct fib6_node *fn;=0D # 3065 "net/ipv6/route.c"=0D rcu_read_lock();=0D fn =3D fib6_node_lookup(&table->tb6_root, &fl6->daddr, &fl6->saddr);=0D restart:=0D for (rt =3D ({ typeof(*((fn)->leaf)) *__UNIQUE_ID_rcu715 =3D (typeof(*((fn= )->leaf)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime= _assert_716(void) ; if (!((sizeof(((fn)->leaf)) =3D=3D sizeof(char) || size= of(((fn)->leaf)) =3D=3D sizeof(short) || sizeof(((fn)->leaf)) =3D=3D sizeof= (int) || sizeof(((fn)->leaf)) =3D=3D sizeof(long)) || sizeof(((fn)->leaf)) = =3D=3D sizeof(long long))) __compiletime_assert_716(); } while (0); (*(cons= t volatile typeof( _Generic((((fn)->leaf)), char: (char)0, unsigned char: (= unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sho= rt)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed = int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed l= ong)0, unsigned long long: (unsigned long long)0, signed long long: (signed= long long)0, default: (((fn)->leaf)))) *)&(((fn)->leaf))); }); do { } whil= e (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*((fn)->leaf)) *)(__U= NIQUE_ID_rcu715)); }); rt; rt =3D ({ typeof(*(rt->fib6_next)) *__UNIQUE_ID_= rcu717 =3D (typeof(*(rt->fib6_next)) *)({ do { __attribute__((__noreturn__)= ) extern void __compiletime_assert_718(void) ; if (!((sizeof((rt->fib6_next= )) =3D=3D sizeof(char) || sizeof((rt->fib6_next)) =3D=3D sizeof(short) || s= izeof((rt->fib6_next)) =3D=3D sizeof(int) || sizeof((rt->fib6_next)) =3D=3D= sizeof(long)) || sizeof((rt->fib6_next)) =3D=3D sizeof(long long))) __comp= iletime_assert_718(); } while (0); (*(const volatile typeof( _Generic(((rt-= >fib6_next)), char: (char)0, unsigned char: (unsigned char)0, signed char: = (signed char)0, unsigned short: (unsigned short)0, signed short: (signed sh= ort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned l= ong: (unsigned long)0, signed long: (signed long)0, unsigned long long: (un= signed long long)0, signed long long: (signed long long)0, default: ((rt->f= ib6_next)))) *)&((rt->fib6_next))); }); do { } while (0 && (!((0) || rcu_re= ad_lock_held()))); ; ((typeof(*(rt->fib6_next)) *)(__UNIQUE_ID_rcu717)); })= ) {=0D res.f6i =3D rt;=0D if (fib6_check_expired(rt))=0D continue;=0D if (rt->fib6_flags & 0x0200)=0D break;=0D if (__builtin_expect(!!(rt->nh), 0)) {=0D if (nexthop_is_blackhole(rt->nh))=0D continue;=0D =0D if (nexthop_for_each_fib6_nh(rt->nh,=0D fib6_nh_redirect_match,=0D &arg))=0D goto out;=0D } else {=0D res.nh =3D rt->fib6_nh;=0D if (ip6_redirect_nh_match(&res, fl6, &rdfl->gateway,=0D &ret))=0D goto out;=0D }=0D }=0D =0D if (!rt)=0D rt =3D net->ipv6.fib6_null_entry;=0D else if (rt->fib6_flags & 0x0200) {=0D ret =3D net->ipv6.ip6_null_entry;=0D goto out;=0D }=0D =0D if (rt =3D=3D net->ipv6.fib6_null_entry) {=0D fn =3D fib6_backtrack(fn, &fl6->saddr);=0D if (fn)=0D goto restart;=0D }=0D =0D res.f6i =3D rt;=0D res.nh =3D rt->fib6_nh;=0D out:=0D if (ret) {=0D ip6_hold_safe(net, &ret);=0D } else {=0D res.fib6_flags =3D res.f6i->fib6_flags;=0D res.fib6_type =3D res.f6i->fib6_type;=0D ret =3D ip6_create_rt_rcu(&res);=0D }=0D =0D rcu_read_unlock();=0D =0D trace_fib6_table_lookup(net, &res, table, fl6);=0D return ret;=0D };=0D =0D static struct dst_entry *ip6_route_redirect(struct net *net,=0D const struct flowi6 *fl6,=0D const struct sk_buff *skb,=0D const struct in6_addr *gateway)=0D {=0D int flags =3D 0x00000004;=0D struct ip6rd_flowi rdfl;=0D =0D rdfl.fl6 =3D *fl6;=0D rdfl.gateway =3D *gateway;=0D =0D return fib6_rule_lookup(net, &rdfl.fl6, skb,=0D flags, __ip6_route_redirect);=0D }=0D =0D void ip6_redirect(struct sk_buff *skb, struct net *net, int oif, u32 mark,= =0D kuid_t uid)=0D {=0D const struct ipv6hdr *iph =3D (struct ipv6hdr *) skb->data;=0D struct dst_entry *dst;=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_iif =3D 1,=0D .__fl_common.flowic_oif =3D oif,=0D .__fl_common.flowic_mark =3D mark,=0D .daddr =3D iph->daddr,=0D .saddr =3D iph->saddr,=0D .flowlabel =3D ip6_flowinfo(iph),=0D .__fl_common.flowic_uid =3D uid,=0D };=0D =0D dst =3D ip6_route_redirect(net, &fl6, skb, &ipv6_hdr(skb)->saddr);=0D rt6_do_redirect(dst, ((void *)0), skb);=0D dst_release(dst);=0D }=0D extern typeof(ip6_redirect) ip6_redirect; extern const char __kstrtab_ip6_r= edirect[]; extern const char __kstrtabns_ip6_redirect[]; ; asm(" .section \= "__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_redirect" ":= \n" " .asciz \"" "ip6_redirect" "\" \n" "__kstrtabns_" "ip6_redir= ect" ": \n" " .asciz \"" "" "\" \n" " .previous \n"); static = const struct kernel_symbol __ksymtab_ip6_redirect __attribute__((section("_= __ksymtab" "_gpl" "+" "ip6_redirect"), used)) __attribute__((__aligned__(si= zeof(void *)))) =3D { (unsigned long)&ip6_redirect, __kstrtab_ip6_redirect,= __kstrtabns_ip6_redirect };=0D =0D void ip6_redirect_no_header(struct sk_buff *skb, struct net *net, int oif)= =0D {=0D const struct ipv6hdr *iph =3D ipv6_hdr(skb);=0D const struct rd_msg *msg =3D (struct rd_msg *)icmp6_hdr(skb);=0D struct dst_entry *dst;=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_iif =3D 1,=0D .__fl_common.flowic_oif =3D oif,=0D .daddr =3D msg->dest,=0D .saddr =3D iph->daddr,=0D .__fl_common.flowic_uid =3D sock_net_uid(net, ((void *)0)),=0D };=0D =0D dst =3D ip6_route_redirect(net, &fl6, skb, &iph->saddr);=0D rt6_do_redirect(dst, ((void *)0), skb);=0D dst_release(dst);=0D }=0D =0D void ip6_sk_redirect(struct sk_buff *skb, struct sock *sk)=0D {=0D ip6_redirect(skb, sock_net(sk), sk->__sk_common.skc_bound_dev_if, sk->sk_m= ark,=0D sk->sk_uid);=0D }=0D extern typeof(ip6_sk_redirect) ip6_sk_redirect; extern const char __kstrtab= _ip6_sk_redirect[]; extern const char __kstrtabns_ip6_sk_redirect[]; ; asm(= " .section \"__ksymtab_strings\",\"aMS\",%progbits,1 \n" "__kstrtab_" "ip6_= sk_redirect" ": \n" " .asciz \"" "ip6_sk_redirect" "\" \n" "__kstr= tabns_" "ip6_sk_redirect" ": \n" " .asciz \"" "" "\" \n" " .previo= us \n"); static const struct kernel_symbol __ksymtab_ip6_sk_redirect _= _attribute__((section("___ksymtab" "_gpl" "+" "ip6_sk_redirect"), used)) __= attribute__((__aligned__(sizeof(void *)))) =3D { (unsigned long)&ip6_sk_red= irect, __kstrtab_ip6_sk_redirect, __kstrtabns_ip6_sk_redirect };=0D =0D static unsigned int ip6_default_advmss(const struct dst_entry *dst)=0D {=0D struct net_device *dev =3D dst->dev;=0D unsigned int mtu =3D dst_mtu(dst);=0D struct net *net =3D dev_net(dev);=0D =0D mtu -=3D sizeof(struct ipv6hdr) + sizeof(struct tcphdr);=0D =0D if (mtu < net->ipv6.sysctl.ip6_rt_min_advmss)=0D mtu =3D net->ipv6.sysctl.ip6_rt_min_advmss;=0D =0D =0D =0D =0D =0D =0D =0D if (mtu > 65535 - sizeof(struct tcphdr))=0D mtu =3D 65535;=0D return mtu;=0D }=0D =0D static unsigned int ip6_mtu(const struct dst_entry *dst)=0D {=0D return ip6_dst_mtu_maybe_forward(dst, false);=0D }=0D ;=0D # 3217 "net/ipv6/route.c"=0D u32 ip6_mtu_from_fib6(const struct fib6_result *res,=0D const struct in6_addr *daddr,=0D const struct in6_addr *saddr)=0D {=0D const struct fib6_nh *nh =3D res->nh;=0D struct fib6_info *f6i =3D res->f6i;=0D struct inet6_dev *idev;=0D struct rt6_info *rt;=0D u32 mtu =3D 0;=0D =0D if (__builtin_expect(!!(fib6_metric_locked(f6i, RTAX_MTU)), 0)) {=0D mtu =3D f6i->fib6_metrics->metrics[RTAX_MTU-1];=0D if (mtu)=0D goto out;=0D }=0D =0D rt =3D rt6_find_cached_rt(res, daddr, saddr);=0D if (__builtin_expect(!!(rt), 0)) {=0D mtu =3D dst_metric_raw(&rt->dst, RTAX_MTU);=0D } else {=0D struct net_device *dev =3D nh->nh_common.nhc_dev;=0D =0D mtu =3D 1280;=0D idev =3D __in6_dev_get(dev);=0D if (idev && idev->cnf.mtu6 > mtu)=0D mtu =3D idev->cnf.mtu6;=0D }=0D =0D mtu =3D __builtin_choose_expr(((!!(sizeof((typeof((unsigned int)(mtu)) *)1= =3D=3D (typeof((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) *)1))) &= & ((sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((unsigned int)(mtu)) *= 0l)) : (int *)8))) && (sizeof(int) =3D=3D sizeof(*(8 ? ((void *)((long)((u= nsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) * 0l)) : (int *)8))))), ((= (unsigned int)(mtu)) < ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) = ? ((unsigned int)(mtu)) : ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr))= ))), ({ typeof((unsigned int)(mtu)) __UNIQUE_ID___x719 =3D ((unsigned int)(= mtu)); typeof((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))) __UNIQUE_I= D___y720 =3D ((unsigned int)((0xFFFF + sizeof(struct ipv6hdr)))); ((__UNIQU= E_ID___x719) < (__UNIQUE_ID___y720) ? (__UNIQUE_ID___x719) : (__UNIQUE_ID__= _y720)); }));=0D out:=0D return mtu - lwtunnel_headroom(nh->nh_common.nhc_lwtstate, mtu);=0D }=0D =0D struct dst_entry *icmp6_dst_alloc(struct net_device *dev,=0D struct flowi6 *fl6)=0D {=0D struct dst_entry *dst;=0D struct rt6_info *rt;=0D struct inet6_dev *idev =3D in6_dev_get(dev);=0D struct net *net =3D dev_net(dev);=0D =0D if (__builtin_expect(!!(!idev), 0))=0D return ERR_PTR(-19);=0D =0D rt =3D ip6_dst_alloc(net, dev, 0);=0D if (__builtin_expect(!!(!rt), 0)) {=0D in6_dev_put(idev);=0D dst =3D ERR_PTR(-12);=0D goto out;=0D }=0D =0D rt->dst.input =3D ip6_input;=0D rt->dst.output =3D ip6_output;=0D rt->rt6i_gateway =3D fl6->daddr;=0D rt->rt6i_dst.addr =3D fl6->daddr;=0D rt->rt6i_dst.plen =3D 128;=0D rt->rt6i_idev =3D idev;=0D dst_metric_set(&rt->dst, RTAX_HOPLIMIT, 0);=0D =0D =0D =0D =0D rt6_uncached_list_add(rt);=0D =0D dst =3D xfrm_lookup(net, &rt->dst, flowi6_to_flowi(fl6), ((void *)0), 0);= =0D =0D out:=0D return dst;=0D }=0D =0D static int ip6_dst_gc(struct dst_ops *ops)=0D {=0D struct net *net =3D ({ void *__mptr =3D (void *)(ops); _Static_assert(__bu= iltin_types_compatible_p(typeof(*(ops)), typeof(((struct net *)0)->ipv6.ip6= _dst_ops)) || __builtin_types_compatible_p(typeof(*(ops)), typeof(void)), "= pointer type mismatch in container_of()"); ((struct net *)(__mptr - __built= in_offsetof(struct net, ipv6.ip6_dst_ops))); });=0D int rt_min_interval =3D net->ipv6.sysctl.ip6_rt_gc_min_interval;=0D int rt_max_size =3D net->ipv6.sysctl.ip6_rt_max_size;=0D int rt_elasticity =3D net->ipv6.sysctl.ip6_rt_gc_elasticity;=0D int rt_gc_timeout =3D net->ipv6.sysctl.ip6_rt_gc_timeout;=0D unsigned long rt_last_gc =3D net->ipv6.ip6_rt_last_gc;=0D unsigned int val;=0D int entries;=0D =0D entries =3D dst_entries_get_fast(ops);=0D if (entries > rt_max_size)=0D entries =3D dst_entries_get_slow(ops);=0D =0D if ((({ unsigned long __dummy; typeof(rt_last_gc + rt_min_interval) __dumm= y2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ({ unsigned long __dummy; t= ypeof(jiffies) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }) && ((long= )((jiffies) - (rt_last_gc + rt_min_interval)) < 0)) &&=0D entries <=3D rt_max_size)=0D goto out;=0D =0D fib6_run_gc(atomic_inc_return(&net->ipv6.ip6_rt_gc_expire), net, true);=0D entries =3D dst_entries_get_slow(ops);=0D if (entries < ops->gc_thresh)=0D atomic_set(&net->ipv6.ip6_rt_gc_expire, rt_gc_timeout >> 1);=0D out:=0D val =3D atomic_read(&net->ipv6.ip6_rt_gc_expire);=0D atomic_set(&net->ipv6.ip6_rt_gc_expire, val - (val >> rt_elasticity));=0D return entries > rt_max_size;=0D }=0D =0D static int ip6_nh_lookup_table(struct net *net, struct fib6_config *cfg,=0D const struct in6_addr *gw_addr, u32 tbid,=0D int flags, struct fib6_result *res)=0D {=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_oif =3D cfg->fc_ifindex,=0D .daddr =3D *gw_addr,=0D .saddr =3D cfg->fc_prefsrc,=0D };=0D struct fib6_table *table;=0D int err;=0D =0D table =3D fib6_get_table(net, tbid);=0D if (!table)=0D return -22;=0D =0D if (!ipv6_addr_any(&cfg->fc_prefsrc))=0D flags |=3D 0x00000004;=0D =0D flags |=3D 0x00000040;=0D =0D err =3D fib6_table_lookup(net, table, cfg->fc_ifindex, &fl6, res, flags);= =0D if (!err && res->f6i !=3D net->ipv6.fib6_null_entry)=0D fib6_select_path(net, res, &fl6, cfg->fc_ifindex,=0D cfg->fc_ifindex !=3D 0, ((void *)0), flags);=0D =0D return err;=0D }=0D =0D static int ip6_route_check_nh_onlink(struct net *net,=0D struct fib6_config *cfg,=0D const struct net_device *dev,=0D struct netlink_ext_ack *extack)=0D {=0D u32 tbid =3D l3mdev_fib_table_rcu(dev) ? : RT_TABLE_MAIN;=0D const struct in6_addr *gw_addr =3D &cfg->fc_gateway;=0D struct fib6_result res =3D {};=0D int err;=0D =0D err =3D ip6_nh_lookup_table(net, cfg, gw_addr, tbid, 0, &res);=0D if (!err && !(res.fib6_flags & 0x0200) &&=0D =0D !ipv6_addr_any(&res.f6i->fib6_dst.addr) &&=0D (res.fib6_type !=3D RTN_UNICAST || dev !=3D res.nh->nh_common.nhc_dev)= ) {=0D do { static const char __msg[] =3D "Nexthop has invalid gateway or device= mismatch"; struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink= _extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D =0D err =3D -22;=0D }=0D =0D return err;=0D }=0D =0D static int ip6_route_check_nh(struct net *net,=0D struct fib6_config *cfg,=0D struct net_device **_dev,=0D struct inet6_dev **idev)=0D {=0D const struct in6_addr *gw_addr =3D &cfg->fc_gateway;=0D struct net_device *dev =3D _dev ? *_dev : ((void *)0);=0D int flags =3D 0x00000001;=0D struct fib6_result res =3D {};=0D int err =3D -113;=0D =0D if (cfg->fc_table) {=0D err =3D ip6_nh_lookup_table(net, cfg, gw_addr,=0D cfg->fc_table, flags, &res);=0D =0D =0D =0D if (err || res.fib6_flags & 0x0200 ||=0D res.nh->nh_common.nhc_gw_family ||=0D (dev && dev !=3D res.nh->nh_common.nhc_dev))=0D err =3D -113;=0D }=0D =0D if (err < 0) {=0D struct flowi6 fl6 =3D {=0D .__fl_common.flowic_oif =3D cfg->fc_ifindex,=0D .daddr =3D *gw_addr,=0D };=0D =0D err =3D fib6_lookup(net, cfg->fc_ifindex, &fl6, &res, flags);=0D if (err || res.fib6_flags & 0x0200 ||=0D res.nh->nh_common.nhc_gw_family)=0D err =3D -113;=0D =0D if (err)=0D return err;=0D =0D fib6_select_path(net, &res, &fl6, cfg->fc_ifindex,=0D cfg->fc_ifindex !=3D 0, ((void *)0), flags);=0D }=0D =0D err =3D 0;=0D if (dev) {=0D if (dev !=3D res.nh->nh_common.nhc_dev)=0D err =3D -113;=0D } else {=0D *_dev =3D dev =3D res.nh->nh_common.nhc_dev;=0D dev_hold(dev);=0D *idev =3D in6_dev_get(dev);=0D }=0D =0D return err;=0D }=0D =0D static int ip6_validate_gw(struct net *net, struct fib6_config *cfg,=0D struct net_device **_dev, struct inet6_dev **idev,=0D struct netlink_ext_ack *extack)=0D {=0D const struct in6_addr *gw_addr =3D &cfg->fc_gateway;=0D int gwa_type =3D ipv6_addr_type(gw_addr);=0D bool skip_dev =3D gwa_type & 0x0020U ? false : true;=0D const struct net_device *dev =3D *_dev;=0D bool need_addr_check =3D !dev;=0D int err =3D -22;=0D =0D =0D =0D =0D =0D =0D if (dev &&=0D ipv6_chk_addr_and_flags(net, gw_addr, dev, skip_dev, 0, 0)) {=0D do { static const char __msg[] =3D "Gateway can not be a local address"; = struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__ms= g); if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D if (gwa_type !=3D (0x0020U | 0x0001U)) {=0D # 3454 "net/ipv6/route.c"=0D if (!(gwa_type & (0x0001U | 0x1000U))) {=0D do { static const char __msg[] =3D "Invalid gateway address"; struct net= link_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__= extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D rcu_read_lock();=0D =0D if (cfg->fc_flags & 4)=0D err =3D ip6_route_check_nh_onlink(net, cfg, dev, extack);=0D else=0D err =3D ip6_route_check_nh(net, cfg, _dev, idev);=0D =0D rcu_read_unlock();=0D =0D if (err)=0D goto out;=0D }=0D =0D =0D dev =3D *_dev;=0D =0D err =3D -22;=0D if (!dev) {=0D do { static const char __msg[] =3D "Egress device not specified"; struct = netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if = (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D } else if (dev->flags & IFF_LOOPBACK) {=0D do { static const char __msg[] =3D "Egress device can not be loopback dev= ice for this route"; struct netlink_ext_ack *__extack =3D (extack); do_trac= e_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0= );=0D =0D goto out;=0D }=0D =0D =0D =0D =0D if (need_addr_check &&=0D ipv6_chk_addr_and_flags(net, gw_addr, dev, skip_dev, 0, 0)) {=0D do { static const char __msg[] =3D "Gateway can not be a local address"; = struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__ms= g); if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D err =3D 0;=0D out:=0D return err;=0D }=0D =0D static bool fib6_is_reject(u32 flags, struct net_device *dev, int addr_type= )=0D {=0D if ((flags & 0x0200) ||=0D (dev && (dev->flags & IFF_LOOPBACK) &&=0D !(addr_type & 0x0010U) &&=0D !(flags & (0x00100000 | 0x80000000))))=0D return true;=0D =0D return false;=0D }=0D =0D int fib6_nh_init(struct net *net, struct fib6_nh *fib6_nh,=0D struct fib6_config *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack)=0D {=0D struct net_device *dev =3D ((void *)0);=0D struct inet6_dev *idev =3D ((void *)0);=0D int addr_type;=0D int err;=0D =0D fib6_nh->nh_common.nhc_family =3D 10;=0D =0D =0D =0D if (cfg->fc_is_fdb) {=0D fib6_nh->nh_common.nhc_gw.ipv6 =3D cfg->fc_gateway;=0D fib6_nh->nh_common.nhc_gw_family =3D 10;=0D return 0;=0D }=0D =0D err =3D -19;=0D if (cfg->fc_ifindex) {=0D dev =3D dev_get_by_index(net, cfg->fc_ifindex);=0D if (!dev)=0D goto out;=0D idev =3D in6_dev_get(dev);=0D if (!idev)=0D goto out;=0D }=0D =0D if (cfg->fc_flags & 4) {=0D if (!dev) {=0D do { static const char __msg[] =3D "Nexthop device required for onlink";= struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__m= sg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D =0D goto out;=0D }=0D =0D if (!(dev->flags & IFF_UP)) {=0D do { static const char __msg[] =3D "Nexthop device is not up"; struct ne= tlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (_= _extack) __extack->_msg =3D __msg; } while (0);=0D err =3D -100;=0D goto out;=0D }=0D =0D fib6_nh->nh_common.nhc_flags |=3D 4;=0D }=0D =0D fib6_nh->nh_common.nhc_weight =3D 1;=0D =0D =0D =0D =0D addr_type =3D ipv6_addr_type(&cfg->fc_dst);=0D if (fib6_is_reject(cfg->fc_flags, dev, addr_type)) {=0D =0D if (dev !=3D net->loopback_dev) {=0D if (dev) {=0D dev_put(dev);=0D in6_dev_put(idev);=0D }=0D dev =3D net->loopback_dev;=0D dev_hold(dev);=0D idev =3D in6_dev_get(dev);=0D if (!idev) {=0D err =3D -19;=0D goto out;=0D }=0D }=0D goto pcpu_alloc;=0D }=0D =0D if (cfg->fc_flags & 0x0002) {=0D err =3D ip6_validate_gw(net, cfg, &dev, &idev, extack);=0D if (err)=0D goto out;=0D =0D fib6_nh->nh_common.nhc_gw.ipv6 =3D cfg->fc_gateway;=0D fib6_nh->nh_common.nhc_gw_family =3D 10;=0D }=0D =0D err =3D -19;=0D if (!dev)=0D goto out;=0D =0D if (idev->cnf.disable_ipv6) {=0D do { static const char __msg[] =3D "IPv6 is disabled on nexthop device"; = struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__ms= g); if (__extack) __extack->_msg =3D __msg; } while (0);=0D err =3D -13;=0D goto out;=0D }=0D =0D if (!(dev->flags & IFF_UP) && !cfg->fc_ignore_dev_down) {=0D do { static const char __msg[] =3D "Nexthop device is not up"; struct net= link_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__= extack) __extack->_msg =3D __msg; } while (0);=0D err =3D -100;=0D goto out;=0D }=0D =0D if (!(cfg->fc_flags & (0x80000000 | 0x00100000)) &&=0D !netif_carrier_ok(dev))=0D fib6_nh->nh_common.nhc_flags |=3D 16;=0D =0D err =3D fib_nh_common_init(net, &fib6_nh->nh_common, cfg->fc_encap,=0D cfg->fc_encap_type, cfg, gfp_flags, extack);=0D if (err)=0D goto out;=0D =0D pcpu_alloc:=0D fib6_nh->rt6i_pcpu =3D (typeof(struct rt6_info *) *)__alloc_percpu_gfp(siz= eof(struct rt6_info *), __alignof__(struct rt6_info *), gfp_flags);=0D if (!fib6_nh->rt6i_pcpu) {=0D err =3D -12;=0D goto out;=0D }=0D =0D fib6_nh->nh_common.nhc_dev =3D dev;=0D netdev_tracker_alloc(dev, &fib6_nh->nh_common.nhc_dev_tracker, gfp_flags);= =0D =0D fib6_nh->nh_common.nhc_oif =3D dev->ifindex;=0D err =3D 0;=0D out:=0D if (idev)=0D in6_dev_put(idev);=0D =0D if (err) {=0D lwtstate_put(fib6_nh->nh_common.nhc_lwtstate);=0D fib6_nh->nh_common.nhc_lwtstate =3D ((void *)0);=0D dev_put(dev);=0D }=0D =0D return err;=0D }=0D =0D void fib6_nh_release(struct fib6_nh *fib6_nh)=0D {=0D struct rt6_exception_bucket *bucket;=0D =0D rcu_read_lock();=0D =0D fib6_nh_flush_exceptions(fib6_nh, ((void *)0));=0D bucket =3D fib6_nh_get_excptn_bucket(fib6_nh, ((void *)0));=0D if (bucket) {=0D do { uintptr_t _r_a_p__v =3D (uintptr_t)(((void *)0)); ; if (__builtin_co= nstant_p(((void *)0)) && (_r_a_p__v) =3D=3D (uintptr_t)((void *)0)) do { do= { __attribute__((__noreturn__)) extern void __compiletime_assert_721(void)= ; if (!((sizeof((fib6_nh->rt6i_exception_bucket)) =3D=3D sizeof(char) || s= izeof((fib6_nh->rt6i_exception_bucket)) =3D=3D sizeof(short) || sizeof((fib= 6_nh->rt6i_exception_bucket)) =3D=3D sizeof(int) || sizeof((fib6_nh->rt6i_e= xception_bucket)) =3D=3D sizeof(long)) || sizeof((fib6_nh->rt6i_exception_b= ucket)) =3D=3D sizeof(long long))) __compiletime_assert_721(); } while (0);= do { *(volatile typeof((fib6_nh->rt6i_exception_bucket)) *)&((fib6_nh->rt6= i_exception_bucket)) =3D ((typeof(fib6_nh->rt6i_exception_bucket))(_r_a_p__= v)); } while (0); } while (0); else do { do { } while (0); do { do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_722(void) ; if (!(= (sizeof(*&fib6_nh->rt6i_exception_bucket) =3D=3D sizeof(char) || sizeof(*&f= ib6_nh->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeof(*&fib6_nh->rt= 6i_exception_bucket) =3D=3D sizeof(int) || sizeof(*&fib6_nh->rt6i_exception= _bucket) =3D=3D sizeof(long)))) __compiletime_assert_722(); } while (0); __= asm__ __volatile__ ("fence " "rw" "," "w" : : : "memory"); do { do { __attr= ibute__((__noreturn__)) extern void __compiletime_assert_723(void) ; if (!(= (sizeof(*&fib6_nh->rt6i_exception_bucket) =3D=3D sizeof(char) || sizeof(*&f= ib6_nh->rt6i_exception_bucket) =3D=3D sizeof(short) || sizeof(*&fib6_nh->rt= 6i_exception_bucket) =3D=3D sizeof(int) || sizeof(*&fib6_nh->rt6i_exception= _bucket) =3D=3D sizeof(long)) || sizeof(*&fib6_nh->rt6i_exception_bucket) = =3D=3D sizeof(long long))) __compiletime_assert_723(); } while (0); do { *(= volatile typeof(*&fib6_nh->rt6i_exception_bucket) *)&(*&fib6_nh->rt6i_excep= tion_bucket) =3D ((typeof(*((typeof(fib6_nh->rt6i_exception_bucket))_r_a_p_= _v)) *)((typeof(fib6_nh->rt6i_exception_bucket))_r_a_p__v)); } while (0); }= while (0); } while (0); } while (0); } while (0);=0D kfree(bucket);=0D }=0D =0D rcu_read_unlock();=0D =0D fib6_nh_release_dsts(fib6_nh);=0D free_percpu(fib6_nh->rt6i_pcpu);=0D =0D fib_nh_common_release(&fib6_nh->nh_common);=0D }=0D =0D void fib6_nh_release_dsts(struct fib6_nh *fib6_nh)=0D {=0D int cpu;=0D =0D if (!fib6_nh->rt6i_pcpu)=0D return;=0D =0D for (((cpu)) =3D -1; ((cpu)) =3D cpumask_next(((cpu)), (((const struct cpu= mask *)&__cpu_possible_mask))), ((cpu)) < nr_cpu_ids;) {=0D struct rt6_info *pcpu_rt, **ppcpu_rt;=0D =0D ppcpu_rt =3D ({ do { const void *__vpp_verify =3D (typeof((fib6_nh->rt6i_= pcpu) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long _= _ptr; __ptr =3D (unsigned long) ((typeof(*((fib6_nh->rt6i_pcpu))) *)((fib6_= nh->rt6i_pcpu))); (typeof((typeof(*((fib6_nh->rt6i_pcpu))) *)((fib6_nh->rt6= i_pcpu)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); });=0D pcpu_rt =3D ({ typeof(ppcpu_rt) __ai_ptr =3D (ppcpu_rt); do { } while (0)= ; instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); ({ __typeof__(*(__a= i_ptr)) _x_ =3D (((void *)0)); (__typeof__(*(__ai_ptr))) ({ __typeof__((__a= i_ptr)) __ptr =3D ((__ai_ptr)); __typeof__(_x_) __new =3D (_x_); __typeof__= (*((__ai_ptr))) __ret; switch (sizeof(*(__ai_ptr))) { case 4: __asm__ __vol= atile__ ( " amoswap.w.aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : = "r" (__new) : "memory"); break; case 8: __asm__ __volatile__ ( " amoswap.d.= aqrl %0, %2, %1\n" : "=3Dr" (__ret), "+A" (*__ptr) : "r" (__new) : "memory"= ); break; default: do { __attribute__((__noreturn__)) extern void __compile= time_assert_724(void) ; if (!(!(1))) __compiletime_assert_724(); } while (0= ); } __ret; }); }); });=0D if (pcpu_rt) {=0D dst_dev_put(&pcpu_rt->dst);=0D dst_release(&pcpu_rt->dst);=0D }=0D }=0D }=0D =0D static struct fib6_info *ip6_route_info_create(struct fib6_config *cfg,=0D gfp_t gfp_flags,=0D struct netlink_ext_ack *extack)=0D {=0D struct net *net =3D cfg->fc_nlinfo.nl_net;=0D struct fib6_info *rt =3D ((void *)0);=0D struct nexthop *nh =3D ((void *)0);=0D struct fib6_table *table;=0D struct fib6_nh *fib6_nh;=0D int err =3D -22;=0D int addr_type;=0D =0D =0D if (cfg->fc_flags & 0x40000000) {=0D do { static const char __msg[] =3D "Userspace can not set RTF_PCPU"; stru= ct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); = if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D =0D if (cfg->fc_flags & 0x01000000) {=0D do { static const char __msg[] =3D "Userspace can not set RTF_CACHE"; str= uct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg);= if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D if (cfg->fc_type > (__RTN_MAX - 1)) {=0D do { static const char __msg[] =3D "Invalid route type"; struct netlink_e= xt_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__extack= ) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D if (cfg->fc_dst_len > 128) {=0D do { static const char __msg[] =3D "Invalid prefix length"; struct netlin= k_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__ext= ack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D if (cfg->fc_src_len > 128) {=0D do { static const char __msg[] =3D "Invalid source address length"; struc= t netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); i= f (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D =0D if (cfg->fc_src_len) {=0D do { static const char __msg[] =3D "Specifying source address requires IP= V6_SUBTREES to be enabled"; struct netlink_ext_ack *__extack =3D (extack); = do_trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } w= hile (0);=0D =0D goto out;=0D }=0D =0D if (cfg->fc_nh_id) {=0D nh =3D nexthop_find_by_id(net, cfg->fc_nh_id);=0D if (!nh) {=0D do { static const char __msg[] =3D "Nexthop id does not exist"; struct n= etlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (= __extack) __extack->_msg =3D __msg; } while (0);=0D goto out;=0D }=0D err =3D fib6_check_nexthop(nh, cfg, extack);=0D if (err)=0D goto out;=0D }=0D =0D err =3D -105;=0D if (cfg->fc_nlinfo.nlh &&=0D !(cfg->fc_nlinfo.nlh->nlmsg_flags & 0x400)) {=0D table =3D fib6_get_table(net, cfg->fc_table);=0D if (!table) {=0D ({ do {} while (0); _printk("\001" "4" "IPv6: " "NLM_F_CREATE should be = specified when creating new route\n"); });=0D table =3D fib6_new_table(net, cfg->fc_table);=0D }=0D } else {=0D table =3D fib6_new_table(net, cfg->fc_table);=0D }=0D =0D if (!table)=0D goto out;=0D =0D err =3D -12;=0D rt =3D fib6_info_alloc(gfp_flags, !nh);=0D if (!rt)=0D goto out;=0D =0D rt->fib6_metrics =3D ip_fib_metrics_init(net, cfg->fc_mx, cfg->fc_mx_len,= =0D extack);=0D if (IS_ERR(rt->fib6_metrics)) {=0D err =3D PTR_ERR(rt->fib6_metrics);=0D =0D rt->fib6_metrics =3D (struct dst_metrics *)&dst_default_metrics;=0D goto out_free;=0D }=0D =0D if (cfg->fc_flags & 0x00040000)=0D rt->dst_nocount =3D true;=0D =0D if (cfg->fc_flags & 0x00400000)=0D fib6_set_expires(rt, jiffies +=0D clock_t_to_jiffies(cfg->fc_expires));=0D else=0D fib6_clean_expires(rt);=0D =0D if (cfg->fc_protocol =3D=3D 0)=0D cfg->fc_protocol =3D 3;=0D rt->fib6_protocol =3D cfg->fc_protocol;=0D =0D rt->fib6_table =3D table;=0D rt->fib6_metric =3D cfg->fc_metric;=0D rt->fib6_type =3D cfg->fc_type ? : RTN_UNICAST;=0D rt->fib6_flags =3D cfg->fc_flags & ~0x0002;=0D =0D ipv6_addr_prefix(&rt->fib6_dst.addr, &cfg->fc_dst, cfg->fc_dst_len);=0D rt->fib6_dst.plen =3D cfg->fc_dst_len;=0D =0D =0D =0D =0D =0D if (nh) {=0D if (rt->fib6_src.plen) {=0D do { static const char __msg[] =3D "Nexthops can not be used with source= routing"; struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_= extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto out_free;=0D }=0D if (!nexthop_get(nh)) {=0D do { static const char __msg[] =3D "Nexthop has been deleted"; struct ne= tlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (_= _extack) __extack->_msg =3D __msg; } while (0);=0D goto out_free;=0D }=0D rt->nh =3D nh;=0D fib6_nh =3D nexthop_fib6_nh(rt->nh);=0D } else {=0D err =3D fib6_nh_init(net, rt->fib6_nh, cfg, gfp_flags, extack);=0D if (err)=0D goto out;=0D =0D fib6_nh =3D rt->fib6_nh;=0D =0D =0D =0D =0D addr_type =3D ipv6_addr_type(&cfg->fc_dst);=0D if (fib6_is_reject(cfg->fc_flags, rt->fib6_nh->nh_common.nhc_dev,=0D addr_type))=0D rt->fib6_flags =3D 0x0200 | 0x00200000;=0D }=0D =0D if (!ipv6_addr_any(&cfg->fc_prefsrc)) {=0D struct net_device *dev =3D fib6_nh->nh_common.nhc_dev;=0D =0D if (!ipv6_chk_addr(net, &cfg->fc_prefsrc, dev, 0)) {=0D do { static const char __msg[] =3D "Invalid source address"; struct netl= ink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__e= xtack) __extack->_msg =3D __msg; } while (0);=0D err =3D -22;=0D goto out;=0D }=0D rt->fib6_prefsrc.addr =3D cfg->fc_prefsrc;=0D rt->fib6_prefsrc.plen =3D 128;=0D } else=0D rt->fib6_prefsrc.plen =3D 0;=0D =0D return rt;=0D out:=0D fib6_info_release(rt);=0D return ERR_PTR(err);=0D out_free:=0D ip_fib_metrics_put(rt->fib6_metrics);=0D kfree(rt);=0D return ERR_PTR(err);=0D }=0D =0D int ip6_route_add(struct fib6_config *cfg, gfp_t gfp_flags,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_info *rt;=0D int err;=0D =0D rt =3D ip6_route_info_create(cfg, gfp_flags, extack);=0D if (IS_ERR(rt))=0D return PTR_ERR(rt);=0D =0D err =3D __ip6_ins_rt(rt, &cfg->fc_nlinfo, extack);=0D fib6_info_release(rt);=0D =0D return err;=0D }=0D =0D static int __ip6_del_rt(struct fib6_info *rt, struct nl_info *info)=0D {=0D struct net *net =3D info->nl_net;=0D struct fib6_table *table;=0D int err;=0D =0D if (rt =3D=3D net->ipv6.fib6_null_entry) {=0D err =3D -2;=0D goto out;=0D }=0D =0D table =3D rt->fib6_table;=0D spin_lock_bh(&table->tb6_lock);=0D err =3D fib6_del(rt, info);=0D spin_unlock_bh(&table->tb6_lock);=0D =0D out:=0D fib6_info_release(rt);=0D return err;=0D }=0D =0D int ip6_del_rt(struct net *net, struct fib6_info *rt, bool skip_notify)=0D {=0D struct nl_info info =3D {=0D .nl_net =3D net,=0D .skip_notify =3D skip_notify=0D };=0D =0D return __ip6_del_rt(rt, &info);=0D }=0D =0D static int __ip6_del_rt_siblings(struct fib6_info *rt, struct fib6_config *= cfg)=0D {=0D struct nl_info *info =3D &cfg->fc_nlinfo;=0D struct net *net =3D info->nl_net;=0D struct sk_buff *skb =3D ((void *)0);=0D struct fib6_table *table;=0D int err =3D -2;=0D =0D if (rt =3D=3D net->ipv6.fib6_null_entry)=0D goto out_put;=0D table =3D rt->fib6_table;=0D spin_lock_bh(&table->tb6_lock);=0D =0D if (rt->fib6_nsiblings && cfg->fc_delete_all_nh) {=0D struct fib6_info *sibling, *next_sibling;=0D struct fib6_node *fn;=0D =0D =0D skb =3D nlmsg_new(rt6_nlmsg_size(rt), gfp_any());=0D if (skb) {=0D u32 seq =3D info->nlh ? info->nlh->nlmsg_seq : 0;=0D =0D if (rt6_fill_node(net, skb, rt, ((void *)0),=0D ((void *)0), ((void *)0), 0, RTM_DELROUTE,=0D info->portid, seq, 0) < 0) {=0D kfree_skb(skb);=0D skb =3D ((void *)0);=0D } else=0D info->skip_notify =3D 1;=0D }=0D =0D =0D =0D =0D =0D =0D info->skip_notify_kernel =3D 1;=0D fn =3D ({ do { } while (0 && (!((lock_is_held(&(&table->tb6_lock)->dep_ma= p))))); ; ((typeof(*(rt->fib6_node)) *)((rt->fib6_node))); });=0D =0D if (({ typeof(*(fn->leaf)) *__UNIQUE_ID_rcu725 =3D (typeof(*(fn->leaf)) *= )({ do { __attribute__((__noreturn__)) extern void __compiletime_assert_726= (void) ; if (!((sizeof((fn->leaf)) =3D=3D sizeof(char) || sizeof((fn->leaf)= ) =3D=3D sizeof(short) || sizeof((fn->leaf)) =3D=3D sizeof(int) || sizeof((= fn->leaf)) =3D=3D sizeof(long)) || sizeof((fn->leaf)) =3D=3D sizeof(long lo= ng))) __compiletime_assert_726(); } while (0); (*(const volatile typeof( _G= eneric(((fn->leaf)), char: (char)0, unsigned char: (unsigned char)0, signed= char: (signed char)0, unsigned short: (unsigned short)0, signed short: (si= gned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, uns= igned long: (unsigned long)0, signed long: (signed long)0, unsigned long lo= ng: (unsigned long long)0, signed long long: (signed long long)0, default: = ((fn->leaf)))) *)&((fn->leaf))); }); ; ((typeof(*(fn->leaf)) *)(__UNIQUE_ID= _rcu725)); }) =3D=3D rt) {=0D struct fib6_info *last_sibling, *replace_rt;=0D =0D last_sibling =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->prev= ); _Static_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings= )->prev)), typeof(((struct fib6_info *)0)->fib6_siblings)) || __builtin_typ= es_compatible_p(typeof(*((&rt->fib6_siblings)->prev)), typeof(void)), "poin= ter type mismatch in container_of()"); ((struct fib6_info *)(__mptr - __bui= ltin_offsetof(struct fib6_info, fib6_siblings))); });=0D =0D =0D replace_rt =3D ({ do { } while (0 && (!((lock_is_held(&(&table->tb6_lock= )->dep_map))))); ; ((typeof(*(last_sibling->fib6_next)) *)((last_sibling->f= ib6_next))); });=0D =0D =0D if (replace_rt)=0D call_fib6_entry_notifiers_replace(net,=0D replace_rt);=0D else=0D call_fib6_multipath_entry_notifiers(net,=0D FIB_EVENT_ENTRY_DEL,=0D rt, rt->fib6_nsiblings,=0D ((void *)0));=0D }=0D for (sibling =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next)= ; _Static_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)= ->next)), typeof(((typeof(*sibling) *)0)->fib6_siblings)) || __builtin_type= s_compatible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "point= er type mismatch in container_of()"); ((typeof(*sibling) *)(__mptr - __buil= tin_offsetof(typeof(*sibling), fib6_siblings))); }), next_sibling =3D ({ vo= id *__mptr =3D (void *)((sibling)->fib6_siblings.next); _Static_assert(__bu= iltin_types_compatible_p(typeof(*((sibling)->fib6_siblings.next)), typeof((= (typeof(*(sibling)) *)0)->fib6_siblings)) || __builtin_types_compatible_p(t= ypeof(*((sibling)->fib6_siblings.next)), typeof(void)), "pointer type misma= tch in container_of()"); ((typeof(*(sibling)) *)(__mptr - __builtin_offseto= f(typeof(*(sibling)), fib6_siblings))); }); !(&sibling->fib6_siblings =3D= =3D (&rt->fib6_siblings)); sibling =3D next_sibling, next_sibling =3D ({ vo= id *__mptr =3D (void *)((next_sibling)->fib6_siblings.next); _Static_assert= (__builtin_types_compatible_p(typeof(*((next_sibling)->fib6_siblings.next))= , typeof(((typeof(*(next_sibling)) *)0)->fib6_siblings)) || __builtin_types= _compatible_p(typeof(*((next_sibling)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(next_sibling)) *)(_= _mptr - __builtin_offsetof(typeof(*(next_sibling)), fib6_siblings))); })) {= =0D =0D =0D err =3D fib6_del(sibling, info);=0D if (err)=0D goto out_unlock;=0D }=0D }=0D =0D err =3D fib6_del(rt, info);=0D out_unlock:=0D spin_unlock_bh(&table->tb6_lock);=0D out_put:=0D fib6_info_release(rt);=0D =0D if (skb) {=0D rtnl_notify(skb, net, info->portid, RTNLGRP_IPV6_ROUTE,=0D info->nlh, gfp_any());=0D }=0D return err;=0D }=0D =0D static int __ip6_del_cached_rt(struct rt6_info *rt, struct fib6_config *cfg= )=0D {=0D int rc =3D -3;=0D =0D if (cfg->fc_ifindex && rt->dst.dev->ifindex !=3D cfg->fc_ifindex)=0D goto out;=0D =0D if (cfg->fc_flags & 0x0002 &&=0D !ipv6_addr_equal(&cfg->fc_gateway, &rt->rt6i_gateway))=0D goto out;=0D =0D rc =3D rt6_remove_exception_rt(rt);=0D out:=0D return rc;=0D }=0D =0D static int ip6_del_cached_rt(struct fib6_config *cfg, struct fib6_info *rt,= =0D struct fib6_nh *nh)=0D {=0D struct fib6_result res =3D {=0D .f6i =3D rt,=0D .nh =3D nh,=0D };=0D struct rt6_info *rt_cache;=0D =0D rt_cache =3D rt6_find_cached_rt(&res, &cfg->fc_dst, &cfg->fc_src);=0D if (rt_cache)=0D return __ip6_del_cached_rt(rt_cache, cfg);=0D =0D return 0;=0D }=0D =0D struct fib6_nh_del_cached_rt_arg {=0D struct fib6_config *cfg;=0D struct fib6_info *f6i;=0D };=0D =0D static int fib6_nh_del_cached_rt(struct fib6_nh *nh, void *_arg)=0D {=0D struct fib6_nh_del_cached_rt_arg *arg =3D _arg;=0D int rc;=0D =0D rc =3D ip6_del_cached_rt(arg->cfg, arg->f6i, nh);=0D return rc !=3D -3 ? rc : 0;=0D }=0D =0D static int ip6_del_cached_rt_nh(struct fib6_config *cfg, struct fib6_info *= f6i)=0D {=0D struct fib6_nh_del_cached_rt_arg arg =3D {=0D .cfg =3D cfg,=0D .f6i =3D f6i=0D };=0D =0D return nexthop_for_each_fib6_nh(f6i->nh, fib6_nh_del_cached_rt, &arg);=0D }=0D =0D static int ip6_route_del(struct fib6_config *cfg,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_table *table;=0D struct fib6_info *rt;=0D struct fib6_node *fn;=0D int err =3D -3;=0D =0D table =3D fib6_get_table(cfg->fc_nlinfo.nl_net, cfg->fc_table);=0D if (!table) {=0D do { static const char __msg[] =3D "FIB table does not exist"; struct net= link_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (__= extack) __extack->_msg =3D __msg; } while (0);=0D return err;=0D }=0D =0D rcu_read_lock();=0D =0D fn =3D fib6_locate(&table->tb6_root,=0D &cfg->fc_dst, cfg->fc_dst_len,=0D &cfg->fc_src, cfg->fc_src_len,=0D !(cfg->fc_flags & 0x01000000));=0D =0D if (fn) {=0D for (rt =3D ({ typeof(*((fn)->leaf)) *__UNIQUE_ID_rcu727 =3D (typeof(*((f= n)->leaf)) *)({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_728(void) ; if (!((sizeof(((fn)->leaf)) =3D=3D sizeof(char) || siz= eof(((fn)->leaf)) =3D=3D sizeof(short) || sizeof(((fn)->leaf)) =3D=3D sizeo= f(int) || sizeof(((fn)->leaf)) =3D=3D sizeof(long)) || sizeof(((fn)->leaf))= =3D=3D sizeof(long long))) __compiletime_assert_728(); } while (0); (*(con= st volatile typeof( _Generic((((fn)->leaf)), char: (char)0, unsigned char: = (unsigned char)0, signed char: (signed char)0, unsigned short: (unsigned sh= ort)0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed= int: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed = long)0, unsigned long long: (unsigned long long)0, signed long long: (signe= d long long)0, default: (((fn)->leaf)))) *)&(((fn)->leaf))); }); do { } whi= le (0 && (!((0) || rcu_read_lock_held()))); ; ((typeof(*((fn)->leaf)) *)(__= UNIQUE_ID_rcu727)); }); rt; rt =3D ({ typeof(*(rt->fib6_next)) *__UNIQUE_ID= _rcu729 =3D (typeof(*(rt->fib6_next)) *)({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_730(void) ; if (!((sizeof((rt->fib6_nex= t)) =3D=3D sizeof(char) || sizeof((rt->fib6_next)) =3D=3D sizeof(short) || = sizeof((rt->fib6_next)) =3D=3D sizeof(int) || sizeof((rt->fib6_next)) =3D= =3D sizeof(long)) || sizeof((rt->fib6_next)) =3D=3D sizeof(long long))) __c= ompiletime_assert_730(); } while (0); (*(const volatile typeof( _Generic(((= rt->fib6_next)), char: (char)0, unsigned char: (unsigned char)0, signed cha= r: (signed char)0, unsigned short: (unsigned short)0, signed short: (signed= short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigne= d long: (unsigned long)0, signed long: (signed long)0, unsigned long long: = (unsigned long long)0, signed long long: (signed long long)0, default: ((rt= ->fib6_next)))) *)&((rt->fib6_next))); }); do { } while (0 && (!((0) || rcu= _read_lock_held()))); ; ((typeof(*(rt->fib6_next)) *)(__UNIQUE_ID_rcu729));= })) {=0D struct fib6_nh *nh;=0D =0D if (rt->nh && cfg->fc_nh_id &&=0D rt->nh->id !=3D cfg->fc_nh_id)=0D continue;=0D =0D if (cfg->fc_flags & 0x01000000) {=0D int rc =3D 0;=0D =0D if (rt->nh) {=0D rc =3D ip6_del_cached_rt_nh(cfg, rt);=0D } else if (cfg->fc_nh_id) {=0D continue;=0D } else {=0D nh =3D rt->fib6_nh;=0D rc =3D ip6_del_cached_rt(cfg, rt, nh);=0D }=0D if (rc !=3D -3) {=0D rcu_read_unlock();=0D return rc;=0D }=0D continue;=0D }=0D =0D if (cfg->fc_metric && cfg->fc_metric !=3D rt->fib6_metric)=0D continue;=0D if (cfg->fc_protocol &&=0D cfg->fc_protocol !=3D rt->fib6_protocol)=0D continue;=0D =0D if (rt->nh) {=0D if (!fib6_info_hold_safe(rt))=0D continue;=0D rcu_read_unlock();=0D =0D return __ip6_del_rt(rt, &cfg->fc_nlinfo);=0D }=0D if (cfg->fc_nh_id)=0D continue;=0D =0D nh =3D rt->fib6_nh;=0D if (cfg->fc_ifindex &&=0D (!nh->nh_common.nhc_dev ||=0D nh->nh_common.nhc_dev->ifindex !=3D cfg->fc_ifindex))=0D continue;=0D if (cfg->fc_flags & 0x0002 &&=0D !ipv6_addr_equal(&cfg->fc_gateway, &nh->nh_common.nhc_gw.ipv6))=0D continue;=0D if (!fib6_info_hold_safe(rt))=0D continue;=0D rcu_read_unlock();=0D =0D =0D if (cfg->fc_flags & 0x0002)=0D return __ip6_del_rt(rt, &cfg->fc_nlinfo);=0D =0D return __ip6_del_rt_siblings(rt, cfg);=0D }=0D }=0D rcu_read_unlock();=0D =0D return err;=0D }=0D =0D static void rt6_do_redirect(struct dst_entry *dst, struct sock *sk, struct = sk_buff *skb)=0D {=0D struct netevent_redirect netevent;=0D struct rt6_info *rt, *nrt =3D ((void *)0);=0D struct fib6_result res =3D {};=0D struct ndisc_options ndopts;=0D struct inet6_dev *in6_dev;=0D struct neighbour *neigh;=0D struct rd_msg *msg;=0D int optlen, on_link;=0D u8 *lladdr;=0D =0D optlen =3D skb_tail_pointer(skb) - skb_transport_header(skb);=0D optlen -=3D sizeof(*msg);=0D =0D if (optlen < 0) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "rt= 6_do_redirect: packet too short\n"); }); 0; }); } while (0);=0D return;=0D }=0D =0D msg =3D (struct rd_msg *)icmp6_hdr(skb);=0D =0D if (ipv6_addr_is_multicast(&msg->dest)) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "rt= 6_do_redirect: destination address is multicast\n"); }); 0; }); } while (0)= ;=0D return;=0D }=0D =0D on_link =3D 0;=0D if (ipv6_addr_equal(&msg->dest, &msg->target)) {=0D on_link =3D 1;=0D } else if (ipv6_addr_type(&msg->target) !=3D=0D (0x0001U|0x0020U)) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "rt= 6_do_redirect: target address is not link-local unicast\n"); }); 0; }); } w= hile (0);=0D return;=0D }=0D =0D in6_dev =3D __in6_dev_get(skb->dev);=0D if (!in6_dev)=0D return;=0D if (in6_dev->cnf.forwarding || !in6_dev->cnf.accept_redirects)=0D return;=0D =0D =0D =0D =0D =0D =0D if (!ndisc_parse_options(skb->dev, msg->opt, optlen, &ndopts)) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "rt= 6_redirect: invalid ND options\n"); }); 0; }); } while (0);=0D return;=0D }=0D =0D lladdr =3D ((void *)0);=0D if (ndopts.nd_opt_array[ND_OPT_TARGET_LL_ADDR]) {=0D lladdr =3D ndisc_opt_addr_data(ndopts.nd_opt_array[ND_OPT_TARGET_LL_ADDR]= ,=0D skb->dev);=0D if (!lladdr) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "r= t6_redirect: invalid link-layer address length\n"); }); 0; }); } while (0);= =0D return;=0D }=0D }=0D =0D rt =3D (struct rt6_info *) dst;=0D if (rt->rt6i_flags & 0x0200) {=0D do { if (0) ({ if (0) ({ do {} while (0); _printk("\001" "7" "IPv6: " "rt= 6_redirect: source isn't a valid nexthop for redirect target\n"); }); 0; })= ; } while (0);=0D return;=0D }=0D =0D =0D =0D =0D =0D dst_confirm_neigh(&rt->dst, &ipv6_hdr(skb)->saddr);=0D =0D neigh =3D __neigh_lookup(&nd_tbl, &msg->target, skb->dev, 1);=0D if (!neigh)=0D return;=0D =0D =0D =0D =0D =0D ndisc_update(skb->dev, neigh, lladdr, 0x04,=0D ((((1UL))) << (1))|=0D ((((1UL))) << (0))|=0D (on_link ? 0 : (((((1UL))) << (2))|=0D ((((1UL))) << (6)))),=0D 137, &ndopts);=0D =0D rcu_read_lock();=0D res.f6i =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu731 =3D (typeof(*(rt->f= rom)) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_ass= ert_732(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt= ->from)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || s= izeof((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(= long long))) __compiletime_assert_732(); } while (0); (*(const volatile typ= eof( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0,= signed char: (signed char)0, unsigned short: (unsigned short)0, signed sho= rt: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int= )0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned = long long: (unsigned long long)0, signed long long: (signed long long)0, de= fault: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rc= u_read_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu731)); });= =0D if (!res.f6i)=0D goto out;=0D =0D if (res.f6i->nh) {=0D struct fib6_nh_match_arg arg =3D {=0D .dev =3D dst->dev,=0D .gw =3D &rt->rt6i_gateway,=0D };=0D =0D nexthop_for_each_fib6_nh(res.f6i->nh,=0D fib6_nh_find_match, &arg);=0D =0D =0D =0D =0D if (!arg.match)=0D goto out;=0D res.nh =3D arg.match;=0D } else {=0D res.nh =3D res.f6i->fib6_nh;=0D }=0D =0D res.fib6_flags =3D res.f6i->fib6_flags;=0D res.fib6_type =3D res.f6i->fib6_type;=0D nrt =3D ip6_rt_cache_alloc(&res, &msg->dest, ((void *)0));=0D if (!nrt)=0D goto out;=0D =0D nrt->rt6i_flags =3D 0x0002|0x0001|0x0010|0x01000000;=0D if (on_link)=0D nrt->rt6i_flags &=3D ~0x0002;=0D =0D nrt->rt6i_gateway =3D *(struct in6_addr *)neigh->primary_key;=0D =0D =0D if (rt6_insert_exception(nrt, &res)) {=0D dst_release_immediate(&nrt->dst);=0D goto out;=0D }=0D =0D netevent.old =3D &rt->dst;=0D netevent.new =3D &nrt->dst;=0D netevent.daddr =3D &msg->dest;=0D netevent.neigh =3D neigh;=0D call_netevent_notifiers(NETEVENT_REDIRECT, &netevent);=0D =0D out:=0D rcu_read_unlock();=0D neigh_release(neigh);=0D }=0D # 4322 "net/ipv6/route.c"=0D struct fib6_info *rt6_get_dflt_router(struct net *net,=0D const struct in6_addr *addr,=0D struct net_device *dev)=0D {=0D u32 tb_id =3D l3mdev_fib_table(dev) ? : RT_TABLE_MAIN;=0D struct fib6_info *rt;=0D struct fib6_table *table;=0D =0D table =3D fib6_get_table(net, tb_id);=0D if (!table)=0D return ((void *)0);=0D =0D rcu_read_lock();=0D for (rt =3D ({ typeof(*((&table->tb6_root)->leaf)) *__UNIQUE_ID_rcu733 =3D= (typeof(*((&table->tb6_root)->leaf)) *)({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_734(void) ; if (!((sizeof(((&table->tb6= _root)->leaf)) =3D=3D sizeof(char) || sizeof(((&table->tb6_root)->leaf)) = =3D=3D sizeof(short) || sizeof(((&table->tb6_root)->leaf)) =3D=3D sizeof(in= t) || sizeof(((&table->tb6_root)->leaf)) =3D=3D sizeof(long)) || sizeof(((&= table->tb6_root)->leaf)) =3D=3D sizeof(long long))) __compiletime_assert_73= 4(); } while (0); (*(const volatile typeof( _Generic((((&table->tb6_root)->= leaf)), char: (char)0, unsigned char: (unsigned char)0, signed char: (signe= d char)0, unsigned short: (unsigned short)0, signed short: (signed short)0,= unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (= unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned= long long)0, signed long long: (signed long long)0, default: (((&table->tb= 6_root)->leaf)))) *)&(((&table->tb6_root)->leaf))); }); do { } while (0 && = (!((0) || rcu_read_lock_held()))); ; ((typeof(*((&table->tb6_root)->leaf)) = *)(__UNIQUE_ID_rcu733)); }); rt; rt =3D ({ typeof(*(rt->fib6_next)) *__UNIQ= UE_ID_rcu735 =3D (typeof(*(rt->fib6_next)) *)({ do { __attribute__((__noret= urn__)) extern void __compiletime_assert_736(void) ; if (!((sizeof((rt->fib= 6_next)) =3D=3D sizeof(char) || sizeof((rt->fib6_next)) =3D=3D sizeof(short= ) || sizeof((rt->fib6_next)) =3D=3D sizeof(int) || sizeof((rt->fib6_next)) = =3D=3D sizeof(long)) || sizeof((rt->fib6_next)) =3D=3D sizeof(long long))) = __compiletime_assert_736(); } while (0); (*(const volatile typeof( _Generic= (((rt->fib6_next)), char: (char)0, unsigned char: (unsigned char)0, signed = char: (signed char)0, unsigned short: (unsigned short)0, signed short: (sig= ned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsi= gned long: (unsigned long)0, signed long: (signed long)0, unsigned long lon= g: (unsigned long long)0, signed long long: (signed long long)0, default: (= (rt->fib6_next)))) *)&((rt->fib6_next))); }); do { } while (0 && (!((0) || = rcu_read_lock_held()))); ; ((typeof(*(rt->fib6_next)) *)(__UNIQUE_ID_rcu735= )); })) {=0D struct fib6_nh *nh;=0D =0D =0D if (rt->nh)=0D continue;=0D =0D nh =3D rt->fib6_nh;=0D if (dev =3D=3D nh->nh_common.nhc_dev &&=0D ((rt->fib6_flags & (0x00040000 | 0x00010000)) =3D=3D (0x00040000 | 0x= 00010000)) &&=0D ipv6_addr_equal(&nh->nh_common.nhc_gw.ipv6, addr))=0D break;=0D }=0D if (rt && !fib6_info_hold_safe(rt))=0D rt =3D ((void *)0);=0D rcu_read_unlock();=0D return rt;=0D }=0D =0D struct fib6_info *rt6_add_dflt_router(struct net *net,=0D const struct in6_addr *gwaddr,=0D struct net_device *dev,=0D unsigned int pref,=0D u32 defrtr_usr_metric)=0D {=0D struct fib6_config cfg =3D {=0D .fc_table =3D l3mdev_fib_table(dev) ? : RT_TABLE_MAIN,=0D .fc_metric =3D defrtr_usr_metric,=0D .fc_ifindex =3D dev->ifindex,=0D .fc_flags =3D 0x0002 | 0x00040000 | 0x00010000 |=0D 0x0001 | 0x00400000 | ((pref) << 27),=0D .fc_protocol =3D 9,=0D .fc_type =3D RTN_UNICAST,=0D .fc_nlinfo.portid =3D 0,=0D .fc_nlinfo.nlh =3D ((void *)0),=0D .fc_nlinfo.nl_net =3D net,=0D };=0D =0D cfg.fc_gateway =3D *gwaddr;=0D =0D if (!ip6_route_add(&cfg, ((( gfp_t)0x20u)|(( gfp_t)0x200u)|(( gfp_t)0x800u= )), ((void *)0))) {=0D struct fib6_table *table;=0D =0D table =3D fib6_get_table(dev_net(dev), cfg.fc_table);=0D if (table)=0D table->flags |=3D ((((1UL))) << (0));=0D }=0D =0D return rt6_get_dflt_router(net, gwaddr, dev);=0D }=0D =0D static void __rt6_purge_dflt_routers(struct net *net,=0D struct fib6_table *table)=0D {=0D struct fib6_info *rt;=0D =0D restart:=0D rcu_read_lock();=0D for (rt =3D ({ typeof(*((&table->tb6_root)->leaf)) *__UNIQUE_ID_rcu737 =3D= (typeof(*((&table->tb6_root)->leaf)) *)({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_738(void) ; if (!((sizeof(((&table->tb6= _root)->leaf)) =3D=3D sizeof(char) || sizeof(((&table->tb6_root)->leaf)) = =3D=3D sizeof(short) || sizeof(((&table->tb6_root)->leaf)) =3D=3D sizeof(in= t) || sizeof(((&table->tb6_root)->leaf)) =3D=3D sizeof(long)) || sizeof(((&= table->tb6_root)->leaf)) =3D=3D sizeof(long long))) __compiletime_assert_73= 8(); } while (0); (*(const volatile typeof( _Generic((((&table->tb6_root)->= leaf)), char: (char)0, unsigned char: (unsigned char)0, signed char: (signe= d char)0, unsigned short: (unsigned short)0, signed short: (signed short)0,= unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (= unsigned long)0, signed long: (signed long)0, unsigned long long: (unsigned= long long)0, signed long long: (signed long long)0, default: (((&table->tb= 6_root)->leaf)))) *)&(((&table->tb6_root)->leaf))); }); do { } while (0 && = (!((0) || rcu_read_lock_held()))); ; ((typeof(*((&table->tb6_root)->leaf)) = *)(__UNIQUE_ID_rcu737)); }); rt; rt =3D ({ typeof(*(rt->fib6_next)) *__UNIQ= UE_ID_rcu739 =3D (typeof(*(rt->fib6_next)) *)({ do { __attribute__((__noret= urn__)) extern void __compiletime_assert_740(void) ; if (!((sizeof((rt->fib= 6_next)) =3D=3D sizeof(char) || sizeof((rt->fib6_next)) =3D=3D sizeof(short= ) || sizeof((rt->fib6_next)) =3D=3D sizeof(int) || sizeof((rt->fib6_next)) = =3D=3D sizeof(long)) || sizeof((rt->fib6_next)) =3D=3D sizeof(long long))) = __compiletime_assert_740(); } while (0); (*(const volatile typeof( _Generic= (((rt->fib6_next)), char: (char)0, unsigned char: (unsigned char)0, signed = char: (signed char)0, unsigned short: (unsigned short)0, signed short: (sig= ned short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsi= gned long: (unsigned long)0, signed long: (signed long)0, unsigned long lon= g: (unsigned long long)0, signed long long: (signed long long)0, default: (= (rt->fib6_next)))) *)&((rt->fib6_next))); }); do { } while (0 && (!((0) || = rcu_read_lock_held()))); ; ((typeof(*(rt->fib6_next)) *)(__UNIQUE_ID_rcu739= )); })) {=0D struct net_device *dev =3D fib6_info_nh_dev(rt);=0D struct inet6_dev *idev =3D dev ? __in6_dev_get(dev) : ((void *)0);=0D =0D if (rt->fib6_flags & (0x00010000 | 0x00040000) &&=0D (!idev || idev->cnf.accept_ra !=3D 2) &&=0D fib6_info_hold_safe(rt)) {=0D rcu_read_unlock();=0D ip6_del_rt(net, rt, false);=0D goto restart;=0D }=0D }=0D rcu_read_unlock();=0D =0D table->flags &=3D ~((((1UL))) << (0));=0D }=0D =0D void rt6_purge_dflt_routers(struct net *net)=0D {=0D struct fib6_table *table;=0D struct hlist_head *head;=0D unsigned int h;=0D =0D rcu_read_lock();=0D =0D for (h =3D 0; h < 1; h++) {=0D head =3D &net->ipv6.fib_table_hash[h];=0D for (({ ; }), table =3D ({ typeof(({ typeof((*((struct hlist_node **)(&(h= ead)->first)))) __UNIQUE_ID_rcu741 =3D ({ do { __attribute__((__noreturn__)= ) extern void __compiletime_assert_742(void) ; if (!((sizeof((*((struct hli= st_node **)(&(head)->first)))) =3D=3D sizeof(char) || sizeof((*((struct hli= st_node **)(&(head)->first)))) =3D=3D sizeof(short) || sizeof((*((struct hl= ist_node **)(&(head)->first)))) =3D=3D sizeof(int) || sizeof((*((struct hli= st_node **)(&(head)->first)))) =3D=3D sizeof(long)) || sizeof((*((struct hl= ist_node **)(&(head)->first)))) =3D=3D sizeof(long long))) __compiletime_as= sert_742(); } while (0); (*(const volatile typeof( _Generic(((*((struct hli= st_node **)(&(head)->first)))), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: ((*((struct hlist_node **)(&(head)->first)))))) *)&((*((struct h= list_node **)(&(head)->first))))); }); ((typeof(*(*((struct hlist_node **)(= &(head)->first)))) *)(__UNIQUE_ID_rcu741)); })) ____ptr =3D (({ typeof((*((= struct hlist_node **)(&(head)->first)))) __UNIQUE_ID_rcu741 =3D ({ do { __a= ttribute__((__noreturn__)) extern void __compiletime_assert_742(void) ; if = (!((sizeof((*((struct hlist_node **)(&(head)->first)))) =3D=3D sizeof(char)= || sizeof((*((struct hlist_node **)(&(head)->first)))) =3D=3D sizeof(short= ) || sizeof((*((struct hlist_node **)(&(head)->first)))) =3D=3D sizeof(int)= || sizeof((*((struct hlist_node **)(&(head)->first)))) =3D=3D sizeof(long)= ) || sizeof((*((struct hlist_node **)(&(head)->first)))) =3D=3D sizeof(long= long))) __compiletime_assert_742(); } while (0); (*(const volatile typeof(= _Generic(((*((struct hlist_node **)(&(head)->first)))), char: (char)0, uns= igned char: (unsigned char)0, signed char: (signed char)0, unsigned short: = (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned i= nt)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lo= ng: (signed long)0, unsigned long long: (unsigned long long)0, signed long = long: (signed long long)0, default: ((*((struct hlist_node **)(&(head)->fir= st)))))) *)&((*((struct hlist_node **)(&(head)->first))))); }); ((typeof(*(= *((struct hlist_node **)(&(head)->first)))) *)(__UNIQUE_ID_rcu741)); })); _= ___ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_assert(__builtin_ty= pes_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(table)) *)0)->tb6_hl= ist)) || __builtin_types_compatible_p(typeof(*(____ptr)), typeof(void)), "p= ointer type mismatch in container_of()"); ((typeof(*(table)) *)(__mptr - __= builtin_offsetof(typeof(*(table)), tb6_hlist))); }) : ((void *)0); }); tabl= e; table =3D ({ typeof(({ typeof((*((struct hlist_node **)(&(&(table)->tb6_= hlist)->next)))) __UNIQUE_ID_rcu743 =3D ({ do { __attribute__((__noreturn__= )) extern void __compiletime_assert_744(void) ; if (!((sizeof((*((struct hl= ist_node **)(&(&(table)->tb6_hlist)->next)))) =3D=3D sizeof(char) || sizeof= ((*((struct hlist_node **)(&(&(table)->tb6_hlist)->next)))) =3D=3D sizeof(s= hort) || sizeof((*((struct hlist_node **)(&(&(table)->tb6_hlist)->next)))) = =3D=3D sizeof(int) || sizeof((*((struct hlist_node **)(&(&(table)->tb6_hlis= t)->next)))) =3D=3D sizeof(long)) || sizeof((*((struct hlist_node **)(&(&(t= able)->tb6_hlist)->next)))) =3D=3D sizeof(long long))) __compiletime_assert= _744(); } while (0); (*(const volatile typeof( _Generic(((*((struct hlist_n= ode **)(&(&(table)->tb6_hlist)->next)))), char: (char)0, unsigned char: (un= signed char)0, signed char: (signed char)0, unsigned short: (unsigned short= )0, signed short: (signed short)0, unsigned int: (unsigned int)0, signed in= t: (signed int)0, unsigned long: (unsigned long)0, signed long: (signed lon= g)0, unsigned long long: (unsigned long long)0, signed long long: (signed l= ong long)0, default: ((*((struct hlist_node **)(&(&(table)->tb6_hlist)->nex= t)))))) *)&((*((struct hlist_node **)(&(&(table)->tb6_hlist)->next))))); })= ; ((typeof(*(*((struct hlist_node **)(&(&(table)->tb6_hlist)->next)))) *)(_= _UNIQUE_ID_rcu743)); })) ____ptr =3D (({ typeof((*((struct hlist_node **)(&= (&(table)->tb6_hlist)->next)))) __UNIQUE_ID_rcu743 =3D ({ do { __attribute_= _((__noreturn__)) extern void __compiletime_assert_744(void) ; if (!((sizeo= f((*((struct hlist_node **)(&(&(table)->tb6_hlist)->next)))) =3D=3D sizeof(= char) || sizeof((*((struct hlist_node **)(&(&(table)->tb6_hlist)->next)))) = =3D=3D sizeof(short) || sizeof((*((struct hlist_node **)(&(&(table)->tb6_hl= ist)->next)))) =3D=3D sizeof(int) || sizeof((*((struct hlist_node **)(&(&(t= able)->tb6_hlist)->next)))) =3D=3D sizeof(long)) || sizeof((*((struct hlist= _node **)(&(&(table)->tb6_hlist)->next)))) =3D=3D sizeof(long long))) __com= piletime_assert_744(); } while (0); (*(const volatile typeof( _Generic(((*(= (struct hlist_node **)(&(&(table)->tb6_hlist)->next)))), char: (char)0, uns= igned char: (unsigned char)0, signed char: (signed char)0, unsigned short: = (unsigned short)0, signed short: (signed short)0, unsigned int: (unsigned i= nt)0, signed int: (signed int)0, unsigned long: (unsigned long)0, signed lo= ng: (signed long)0, unsigned long long: (unsigned long long)0, signed long = long: (signed long long)0, default: ((*((struct hlist_node **)(&(&(table)->= tb6_hlist)->next)))))) *)&((*((struct hlist_node **)(&(&(table)->tb6_hlist)= ->next))))); }); ((typeof(*(*((struct hlist_node **)(&(&(table)->tb6_hlist)= ->next)))) *)(__UNIQUE_ID_rcu743)); })); ____ptr ? ({ void *__mptr =3D (voi= d *)(____ptr); _Static_assert(__builtin_types_compatible_p(typeof(*(____ptr= )), typeof(((typeof(*(table)) *)0)->tb6_hlist)) || __builtin_types_compatib= le_p(typeof(*(____ptr)), typeof(void)), "pointer type mismatch in container= _of()"); ((typeof(*(table)) *)(__mptr - __builtin_offsetof(typeof(*(table))= , tb6_hlist))); }) : ((void *)0); })) {=0D if (table->flags & ((((1UL))) << (0)))=0D __rt6_purge_dflt_routers(net, table);=0D }=0D }=0D =0D rcu_read_unlock();=0D }=0D =0D static void rtmsg_to_fib6_config(struct net *net,=0D struct in6_rtmsg *rtmsg,=0D struct fib6_config *cfg)=0D {=0D *cfg =3D (struct fib6_config){=0D .fc_table =3D l3mdev_fib_table_by_index(net, rtmsg->rtmsg_ifindex) ?=0D : RT_TABLE_MAIN,=0D .fc_ifindex =3D rtmsg->rtmsg_ifindex,=0D .fc_metric =3D rtmsg->rtmsg_metric ? : 1024,=0D .fc_expires =3D rtmsg->rtmsg_info,=0D .fc_dst_len =3D rtmsg->rtmsg_dst_len,=0D .fc_src_len =3D rtmsg->rtmsg_src_len,=0D .fc_flags =3D rtmsg->rtmsg_flags,=0D .fc_type =3D rtmsg->rtmsg_type,=0D =0D .fc_nlinfo.nl_net =3D net,=0D =0D .fc_dst =3D rtmsg->rtmsg_dst,=0D .fc_src =3D rtmsg->rtmsg_src,=0D .fc_gateway =3D rtmsg->rtmsg_gateway,=0D };=0D }=0D =0D int ipv6_route_ioctl(struct net *net, unsigned int cmd, struct in6_rtmsg *r= tmsg)=0D {=0D struct fib6_config cfg;=0D int err;=0D =0D if (cmd !=3D 0x890B && cmd !=3D 0x890C)=0D return -22;=0D if (!ns_capable(net->user_ns, 12))=0D return -1;=0D =0D rtmsg_to_fib6_config(net, rtmsg, &cfg);=0D =0D rtnl_lock();=0D switch (cmd) {=0D case 0x890B:=0D err =3D ip6_route_add(&cfg, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) = | (( gfp_t)0x80u)), ((void *)0));=0D break;=0D case 0x890C:=0D err =3D ip6_route_del(&cfg, ((void *)0));=0D break;=0D }=0D rtnl_unlock();=0D return err;=0D }=0D =0D =0D =0D =0D =0D static int ip6_pkt_drop(struct sk_buff *skb, u8 code, int ipstats_mib_norou= tes)=0D {=0D struct dst_entry *dst =3D skb_dst(skb);=0D struct net *net =3D dev_net(dst->dev);=0D struct inet6_dev *idev;=0D int type;=0D =0D if (netif_is_l3_master(skb->dev) ||=0D dst->dev =3D=3D net->loopback_dev)=0D idev =3D __in6_dev_get_safely(dev_get_by_index_rcu(net, ((struct inet6_sk= b_parm*)((skb)->cb))->iif));=0D else=0D idev =3D ip6_dst_idev(dst);=0D =0D switch (ipstats_mib_noroutes) {=0D case IPSTATS_MIB_INNOROUTES:=0D type =3D ipv6_addr_type(&ipv6_hdr(skb)->daddr);=0D if (type =3D=3D 0x0000U) {=0D ({ struct inet6_dev *_idev =3D (idev); if (__builtin_expect(!!(_idev != =3D ((void *)0)), 1)) do { do { const void *__vpp_verify =3D (typeof((&((_i= dev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0); (voi= d)__vpp_verify; } while (0); switch(sizeof((_idev)->stats.ipv6->mibs[(IPSTA= TS_MIB_INADDRERRORS)])) { case 1: do { unsigned long __flags; do { ({ unsig= ned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy= 2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *({ do { co= nst void *__vpp_verify =3D (typeof((&((_idev)->stats.ipv6->mibs[(IPSTATS_MI= B_INADDRERRORS)])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ un= signed long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((_idev)->stats.ip= v6->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((_idev)->stats.ipv6->mibs[(IPS= TATS_MIB_INADDRERRORS)]))); (typeof((typeof(*(&((_idev)->stats.ipv6->mibs[(= IPSTATS_MIB_INADDRERRORS)]))) *)(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_I= NADDRERRORS)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_= current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __= dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); = do { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0)= ;break; case 2: do { unsigned long __flags; do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags= =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ve= rify =3D (typeof((&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))= + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr;= __ptr =3D (unsigned long) ((typeof(*(&((_idev)->stats.ipv6->mibs[(IPSTATS_= MIB_INADDRERRORS)]))) *)(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERR= ORS)]))); (typeof((typeof(*(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDR= ERRORS)]))) *)(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)])))) = (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cpu)])= ))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__fl= ags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); = arch_local_irq_restore(__flags); } while (0); } while (0);break; case 4: do= { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags) __= dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_ir= q_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (typeof((= &((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0);= (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsign= ed long) ((typeof(*(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]= ))) *)(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))); (typeof(= (typeof(*(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((= _idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)])))) (__ptr + (((__per_= cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) +=3D 1= ; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (vo= id)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_irq_res= tore(__flags); } while (0); } while (0);break; case 8: do { unsigned long _= _flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__= dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while = (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((_idev)->stats.i= pv6->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0); (void)__vpp_verif= y; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(= *(&((_idev)->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((_idev)->= stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))); (typeof((typeof(*(&((_idev= )->stats.ipv6->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((_idev)->stats.ipv6= ->mibs[(IPSTATS_MIB_INADDRERRORS)])))) (__ptr + (((__per_cpu_offset[(((stru= ct thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do = { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D= =3D &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); }= while (0); } while (0);break; default: __bad_size_call_parameter();break; = } } while (0); do { do { const void *__vpp_verify =3D (typeof((&((net)->mib= =2Eipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0); (v= oid)__vpp_verify; } while (0); switch(sizeof((net)->mib.ipv6_statistics->mi= bs[(IPSTATS_MIB_INADDRERRORS)])) { case 1: do { unsigned long __flags; do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } while (0); do { *(= { do { const void *__vpp_verify =3D (typeof((&((net)->mib.ipv6_statistics->= mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0); (void)__vpp_verify; } = while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*(&((= net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((net)->= mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)]))); (typeof((typeof(*= (&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((ne= t)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)])))) (__ptr + (((_= _per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2= ; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_ir= q_restore(__flags); } while (0); } while (0);break; case 2: do { unsigned l= ong __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } w= hile (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((net)->mib.= ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))((void *)0); (void= )__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned lon= g) ((typeof(*(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)= ]))) *)(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)]))); = (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERR= ORS)]))) *)(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)])= ))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current())->cp= u)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (= 0); arch_local_irq_restore(__flags); } while (0); } while (0);break; case 4= : do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(__flags= ) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_loca= l_irq_save(); } while (0); do { *({ do { const void *__vpp_verify =3D (type= of((&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDRERRORS)])) + 0))(= (void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; __ptr = =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_= MIB_INADDRERRORS)]))) *)(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_IN= ADDRERRORS)]))); (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(IPST= ATS_MIB_INADDRERRORS)]))) *)(&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MI= B_INADDRERRORS)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)g= et_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long= __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }= ); do { } while (0); arch_local_irq_restore(__flags); } while (0); } while = (0);break; case 8: do { unsigned long __flags; do { ({ unsigned long __dumm= y; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __fl= ags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp= _verify =3D (typeof((&((net)->mib.ipv6_statistics->mibs[(IPSTATS_MIB_INADDR= ERRORS)])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned l= ong __ptr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistic= s->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((net)->mib.ipv6_statistics->mib= s[(IPSTATS_MIB_INADDRERRORS)]))); (typeof((typeof(*(&((net)->mib.ipv6_stati= stics->mibs[(IPSTATS_MIB_INADDRERRORS)]))) *)(&((net)->mib.ipv6_statistics-= >mibs[(IPSTATS_MIB_INADDRERRORS)])))) (__ptr + (((__per_cpu_offset[(((struc= t thread_info *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do {= ({ unsigned long __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D= &__dummy2); 1; }); do { } while (0); arch_local_irq_restore(__flags); } wh= ile (0); } while (0);break; default: __bad_size_call_parameter();break; } }= while (0);});=0D break;=0D }=0D __attribute__((__fallthrough__));=0D case IPSTATS_MIB_OUTNOROUTES:=0D ({ struct inet6_dev *_idev =3D (idev); if (__builtin_expect(!!(_idev !=3D= ((void *)0)), 1)) do { do { const void *__vpp_verify =3D (typeof((&((_idev= )->stats.ipv6->mibs[(ipstats_mib_noroutes)])) + 0))((void *)0); (void)__vpp= _verify; } while (0); switch(sizeof((_idev)->stats.ipv6->mibs[(ipstats_mib_= noroutes)])) { case 1: do { unsigned long __flags; do { ({ unsigned long __= dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); = __flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *_= _vpp_verify =3D (typeof((&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)= ])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __p= tr; __ptr =3D (unsigned long) ((typeof(*(&((_idev)->stats.ipv6->mibs[(ipsta= ts_mib_noroutes)]))) *)(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)]= ))); (typeof((typeof(*(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)])= )) *)(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)])))) (__ptr + (((_= _per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2= ; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_ir= q_restore(__flags); } while (0); } while (0);break; case 2: do { unsigned l= ong __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } w= hile (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((_idev)->st= ats.ipv6->mibs[(ipstats_mib_noroutes)])) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)]))) *)(&((_idev)->sta= ts.ipv6->mibs[(ipstats_mib_noroutes)]))); (typeof((typeof(*(&((_idev)->stat= s.ipv6->mibs[(ipstats_mib_noroutes)]))) *)(&((_idev)->stats.ipv6->mibs[(ips= tats_mib_noroutes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info = *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; case 4: do { unsigned long __flags; do { ({ unsigned long __d= ummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); _= _flags =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__= vpp_verify =3D (typeof((&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)]= )) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(&((_idev)->stats.ipv6->mibs[(ipstat= s_mib_noroutes)]))) *)(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)])= )); (typeof((typeof(*(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)]))= ) *)(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)])))) (__ptr + (((__= per_cpu_offset[(((struct thread_info *)get_current())->cpu)])))); }); }) += =3D 1; } while (0); do { ({ unsigned long __dummy; typeof(__flags) __dummy2= ; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } while (0); arch_local_ir= q_restore(__flags); } while (0); } while (0);break; case 8: do { unsigned l= ong __flags; do { ({ unsigned long __dummy; typeof(__flags) __dummy2; (void= )(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D arch_local_irq_save(); } w= hile (0); do { *({ do { const void *__vpp_verify =3D (typeof((&((_idev)->st= ats.ipv6->mibs[(ipstats_mib_noroutes)])) + 0))((void *)0); (void)__vpp_veri= fy; } while (0); ({ unsigned long __ptr; __ptr =3D (unsigned long) ((typeof= (*(&((_idev)->stats.ipv6->mibs[(ipstats_mib_noroutes)]))) *)(&((_idev)->sta= ts.ipv6->mibs[(ipstats_mib_noroutes)]))); (typeof((typeof(*(&((_idev)->stat= s.ipv6->mibs[(ipstats_mib_noroutes)]))) *)(&((_idev)->stats.ipv6->mibs[(ips= tats_mib_noroutes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info = *)get_current())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned l= ong __dummy; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1= ; }); do { } while (0); arch_local_irq_restore(__flags); } while (0); } whi= le (0);break; default: __bad_size_call_parameter();break; } } while (0); do= { do { const void *__vpp_verify =3D (typeof((&((net)->mib.ipv6_statistics-= >mibs[(ipstats_mib_noroutes)])) + 0))((void *)0); (void)__vpp_verify; } whi= le (0); switch(sizeof((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noroute= s)])) { case 1: do { unsigned long __flags; do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags= =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ve= rify =3D (typeof((&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noroutes)= ])) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __p= tr; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistics->mibs= [(ipstats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_= mib_noroutes)]))); (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ip= stats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_= noroutes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_cur= rent())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dum= my; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do = { } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);br= eak; case 2: do { unsigned long __flags; do { ({ unsigned long __dummy; typ= eof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags = =3D arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_ver= ify =3D (typeof((&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noroutes)]= )) + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __pt= r; __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistics->mibs[= (ipstats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_m= ib_noroutes)]))); (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ips= tats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_n= oroutes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_curr= ent())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dumm= y; typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do {= } while (0); arch_local_irq_restore(__flags); } while (0); } while (0);bre= ak; case 4: do { unsigned long __flags; do { ({ unsigned long __dummy; type= of(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D= arch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify= =3D (typeof((&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noroutes)])) = + 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; = __ptr =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ip= stats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_= noroutes)]))); (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ipstat= s_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noro= utes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current= ())->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; = typeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } = while (0); arch_local_irq_restore(__flags); } while (0); } while (0);break;= case 8: do { unsigned long __flags; do { ({ unsigned long __dummy; typeof(= __flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); __flags =3D ar= ch_local_irq_save(); } while (0); do { *({ do { const void *__vpp_verify = =3D (typeof((&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_noroutes)])) += 0))((void *)0); (void)__vpp_verify; } while (0); ({ unsigned long __ptr; _= _ptr =3D (unsigned long) ((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ips= tats_mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_n= oroutes)]))); (typeof((typeof(*(&((net)->mib.ipv6_statistics->mibs[(ipstats= _mib_noroutes)]))) *)(&((net)->mib.ipv6_statistics->mibs[(ipstats_mib_norou= tes)])))) (__ptr + (((__per_cpu_offset[(((struct thread_info *)get_current(= ))->cpu)])))); }); }) +=3D 1; } while (0); do { ({ unsigned long __dummy; t= ypeof(__flags) __dummy2; (void)(&__dummy =3D=3D &__dummy2); 1; }); do { } w= hile (0); arch_local_irq_restore(__flags); } while (0); } while (0);break; = default: __bad_size_call_parameter();break; } } while (0);});=0D break;=0D }=0D =0D =0D if (netif_is_l3_master(skb->dev))=0D skb_dst_drop(skb);=0D =0D icmpv6_send(skb, 1, code, 0);=0D kfree_skb(skb);=0D return 0;=0D }=0D =0D static int ip6_pkt_discard(struct sk_buff *skb)=0D {=0D return ip6_pkt_drop(skb, 0, IPSTATS_MIB_INNOROUTES);=0D }=0D =0D static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_= buff *skb)=0D {=0D skb->dev =3D skb_dst(skb)->dev;=0D return ip6_pkt_drop(skb, 0, IPSTATS_MIB_OUTNOROUTES);=0D }=0D =0D static int ip6_pkt_prohibit(struct sk_buff *skb)=0D {=0D return ip6_pkt_drop(skb, 1, IPSTATS_MIB_INNOROUTES);=0D }=0D =0D static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk= _buff *skb)=0D {=0D skb->dev =3D skb_dst(skb)->dev;=0D return ip6_pkt_drop(skb, 1, IPSTATS_MIB_OUTNOROUTES);=0D }=0D =0D =0D =0D =0D =0D struct fib6_info *addrconf_f6i_alloc(struct net *net,=0D struct inet6_dev *idev,=0D const struct in6_addr *addr,=0D bool anycast, gfp_t gfp_flags)=0D {=0D struct fib6_config cfg =3D {=0D .fc_table =3D l3mdev_fib_table(idev->dev) ? : RT_TABLE_MAIN,=0D .fc_ifindex =3D idev->dev->ifindex,=0D .fc_flags =3D 0x0001 | 0x00200000,=0D .fc_dst =3D *addr,=0D .fc_dst_len =3D 128,=0D .fc_protocol =3D 2,=0D .fc_nlinfo.nl_net =3D net,=0D .fc_ignore_dev_down =3D true,=0D };=0D struct fib6_info *f6i;=0D =0D if (anycast) {=0D cfg.fc_type =3D RTN_ANYCAST;=0D cfg.fc_flags |=3D 0x00100000;=0D } else {=0D cfg.fc_type =3D RTN_LOCAL;=0D cfg.fc_flags |=3D 0x80000000;=0D }=0D =0D f6i =3D ip6_route_info_create(&cfg, gfp_flags, ((void *)0));=0D if (!IS_ERR(f6i))=0D f6i->dst_nocount =3D true;=0D return f6i;=0D }=0D =0D =0D struct arg_dev_net_ip {=0D struct net_device *dev;=0D struct net *net;=0D struct in6_addr *addr;=0D };=0D =0D static int fib6_remove_prefsrc(struct fib6_info *rt, void *arg)=0D {=0D struct net_device *dev =3D ((struct arg_dev_net_ip *)arg)->dev;=0D struct net *net =3D ((struct arg_dev_net_ip *)arg)->net;=0D struct in6_addr *addr =3D ((struct arg_dev_net_ip *)arg)->addr;=0D =0D if (!rt->nh &&=0D ((void *)rt->fib6_nh->nh_common.nhc_dev =3D=3D dev || !dev) &&=0D rt !=3D net->ipv6.fib6_null_entry &&=0D ipv6_addr_equal(addr, &rt->fib6_prefsrc.addr)) {=0D spin_lock_bh(&rt6_exception_lock);=0D =0D rt->fib6_prefsrc.plen =3D 0;=0D spin_unlock_bh(&rt6_exception_lock);=0D }=0D return 0;=0D }=0D =0D void rt6_remove_prefsrc(struct inet6_ifaddr *ifp)=0D {=0D struct net *net =3D dev_net(ifp->idev->dev);=0D struct arg_dev_net_ip adni =3D {=0D .dev =3D ifp->idev->dev,=0D .net =3D net,=0D .addr =3D &ifp->addr,=0D };=0D fib6_clean_all(net, fib6_remove_prefsrc, &adni);=0D }=0D =0D =0D =0D =0D static int fib6_clean_tohost(struct fib6_info *rt, void *arg)=0D {=0D struct in6_addr *gateway =3D (struct in6_addr *)arg;=0D struct fib6_nh *nh;=0D =0D =0D if (rt->nh)=0D return 0;=0D =0D nh =3D rt->fib6_nh;=0D if (((rt->fib6_flags & (0x00040000 | 0x00010000)) =3D=3D (0x00040000 | 0x0= 0010000)) &&=0D nh->nh_common.nhc_gw_family && ipv6_addr_equal(gateway, &nh->nh_common= =2Enhc_gw.ipv6))=0D return -1;=0D =0D =0D =0D =0D =0D fib6_nh_exceptions_clean_tohost(nh, gateway);=0D =0D return 0;=0D }=0D =0D void rt6_clean_tohost(struct net *net, struct in6_addr *gateway)=0D {=0D fib6_clean_all(net, fib6_clean_tohost, gateway);=0D }=0D =0D struct arg_netdev_event {=0D const struct net_device *dev;=0D union {=0D unsigned char nh_flags;=0D unsigned long event;=0D };=0D };=0D =0D static struct fib6_info *rt6_multipath_first_sibling(const struct fib6_info= *rt)=0D {=0D struct fib6_info *iter;=0D struct fib6_node *fn;=0D =0D fn =3D ({ do { } while (0 && (!((lock_is_held(&(&rt->fib6_table->tb6_lock)= ->dep_map))))); ; ((typeof(*(rt->fib6_node)) *)((rt->fib6_node))); });=0D =0D iter =3D ({ do { } while (0 && (!((lock_is_held(&(&rt->fib6_table->tb6_loc= k)->dep_map))))); ; ((typeof(*(fn->leaf)) *)((fn->leaf))); });=0D =0D while (iter) {=0D if (iter->fib6_metric =3D=3D rt->fib6_metric &&=0D rt6_qualify_for_ecmp(iter))=0D return iter;=0D iter =3D ({ do { } while (0 && (!((lock_is_held(&(&rt->fib6_table->tb6_lo= ck)->dep_map))))); ; ((typeof(*(iter->fib6_next)) *)((iter->fib6_next))); }= );=0D =0D }=0D =0D return ((void *)0);=0D }=0D =0D =0D static bool rt6_is_dead(const struct fib6_info *rt)=0D {=0D if (rt->fib6_nh->nh_common.nhc_flags & 1 ||=0D (rt->fib6_nh->nh_common.nhc_flags & 16 &&=0D ip6_ignore_linkdown(rt->fib6_nh->nh_common.nhc_dev)))=0D return true;=0D =0D return false;=0D }=0D =0D static int rt6_multipath_total_weight(const struct fib6_info *rt)=0D {=0D struct fib6_info *iter;=0D int total =3D 0;=0D =0D if (!rt6_is_dead(rt))=0D total +=3D rt->fib6_nh->nh_common.nhc_weight;=0D =0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); })) {=0D if (!rt6_is_dead(iter))=0D total +=3D iter->fib6_nh->nh_common.nhc_weight;=0D }=0D =0D return total;=0D }=0D =0D static void rt6_upper_bound_set(struct fib6_info *rt, int *weight, int tota= l)=0D {=0D int upper_bound =3D -1;=0D =0D if (!rt6_is_dead(rt)) {=0D *weight +=3D rt->fib6_nh->nh_common.nhc_weight;=0D upper_bound =3D ( { typeof(total) __d =3D total; unsigned long long _tmp = =3D ((u64) (*weight) << 31) + (__d) / 2; ({ uint32_t __base =3D (__d); uint= 32_t __rem; __rem =3D ((uint64_t)(_tmp)) % __base; (_tmp) =3D ((uint64_t)(_= tmp)) / __base; __rem; }); _tmp; } ) - 1;=0D =0D }=0D atomic_set(&rt->fib6_nh->nh_common.nhc_upper_bound, upper_bound);=0D }=0D =0D static void rt6_multipath_upper_bound_set(struct fib6_info *rt, int total)= =0D {=0D struct fib6_info *iter;=0D int weight =3D 0;=0D =0D rt6_upper_bound_set(rt, &weight, total);=0D =0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); }))=0D rt6_upper_bound_set(iter, &weight, total);=0D }=0D =0D void rt6_multipath_rebalance(struct fib6_info *rt)=0D {=0D struct fib6_info *first;=0D int total;=0D =0D =0D =0D =0D =0D if (!rt->fib6_nsiblings || rt->should_flush)=0D return;=0D =0D =0D =0D =0D =0D first =3D rt6_multipath_first_sibling(rt);=0D if (({ int __ret_warn_on =3D !!(!first); if (__builtin_expect(!!(__ret_war= n_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsection __= bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 - 2b"= "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".popsect= ion" : : "i" ("net/ipv6/route.c"), "i" (4735), "i" ((1 << 0)|((1 << 1) | ((= 9) << 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(= !!(__ret_warn_on), 0); }))=0D return;=0D =0D total =3D rt6_multipath_total_weight(first);=0D rt6_multipath_upper_bound_set(first, total);=0D }=0D =0D static int fib6_ifup(struct fib6_info *rt, void *p_arg)=0D {=0D const struct arg_netdev_event *arg =3D p_arg;=0D struct net *net =3D dev_net(arg->dev);=0D =0D if (rt !=3D net->ipv6.fib6_null_entry && !rt->nh &&=0D rt->fib6_nh->nh_common.nhc_dev =3D=3D arg->dev) {=0D rt->fib6_nh->nh_common.nhc_flags &=3D ~arg->nh_flags;=0D fib6_update_sernum_upto_root(net, rt);=0D rt6_multipath_rebalance(rt);=0D }=0D =0D return 0;=0D }=0D =0D void rt6_sync_up(struct net_device *dev, unsigned char nh_flags)=0D {=0D struct arg_netdev_event arg =3D {=0D .dev =3D dev,=0D {=0D .nh_flags =3D nh_flags,=0D },=0D };=0D =0D if (nh_flags & 1 && netif_carrier_ok(dev))=0D arg.nh_flags |=3D 16;=0D =0D fib6_clean_all(dev_net(dev), fib6_ifup, &arg);=0D }=0D =0D =0D static bool rt6_multipath_uses_dev(const struct fib6_info *rt,=0D const struct net_device *dev)=0D {=0D struct fib6_info *iter;=0D =0D if (rt->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D return true;=0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); }))=0D if (iter->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D return true;=0D =0D return false;=0D }=0D =0D static void rt6_multipath_flush(struct fib6_info *rt)=0D {=0D struct fib6_info *iter;=0D =0D rt->should_flush =3D 1;=0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); }))=0D iter->should_flush =3D 1;=0D }=0D =0D static unsigned int rt6_multipath_dead_count(const struct fib6_info *rt,=0D const struct net_device *down_dev)=0D {=0D struct fib6_info *iter;=0D unsigned int dead =3D 0;=0D =0D if (rt->fib6_nh->nh_common.nhc_dev =3D=3D down_dev ||=0D rt->fib6_nh->nh_common.nhc_flags & 1)=0D dead++;=0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); }))=0D if (iter->fib6_nh->nh_common.nhc_dev =3D=3D down_dev ||=0D iter->fib6_nh->nh_common.nhc_flags & 1)=0D dead++;=0D =0D return dead;=0D }=0D =0D static void rt6_multipath_nh_flags_set(struct fib6_info *rt,=0D const struct net_device *dev,=0D unsigned char nh_flags)=0D {=0D struct fib6_info *iter;=0D =0D if (rt->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D rt->fib6_nh->nh_common.nhc_flags |=3D nh_flags;=0D for (iter =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next); _S= tatic_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)->ne= xt)), typeof(((typeof(*iter) *)0)->fib6_siblings)) || __builtin_types_compa= tible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "pointer type= mismatch in container_of()"); ((typeof(*iter) *)(__mptr - __builtin_offset= of(typeof(*iter), fib6_siblings))); }); !(&iter->fib6_siblings =3D=3D (&rt-= >fib6_siblings)); iter =3D ({ void *__mptr =3D (void *)((iter)->fib6_siblin= gs.next); _Static_assert(__builtin_types_compatible_p(typeof(*((iter)->fib6= _siblings.next)), typeof(((typeof(*(iter)) *)0)->fib6_siblings)) || __built= in_types_compatible_p(typeof(*((iter)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(iter)) *)(__mptr - = __builtin_offsetof(typeof(*(iter)), fib6_siblings))); }))=0D if (iter->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D iter->fib6_nh->nh_common.nhc_flags |=3D nh_flags;=0D }=0D =0D =0D static int fib6_ifdown(struct fib6_info *rt, void *p_arg)=0D {=0D const struct arg_netdev_event *arg =3D p_arg;=0D const struct net_device *dev =3D arg->dev;=0D struct net *net =3D dev_net(dev);=0D =0D if (rt =3D=3D net->ipv6.fib6_null_entry || rt->nh)=0D return 0;=0D =0D switch (arg->event) {=0D case NETDEV_UNREGISTER:=0D return rt->fib6_nh->nh_common.nhc_dev =3D=3D dev ? -1 : 0;=0D case NETDEV_DOWN:=0D if (rt->should_flush)=0D return -1;=0D if (!rt->fib6_nsiblings)=0D return rt->fib6_nh->nh_common.nhc_dev =3D=3D dev ? -1 : 0;=0D if (rt6_multipath_uses_dev(rt, dev)) {=0D unsigned int count;=0D =0D count =3D rt6_multipath_dead_count(rt, dev);=0D if (rt->fib6_nsiblings + 1 =3D=3D count) {=0D rt6_multipath_flush(rt);=0D return -1;=0D }=0D rt6_multipath_nh_flags_set(rt, dev, 1 |=0D 16);=0D fib6_update_sernum(net, rt);=0D rt6_multipath_rebalance(rt);=0D }=0D return -2;=0D case NETDEV_CHANGE:=0D if (rt->fib6_nh->nh_common.nhc_dev !=3D dev ||=0D rt->fib6_flags & (0x80000000 | 0x00100000))=0D break;=0D rt->fib6_nh->nh_common.nhc_flags |=3D 16;=0D rt6_multipath_rebalance(rt);=0D break;=0D }=0D =0D return 0;=0D }=0D =0D void rt6_sync_down_dev(struct net_device *dev, unsigned long event)=0D {=0D struct arg_netdev_event arg =3D {=0D .dev =3D dev,=0D {=0D .event =3D event,=0D },=0D };=0D struct net *net =3D dev_net(dev);=0D =0D if (net->ipv6.sysctl.skip_notify_on_dev_down)=0D fib6_clean_all_skip_notify(net, fib6_ifdown, &arg);=0D else=0D fib6_clean_all(net, fib6_ifdown, &arg);=0D }=0D =0D void rt6_disable_ip(struct net_device *dev, unsigned long event)=0D {=0D rt6_sync_down_dev(dev, event);=0D rt6_uncached_list_flush_dev(dev);=0D neigh_ifdown(&nd_tbl, dev);=0D }=0D =0D struct rt6_mtu_change_arg {=0D struct net_device *dev;=0D unsigned int mtu;=0D struct fib6_info *f6i;=0D };=0D =0D static int fib6_nh_mtu_change(struct fib6_nh *nh, void *_arg)=0D {=0D struct rt6_mtu_change_arg *arg =3D (struct rt6_mtu_change_arg *)_arg;=0D struct fib6_info *f6i =3D arg->f6i;=0D =0D =0D =0D =0D =0D =0D if (nh->nh_common.nhc_dev =3D=3D arg->dev) {=0D struct inet6_dev *idev =3D __in6_dev_get(arg->dev);=0D u32 mtu =3D f6i->fib6_metrics->metrics[RTAX_MTU-1];=0D =0D if (mtu >=3D arg->mtu ||=0D (mtu < arg->mtu && mtu =3D=3D idev->cnf.mtu6))=0D fib6_metric_set(f6i, RTAX_MTU, arg->mtu);=0D =0D spin_lock_bh(&rt6_exception_lock);=0D rt6_exceptions_update_pmtu(idev, nh, arg->mtu);=0D spin_unlock_bh(&rt6_exception_lock);=0D }=0D =0D return 0;=0D }=0D =0D static int rt6_mtu_change_route(struct fib6_info *f6i, void *p_arg)=0D {=0D struct rt6_mtu_change_arg *arg =3D (struct rt6_mtu_change_arg *) p_arg;=0D struct inet6_dev *idev;=0D =0D =0D =0D =0D =0D =0D =0D idev =3D __in6_dev_get(arg->dev);=0D if (!idev)=0D return 0;=0D =0D if (fib6_metric_locked(f6i, RTAX_MTU))=0D return 0;=0D =0D arg->f6i =3D f6i;=0D if (f6i->nh) {=0D =0D return nexthop_for_each_fib6_nh(f6i->nh, fib6_nh_mtu_change,=0D arg);=0D }=0D =0D return fib6_nh_mtu_change(f6i->fib6_nh, arg);=0D }=0D =0D void rt6_mtu_change(struct net_device *dev, unsigned int mtu)=0D {=0D struct rt6_mtu_change_arg arg =3D {=0D .dev =3D dev,=0D .mtu =3D mtu,=0D };=0D =0D fib6_clean_all(dev_net(dev), rt6_mtu_change_route, &arg);=0D }=0D =0D static const struct nla_policy rtm_ipv6_policy[(__RTA_MAX - 1)+1] =3D {=0D [RTA_UNSPEC] =3D { .strict_start_type =3D RTA_DPORT + 1 },=0D [RTA_GATEWAY] =3D { .len =3D sizeof(struct in6_addr) },=0D [RTA_PREFSRC] =3D { .len =3D sizeof(struct in6_addr) },=0D [RTA_OIF] =3D { .type =3D NLA_U32 },=0D [RTA_IIF] =3D { .type =3D NLA_U32 },=0D [RTA_PRIORITY] =3D { .type =3D NLA_U32 },=0D [RTA_METRICS] =3D { .type =3D NLA_NESTED },=0D [RTA_MULTIPATH] =3D { .len =3D sizeof(struct rtnexthop) },=0D [RTA_PREF] =3D { .type =3D NLA_U8 },=0D [RTA_ENCAP_TYPE] =3D { .type =3D NLA_U16 },=0D [RTA_ENCAP] =3D { .type =3D NLA_NESTED },=0D [RTA_EXPIRES] =3D { .type =3D NLA_U32 },=0D [RTA_UID] =3D { .type =3D NLA_U32 },=0D [RTA_MARK] =3D { .type =3D NLA_U32 },=0D [RTA_TABLE] =3D { .type =3D NLA_U32 },=0D [RTA_IP_PROTO] =3D { .type =3D NLA_U8 },=0D [RTA_SPORT] =3D { .type =3D NLA_U16 },=0D [RTA_DPORT] =3D { .type =3D NLA_U16 },=0D [RTA_NH_ID] =3D { .type =3D NLA_U32 },=0D };=0D =0D static int rtm_to_fib6_config(struct sk_buff *skb, struct nlmsghdr *nlh,=0D struct fib6_config *cfg,=0D struct netlink_ext_ack *extack)=0D {=0D struct rtmsg *rtm;=0D struct nlattr *tb[(__RTA_MAX - 1)+1];=0D unsigned int pref;=0D int err;=0D =0D err =3D nlmsg_parse_deprecated(nlh, sizeof(*rtm), tb, (__RTA_MAX - 1),=0D rtm_ipv6_policy, extack);=0D if (err < 0)=0D goto errout;=0D =0D err =3D -22;=0D rtm =3D nlmsg_data(nlh);=0D =0D if (rtm->rtm_tos) {=0D do { static const char __msg[] =3D "Invalid dsfield (tos): option not ava= ilable for IPv6"; struct netlink_ext_ack *__extack =3D (extack); do_trace_n= etlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);= =0D =0D goto errout;=0D }=0D =0D *cfg =3D (struct fib6_config){=0D .fc_table =3D rtm->rtm_table,=0D .fc_dst_len =3D rtm->rtm_dst_len,=0D .fc_src_len =3D rtm->rtm_src_len,=0D .fc_flags =3D 0x0001,=0D .fc_protocol =3D rtm->rtm_protocol,=0D .fc_type =3D rtm->rtm_type,=0D =0D .fc_nlinfo.portid =3D (*(struct netlink_skb_parms*)&((skb)->cb)).portid,= =0D .fc_nlinfo.nlh =3D nlh,=0D .fc_nlinfo.nl_net =3D sock_net(skb->sk),=0D };=0D =0D if (rtm->rtm_type =3D=3D RTN_UNREACHABLE ||=0D rtm->rtm_type =3D=3D RTN_BLACKHOLE ||=0D rtm->rtm_type =3D=3D RTN_PROHIBIT ||=0D rtm->rtm_type =3D=3D RTN_THROW)=0D cfg->fc_flags |=3D 0x0200;=0D =0D if (rtm->rtm_type =3D=3D RTN_LOCAL)=0D cfg->fc_flags |=3D 0x80000000;=0D =0D if (rtm->rtm_flags & 0x200)=0D cfg->fc_flags |=3D 0x01000000;=0D =0D cfg->fc_flags |=3D (rtm->rtm_flags & 4);=0D =0D if (tb[RTA_NH_ID]) {=0D if (tb[RTA_GATEWAY] || tb[RTA_OIF] ||=0D tb[RTA_MULTIPATH] || tb[RTA_ENCAP]) {=0D do { static const char __msg[] =3D "Nexthop specification and nexthop id= are mutually exclusive"; struct netlink_ext_ack *__extack =3D (extack); do= _trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } whi= le (0);=0D =0D goto errout;=0D }=0D cfg->fc_nh_id =3D nla_get_u32(tb[RTA_NH_ID]);=0D }=0D =0D if (tb[RTA_GATEWAY]) {=0D cfg->fc_gateway =3D nla_get_in6_addr(tb[RTA_GATEWAY]);=0D cfg->fc_flags |=3D 0x0002;=0D }=0D if (tb[RTA_VIA]) {=0D do { static const char __msg[] =3D "IPv6 does not support RTA_VIA attribu= te"; struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack= (__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D goto errout;=0D }=0D =0D if (tb[RTA_DST]) {=0D int plen =3D (rtm->rtm_dst_len + 7) >> 3;=0D =0D if (nla_len(tb[RTA_DST]) < plen)=0D goto errout;=0D =0D nla_memcpy(&cfg->fc_dst, tb[RTA_DST], plen);=0D }=0D =0D if (tb[RTA_SRC]) {=0D int plen =3D (rtm->rtm_src_len + 7) >> 3;=0D =0D if (nla_len(tb[RTA_SRC]) < plen)=0D goto errout;=0D =0D nla_memcpy(&cfg->fc_src, tb[RTA_SRC], plen);=0D }=0D =0D if (tb[RTA_PREFSRC])=0D cfg->fc_prefsrc =3D nla_get_in6_addr(tb[RTA_PREFSRC]);=0D =0D if (tb[RTA_OIF])=0D cfg->fc_ifindex =3D nla_get_u32(tb[RTA_OIF]);=0D =0D if (tb[RTA_PRIORITY])=0D cfg->fc_metric =3D nla_get_u32(tb[RTA_PRIORITY]);=0D =0D if (tb[RTA_METRICS]) {=0D cfg->fc_mx =3D nla_data(tb[RTA_METRICS]);=0D cfg->fc_mx_len =3D nla_len(tb[RTA_METRICS]);=0D }=0D =0D if (tb[RTA_TABLE])=0D cfg->fc_table =3D nla_get_u32(tb[RTA_TABLE]);=0D =0D if (tb[RTA_MULTIPATH]) {=0D cfg->fc_mp =3D nla_data(tb[RTA_MULTIPATH]);=0D cfg->fc_mp_len =3D nla_len(tb[RTA_MULTIPATH]);=0D =0D err =3D lwtunnel_valid_encap_type_attr(cfg->fc_mp,=0D cfg->fc_mp_len, extack);=0D if (err < 0)=0D goto errout;=0D }=0D =0D if (tb[RTA_PREF]) {=0D pref =3D nla_get_u8(tb[RTA_PREF]);=0D if (pref !=3D 0x3 &&=0D pref !=3D 0x1)=0D pref =3D 0x0;=0D cfg->fc_flags |=3D ((pref) << 27);=0D }=0D =0D if (tb[RTA_ENCAP])=0D cfg->fc_encap =3D tb[RTA_ENCAP];=0D =0D if (tb[RTA_ENCAP_TYPE]) {=0D cfg->fc_encap_type =3D nla_get_u16(tb[RTA_ENCAP_TYPE]);=0D =0D err =3D lwtunnel_valid_encap_type(cfg->fc_encap_type, extack);=0D if (err < 0)=0D goto errout;=0D }=0D =0D if (tb[RTA_EXPIRES]) {=0D unsigned long timeout =3D addrconf_timeout_fixup(nla_get_u32(tb[RTA_EXPIR= ES]), 100);=0D =0D if (addrconf_finite_timeout(timeout)) {=0D cfg->fc_expires =3D jiffies_to_clock_t(timeout * 100);=0D cfg->fc_flags |=3D 0x00400000;=0D }=0D }=0D =0D err =3D 0;=0D errout:=0D return err;=0D }=0D =0D struct rt6_nh {=0D struct fib6_info *fib6_info;=0D struct fib6_config r_cfg;=0D struct list_head next;=0D };=0D =0D static int ip6_route_info_append(struct net *net,=0D struct list_head *rt6_nh_list,=0D struct fib6_info *rt,=0D struct fib6_config *r_cfg)=0D {=0D struct rt6_nh *nh;=0D int err =3D -17;=0D =0D for (nh =3D ({ void *__mptr =3D (void *)((rt6_nh_list)->next); _Static_ass= ert(__builtin_types_compatible_p(typeof(*((rt6_nh_list)->next)), typeof(((t= ypeof(*nh) *)0)->next)) || __builtin_types_compatible_p(typeof(*((rt6_nh_li= st)->next)), typeof(void)), "pointer type mismatch in container_of()"); ((t= ypeof(*nh) *)(__mptr - __builtin_offsetof(typeof(*nh), next))); }); !(&nh->= next =3D=3D (rt6_nh_list)); nh =3D ({ void *__mptr =3D (void *)((nh)->next.= next); _Static_assert(__builtin_types_compatible_p(typeof(*((nh)->next.next= )), typeof(((typeof(*(nh)) *)0)->next)) || __builtin_types_compatible_p(typ= eof(*((nh)->next.next)), typeof(void)), "pointer type mismatch in container= _of()"); ((typeof(*(nh)) *)(__mptr - __builtin_offsetof(typeof(*(nh)), next= ))); })) {=0D =0D if (rt6_duplicate_nexthop(nh->fib6_info, rt))=0D return err;=0D }=0D =0D nh =3D kzalloc(sizeof(*nh), ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) |= (( gfp_t)0x80u)));=0D if (!nh)=0D return -12;=0D nh->fib6_info =3D rt;=0D memcpy(&nh->r_cfg, r_cfg, sizeof(*r_cfg));=0D list_add_tail(&nh->next, rt6_nh_list);=0D =0D return 0;=0D }=0D =0D static void ip6_route_mpath_notify(struct fib6_info *rt,=0D struct fib6_info *rt_last,=0D struct nl_info *info,=0D __u16 nlflags)=0D {=0D =0D =0D =0D =0D =0D =0D if ((nlflags & 0x800) && rt_last && rt_last->fib6_nsiblings) {=0D rt =3D ({ void *__mptr =3D (void *)((&rt_last->fib6_siblings)->next); _St= atic_assert(__builtin_types_compatible_p(typeof(*((&rt_last->fib6_siblings)= ->next)), typeof(((struct fib6_info *)0)->fib6_siblings)) || __builtin_type= s_compatible_p(typeof(*((&rt_last->fib6_siblings)->next)), typeof(void)), "= pointer type mismatch in container_of()"); ((struct fib6_info *)(__mptr - _= _builtin_offsetof(struct fib6_info, fib6_siblings))); });=0D =0D =0D }=0D =0D if (rt)=0D inet6_rt_notify(RTM_NEWROUTE, rt, info, nlflags);=0D }=0D =0D static bool ip6_route_mpath_should_notify(const struct fib6_info *rt)=0D {=0D bool rt_can_ecmp =3D rt6_qualify_for_ecmp(rt);=0D bool should_notify =3D false;=0D struct fib6_info *leaf;=0D struct fib6_node *fn;=0D =0D rcu_read_lock();=0D fn =3D ({ typeof(*(rt->fib6_node)) *__UNIQUE_ID_rcu745 =3D (typeof(*(rt->f= ib6_node)) *)({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_746(void) ; if (!((sizeof((rt->fib6_node)) =3D=3D sizeof(char) || = sizeof((rt->fib6_node)) =3D=3D sizeof(short) || sizeof((rt->fib6_node)) =3D= =3D sizeof(int) || sizeof((rt->fib6_node)) =3D=3D sizeof(long)) || sizeof((= rt->fib6_node)) =3D=3D sizeof(long long))) __compiletime_assert_746(); } wh= ile (0); (*(const volatile typeof( _Generic(((rt->fib6_node)), char: (char)= 0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsigned s= hort: (unsigned short)0, signed short: (signed short)0, unsigned int: (unsi= gned int)0, signed int: (signed int)0, unsigned long: (unsigned long)0, sig= ned long: (signed long)0, unsigned long long: (unsigned long long)0, signed= long long: (signed long long)0, default: ((rt->fib6_node)))) *)&((rt->fib6= _node))); }); do { } while (0 && (!((0) || rcu_read_lock_held()))); ; ((typ= eof(*(rt->fib6_node)) *)(__UNIQUE_ID_rcu745)); });=0D if (!fn)=0D goto out;=0D =0D leaf =3D ({ typeof(*(fn->leaf)) *__UNIQUE_ID_rcu747 =3D (typeof(*(fn->leaf= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _748(void) ; if (!((sizeof((fn->leaf)) =3D=3D sizeof(char) || sizeof((fn->l= eaf)) =3D=3D sizeof(short) || sizeof((fn->leaf)) =3D=3D sizeof(int) || size= of((fn->leaf)) =3D=3D sizeof(long)) || sizeof((fn->leaf)) =3D=3D sizeof(lon= g long))) __compiletime_assert_748(); } while (0); (*(const volatile typeof= ( _Generic(((fn->leaf)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((fn->leaf)))) *)&((fn->leaf))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(fn->leaf)) *)(__UNIQUE_ID_rcu747)); });=0D if (!leaf)=0D goto out;=0D =0D if (rt =3D=3D leaf ||=0D (rt_can_ecmp && rt->fib6_metric =3D=3D leaf->fib6_metric &&=0D rt6_qualify_for_ecmp(leaf)))=0D should_notify =3D true;=0D out:=0D rcu_read_unlock();=0D =0D return should_notify;=0D }=0D =0D static int fib6_gw_from_attr(struct in6_addr *gw, struct nlattr *nla,=0D struct netlink_ext_ack *extack)=0D {=0D if (nla_len(nla) < sizeof(*gw)) {=0D do { static const char __msg[] =3D "Invalid IPv6 address in RTA_GATEWAY";= struct netlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__m= sg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D return -22;=0D }=0D =0D *gw =3D nla_get_in6_addr(nla);=0D =0D return 0;=0D }=0D =0D static int ip6_route_multipath_add(struct fib6_config *cfg,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_info *rt_notif =3D ((void *)0), *rt_last =3D ((void *)0);=0D struct nl_info *info =3D &cfg->fc_nlinfo;=0D struct fib6_config r_cfg;=0D struct rtnexthop *rtnh;=0D struct fib6_info *rt;=0D struct rt6_nh *err_nh;=0D struct rt6_nh *nh, *nh_safe;=0D __u16 nlflags;=0D int remaining;=0D int attrlen;=0D int err =3D 1;=0D int nhn =3D 0;=0D int replace =3D (cfg->fc_nlinfo.nlh &&=0D (cfg->fc_nlinfo.nlh->nlmsg_flags & 0x100));=0D struct list_head rt6_nh_list =3D { &(rt6_nh_list), &(rt6_nh_list) };=0D =0D nlflags =3D replace ? 0x100 : 0x400;=0D if (info->nlh && info->nlh->nlmsg_flags & 0x800)=0D nlflags |=3D 0x800;=0D =0D remaining =3D cfg->fc_mp_len;=0D rtnh =3D (struct rtnexthop *)cfg->fc_mp;=0D =0D =0D =0D =0D while (rtnh_ok(rtnh, remaining)) {=0D memcpy(&r_cfg, cfg, sizeof(*cfg));=0D if (rtnh->rtnh_ifindex)=0D r_cfg.fc_ifindex =3D rtnh->rtnh_ifindex;=0D =0D attrlen =3D rtnh_attrlen(rtnh);=0D if (attrlen > 0) {=0D struct nlattr *nla, *attrs =3D rtnh_attrs(rtnh);=0D =0D nla =3D nla_find(attrs, attrlen, RTA_GATEWAY);=0D if (nla) {=0D err =3D fib6_gw_from_attr(&r_cfg.fc_gateway, nla,=0D extack);=0D if (err)=0D goto cleanup;=0D =0D r_cfg.fc_flags |=3D 0x0002;=0D }=0D r_cfg.fc_encap =3D nla_find(attrs, attrlen, RTA_ENCAP);=0D =0D =0D =0D =0D nla =3D nla_find(attrs, attrlen, RTA_ENCAP_TYPE);=0D if (nla)=0D r_cfg.fc_encap_type =3D nla_get_u16(nla);=0D }=0D =0D r_cfg.fc_flags |=3D (rtnh->rtnh_flags & 4);=0D rt =3D ip6_route_info_create(&r_cfg, ((( gfp_t)(0x400u|0x800u)) | (( gfp_= t)0x40u) | (( gfp_t)0x80u)), extack);=0D if (IS_ERR(rt)) {=0D err =3D PTR_ERR(rt);=0D rt =3D ((void *)0);=0D goto cleanup;=0D }=0D if (!rt6_qualify_for_ecmp(rt)) {=0D err =3D -22;=0D do { static const char __msg[] =3D "Device only routes can not be added = for IPv6 using the multipath API."; struct netlink_ext_ack *__extack =3D (e= xtack); do_trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __= msg; } while (0);=0D =0D fib6_info_release(rt);=0D goto cleanup;=0D }=0D =0D rt->fib6_nh->nh_common.nhc_weight =3D rtnh->rtnh_hops + 1;=0D =0D err =3D ip6_route_info_append(info->nl_net, &rt6_nh_list,=0D rt, &r_cfg);=0D if (err) {=0D fib6_info_release(rt);=0D goto cleanup;=0D }=0D =0D rtnh =3D rtnh_next(rtnh, &remaining);=0D }=0D =0D if (list_empty(&rt6_nh_list)) {=0D do { static const char __msg[] =3D "Invalid nexthop configuration - no va= lid nexthops"; struct netlink_ext_ack *__extack =3D (extack); do_trace_netl= ink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D =0D return -22;=0D }=0D =0D =0D =0D =0D =0D info->skip_notify =3D 1;=0D =0D =0D =0D =0D info->skip_notify_kernel =3D 1;=0D =0D err_nh =3D ((void *)0);=0D for (nh =3D ({ void *__mptr =3D (void *)((&rt6_nh_list)->next); _Static_as= sert(__builtin_types_compatible_p(typeof(*((&rt6_nh_list)->next)), typeof((= (typeof(*nh) *)0)->next)) || __builtin_types_compatible_p(typeof(*((&rt6_nh= _list)->next)), typeof(void)), "pointer type mismatch in container_of()"); = ((typeof(*nh) *)(__mptr - __builtin_offsetof(typeof(*nh), next))); }); !(&n= h->next =3D=3D (&rt6_nh_list)); nh =3D ({ void *__mptr =3D (void *)((nh)->n= ext.next); _Static_assert(__builtin_types_compatible_p(typeof(*((nh)->next.= next)), typeof(((typeof(*(nh)) *)0)->next)) || __builtin_types_compatible_p= (typeof(*((nh)->next.next)), typeof(void)), "pointer type mismatch in conta= iner_of()"); ((typeof(*(nh)) *)(__mptr - __builtin_offsetof(typeof(*(nh)), = next))); })) {=0D err =3D __ip6_ins_rt(nh->fib6_info, info, extack);=0D fib6_info_release(nh->fib6_info);=0D =0D if (!err) {=0D =0D rt_last =3D nh->fib6_info;=0D =0D =0D if (!rt_notif)=0D rt_notif =3D nh->fib6_info;=0D }=0D =0D =0D nh->fib6_info =3D ((void *)0);=0D if (err) {=0D if (replace && nhn)=0D do { static const char __msg[] =3D "ipv6" ": " "multipath route replace= failed (check consistency of installed routes)"; struct netlink_ext_ack *_= _extack =3D ((extack)); do_trace_netlink_extack(__msg); if (__extack) __ext= ack->_msg =3D __msg; } while (0);=0D =0D err_nh =3D nh;=0D goto add_errout;=0D }=0D # 5354 "net/ipv6/route.c"=0D if (cfg->fc_nlinfo.nlh) {=0D cfg->fc_nlinfo.nlh->nlmsg_flags &=3D ~(0x200 |=0D 0x100);=0D cfg->fc_nlinfo.nlh->nlmsg_flags |=3D 0x400;=0D }=0D nhn++;=0D }=0D =0D =0D =0D =0D =0D =0D if (ip6_route_mpath_should_notify(rt_notif)) {=0D enum fib_event_type fib_event;=0D =0D if (rt_notif->fib6_nsiblings !=3D nhn - 1)=0D fib_event =3D FIB_EVENT_ENTRY_APPEND;=0D else=0D fib_event =3D FIB_EVENT_ENTRY_REPLACE;=0D =0D err =3D call_fib6_multipath_entry_notifiers(info->nl_net,=0D fib_event, rt_notif,=0D nhn - 1, extack);=0D if (err) {=0D =0D err_nh =3D ((void *)0);=0D goto add_errout;=0D }=0D }=0D =0D =0D ip6_route_mpath_notify(rt_notif, rt_last, info, nlflags);=0D goto cleanup;=0D =0D add_errout:=0D =0D =0D =0D =0D if (rt_notif)=0D ip6_route_mpath_notify(rt_notif, rt_last, info, nlflags);=0D =0D =0D for (nh =3D ({ void *__mptr =3D (void *)((&rt6_nh_list)->next); _Static_as= sert(__builtin_types_compatible_p(typeof(*((&rt6_nh_list)->next)), typeof((= (typeof(*nh) *)0)->next)) || __builtin_types_compatible_p(typeof(*((&rt6_nh= _list)->next)), typeof(void)), "pointer type mismatch in container_of()"); = ((typeof(*nh) *)(__mptr - __builtin_offsetof(typeof(*nh), next))); }); !(&n= h->next =3D=3D (&rt6_nh_list)); nh =3D ({ void *__mptr =3D (void *)((nh)->n= ext.next); _Static_assert(__builtin_types_compatible_p(typeof(*((nh)->next.= next)), typeof(((typeof(*(nh)) *)0)->next)) || __builtin_types_compatible_p= (typeof(*((nh)->next.next)), typeof(void)), "pointer type mismatch in conta= iner_of()"); ((typeof(*(nh)) *)(__mptr - __builtin_offsetof(typeof(*(nh)), = next))); })) {=0D if (err_nh =3D=3D nh)=0D break;=0D ip6_route_del(&nh->r_cfg, extack);=0D }=0D =0D cleanup:=0D for (nh =3D ({ void *__mptr =3D (void *)((&rt6_nh_list)->next); _Static_as= sert(__builtin_types_compatible_p(typeof(*((&rt6_nh_list)->next)), typeof((= (typeof(*nh) *)0)->next)) || __builtin_types_compatible_p(typeof(*((&rt6_nh= _list)->next)), typeof(void)), "pointer type mismatch in container_of()"); = ((typeof(*nh) *)(__mptr - __builtin_offsetof(typeof(*nh), next))); }), nh_s= afe =3D ({ void *__mptr =3D (void *)((nh)->next.next); _Static_assert(__bui= ltin_types_compatible_p(typeof(*((nh)->next.next)), typeof(((typeof(*(nh)) = *)0)->next)) || __builtin_types_compatible_p(typeof(*((nh)->next.next)), ty= peof(void)), "pointer type mismatch in container_of()"); ((typeof(*(nh)) *)= (__mptr - __builtin_offsetof(typeof(*(nh)), next))); }); !(&nh->next =3D=3D= (&rt6_nh_list)); nh =3D nh_safe, nh_safe =3D ({ void *__mptr =3D (void *)(= (nh_safe)->next.next); _Static_assert(__builtin_types_compatible_p(typeof(*= ((nh_safe)->next.next)), typeof(((typeof(*(nh_safe)) *)0)->next)) || __buil= tin_types_compatible_p(typeof(*((nh_safe)->next.next)), typeof(void)), "poi= nter type mismatch in container_of()"); ((typeof(*(nh_safe)) *)(__mptr - __= builtin_offsetof(typeof(*(nh_safe)), next))); })) {=0D if (nh->fib6_info)=0D fib6_info_release(nh->fib6_info);=0D list_del(&nh->next);=0D kfree(nh);=0D }=0D =0D return err;=0D }=0D =0D static int ip6_route_multipath_del(struct fib6_config *cfg,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_config r_cfg;=0D struct rtnexthop *rtnh;=0D int last_err =3D 0;=0D int remaining;=0D int attrlen;=0D int err;=0D =0D remaining =3D cfg->fc_mp_len;=0D rtnh =3D (struct rtnexthop *)cfg->fc_mp;=0D =0D =0D while (rtnh_ok(rtnh, remaining)) {=0D memcpy(&r_cfg, cfg, sizeof(*cfg));=0D if (rtnh->rtnh_ifindex)=0D r_cfg.fc_ifindex =3D rtnh->rtnh_ifindex;=0D =0D attrlen =3D rtnh_attrlen(rtnh);=0D if (attrlen > 0) {=0D struct nlattr *nla, *attrs =3D rtnh_attrs(rtnh);=0D =0D nla =3D nla_find(attrs, attrlen, RTA_GATEWAY);=0D if (nla) {=0D err =3D fib6_gw_from_attr(&r_cfg.fc_gateway, nla,=0D extack);=0D if (err) {=0D last_err =3D err;=0D goto next_rtnh;=0D }=0D =0D r_cfg.fc_flags |=3D 0x0002;=0D }=0D }=0D err =3D ip6_route_del(&r_cfg, extack);=0D if (err)=0D last_err =3D err;=0D =0D next_rtnh:=0D rtnh =3D rtnh_next(rtnh, &remaining);=0D }=0D =0D return last_err;=0D }=0D =0D static int inet6_rtm_delroute(struct sk_buff *skb, struct nlmsghdr *nlh,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_config cfg;=0D int err;=0D =0D err =3D rtm_to_fib6_config(skb, nlh, &cfg, extack);=0D if (err < 0)=0D return err;=0D =0D if (cfg.fc_nh_id &&=0D !nexthop_find_by_id(sock_net(skb->sk), cfg.fc_nh_id)) {=0D do { static const char __msg[] =3D "Nexthop id does not exist"; struct ne= tlink_ext_ack *__extack =3D (extack); do_trace_netlink_extack(__msg); if (_= _extack) __extack->_msg =3D __msg; } while (0);=0D return -22;=0D }=0D =0D if (cfg.fc_mp)=0D return ip6_route_multipath_del(&cfg, extack);=0D else {=0D cfg.fc_delete_all_nh =3D 1;=0D return ip6_route_del(&cfg, extack);=0D }=0D }=0D =0D static int inet6_rtm_newroute(struct sk_buff *skb, struct nlmsghdr *nlh,=0D struct netlink_ext_ack *extack)=0D {=0D struct fib6_config cfg;=0D int err;=0D =0D err =3D rtm_to_fib6_config(skb, nlh, &cfg, extack);=0D if (err < 0)=0D return err;=0D =0D if (cfg.fc_metric =3D=3D 0)=0D cfg.fc_metric =3D 1024;=0D =0D if (cfg.fc_mp)=0D return ip6_route_multipath_add(&cfg, extack);=0D else=0D return ip6_route_add(&cfg, ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) |= (( gfp_t)0x80u)), extack);=0D }=0D =0D =0D static int rt6_nh_nlmsg_size(struct fib6_nh *nh, void *arg)=0D {=0D int *nexthop_len =3D arg;=0D =0D *nexthop_len +=3D nla_total_size(0)=0D + (((sizeof(struct rtnexthop)) + 4 - 1) & ~(4 - 1))=0D + nla_total_size(16);=0D =0D if (nh->nh_common.nhc_lwtstate) {=0D =0D *nexthop_len +=3D lwtunnel_get_encap_size(nh->nh_common.nhc_lwtstate);=0D =0D *nexthop_len +=3D nla_total_size(2);=0D }=0D =0D return 0;=0D }=0D =0D static size_t rt6_nlmsg_size(struct fib6_info *f6i)=0D {=0D int nexthop_len;=0D =0D if (f6i->nh) {=0D nexthop_len =3D nla_total_size(4);=0D nexthop_for_each_fib6_nh(f6i->nh, rt6_nh_nlmsg_size,=0D &nexthop_len);=0D } else {=0D struct fib6_nh *nh =3D f6i->fib6_nh;=0D =0D nexthop_len =3D 0;=0D if (f6i->fib6_nsiblings) {=0D nexthop_len =3D nla_total_size(0)=0D + (((sizeof(struct rtnexthop)) + 4 - 1) & ~(4 - 1))=0D + nla_total_size(16)=0D + lwtunnel_get_encap_size(nh->nh_common.nhc_lwtstate);=0D =0D nexthop_len *=3D f6i->fib6_nsiblings;=0D }=0D nexthop_len +=3D lwtunnel_get_encap_size(nh->nh_common.nhc_lwtstate);=0D }=0D =0D return ( ((sizeof(struct rtmsg))+4U -1) & ~(4U -1) )=0D + nla_total_size(16)=0D + nla_total_size(16)=0D + nla_total_size(16)=0D + nla_total_size(16)=0D + nla_total_size(4)=0D + nla_total_size(4)=0D + nla_total_size(4)=0D + nla_total_size(4)=0D + (__RTAX_MAX - 1) * nla_total_size(4)=0D + nla_total_size(sizeof(struct rta_cacheinfo))=0D + nla_total_size(16)=0D + nla_total_size(1)=0D + nexthop_len;=0D }=0D =0D static int rt6_fill_node_nexthop(struct sk_buff *skb, struct nexthop *nh,=0D unsigned char *flags)=0D {=0D if (nexthop_is_multipath(nh)) {=0D struct nlattr *mp;=0D =0D mp =3D nla_nest_start_noflag(skb, RTA_MULTIPATH);=0D if (!mp)=0D goto nla_put_failure;=0D =0D if (nexthop_mpath_fill_node(skb, nh, 10))=0D goto nla_put_failure;=0D =0D nla_nest_end(skb, mp);=0D } else {=0D struct fib6_nh *fib6_nh;=0D =0D fib6_nh =3D nexthop_fib6_nh(nh);=0D if (fib_nexthop_info(skb, &fib6_nh->nh_common, 10,=0D flags, false) < 0)=0D goto nla_put_failure;=0D }=0D =0D return 0;=0D =0D nla_put_failure:=0D return -90;=0D }=0D =0D static int rt6_fill_node(struct net *net, struct sk_buff *skb,=0D struct fib6_info *rt, struct dst_entry *dst,=0D struct in6_addr *dest, struct in6_addr *src,=0D int iif, int type, u32 portid, u32 seq,=0D unsigned int flags)=0D {=0D struct rt6_info *rt6 =3D (struct rt6_info *)dst;=0D struct rt6key *rt6_dst, *rt6_src;=0D u32 *pmetrics, table, rt6_flags;=0D unsigned char nh_flags =3D 0;=0D struct nlmsghdr *nlh;=0D struct rtmsg *rtm;=0D long expires =3D 0;=0D =0D nlh =3D nlmsg_put(skb, portid, seq, type, sizeof(*rtm), flags);=0D if (!nlh)=0D return -90;=0D =0D if (rt6) {=0D rt6_dst =3D &rt6->rt6i_dst;=0D rt6_src =3D &rt6->rt6i_src;=0D rt6_flags =3D rt6->rt6i_flags;=0D } else {=0D rt6_dst =3D &rt->fib6_dst;=0D rt6_src =3D &rt->fib6_src;=0D rt6_flags =3D rt->fib6_flags;=0D }=0D =0D rtm =3D nlmsg_data(nlh);=0D rtm->rtm_family =3D 10;=0D rtm->rtm_dst_len =3D rt6_dst->plen;=0D rtm->rtm_src_len =3D rt6_src->plen;=0D rtm->rtm_tos =3D 0;=0D if (rt->fib6_table)=0D table =3D rt->fib6_table->tb6_id;=0D else=0D table =3D RT_TABLE_UNSPEC;=0D rtm->rtm_table =3D table < 256 ? table : RT_TABLE_COMPAT;=0D if (nla_put_u32(skb, RTA_TABLE, table))=0D goto nla_put_failure;=0D =0D rtm->rtm_type =3D rt->fib6_type;=0D rtm->rtm_flags =3D 0;=0D rtm->rtm_scope =3D RT_SCOPE_UNIVERSE;=0D rtm->rtm_protocol =3D rt->fib6_protocol;=0D =0D if (rt6_flags & 0x01000000)=0D rtm->rtm_flags |=3D 0x200;=0D =0D if (dest) {=0D if (nla_put_in6_addr(skb, RTA_DST, dest))=0D goto nla_put_failure;=0D rtm->rtm_dst_len =3D 128;=0D } else if (rtm->rtm_dst_len)=0D if (nla_put_in6_addr(skb, RTA_DST, &rt6_dst->addr))=0D goto nla_put_failure;=0D # 5656 "net/ipv6/route.c"=0D if (iif) {=0D # 5667 "net/ipv6/route.c"=0D if (nla_put_u32(skb, RTA_IIF, iif))=0D goto nla_put_failure;=0D } else if (dest) {=0D struct in6_addr saddr_buf;=0D if (ip6_route_get_saddr(net, rt, dest, 0, &saddr_buf) =3D=3D 0 &&=0D nla_put_in6_addr(skb, RTA_PREFSRC, &saddr_buf))=0D goto nla_put_failure;=0D }=0D =0D if (rt->fib6_prefsrc.plen) {=0D struct in6_addr saddr_buf;=0D saddr_buf =3D rt->fib6_prefsrc.addr;=0D if (nla_put_in6_addr(skb, RTA_PREFSRC, &saddr_buf))=0D goto nla_put_failure;=0D }=0D =0D pmetrics =3D dst ? dst_metrics_ptr(dst) : rt->fib6_metrics->metrics;=0D if (rtnetlink_put_metrics(skb, pmetrics) < 0)=0D goto nla_put_failure;=0D =0D if (nla_put_u32(skb, RTA_PRIORITY, rt->fib6_metric))=0D goto nla_put_failure;=0D =0D =0D =0D =0D if (rt6) {=0D if (rt6_flags & 0x0002 &&=0D nla_put_in6_addr(skb, RTA_GATEWAY, &rt6->rt6i_gateway))=0D goto nla_put_failure;=0D =0D if (dst->dev && nla_put_u32(skb, RTA_OIF, dst->dev->ifindex))=0D goto nla_put_failure;=0D =0D if (dst->lwtstate &&=0D lwtunnel_fill_encap(skb, dst->lwtstate, RTA_ENCAP, RTA_ENCAP_TYPE) < = 0)=0D goto nla_put_failure;=0D } else if (rt->fib6_nsiblings) {=0D struct fib6_info *sibling, *next_sibling;=0D struct nlattr *mp;=0D =0D mp =3D nla_nest_start_noflag(skb, RTA_MULTIPATH);=0D if (!mp)=0D goto nla_put_failure;=0D =0D if (fib_add_nexthop(skb, &rt->fib6_nh->nh_common,=0D rt->fib6_nh->nh_common.nhc_weight, 10,=0D 0) < 0)=0D goto nla_put_failure;=0D =0D for (sibling =3D ({ void *__mptr =3D (void *)((&rt->fib6_siblings)->next)= ; _Static_assert(__builtin_types_compatible_p(typeof(*((&rt->fib6_siblings)= ->next)), typeof(((typeof(*sibling) *)0)->fib6_siblings)) || __builtin_type= s_compatible_p(typeof(*((&rt->fib6_siblings)->next)), typeof(void)), "point= er type mismatch in container_of()"); ((typeof(*sibling) *)(__mptr - __buil= tin_offsetof(typeof(*sibling), fib6_siblings))); }), next_sibling =3D ({ vo= id *__mptr =3D (void *)((sibling)->fib6_siblings.next); _Static_assert(__bu= iltin_types_compatible_p(typeof(*((sibling)->fib6_siblings.next)), typeof((= (typeof(*(sibling)) *)0)->fib6_siblings)) || __builtin_types_compatible_p(t= ypeof(*((sibling)->fib6_siblings.next)), typeof(void)), "pointer type misma= tch in container_of()"); ((typeof(*(sibling)) *)(__mptr - __builtin_offseto= f(typeof(*(sibling)), fib6_siblings))); }); !(&sibling->fib6_siblings =3D= =3D (&rt->fib6_siblings)); sibling =3D next_sibling, next_sibling =3D ({ vo= id *__mptr =3D (void *)((next_sibling)->fib6_siblings.next); _Static_assert= (__builtin_types_compatible_p(typeof(*((next_sibling)->fib6_siblings.next))= , typeof(((typeof(*(next_sibling)) *)0)->fib6_siblings)) || __builtin_types= _compatible_p(typeof(*((next_sibling)->fib6_siblings.next)), typeof(void)),= "pointer type mismatch in container_of()"); ((typeof(*(next_sibling)) *)(_= _mptr - __builtin_offsetof(typeof(*(next_sibling)), fib6_siblings))); })) {= =0D =0D if (fib_add_nexthop(skb, &sibling->fib6_nh->nh_common,=0D sibling->fib6_nh->nh_common.nhc_weight,=0D 10, 0) < 0)=0D goto nla_put_failure;=0D }=0D =0D nla_nest_end(skb, mp);=0D } else if (rt->nh) {=0D if (nla_put_u32(skb, RTA_NH_ID, rt->nh->id))=0D goto nla_put_failure;=0D =0D if (nexthop_is_blackhole(rt->nh))=0D rtm->rtm_type =3D RTN_BLACKHOLE;=0D =0D if (net->ipv4.sysctl_nexthop_compat_mode &&=0D rt6_fill_node_nexthop(skb, rt->nh, &nh_flags) < 0)=0D goto nla_put_failure;=0D =0D rtm->rtm_flags |=3D nh_flags;=0D } else {=0D if (fib_nexthop_info(skb, &rt->fib6_nh->nh_common, 10,=0D &nh_flags, false) < 0)=0D goto nla_put_failure;=0D =0D rtm->rtm_flags |=3D nh_flags;=0D }=0D =0D if (rt6_flags & 0x00400000) {=0D expires =3D dst ? dst->expires : rt->expires;=0D expires -=3D jiffies;=0D }=0D =0D if (!dst) {=0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_749(void) ; if (!((sizeof(rt->offload) =3D=3D sizeof(char) || sizeof(rt->= offload) =3D=3D sizeof(short) || sizeof(rt->offload) =3D=3D sizeof(int) || = sizeof(rt->offload) =3D=3D sizeof(long)) || sizeof(rt->offload) =3D=3D size= of(long long))) __compiletime_assert_749(); } while (0); (*(const volatile = typeof( _Generic((rt->offload), char: (char)0, unsigned char: (unsigned cha= r)0, signed char: (signed char)0, unsigned short: (unsigned short)0, signed= short: (signed short)0, unsigned int: (unsigned int)0, signed int: (signed= int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, unsig= ned long long: (unsigned long long)0, signed long long: (signed long long)0= , default: (rt->offload))) *)&(rt->offload)); }))=0D rtm->rtm_flags |=3D 0x4000;=0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_750(void) ; if (!((sizeof(rt->trap) =3D=3D sizeof(char) || sizeof(rt->tra= p) =3D=3D sizeof(short) || sizeof(rt->trap) =3D=3D sizeof(int) || sizeof(rt= ->trap) =3D=3D sizeof(long)) || sizeof(rt->trap) =3D=3D sizeof(long long)))= __compiletime_assert_750(); } while (0); (*(const volatile typeof( _Generi= c((rt->trap), char: (char)0, unsigned char: (unsigned char)0, signed char: = (signed char)0, unsigned short: (unsigned short)0, signed short: (signed sh= ort)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsigned l= ong: (unsigned long)0, signed long: (signed long)0, unsigned long long: (un= signed long long)0, signed long long: (signed long long)0, default: (rt->tr= ap))) *)&(rt->trap)); }))=0D rtm->rtm_flags |=3D 0x8000;=0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_asser= t_751(void) ; if (!((sizeof(rt->offload_failed) =3D=3D sizeof(char) || size= of(rt->offload_failed) =3D=3D sizeof(short) || sizeof(rt->offload_failed) = =3D=3D sizeof(int) || sizeof(rt->offload_failed) =3D=3D sizeof(long)) || si= zeof(rt->offload_failed) =3D=3D sizeof(long long))) __compiletime_assert_75= 1(); } while (0); (*(const volatile typeof( _Generic((rt->offload_failed), = char: (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0= , unsigned short: (unsigned short)0, signed short: (signed short)0, unsigne= d int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned= long)0, signed long: (signed long)0, unsigned long long: (unsigned long lo= ng)0, signed long long: (signed long long)0, default: (rt->offload_failed))= ) *)&(rt->offload_failed)); }))=0D rtm->rtm_flags |=3D 0x20000000;=0D }=0D =0D if (rtnl_put_cacheinfo(skb, dst, 0, expires, dst ? dst->error : 0) < 0)=0D goto nla_put_failure;=0D =0D if (nla_put_u8(skb, RTA_PREF, (((rt6_flags) & 0x18000000) >> 27)))=0D goto nla_put_failure;=0D =0D =0D nlmsg_end(skb, nlh);=0D return 0;=0D =0D nla_put_failure:=0D nlmsg_cancel(skb, nlh);=0D return -90;=0D }=0D =0D static int fib6_info_nh_uses_dev(struct fib6_nh *nh, void *arg)=0D {=0D const struct net_device *dev =3D arg;=0D =0D if (nh->nh_common.nhc_dev =3D=3D dev)=0D return 1;=0D =0D return 0;=0D }=0D =0D static bool fib6_info_uses_dev(const struct fib6_info *f6i,=0D const struct net_device *dev)=0D {=0D if (f6i->nh) {=0D struct net_device *_dev =3D (struct net_device *)dev;=0D =0D return !!nexthop_for_each_fib6_nh(f6i->nh,=0D fib6_info_nh_uses_dev,=0D _dev);=0D }=0D =0D if (f6i->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D return true;=0D =0D if (f6i->fib6_nsiblings) {=0D struct fib6_info *sibling, *next_sibling;=0D =0D for (sibling =3D ({ void *__mptr =3D (void *)((&f6i->fib6_siblings)->next= ); _Static_assert(__builtin_types_compatible_p(typeof(*((&f6i->fib6_sibling= s)->next)), typeof(((typeof(*sibling) *)0)->fib6_siblings)) || __builtin_ty= pes_compatible_p(typeof(*((&f6i->fib6_siblings)->next)), typeof(void)), "po= inter type mismatch in container_of()"); ((typeof(*sibling) *)(__mptr - __b= uiltin_offsetof(typeof(*sibling), fib6_siblings))); }), next_sibling =3D ({= void *__mptr =3D (void *)((sibling)->fib6_siblings.next); _Static_assert(_= _builtin_types_compatible_p(typeof(*((sibling)->fib6_siblings.next)), typeo= f(((typeof(*(sibling)) *)0)->fib6_siblings)) || __builtin_types_compatible_= p(typeof(*((sibling)->fib6_siblings.next)), typeof(void)), "pointer type mi= smatch in container_of()"); ((typeof(*(sibling)) *)(__mptr - __builtin_offs= etof(typeof(*(sibling)), fib6_siblings))); }); !(&sibling->fib6_siblings = =3D=3D (&f6i->fib6_siblings)); sibling =3D next_sibling, next_sibling =3D (= { void *__mptr =3D (void *)((next_sibling)->fib6_siblings.next); _Static_as= sert(__builtin_types_compatible_p(typeof(*((next_sibling)->fib6_siblings.ne= xt)), typeof(((typeof(*(next_sibling)) *)0)->fib6_siblings)) || __builtin_t= ypes_compatible_p(typeof(*((next_sibling)->fib6_siblings.next)), typeof(voi= d)), "pointer type mismatch in container_of()"); ((typeof(*(next_sibling)) = *)(__mptr - __builtin_offsetof(typeof(*(next_sibling)), fib6_siblings))); }= )) {=0D =0D if (sibling->fib6_nh->nh_common.nhc_dev =3D=3D dev)=0D return true;=0D }=0D }=0D =0D return false;=0D }=0D =0D struct fib6_nh_exception_dump_walker {=0D struct rt6_rtnl_dump_arg *dump;=0D struct fib6_info *rt;=0D unsigned int flags;=0D unsigned int skip;=0D unsigned int count;=0D };=0D =0D static int rt6_nh_dump_exceptions(struct fib6_nh *nh, void *arg)=0D {=0D struct fib6_nh_exception_dump_walker *w =3D arg;=0D struct rt6_rtnl_dump_arg *dump =3D w->dump;=0D struct rt6_exception_bucket *bucket;=0D struct rt6_exception *rt6_ex;=0D int i, err;=0D =0D bucket =3D fib6_nh_get_excptn_bucket(nh, ((void *)0));=0D if (!bucket)=0D return 0;=0D =0D for (i =3D 0; i < (1 << 10); i++) {=0D for (rt6_ex =3D ({ typeof((&bucket->chain)->first) ____ptr =3D ((&bucket-= >chain)->first); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Static_a= ssert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(*(rt= 6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr)), ty= peof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6_ex)= ) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((void *= )0); }); rt6_ex; rt6_ex =3D ({ typeof((rt6_ex)->hlist.next) ____ptr =3D ((r= t6_ex)->hlist.next); ____ptr ? ({ void *__mptr =3D (void *)(____ptr); _Stat= ic_assert(__builtin_types_compatible_p(typeof(*(____ptr)), typeof(((typeof(= *(rt6_ex)) *)0)->hlist)) || __builtin_types_compatible_p(typeof(*(____ptr))= , typeof(void)), "pointer type mismatch in container_of()"); ((typeof(*(rt6= _ex)) *)(__mptr - __builtin_offsetof(typeof(*(rt6_ex)), hlist))); }) : ((vo= id *)0); })) {=0D if (w->skip) {=0D w->skip--;=0D continue;=0D }=0D # 5850 "net/ipv6/route.c"=0D if (rt6_check_expired(rt6_ex->rt6i)) {=0D w->count++;=0D continue;=0D }=0D =0D err =3D rt6_fill_node(dump->net, dump->skb, w->rt,=0D &rt6_ex->rt6i->dst, ((void *)0), ((void *)0), 0,=0D RTM_NEWROUTE,=0D (*(struct netlink_skb_parms*)&((dump->cb->skb)->cb)).portid,=0D dump->cb->nlh->nlmsg_seq, w->flags);=0D if (err)=0D return err;=0D =0D w->count++;=0D }=0D bucket++;=0D }=0D =0D return 0;=0D }=0D =0D =0D int rt6_dump_route(struct fib6_info *rt, void *p_arg, unsigned int skip)=0D {=0D struct rt6_rtnl_dump_arg *arg =3D (struct rt6_rtnl_dump_arg *) p_arg;=0D struct fib_dump_filter *filter =3D &arg->filter;=0D unsigned int flags =3D 0x02;=0D struct net *net =3D arg->net;=0D int count =3D 0;=0D =0D if (rt =3D=3D net->ipv6.fib6_null_entry)=0D return -1;=0D =0D if ((filter->flags & 0x800) &&=0D !(rt->fib6_flags & 0x00080000)) {=0D =0D return -1;=0D }=0D if (filter->filter_set &&=0D ((filter->rt_type && rt->fib6_type !=3D filter->rt_type) ||=0D (filter->dev && !fib6_info_uses_dev(rt, filter->dev)) ||=0D (filter->protocol && rt->fib6_protocol !=3D filter->protocol))) {=0D return -1;=0D }=0D =0D if (filter->filter_set ||=0D !filter->dump_routes || !filter->dump_exceptions) {=0D flags |=3D 0x20;=0D }=0D =0D if (filter->dump_routes) {=0D if (skip) {=0D skip--;=0D } else {=0D if (rt6_fill_node(net, arg->skb, rt, ((void *)0), ((void *)0), ((void *)= 0),=0D 0, RTM_NEWROUTE,=0D (*(struct netlink_skb_parms*)&((arg->cb->skb)->cb)).portid,=0D arg->cb->nlh->nlmsg_seq, flags)) {=0D return 0;=0D }=0D count++;=0D }=0D }=0D =0D if (filter->dump_exceptions) {=0D struct fib6_nh_exception_dump_walker w =3D { .dump =3D arg,=0D .rt =3D rt,=0D .flags =3D flags,=0D .skip =3D skip,=0D .count =3D 0 };=0D int err;=0D =0D rcu_read_lock();=0D if (rt->nh) {=0D err =3D nexthop_for_each_fib6_nh(rt->nh,=0D rt6_nh_dump_exceptions,=0D &w);=0D } else {=0D err =3D rt6_nh_dump_exceptions(rt->fib6_nh, &w);=0D }=0D rcu_read_unlock();=0D =0D if (err)=0D return count +=3D w.count;=0D }=0D =0D return -1;=0D }=0D =0D static int inet6_rtm_valid_getroute_req(struct sk_buff *skb,=0D const struct nlmsghdr *nlh,=0D struct nlattr **tb,=0D struct netlink_ext_ack *extack)=0D {=0D struct rtmsg *rtm;=0D int i, err;=0D =0D if (nlh->nlmsg_len < nlmsg_msg_size(sizeof(*rtm))) {=0D do { static const char __msg[] =3D "ipv6" ": " "Invalid header for get ro= ute request"; struct netlink_ext_ack *__extack =3D ((extack)); do_trace_net= link_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D =0D return -22;=0D }=0D =0D if (!netlink_strict_get_check(skb))=0D return nlmsg_parse_deprecated(nlh, sizeof(*rtm), tb, (__RTA_MAX - 1),=0D rtm_ipv6_policy, extack);=0D =0D rtm =3D nlmsg_data(nlh);=0D if ((rtm->rtm_src_len && rtm->rtm_src_len !=3D 128) ||=0D (rtm->rtm_dst_len && rtm->rtm_dst_len !=3D 128) ||=0D rtm->rtm_table || rtm->rtm_protocol || rtm->rtm_scope ||=0D rtm->rtm_type) {=0D do { static const char __msg[] =3D "ipv6" ": " "Invalid values in header = for get route request"; struct netlink_ext_ack *__extack =3D ((extack)); do= _trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } whi= le (0);=0D return -22;=0D }=0D if (rtm->rtm_flags & ~0x2000) {=0D do { static const char __msg[] =3D "ipv6" ": " "Invalid flags for get rou= te request"; struct netlink_ext_ack *__extack =3D ((extack)); do_trace_netl= ink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while (0);=0D =0D return -22;=0D }=0D =0D err =3D nlmsg_parse_deprecated_strict(nlh, sizeof(*rtm), tb, (__RTA_MAX - = 1),=0D rtm_ipv6_policy, extack);=0D if (err)=0D return err;=0D =0D if ((tb[RTA_SRC] && !rtm->rtm_src_len) ||=0D (tb[RTA_DST] && !rtm->rtm_dst_len)) {=0D do { static const char __msg[] =3D "ipv6" ": " "rtm_src_len and rtm_dst_l= en must be 128 for IPv6"; struct netlink_ext_ack *__extack =3D ((extack)); = do_trace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } w= hile (0);=0D return -22;=0D }=0D =0D for (i =3D 0; i <=3D (__RTA_MAX - 1); i++) {=0D if (!tb[i])=0D continue;=0D =0D switch (i) {=0D case RTA_SRC:=0D case RTA_DST:=0D case RTA_IIF:=0D case RTA_OIF:=0D case RTA_MARK:=0D case RTA_UID:=0D case RTA_SPORT:=0D case RTA_DPORT:=0D case RTA_IP_PROTO:=0D break;=0D default:=0D do { static const char __msg[] =3D "ipv6" ": " "Unsupported attribute in= get route request"; struct netlink_ext_ack *__extack =3D ((extack)); do_tr= ace_netlink_extack(__msg); if (__extack) __extack->_msg =3D __msg; } while = (0);=0D return -22;=0D }=0D }=0D =0D return 0;=0D }=0D =0D static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,= =0D struct netlink_ext_ack *extack)=0D {=0D struct net *net =3D sock_net(in_skb->sk);=0D struct nlattr *tb[(__RTA_MAX - 1)+1];=0D int err, iif =3D 0, oif =3D 0;=0D struct fib6_info *from;=0D struct dst_entry *dst;=0D struct rt6_info *rt;=0D struct sk_buff *skb;=0D struct rtmsg *rtm;=0D struct flowi6 fl6 =3D {};=0D bool fibmatch;=0D =0D err =3D inet6_rtm_valid_getroute_req(in_skb, nlh, tb, extack);=0D if (err < 0)=0D goto errout;=0D =0D err =3D -22;=0D rtm =3D nlmsg_data(nlh);=0D fl6.flowlabel =3D ip6_make_flowinfo(rtm->rtm_tos, 0);=0D fibmatch =3D !!(rtm->rtm_flags & 0x2000);=0D =0D if (tb[RTA_SRC]) {=0D if (nla_len(tb[RTA_SRC]) < sizeof(struct in6_addr))=0D goto errout;=0D =0D fl6.saddr =3D *(struct in6_addr *)nla_data(tb[RTA_SRC]);=0D }=0D =0D if (tb[RTA_DST]) {=0D if (nla_len(tb[RTA_DST]) < sizeof(struct in6_addr))=0D goto errout;=0D =0D fl6.daddr =3D *(struct in6_addr *)nla_data(tb[RTA_DST]);=0D }=0D =0D if (tb[RTA_IIF])=0D iif =3D nla_get_u32(tb[RTA_IIF]);=0D =0D if (tb[RTA_OIF])=0D oif =3D nla_get_u32(tb[RTA_OIF]);=0D =0D if (tb[RTA_MARK])=0D fl6.__fl_common.flowic_mark =3D nla_get_u32(tb[RTA_MARK]);=0D =0D if (tb[RTA_UID])=0D fl6.__fl_common.flowic_uid =3D make_kuid((({ ({ do { } while (0 && (!((1)= ))); ; ((typeof(*(get_current()->cred)) *)((get_current()->cred))); })->use= r_ns; })),=0D nla_get_u32(tb[RTA_UID]));=0D else=0D fl6.__fl_common.flowic_uid =3D iif ? (kuid_t){ -1 } : (({ ({ do { } while= (0 && (!((1)))); ; ((typeof(*(get_current()->cred)) *)((get_current()->cre= d))); })->uid; }));=0D =0D if (tb[RTA_SPORT])=0D fl6.uli.ports.sport =3D nla_get_be16(tb[RTA_SPORT]);=0D =0D if (tb[RTA_DPORT])=0D fl6.uli.ports.dport =3D nla_get_be16(tb[RTA_DPORT]);=0D =0D if (tb[RTA_IP_PROTO]) {=0D err =3D rtm_getroute_parse_ip_proto(tb[RTA_IP_PROTO],=0D &fl6.__fl_common.flowic_proto, 10,=0D extack);=0D if (err)=0D goto errout;=0D }=0D =0D if (iif) {=0D struct net_device *dev;=0D int flags =3D 0;=0D =0D rcu_read_lock();=0D =0D dev =3D dev_get_by_index_rcu(net, iif);=0D if (!dev) {=0D rcu_read_unlock();=0D err =3D -19;=0D goto errout;=0D }=0D =0D fl6.__fl_common.flowic_iif =3D iif;=0D =0D if (!ipv6_addr_any(&fl6.saddr))=0D flags |=3D 0x00000004;=0D =0D dst =3D ip6_route_input_lookup(net, dev, &fl6, ((void *)0), flags);=0D =0D rcu_read_unlock();=0D } else {=0D fl6.__fl_common.flowic_oif =3D oif;=0D =0D dst =3D ip6_route_output(net, ((void *)0), &fl6);=0D }=0D =0D =0D rt =3D ({ void *__mptr =3D (void *)(dst); _Static_assert(__builtin_types_c= ompatible_p(typeof(*(dst)), typeof(((struct rt6_info *)0)->dst)) || __built= in_types_compatible_p(typeof(*(dst)), typeof(void)), "pointer type mismatch= in container_of()"); ((struct rt6_info *)(__mptr - __builtin_offsetof(stru= ct rt6_info, dst))); });=0D if (rt->dst.error) {=0D err =3D rt->dst.error;=0D ip6_rt_put(rt);=0D goto errout;=0D }=0D =0D if (rt =3D=3D net->ipv6.ip6_null_entry) {=0D err =3D rt->dst.error;=0D ip6_rt_put(rt);=0D goto errout;=0D }=0D =0D skb =3D alloc_skb(((((1UL) << (12))) - ((((sizeof(struct skb_shared_info))= ) + ((typeof((sizeof(struct skb_shared_info))))(((1 << 6))) - 1)) & ~((type= of((sizeof(struct skb_shared_info))))(((1 << 6))) - 1))), ((( gfp_t)(0x400u= |0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)));=0D if (!skb) {=0D ip6_rt_put(rt);=0D err =3D -105;=0D goto errout;=0D }=0D =0D skb_dst_set(skb, &rt->dst);=0D =0D rcu_read_lock();=0D from =3D ({ typeof(*(rt->from)) *__UNIQUE_ID_rcu752 =3D (typeof(*(rt->from= )) *)({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _753(void) ; if (!((sizeof((rt->from)) =3D=3D sizeof(char) || sizeof((rt->f= rom)) =3D=3D sizeof(short) || sizeof((rt->from)) =3D=3D sizeof(int) || size= of((rt->from)) =3D=3D sizeof(long)) || sizeof((rt->from)) =3D=3D sizeof(lon= g long))) __compiletime_assert_753(); } while (0); (*(const volatile typeof= ( _Generic(((rt->from)), char: (char)0, unsigned char: (unsigned char)0, si= gned char: (signed char)0, unsigned short: (unsigned short)0, signed short:= (signed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0,= unsigned long: (unsigned long)0, signed long: (signed long)0, unsigned lon= g long: (unsigned long long)0, signed long long: (signed long long)0, defau= lt: ((rt->from)))) *)&((rt->from))); }); do { } while (0 && (!((0) || rcu_r= ead_lock_held()))); ; ((typeof(*(rt->from)) *)(__UNIQUE_ID_rcu752)); });=0D if (from) {=0D if (fibmatch)=0D err =3D rt6_fill_node(net, skb, from, ((void *)0), ((void *)0), ((void *= )0),=0D iif, RTM_NEWROUTE,=0D (*(struct netlink_skb_parms*)&((in_skb)->cb)).portid,=0D nlh->nlmsg_seq, 0);=0D else=0D err =3D rt6_fill_node(net, skb, from, dst, &fl6.daddr,=0D &fl6.saddr, iif, RTM_NEWROUTE,=0D (*(struct netlink_skb_parms*)&((in_skb)->cb)).portid,=0D nlh->nlmsg_seq, 0);=0D } else {=0D err =3D -101;=0D }=0D rcu_read_unlock();=0D =0D if (err < 0) {=0D kfree_skb(skb);=0D goto errout;=0D }=0D =0D err =3D rtnl_unicast(skb, net, (*(struct netlink_skb_parms*)&((in_skb)->cb= )).portid);=0D errout:=0D return err;=0D }=0D =0D void inet6_rt_notify(int event, struct fib6_info *rt, struct nl_info *info,= =0D unsigned int nlm_flags)=0D {=0D struct sk_buff *skb;=0D struct net *net =3D info->nl_net;=0D u32 seq;=0D int err;=0D =0D err =3D -105;=0D seq =3D info->nlh ? info->nlh->nlmsg_seq : 0;=0D =0D skb =3D nlmsg_new(rt6_nlmsg_size(rt), gfp_any());=0D if (!skb)=0D goto errout;=0D =0D err =3D rt6_fill_node(net, skb, rt, ((void *)0), ((void *)0), ((void *)0),= 0,=0D event, info->portid, seq, nlm_flags);=0D if (err < 0) {=0D =0D ({ int __ret_warn_on =3D !!(err =3D=3D -90); if (__builtin_expect(!!(__re= t_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsecti= on __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 = - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".po= psection" : : "i" ("net/ipv6/route.c"), "i" (6169), "i" ((1 << 0)|(((9) << = 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__r= et_warn_on), 0); });=0D kfree_skb(skb);=0D goto errout;=0D }=0D rtnl_notify(skb, net, info->portid, RTNLGRP_IPV6_ROUTE,=0D info->nlh, gfp_any());=0D return;=0D errout:=0D if (err < 0)=0D rtnl_set_sk_err(net, RTNLGRP_IPV6_ROUTE, err);=0D }=0D =0D void fib6_rt_update(struct net *net, struct fib6_info *rt,=0D struct nl_info *info)=0D {=0D u32 seq =3D info->nlh ? info->nlh->nlmsg_seq : 0;=0D struct sk_buff *skb;=0D int err =3D -105;=0D =0D skb =3D nlmsg_new(rt6_nlmsg_size(rt), gfp_any());=0D if (!skb)=0D goto errout;=0D =0D err =3D rt6_fill_node(net, skb, rt, ((void *)0), ((void *)0), ((void *)0),= 0,=0D RTM_NEWROUTE, info->portid, seq, 0x100);=0D if (err < 0) {=0D =0D ({ int __ret_warn_on =3D !!(err =3D=3D -90); if (__builtin_expect(!!(__re= t_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsecti= on __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 = - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".po= psection" : : "i" ("net/ipv6/route.c"), "i" (6196), "i" ((1 << 0)|(((9) << = 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__r= et_warn_on), 0); });=0D kfree_skb(skb);=0D goto errout;=0D }=0D rtnl_notify(skb, net, info->portid, RTNLGRP_IPV6_ROUTE,=0D info->nlh, gfp_any());=0D return;=0D errout:=0D if (err < 0)=0D rtnl_set_sk_err(net, RTNLGRP_IPV6_ROUTE, err);=0D }=0D =0D void fib6_info_hw_flags_set(struct net *net, struct fib6_info *f6i,=0D bool offload, bool trap, bool offload_failed)=0D {=0D struct sk_buff *skb;=0D int err;=0D =0D if (({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _754(void) ; if (!((sizeof(f6i->offload) =3D=3D sizeof(char) || sizeof(f6i-= >offload) =3D=3D sizeof(short) || sizeof(f6i->offload) =3D=3D sizeof(int) |= | sizeof(f6i->offload) =3D=3D sizeof(long)) || sizeof(f6i->offload) =3D=3D = sizeof(long long))) __compiletime_assert_754(); } while (0); (*(const volat= ile typeof( _Generic((f6i->offload), char: (char)0, unsigned char: (unsigne= d char)0, signed char: (signed char)0, unsigned short: (unsigned short)0, s= igned short: (signed short)0, unsigned int: (unsigned int)0, signed int: (s= igned int)0, unsigned long: (unsigned long)0, signed long: (signed long)0, = unsigned long long: (unsigned long long)0, signed long long: (signed long l= ong)0, default: (f6i->offload))) *)&(f6i->offload)); }) =3D=3D offload &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _755(void) ; if (!((sizeof(f6i->trap) =3D=3D sizeof(char) || sizeof(f6i->tr= ap) =3D=3D sizeof(short) || sizeof(f6i->trap) =3D=3D sizeof(int) || sizeof(= f6i->trap) =3D=3D sizeof(long)) || sizeof(f6i->trap) =3D=3D sizeof(long lon= g))) __compiletime_assert_755(); } while (0); (*(const volatile typeof( _Ge= neric((f6i->trap), char: (char)0, unsigned char: (unsigned char)0, signed c= har: (signed char)0, unsigned short: (unsigned short)0, signed short: (sign= ed short)0, unsigned int: (unsigned int)0, signed int: (signed int)0, unsig= ned long: (unsigned long)0, signed long: (signed long)0, unsigned long long= : (unsigned long long)0, signed long long: (signed long long)0, default: (f= 6i->trap))) *)&(f6i->trap)); }) =3D=3D trap &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _756(void) ; if (!((sizeof(f6i->offload_failed) =3D=3D sizeof(char) || size= of(f6i->offload_failed) =3D=3D sizeof(short) || sizeof(f6i->offload_failed)= =3D=3D sizeof(int) || sizeof(f6i->offload_failed) =3D=3D sizeof(long)) || = sizeof(f6i->offload_failed) =3D=3D sizeof(long long))) __compiletime_assert= _756(); } while (0); (*(const volatile typeof( _Generic((f6i->offload_faile= d), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed ch= ar)0, unsigned short: (unsigned short)0, signed short: (signed short)0, uns= igned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsi= gned long)0, signed long: (signed long)0, unsigned long long: (unsigned lon= g long)0, signed long long: (signed long long)0, default: (f6i->offload_fai= led))) *)&(f6i->offload_failed)); }) =3D=3D offload_failed)=0D return;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_7= 57(void) ; if (!((sizeof(f6i->offload) =3D=3D sizeof(char) || sizeof(f6i->o= ffload) =3D=3D sizeof(short) || sizeof(f6i->offload) =3D=3D sizeof(int) || = sizeof(f6i->offload) =3D=3D sizeof(long)) || sizeof(f6i->offload) =3D=3D si= zeof(long long))) __compiletime_assert_757(); } while (0); do { *(volatile = typeof(f6i->offload) *)&(f6i->offload) =3D (offload); } while (0); } while = (0);=0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_7= 58(void) ; if (!((sizeof(f6i->trap) =3D=3D sizeof(char) || sizeof(f6i->trap= ) =3D=3D sizeof(short) || sizeof(f6i->trap) =3D=3D sizeof(int) || sizeof(f6= i->trap) =3D=3D sizeof(long)) || sizeof(f6i->trap) =3D=3D sizeof(long long)= )) __compiletime_assert_758(); } while (0); do { *(volatile typeof(f6i->tra= p) *)&(f6i->trap) =3D (trap); } while (0); } while (0);=0D =0D =0D if (net->ipv6.sysctl.fib_notify_on_flag_change =3D=3D 2 &&=0D ({ do { __attribute__((__noreturn__)) extern void __compiletime_assert= _759(void) ; if (!((sizeof(f6i->offload_failed) =3D=3D sizeof(char) || size= of(f6i->offload_failed) =3D=3D sizeof(short) || sizeof(f6i->offload_failed)= =3D=3D sizeof(int) || sizeof(f6i->offload_failed) =3D=3D sizeof(long)) || = sizeof(f6i->offload_failed) =3D=3D sizeof(long long))) __compiletime_assert= _759(); } while (0); (*(const volatile typeof( _Generic((f6i->offload_faile= d), char: (char)0, unsigned char: (unsigned char)0, signed char: (signed ch= ar)0, unsigned short: (unsigned short)0, signed short: (signed short)0, uns= igned int: (unsigned int)0, signed int: (signed int)0, unsigned long: (unsi= gned long)0, signed long: (signed long)0, unsigned long long: (unsigned lon= g long)0, signed long long: (signed long long)0, default: (f6i->offload_fai= led))) *)&(f6i->offload_failed)); }) =3D=3D offload_failed)=0D return;=0D =0D do { do { __attribute__((__noreturn__)) extern void __compiletime_assert_7= 60(void) ; if (!((sizeof(f6i->offload_failed) =3D=3D sizeof(char) || sizeof= (f6i->offload_failed) =3D=3D sizeof(short) || sizeof(f6i->offload_failed) = =3D=3D sizeof(int) || sizeof(f6i->offload_failed) =3D=3D sizeof(long)) || s= izeof(f6i->offload_failed) =3D=3D sizeof(long long))) __compiletime_assert_= 760(); } while (0); do { *(volatile typeof(f6i->offload_failed) *)&(f6i->of= fload_failed) =3D (offload_failed); } while (0); } while (0);=0D =0D if (!({ typeof(*(f6i->fib6_node)) *__UNIQUE_ID_rcu761 =3D (typeof(*(f6i->f= ib6_node)) *)({ do { __attribute__((__noreturn__)) extern void __compiletim= e_assert_762(void) ; if (!((sizeof((f6i->fib6_node)) =3D=3D sizeof(char) ||= sizeof((f6i->fib6_node)) =3D=3D sizeof(short) || sizeof((f6i->fib6_node)) = =3D=3D sizeof(int) || sizeof((f6i->fib6_node)) =3D=3D sizeof(long)) || size= of((f6i->fib6_node)) =3D=3D sizeof(long long))) __compiletime_assert_762();= } while (0); (*(const volatile typeof( _Generic(((f6i->fib6_node)), char: = (char)0, unsigned char: (unsigned char)0, signed char: (signed char)0, unsi= gned short: (unsigned short)0, signed short: (signed short)0, unsigned int:= (unsigned int)0, signed int: (signed int)0, unsigned long: (unsigned long)= 0, signed long: (signed long)0, unsigned long long: (unsigned long long)0, = signed long long: (signed long long)0, default: ((f6i->fib6_node)))) *)&((f= 6i->fib6_node))); }); ; ((typeof(*(f6i->fib6_node)) *)(__UNIQUE_ID_rcu761))= ; }))=0D =0D =0D =0D return;=0D =0D if (!net->ipv6.sysctl.fib_notify_on_flag_change)=0D return;=0D =0D skb =3D nlmsg_new(rt6_nlmsg_size(f6i), ((( gfp_t)(0x400u|0x800u)) | (( gfp= _t)0x40u) | (( gfp_t)0x80u)));=0D if (!skb) {=0D err =3D -105;=0D goto errout;=0D }=0D =0D err =3D rt6_fill_node(net, skb, f6i, ((void *)0), ((void *)0), ((void *)0)= , 0, RTM_NEWROUTE, 0,=0D 0, 0);=0D if (err < 0) {=0D =0D ({ int __ret_warn_on =3D !!(err =3D=3D -90); if (__builtin_expect(!!(__re= t_warn_on), 0)) do { __asm__ __volatile__ ( "1:\n\t" "ebreak\n" ".pushsecti= on __bug_table,\"aw\"\n\t" "2:\n\t" ".word" " 1b - 2b" "\n\t" ".word" " %0 = - 2b" "\n\t" ".half" " %1\n\t" ".half" " %2" "\n\t" ".org 2b + %3\n\t" ".po= psection" : : "i" ("net/ipv6/route.c"), "i" (6248), "i" ((1 << 0)|(((9) << = 8))), "i" (sizeof(struct bug_entry))); } while (0); __builtin_expect(!!(__r= et_warn_on), 0); });=0D kfree_skb(skb);=0D goto errout;=0D }=0D =0D rtnl_notify(skb, net, 0, RTNLGRP_IPV6_ROUTE, ((void *)0), ((( gfp_t)(0x400= u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)));=0D return;=0D =0D errout:=0D rtnl_set_sk_err(net, RTNLGRP_IPV6_ROUTE, err);=0D }=0D extern typeof(fib6_info_hw_flags_set) fib6_info_hw_flags_set; extern const = char __kstrtab_fib6_info_hw_flags_set[]; extern const char __kstrtabns_fib6= _info_hw_flags_set[]; ; asm(" .section \"__ksymtab_strings\",\"aMS\",%progb= its,1 \n" "__kstrtab_" "fib6_info_hw_flags_set" ": \n" " .asciz \"" "f= ib6_info_hw_flags_set" "\" \n" "__kstrtabns_" "fib6_info_hw_flags_set" = ": \n" " .asciz \"" "" "\" \n" " .previous \n"); static const= struct kernel_symbol __ksymtab_fib6_info_hw_flags_set __attribute__((secti= on("___ksymtab" "" "+" "fib6_info_hw_flags_set"), used)) __attribute__((__a= ligned__(sizeof(void *)))) =3D { (unsigned long)&fib6_info_hw_flags_set, __= kstrtab_fib6_info_hw_flags_set, __kstrtabns_fib6_info_hw_flags_set };=0D =0D static int ip6_route_dev_notify(struct notifier_block *this,=0D unsigned long event, void *ptr)=0D {=0D struct net_device *dev =3D netdev_notifier_info_to_dev(ptr);=0D struct net *net =3D dev_net(dev);=0D =0D if (!(dev->flags & IFF_LOOPBACK))=0D return 0x0001;=0D =0D if (event =3D=3D NETDEV_REGISTER) {=0D net->ipv6.fib6_null_entry->fib6_nh->nh_common.nhc_dev =3D dev;=0D net->ipv6.ip6_null_entry->dst.dev =3D dev;=0D net->ipv6.ip6_null_entry->rt6i_idev =3D in6_dev_get(dev);=0D =0D =0D =0D =0D =0D =0D } else if (event =3D=3D NETDEV_UNREGISTER &&=0D dev->reg_state !=3D NETREG_UNREGISTERED) {=0D =0D =0D =0D in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);=0D =0D =0D =0D =0D }=0D =0D return 0x0001;=0D }=0D =0D =0D =0D =0D =0D =0D static int rt6_stats_seq_show(struct seq_file *seq, void *v)=0D {=0D struct net *net =3D (struct net *)seq->private;=0D seq_printf(seq, "%04x %04x %04x %04x %04x %04x %04x\n",=0D net->ipv6.rt6_stats->fib_nodes,=0D net->ipv6.rt6_stats->fib_route_nodes,=0D atomic_read(&net->ipv6.rt6_stats->fib_rt_alloc),=0D net->ipv6.rt6_stats->fib_rt_entries,=0D net->ipv6.rt6_stats->fib_rt_cache,=0D dst_entries_get_slow(&net->ipv6.ip6_dst_ops),=0D net->ipv6.rt6_stats->fib_discarded_routes);=0D =0D return 0;=0D }=0D =0D =0D =0D =0D static int ipv6_sysctl_rtcache_flush(struct ctl_table *ctl, int write,=0D void *buffer, size_t *lenp, loff_t *ppos)=0D {=0D struct net *net;=0D int delay;=0D int ret;=0D if (!write)=0D return -22;=0D =0D net =3D (struct net *)ctl->extra1;=0D delay =3D net->ipv6.sysctl.flush_delay;=0D ret =3D proc_dointvec(ctl, write, buffer, lenp, ppos);=0D if (ret)=0D return ret;=0D =0D fib6_run_gc(delay <=3D 0 ? 0 : (unsigned long)delay, net, delay > 0);=0D return 0;=0D }=0D =0D static struct ctl_table ipv6_route_table_template[] =3D {=0D {=0D .procname =3D "max_size",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_max_size,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec,=0D },=0D {=0D .procname =3D "gc_thresh",=0D .data =3D &ip6_dst_ops_template.gc_thresh,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec,=0D },=0D {=0D .procname =3D "flush",=0D .data =3D &init_net.ipv6.sysctl.flush_delay,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0200,=0D .proc_handler =3D ipv6_sysctl_rtcache_flush=0D },=0D {=0D .procname =3D "gc_min_interval",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_jiffies,=0D },=0D {=0D .procname =3D "gc_timeout",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_gc_timeout,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_jiffies,=0D },=0D {=0D .procname =3D "gc_interval",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_gc_interval,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_jiffies,=0D },=0D {=0D .procname =3D "gc_elasticity",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_gc_elasticity,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec,=0D },=0D {=0D .procname =3D "mtu_expires",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_mtu_expires,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_jiffies,=0D },=0D {=0D .procname =3D "min_adv_mss",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_min_advmss,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec,=0D },=0D {=0D .procname =3D "gc_min_interval_ms",=0D .data =3D &init_net.ipv6.sysctl.ip6_rt_gc_min_interval,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_ms_jiffies,=0D },=0D {=0D .procname =3D "skip_notify_on_dev_down",=0D .data =3D &init_net.ipv6.sysctl.skip_notify_on_dev_down,=0D .maxlen =3D sizeof(int),=0D .mode =3D 0644,=0D .proc_handler =3D proc_dointvec_minmax,=0D .extra1 =3D ((void *)&sysctl_vals[1]),=0D .extra2 =3D ((void *)&sysctl_vals[2]),=0D },=0D { }=0D };=0D =0D struct ctl_table * ipv6_route_sysctl_init(struct net *net)=0D {=0D struct ctl_table *table;=0D =0D table =3D kmemdup(ipv6_route_table_template,=0D sizeof(ipv6_route_table_template),=0D ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)));=0D =0D if (table) {=0D table[0].data =3D &net->ipv6.sysctl.ip6_rt_max_size;=0D table[1].data =3D &net->ipv6.ip6_dst_ops.gc_thresh;=0D table[2].data =3D &net->ipv6.sysctl.flush_delay;=0D table[2].extra1 =3D net;=0D table[3].data =3D &net->ipv6.sysctl.ip6_rt_gc_min_interval;=0D table[4].data =3D &net->ipv6.sysctl.ip6_rt_gc_timeout;=0D table[5].data =3D &net->ipv6.sysctl.ip6_rt_gc_interval;=0D table[6].data =3D &net->ipv6.sysctl.ip6_rt_gc_elasticity;=0D table[7].data =3D &net->ipv6.sysctl.ip6_rt_mtu_expires;=0D table[8].data =3D &net->ipv6.sysctl.ip6_rt_min_advmss;=0D table[9].data =3D &net->ipv6.sysctl.ip6_rt_gc_min_interval;=0D table[10].data =3D &net->ipv6.sysctl.skip_notify_on_dev_down;=0D =0D =0D if (net->user_ns !=3D &init_user_ns)=0D table[1].procname =3D ((void *)0);=0D }=0D =0D return table;=0D }=0D =0D =0D static int ip6_route_net_init(struct net *net)=0D {=0D int ret =3D -12;=0D =0D memcpy(&net->ipv6.ip6_dst_ops, &ip6_dst_ops_template,=0D sizeof(net->ipv6.ip6_dst_ops));=0D =0D if (dst_entries_init(&net->ipv6.ip6_dst_ops) < 0)=0D goto out_ip6_dst_ops;=0D =0D net->ipv6.fib6_null_entry =3D fib6_info_alloc(((( gfp_t)(0x400u|0x800u)) |= (( gfp_t)0x40u) | (( gfp_t)0x80u)), true);=0D if (!net->ipv6.fib6_null_entry)=0D goto out_ip6_dst_entries;=0D memcpy(net->ipv6.fib6_null_entry, &fib6_null_entry_template,=0D sizeof(*net->ipv6.fib6_null_entry));=0D =0D net->ipv6.ip6_null_entry =3D kmemdup(&ip6_null_entry_template,=0D sizeof(*net->ipv6.ip6_null_entry),=0D ((( gfp_t)(0x400u|0x800u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)));=0D if (!net->ipv6.ip6_null_entry)=0D goto out_fib6_null_entry;=0D net->ipv6.ip6_null_entry->dst.ops =3D &net->ipv6.ip6_dst_ops;=0D dst_init_metrics(&net->ipv6.ip6_null_entry->dst,=0D ip6_template_metrics, true);=0D INIT_LIST_HEAD(&net->ipv6.ip6_null_entry->rt6i_uncached);=0D # 6503 "net/ipv6/route.c"=0D net->ipv6.sysctl.flush_delay =3D 0;=0D net->ipv6.sysctl.ip6_rt_max_size =3D 4096;=0D net->ipv6.sysctl.ip6_rt_gc_min_interval =3D 100 / 2;=0D net->ipv6.sysctl.ip6_rt_gc_timeout =3D 60*100;=0D net->ipv6.sysctl.ip6_rt_gc_interval =3D 30*100;=0D net->ipv6.sysctl.ip6_rt_gc_elasticity =3D 9;=0D net->ipv6.sysctl.ip6_rt_mtu_expires =3D 10*60*100;=0D net->ipv6.sysctl.ip6_rt_min_advmss =3D 1280 - 20 - 40;=0D net->ipv6.sysctl.skip_notify_on_dev_down =3D 0;=0D =0D atomic_set(&net->ipv6.ip6_rt_gc_expire, 30*100);=0D =0D ret =3D 0;=0D out:=0D return ret;=0D =0D =0D =0D =0D =0D =0D =0D out_fib6_null_entry:=0D kfree(net->ipv6.fib6_null_entry);=0D out_ip6_dst_entries:=0D dst_entries_destroy(&net->ipv6.ip6_dst_ops);=0D out_ip6_dst_ops:=0D goto out;=0D }=0D =0D static void ip6_route_net_exit(struct net *net)=0D {=0D kfree(net->ipv6.fib6_null_entry);=0D kfree(net->ipv6.ip6_null_entry);=0D =0D =0D =0D =0D dst_entries_destroy(&net->ipv6.ip6_dst_ops);=0D }=0D =0D static int ip6_route_net_init_late(struct net *net)=0D {=0D =0D proc_create_net_data("ipv6_route", 0, net->proc_net, &ipv6_route_seq_ops, = sizeof(struct ipv6_route_iter), ((void *)0));=0D =0D proc_create_net_single("rt6_stats", 0444, net->proc_net,=0D rt6_stats_seq_show, ((void *)0));=0D =0D return 0;=0D }=0D =0D static void ip6_route_net_exit_late(struct net *net)=0D {=0D =0D remove_proc_entry("ipv6_route", net->proc_net);=0D remove_proc_entry("rt6_stats", net->proc_net);=0D =0D }=0D =0D static struct pernet_operations ip6_route_net_ops =3D {=0D .init =3D ip6_route_net_init,=0D .exit =3D ip6_route_net_exit,=0D };=0D =0D static int ipv6_inetpeer_init(struct net *net)=0D {=0D struct inet_peer_base *bp =3D kmalloc(sizeof(*bp), ((( gfp_t)(0x400u|0x800= u)) | (( gfp_t)0x40u) | (( gfp_t)0x80u)));=0D =0D if (!bp)=0D return -12;=0D inet_peer_base_init(bp);=0D net->ipv6.peers =3D bp;=0D return 0;=0D }=0D =0D static void ipv6_inetpeer_exit(struct net *net)=0D {=0D struct inet_peer_base *bp =3D net->ipv6.peers;=0D =0D net->ipv6.peers =3D ((void *)0);=0D inetpeer_invalidate_tree(bp);=0D kfree(bp);=0D }=0D =0D static struct pernet_operations ipv6_inetpeer_ops =3D {=0D .init =3D ipv6_inetpeer_init,=0D .exit =3D ipv6_inetpeer_exit,=0D };=0D =0D static struct pernet_operations ip6_route_net_late_ops =3D {=0D .init =3D ip6_route_net_init_late,=0D .exit =3D ip6_route_net_exit_late,=0D };=0D =0D static struct notifier_block ip6_route_dev_notifier =3D {=0D .notifier_call =3D ip6_route_dev_notify,=0D .priority =3D 0 - 10,=0D };=0D =0D void __attribute__((__section__(".init.text"))) __attribute__((__cold__)) _= _attribute__((__no_sanitize__("cfi"))) ip6_route_init_special_entries(void)= =0D {=0D =0D =0D =0D init_net.ipv6.fib6_null_entry->fib6_nh->nh_common.nhc_dev =3D init_net.loo= pback_dev;=0D init_net.ipv6.ip6_null_entry->dst.dev =3D init_net.loopback_dev;=0D init_net.ipv6.ip6_null_entry->rt6i_idev =3D in6_dev_get(init_net.loopback_= dev);=0D =0D =0D =0D =0D =0D =0D }=0D =0D =0D =0D extern int bpf_iter_ipv6_route(struct bpf_iter_meta *meta, struct fib6_info= *rt); int __attribute__((__section__(".init.text"))) __attribute__((__cold= __)) __attribute__((__no_sanitize__("cfi"))) bpf_iter_ipv6_route(struct bpf= _iter_meta *meta, struct fib6_info *rt) { return 0; }=0D =0D static u32 __attribute__((__unused__)) btf_fib6_info_id[5];=0D =0D =0D static const struct bpf_iter_seq_info ipv6_route_seq_info =3D {=0D .seq_ops =3D &ipv6_route_seq_ops,=0D .init_seq_private =3D bpf_iter_init_seq_net,=0D .fini_seq_private =3D bpf_iter_fini_seq_net,=0D .seq_priv_size =3D sizeof(struct ipv6_route_iter),=0D };=0D =0D static struct bpf_iter_reg ipv6_route_reg_info =3D {=0D .target =3D "ipv6_route",=0D .ctx_arg_info_size =3D 1,=0D .ctx_arg_info =3D {=0D { __builtin_offsetof(struct bpf_iter__ipv6_route, rt),=0D PTR_TO_BTF_ID_OR_NULL },=0D },=0D .seq_info =3D &ipv6_route_seq_info,=0D };=0D =0D static int __attribute__((__section__(".init.text"))) __attribute__((__cold= __)) __attribute__((__no_sanitize__("cfi"))) bpf_iter_register(void)=0D {=0D ipv6_route_reg_info.ctx_arg_info[0].btf_id =3D *btf_fib6_info_id;=0D return bpf_iter_reg_target(&ipv6_route_reg_info);=0D }=0D =0D static void bpf_iter_unregister(void)=0D {=0D bpf_iter_unreg_target(&ipv6_route_reg_info);=0D }=0D =0D =0D =0D int __attribute__((__section__(".init.text"))) __attribute__((__cold__)) __= attribute__((__no_sanitize__("cfi"))) ip6_route_init(void)=0D {=0D int ret;=0D int cpu;=0D =0D ret =3D -12;=0D ip6_dst_ops_template.kmem_cachep =3D=0D kmem_cache_create("ip6_dst_cache", sizeof(struct rt6_info), 0,=0D ((slab_flags_t )0x00002000U) | 0, ((void *)0));=0D if (!ip6_dst_ops_template.kmem_cachep)=0D goto out;=0D =0D ret =3D dst_entries_init(&ip6_dst_blackhole_ops);=0D if (ret)=0D goto out_kmem_cache;=0D =0D ret =3D register_pernet_subsys(&ipv6_inetpeer_ops);=0D if (ret)=0D goto out_dst_entries;=0D =0D ret =3D register_pernet_subsys(&ip6_route_net_ops);=0D if (ret)=0D goto out_register_inetpeer;=0D =0D ip6_dst_blackhole_ops.kmem_cachep =3D ip6_dst_ops_template.kmem_cachep;=0D =0D ret =3D fib6_init();=0D if (ret)=0D goto out_register_subsys;=0D =0D ret =3D xfrm6_init();=0D if (ret)=0D goto out_fib6_init;=0D =0D ret =3D fib6_rules_init();=0D if (ret)=0D goto xfrm6_init;=0D =0D ret =3D register_pernet_subsys(&ip6_route_net_late_ops);=0D if (ret)=0D goto fib6_rules_init;=0D =0D ret =3D rtnl_register_module(((struct module *)0), 10, RTM_NEWROUTE,=0D inet6_rtm_newroute, ((void *)0), 0);=0D if (ret < 0)=0D goto out_register_late_subsys;=0D =0D ret =3D rtnl_register_module(((struct module *)0), 10, RTM_DELROUTE,=0D inet6_rtm_delroute, ((void *)0), 0);=0D if (ret < 0)=0D goto out_register_late_subsys;=0D =0D ret =3D rtnl_register_module(((struct module *)0), 10, RTM_GETROUTE,=0D inet6_rtm_getroute, ((void *)0),=0D RTNL_FLAG_DOIT_UNLOCKED);=0D if (ret < 0)=0D goto out_register_late_subsys;=0D =0D ret =3D register_netdevice_notifier(&ip6_route_dev_notifier);=0D if (ret)=0D goto out_register_late_subsys;=0D =0D =0D =0D ret =3D bpf_iter_register();=0D if (ret)=0D goto out_register_late_subsys;=0D =0D =0D =0D for (((cpu)) =3D -1; ((cpu)) =3D cpumask_next(((cpu)), (((const struct cpu= mask *)&__cpu_possible_mask))), ((cpu)) < nr_cpu_ids;) {=0D struct uncached_list *ul =3D ({ do { const void *__vpp_verify =3D (typeof= ((&rt6_uncached_list) + 0))((void *)0); (void)__vpp_verify; } while (0); ({= unsigned long __ptr; __ptr =3D (unsigned long) ((typeof(*((&rt6_uncached_l= ist))) *)((&rt6_uncached_list))); (typeof((typeof(*((&rt6_uncached_list))) = *)((&rt6_uncached_list)))) (__ptr + (((__per_cpu_offset[(cpu)])))); }); });= =0D =0D INIT_LIST_HEAD(&ul->head);=0D INIT_LIST_HEAD(&ul->quarantine);=0D do { static struct lock_class_key __key; __raw_spin_lock_init(spinlock_ch= eck(&ul->lock), "&ul->lock", &__key, LD_WAIT_CONFIG); } while (0);=0D }=0D =0D out:=0D return ret;=0D =0D out_register_late_subsys:=0D rtnl_unregister_all(10);=0D unregister_pernet_subsys(&ip6_route_net_late_ops);=0D fib6_rules_init:=0D fib6_rules_cleanup();=0D xfrm6_init:=0D xfrm6_fini();=0D out_fib6_init:=0D fib6_gc_cleanup();=0D out_register_subsys:=0D unregister_pernet_subsys(&ip6_route_net_ops);=0D out_register_inetpeer:=0D unregister_pernet_subsys(&ipv6_inetpeer_ops);=0D out_dst_entries:=0D dst_entries_destroy(&ip6_dst_blackhole_ops);=0D out_kmem_cache:=0D kmem_cache_destroy(ip6_dst_ops_template.kmem_cachep);=0D goto out;=0D }=0D =0D void ip6_route_cleanup(void)=0D {=0D =0D =0D bpf_iter_unregister();=0D =0D =0D unregister_netdevice_notifier(&ip6_route_dev_notifier);=0D unregister_pernet_subsys(&ip6_route_net_late_ops);=0D fib6_rules_cleanup();=0D xfrm6_fini();=0D fib6_gc_cleanup();=0D unregister_pernet_subsys(&ipv6_inetpeer_ops);=0D unregister_pernet_subsys(&ip6_route_net_ops);=0D dst_entries_destroy(&ip6_dst_blackhole_ops);=0D kmem_cache_destroy(ip6_dst_ops_template.kmem_cachep);=0D }=0D --r23o63ywhp5bfhx5--