From 8a67c06094453c7bf84be53a6cdf569985b7355a Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 23 Oct 2023 11:26:46 +0000 Subject: [PATCH] ANDROID: GKI: fix ABI breakage in struct hid_device In commit 74b95023619b ("UPSTREAM: HID: input: map battery system charging"), which is in the 6.1.60 release, struct hid_device gets a new field, which breaks the abi. Fix this up by using one of the reserved slots for upstream changes and update the .stg file to preserve the build. type 'struct hid_device' changed member 'union { struct { __s32 battery_charge_status; u32 padding; }; struct { u64 android_kabi_reserved1; }; union { }; }' was added member 'u64 android_kabi_reserved1' was removed Bug: 305125317 Bug: 161946584 Fixes: 74b95023619b ("UPSTREAM: HID: input: map battery system charging") Cc: Lu Guohong Change-Id: I9ac8ffc758563285f88feb6d592471a555f71c14 Signed-off-by: Greg Kroah-Hartman --- android/abi_gki_aarch64.stg | 47 +++++++++++++++++++++++++++++++------ include/linux/hid.h | 3 +-- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index 498e61c49be8..c110bbc286bb 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -38713,6 +38713,10 @@ member { type_id: 0x2aa8f2af offset: 4608 } +member { + id: 0x297a76bf + type_id: 0x2ac7aaed +} member { id: 0x2a406106 type_id: 0x262ff409 @@ -39405,6 +39409,11 @@ member { type_id: 0x5cac5fcc offset: 896 } +member { + id: 0x34e0ff3c + type_id: 0x5cad8df0 + offset: 62784 +} member { id: 0x34fb349d type_id: 0x5cc2a264 @@ -45923,12 +45932,6 @@ member { type_id: 0x92233392 offset: 14976 } -member { - id: 0x2d081576 - name: "android_kabi_reserved1" - type_id: 0x92233392 - offset: 62784 -} member { id: 0x2d081599 name: "android_kabi_reserved1" @@ -52084,6 +52087,11 @@ member { type_id: 0x0faae5b1 offset: 58880 } +member { + id: 0xcacb97d2 + name: "battery_charge_status" + type_id: 0x0faae5b1 +} member { id: 0x68976a7a name: "battery_max" @@ -143033,6 +143041,12 @@ member { type_id: 0xe8034002 offset: 80 } +member { + id: 0x642f0821 + name: "padding" + type_id: 0xc9082b19 + offset: 32 +} member { id: 0x64367ab0 name: "padding" @@ -210072,6 +210086,15 @@ struct_union { member_id: 0x1124a364 } } +struct_union { + id: 0x2ac7aaed + kind: STRUCT + definition { + bytesize: 8 + member_id: 0xcacb97d2 + member_id: 0x642f0821 + } +} struct_union { id: 0x2b189f72 kind: STRUCT @@ -212511,6 +212534,16 @@ struct_union { member_id: 0x63f03d1c } } +struct_union { + id: 0x5cad8df0 + kind: UNION + definition { + bytesize: 8 + member_id: 0x297a76bf + member_id: 0x27000c61 + member_id: 0x36752b74 + } +} struct_union { id: 0x5cc01b50 kind: UNION @@ -231722,7 +231755,7 @@ struct_union { member_id: 0xaf4362fa member_id: 0xff66bcf9 member_id: 0xcc6aaeab - member_id: 0x2d081576 + member_id: 0x34e0ff3c member_id: 0x637601c1 } } diff --git a/include/linux/hid.h b/include/linux/hid.h index b2f56a45101e..4a94c6135177 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h @@ -616,7 +616,6 @@ struct hid_device { /* device report descriptor */ __s32 battery_max; __s32 battery_report_type; __s32 battery_report_id; - __s32 battery_charge_status; enum hid_battery_status battery_status; bool battery_avoid_query; ktime_t battery_ratelimit_time; @@ -659,7 +658,7 @@ struct hid_device { /* device report descriptor */ unsigned int id; /* system unique id */ - ANDROID_KABI_RESERVE(1); + ANDROID_KABI_USE(1, struct { __s32 battery_charge_status; u32 padding; }); ANDROID_KABI_RESERVE(2); };