diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index a284b5f8c010..6589da9a79fc 100755 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -264,6 +264,7 @@ + @@ -280,6 +281,7 @@ + @@ -362,9 +364,12 @@ + + + @@ -1383,6 +1388,7 @@ + @@ -1585,6 +1591,7 @@ + @@ -2386,6 +2393,7 @@ + @@ -2593,6 +2601,7 @@ + @@ -2659,14 +2668,19 @@ + + + + + @@ -2879,6 +2893,7 @@ + @@ -2895,6 +2910,7 @@ + @@ -2962,6 +2978,7 @@ + @@ -3676,6 +3693,7 @@ + @@ -4523,6 +4541,7 @@ + @@ -4541,6 +4560,7 @@ + @@ -4637,6 +4657,7 @@ + @@ -4689,11 +4710,13 @@ + + @@ -4702,7 +4725,18 @@ + + + + + + + + + + + @@ -4878,6 +4912,8 @@ + + @@ -4898,6 +4934,7 @@ + @@ -5555,6 +5592,7 @@ + @@ -5660,6 +5698,7 @@ + @@ -5677,6 +5716,7 @@ + @@ -5767,9 +5807,12 @@ + + + @@ -6137,6 +6180,7 @@ + @@ -6698,15 +6742,15 @@ - + - + - + - + @@ -6727,12 +6771,12 @@ - + - + - + @@ -8280,6 +8324,7 @@ + @@ -9340,12 +9385,12 @@ - + - + - + @@ -11074,12 +11119,12 @@ - + - + - + @@ -11399,7 +11444,7 @@ - + @@ -15718,6 +15763,7 @@ + @@ -17198,6 +17244,7 @@ + @@ -17393,6 +17440,7 @@ + @@ -17581,6 +17629,7 @@ + @@ -18682,6 +18731,23 @@ + + + + + + + + + + + + + + + + + @@ -21342,6 +21408,11 @@ + + + + + @@ -22616,6 +22687,20 @@ + + + + + + + + + + + + + + @@ -22829,69 +22914,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24186,66 +24271,66 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24260,12 +24345,12 @@ - + - + - + @@ -24745,58 +24830,58 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25353,87 +25438,87 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26252,6 +26337,9 @@ + + + @@ -26377,12 +26465,12 @@ - + - + - + @@ -26860,12 +26948,12 @@ - + - + - + @@ -28333,7 +28421,7 @@ - + @@ -28358,7 +28446,7 @@ - + @@ -31629,48 +31717,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -31954,7 +32042,7 @@ - + @@ -32301,6 +32389,12 @@ + + + + + + @@ -35114,7 +35208,7 @@ - + @@ -35350,12 +35444,12 @@ - + - + - + @@ -35603,6 +35697,7 @@ + @@ -37608,7 +37703,7 @@ - + @@ -38564,15 +38659,15 @@ - + - + - + - + @@ -39549,6 +39644,7 @@ + @@ -41611,351 +41707,351 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -45041,21 +45137,21 @@ - + - + - + - + - + - + @@ -48705,12 +48801,12 @@ - + - + - + @@ -48890,12 +48986,12 @@ - + - + - + @@ -49809,27 +49905,27 @@ - + - + - + - + - + - + - + - + @@ -50084,21 +50180,21 @@ - + - + - + - + - + - + @@ -50151,6 +50247,10 @@ + + + + @@ -50506,210 +50606,210 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -51989,7 +52089,7 @@ - + @@ -52229,6 +52329,20 @@ + + + + + + + + + + + + + + @@ -55585,96 +55699,96 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -56065,12 +56179,12 @@ - + - + - + @@ -60968,6 +61082,10 @@ + + + + @@ -61734,12 +61852,12 @@ - + - + - + @@ -65057,6 +65175,7 @@ + @@ -66559,27 +66678,27 @@ - + - + - + - + - + - + - + - + @@ -66809,6 +66928,7 @@ + @@ -67282,24 +67402,24 @@ - + - + - + - + - + - + - + @@ -67832,6 +67952,7 @@ + @@ -68584,84 +68705,84 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -69045,12 +69166,12 @@ - + - + - + @@ -71142,6 +71263,7 @@ + @@ -71613,7 +71735,7 @@ - + @@ -71788,6 +71910,7 @@ + @@ -73053,6 +73176,7 @@ + @@ -73679,12 +73803,12 @@ - + - + - + @@ -75064,18 +75188,18 @@ - + - + - + - + - + @@ -75114,9 +75238,9 @@ - + - + @@ -89371,216 +89495,216 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -91053,108 +91177,108 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -93541,7 +93665,7 @@ - + @@ -97091,60 +97215,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -97913,6 +98037,7 @@ + @@ -98734,18 +98859,18 @@ - + - + - + - + - + @@ -98945,6 +99070,7 @@ + @@ -102691,6 +102817,14 @@ + + + + + + + + @@ -106743,90 +106877,90 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -107396,7 +107530,7 @@ - + @@ -111203,24 +111337,24 @@ - + - + - + - + - + - + - + @@ -113204,49 +113338,49 @@ - - - - + + + + - - - + + + - - - - - - - + + + + + + + - - - - - - - + + + + + + + - - - - + + + + - - - - + + + + @@ -113262,9 +113396,9 @@ - - - + + + @@ -113915,12 +114049,12 @@ - - + + - - + + @@ -113938,8 +114072,8 @@ - - + + @@ -113990,7 +114124,7 @@ - + @@ -114100,8 +114234,8 @@ - - + + @@ -114445,16 +114579,24 @@ - + + + + + + + - - - - + + + + + + @@ -114533,10 +114675,10 @@ - - - - + + + + @@ -114546,11 +114688,11 @@ - - - - - + + + + + @@ -114569,6 +114711,11 @@ + + + + + @@ -114577,10 +114724,10 @@ - - - - + + + + @@ -114590,11 +114737,11 @@ - - - - - + + + + + @@ -114629,10 +114776,10 @@ - - - - + + + + @@ -114645,14 +114792,14 @@ - - - + + + - - - + + + @@ -114719,9 +114866,9 @@ - - - + + + @@ -114872,10 +115019,10 @@ - - - - + + + + @@ -114999,12 +115146,12 @@ - - - - - - + + + + + + @@ -115035,11 +115182,11 @@ - - - - - + + + + + @@ -115110,6 +115257,19 @@ + + + + + + + + + + + + + @@ -115130,6 +115290,16 @@ + + + + + + + + + + @@ -115410,15 +115580,15 @@ - - - - + + + + - - - + + + @@ -115707,10 +115877,10 @@ - - - - + + + + @@ -115788,17 +115958,17 @@ - - - - - + + + + + - - - - + + + + @@ -115891,11 +116061,11 @@ - - - - - + + + + + @@ -116532,10 +116702,11 @@ - - + + + @@ -116547,27 +116718,28 @@ - + - + + - + - + - + - - + + @@ -116577,7 +116749,7 @@ - + @@ -116602,7 +116774,7 @@ - + @@ -116628,12 +116800,12 @@ - + - + @@ -116643,9 +116815,12 @@ + + + @@ -116680,7 +116855,7 @@ - + @@ -116690,8 +116865,8 @@ - - + + @@ -116712,7 +116887,7 @@ - + @@ -116740,7 +116915,7 @@ - + @@ -116762,9 +116937,9 @@ - + - + @@ -116781,7 +116956,7 @@ - + @@ -117105,45 +117280,45 @@ - - - + + + - - - - - - - + - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + @@ -117302,8 +117477,8 @@ - - + + @@ -117457,13 +117632,13 @@ - - - - - - - + + + + + + + @@ -117613,8 +117788,8 @@ - - + + @@ -117945,8 +118120,8 @@ - - + + @@ -117963,9 +118138,9 @@ - - - + + + @@ -118003,8 +118178,8 @@ - - + + @@ -118020,9 +118195,9 @@ - - - + + + @@ -118034,8 +118209,8 @@ - - + + @@ -118051,15 +118226,15 @@ - - + + - - - - - + + + + + @@ -118081,18 +118256,18 @@ - - + + - - - + + + - - - + + + @@ -118119,18 +118294,18 @@ - - - + + + - - + + - - - + + + @@ -118155,9 +118330,9 @@ - - - + + + @@ -118166,10 +118341,10 @@ - - - - + + + + @@ -118351,8 +118526,8 @@ - - + + @@ -118372,10 +118547,10 @@ - - - - + + + + @@ -118458,10 +118633,10 @@ - - - - + + + + @@ -118478,7 +118653,7 @@ - + @@ -118729,14 +118904,14 @@ - - - + + + - - - + + + @@ -118962,26 +119137,26 @@ - - - + + + - - - - - + + + + + - - - + + + - - - + + + @@ -119538,16 +119713,16 @@ - - + + - + - + @@ -119575,10 +119750,10 @@ - + - + @@ -119771,7 +119946,7 @@ - + @@ -119829,10 +120004,10 @@ - + - + @@ -120313,14 +120488,14 @@ - - - + + + - - - + + + @@ -120345,8 +120520,8 @@ - - + + @@ -120603,11 +120778,11 @@ - - - - - + + + + + @@ -120650,16 +120825,16 @@ - - - - + + + + - - - - + + + + @@ -120683,20 +120858,20 @@ - - + + - - - - + + + + - - - + + + @@ -120723,9 +120898,9 @@ - - - + + + @@ -121051,41 +121226,45 @@ - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - - - + + + + + + + @@ -121096,11 +121275,11 @@ - - - - - + + + + + @@ -121205,8 +121384,8 @@ - - + + @@ -121215,9 +121394,9 @@ - - - + + + @@ -121228,54 +121407,54 @@ - - - - - - + + + + + + - - - + + + - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - - - + + + + - - - - + + + + @@ -121315,8 +121494,8 @@ - - + + @@ -121325,28 +121504,28 @@ - - + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -121392,42 +121571,42 @@ - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -121440,34 +121619,34 @@ - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - + + + + + - - + + @@ -121589,19 +121768,19 @@ - - - + + + - - - + + + - - - + + + @@ -121906,14 +122085,14 @@ - - - - - - - - + + + + + + + + @@ -122010,17 +122189,17 @@ - - - - + + + + - - - - - + + + + + @@ -122169,17 +122348,17 @@ - - - + + + - - - - - - + + + + + + @@ -122211,6 +122390,12 @@ + + + + + + @@ -122300,16 +122485,16 @@ - - - - + + + + - - - - + + + + @@ -122375,105 +122560,105 @@ - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - + + - - - + + + - - + + - - - + + + - - - + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - + + - - + + - - - + + + @@ -125373,10 +125558,10 @@ - - - - + + + + @@ -125476,10 +125661,10 @@ - - - - + + + + @@ -125606,16 +125791,16 @@ - - + + - - - - - - + + + + + + @@ -125922,10 +126107,10 @@ - - - - + + + + @@ -126006,8 +126191,8 @@ - - + + @@ -126427,6 +126612,10 @@ + + + + @@ -126470,8 +126659,8 @@ - - + + @@ -126508,12 +126697,12 @@ - - + + - - + + @@ -126575,12 +126764,12 @@ - - + + - - + + @@ -127457,6 +127646,11 @@ + + + + + @@ -127788,10 +127982,18 @@ + + + + + + + + @@ -127805,6 +128007,12 @@ + + + + + + @@ -127827,6 +128035,19 @@ + + + + + + + + + + + + + @@ -127837,13 +128058,13 @@ - - - - - - - + + + + + + + @@ -127897,8 +128118,8 @@ - - + + @@ -127934,8 +128155,8 @@ - - + + @@ -128121,8 +128342,8 @@ - - + + @@ -128779,8 +129000,8 @@ - - + + @@ -128907,7 +129128,7 @@ - + @@ -128952,11 +129173,16 @@ - - - + + + + + + + + @@ -129040,6 +129266,12 @@ + + + + + + @@ -129218,7 +129450,7 @@ - + @@ -129418,6 +129650,10 @@ + + + + @@ -129640,9 +129876,9 @@ - - - + + + @@ -129952,8 +130188,8 @@ - - + + @@ -129984,7 +130220,7 @@ - + @@ -130093,18 +130329,18 @@ - - - - - - - - + + + + + + + + - - + + @@ -130635,8 +130871,8 @@ - - + + @@ -130741,9 +130977,9 @@ - - - + + + @@ -130751,22 +130987,22 @@ - - + + - - - + + + - - - + + + - - + + @@ -130774,32 +131010,32 @@ - - - - + + + + - - - + + + - - - - - + + + + + - + - - - + + + @@ -130807,88 +131043,88 @@ - - + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - + + - - - + + + - - + + - - - - + + + + - - - + + + - - - + + + @@ -130908,31 +131144,31 @@ - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + @@ -130949,13 +131185,13 @@ - - - + + + - - + + @@ -132143,16 +132379,16 @@ - - - - + + + + - - - - + + + + @@ -132165,20 +132401,20 @@ - - + + - - - - - - + + + + + + @@ -132229,12 +132465,12 @@ - - + + - - + + @@ -132258,15 +132494,15 @@ - - + + - - - - - + + + + + @@ -132350,8 +132586,8 @@ - - + + @@ -132414,14 +132650,14 @@ - - - + + + - - - + + + @@ -132444,13 +132680,13 @@ - - - - + + + + - + @@ -132461,8 +132697,8 @@ - - + + @@ -132751,50 +132987,50 @@ - - + + - - - - - - + + + + + + - - + + - - + + - - - + + + - - - - - + + + + + - - - - + + + + - - + + - - + + @@ -132804,20 +133040,20 @@ - - - - + + + + - - - - + + + + - - + + @@ -132826,19 +133062,19 @@ - - - - - - - - - + + + + + + + + + - - + + @@ -132889,14 +133125,14 @@ - - - + + + - - - + + + @@ -132909,18 +133145,18 @@ - - + + - - - + + + - - - + + + @@ -132936,8 +133172,8 @@ - - + + @@ -132950,17 +133186,17 @@ - - - + + + - - + + @@ -132994,6 +133230,14 @@ + + + + + + + + @@ -133097,16 +133341,16 @@ - - + + - - + + @@ -133314,10 +133558,10 @@ - - - - + + + + @@ -133334,8 +133578,8 @@ - - + + @@ -133411,6 +133655,7 @@ + @@ -133785,10 +134030,10 @@ - + - + @@ -133936,13 +134181,13 @@ - - - + + + - - + + @@ -134015,8 +134260,8 @@ - - + + @@ -134240,10 +134485,10 @@ - + - + @@ -134292,9 +134537,9 @@ - - - + + + @@ -134460,12 +134705,12 @@ - - + + - - + + @@ -134480,12 +134725,12 @@ - - + + - - + + @@ -134911,8 +135156,8 @@ - - + + @@ -134920,8 +135165,8 @@ - - + + @@ -134938,8 +135183,8 @@ - - + + @@ -134978,34 +135223,34 @@ - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - - + + + + + + + + @@ -135046,8 +135291,8 @@ - - + + @@ -135202,7 +135447,7 @@ - + @@ -135282,30 +135527,30 @@ - - + + - - - + + + - - - + + + - - - - - - + + + + + + - - + + @@ -135347,8 +135592,8 @@ - - + + @@ -135376,52 +135621,52 @@ - - + + - - + + - - + + - - - - - - - - - + + + + + + + + + - - - - + + + + - - + + - - - + + + - - - + + + - - + + @@ -135429,9 +135674,9 @@ - - - + + + @@ -135629,43 +135874,43 @@ - - + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - + + @@ -135703,7 +135948,7 @@ - + @@ -135770,8 +136015,8 @@ - - + + @@ -135805,8 +136050,8 @@ - - + + @@ -135868,16 +136113,16 @@ - - + + - - + + - - + + @@ -135893,8 +136138,8 @@ - - + + @@ -136333,10 +136578,10 @@ - - - - + + + + @@ -136346,15 +136591,15 @@ - - - + + + - - - - + + + + @@ -136481,9 +136726,9 @@ - - - + + + @@ -136687,10 +136932,10 @@ - - - - + + + + @@ -136905,10 +137150,10 @@ - - - - + + + + @@ -136963,9 +137208,9 @@ - - - + + + @@ -137303,6 +137548,13 @@ + + + + + + + @@ -137406,6 +137658,13 @@ + + + + + + + @@ -137714,71 +137973,71 @@ - - - - + + + + - - - - + + + + - + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - + + + @@ -137804,48 +138063,48 @@ - - - + + + - - - - + + + + - - + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + @@ -137857,9 +138116,9 @@ - - - + + + @@ -137897,9 +138156,9 @@ - - - + + + @@ -137939,6 +138198,12 @@ + + + + + + @@ -137954,61 +138219,61 @@ - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + + - - + + @@ -138053,11 +138318,11 @@ - - - - - + + + + + @@ -138108,8 +138373,8 @@ - - + + @@ -138141,11 +138406,11 @@ - - - - - + + + + + @@ -138156,60 +138421,60 @@ - - + + - - - - - + + + + + - - + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - + + + - - - + + + @@ -138217,6 +138482,12 @@ + + + + + + @@ -138237,10 +138508,15 @@ - - + + + + + + + @@ -138280,10 +138556,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138644,8 +138976,8 @@ - - + + @@ -138680,7 +139012,7 @@ - + @@ -138689,10 +139021,10 @@ - + - + @@ -138875,7 +139207,7 @@ - + @@ -138886,8 +139218,8 @@ - - + + @@ -139154,6 +139486,20 @@ + + + + + + + + + + + + + + @@ -139262,6 +139608,12 @@ + + + + + + @@ -139396,15 +139748,15 @@ - - - - + + + + - - - + + + @@ -139554,8 +139906,8 @@ - - + + @@ -139974,9 +140326,9 @@ - - - + + + @@ -139994,8 +140346,8 @@ - - + + @@ -140025,9 +140377,9 @@ - - - + + + @@ -140153,20 +140505,20 @@ - - + + - - + + - - + + - - + + @@ -140265,21 +140617,21 @@ - - + + - - + + - - - + + + @@ -140290,12 +140642,12 @@ - - + + - - + + @@ -142117,10 +142469,10 @@ - - - - + + + + @@ -142138,8 +142490,8 @@ - - + + @@ -142320,106 +142672,106 @@ - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - - - - - - - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -142542,43 +142894,43 @@ - - - - - - - - - - - + + + + + + + + + + + - - + + - - - + + + - - - - - - - - - - - + + + + + + + + + + + - - + + @@ -142601,13 +142953,13 @@ - - - + + + - - + + @@ -142624,6 +142976,12 @@ + + + + + + @@ -142687,8 +143045,8 @@ - - + + @@ -142909,12 +143267,12 @@ - - + + - - + + diff --git a/android/abi_gki_aarch64_imx b/android/abi_gki_aarch64_imx index 13ac690aa640..d9b45b8fc993 100644 --- a/android/abi_gki_aarch64_imx +++ b/android/abi_gki_aarch64_imx @@ -18,6 +18,8 @@ atomic_notifier_chain_register atomic_notifier_chain_unregister bcmp + bdput + __bitmap_and bpf_trace_run1 bpf_trace_run2 bpf_trace_run3 @@ -66,6 +68,7 @@ clk_set_rate clk_unprepare complete + complete_all completion_done component_add component_bind_all @@ -90,6 +93,11 @@ __cpu_online_mask __cpu_possible_mask crc32_le + crypto_destroy_tfm + crypto_register_alg + crypto_register_scomp + crypto_unregister_alg + crypto_unregister_scomp _ctype debugfs_create_dir debugfs_create_file @@ -130,6 +138,8 @@ devm_clk_bulk_get devm_clk_get devm_clk_get_optional + __devm_drm_dev_alloc + devm_drm_panel_bridge_add devm_extcon_dev_allocate devm_extcon_dev_register devm_free_irq @@ -139,6 +149,7 @@ devm_gpiod_get_index devm_gpiod_get_optional devm_gpio_request_one + devm_input_allocate_device devm_ioremap devm_ioremap_resource devm_kasprintf @@ -166,20 +177,26 @@ devm_spi_register_controller devm_thermal_zone_of_sensor_register devm_usb_get_phy_by_phandle + devm_watchdog_register_device dev_pm_domain_attach_by_id dev_pm_domain_attach_by_name dev_pm_domain_detach dev_pm_set_wake_irq + devres_add + devres_alloc_node + devres_free dev_set_name _dev_warn disable_irq disable_irq_nosync dma_alloc_attrs + dma_async_device_register dma_async_device_unregister dma_async_tx_descriptor_init dma_buf_attach dma_buf_detach dma_buf_export + dma_buf_fd dma_buf_get dma_buf_map_attachment dma_buf_put @@ -209,8 +226,11 @@ dma_sync_single_for_device dma_unmap_page_attrs dma_unmap_sg_attrs + do_SAK down_interruptible + down_read down_trylock + down_write driver_unregister drm_add_edid_modes drm_atomic_get_crtc_state @@ -230,17 +250,22 @@ drm_atomic_helper_connector_duplicate_state drm_atomic_helper_connector_reset __drm_atomic_helper_crtc_destroy_state + drm_atomic_helper_crtc_destroy_state __drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_crtc_duplicate_state + drm_atomic_helper_crtc_reset drm_atomic_helper_disable_plane drm_atomic_helper_page_flip drm_atomic_helper_plane_destroy_state drm_atomic_helper_plane_duplicate_state drm_atomic_helper_plane_reset drm_atomic_helper_set_config + drm_atomic_helper_shutdown drm_atomic_helper_update_plane drm_atomic_helper_wait_for_vblanks drm_bridge_add drm_bridge_attach + drm_bridge_connector_init drm_bridge_hpd_notify drm_bridge_remove drm_compat_ioctl @@ -294,6 +319,9 @@ drm_helper_hpd_irq_event drm_helper_probe_single_connector_modes drm_ioctl + drm_irq_install + drm_irq_uninstall + drm_kms_helper_hotplug_event drm_kms_helper_poll_fini drm_kms_helper_poll_init drm_match_cea_mode @@ -320,6 +348,7 @@ drm_panel_add drm_panel_disable drm_panel_init + drm_panel_of_backlight drm_panel_remove drm_panel_unprepare drm_plane_cleanup @@ -338,6 +367,7 @@ eth_validate_addr event_triggers_call extcon_set_state_sync + failure_tracking find_next_bit finish_wait flush_work @@ -357,12 +387,20 @@ gcd generic_handle_irq __genphy_config_aneg + genphy_read_abilities + genphy_read_mmd_unsupported + genphy_read_status + genphy_resume genphy_soft_reset + genphy_suspend + genphy_write_mmd_unsupported gen_pool_free_owner get_cpu_device get_device get_random_bytes gic_nonsecure_priorities + gpiochip_generic_free + gpiochip_generic_request gpiochip_get_data gpiod_direction_output gpiod_direction_output_raw @@ -377,6 +415,7 @@ gpio_request gpio_to_desc handle_level_irq + handle_sysrq hdmi_audio_infoframe_init hdmi_audio_infoframe_pack hdmi_avi_infoframe_pack @@ -385,8 +424,12 @@ i2c_add_adapter i2c_del_adapter i2c_del_driver + i2c_generic_scl_recovery i2c_new_dummy_device + i2c_put_adapter + i2c_recover_bus i2c_register_driver + i2c_smbus_read_byte_data i2c_transfer i2c_transfer_buffer_flags i2c_unregister_device @@ -398,27 +441,39 @@ idr_find idr_for_each idr_get_next + idr_preload idr_remove init_net __init_swait_queue_head init_timer_key init_wait_entry __init_waitqueue_head + input_allocate_device input_event + input_mt_init_slots + input_mt_report_slot_state input_register_device + input_set_abs_params input_set_capability + input_unregister_device iomem_resource __ioremap iounmap + irq_domain_add_legacy irq_domain_remove + irq_domain_simple_ops irq_find_mapping + irq_get_irq_data irq_modify_status irq_of_parse_and_map irq_set_chained_handler_and_data + irq_set_chip_and_handler_name + irq_set_chip_data irq_set_irq_wake is_vmalloc_addr jiffies jiffies_to_msecs + jiffies_to_usecs kasan_flag_enabled kasprintf kfree @@ -428,22 +483,37 @@ __kmalloc kmalloc_caches kmalloc_order_trace + kmem_cache_alloc kmem_cache_alloc_trace + kmem_cache_create + kmem_cache_destroy + kmem_cache_free kmemdup + kobject_create_and_add kobject_put kobject_uevent_env + kstrdup + kstrtoint + kstrtou16 + kstrtouint + kstrtoull kthread_create_on_node + kthread_should_stop + kthread_stop ktime_get ktime_get_mono_fast_ns ktime_get_real_ts64 ktime_get_with_offset + kvfree kvfree_call_rcu + kvmalloc_node __list_add_valid __list_del_entry_valid __local_bh_enable_ip __log_post_read_mmio __log_read_mmio __log_write_mmio + lzo1x_decompress_safe mbox_free_channel mbox_request_channel_byname mbox_send_message @@ -466,6 +536,10 @@ memstart_addr mipi_dsi_attach mipi_dsi_create_packet + mipi_dsi_dcs_enter_sleep_mode + mipi_dsi_dcs_exit_sleep_mode + mipi_dsi_dcs_set_display_off + mipi_dsi_dcs_set_display_on mipi_dsi_detach mipi_dsi_device_register_full mipi_dsi_device_unregister @@ -560,12 +634,16 @@ of_property_count_elems_of_size of_property_match_string of_property_read_string + of_property_read_string_helper of_property_read_u32_index of_property_read_variable_u32_array + of_pwm_xlate_with_flags of_reserved_mem_lookup of_reset_control_array_get of_thermal_get_trip_points of_usb_get_phy_mode + oops_in_progress + __page_pinner_migration_failed param_array_ops param_ops_bool param_ops_charp @@ -583,9 +661,13 @@ phy_drivers_unregister phy_exit phy_init + phy_init_hw phy_modify phy_power_off phy_power_on + phy_read_mmd + phy_write_mmd + pinctrl_dev_get_drvdata pinctrl_lookup_state pinctrl_pm_select_default_state pinctrl_pm_select_sleep_state @@ -608,8 +690,10 @@ pm_genpd_init pm_genpd_remove __pm_relax + pm_runtime_allow __pm_runtime_disable pm_runtime_enable + pm_runtime_forbid pm_runtime_force_resume pm_runtime_force_suspend __pm_runtime_idle @@ -629,7 +713,10 @@ pskb_expand_head __pskb_pull_tail put_device + __put_page __put_task_struct + pwmchip_add + pwmchip_remove queue_delayed_work_on queue_work_on ___ratelimit @@ -637,6 +724,7 @@ _raw_spin_lock_bh _raw_spin_lock_irq _raw_spin_lock_irqsave + _raw_spin_trylock _raw_spin_unlock _raw_spin_unlock_bh _raw_spin_unlock_irq @@ -657,6 +745,7 @@ register_netdev register_netdevice register_netdevice_notifier + register_reboot_notifier __register_rpmsg_driver register_virtio_driver regmap_attach_dev @@ -681,13 +770,16 @@ release_firmware __release_region remap_pfn_range + remove_proc_entry remove_wait_queue request_firmware request_firmware_nowait + __request_module __request_region request_threaded_irq reset_control_assert reset_control_deassert + round_jiffies_relative rpmsg_send rpmsg_sendto rproc_add @@ -702,11 +794,16 @@ rproc_free rproc_mem_entry_init rproc_vq_interrupt + rtc_time64_to_tm + rtc_tm_to_time64 + rtc_update_irq rtnl_is_locked rtnl_lock rtnl_unlock schedule schedule_timeout + scmi_driver_register + scmi_driver_unregister scnprintf seq_lseek seq_printf @@ -720,6 +817,7 @@ sg_next __sg_page_iter_next __sg_page_iter_start + simple_strtoul single_open single_release skb_copy_bits @@ -741,6 +839,7 @@ snd_pcm_hw_constraint_integer snd_pcm_hw_constraint_list snd_pcm_hw_constraint_step + snd_pcm_hw_rule_add snd_pcm_period_elapsed snd_soc_add_component_controls snd_soc_card_jack_new @@ -758,6 +857,7 @@ snd_soc_dapm_put_volsw snd_soc_dpcm_get_substream snd_soc_get_enum_double + snd_soc_get_pcm_runtime snd_soc_get_volsw snd_soc_info_enum_double snd_soc_info_volsw @@ -772,7 +872,10 @@ snd_soc_set_runtime_hwparams snprintf soc_device_match + sort __spi_alloc_controller + spi_mem_default_supports_op + __spi_register_driver sprintf sscanf __stack_chk_fail @@ -798,9 +901,12 @@ syscon_regmap_lookup_by_compatible syscon_regmap_lookup_by_phandle sysfs_create_file_ns + sysfs_create_files sysfs_create_group sysfs_remove_file_ns sysfs_remove_group + sysrq_mask + system_freezable_wq system_wq tasklet_init tasklet_kill @@ -820,6 +926,24 @@ trace_raw_output_prep trace_seq_printf try_module_get + tty_flip_buffer_push + __tty_insert_flip_char + tty_insert_flip_string_fixed_flag + uart_add_one_port + uart_console_device + uart_console_write + uart_get_baud_rate + uart_get_rs485_mode + uart_parse_options + uart_register_driver + uart_remove_one_port + uart_resume_port + uart_set_options + uart_suspend_port + uart_try_toggle_sysrq + uart_unregister_driver + uart_update_timeout + uart_write_wakeup __udelay __unregister_chrdev unregister_chrdev_region @@ -831,6 +955,10 @@ unregister_rpmsg_driver unregister_virtio_driver up + up_read + up_write + usb_add_phy_dev + usb_remove_phy usleep_range v4l2_async_notifier_add_fwnode_subdev v4l2_async_notifier_add_subdev @@ -905,6 +1033,11 @@ vb2_reqbufs vb2_streamoff vb2_streamon + vchan_dma_desc_free_list + vchan_find_desc + vchan_init + vchan_tx_desc_free + vchan_tx_submit vfree video_devdata video_device_alloc @@ -925,18 +1058,19 @@ vmap vsnprintf vunmap + wait_for_completion_interruptible wait_for_completion_interruptible_timeout wait_for_completion_timeout __wake_up wake_up_process __warn_printk + watchdog_init_timeout # required by adv7511.ko cec_s_phys_addr cec_s_phys_addr_from_edid cec_transmit_done_ts drm_get_connector_status_name - drm_kms_helper_hotplug_event hdmi_avi_infoframe_init i2c_new_ancillary_device regmap_register_patch @@ -948,16 +1082,11 @@ genphy_read_lpa genphy_update_link mdio_device_reset - phy_init_hw phy_modify_changed - phy_read_mmd phy_resolve_aneg_pause - phy_write_mmd # required by busfreq-imx8mq.ko - jiffies_to_usecs register_pm_notifier - register_reboot_notifier # required by cdns_mhdp_drmcore.ko drm_connector_attach_content_protection_property @@ -1079,8 +1208,8 @@ pcim_enable_device pci_try_set_mwi -# required by clk-blk-ctrl.ko - pm_runtime_forbid +# required by clk-imx8ulp.ko + devm_of_clk_add_hw_provider # required by cma_heap.ko cma_alloc @@ -1148,7 +1277,6 @@ drm_scdc_set_high_tmds_clock_ratio drm_scdc_set_scrambling drm_scdc_write - i2c_put_adapter of_get_i2c_adapter_by_node # required by dw_hdmi-imx.ko @@ -1201,8 +1329,9 @@ tso_count_descs tso_start -# required by fsl-imx-ldb.ko - devm_drm_panel_bridge_add +# required by fsl-edma-v3.ko + dma_get_slave_channel + of_dma_controller_free # required by fsl_imx8_ddr_perf.ko bitmap_print_to_pagebuf @@ -1213,12 +1342,18 @@ perf_pmu_register perf_pmu_unregister +# required by fsl_lpuart.ko + add_timer + console_suspend_enabled + tty_kref_put + tty_port_tty_get + tty_termios_baud_rate + # required by galcore.ko anon_inode_getfd cache_line_size dev_pm_opp_add dev_pm_opp_remove - dma_buf_fd dma_fence_array_ops dma_fence_context_alloc dma_fence_default_wait @@ -1228,22 +1363,18 @@ dma_fence_signal_locked dma_fence_wait_timeout down - down_read - down_write driver_create_file driver_remove_file drm_gem_handle_create drm_gem_object_lookup drm_gem_object_release drm_gem_private_object_init - failure_tracking fd_install find_vma find_vpid get_unused_fd_flags get_user_pages hrtimer_resolution - idr_preload iommu_attach_device iommu_domain_alloc iommu_domain_free @@ -1251,30 +1382,35 @@ iommu_set_fault_handler iommu_unmap kstrtoint_from_user - kthread_stop ktime_get_ts64 mutex_trylock - __page_pinner_migration_failed param_ops_ullong pid_task platform_bus_type - __put_page reset_control_reset schedule_hrtimeout sync_file_create sync_file_get_fence __task_pid_nr_ns _totalram_pages - up_read - up_write vm_mmap vm_munmap vm_zone_stat # required by gmsl-max9286.ko - i2c_smbus_read_byte_data i2c_smbus_write_byte_data +# required by goodix.ko + gpiod_direction_input + input_alloc_absinfo + input_mt_sync_frame + touchscreen_parse_properties + touchscreen_report_pos + wait_for_completion + +# required by gpio-imx-rpmsg.ko + __irq_alloc_descs + # required by gpio-ir-recv.ko devm_rc_allocate_device devm_rc_register_device @@ -1285,12 +1421,8 @@ __devm_irq_alloc_descs devm_irq_alloc_generic_chip devm_irq_setup_generic_chip - gpiochip_generic_free - gpiochip_generic_request gpiochip_lock_as_irq gpiochip_unlock_as_irq - irq_domain_add_legacy - irq_domain_simple_ops irq_gc_ack_set_bit irq_gc_mask_clr_bit irq_gc_mask_set_bit @@ -1298,7 +1430,12 @@ register_syscore_ops # required by gpio-pca953x.ko + __bitmap_complement + __bitmap_or __bitmap_replace + __bitmap_xor + handle_nested_irq + handle_simple_irq regcache_sync_region # required by gpio-regulator.ko @@ -1315,12 +1452,28 @@ typec_switch_register typec_switch_unregister +# required by gpio-vf610.ko + handle_edge_irq + pinctrl_gpio_direction_input + pinctrl_gpio_direction_output + +# required by hwmon.ko + devres_release + kobject_uevent + kstrtoll + strpbrk + sysfs_notify + thermal_zone_device_update + +# required by i2c-imx-lpi2c.ko + i2c_get_dma_safe_msg_buf + i2c_put_dma_safe_msg_buf + pinctrl_pm_select_idle_state + # required by i2c-imx.ko clk_notifier_register clk_notifier_unregister i2c_add_numbered_adapter - i2c_generic_scl_recovery - i2c_recover_bus # required by imx-cpufreq-dt.ko clk_bulk_get @@ -1329,19 +1482,21 @@ dev_pm_opp_set_supported_hw nvmem_cell_read_u32 +# required by imx-dcnano-drm.ko + drm_crtc_vblank_helper_get_vblank_timestamp + drm_crtc_vblank_put + of_graph_parse_endpoint + # required by imx-dcss.ko devm_clk_put - __devm_drm_dev_alloc devm_iounmap drm_atomic_get_connector_state drm_atomic_helper_check_modeset drm_atomic_helper_check_planes drm_atomic_helper_disable_planes_on_crtc - drm_atomic_helper_shutdown drm_atomic_normalize_zpos drm_bridge_connector_disable_hpd drm_bridge_connector_enable_hpd - drm_bridge_connector_init drm_gem_cma_free_object drm_gem_cma_prime_get_sg_table drm_gem_cma_prime_vmap @@ -1353,7 +1508,6 @@ drm_plane_create_color_properties drm_plane_create_rotation_property drm_property_create_range - pm_runtime_allow # required by imx-lcdif-crtc.ko drm_property_destroy @@ -1379,19 +1533,11 @@ wakeup_source_unregister # required by imx-sdma.ko - dma_async_device_register gen_pool_dma_alloc krealloc of_gen_pool_get - vchan_dma_desc_free_list - vchan_find_desc - vchan_init - vchan_tx_desc_free - vchan_tx_submit # required by imx.ko - do_SAK - handle_sysrq hrtimer_init hrtimer_start_range_ns hrtimer_try_to_cancel @@ -1400,38 +1546,15 @@ mctrl_gpio_get mctrl_gpio_init mctrl_gpio_set - oops_in_progress rational_best_approximation - _raw_spin_trylock - sysrq_mask - tty_flip_buffer_push - __tty_insert_flip_char - tty_insert_flip_string_fixed_flag tty_termios_encode_baud_rate - uart_add_one_port - uart_console_device - uart_console_write - uart_get_baud_rate uart_get_divisor - uart_get_rs485_mode uart_handle_cts_change uart_handle_dcd_change - uart_parse_options - uart_register_driver - uart_remove_one_port - uart_resume_port - uart_set_options - uart_suspend_port - uart_try_toggle_sysrq - uart_unregister_driver - uart_update_timeout - uart_write_wakeup # required by imx2_wdt.ko _dev_crit - devm_watchdog_register_device __platform_driver_probe - watchdog_init_timeout watchdog_set_restart_priority # required by imx8-isi-cap.ko @@ -1479,15 +1602,20 @@ # required by imxdrm.ko component_match_add_release +# required by input-polldev.ko + devres_destroy + # required by irq-imx-irqsteer.ko __irq_domain_add irq_domain_xlate_onecell - irq_set_chip_and_handler_name - irq_set_chip_data -# required by it6161.ko - kstrtoint - sysfs_create_files +# required by kfifo_buf.ko + iio_buffer_init + iio_buffer_put + __kfifo_alloc + __kfifo_free + __kfifo_in + __kfifo_to_user # required by leds-gpio.ko device_get_child_node_count @@ -1497,6 +1625,15 @@ gpiod_cansleep gpiod_set_value +# required by lpa_ctrl.ko + sysfs_create_groups + +# required by lzo-rle.ko + lzorle1x_1_compress + +# required by lzo.ko + lzo1x_1_compress + # required by mac80211.ko __alloc_percpu_gfp arc4_crypt @@ -1510,7 +1647,6 @@ crypto_alloc_aead crypto_alloc_shash crypto_alloc_skcipher - crypto_destroy_tfm __crypto_memneq crypto_shash_digest crypto_shash_finup @@ -1533,8 +1669,6 @@ kernel_param_unlock kfree_skb_list ktime_get_seconds - kvfree - kvmalloc_node netdev_set_default_ethtool_ops netif_receive_skb_list prandom_bytes @@ -1547,7 +1681,6 @@ rht_bucket_nested rht_bucket_nested_insert round_jiffies - round_jiffies_relative round_jiffies_up skb_checksum_help skb_clone @@ -1559,10 +1692,13 @@ __skb_get_hash __skb_gso_segment skb_queue_head - system_freezable_wq unregister_netdevice_many __usecs_to_jiffies +# required by micrel.ko + genphy_restart_aneg + phy_modify_mmd + # required by moal.ko default_wake_function hex_dump_to_buffer @@ -1575,7 +1711,6 @@ iw_handler_get_thrspy iw_handler_set_spy iw_handler_set_thrspy - kthread_should_stop ktime_get_raw_ts64 mmc_hw_reset mmc_set_data_timeout @@ -1605,7 +1740,6 @@ pm_wakeup_ws_event proc_create_data proc_mkdir - remove_proc_entry request_firmware_direct sdio_claim_host sdio_claim_irq @@ -1625,7 +1759,6 @@ sdio_writeb sdio_writesb skb_realloc_headroom - sort strcat strchr strim @@ -1636,12 +1769,32 @@ wakeup_source_remove wireless_send_event +# required by mpl3115.ko + i2c_smbus_read_i2c_block_data + i2c_smbus_write_i2c_block_data + +# required by mtd.ko + bdi_alloc + bdi_put + bdi_register + deactivate_locked_super + fixed_size_llseek + generic_shutdown_super + lockref_get + logfc + lookup_bdev + __module_get + nvmem_register + nvmem_unregister + of_prop_next_string + proc_create_single_data + sget_fc + sysfs_remove_files + unregister_reboot_notifier + # required by mux-core.ko class_find_device device_match_of_node - devres_add - devres_alloc_node - devres_free down_killable # required by mux-mmio.ko @@ -1683,15 +1836,10 @@ # required by mxsfb.ko devm_drm_panel_bridge_add_typed drm_atomic_add_affected_planes - drm_atomic_helper_crtc_destroy_state - drm_atomic_helper_crtc_duplicate_state - drm_atomic_helper_crtc_reset drm_connector_list_iter_begin drm_connector_list_iter_end drm_connector_list_iter_next drm_get_format_info - drm_irq_install - drm_irq_uninstall # required by nvmem-imx-ocotp.ko devm_nvmem_register @@ -1705,6 +1853,10 @@ phy_mipi_dphy_get_default_config phy_validate +# required by ofpart.ko + of_n_addr_cells + of_n_size_cells + # required by ov5640.ko v4l2_ctrl_auto_cluster v4l2_ctrl_new_std_menu_items @@ -1719,23 +1871,22 @@ # required by panel-raydium-rm67191.ko devm_backlight_device_register - mipi_dsi_dcs_enter_sleep_mode - mipi_dsi_dcs_exit_sleep_mode mipi_dsi_dcs_get_display_brightness mipi_dsi_dcs_set_display_brightness - mipi_dsi_dcs_set_display_off - mipi_dsi_dcs_set_display_on mipi_dsi_dcs_set_pixel_format mipi_dsi_dcs_set_tear_on mipi_dsi_dcs_set_tear_scanline mipi_dsi_dcs_soft_reset mipi_dsi_generic_write +# required by panel-raydium-rm68200.ko + mipi_dsi_dcs_write + mipi_dsi_dcs_write_buffer + # required by panel-simple.ko drm_bus_flags_from_videomode drm_connector_set_panel_orientation drm_mode_create - drm_panel_of_backlight of_drm_get_panel_orientation of_find_i2c_adapter_by_node of_get_display_timing @@ -1787,13 +1938,10 @@ # required by phy-generic.ko regulator_set_current_limit - usb_add_phy_dev - usb_remove_phy # required by pinctrl-imx.ko devm_pinctrl_register_and_init pinconf_generic_parse_dt_config - pinctrl_dev_get_drvdata pinctrl_enable pinctrl_force_default pinctrl_force_sleep @@ -1824,11 +1972,6 @@ posix_clock_register posix_clock_unregister -# required by pwm-imx27.ko - of_pwm_xlate_with_flags - pwmchip_add - pwmchip_remove - # required by pwm_bl.ko backlight_device_register backlight_device_unregister @@ -1844,17 +1987,20 @@ mmc_pwrseq_register mmc_pwrseq_unregister +# required by pxp_device.ko + dma_get_sgtable_attrs + +# required by pxp_dma_v3.ko + freezing_slow_path + __refrigerator + set_freezable + system_freezing_cnt + # required by qoriq_thermal.ko of_thermal_get_ntrips thermal_zone_of_sensor_unregister # required by realtek.ko - genphy_read_abilities - genphy_read_mmd_unsupported - genphy_read_status - genphy_resume - genphy_suspend - genphy_write_mmd_unsupported __mdiobus_read __mdiobus_write __phy_modify @@ -1865,9 +2011,16 @@ phy_select_page phy_write_paged +# required by regmap-i3c.ko + dev_to_i3cdev + i3c_device_do_priv_xfers + # required by reset-dispmix.ko __regmap_init_mmio_clk +# required by rpmsg_life_cycle.ko + remove_cpu + # required by rpmsg_raw.ko compat_ptr_ioctl _copy_from_iter_full @@ -1876,12 +2029,15 @@ rpmsg_poll rpmsg_trysendto +# required by rtc-imx-rpmsg.ko + devm_rtc_device_register + # required by rtc-snvs.ko devm_rtc_allocate_device __rtc_register_device - rtc_time64_to_tm - rtc_tm_to_time64 - rtc_update_irq + +# required by scmi_pm_domain.ko + of_genpd_add_provider_onecell # required by sdhci-esdhc-imx.ko mmc_gpiod_request_cd @@ -1948,19 +2104,13 @@ snd_soc_info_xr_sx # required by snd-soc-fsl-micfil.ko - kobject_create_and_add - kstrtoull snd_soc_get_volsw_sx snd_soc_info_volsw_sx snd_soc_put_volsw_sx -# required by snd-soc-fsl-sai.ko - kstrtouint - # required by snd-soc-fsl-spdif.ko regcache_cache_bypass snd_soc_add_dai_controls - snd_soc_get_pcm_runtime # required by snd-soc-hdmi-codec.ko snd_ctl_add @@ -1971,7 +2121,6 @@ # required by snd-soc-imx-ak5558.ko snd_interval_refine - snd_pcm_hw_rule_add # required by snd-soc-imx-audmux.ko default_llseek @@ -1981,6 +2130,12 @@ # required by snd-soc-imx-cdnhdmi.ko snd_soc_component_set_jack +# required by snd-soc-imx-pcm512x-rpmsg.ko + i2c_get_adapter + i2c_smbus_read_byte + snd_soc_dai_set_bclk_ratio + snd_soc_limit_volume + # required by snd-soc-imx-rpmsg.ko of_reserved_mem_device_init_by_idx snd_soc_get_dai_name @@ -1990,9 +2145,15 @@ snd_soc_dapm_get_enum_double snd_soc_dapm_put_enum_double +# required by snd-soc-rpmsg-pcm512x.ko + devm_regulator_register_notifier + snd_ctl_boolean_stereo_info + snd_interval_ranges + snd_pcm_hw_constraint_ratnums + snd_soc_params_to_frame_size + # required by snd-soc-simple-card-utils.ko devm_kvasprintf - of_property_read_string_helper snd_soc_dapm_get_pin_switch snd_soc_dapm_info_pin_switch snd_soc_dapm_put_pin_switch @@ -2007,8 +2168,10 @@ snd_soc_of_parse_node_prefix snd_soc_of_parse_tdm_slot +# required by snd-soc-tpa6130a2.ko + devm_gpio_request + # required by snvs_pwrkey.ko - devm_input_allocate_device pm_relax # required by soc-imx8m.ko @@ -2022,22 +2185,50 @@ # required by spi-imx.ko sg_last - wait_for_completion_interruptible + +# required by spi-nor.ko + devm_spi_mem_dirmap_create + spi_mem_adjust_op_size + spi_mem_dirmap_read + spi_mem_dirmap_write + spi_mem_driver_register_with_owner + spi_mem_driver_unregister + spi_mem_exec_op + spi_mem_get_name + spi_mem_supports_op + +# required by spi-nxp-fspi.ko + spi_mem_dtr_supports_op # required by spidev.ko find_next_zero_bit - __spi_register_driver spi_setup spi_sync stream_open +# required by st_lsm6dsx.ko + devm_iio_device_alloc + __devm_iio_device_register + iio_device_attach_buffer + iio_device_claim_direct_mode + iio_device_release_direct_mode + iio_get_time_ns + iio_push_event + iio_push_to_buffers + iio_read_mount_matrix + iio_show_mount_matrix + +# required by st_lsm6dsx_i3c.ko + i3c_device_match_id + i3c_driver_register_with_owner + i3c_driver_unregister + +# required by st_lsm6dsx_spi.ko + __devm_regmap_init_spi + spi_get_device_id + # required by synaptics_dsx_i2c.ko - input_allocate_device input_free_device - input_mt_init_slots - input_mt_report_slot_state - input_set_abs_params - input_unregister_device # required by system_heap.ko dmabuf_page_pool_alloc @@ -2071,9 +2262,6 @@ # required by trusty-log.ko panic_notifier_list -# required by trusty-test.ko - simple_strtoul - # required by trusty-virtio.ko register_virtio_device unregister_virtio_device @@ -2090,7 +2278,6 @@ of_device_modalias of_device_request_module of_device_uevent_modalias - __request_module # required by v4l2-fwnode.ko fwnode_device_is_available @@ -2118,7 +2305,67 @@ vb2_prepare_buf # required by vvcam-video.ko - complete_all media_entity_remove_links v4l2_async_notifier_add_devname_subdev v4l2_ctrl_poll + +# required by zram.ko + __alloc_disk_node + bdget_disk + bio_endio + blk_alloc_queue + blk_cleanup_queue + blk_queue_flag_clear + blk_queue_flag_set + blk_queue_io_min + blk_queue_io_opt + blk_queue_logical_block_size + blk_queue_max_discard_sectors + blk_queue_max_write_zeroes_sectors + blk_queue_physical_block_size + crypto_alloc_base + crypto_comp_compress + crypto_comp_decompress + crypto_has_alg + del_gendisk + device_add_disk + disk_end_io_acct + disk_start_io_acct + flush_dcache_page + free_pages + fsync_bdev + __get_free_pages + __init_rwsem + memparse + memset64 + __num_online_cpus + page_endio + put_disk + register_blkdev + revalidate_disk_size + __sysfs_match_string + sysfs_streq + unregister_blkdev + vzalloc + +# required by zsmalloc.ko + alloc_anon_inode + __ClearPageMovable + contig_page_data + dec_zone_page_state + inc_zone_page_state + init_pseudo + iput + kern_mount + kern_unmount + kill_anon_super + __lock_page + page_mapping + _raw_read_lock + _raw_read_unlock + _raw_write_lock + _raw_write_unlock + register_shrinker + __SetPageMovable + unlock_page + unregister_shrinker diff --git a/android/abi_gki_aarch64_mtk b/android/abi_gki_aarch64_mtk index 43ed832528e8..f49b88bc41c0 100644 --- a/android/abi_gki_aarch64_mtk +++ b/android/abi_gki_aarch64_mtk @@ -975,6 +975,7 @@ kfree_skb kfree_skb_list kill_anon_super + kill_pid kimage_vaddr kimage_voffset __kmalloc @@ -1022,6 +1023,7 @@ kthread_destroy_worker kthread_flush_work kthread_flush_worker + kthread_freezable_should_stop __kthread_init_worker kthread_queue_delayed_work kthread_queue_work @@ -2056,6 +2058,7 @@ trace_raw_output_prep trace_seq_printf trace_seq_putc + trace_set_clr_event tracing_off try_wait_for_completion tty_flip_buffer_push @@ -2370,6 +2373,7 @@ vscnprintf vsnprintf vsprintf + vsscanf vunmap vzalloc wait_for_completion diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index bb62b99da69a..9afce39e651c 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -2585,6 +2585,9 @@ __traceiter_android_vh_alter_rwsem_list_add __traceiter_android_vh_arch_set_freq_scale __traceiter_android_vh_binder_alloc_new_buf_locked + __traceiter_android_vh_binder_new_ref + __traceiter_android_vh_binder_del_ref + __traceiter_android_vh_binder_proc_transaction __traceiter_android_vh_binder_preset __traceiter_android_vh_binder_priority_skip __traceiter_android_vh_binder_reply @@ -2776,6 +2779,9 @@ __tracepoint_android_vh_alter_rwsem_list_add __tracepoint_android_vh_arch_set_freq_scale __tracepoint_android_vh_binder_alloc_new_buf_locked + __tracepoint_android_vh_binder_new_ref + __tracepoint_android_vh_binder_del_ref + __tracepoint_android_vh_binder_proc_transaction __tracepoint_android_vh_binder_preset __tracepoint_android_vh_binder_priority_skip __tracepoint_android_vh_binder_reply diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index c2a299356d27..9680a3058076 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -2501,6 +2501,7 @@ __traceiter_android_rvh_cpu_cgroup_online __traceiter_android_rvh_cpufreq_transition __traceiter_android_rvh_dequeue_task + __traceiter_android_rvh_do_sched_yield __traceiter_android_rvh_enqueue_task __traceiter_android_rvh_find_busiest_queue __traceiter_android_rvh_find_lowest_rq @@ -2612,6 +2613,7 @@ __tracepoint_android_rvh_cpu_cgroup_online __tracepoint_android_rvh_cpufreq_transition __tracepoint_android_rvh_dequeue_task + __tracepoint_android_rvh_do_sched_yield __tracepoint_android_rvh_enqueue_task __tracepoint_android_rvh_find_busiest_queue __tracepoint_android_rvh_find_lowest_rq diff --git a/android/abi_gki_aarch64_virtual_device b/android/abi_gki_aarch64_virtual_device index 3b7e4f52cab4..692983348396 100644 --- a/android/abi_gki_aarch64_virtual_device +++ b/android/abi_gki_aarch64_virtual_device @@ -1105,6 +1105,9 @@ anon_inode_getfile compat_ptr_ioctl +# required by usbip-core.ko + sock_recvmsg + # required by vcan.ko sock_efree @@ -1124,6 +1127,11 @@ devm_gpiochip_add_data_with_key devm_mfd_add_devices +# required by vhci-hcd.ko + kernel_sock_shutdown + platform_bus + sockfd_lookup + # required by virt_wifi.ko __module_get netdev_upper_dev_link diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index 5ff5cad3dc1c..c3bc87e17c9f 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -1673,6 +1673,7 @@ trace_event_reg trace_handle_return __traceiter_android_rvh_account_irq + __traceiter_android_rvh_binder_transaction __traceiter_android_rvh_build_perf_domains __traceiter_android_rvh_can_migrate_task __traceiter_android_rvh_check_preempt_wakeup @@ -1772,6 +1773,7 @@ __traceiter_usb_gadget_connect __traceiter_usb_gadget_disconnect __tracepoint_android_rvh_account_irq + __tracepoint_android_rvh_binder_transaction __tracepoint_android_rvh_build_perf_domains __tracepoint_android_rvh_can_migrate_task __tracepoint_android_rvh_check_preempt_wakeup diff --git a/arch/arm64/configs/fips140_gki_eval_testing.fragment b/arch/arm64/configs/fips140_gki_eval_testing.fragment new file mode 100644 index 000000000000..d8b16022a6dd --- /dev/null +++ b/arch/arm64/configs/fips140_gki_eval_testing.fragment @@ -0,0 +1 @@ +CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING=y diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index bed9e0724ed5..27133a411ce4 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -386,6 +386,7 @@ CONFIG_HW_RANDOM=y # CONFIG_I2C_HELPER_AUTO is not set CONFIG_I3C=y CONFIG_SPI=y +CONFIG_SPI_MEM=y CONFIG_SPMI=y # CONFIG_SPMI_MSM_PMIC_ARB is not set # CONFIG_PINCTRL_SUN8I_H3_R is not set diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index 71a12660f747..33d93f800734 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -62,6 +62,12 @@ EXPORT_SYMBOL(memstart_addr); */ phys_addr_t arm64_dma_phys_limit __ro_after_init; +/* + * Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via + * CONFIG_ZONE_DMA32. + */ +static bool disable_dma32 __ro_after_init; + #ifdef CONFIG_KEXEC_CORE /* * reserve_crashkernel() - reserves memory for crash kernel @@ -207,7 +213,7 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) max_zone_pfns[ZONE_DMA] = PFN_DOWN(arm64_dma_phys_limit); #endif #ifdef CONFIG_ZONE_DMA32 - max_zone_pfns[ZONE_DMA32] = PFN_DOWN(dma32_phys_limit); + max_zone_pfns[ZONE_DMA32] = disable_dma32 ? 0 : PFN_DOWN(dma32_phys_limit); if (!arm64_dma_phys_limit) arm64_dma_phys_limit = dma32_phys_limit; #endif @@ -218,6 +224,18 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) free_area_init(max_zone_pfns); } +static int __init early_disable_dma32(char *buf) +{ + if (!buf) + return -EINVAL; + + if (!strcmp(buf, "on")) + disable_dma32 = true; + + return 0; +} +early_param("disable_dma32", early_disable_dma32); + int pfn_valid(unsigned long pfn) { phys_addr_t addr = pfn << PAGE_SHIFT; diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 180f696da923..0ab5ac10f4d1 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -351,6 +351,7 @@ CONFIG_HPET=y # CONFIG_I2C_HELPER_AUTO is not set CONFIG_I3C=y CONFIG_SPI=y +CONFIG_SPI_MEM=y CONFIG_GPIOLIB=y CONFIG_GPIO_GENERIC_PLATFORM=y # CONFIG_HWMON is not set diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index c7a47603537f..155c95dc1772 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c @@ -102,6 +102,12 @@ static unsigned long min_pfn_mapped; static bool __initdata can_use_brk_pgt = true; +/* + * Provide a run-time mean of disabling ZONE_DMA32 if it is enabled via + * CONFIG_ZONE_DMA32. + */ +static bool disable_dma32 __ro_after_init; + /* * Pages returned are already directly mapped. * @@ -996,7 +1002,7 @@ void __init zone_sizes_init(void) max_zone_pfns[ZONE_DMA] = min(MAX_DMA_PFN, max_low_pfn); #endif #ifdef CONFIG_ZONE_DMA32 - max_zone_pfns[ZONE_DMA32] = min(MAX_DMA32_PFN, max_low_pfn); + max_zone_pfns[ZONE_DMA32] = disable_dma32 ? 0 : min(MAX_DMA32_PFN, max_low_pfn); #endif max_zone_pfns[ZONE_NORMAL] = max_low_pfn; #ifdef CONFIG_HIGHMEM @@ -1006,6 +1012,18 @@ void __init zone_sizes_init(void) free_area_init(max_zone_pfns); } +static int __init early_disable_dma32(char *buf) +{ + if (!buf) + return -EINVAL; + + if (!strcmp(buf, "on")) + disable_dma32 = true; + + return 0; +} +early_param("disable_dma32", early_disable_dma32); + __visible DEFINE_PER_CPU_SHARED_ALIGNED(struct tlb_state, cpu_tlbstate) = { .loaded_mm = &init_mm, .next_asid = 1, diff --git a/build.config.gki.aarch64.fips140_eval_testing b/build.config.gki.aarch64.fips140_eval_testing new file mode 100644 index 000000000000..66df5fe1bb4f --- /dev/null +++ b/build.config.gki.aarch64.fips140_eval_testing @@ -0,0 +1,3 @@ +. ${ROOT_DIR}/${KERNEL_DIR}/build.config.gki.aarch64.fips140 + +PRE_DEFCONFIG_CMDS+=" cat ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/fips140_gki_eval_testing.fragment >> ${ROOT_DIR}/${KERNEL_DIR}/arch/arm64/configs/${DEFCONFIG};" diff --git a/crypto/Kconfig b/crypto/Kconfig index 7dc84953713d..a86d17ebe6fa 100644 --- a/crypto/Kconfig +++ b/crypto/Kconfig @@ -53,14 +53,14 @@ config CRYPTO_FIPS140_MOD meet FIPS 140 and NIAP FPT_TST_EXT.1 requirements. It shouldn't be used if you don't need to meet these requirements. -config CRYPTO_FIPS140_MOD_ERROR_INJECTION - bool "Support injecting failures into the FIPS 140 self-tests" +config CRYPTO_FIPS140_MOD_EVAL_TESTING + bool "Enable evaluation testing features in FIPS 140 module" depends on CRYPTO_FIPS140_MOD help - This option adds a module parameter "broken_alg" to the fips140 module - which can be used to fail the self-tests for a particular algorithm, - causing a kernel panic. This option is for FIPS lab testing only, and - it shouldn't be enabled on production systems. + This option adds some features to the FIPS 140 module which are needed + for lab evaluation testing of the module, e.g. support for injecting + errors and support for a userspace interface to some of the module's + services. This option should not be enabled in production builds. config CRYPTO_ALGAPI tristate diff --git a/crypto/Makefile b/crypto/Makefile index 9ada957d4cbd..f8a3677d2eec 100644 --- a/crypto/Makefile +++ b/crypto/Makefile @@ -239,11 +239,14 @@ fips140-objs := \ fips140-refs.o \ fips140-selftests.o \ crypto-fips.a +fips140-$(CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING) += \ + fips140-eval-testing.o obj-m += fips140.o CFLAGS_fips140-alg-registration.o += $(FIPS140_CFLAGS) CFLAGS_fips140-module.o += $(FIPS140_CFLAGS) CFLAGS_fips140-selftests.o += $(FIPS140_CFLAGS) +CFLAGS_fips140-eval-testing.o += $(FIPS140_CFLAGS) hostprogs-always-y := fips140_gen_hmac HOSTLDLIBS_fips140_gen_hmac := -lcrypto -lelf diff --git a/crypto/fips140-eval-testing-uapi.h b/crypto/fips140-eval-testing-uapi.h new file mode 100644 index 000000000000..04e6cf633594 --- /dev/null +++ b/crypto/fips140-eval-testing-uapi.h @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ + +#ifndef _CRYPTO_FIPS140_EVAL_TESTING_H +#define _CRYPTO_FIPS140_EVAL_TESTING_H + +#include + +/* + * This header defines the ioctls that are available on the fips140 character + * device. These ioctls expose some of the module's services to userspace so + * that they can be tested by the FIPS certification lab; this is a required + * part of getting a FIPS 140 certification. These ioctls do not have any other + * purpose, and they do not need to be present in production builds. + */ + +/* + * Call the fips140_is_approved_service() function. The argument must be the + * service name as a NUL-terminated string. The return value will be 1 if + * fips140_is_approved_service() returned true, or 0 if it returned false. + */ +#define FIPS140_IOCTL_IS_APPROVED_SERVICE _IO('F', 0) + +/* + * Call the fips140_module_version() function. The argument must be a pointer + * to a buffer of size >= 256 chars. The NUL-terminated string returned by + * fips140_module_version() will be written to this buffer. + */ +#define FIPS140_IOCTL_MODULE_VERSION _IOR('F', 1, char[256]) + +#endif /* _CRYPTO_FIPS140_EVAL_TESTING_H */ diff --git a/crypto/fips140-eval-testing.c b/crypto/fips140-eval-testing.c new file mode 100644 index 000000000000..ea3cd653983a --- /dev/null +++ b/crypto/fips140-eval-testing.c @@ -0,0 +1,129 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright 2021 Google LLC + * + * This file can optionally be built into fips140.ko in order to support certain + * types of testing that the FIPS lab has to do to evaluate the module. It + * should not be included in production builds of the module. + */ + +/* + * We have to redefine inline to mean always_inline, so that _copy_to_user() + * gets inlined. This is needed for it to be placed into the correct section. + * See fips140_copy_to_user(). + * + * We also need to undefine BUILD_FIPS140_KO to allow the use of the code + * patching which copy_to_user() requires. + */ +#undef inline +#define inline inline __attribute__((__always_inline__)) __gnu_inline \ + __inline_maybe_unused notrace +#undef BUILD_FIPS140_KO + +#include +#include +#include +#include + +#include "fips140-module.h" +#include "fips140-eval-testing-uapi.h" + +/* + * This option allows deliberately failing the self-tests for a particular + * algorithm. + */ +static char *fips140_fail_selftest; +module_param_named(fail_selftest, fips140_fail_selftest, charp, 0); + +/* This option allows deliberately failing the integrity check. */ +static bool fips140_fail_integrity_check; +module_param_named(fail_integrity_check, fips140_fail_integrity_check, bool, 0); + +static dev_t fips140_devnum; +static struct cdev fips140_cdev; + +/* Inject a self-test failure (via corrupting the result) if requested. */ +void fips140_inject_selftest_failure(const char *impl, u8 *result) +{ + if (fips140_fail_selftest && strcmp(impl, fips140_fail_selftest) == 0) + result[0] ^= 0xff; +} + +/* Inject an integrity check failure (via corrupting the text) if requested. */ +void fips140_inject_integrity_failure(u8 *textcopy) +{ + if (fips140_fail_integrity_check) + textcopy[0] ^= 0xff; +} + +static long fips140_ioctl_is_approved_service(unsigned long arg) +{ + const char *service_name = strndup_user((const char __user *)arg, 256); + long ret; + + if (IS_ERR(service_name)) + return PTR_ERR(service_name); + + ret = fips140_is_approved_service(service_name); + + kfree(service_name); + return ret; +} + +/* + * Code in fips140.ko is covered by an integrity check by default, and this + * check breaks if copy_to_user() is called. This is because copy_to_user() is + * an inline function that relies on code patching. However, since this is + * "evaluation testing" code which isn't included in the production builds of + * fips140.ko, it's acceptable to just exclude it from the integrity check. + */ +static noinline unsigned long __section("text.._fips140_unchecked") +fips140_copy_to_user(void __user *to, const void *from, unsigned long n) +{ + return copy_to_user(to, from, n); +} + +static long fips140_ioctl_module_version(unsigned long arg) +{ + const char *version = fips140_module_version(); + size_t len = strlen(version) + 1; + + if (len > 256) + return -EOVERFLOW; + + if (fips140_copy_to_user((void __user *)arg, version, len)) + return -EFAULT; + + return 0; +} + +static long fips140_ioctl(struct file *file, unsigned int cmd, + unsigned long arg) +{ + switch (cmd) { + case FIPS140_IOCTL_IS_APPROVED_SERVICE: + return fips140_ioctl_is_approved_service(arg); + case FIPS140_IOCTL_MODULE_VERSION: + return fips140_ioctl_module_version(arg); + default: + return -ENOTTY; + } +} + +static const struct file_operations fips140_fops = { + .unlocked_ioctl = fips140_ioctl, +}; + +bool fips140_eval_testing_init(void) +{ + if (alloc_chrdev_region(&fips140_devnum, 1, 1, "fips140") != 0) { + pr_err("failed to allocate device number\n"); + return false; + } + cdev_init(&fips140_cdev, &fips140_fops); + if (cdev_add(&fips140_cdev, fips140_devnum, 1) != 0) { + pr_err("failed to add fips140 character device\n"); + return false; + } + return true; +} diff --git a/crypto/fips140-module.c b/crypto/fips140-module.c index 5e42891fbd0d..cd854fe28845 100644 --- a/crypto/fips140-module.c +++ b/crypto/fips140-module.c @@ -29,15 +29,6 @@ #include "fips140-module.h" #include "internal.h" -/* - * This option allows deliberately failing the self-tests for a particular - * algorithm. This is for FIPS lab testing only. - */ -#ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION -char *fips140_broken_alg; -module_param_named(broken_alg, fips140_broken_alg, charp, 0); -#endif - /* * FIPS 140-2 prefers the use of HMAC with a public key over a plain hash. */ @@ -397,6 +388,8 @@ static bool __init check_fips140_module_hmac(void) offset_to_ptr(&fips140_rela_rodata.offset), fips140_rela_rodata.count); + fips140_inject_integrity_failure(textcopy); + tfm = crypto_alloc_shash("hmac(sha256)", 0, 0); if (IS_ERR(tfm)) { pr_err("failed to allocate hmac tfm (%ld)\n", PTR_ERR(tfm)); @@ -545,6 +538,9 @@ fips140_init(void) if (!update_fips140_library_routines()) goto panic; + if (!fips140_eval_testing_init()) + goto panic; + pr_info("module successfully loaded\n"); return 0; diff --git a/crypto/fips140-module.h b/crypto/fips140-module.h index b83547726a0f..a2a63194eb64 100644 --- a/crypto/fips140-module.h +++ b/crypto/fips140-module.h @@ -20,16 +20,31 @@ #define FIPS140_MODULE_NAME "Android Kernel Cryptographic Module" #define FIPS140_MODULE_VERSION UTS_RELEASE -#ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION -extern char *fips140_broken_alg; -#endif +/* fips140-eval-testing.c */ +#ifdef CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING +void fips140_inject_selftest_failure(const char *impl, u8 *result); +void fips140_inject_integrity_failure(u8 *textcopy); +bool fips140_eval_testing_init(void); +#else +static inline void fips140_inject_selftest_failure(const char *impl, u8 *result) +{ +} +static inline void fips140_inject_integrity_failure(u8 *textcopy) +{ +} +static inline bool fips140_eval_testing_init(void) +{ + return true; +} +#endif /* !CONFIG_CRYPTO_FIPS140_MOD_EVAL_TESTING */ +/* fips140-module.c */ extern struct completion fips140_tests_done; extern struct task_struct *fips140_init_thread; - -bool __init __must_check fips140_run_selftests(void); - bool fips140_is_approved_service(const char *name); const char *fips140_module_version(void); +/* fips140-selftests.c */ +bool __init __must_check fips140_run_selftests(void); + #endif /* _CRYPTO_FIPS140_MODULE_H */ diff --git a/crypto/fips140-selftests.c b/crypto/fips140-selftests.c index 0ab388a9f213..56c503cacc41 100644 --- a/crypto/fips140-selftests.c +++ b/crypto/fips140-selftests.c @@ -146,11 +146,7 @@ static int __init __must_check fips_check_result(u8 *result, const u8 *expected_result, size_t result_size, const char *impl, const char *operation) { -#ifdef CONFIG_CRYPTO_FIPS140_MOD_ERROR_INJECTION - /* Inject a failure (via corrupting the result) if requested. */ - if (fips140_broken_alg && strcmp(impl, fips140_broken_alg) == 0) - result[0] ^= 0xff; -#endif + fips140_inject_selftest_failure(impl, result); if (memcmp(result, expected_result, result_size) != 0) { pr_err("wrong result from %s %s\n", impl, operation); return -EBADMSG; diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 9d2a765b164d..17f42e726b55 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -239,6 +239,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_create_worker); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_check_preempt_wakeup_ignore); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_replace_next_task_fair); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_do_sched_yield); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_wait_for_work); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sync_txn_recvd); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_build_sched_domains); diff --git a/drivers/dma-buf/heaps/page_pool.c b/drivers/dma-buf/heaps/page_pool.c index 7c34a1ba48bb..b79e737bac95 100644 --- a/drivers/dma-buf/heaps/page_pool.c +++ b/drivers/dma-buf/heaps/page_pool.c @@ -44,9 +44,9 @@ static void dmabuf_page_pool_add(struct dmabuf_page_pool *pool, struct page *pag mutex_lock(&pool->mutex); list_add_tail(&page->lru, &pool->items[index]); pool->count[index]++; - mutex_unlock(&pool->mutex); mod_node_page_state(page_pgdat(page), NR_KERNEL_MISC_RECLAIMABLE, 1 << pool->order); + mutex_unlock(&pool->mutex); } static struct page *dmabuf_page_pool_remove(struct dmabuf_page_pool *pool, int index) diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index 4682f49dc733..2c584c15bbf8 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -137,8 +137,8 @@ static int spi_check_buswidth_req(struct spi_mem *mem, u8 buswidth, bool tx) return -ENOTSUPP; } -bool spi_mem_default_supports_op(struct spi_mem *mem, - const struct spi_mem_op *op) +static bool spi_mem_check_buswidth(struct spi_mem *mem, + const struct spi_mem_op *op) { if (spi_check_buswidth_req(mem, op->cmd.buswidth, true)) return false; @@ -156,13 +156,29 @@ bool spi_mem_default_supports_op(struct spi_mem *mem, op->data.dir == SPI_MEM_DATA_OUT)) return false; + return true; +} + +bool spi_mem_dtr_supports_op(struct spi_mem *mem, + const struct spi_mem_op *op) +{ + if (op->cmd.nbytes != 2) + return false; + + return spi_mem_check_buswidth(mem, op); +} +EXPORT_SYMBOL_GPL(spi_mem_dtr_supports_op); + +bool spi_mem_default_supports_op(struct spi_mem *mem, + const struct spi_mem_op *op) +{ if (op->cmd.dtr || op->addr.dtr || op->dummy.dtr || op->data.dtr) return false; if (op->cmd.nbytes != 1) return false; - return true; + return spi_mem_check_buswidth(mem, op); } EXPORT_SYMBOL_GPL(spi_mem_default_supports_op); diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 224a4a34509a..c4ebfb1cff0d 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -3264,6 +3264,9 @@ static bool dwc3_gadget_endpoint_trbs_complete(struct dwc3_ep *dep, struct dwc3 *dwc = dep->dwc; bool no_started_trb = true; + if (!dep->endpoint.desc) + return no_started_trb; + dwc3_gadget_ep_cleanup_completed_requests(dep, event, status); if (dep->flags & DWC3_EP_END_TRANSFER_PENDING) @@ -3311,6 +3314,9 @@ static void dwc3_gadget_endpoint_transfer_in_progress(struct dwc3_ep *dep, { int status = 0; + if (!dep->endpoint.desc) + return; + if (usb_endpoint_xfer_isoc(dep->endpoint.desc)) dwc3_gadget_endpoint_frame_from_event(dep, event); diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c index f41214c15285..66a603f3327d 100644 --- a/drivers/usb/gadget/function/f_accessory.c +++ b/drivers/usb/gadget/function/f_accessory.c @@ -678,8 +678,11 @@ fail: pr_err("acc_bind() could not allocate requests\n"); while ((req = req_get(dev, &dev->tx_idle))) acc_request_free(req, dev->ep_in); - for (i = 0; i < RX_REQ_MAX; i++) + for (i = 0; i < RX_REQ_MAX; i++) { acc_request_free(dev->rx_req[i], dev->ep_out); + dev->rx_req[i] = NULL; + } + return -1; } @@ -711,6 +714,12 @@ static ssize_t acc_read(struct file *fp, char __user *buf, goto done; } + if (!dev->rx_req[0]) { + pr_warn("acc_read: USB request already handled/freed"); + r = -EINVAL; + goto done; + } + /* * Calculate the data length by considering termination character. * Then compansite the difference of rounding up to @@ -1187,8 +1196,10 @@ acc_function_unbind(struct usb_configuration *c, struct usb_function *f) while ((req = req_get(dev, &dev->tx_idle))) acc_request_free(req, dev->ep_in); - for (i = 0; i < RX_REQ_MAX; i++) + for (i = 0; i < RX_REQ_MAX; i++) { acc_request_free(dev->rx_req[i], dev->ep_out); + dev->rx_req[i] = NULL; + } acc_hid_unbind(dev); } diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index 725e35167837..2113e541457e 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -614,7 +614,7 @@ static int ffs_ep0_open(struct inode *inode, struct file *file) file->private_data = ffs; ffs_data_opened(ffs); - return 0; + return stream_open(inode, file); } static int ffs_ep0_release(struct inode *inode, struct file *file) @@ -1152,7 +1152,7 @@ ffs_epfile_open(struct inode *inode, struct file *file) file->private_data = epfile; ffs_data_opened(epfile->ffs); - return 0; + return stream_open(inode, file); } static int ffs_aio_cancel(struct kiocb *kiocb) diff --git a/fs/erofs/utils.c b/fs/erofs/utils.c index 6758c5b19f7c..9d9c2c73bebd 100644 --- a/fs/erofs/utils.c +++ b/fs/erofs/utils.c @@ -142,7 +142,7 @@ static bool erofs_try_to_release_workgroup(struct erofs_sb_info *sbi, * however in order to avoid some race conditions, add a * DBG_BUGON to observe this in advance. */ - DBG_BUGON(xa_erase(&sbi->managed_pslots, grp->index) != grp); + DBG_BUGON(__xa_erase(&sbi->managed_pslots, grp->index) != grp); /* last refcount should be connected with its managed pslot. */ erofs_workgroup_unfreeze(grp, 0); @@ -157,15 +157,19 @@ static unsigned long erofs_shrink_workstation(struct erofs_sb_info *sbi, unsigned int freed = 0; unsigned long index; + xa_lock(&sbi->managed_pslots); xa_for_each(&sbi->managed_pslots, index, grp) { /* try to shrink each valid workgroup */ if (!erofs_try_to_release_workgroup(sbi, grp)) continue; + xa_unlock(&sbi->managed_pslots); ++freed; if (!--nr_shrink) - break; + return freed; + xa_lock(&sbi->managed_pslots); } + xa_unlock(&sbi->managed_pslots); return freed; } diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c index 7fc79c47798a..59ee18377a5c 100644 --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -737,7 +737,7 @@ hitted: retry: err = z_erofs_attach_page(clt, page, page_type, clt->mode >= COLLECT_PRIMARY_FOLLOWED); - /* should allocate an additional staging page for pagevec */ + /* should allocate an additional short-lived page for pagevec */ if (err == -EAGAIN) { struct page *const newpage = alloc_page(GFP_NOFS | __GFP_NOFAIL); diff --git a/include/linux/dma-direct.h b/include/linux/dma-direct.h index 18aade195884..ed69618cf1fc 100644 --- a/include/linux/dma-direct.h +++ b/include/linux/dma-direct.h @@ -24,6 +24,28 @@ struct bus_dma_region { u64 offset; }; +static inline bool zone_dma32_is_empty(int node) +{ +#ifdef CONFIG_ZONE_DMA32 + pg_data_t *pgdat = NODE_DATA(node); + + return zone_is_empty(&pgdat->node_zones[ZONE_DMA32]); +#else + return true; +#endif +} + +static inline bool zone_dma32_are_empty(void) +{ + int node; + + for_each_node(node) + if (!zone_dma32_is_empty(node)) + return false; + + return true; +} + static inline dma_addr_t translate_phys_to_dma(struct device *dev, phys_addr_t paddr) { diff --git a/include/linux/spi/spi-mem.h b/include/linux/spi/spi-mem.h index 159463cc659c..2b65c9edc34e 100644 --- a/include/linux/spi/spi-mem.h +++ b/include/linux/spi/spi-mem.h @@ -311,6 +311,9 @@ void spi_controller_dma_unmap_mem_op_data(struct spi_controller *ctlr, bool spi_mem_default_supports_op(struct spi_mem *mem, const struct spi_mem_op *op); +bool spi_mem_dtr_supports_op(struct spi_mem *mem, + const struct spi_mem_op *op); + #else static inline int spi_controller_dma_map_mem_op_data(struct spi_controller *ctlr, @@ -334,6 +337,12 @@ bool spi_mem_default_supports_op(struct spi_mem *mem, return false; } +static inline +bool spi_mem_dtr_supports_op(struct spi_mem *mem, + const struct spi_mem_op *op) +{ + return false; +} #endif /* CONFIG_SPI_MEM */ int spi_mem_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 78f57b106e6c..0844244c9aff 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -291,6 +291,10 @@ DECLARE_RESTRICTED_HOOK(android_rvh_replace_next_task_fair, bool simple, struct task_struct *prev), TP_ARGS(rq, p, se, repick, simple, prev), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_do_sched_yield, + TP_PROTO(struct rq *rq), + TP_ARGS(rq), 1); + DECLARE_RESTRICTED_HOOK(android_rvh_util_est_update, TP_PROTO(struct cfs_rq *cfs_rq, struct task_struct *p, bool task_sleep, int *ret), TP_ARGS(cfs_rq, p, task_sleep, ret), 1); diff --git a/init/init_task.c b/init/init_task.c index 8b08c2e19cbb..fba7fbed71dc 100644 --- a/init/init_task.c +++ b/init/init_task.c @@ -213,6 +213,8 @@ struct task_struct init_task #ifdef CONFIG_SECCOMP_FILTER .seccomp = { .filter_count = ATOMIC_INIT(0) }, #endif + .android_vendor_data1 = {0, }, + .android_oem_data1 = {0, }, }; EXPORT_SYMBOL(init_task); diff --git a/kernel/cpu.c b/kernel/cpu.c index 41c73436e745..739597d16bf6 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -558,6 +559,12 @@ static int bringup_cpu(unsigned int cpu) struct task_struct *idle = idle_thread_get(cpu); int ret; + /* + * Reset stale stack state from the last time this CPU was online. + */ + scs_task_reset(idle); + kasan_unpoison_task_stack(idle); + /* * Some architectures have to walk the irq descriptors to * setup the vector space for the cpu which comes online. diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index b6b106fb36bd..6f58cde1558b 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -61,7 +61,8 @@ static gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask, *phys_limit = dma_to_phys(dev, dma_limit); if (*phys_limit <= DMA_BIT_MASK(zone_dma_bits)) return GFP_DMA; - if (*phys_limit <= DMA_BIT_MASK(32)) + if (*phys_limit <= DMA_BIT_MASK(32) && + !zone_dma32_is_empty(dev_to_node(dev))) return GFP_DMA32; return 0; } @@ -101,7 +102,8 @@ again: if (IS_ENABLED(CONFIG_ZONE_DMA32) && phys_limit < DMA_BIT_MASK(64) && - !(gfp & (GFP_DMA32 | GFP_DMA))) { + !(gfp & (GFP_DMA32 | GFP_DMA)) && + !zone_dma32_is_empty(node)) { gfp |= GFP_DMA32; goto again; } diff --git a/kernel/dma/pool.c b/kernel/dma/pool.c index d4637f72239b..cebfe3537218 100644 --- a/kernel/dma/pool.c +++ b/kernel/dma/pool.c @@ -74,7 +74,7 @@ static bool cma_in_zone(gfp_t gfp) end = cma_get_base(cma) + size - 1; if (IS_ENABLED(CONFIG_ZONE_DMA) && (gfp & GFP_DMA)) return end <= DMA_BIT_MASK(zone_dma_bits); - if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32)) + if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32) && !zone_dma32_are_empty()) return end <= DMA_BIT_MASK(32); return true; } @@ -156,7 +156,7 @@ static void atomic_pool_work_fn(struct work_struct *work) if (IS_ENABLED(CONFIG_ZONE_DMA)) atomic_pool_resize(atomic_pool_dma, GFP_KERNEL | GFP_DMA); - if (IS_ENABLED(CONFIG_ZONE_DMA32)) + if (IS_ENABLED(CONFIG_ZONE_DMA32) && !zone_dma32_are_empty()) atomic_pool_resize(atomic_pool_dma32, GFP_KERNEL | GFP_DMA32); atomic_pool_resize(atomic_pool_kernel, GFP_KERNEL); @@ -212,7 +212,7 @@ static int __init dma_atomic_pool_init(void) if (!atomic_pool_dma) ret = -ENOMEM; } - if (IS_ENABLED(CONFIG_ZONE_DMA32)) { + if (IS_ENABLED(CONFIG_ZONE_DMA32) && !zone_dma32_are_empty()) { atomic_pool_dma32 = __dma_atomic_pool_init(atomic_pool_size, GFP_KERNEL | GFP_DMA32); if (!atomic_pool_dma32) @@ -227,7 +227,7 @@ postcore_initcall(dma_atomic_pool_init); static inline struct gen_pool *dma_guess_pool(struct gen_pool *prev, gfp_t gfp) { if (prev == NULL) { - if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32)) + if (IS_ENABLED(CONFIG_ZONE_DMA32) && (gfp & GFP_DMA32) && !zone_dma32_are_empty()) return atomic_pool_dma32; if (IS_ENABLED(CONFIG_ZONE_DMA) && (gfp & GFP_DMA)) return atomic_pool_dma; diff --git a/kernel/fork.c b/kernel/fork.c index d78ac0426d77..bdca9cfa9df7 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -978,6 +978,8 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) #ifdef CONFIG_MEMCG tsk->active_memcg = NULL; #endif + memset(&tsk->android_vendor_data1, 0, sizeof(tsk->android_vendor_data1)); + memset(&tsk->android_oem_data1, 0, sizeof(tsk->android_oem_data1)); trace_android_vh_dup_task_struct(tsk, orig); return tsk; diff --git a/kernel/sched/core.c b/kernel/sched/core.c index fea78a7527f1..b7d2f596c58b 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6347,6 +6347,8 @@ static void do_sched_yield(void) schedstat_inc(rq->yld_count); current->sched_class->yield_task(rq); + trace_android_rvh_do_sched_yield(rq); + preempt_disable(); rq_unlock_irq(rq, &rf); sched_preempt_enable_no_resched(); @@ -6777,9 +6779,6 @@ void __init init_idle(struct task_struct *idle, int cpu) idle->se.exec_start = sched_clock(); idle->flags |= PF_IDLE; - scs_task_reset(idle); - kasan_unpoison_task_stack(idle); - #ifdef CONFIG_SMP /* * Its possible that init_idle() gets called multiple times on a task, @@ -6935,7 +6934,6 @@ void idle_task_exit(void) finish_arch_post_lock_switch(); } - scs_task_reset(current); /* finish_cpu(), as ran on the BP, will clean up the active_mm state */ } diff --git a/samples/crypto/fips140_lab_test.c b/samples/crypto/fips140_lab_test.c new file mode 100644 index 000000000000..dd2324b8f84a --- /dev/null +++ b/samples/crypto/fips140_lab_test.c @@ -0,0 +1,187 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright 2021 Google LLC + * + * This is a sample program which calls some ioctls on /dev/fips140 and prints + * the results. The purpose of this program is to allow the FIPS certification + * lab to test some services of fips140.ko, which they are required to do. This + * is a sample program only, and it can be modified by the lab as needed. This + * program must be run as root, and it only works if the system has loaded a + * build of fips140.ko with evaluation testing support enabled. + * + * This program can be compiled and run on an Android device as follows: + * + * NDK_DIR=$HOME/android-ndk-r23b # adjust directory path as needed + * $NDK_DIR/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android31-clang \ + * fips140_lab_test.c -O2 -Wall -o fips140_lab_test + * adb push fips140_lab_test /data/local/tmp/ + * adb root + * adb shell /data/local/tmp/fips140_lab_test + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../../crypto/fips140-eval-testing-uapi.h" + +static int fips140_dev_fd = -1; + +#define ARRAY_SIZE(A) (sizeof(A) / sizeof((A)[0])) + +static const char *booltostr(bool b) +{ + return b ? "true" : "false"; +} + +static void __attribute__((noreturn)) +do_die(const char *format, va_list va, int err) +{ + fputs("ERROR: ", stderr); + vfprintf(stderr, format, va); + if (err) + fprintf(stderr, ": %s", strerror(err)); + putc('\n', stderr); + exit(1); +} + +static void __attribute__((noreturn, format(printf, 1, 2))) +die_errno(const char *format, ...) +{ + va_list va; + + va_start(va, format); + do_die(format, va, errno); + va_end(va); +} + +static void __attribute__((noreturn, format(printf, 1, 2))) +die(const char *format, ...) +{ + va_list va; + + va_start(va, format); + do_die(format, va, 0); + va_end(va); +} + +static int get_fips140_device_number(void) +{ + FILE *f; + char line[128]; + int number; + char name[32]; + + f = fopen("/proc/devices", "r"); + if (!f) + die_errno("failed to open /proc/devices"); + while (fgets(line, sizeof(line), f)) { + if (sscanf(line, "%d %31s", &number, name) == 2 && + strcmp(name, "fips140") == 0) + return number; + } + fclose(f); + die("fips140 device node is unavailable.\n" +"The fips140 device node is only available when the fips140 module is loaded\n" +"and has been built with evaluation testing support."); +} + +static void create_fips140_node_if_needed(void) +{ + struct stat stbuf; + int major; + + if (stat("/dev/fips140", &stbuf) == 0) + return; + + major = get_fips140_device_number(); + if (mknod("/dev/fips140", S_IFCHR | 0600, makedev(major, 1)) != 0) + die_errno("failed to create fips140 device node"); +} + +static bool fips140_is_approved_service(const char *name) +{ + int ret = ioctl(fips140_dev_fd, FIPS140_IOCTL_IS_APPROVED_SERVICE, name); + + if (ret < 0) + die_errno("FIPS140_IOCTL_IS_APPROVED_SERVICE unexpectedly failed"); + if (ret == 1) + return true; + if (ret == 0) + return false; + die("FIPS140_IOCTL_IS_APPROVED_SERVICE returned unexpected value %d", + ret); +} + +static const char *fips140_module_version(void) +{ + char buf[256]; + char *str; + int ret = ioctl(fips140_dev_fd, FIPS140_IOCTL_MODULE_VERSION, buf); + + if (ret < 0) + die_errno("FIPS140_IOCTL_MODULE_VERSION unexpectedly failed"); + if (ret != 0) + die("FIPS140_IOCTL_MODULE_VERSION returned unexpected value %d", ret); + str = strdup(buf); + if (!str) + die("out of memory"); + return str; +} + +static const char * const services_to_check[] = { + "aes", + "cbc(aes)", + "cbcmac(aes)", + "cmac(aes)", + "ctr(aes)", + "cts(cbc(aes))", + "ecb(aes)", + "essiv(cbc(aes),sha256)", + "gcm(aes)", + "hmac(sha1)", + "hmac(sha224)", + "hmac(sha256)", + "hmac(sha384)", + "hmac(sha512)", + "jitterentropy_rng", + "sha1", + "sha224", + "sha256", + "sha384", + "sha512", + "stdrng", + "xcbc(aes)", + "xts(aes)", +}; + +int main(void) +{ + size_t i; + + if (getuid() != 0) + die("This program requires root. Run 'adb root' first."); + + create_fips140_node_if_needed(); + + fips140_dev_fd = open("/dev/fips140", O_RDONLY); + if (fips140_dev_fd < 0) + die_errno("failed to open /dev/fips140"); + + printf("fips140_module_version() => \"%s\"\n", fips140_module_version()); + for (i = 0; i < ARRAY_SIZE(services_to_check); i++) { + const char *service = services_to_check[i]; + + printf("fips140_is_approved_service(\"%s\") => %s\n", service, + booltostr(fips140_is_approved_service(service))); + } + return 0; +} diff --git a/scripts/module.lds.S b/scripts/module.lds.S index 8b9dcec11d1e..6cca5d88744e 100644 --- a/scripts/module.lds.S +++ b/scripts/module.lds.S @@ -71,6 +71,7 @@ SECTIONS { *(.text..L.cfi.jumptable .text..L.cfi.jumptable.*) __cfi_jt_end = .; *(.text.._end) + *(.text.._fips140_unchecked) } #endif }