diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml
index 88042d5b20bc..18c8c69aeec7 100644
--- a/android/abi_gki_aarch64.xml
+++ b/android/abi_gki_aarch64.xml
@@ -215,7 +215,9 @@
+
+
@@ -250,6 +252,8 @@
+
+
@@ -299,6 +303,7 @@
+
@@ -522,7 +527,9 @@
+
+
@@ -544,6 +551,7 @@
+
@@ -857,6 +865,7 @@
+
@@ -1569,9 +1578,11 @@
+
+
@@ -1717,6 +1728,7 @@
+
@@ -1821,11 +1833,13 @@
+
+
@@ -3025,6 +3039,7 @@
+
@@ -3065,10 +3080,12 @@
+
+
@@ -3427,6 +3444,7 @@
+
@@ -4206,6 +4224,7 @@
+
@@ -15298,7 +15317,6 @@
-
@@ -15318,6 +15336,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16102,6 +16134,8 @@
+
+
@@ -16915,7 +16949,7 @@
-
+
@@ -17032,7 +17066,7 @@
-
+
@@ -17092,8 +17126,8 @@
-
-
+
+
@@ -22722,6 +22756,13 @@
+
+
+
+
+
+
+
@@ -31299,7 +31340,6 @@
-
@@ -32094,7 +32134,6 @@
-
@@ -39744,6 +39783,8 @@
+
+
@@ -39760,6 +39801,11 @@
+
+
+
+
+
@@ -40797,6 +40843,7 @@
+
@@ -40827,11 +40874,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -53967,6 +54026,14 @@
+
+
+
+
+
+
+
+
@@ -55229,14 +55296,6 @@
-
-
-
-
-
-
-
-
@@ -55987,6 +56046,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -59320,7 +59390,7 @@
-
+
@@ -59645,17 +59715,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -64203,6 +64262,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -64365,7 +64435,7 @@
-
+
@@ -64411,8 +64481,6 @@
-
-
@@ -70760,6 +70828,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70902,6 +70984,7 @@
+
@@ -71066,6 +71149,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -88232,14 +88339,6 @@
-
-
-
-
-
-
-
-
@@ -88251,6 +88350,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -92758,6 +92871,8 @@
+
+
@@ -92803,6 +92918,15 @@
+
+
+
+
+
+
+
+
+
@@ -93072,7 +93196,7 @@
-
+
@@ -93298,6 +93422,7 @@
+
@@ -99520,13 +99645,13 @@
-
+
-
+
-
+
@@ -99568,7 +99693,7 @@
-
+
@@ -103731,7 +103856,7 @@
-
+
@@ -103747,7 +103872,7 @@
-
+
@@ -103755,7 +103880,7 @@
-
+
@@ -103769,7 +103894,7 @@
-
+
@@ -103800,6 +103925,11 @@
+
+
+
+
+
@@ -103813,6 +103943,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -107618,6 +107760,10 @@
+
+
+
+
@@ -108670,29 +108816,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -108985,7 +109109,7 @@
-
+
@@ -109029,18 +109153,18 @@
-
+
-
+
-
+
@@ -109167,32 +109291,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -111460,6 +111558,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -111484,6 +111607,7 @@
+
@@ -114128,7 +114252,7 @@
-
+
@@ -116334,6 +116458,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -116383,11 +116526,11 @@
-
+
-
+
@@ -116399,29 +116542,41 @@
-
+
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -116510,17 +116665,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -116932,6 +117076,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -116947,6 +117110,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -121642,14 +121817,6 @@
-
-
-
-
-
-
-
-
@@ -122094,6 +122261,11 @@
+
+
+
+
+
@@ -122180,6 +122352,13 @@
+
+
+
+
+
+
+
@@ -122367,6 +122546,8 @@
+
+
@@ -122390,6 +122571,10 @@
+
+
+
+
@@ -122922,6 +123107,11 @@
+
+
+
+
+
@@ -123089,44 +123279,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -128225,6 +128377,11 @@
+
+
+
+
+
@@ -129380,6 +129537,6 @@
diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml
index 55d7c759adc0..5762be03f24d 100644
--- a/android/abi_gki_aarch64_d6430e6763.xml
+++ b/android/abi_gki_aarch64_d6430e6763.xml
@@ -984,6 +984,7 @@
+
@@ -1706,6 +1707,7 @@
+
@@ -1958,6 +1960,7 @@
+
@@ -3030,6 +3033,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -3142,6 +3156,7 @@
+
@@ -3533,6 +3548,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -3668,6 +3694,7 @@
+
@@ -3822,7 +3849,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -4013,6 +4051,7 @@
+
@@ -4863,567 +4902,21 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -5454,92 +4947,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -6792,6 +6199,566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6800,6 +6767,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7026,7 +7079,7 @@
-
+
@@ -7133,6 +7186,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -7791,6 +7858,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -7817,7 +7895,7 @@
-
+
@@ -7825,7 +7903,7 @@
-
+
@@ -7842,7 +7920,7 @@
-
+
@@ -7912,6 +7990,7 @@
+
@@ -14292,7 +14371,7 @@
-
+
@@ -19063,28 +19142,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -22239,6 +22296,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -22420,6 +22488,7 @@
+
@@ -24664,7 +24733,7 @@
-
+
@@ -25177,7 +25246,7 @@
-
+
@@ -25301,7 +25370,7 @@
-
+
@@ -25810,7 +25879,7 @@
-
+
@@ -25874,7 +25943,7 @@
-
+
@@ -25931,7 +26000,7 @@
-
+
@@ -26079,7 +26148,7 @@
-
+
@@ -26110,7 +26179,7 @@
-
+
@@ -26121,7 +26190,7 @@
-
+
@@ -26380,7 +26449,7 @@
-
+
@@ -26399,7 +26468,7 @@
-
+
@@ -26436,7 +26505,7 @@
-
+
@@ -26560,7 +26629,7 @@
-
+
@@ -26581,7 +26650,7 @@
-
+
@@ -26618,7 +26687,7 @@
-
+
@@ -26712,7 +26781,7 @@
-
+
@@ -26771,7 +26840,7 @@
-
+
@@ -28722,7 +28791,7 @@
-
+
@@ -28730,7 +28799,7 @@
-
+
@@ -29172,7 +29241,7 @@
-
+
@@ -29223,7 +29292,7 @@
-
+
@@ -29445,7 +29514,7 @@
-
+
@@ -29466,6 +29535,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -29606,6 +29686,7 @@
+
@@ -30884,17 +30965,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -32971,7 +33041,7 @@
-
+
@@ -33139,7 +33209,7 @@
-
+
@@ -35053,6 +35123,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -35101,6 +35182,7 @@
+
@@ -39315,12 +39397,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -40693,6 +40787,7 @@
+
@@ -40719,18 +40814,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -40738,7 +40822,7 @@
-
+
@@ -40746,7 +40830,7 @@
-
+
@@ -40825,6 +40909,7 @@
+
@@ -40946,22 +41031,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -41475,6 +41544,14 @@
+
+
+
+
+
+
+
+
@@ -41574,7 +41651,7 @@
-
+
@@ -41630,7 +41707,7 @@
-
+
@@ -41680,14 +41757,6 @@
-
-
-
-
-
-
-
-
@@ -41714,14 +41783,6 @@
-
-
-
-
-
-
-
-
@@ -42329,6 +42390,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -42491,6 +42568,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -42505,6 +42593,7 @@
+
@@ -48108,6 +48197,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -48121,6 +48221,7 @@
+
@@ -51483,7 +51584,7 @@
-
+
@@ -51523,9 +51624,7 @@
-
-
@@ -51574,12 +51673,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -51812,6 +51923,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -51826,6 +51948,7 @@
+
@@ -51836,20 +51959,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -51864,14 +51973,6 @@
-
-
-
-
-
-
-
-
@@ -51945,12 +52046,12 @@
-
+
-
+
@@ -52295,6 +52396,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -52388,42 +52499,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -52519,7 +52594,7 @@
-
+
@@ -52540,26 +52615,19 @@
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
@@ -52570,15 +52638,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
@@ -53028,6 +53112,7 @@
+
@@ -53103,6 +53188,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -53311,6 +53557,7 @@
+
@@ -53697,6 +53944,7 @@
+
@@ -54870,195 +55118,195 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -58495,13 +58743,13 @@
-
+
-
+
@@ -58623,7 +58871,7 @@
-
+
@@ -58674,7 +58922,7 @@
-
+
@@ -61075,7 +61323,7 @@
-
+
@@ -61663,13 +61911,13 @@
-
+
-
+
@@ -61711,7 +61959,7 @@
-
+
@@ -62107,7 +62355,7 @@
-
+
@@ -65867,7 +66115,7 @@
-
+
@@ -66524,6 +66772,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -66569,7 +66830,7 @@
-
+
@@ -66726,7 +66987,7 @@
-
+
@@ -66734,7 +66995,7 @@
-
+
@@ -66742,7 +67003,7 @@
-
+
@@ -66756,7 +67017,7 @@
-
+
@@ -66811,7 +67072,7 @@
-
+
@@ -66831,7 +67092,7 @@
-
+
@@ -66877,17 +67138,17 @@
-
+
-
+
-
+
@@ -66895,7 +67156,7 @@
-
+
@@ -66931,7 +67192,7 @@
-
+
@@ -67063,7 +67324,7 @@
-
+
@@ -67117,7 +67378,7 @@
-
+
@@ -67146,7 +67407,7 @@
-
+
@@ -67154,7 +67415,7 @@
-
+
@@ -67683,7 +67944,7 @@
-
+
@@ -69780,7 +70041,7 @@
-
+
@@ -69845,7 +70106,7 @@
-
+
@@ -69920,7 +70181,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -69953,7 +70225,7 @@
-
+
@@ -70014,7 +70286,7 @@
-
+
@@ -70033,54 +70305,17 @@
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -70104,6 +70339,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70190,6 +70446,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70339,6 +70632,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -70354,6 +70658,7 @@
+
@@ -70449,7 +70754,9 @@
+
+
@@ -70458,10 +70765,11 @@
-
+
+
@@ -71005,7 +71313,7 @@
-
+
@@ -75595,6 +75903,14 @@
+
+
+
+
+
+
+
+
@@ -75604,6 +75920,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -78303,17 +78630,6 @@
-
-
-
-
-
-
-
-
-
-
-
@@ -78356,6 +78672,11 @@
+
+
+
+
+
@@ -78531,6 +78852,8 @@
+
+
@@ -78575,6 +78898,12 @@
+
+
+
+
+
+
@@ -79094,6 +79423,7 @@
+
@@ -81607,7 +81937,7 @@
-
+
@@ -81687,7 +82017,7 @@
-
+
@@ -81695,6 +82025,11 @@
+
+
+
+
+
@@ -81758,7 +82093,7 @@
-
+
@@ -83107,34 +83442,34 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -83149,8 +83484,8 @@
-
-
+
+
@@ -83159,12 +83494,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
@@ -85333,7 +85668,7 @@
-
+
@@ -85544,11 +85879,6 @@
-
-
-
-
-
@@ -85585,8 +85915,6 @@
-
-
@@ -85945,6 +86273,10 @@
+
+
+
+
@@ -89180,425 +89512,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -89675,7 +89591,7 @@
-
+
@@ -89721,30 +89637,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -89906,13 +89877,6 @@
-
-
-
-
-
-
-
@@ -89920,10 +89884,6 @@
-
-
-
-
@@ -90065,20 +90025,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -90714,6 +90660,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -90744,6 +90701,7 @@
+
@@ -90842,7 +90800,7 @@
-
+
@@ -91105,12 +91063,12 @@
-
+
-
+
@@ -91173,7 +91131,7 @@
-
+
@@ -91248,14 +91206,6 @@
-
-
-
-
-
-
-
-
@@ -91659,22 +91609,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -91713,8 +91647,10 @@
+
+
@@ -91815,34 +91751,34 @@
-
+
-
+
-
+
-
+
-
+
-
+
@@ -91890,24 +91826,32 @@
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
@@ -92058,7 +92002,7 @@
-
+
@@ -92257,6 +92201,7 @@
+
@@ -92269,6 +92214,9 @@
+
+
+
@@ -92303,6 +92251,13 @@
+
+
+
+
+
+
+
@@ -92916,6 +92871,226 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -95956,6 +96131,10 @@
+
+
+
+
@@ -95980,6 +96159,7 @@
+
@@ -96067,7 +96247,13 @@
+
+
+
+
+
+
@@ -96114,6 +96300,13 @@
+
+
+
+
+
+
+
@@ -96691,6 +96884,10 @@
+
+
+
+
@@ -96782,7 +96979,23 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96790,7 +97003,7 @@
-
+
@@ -96798,7 +97011,7 @@
-
+
@@ -96806,7 +97019,7 @@
-
+
@@ -96814,7 +97027,45 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -96828,7 +97079,7 @@
-
+
@@ -96836,7 +97087,7 @@
-
+
@@ -96847,7 +97098,7 @@
-
+
@@ -96858,23 +97109,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -96882,7 +97117,7 @@
-
+
@@ -96890,7 +97125,7 @@
-
+
@@ -96898,7 +97133,7 @@
-
+
@@ -96906,7 +97141,7 @@
-
+
@@ -96914,7 +97149,7 @@
-
+
@@ -96922,7 +97157,7 @@
-
+
@@ -96930,7 +97165,7 @@
-
+
@@ -97399,11 +97634,10 @@
-
-
+
@@ -97435,7 +97669,7 @@
-
+
@@ -97443,7 +97677,7 @@
-
+
@@ -97464,7 +97698,7 @@
-
+
@@ -98245,6 +98479,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -98831,6 +99114,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -98974,7 +99268,7 @@
-
+
@@ -99146,6 +99440,7 @@
+
diff --git a/android/abi_gki_aarch64_exynos b/android/abi_gki_aarch64_exynos
index 0b41a3f16cad..3e86b71f22cd 100644
--- a/android/abi_gki_aarch64_exynos
+++ b/android/abi_gki_aarch64_exynos
@@ -3,6 +3,7 @@
add_timer_on
add_uevent_var
add_wait_queue
+ add_wait_queue_exclusive
adjust_managed_page_count
alarm_cancel
alarm_init
@@ -34,6 +35,7 @@
_bcd2bin
bcmp
_bin2bcd
+ bin2hex
bio_crypt_should_process
__bitmap_clear
__bitmap_parse
@@ -56,6 +58,7 @@
bpf_trace_run6
bpf_trace_run7
bpf_trace_run9
+ __break_lease
build_skb
bus_find_device
bus_for_each_dev
@@ -78,9 +81,11 @@
__cfg80211_alloc_event_skb
__cfg80211_alloc_reply_skb
cfg80211_chandef_create
+ cfg80211_chandef_valid
cfg80211_ch_switch_notify
cfg80211_classify8021d
cfg80211_connect_done
+ cfg80211_conn_failed
cfg80211_del_sta_sinfo
cfg80211_disconnected
cfg80211_external_auth_request
@@ -93,6 +98,7 @@
cfg80211_new_sta
cfg80211_put_bss
cfg80211_ready_on_channel
+ cfg80211_ref_bss
cfg80211_remain_on_channel_expired
cfg80211_roamed
cfg80211_rx_mgmt
@@ -106,9 +112,13 @@
__class_create
class_create_file_ns
class_destroy
+ class_dev_iter_exit
+ class_dev_iter_init
+ class_dev_iter_next
class_find_device
__class_register
class_unregister
+ clear_inode
clear_page
clk_bulk_disable
clk_bulk_enable
@@ -206,14 +216,18 @@
csum_partial
csum_tcpudp_nofold
_ctype
+ d_add
dapm_pinctrl_event
dapm_regulator_event
datagram_poll
+ d_drop
+ deactivate_locked_super
default_llseek
default_wake_function
delayed_work_timer_fn
del_timer
del_timer_sync
+ dentry_open
destroy_workqueue
dev_alloc_name
_dev_crit
@@ -311,6 +325,7 @@
devm_request_threaded_irq
devm_reset_control_array_get
__devm_reset_control_get
+ devm_rtc_allocate_device
devm_rtc_device_register
devm_snd_dmaengine_pcm_register
devm_snd_soc_register_card
@@ -341,7 +356,10 @@
devres_release
dev_set_mac_address
dev_set_name
+ dev_vprintk_emit
_dev_warn
+ dget_parent
+ d_instantiate
disable_irq
disable_irq_nosync
disable_percpu_irq
@@ -394,6 +412,7 @@
dma_free_attrs
dma_get_slave_caps
dma_get_slave_channel
+ d_make_root
dmam_alloc_attrs
dma_mmap_attrs
dma_pool_alloc
@@ -414,6 +433,7 @@
down_trylock
down_write
d_path
+ dput
driver_find
driver_find_device
driver_register
@@ -465,10 +485,19 @@
freq_qos_add_request
freq_qos_remove_request
freq_qos_update_request
+ fs_kobj
+ fsstack_copy_attr_all
fwnode_property_present
fwnode_property_read_u16_array
generic_file_llseek
+ generic_file_mmap
+ generic_file_read_iter
+ generic_file_splice_read
generic_handle_irq
+ generic_read_dir
+ generic_shutdown_super
+ genl_family_attrbuf
+ genlmsg_multicast_allns
genlmsg_put
genl_register_family
genl_unregister_family
@@ -542,6 +571,7 @@
i2c_del_driver
i2c_for_each_dev
i2c_get_adapter
+ i2c_new_device
i2c_new_dummy
i2c_put_adapter
i2c_register_driver
@@ -564,13 +594,17 @@
ieee80211_channel_to_freq_khz
ieee80211_freq_khz_to_channel
ieee80211_get_channel_khz
+ iget5_locked
ignore_console_lock_warning
+ ihold
iio_channel_get
iio_channel_release
+ iio_convert_raw_to_processed
iio_device_alloc
iio_device_free
__iio_device_register
iio_device_unregister
+ iio_get_channel_type
iio_read_channel_processed
iio_read_channel_raw
in4_pton
@@ -582,6 +616,8 @@
init_timer_key
init_wait_entry
__init_waitqueue_head
+ inode_init_once
+ inode_init_owner
input_allocate_device
input_event
input_free_device
@@ -639,6 +675,7 @@
iounmap
__iowrite32_copy
ip_send_check
+ iput
__irq_alloc_descs
irq_create_mapping
__irq_domain_add
@@ -664,6 +701,7 @@
irq_to_desc
irq_work_queue
is_console_locked
+ iterate_dir
jiffies
jiffies_64
jiffies_64_to_clock_t
@@ -673,7 +711,9 @@
kasprintf
kernel_kobj
kernel_read
+ kernel_restart
kernel_write
+ kern_path
keyslot_manager_create_passthrough
keyslot_manager_private
__kfifo_alloc
@@ -752,10 +792,16 @@
llist_add_batch
__local_bh_enable_ip
__lock_buffer
+ lockref_get
+ lock_rename
lock_sock_nested
+ lookup_one_len
loops_per_jiffy
+ LZ4_decompress_safe
map_vm_area
+ match_int
match_string
+ match_token
media_create_intf_link
media_create_pad_link
media_device_register_entity
@@ -841,6 +887,7 @@
no_llseek
nonseekable_open
noop_llseek
+ notify_change
nr_cpu_ids
nr_irqs
nsecs_to_jiffies
@@ -916,6 +963,7 @@
of_usb_get_phy_mode
of_usb_host_tpl_support
oops_in_progress
+ pagecache_get_page
panic
panic_notifier_list
param_array_ops
@@ -929,6 +977,8 @@
param_ops_ullong
param_ops_ulong
param_set_uint
+ path_get
+ path_put
pci_alloc_irq_vectors_affinity
pci_bus_type
pci_d3cold_disable
@@ -1121,6 +1171,7 @@
register_chrdev_region
register_console
register_die_notifier
+ register_filesystem
register_inet6addr_notifier
register_inetaddr_notifier
register_netdev
@@ -1177,13 +1228,17 @@
reset_control_reset
return_address
rfkill_alloc
+ rfkill_blocked
rfkill_destroy
rfkill_register
rfkill_unregister
rps_needed
+ rtc_add_group
rtc_class_close
rtc_class_open
rtc_read_time
+ __rtc_register_device
+ rtc_set_time
rtc_time64_to_tm
rtc_tm_to_time64
rtc_update_irq
@@ -1211,6 +1266,7 @@
seq_printf
seq_puts
seq_read
+ set_anon_super
set_cpus_allowed_ptr
set_normalized_timespec64
set_page_dirty_lock
@@ -1218,6 +1274,7 @@
sg_alloc_table
sg_alloc_table_from_pages
sg_copy_to_buffer
+ sget
sg_free_table
sg_init_one
sg_init_table
@@ -1230,8 +1287,11 @@
__sg_page_iter_start
sg_pcopy_from_buffer
sg_pcopy_to_buffer
+ simple_getattr
simple_open
simple_read_from_buffer
+ simple_setattr
+ simple_statfs
simple_strtol
simple_strtoul
simple_write_to_buffer
@@ -1301,6 +1361,7 @@
snd_soc_dai_set_fmt
snd_soc_dai_set_sysclk
snd_soc_dai_set_tdm_slot
+ snd_soc_dai_set_tristate
snd_soc_dapm_add_routes
snd_soc_dapm_disable_pin
snd_soc_dapm_enable_pin
@@ -1369,6 +1430,8 @@
sock_no_shutdown
sock_no_socketpair
sock_queue_rcv_skb
+ __sock_recv_timestamp
+ __sock_recv_wifi_status
sock_register
sock_unregister
softnet_data
@@ -1412,11 +1475,13 @@
strncat
strncmp
strncpy
+ strndup_user
strnlen
strnstr
strpbrk
strrchr
strsep
+ strspn
strstr
submit_bh
subsys_system_register
@@ -1425,6 +1490,7 @@
__sync_dirty_buffer
sync_file_create
sync_file_get_fence
+ sync_filesystem
synchronize_irq
synchronize_rcu
syscon_regmap_lookup_by_phandle
@@ -1490,6 +1556,7 @@
__trace_puts
trace_raw_output_prep
trace_seq_printf
+ truncate_inode_pages
try_module_get
__tty_alloc_driver
tty_flip_buffer_push
@@ -1534,9 +1601,13 @@
ufshcd_system_resume
ufshcd_system_suspend
ufshcd_wb_ctrl
+ unlock_new_inode
+ unlock_page
+ unlock_rename
unmap_mapping_range
__unregister_chrdev
unregister_chrdev_region
+ unregister_filesystem
unregister_inet6addr_notifier
unregister_inetaddr_notifier
unregister_netdev
@@ -1642,6 +1713,7 @@
usb_unregister_notify
usb_wakeup_notification
__usecs_to_jiffies
+ user_path_at_empty
usleep_range
v4l2_ctrl_handler_free
v4l2_ctrl_handler_init_class
@@ -1692,9 +1764,20 @@
vb2_streamon
vb2_wait_for_all_buffers
vfree
+ vfs_create
+ vfs_fallocate
vfs_fsync
+ vfs_getattr
+ vfs_getxattr
+ vfs_link
+ vfs_listxattr
vfs_llseek
+ vfs_mkdir
+ vfs_rename
+ vfs_rmdir
+ vfs_setxattr
vfs_statx
+ vfs_unlink
video_devdata
video_device_alloc
video_device_release
@@ -1703,6 +1786,7 @@
video_unregister_device
vmalloc
vmalloc_to_page
+ vmalloc_to_pfn
vmalloc_user
vmap
vmemmap
@@ -1712,6 +1796,7 @@
vm_map_pages
vm_map_ram
vm_unmap_ram
+ vprintk_emit
vscnprintf
vsnprintf
vsprintf
@@ -1724,12 +1809,14 @@
wait_for_completion_timeout
__wait_on_buffer
__wake_up
+ __wake_up_locked_key
wake_up_process
wakeup_source_add
wakeup_source_create
wakeup_source_destroy
wakeup_source_register
wakeup_source_unregister
+ __wake_up_sync
__warn_printk
watchdog_init_timeout
watchdog_register_device
diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom
index 7f2f930d0be7..961b6796d8e7 100644
--- a/android/abi_gki_aarch64_qcom
+++ b/android/abi_gki_aarch64_qcom
@@ -872,6 +872,7 @@
find_next_zero_bit
find_snd_usb_substream
find_vma
+ find_vpid
finish_wait
firmware_request_nowarn
flow_keys_basic_dissector
@@ -1668,6 +1669,7 @@
phy_start
phy_stop
physvirt_offset
+ pid_task
pinconf_generic_dt_node_to_map
pinctrl_dev_get_drvdata
pinctrl_force_default
@@ -1979,6 +1981,7 @@
sched_clock
sched_setattr
sched_setscheduler
+ sched_setscheduler_nocheck
schedule
schedule_timeout
schedule_timeout_interruptible
diff --git a/android/abi_gki_aarch64_xiaomi b/android/abi_gki_aarch64_xiaomi
index 7b58413581e8..95acdab2fb70 100644
--- a/android/abi_gki_aarch64_xiaomi
+++ b/android/abi_gki_aarch64_xiaomi
@@ -16,6 +16,10 @@
regcache_drop_region
snd_soc_dapm_del_routes
+# required by tfa98xx_dlkm.ko
+ device_remove_bin_file
+ snd_pcm_hw_constraint_mask64
+
# required by q6_dlkm.ko
down_interruptible
__kfifo_alloc
diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig
index 66e71d75ea2c..4101cbdc7c8c 100644
--- a/arch/x86/configs/gki_defconfig
+++ b/arch/x86/configs/gki_defconfig
@@ -47,6 +47,7 @@ CONFIG_SLAB_FREELIST_HARDENED=y
CONFIG_SHUFFLE_PAGE_ALLOCATOR=y
CONFIG_PROFILING=y
CONFIG_SMP=y
+CONFIG_X86_X2APIC=y
CONFIG_HYPERVISOR_GUEST=y
CONFIG_PARAVIRT=y
CONFIG_NR_CPUS=32
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 7a141e148f3f..aa614bd4c622 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -230,7 +230,7 @@ static struct binder_transaction_log_entry *binder_transaction_log_add(
struct binder_work {
struct list_head entry;
- enum {
+ enum binder_work_type {
BINDER_WORK_TRANSACTION = 1,
BINDER_WORK_TRANSACTION_COMPLETE,
BINDER_WORK_RETURN_ERROR,
@@ -917,27 +917,6 @@ static struct binder_work *binder_dequeue_work_head_ilocked(
return w;
}
-/**
- * binder_dequeue_work_head() - Dequeues the item at head of list
- * @proc: binder_proc associated with list
- * @list: list to dequeue head
- *
- * Removes the head of the list if there are items on the list
- *
- * Return: pointer dequeued binder_work, NULL if list was empty
- */
-static struct binder_work *binder_dequeue_work_head(
- struct binder_proc *proc,
- struct list_head *list)
-{
- struct binder_work *w;
-
- binder_inner_proc_lock(proc);
- w = binder_dequeue_work_head_ilocked(list);
- binder_inner_proc_unlock(proc);
- return w;
-}
-
static void
binder_defer_work(struct binder_proc *proc, enum binder_deferred_state defer);
static void binder_free_thread(struct binder_thread *thread);
@@ -4769,13 +4748,17 @@ static void binder_release_work(struct binder_proc *proc,
struct list_head *list)
{
struct binder_work *w;
+ enum binder_work_type wtype;
while (1) {
- w = binder_dequeue_work_head(proc, list);
+ binder_inner_proc_lock(proc);
+ w = binder_dequeue_work_head_ilocked(list);
+ wtype = w ? w->type : 0;
+ binder_inner_proc_unlock(proc);
if (!w)
return;
- switch (w->type) {
+ switch (wtype) {
case BINDER_WORK_TRANSACTION: {
struct binder_transaction *t;
@@ -4809,9 +4792,11 @@ static void binder_release_work(struct binder_proc *proc,
kfree(death);
binder_stats_deleted(BINDER_STAT_DEATH);
} break;
+ case BINDER_WORK_NODE:
+ break;
default:
pr_err("unexpected work type, %d, not freed\n",
- w->type);
+ wtype);
break;
}
}
diff --git a/include/linux/module.h b/include/linux/module.h
index 996e81a51fbf..5246cbce5881 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -346,6 +346,11 @@ struct klp_modinfo {
};
#endif
+struct module_kabi_preserve_1 {
+ u64 using_gplonly_symbols:1;
+ u64 free:63;
+};
+
struct module {
enum module_state state;
@@ -515,7 +520,7 @@ struct module {
struct error_injection_entry *ei_funcs;
unsigned int num_ei_funcs;
#endif
- ANDROID_KABI_RESERVE(1);
+ ANDROID_KABI_USE(1, struct module_kabi_preserve_1 m1);
ANDROID_KABI_RESERVE(2);
ANDROID_KABI_RESERVE(3);
ANDROID_KABI_RESERVE(4);
@@ -573,34 +578,14 @@ struct module *find_module(const char *name);
struct symsearch {
const struct kernel_symbol *start, *stop;
const s32 *crcs;
- enum {
+ enum mod_license {
NOT_GPL_ONLY,
GPL_ONLY,
WILL_BE_GPL_ONLY,
- } licence;
+ } license;
bool unused;
};
-/*
- * Search for an exported symbol by name.
- *
- * Must be called with module_mutex held or preemption disabled.
- */
-const struct kernel_symbol *find_symbol(const char *name,
- struct module **owner,
- const s32 **crc,
- bool gplok,
- bool warn);
-
-/*
- * Walk the exported symbol table
- *
- * Must be called with module_mutex held or preemption disabled.
- */
-bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
- struct module *owner,
- void *data), void *data);
-
/* Returns 0 and fills in value, defined and namebuf, or -ERANGE if
symnum out of range. */
int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
@@ -648,7 +633,6 @@ static inline void __module_get(struct module *module)
#define symbol_put_addr(p) do { } while (0)
#endif /* CONFIG_MODULE_UNLOAD */
-int ref_module(struct module *a, struct module *b);
/* This is a #define so the string doesn't get put in every .o file */
#define module_name(mod) \
diff --git a/kernel/module.c b/kernel/module.c
index 3a7cf1a3a24f..f386b99a2245 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -419,7 +419,7 @@ static bool each_symbol_in_section(const struct symsearch *arr,
}
/* Returns true as soon as fn returns true, otherwise false. */
-bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
+static bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
struct module *owner,
void *data),
void *data)
@@ -481,7 +481,6 @@ bool each_symbol_section(bool (*fn)(const struct symsearch *arr,
}
return false;
}
-EXPORT_SYMBOL_GPL(each_symbol_section);
struct find_symbol_arg {
/* Input */
@@ -493,6 +492,7 @@ struct find_symbol_arg {
struct module *owner;
const s32 *crc;
const struct kernel_symbol *sym;
+ enum mod_license license;
};
static bool check_exported_symbol(const struct symsearch *syms,
@@ -502,9 +502,9 @@ static bool check_exported_symbol(const struct symsearch *syms,
struct find_symbol_arg *fsa = data;
if (!fsa->gplok) {
- if (syms->licence == GPL_ONLY)
+ if (syms->license == GPL_ONLY)
return false;
- if (syms->licence == WILL_BE_GPL_ONLY && fsa->warn) {
+ if (syms->license == WILL_BE_GPL_ONLY && fsa->warn) {
pr_warn("Symbol %s is being used by a non-GPL module, "
"which will not be allowed in the future\n",
fsa->name);
@@ -526,6 +526,7 @@ static bool check_exported_symbol(const struct symsearch *syms,
fsa->owner = owner;
fsa->crc = symversion(syms->crcs, symnum);
fsa->sym = &syms->start[symnum];
+ fsa->license = syms->license;
return true;
}
@@ -582,9 +583,10 @@ static bool find_exported_symbol_in_section(const struct symsearch *syms,
/* Find an exported symbol and return it, along with, (optional) crc and
* (optional) module which owns it. Needs preempt disabled or module_mutex. */
-const struct kernel_symbol *find_symbol(const char *name,
+static const struct kernel_symbol *find_symbol(const char *name,
struct module **owner,
const s32 **crc,
+ enum mod_license *license,
bool gplok,
bool warn)
{
@@ -599,13 +601,14 @@ const struct kernel_symbol *find_symbol(const char *name,
*owner = fsa.owner;
if (crc)
*crc = fsa.crc;
+ if (license)
+ *license = fsa.license;
return fsa.sym;
}
pr_debug("Failed to find symbol %s\n", name);
return NULL;
}
-EXPORT_SYMBOL_GPL(find_symbol);
/*
* Search for module by name: must hold module_mutex (or preempt disabled
@@ -866,7 +869,7 @@ static int add_module_usage(struct module *a, struct module *b)
}
/* Module a uses b: caller needs module_mutex() */
-int ref_module(struct module *a, struct module *b)
+static int ref_module(struct module *a, struct module *b)
{
int err;
@@ -885,7 +888,6 @@ int ref_module(struct module *a, struct module *b)
}
return 0;
}
-EXPORT_SYMBOL_GPL(ref_module);
/* Clear the unload stuff of the module. */
static void module_unload_free(struct module *mod)
@@ -1074,7 +1076,7 @@ void __symbol_put(const char *symbol)
struct module *owner;
preempt_disable();
- if (!find_symbol(symbol, &owner, NULL, true, false))
+ if (!find_symbol(symbol, &owner, NULL, NULL, true, false))
BUG();
module_put(owner);
preempt_enable();
@@ -1165,11 +1167,10 @@ static inline void module_unload_free(struct module *mod)
{
}
-int ref_module(struct module *a, struct module *b)
+static int ref_module(struct module *a, struct module *b)
{
return strong_try_module_get(b);
}
-EXPORT_SYMBOL_GPL(ref_module);
static inline int module_unload_init(struct module *mod)
{
@@ -1352,7 +1353,7 @@ static inline int check_modstruct_version(const struct load_info *info,
* locking is necessary -- use preempt_disable() to placate lockdep.
*/
preempt_disable();
- if (!find_symbol("module_layout", NULL, &crc, true, false)) {
+ if (!find_symbol("module_layout", NULL, &crc, NULL, true, false)) {
preempt_enable();
BUG();
}
@@ -1426,6 +1427,24 @@ static int verify_namespace_is_imported(const struct load_info *info,
return 0;
}
+static bool inherit_taint(struct module *mod, struct module *owner)
+{
+ if (!owner || !test_bit(TAINT_PROPRIETARY_MODULE, &owner->taints))
+ return true;
+
+ if (mod->m1.using_gplonly_symbols) {
+ pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n",
+ mod->name, owner->name);
+ return false;
+ }
+
+ if (!test_bit(TAINT_PROPRIETARY_MODULE, &mod->taints)) {
+ pr_warn("%s: module uses symbols from proprietary module %s, inheriting taint.\n",
+ mod->name, owner->name);
+ set_bit(TAINT_PROPRIETARY_MODULE, &mod->taints);
+ }
+ return true;
+}
/* Resolve a symbol for this module. I.e. if we find one, record usage. */
static const struct kernel_symbol *resolve_symbol(struct module *mod,
@@ -1436,6 +1455,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
struct module *owner;
const struct kernel_symbol *sym;
const s32 *crc;
+ enum mod_license license;
int err;
/*
@@ -1445,11 +1465,19 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod,
*/
sched_annotate_sleep();
mutex_lock(&module_mutex);
- sym = find_symbol(name, &owner, &crc,
+ sym = find_symbol(name, &owner, &crc, &license,
!(mod->taints & (1 << TAINT_PROPRIETARY_MODULE)), true);
if (!sym)
goto unlock;
+ if (license == GPL_ONLY)
+ mod->m1.using_gplonly_symbols = true;
+
+ if (!inherit_taint(mod, owner)) {
+ sym = NULL;
+ goto getname;
+ }
+
if (!check_version(info, name, mod, crc)) {
sym = ERR_PTR(-EINVAL);
goto getname;
@@ -2271,7 +2299,7 @@ void *__symbol_get(const char *symbol)
const struct kernel_symbol *sym;
preempt_disable();
- sym = find_symbol(symbol, &owner, NULL, true, true);
+ sym = find_symbol(symbol, &owner, NULL, NULL, true, true);
if (sym && strong_try_module_get(owner))
sym = NULL;
preempt_enable();
@@ -2306,7 +2334,7 @@ static int verify_exported_symbols(struct module *mod)
for (i = 0; i < ARRAY_SIZE(arr); i++) {
for (s = arr[i].sym; s < arr[i].sym + arr[i].num; s++) {
if (find_symbol(kernel_symbol_name(s), &owner, NULL,
- true, false)) {
+ NULL, true, false)) {
pr_err("%s: exports duplicate symbol %s"
" (owned by %s)\n",
mod->name, kernel_symbol_name(s),
@@ -4530,7 +4558,6 @@ struct module *__module_address(unsigned long addr)
}
return mod;
}
-EXPORT_SYMBOL_GPL(__module_address);
/*
* is_module_text_address - is this address inside module code?
@@ -4569,7 +4596,6 @@ struct module *__module_text_address(unsigned long addr)
}
return mod;
}
-EXPORT_SYMBOL_GPL(__module_text_address);
/* Don't grab lock, we're oopsing. */
void print_modules(void)