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>
diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg
index 4ed0b44..f358881 100644
--- a/android/abi_gki_aarch64.stg
+++ b/android/abi_gki_aarch64.stg
@@ -122167,6 +122167,12 @@
   offset: 128
 }
 member {
+  id: 0xa03c8629
+  name: "map_changing_lock"
+  type_id: 0x28b9ec9a
+  offset: 960
+}
+member {
   id: 0x7031173c
   name: "map_check_btf"
   type_id: 0x2e2d1155
@@ -128778,10 +128784,10 @@
   offset: 128
 }
 member {
-  id: 0x3025dd18
+  id: 0x3025df0c
   name: "mm"
   type_id: 0x1b36c7a2
-  offset: 960
+  offset: 1536
 }
 member {
   id: 0xf2c3ca3b
@@ -128982,10 +128988,10 @@
   offset: 576
 }
 member {
-  id: 0xdd180b6b
+  id: 0xdd180ba9
   name: "mmap_changing"
   type_id: 0x74d29cf1
-  offset: 928
+  offset: 1472
 }
 member {
   id: 0xc392230a
@@ -267504,7 +267510,7 @@
   kind: STRUCT
   name: "userfaultfd_ctx"
   definition {
-    bytesize: 128
+    bytesize: 208
     member_id: 0x3162bad8
     member_id: 0x05e73814
     member_id: 0xc409a485
@@ -267514,8 +267520,10 @@
     member_id: 0x2d2d0282
     member_id: 0xc55df36f
     member_id: 0x79d263fe
-    member_id: 0xdd180b6b
-    member_id: 0x3025dd18
+    member_id: 0xa03c8629
+    member_id: 0xdd180ba9
+    member_id: 0x3025df0c
+    member_id: 0x2d081c8a
   }
 }
 struct_union {
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
index ef7056f..7d881c5 100644
--- a/include/linux/userfaultfd_k.h
+++ b/include/linux/userfaultfd_k.h
@@ -50,6 +50,12 @@
  * since fd_wqh.lock is taken by aio_poll() while it's holding a lock that's
  * also taken in IRQ context.
  */
+
+/*
+ * ANDROID: CRC fix for commit f91e6b41dd11 ("userfaultfd: move userfaultfd_ctx
+ * struct to header file")
+ */
+#ifndef __GENKSYMS__
 struct userfaultfd_ctx {
 	/* waitqueue head for the pending (i.e. not read) userfaults */
 	wait_queue_head_t fault_pending_wqh;
@@ -80,7 +86,10 @@ struct userfaultfd_ctx {
 	atomic_t mmap_changing;
 	/* mm with one ore more vmas attached to this userfaultfd_ctx */
 	struct mm_struct *mm;
+
+	ANDROID_KABI_RESERVE(1);
 };
+#endif
 
 extern int sysctl_unprivileged_userfaultfd;