ANDROID: GKI: fix ABI breakage in struct userfaultfd_ctx

The following two commits move 'userfaultfd_ctx' struct from
fs/userfaultfd.c to header file and then add a rw_semaphore to it. The
ABI is broken by the change. However, given that the type should be
private and not accessed by vendor modules, use some GENKSYMS #define
magic to preserve the CRC. Also update the .stg file for offset
adjustment within 'userfaultfd_ctx'.

5e4c24a57b0c ("userfaultfd: protect mmap_changing with rw_sem in userfaulfd_ctx")
f91e6b41dd11 ("userfaultfd: move userfaultfd_ctx struct to header file")

Bug: 320478828
Change-Id: I5f97ff34dd8c88fe3d18c4dc902452488ba28cbd
Signed-off-by: Lokesh Gidra <lokeshgidra@google.com>
This commit is contained in:
Lokesh Gidra
2024-04-05 16:22:11 -07:00
parent 8dd482be44
commit 3dfddcb9c2
2 changed files with 24 additions and 7 deletions

View File

@@ -122166,6 +122166,12 @@ member {
type_id: 0x1d46f863 type_id: 0x1d46f863
offset: 128 offset: 128
} }
member {
id: 0xa03c8629
name: "map_changing_lock"
type_id: 0x28b9ec9a
offset: 960
}
member { member {
id: 0x7031173c id: 0x7031173c
name: "map_check_btf" name: "map_check_btf"
@@ -128778,10 +128784,10 @@ member {
offset: 128 offset: 128
} }
member { member {
id: 0x3025dd18 id: 0x3025df0c
name: "mm" name: "mm"
type_id: 0x1b36c7a2 type_id: 0x1b36c7a2
offset: 960 offset: 1536
} }
member { member {
id: 0xf2c3ca3b id: 0xf2c3ca3b
@@ -128982,10 +128988,10 @@ member {
offset: 576 offset: 576
} }
member { member {
id: 0xdd180b6b id: 0xdd180ba9
name: "mmap_changing" name: "mmap_changing"
type_id: 0x74d29cf1 type_id: 0x74d29cf1
offset: 928 offset: 1472
} }
member { member {
id: 0xc392230a id: 0xc392230a
@@ -267504,7 +267510,7 @@ struct_union {
kind: STRUCT kind: STRUCT
name: "userfaultfd_ctx" name: "userfaultfd_ctx"
definition { definition {
bytesize: 128 bytesize: 208
member_id: 0x3162bad8 member_id: 0x3162bad8
member_id: 0x05e73814 member_id: 0x05e73814
member_id: 0xc409a485 member_id: 0xc409a485
@@ -267514,8 +267520,10 @@ struct_union {
member_id: 0x2d2d0282 member_id: 0x2d2d0282
member_id: 0xc55df36f member_id: 0xc55df36f
member_id: 0x79d263fe member_id: 0x79d263fe
member_id: 0xdd180b6b member_id: 0xa03c8629
member_id: 0x3025dd18 member_id: 0xdd180ba9
member_id: 0x3025df0c
member_id: 0x2d081c8a
} }
} }
struct_union { struct_union {

View File

@@ -50,6 +50,12 @@
* since fd_wqh.lock is taken by aio_poll() while it's holding a lock that's * since fd_wqh.lock is taken by aio_poll() while it's holding a lock that's
* also taken in IRQ context. * also taken in IRQ context.
*/ */
/*
* ANDROID: CRC fix for commit f91e6b41dd11 ("userfaultfd: move userfaultfd_ctx
* struct to header file")
*/
#ifndef __GENKSYMS__
struct userfaultfd_ctx { struct userfaultfd_ctx {
/* waitqueue head for the pending (i.e. not read) userfaults */ /* waitqueue head for the pending (i.e. not read) userfaults */
wait_queue_head_t fault_pending_wqh; wait_queue_head_t fault_pending_wqh;
@@ -80,7 +86,10 @@ struct userfaultfd_ctx {
atomic_t mmap_changing; atomic_t mmap_changing;
/* mm with one ore more vmas attached to this userfaultfd_ctx */ /* mm with one ore more vmas attached to this userfaultfd_ctx */
struct mm_struct *mm; struct mm_struct *mm;
ANDROID_KABI_RESERVE(1);
}; };
#endif
extern int sysctl_unprivileged_userfaultfd; extern int sysctl_unprivileged_userfaultfd;