From de6b1e85b958dbce42043d025c90dde47681c547 Mon Sep 17 00:00:00 2001 From: Lee Jones Date: Thu, 19 Jun 2025 11:11:27 +0100 Subject: [PATCH] ANDROID: af_unix: Provide ABI fixes for recently introduced 'struct scm_fp_list' attribute 'edges' Adding new attributes to the ABI protected 'struct scm_fp_list' changes the offsets of the fields already present in the structure which could cause issues if modules already have a copy and are unaware of the changes. Let's add it to the end of the structure, under the protection of __GENKSYMS__ as is SOP. Bug: 404256079 Signed-off-by: Lee Jones Change-Id: Ibe024d14ce8b4139baba244eae60012bb43dca64 --- android/abi_gki_aarch64.stg | 253 ++++++++++++++++++++- android/abi_gki_aarch64.stg.allowed_breaks | 6 + include/net/scm.h | 4 +- 3 files changed, 256 insertions(+), 7 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 26aae9e95c4d..296fea9d7cd8 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -2478,6 +2478,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x082ccdd1 } +pointer_reference { + id: 0x08a51ea1 + kind: POINTER + pointee_type_id: 0x08d49c19 +} pointer_reference { id: 0x08a8dfa4 kind: POINTER @@ -11523,6 +11528,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x5d82e969 } +pointer_reference { + id: 0x1df3293f + kind: POINTER + pointee_type_id: 0x5d8c4261 +} pointer_reference { id: 0x1df3d475 kind: POINTER @@ -12248,6 +12258,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xa8ae6b7a } +pointer_reference { + id: 0x20c77d4a + kind: POINTER + pointee_type_id: 0xa95d13b4 +} pointer_reference { id: 0x20d23755 kind: POINTER @@ -29063,6 +29078,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xc0009f60 } +pointer_reference { + id: 0x3a91c7e7 + kind: POINTER + pointee_type_id: 0xc007f900 +} pointer_reference { id: 0x3a91ca5f kind: POINTER @@ -38536,6 +38556,11 @@ array { number_of_elements: 3 element_type_id: 0x02cb01c6 } +array { + id: 0x1359d776 + number_of_elements: 108 + element_type_id: 0x384f7d7c +} array { id: 0x13735712 number_of_elements: 20 @@ -41957,6 +41982,10 @@ array { id: 0xfca4258b element_type_id: 0xe276adef } +array { + id: 0xfcb1c304 + element_type_id: 0xe22137d3 +} array { id: 0xfd17183f element_type_id: 0xe4ba5b3d @@ -48083,6 +48112,12 @@ member { name: "addr" type_id: 0x33756485 } +member { + id: 0x24257f11 + name: "addr" + type_id: 0x08a51ea1 + offset: 6848 +} member { id: 0x2425a5c3 name: "addr" @@ -57950,6 +57985,12 @@ member { type_id: 0x120540d1 offset: 4480 } +member { + id: 0xd38b8035 + name: "bindlock" + type_id: 0xa7c362b0 + offset: 7424 +} member { id: 0x975a5c19 name: "bindv6only" @@ -71070,10 +71111,10 @@ member { type_id: 0x0484940b } member { - id: 0x11d6b697 + id: 0x11d6ba75 name: "count_unix" type_id: 0xb0312d5a - offset: 16448 + offset: 16512 } member { id: 0x20014498 @@ -86150,12 +86191,23 @@ member { type_id: 0xf313e71a offset: 33280 } +member { + id: 0x76197573 + name: "edges" + type_id: 0xd3c80119 +} member { id: 0x7692e117 name: "edges" type_id: 0x585b40a5 offset: 1728 } +member { + id: 0x76d74bd1 + name: "edges" + type_id: 0x1df3293f + offset: 16448 +} member { id: 0x31c31f3f name: "edid" @@ -100446,6 +100498,12 @@ member { type_id: 0x246497bd offset: 128 } +member { + id: 0x80572460 + name: "gc_flags" + type_id: 0x33756485 + offset: 8192 +} member { id: 0x8fd944b0 name: "gc_interval" @@ -112701,6 +112759,12 @@ member { type_id: 0xd3c80119 offset: 2752 } +member { + id: 0x79c0c441 + name: "inflight" + type_id: 0x33756485 + offset: 8064 +} member { id: 0x79f74293 name: "inflight" @@ -115737,6 +115801,12 @@ member { type_id: 0xd3c80119 offset: 20288 } +member { + id: 0x3eb3deac + name: "iolock" + type_id: 0xa7c362b0 + offset: 7040 +} member { id: 0x5131ffa2 name: "iomap" @@ -123393,6 +123463,12 @@ member { type_id: 0xd3c80119 offset: 1024 } +member { + id: 0x556d5327 + name: "link" + type_id: 0xd3c80119 + offset: 7936 +} member { id: 0x556d57ec name: "link" @@ -124928,6 +125004,12 @@ member { type_id: 0xf313e71a offset: 32 } +member { + id: 0x2d1fe1e3 + name: "lock" + type_id: 0xf313e71a + offset: 8128 +} member { id: 0x2d1fe1f3 name: "lock" @@ -138357,6 +138439,12 @@ member { type_id: 0xfc59be2e offset: 128 } +member { + id: 0x0d27d97f + name: "name" + type_id: 0xfcb1c304 + offset: 64 +} member { id: 0x0d369e2a name: "name" @@ -143920,6 +144008,11 @@ member { type_id: 0x92233392 offset: 1024 } +member { + id: 0xc7d661bf + name: "nr_fds" + type_id: 0x74d29cf1 +} member { id: 0xc661bf13 name: "nr_file_filters" @@ -148506,6 +148599,12 @@ member { type_id: 0x0dad77a5 offset: 896 } +member { + id: 0x337b4b40 + name: "oob_skb" + type_id: 0x054f691a + offset: 9600 +} member { id: 0x97510416 name: "oom_flag_origin" @@ -150535,6 +150634,12 @@ member { type_id: 0x34d79405 offset: 128 } +member { + id: 0x0fc2a86e + name: "out_degree" + type_id: 0x33756485 + offset: 256 +} member { id: 0xbdac191c name: "out_ep" @@ -153437,6 +153542,12 @@ member { type_id: 0x5adf57ae offset: 256 } +member { + id: 0x77353e9c + name: "path" + type_id: 0x71a68091 + offset: 6912 +} member { id: 0x776fe9d5 name: "path" @@ -154435,6 +154546,12 @@ member { name: "peer" type_id: 0x0258f96e } +member { + id: 0xb794a532 + name: "peer" + type_id: 0x1d44326e + offset: 7808 +} member { id: 0x3be8531a name: "peer2peer" @@ -154469,6 +154586,18 @@ member { type_id: 0x7584e7da offset: 304 } +member { + id: 0x6a6786bf + name: "peer_wake" + type_id: 0x347ff86e + offset: 9216 +} +member { + id: 0x337f3f92 + name: "peer_wq" + type_id: 0x5eee2044 + offset: 8704 +} member { id: 0xc29a8766 name: "peers" @@ -160155,6 +160284,11 @@ member { type_id: 0x6423b0d9 offset: 608 } +member { + id: 0x5ba539f6 + name: "predecessor" + type_id: 0x3a91c7e7 +} member { id: 0x649fc3ef name: "predicted" @@ -180503,6 +180637,12 @@ member { name: "sclass" type_id: 0xc9082b19 } +member { + id: 0xac8121db + name: "scm_stat" + type_id: 0xfa80d3fa + offset: 9536 +} member { id: 0xe94f5bce name: "scmd_flags" @@ -194307,6 +194447,12 @@ member { type_id: 0xe62ebf07 offset: 64 } +member { + id: 0x132c9198 + name: "successor" + type_id: 0x3a91c7e7 + offset: 64 +} member { id: 0x90938126 name: "suggested_x_property" @@ -194385,6 +194531,17 @@ member { type_id: 0x2e0f9112 offset: 512 } +member { + id: 0xa2e62cd6 + name: "sun_family" + type_id: 0xe0705941 +} +member { + id: 0x7339613c + name: "sun_path" + type_id: 0x1359d776 + offset: 16 +} member { id: 0xc6d8a98e name: "super_block_align" @@ -212514,6 +212671,18 @@ member { type_id: 0xc9082b19 offset: 8960 } +member { + id: 0x5eddc09d + name: "vertex" + type_id: 0x20c77d4a + offset: 7872 +} +member { + id: 0x957e8a2d + name: "vertex_entry" + type_id: 0xd3c80119 + offset: 128 +} member { id: 0x7f926278 name: "vertical_position" @@ -266820,13 +266989,23 @@ struct_union { kind: STRUCT name: "scm_fp_list" definition { - bytesize: 2064 + bytesize: 2072 member_id: 0x65956ee9 member_id: 0x97463852 member_id: 0x042a2402 member_id: 0x5449f846 member_id: 0x7b11d7cc - member_id: 0x11d6b697 + member_id: 0x76d74bd1 + member_id: 0x11d6ba75 + } +} +struct_union { + id: 0xfa80d3fa + kind: STRUCT + name: "scm_stat" + definition { + bytesize: 4 + member_id: 0xc7d661bf } } struct_union { @@ -271838,6 +272017,16 @@ struct_union { member_id: 0x98cf3099 } } +struct_union { + id: 0xe22137d3 + kind: STRUCT + name: "sockaddr_un" + definition { + bytesize: 110 + member_id: 0xa2e62cd6 + member_id: 0x7339613c + } +} struct_union { id: 0x14637955 kind: STRUCT @@ -277243,6 +277432,51 @@ struct_union { member_id: 0xb008455d } } +struct_union { + id: 0x08d49c19 + kind: STRUCT + name: "unix_address" + definition { + bytesize: 8 + member_id: 0xb7dcf8ac + member_id: 0xb862f8be + member_id: 0x0d27d97f + } +} +struct_union { + id: 0x5d8c4261 + kind: STRUCT + name: "unix_edge" + definition { + bytesize: 32 + member_id: 0x5ba539f6 + member_id: 0x132c9198 + member_id: 0x957e8a2d + } +} +struct_union { + id: 0xc007f900 + kind: STRUCT + name: "unix_sock" + definition { + bytesize: 1216 + member_id: 0x82ce9da8 + member_id: 0x24257f11 + member_id: 0x77353e9c + member_id: 0x3eb3deac + member_id: 0xd38b8035 + member_id: 0xb794a532 + member_id: 0x5eddc09d + member_id: 0x556d5327 + member_id: 0x79c0c441 + member_id: 0x2d1fe1e3 + member_id: 0x80572460 + member_id: 0x337f3f92 + member_id: 0x6a6786bf + member_id: 0xac8121db + member_id: 0x337b4b40 + } +} struct_union { id: 0x3f8f92cb kind: STRUCT @@ -277253,6 +277487,17 @@ struct_union { member_id: 0xff1cd5bf } } +struct_union { + id: 0xa95d13b4 + kind: STRUCT + name: "unix_vertex" + definition { + bytesize: 40 + member_id: 0x76197573 + member_id: 0x4d8789fe + member_id: 0x0fc2a86e + } +} struct_union { id: 0xad1e2d0f kind: STRUCT diff --git a/android/abi_gki_aarch64.stg.allowed_breaks b/android/abi_gki_aarch64.stg.allowed_breaks index 5e7659cb7aa3..b01e09c100a4 100644 --- a/android/abi_gki_aarch64.stg.allowed_breaks +++ b/android/abi_gki_aarch64.stg.allowed_breaks @@ -151,3 +151,9 @@ type 'struct scm_fp_list' changed member 'short count_unix' changed offset changed by 128 +type 'struct scm_fp_list' changed + byte size changed from 2064 to 2072 + member 'struct unix_edge* edges' was added + member 'short count_unix' changed + offset changed by 64 + diff --git a/include/net/scm.h b/include/net/scm.h index 7baa86686709..62c86da163e8 100644 --- a/include/net/scm.h +++ b/include/net/scm.h @@ -29,14 +29,12 @@ struct unix_edge; struct scm_fp_list { short count; short max; -#ifdef CONFIG_UNIX - struct unix_edge *edges; -#endif struct user_struct *user; struct file *fp[SCM_MAX_FD]; #ifndef __GENKSYMS__ #ifdef CONFIG_UNIX struct list_head vertices; + struct unix_edge *edges; #endif short count_unix; #endif