From 1ac76d45aac96e60618704d7021745ac62f10525 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 4 Jan 2024 12:09:05 +0000 Subject: [PATCH] ANDROID: GKI: fix crc issue in include/net/addrconf.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In commit 0da41ddfb291 ("net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX") a union is added to fix some issues, but that messes with the crc of a number of networking symbols for obvious reasons. As this does not actually change the abi at all, use some GENKSYMS magic #define logic to preserve the crc so that all is well. Update the .stg file with the structure change: type 'struct prefix_info' changed member 'union { __u8 flags; struct { __u8 reserved:6; __u8 autoconf:1; __u8 onlink:1; }; }' was added member '__u8 reserved:6' was removed member '__u8 autoconf:1' was removed member '__u8 onlink:1' was removed Bug: 161946584 Fixes: 0da41ddfb291 ("net: ipv6: support reporting otherwise unknown prefix flags in RTM_NEWPREFIX") Cc: Maciej Żenczykowski Cc: Lorenzo Colitti Change-Id: I9d2df74e8f3ae60425534f1b33d50b2bc444f7f5 Signed-off-by: Greg Kroah-Hartman --- android/abi_gki_aarch64.stg | 43 +++++++++++++++++++++++++++++-------- include/net/addrconf.h | 8 +++++++ 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 573e477d70d3..9bca0b8dbf27 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -38789,6 +38789,10 @@ member { id: 0x230f36dc type_id: 0x0312ab60 } +member { + id: 0x23531e28 + type_id: 0x026208b2 +} member { id: 0x2380a48f type_id: 0x012ce22f @@ -39674,6 +39678,11 @@ member { type_id: 0x5d86aa37 offset: 96 } +member { + id: 0x34aaae1a + type_id: 0x5d84d1ff + offset: 24 +} member { id: 0x34be27ed type_id: 0x5dd6efa4 @@ -50707,10 +50716,10 @@ member { offset: 160 } member { - id: 0xb2dd57f2 + id: 0xb2dd5b41 name: "autoconf" type_id: 0xb3e7bac9 - offset: 30 + offset: 6 bitsize: 1 } member { @@ -140374,10 +140383,10 @@ member { offset: 9920 } member { - id: 0x7adb50ba + id: 0x7adb5caf name: "onlink" type_id: 0xb3e7bac9 - offset: 31 + offset: 7 bitsize: 1 } member { @@ -164061,10 +164070,9 @@ member { offset: 1024 } member { - id: 0x688b9047 + id: 0x688b9626 name: "reserved" type_id: 0xb3e7bac9 - offset: 24 bitsize: 6 } member { @@ -208572,6 +208580,16 @@ struct_union { member_id: 0x2d8a4e32 } } +struct_union { + id: 0x026208b2 + kind: STRUCT + definition { + bytesize: 1 + member_id: 0x688b9626 + member_id: 0xb2dd5b41 + member_id: 0x7adb5caf + } +} struct_union { id: 0x02c70092 kind: STRUCT @@ -213664,6 +213682,15 @@ struct_union { member_id: 0x8c9fd173 } } +struct_union { + id: 0x5d84d1ff + kind: UNION + definition { + bytesize: 1 + member_id: 0x2ddb63e4 + member_id: 0x23531e28 + } +} struct_union { id: 0x5d86aa37 kind: UNION @@ -248053,9 +248080,7 @@ struct_union { member_id: 0x5ce532c4 member_id: 0xb5de8e04 member_id: 0x2165da89 - member_id: 0x688b9047 - member_id: 0xb2dd57f2 - member_id: 0x7adb50ba + member_id: 0x34aaae1a member_id: 0xe91a1d71 member_id: 0xbada6e7d member_id: 0x08cabd3c diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 1167badb5d3a..f14e2bd651c1 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -31,9 +31,15 @@ struct prefix_info { __u8 length; __u8 prefix_len; +/* + * ANDROID: crc fix for commit 9354e0acdb74 ("net: ipv6: support + * reporting otherwise unknown prefix * flags in RTM_NEWPREFIX") + */ +#ifndef __GENKSYMS__ union __packed { __u8 flags; struct __packed { +#endif #if defined(__BIG_ENDIAN_BITFIELD) __u8 onlink : 1, autoconf : 1, @@ -45,8 +51,10 @@ struct prefix_info { #else #error "Please fix " #endif +#ifndef __GENKSYMS__ }; }; +#endif __be32 valid; __be32 prefered; __be32 reserved2;