diff --git a/android/GKI_VERSION b/android/GKI_VERSION index 5765abe85cea..28f2366794e6 100644 --- a/android/GKI_VERSION +++ b/android/GKI_VERSION @@ -1 +1 @@ -LTS_5.4.61_874de1d962e8 +LTS_5.4.61_dc2d5a0ace05 diff --git a/android/abi_gki_aarch64.xml b/android/abi_gki_aarch64.xml index 86c4dcbfb904..715bd63ce516 100644 --- a/android/abi_gki_aarch64.xml +++ b/android/abi_gki_aarch64.xml @@ -2,13 +2,13 @@ - - + + - - + + - + @@ -23,32 +23,32 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - - + + + + - + @@ -56,68 +56,68 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + - - - - + + + + - - - + + + - + - - - - - + + + + + - - + + - + - - + + @@ -129,100 +129,100 @@ - + - + - - - - - - - - + + + + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - + + + + + + + - + - - + + - - - + + + - - + + - - - - + + + + - + - - - - - - - - - + + + + + + + + + - + - - - - - - - + + + + + + + - - - - + + + + @@ -230,45 +230,45 @@ - + - + - - + + - + - + - - - + + + - + - + - - - - - - - - - + + + + + + + + + @@ -296,15 +296,15 @@ - - + + - + @@ -312,26 +312,26 @@ - + - - - - + + + + - + - - - - - - + + + + + + - + - + @@ -339,247 +339,248 @@ - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - - - - + + + + + + + + + - + - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + - + @@ -590,26 +591,26 @@ - + - - - - - - - - - + + + + + + + + + - + - - - + + + @@ -617,82 +618,82 @@ - + - - + + - + - - + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + - - - - - - - - - + + + + + + + + + - - + + - + - + - - + + - - - + + + @@ -707,108 +708,108 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -849,234 +850,236 @@ - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1091,21 +1094,21 @@ - - - - - - - - + + + + + + + + - + - - - + + + @@ -1114,16 +1117,16 @@ - - - - - - - + + + + + + + - + @@ -1132,416 +1135,416 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - + + + + + - + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - + - - - - - - + + + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - + + + + - + - + - + - + - + - - - + + + - - - - - - - + + + + + + + @@ -1556,141 +1559,141 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - + + + - + - - - + + + - - + + - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - - + + + - + @@ -1704,63 +1707,63 @@ - + - - + + - - + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + @@ -1773,10 +1776,10 @@ - - - - + + + + @@ -1785,121 +1788,121 @@ - + - - + + - - - + + + - - - - - - - - - + + + + + + + + + - - - + + + - - - - - - + + + + + + - - + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - + - - - - - - - + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + @@ -1907,133 +1910,133 @@ - - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + - + - - - + + + @@ -2043,66 +2046,67 @@ - + - - - + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - - - + + + + - - - - - - - - + + + + + + + + - - - - - - - + + + + + + + @@ -2115,15 +2119,16 @@ - - + + - + + @@ -2141,25 +2146,25 @@ - - - - - + + + + + - - - + + + - - + + - - + + - - + + @@ -2177,28 +2182,28 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + @@ -2207,53 +2212,53 @@ - - - - + + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2276,99 +2281,99 @@ - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - + - - - - - - + + + + + + @@ -2377,192 +2382,194 @@ - - - - - - - - - + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - - + + - - - + + + - - - - + + + + - - - - + + + + - + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -2576,206 +2583,208 @@ - - - - - - + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2785,10 +2794,10 @@ - - - - + + + + @@ -2796,8 +2805,9 @@ - + + @@ -2807,86 +2817,87 @@ - + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - + + - - - - - - + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - + @@ -2908,9 +2919,9 @@ - - - + + + @@ -2918,127 +2929,127 @@ - - - - - - + + + + + + - + - + - - - + + + - - + + - + - + - - - + + + - - - - + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + - + - - + + @@ -3052,123 +3063,123 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - + + - + - - + + - + - - - - + + + + - - - - + + + + - - - + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -3194,144 +3205,146 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + - - - - + + + + - + - - - - + + + + - + - + - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3346,234 +3359,234 @@ - - - - - - - - + + + + + + + + - - + + - + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3582,10 +3595,10 @@ - + - + @@ -3594,7 +3607,7 @@ - + @@ -3617,17 +3630,17 @@ - - - - + + + + - - - + + + - - + + @@ -3636,52 +3649,52 @@ - - - - + + + + - - - - - - + + + + + + - + - - - - - + + + + + - - - - - - + + + + + + - + - - - - - + + + + + - + @@ -3689,234 +3702,237 @@ - + - - - - - - + + + + + + - + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + - - - + + + - + - - + + + - + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - - + + - - + + - - - + + + - + - - - - - - - - - - + + + + + + + + + + - + - - - - - - - - - - + + + + + + + + + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - + @@ -3929,307 +3945,310 @@ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - + + + - - - - - - - + + + + + + + - - - - - - + + + + + + - + - + - - - - - + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - + + + + - - + + - - + + @@ -4244,28 +4263,28 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - + + @@ -4274,43 +4293,43 @@ - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + @@ -4344,88 +4363,89 @@ - + - + - + - + - - - + + + - + - + - - + + - - + + - - + + + - + - + - + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + @@ -4435,13 +4455,13 @@ - - + + - - - + + + @@ -4453,22 +4473,50 @@ - + - - + + - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -4551,6 +4599,7 @@ + @@ -4560,7 +4609,6 @@ - @@ -4673,7 +4721,7 @@ - + @@ -4835,7 +4883,7 @@ - + @@ -4984,7 +5032,7 @@ - + @@ -5054,258 +5102,247 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - + - + - + - + - + - + - + @@ -5321,38 +5358,38 @@ - + - + - + - + - + - + - - + + - + - + - + - + @@ -5405,202 +5442,205 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -6843,7 +6883,7 @@ - + @@ -7393,7 +7433,7 @@ - + @@ -7877,7 +7917,7 @@ - + @@ -8823,7 +8863,7 @@ - + @@ -9042,7 +9082,7 @@ - + @@ -10100,7 +10140,7 @@ - + @@ -10437,7 +10477,7 @@ - + @@ -10948,16 +10988,19 @@ - + - + - + - + + + + @@ -11345,7 +11388,7 @@ - + @@ -11374,7 +11417,7 @@ - + @@ -11422,7 +11465,7 @@ - + @@ -12151,30 +12194,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -12355,7 +12374,7 @@ - + @@ -12363,7 +12382,7 @@ - + @@ -12371,7 +12390,7 @@ - + @@ -12877,6 +12896,7 @@ + @@ -13938,6 +13958,11 @@ + + + + + @@ -14158,31 +14183,31 @@ - + - + - + - + - + - + - + - + - + - + @@ -14196,7 +14221,7 @@ - + @@ -14283,12 +14308,12 @@ - + - + - + @@ -14358,12 +14383,12 @@ - + - + - + @@ -14408,6 +14433,17 @@ + + + + + + + + + + + @@ -14416,12 +14452,12 @@ - + - + - + @@ -14432,12 +14468,12 @@ - + - + - + @@ -14470,7 +14506,6 @@ - @@ -14825,7 +14860,7 @@ - + @@ -14877,7 +14912,7 @@ - + @@ -14906,7 +14941,7 @@ - + @@ -14914,7 +14949,7 @@ - + @@ -15316,6 +15351,7 @@ + @@ -15335,20 +15371,6 @@ - - - - - - - - - - - - - - @@ -16215,7 +16237,7 @@ - + @@ -16449,7 +16471,7 @@ - + @@ -16610,6 +16632,11 @@ + + + + + @@ -17019,7 +17046,7 @@ - + @@ -17338,17 +17365,6 @@ - - - - - - - - - - - @@ -17425,7 +17441,6 @@ - @@ -17460,45 +17475,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -17536,7 +17512,6 @@ - @@ -17684,17 +17659,6 @@ - - - - - - - - - - - @@ -18416,28 +18380,28 @@ - + - + - + - + - + - + - + - + @@ -18448,12 +18412,12 @@ - + - + @@ -18535,7 +18499,7 @@ - + @@ -18786,7 +18750,7 @@ - + @@ -18917,7 +18881,7 @@ - + @@ -18926,7 +18890,7 @@ - + @@ -19163,7 +19127,7 @@ - + @@ -19304,7 +19268,7 @@ - + @@ -19422,7 +19386,7 @@ - + @@ -19905,7 +19869,7 @@ - + @@ -20119,44 +20083,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -20174,7 +20100,7 @@ - + @@ -20305,6 +20231,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20526,7 +20490,7 @@ - + @@ -20649,7 +20613,7 @@ - + @@ -20658,7 +20622,7 @@ - + @@ -20935,7 +20899,7 @@ - + @@ -20957,7 +20921,7 @@ - + @@ -21642,7 +21606,7 @@ - + @@ -21650,7 +21614,7 @@ - + @@ -21664,7 +21628,6 @@ - @@ -21744,6 +21707,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22420,8 +22536,8 @@ - - + + @@ -22738,7 +22854,7 @@ - + @@ -22830,6 +22946,11 @@ + + + + + @@ -23183,7 +23304,7 @@ - + @@ -23462,6 +23583,10 @@ + + + + @@ -23554,7 +23679,7 @@ - + @@ -24710,7 +24835,7 @@ - + @@ -24765,7 +24890,7 @@ - + @@ -26665,7 +26790,7 @@ - + @@ -26683,7 +26808,7 @@ - + @@ -27893,7 +28018,7 @@ - + @@ -28018,7 +28143,7 @@ - + @@ -28453,7 +28578,7 @@ - + @@ -28987,17 +29112,6 @@ - - - - - - - - - - - @@ -29037,7 +29151,6 @@ - @@ -29090,17 +29203,6 @@ - - - - - - - - - - - @@ -29174,7 +29276,6 @@ - @@ -30170,7 +30271,7 @@ - + @@ -32155,7 +32256,7 @@ - + @@ -33433,7 +33534,7 @@ - + @@ -33596,14 +33697,14 @@ - + - + @@ -33623,7 +33724,7 @@ - + @@ -33925,13 +34026,13 @@ - + - + @@ -33965,7 +34066,7 @@ - + @@ -34036,7 +34137,7 @@ - + @@ -34183,7 +34284,7 @@ - + @@ -34242,7 +34343,7 @@ - + @@ -34407,7 +34508,7 @@ - + @@ -36554,7 +36655,7 @@ - + @@ -37278,7 +37379,7 @@ - + @@ -37459,7 +37560,7 @@ - + @@ -37657,6 +37758,14 @@ + + + + + + + + @@ -38592,14 +38701,14 @@ - + - - + + @@ -38681,7 +38790,7 @@ - + @@ -38896,7 +39005,7 @@ - + @@ -39074,13 +39183,13 @@ - + - - + + @@ -39426,7 +39535,7 @@ - + @@ -39446,7 +39555,7 @@ - + @@ -39459,7 +39568,7 @@ - + @@ -39843,17 +39952,6 @@ - - - - - - - - - - - @@ -39975,7 +40073,6 @@ - @@ -40273,7 +40370,7 @@ - + @@ -40331,7 +40428,7 @@ - + @@ -40357,7 +40454,7 @@ - + @@ -40366,7 +40463,7 @@ - + @@ -40390,7 +40487,7 @@ - + @@ -40451,7 +40548,7 @@ - + @@ -40906,7 +41003,7 @@ - + @@ -41672,7 +41769,7 @@ - + @@ -42373,17 +42470,6 @@ - - - - - - - - - - - @@ -42447,7 +42533,6 @@ - @@ -42685,7 +42770,7 @@ - + @@ -42923,17 +43008,6 @@ - - - - - - - - - - - @@ -43134,7 +43208,6 @@ - @@ -43905,7 +43978,7 @@ - + @@ -44618,7 +44691,7 @@ - + @@ -44663,7 +44736,7 @@ - + @@ -44924,7 +44997,7 @@ - + @@ -44987,7 +45060,7 @@ - + @@ -45344,6 +45417,13 @@ + + + + + + + @@ -46029,7 +46109,7 @@ - + @@ -46060,7 +46140,7 @@ - + @@ -46212,7 +46292,7 @@ - + @@ -46311,7 +46391,7 @@ - + @@ -46976,7 +47056,7 @@ - + @@ -46999,7 +47079,7 @@ - + @@ -47149,7 +47229,7 @@ - + @@ -47951,7 +48031,7 @@ - + @@ -48220,7 +48300,7 @@ - + @@ -48299,7 +48379,7 @@ - + @@ -48484,7 +48564,7 @@ - + @@ -48733,7 +48813,7 @@ - + @@ -48804,7 +48884,7 @@ - + @@ -48851,13 +48931,13 @@ - + - + @@ -48941,7 +49021,7 @@ - + @@ -48951,7 +49031,7 @@ - + @@ -49366,7 +49446,7 @@ - + @@ -49430,7 +49510,7 @@ - + @@ -49487,7 +49567,7 @@ - + @@ -49626,7 +49706,7 @@ - + @@ -49657,7 +49737,7 @@ - + @@ -49668,7 +49748,7 @@ - + @@ -49757,7 +49837,7 @@ - + @@ -49927,7 +50007,7 @@ - + @@ -49946,7 +50026,7 @@ - + @@ -49983,7 +50063,7 @@ - + @@ -50107,7 +50187,7 @@ - + @@ -50128,7 +50208,7 @@ - + @@ -50165,7 +50245,7 @@ - + @@ -50259,7 +50339,7 @@ - + @@ -50318,7 +50398,7 @@ - + @@ -51330,7 +51410,6 @@ - @@ -51390,6 +51469,7 @@ + @@ -52298,7 +52378,7 @@ - + @@ -52313,7 +52393,7 @@ - + @@ -52321,7 +52401,7 @@ - + @@ -52598,7 +52678,7 @@ - + @@ -52763,7 +52843,7 @@ - + @@ -52814,7 +52894,7 @@ - + @@ -53040,7 +53120,7 @@ - + @@ -53354,7 +53434,7 @@ - + @@ -53685,41 +53765,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -53923,7 +53968,7 @@ - + @@ -53942,7 +53987,6 @@ - @@ -53966,7 +54010,7 @@ - + @@ -53974,7 +54018,7 @@ - + @@ -54166,6 +54210,17 @@ + + + + + + + + + + + @@ -54828,9 +54883,9 @@ - + - + @@ -54859,12 +54914,12 @@ - + - + @@ -55164,7 +55219,7 @@ - + @@ -55258,7 +55313,7 @@ - + @@ -55282,19 +55337,8 @@ - - - - - - - - - - - - - + + @@ -55439,14 +55483,6 @@ - - - - - - - - @@ -55456,7 +55492,7 @@ - + @@ -55464,9 +55500,9 @@ - - - + + + @@ -55493,6 +55529,20 @@ + + + + + + + + + + + + + + @@ -55596,17 +55646,17 @@ - + - + - + @@ -55727,7 +55777,6 @@ - @@ -55746,14 +55795,14 @@ - + - + @@ -56109,7 +56158,7 @@ - + @@ -56373,7 +56422,7 @@ - + @@ -56395,7 +56444,7 @@ - + @@ -56405,7 +56454,7 @@ - + @@ -56413,17 +56462,17 @@ - + - + - + @@ -56437,16 +56486,16 @@ - + - + - + @@ -56461,7 +56510,7 @@ - + @@ -56476,7 +56525,7 @@ - + @@ -56485,17 +56534,17 @@ - + - + - + @@ -56541,7 +56590,7 @@ - + @@ -56549,13 +56598,13 @@ - + - + @@ -56575,7 +56624,7 @@ - + @@ -56968,7 +57017,7 @@ - + @@ -56978,7 +57027,7 @@ - + @@ -57323,6 +57372,11 @@ + + + + + @@ -57346,6 +57400,11 @@ + + + + + @@ -57668,7 +57727,7 @@ - + @@ -57923,7 +57982,7 @@ - + @@ -57935,7 +57994,7 @@ - + @@ -58268,7 +58327,7 @@ - + @@ -58647,7 +58706,7 @@ - + @@ -58678,7 +58737,7 @@ - + @@ -58687,7 +58746,7 @@ - + @@ -58861,6 +58920,10 @@ + + + + @@ -59194,547 +59257,550 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -59760,167 +59826,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -60017,41 +59922,41 @@ - + - + - + - + - - + + - + - + - + - + - + - + - + - + @@ -60128,7 +60033,7 @@ - + @@ -60157,7 +60062,7 @@ - + @@ -61085,7 +60990,7 @@ - + @@ -61291,9 +61196,9 @@ - - - + + + @@ -61416,7 +61321,7 @@ - + @@ -61430,7 +61335,7 @@ - + @@ -61472,7 +61377,7 @@ - + @@ -62675,7 +62580,7 @@ - + @@ -63236,7 +63141,7 @@ - + @@ -63244,8 +63149,8 @@ - - + + @@ -63314,7 +63219,7 @@ - + @@ -63322,7 +63227,7 @@ - + @@ -63627,7 +63532,7 @@ - + @@ -63702,12 +63607,12 @@ - + - + @@ -63734,7 +63639,7 @@ - + @@ -64432,15 +64337,15 @@ - + - + - + - + @@ -64451,7 +64356,7 @@ - + @@ -64459,7 +64364,7 @@ - + @@ -64467,15 +64372,15 @@ - + - + - + - + @@ -64483,48 +64388,48 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -64532,15 +64437,15 @@ - + - + - + - + @@ -64548,34 +64453,34 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -64738,17 +64643,6 @@ - - - - - - - - - - - @@ -64778,7 +64672,7 @@ - + @@ -64858,7 +64752,6 @@ - @@ -64911,17 +64804,6 @@ - - - - - - - - - - - @@ -64979,7 +64861,6 @@ - @@ -65294,7 +65175,7 @@ - + @@ -65504,7 +65385,7 @@ - + @@ -65583,7 +65464,7 @@ - + @@ -65653,7 +65534,7 @@ - + @@ -66074,7 +65955,7 @@ - + @@ -66096,7 +65977,7 @@ - + @@ -66105,7 +65986,7 @@ - + @@ -67351,7 +67232,7 @@ - + @@ -67379,6 +67260,10 @@ + + + + @@ -67435,6 +67320,12 @@ + + + + + + @@ -67630,7 +67521,7 @@ - + @@ -67702,7 +67593,7 @@ - + @@ -68674,12 +68565,12 @@ - + - + @@ -69031,6 +68922,13 @@ + + + + + + + @@ -69632,7 +69530,7 @@ - + @@ -70829,7 +70727,7 @@ - + @@ -72815,7 +72713,7 @@ - + @@ -72829,7 +72727,7 @@ - + @@ -73019,7 +72917,7 @@ - + @@ -73029,20 +72927,20 @@ - + - + - + @@ -73335,13 +73233,13 @@ - + - + @@ -73453,7 +73351,7 @@ - + @@ -73623,7 +73521,7 @@ - + @@ -73761,7 +73659,7 @@ - + @@ -73820,12 +73718,12 @@ - + - + @@ -74321,7 +74219,7 @@ - + @@ -74333,7 +74231,7 @@ - + @@ -74350,7 +74248,7 @@ - + @@ -74381,7 +74279,7 @@ - + @@ -74559,17 +74457,6 @@ - - - - - - - - - - - @@ -74663,12 +74550,12 @@ - + - + @@ -74849,7 +74736,6 @@ - @@ -75086,7 +74972,7 @@ - + @@ -76022,19 +75908,19 @@ - + - + - + @@ -76119,7 +76005,7 @@ - + @@ -76339,7 +76225,7 @@ - + @@ -77398,17 +77284,6 @@ - - - - - - - - - - - @@ -77420,7 +77295,6 @@ - @@ -77501,7 +77375,7 @@ - + @@ -77963,7 +77837,7 @@ - + @@ -78437,7 +78311,7 @@ - + @@ -78447,7 +78321,7 @@ - + @@ -78486,7 +78360,7 @@ - + @@ -78507,7 +78381,7 @@ - + @@ -78540,12 +78414,12 @@ - + - + @@ -78634,7 +78508,7 @@ - + @@ -78646,7 +78520,7 @@ - + @@ -79497,6 +79371,14 @@ + + + + + + + + @@ -79510,17 +79392,6 @@ - - - - - - - - - - - @@ -79589,25 +79460,20 @@ - - - - - - - - - - - - + + + + + + + @@ -79615,7 +79481,6 @@ - @@ -79854,7 +79719,7 @@ - + @@ -81228,17 +81093,6 @@ - - - - - - - - - - - @@ -81693,6 +81547,17 @@ + + + + + + + + + + + @@ -81932,7 +81797,7 @@ - + @@ -81978,7 +81843,7 @@ - + @@ -82057,7 +81922,7 @@ - + @@ -82310,7 +82175,7 @@ - + @@ -83421,7 +83286,7 @@ - + @@ -83444,7 +83309,7 @@ - + @@ -83811,13 +83676,13 @@ - + - + @@ -83860,7 +83725,7 @@ - + @@ -83885,7 +83750,7 @@ - + @@ -83893,7 +83758,7 @@ - + @@ -84145,7 +84010,7 @@ - + @@ -84543,30 +84408,30 @@ - + - + - + - + - + @@ -84625,13 +84490,13 @@ - + - + @@ -84789,6 +84654,10 @@ + + + + @@ -85287,7 +85156,7 @@ - + @@ -85296,12 +85165,12 @@ - + - + @@ -85336,7 +85205,7 @@ - + @@ -85345,7 +85214,7 @@ - + @@ -85433,13 +85302,13 @@ - + - + @@ -85489,7 +85358,7 @@ - + @@ -85722,14 +85591,14 @@ - + - + @@ -86536,7 +86405,7 @@ - + @@ -86612,7 +86481,7 @@ - + @@ -86620,7 +86489,7 @@ - + @@ -86631,21 +86500,21 @@ - + - + - + @@ -86654,7 +86523,7 @@ - + @@ -86667,7 +86536,7 @@ - + @@ -86678,26 +86547,26 @@ - + - + - + - + @@ -86739,7 +86608,7 @@ - + @@ -86758,14 +86627,14 @@ - + - + @@ -86776,7 +86645,7 @@ - + @@ -86840,7 +86709,7 @@ - + @@ -86902,7 +86771,7 @@ - + @@ -86949,14 +86818,14 @@ - + - + @@ -87031,7 +86900,7 @@ - + @@ -87096,17 +86965,6 @@ - - - - - - - - - - - @@ -87145,7 +87003,6 @@ - @@ -87556,32 +87413,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -87685,7 +87516,7 @@ - + @@ -87694,7 +87525,7 @@ - + @@ -87725,6 +87556,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -87746,13 +87603,13 @@ - + - + @@ -87794,7 +87651,7 @@ - + @@ -87844,7 +87701,7 @@ - + @@ -87877,7 +87734,7 @@ - + @@ -87910,7 +87767,7 @@ - + @@ -88014,14 +87871,6 @@ - - - - - - - - @@ -88142,7 +87991,7 @@ - + @@ -88411,7 +88260,7 @@ - + @@ -88434,7 +88283,7 @@ - + @@ -88535,7 +88384,7 @@ - + @@ -88567,11 +88416,11 @@ - + - + @@ -88714,18 +88563,23 @@ - + - + - + + + + + + - + - + @@ -88753,6 +88607,14 @@ + + + + + + + + @@ -88966,7 +88828,7 @@ - + @@ -89095,17 +88957,6 @@ - - - - - - - - - - - @@ -89160,7 +89011,7 @@ - + @@ -89168,7 +89019,7 @@ - + @@ -89190,7 +89041,7 @@ - + @@ -89313,7 +89164,7 @@ - + @@ -89329,7 +89180,7 @@ - + @@ -89423,7 +89274,6 @@ - @@ -89452,8 +89302,12 @@ + + + + @@ -89702,7 +89556,7 @@ - + @@ -89844,7 +89698,7 @@ - + @@ -90189,45 +90043,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -90263,18 +90078,8 @@ - - - - - - - - - - @@ -90323,47 +90128,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -90592,7 +90361,7 @@ - + @@ -90602,7 +90371,7 @@ - + @@ -90868,17 +90637,43 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90889,6 +90684,16 @@ + + + + + + + + + + @@ -90900,23 +90705,11 @@ - - - - - - - - - - - - @@ -90982,10 +90775,10 @@ - - - - + + + + @@ -91016,7 +90809,7 @@ - + @@ -91081,11 +90874,7 @@ - - - - @@ -91156,7 +90945,7 @@ - + @@ -91833,7 +91622,7 @@ - + @@ -92024,7 +91813,7 @@ - + @@ -92258,17 +92047,6 @@ - - - - - - - - - - - @@ -92359,7 +92137,6 @@ - @@ -92610,22 +92387,10 @@ - - - - - - - - - - - - @@ -92757,7 +92522,7 @@ - + @@ -92916,12 +92681,12 @@ - - - - - - + + + + + + @@ -93093,6 +92858,11 @@ + + + + + @@ -93307,7 +93077,7 @@ - + @@ -93421,7 +93191,7 @@ - + @@ -93834,6 +93604,7 @@ + @@ -94756,7 +94527,7 @@ - + @@ -94796,7 +94567,7 @@ - + @@ -95853,7 +95624,7 @@ - + @@ -95975,7 +95746,7 @@ - + @@ -96014,7 +95785,7 @@ - + @@ -99129,18 +98900,18 @@ - + - + - + - + - + @@ -99554,7 +99325,7 @@ - + @@ -100047,13 +99818,13 @@ - + - + - + @@ -100095,7 +99866,7 @@ - + @@ -100127,7 +99898,7 @@ - + @@ -100274,7 +100045,7 @@ - + @@ -100524,7 +100295,7 @@ - + @@ -100811,7 +100582,7 @@ - + @@ -101132,7 +100903,7 @@ - + @@ -101512,7 +101283,7 @@ - + @@ -101548,7 +101319,7 @@ - + @@ -102166,19 +101937,8 @@ - - - - - - - - - - - - + @@ -102251,7 +102011,7 @@ - + @@ -102475,7 +102235,7 @@ - + @@ -102483,7 +102243,7 @@ - + @@ -102547,7 +102307,7 @@ - + @@ -102607,14 +102367,14 @@ - + - + @@ -102645,7 +102405,7 @@ - + @@ -102749,7 +102509,7 @@ - + @@ -102990,7 +102750,7 @@ - + @@ -103237,7 +102997,6 @@ - @@ -104270,7 +104029,7 @@ - + @@ -104286,7 +104045,7 @@ - + @@ -104294,7 +104053,7 @@ - + @@ -104308,7 +104067,7 @@ - + @@ -104316,7 +104075,7 @@ - + @@ -104324,8 +104083,7 @@ - - + @@ -104720,32 +104478,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -104767,12 +104499,12 @@ - + - + @@ -104797,8 +104529,6 @@ - - @@ -104857,7 +104587,6 @@ - @@ -105122,24 +104851,13 @@ - + - - - - - - - - - - - @@ -105220,7 +104938,6 @@ - @@ -107049,7 +106766,7 @@ - + @@ -107062,6 +106779,11 @@ + + + + + @@ -107338,26 +107060,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -107465,6 +107167,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -107687,6 +107409,23 @@ + + + + + + + + + + + + + + + + + @@ -108114,7 +107853,7 @@ - + @@ -108159,7 +107898,7 @@ - + @@ -108234,25 +107973,240 @@ + + + + - + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -108401,11 +108355,22 @@ - + + + + + + + + + + + + @@ -108588,6 +108553,13 @@ + + + + + + + @@ -108595,6 +108567,10 @@ + + + + @@ -108809,8 +108785,8 @@ - - + + @@ -108869,17 +108845,6 @@ - - - - - - - - - - - @@ -108910,7 +108875,6 @@ - @@ -109033,17 +108997,39 @@ - + + + + + + + + + + + + + + + - + - - - - - - + + + + + + + + + + + + + + @@ -109051,15 +109037,15 @@ - - + + - - + + - + @@ -109067,100 +109053,100 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - - - + + + + + @@ -109221,14 +109207,6 @@ - - - - - - - - @@ -109279,7 +109257,7 @@ - + @@ -109352,7 +109330,7 @@ - + @@ -109485,7 +109463,7 @@ - + @@ -109615,119 +109593,119 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -109745,7 +109723,7 @@ - + @@ -109760,10 +109738,10 @@ - + - + @@ -109787,249 +109765,241 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - @@ -110247,56 +110217,56 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110508,50 +110478,50 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110560,78 +110530,78 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -110655,7 +110625,7 @@ - + @@ -110664,25 +110634,25 @@ - + - + - + - + - + - + - + @@ -110724,7 +110694,7 @@ - + @@ -110804,6 +110774,14 @@ + + + + + + + + @@ -111343,14 +111321,6 @@ - - - - - - - - @@ -111522,7 +111492,7 @@ - + @@ -111539,7 +111509,7 @@ - + @@ -111551,7 +111521,7 @@ - + @@ -111604,6 +111574,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -111616,6 +111689,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -111624,7 +111786,7 @@ - + @@ -111638,14 +111800,6 @@ - - - - - - - - @@ -111671,6 +111825,10 @@ + + + + @@ -111795,7 +111953,7 @@ - + @@ -111810,27 +111968,40 @@ - + - + - + - + - + + + + + + - + + + + + + + + + @@ -111844,7 +112015,6 @@ - @@ -111875,6 +112045,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -111889,38 +112142,48 @@ + - + + + + + + - + + + + + - + - + - + @@ -112113,7 +112376,7 @@ - + @@ -112147,7 +112410,7 @@ - + @@ -112324,7 +112587,7 @@ - + @@ -112534,48 +112797,14 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -112583,7 +112812,7 @@ - + @@ -112591,22 +112820,6 @@ - - - - - - - - - - - - - - - - @@ -113026,7 +113239,7 @@ - + @@ -113384,7 +113597,7 @@ - + @@ -113458,7 +113671,7 @@ - + @@ -113500,12 +113713,12 @@ - + - + @@ -113573,7 +113786,7 @@ - + @@ -113603,7 +113816,7 @@ - + @@ -113616,13 +113829,13 @@ - + - + @@ -113639,7 +113852,7 @@ - + @@ -113655,14 +113868,14 @@ - + - + @@ -113679,7 +113892,7 @@ - + @@ -113695,12 +113908,12 @@ - + - + @@ -114320,52 +114533,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -114406,82 +114619,104 @@ - + - + - + - + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - - - - + - + - + - - - - + - + - + - + + + + - + - + - + + + + + + + + + + + + + + + + + + + + @@ -114506,6 +114741,14 @@ + + + + + + + + @@ -114568,7 +114811,45 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -114576,7 +114857,7 @@ - + @@ -114673,9 +114954,9 @@ - - - + + + @@ -114841,51 +115122,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + - + @@ -114901,24 +115191,24 @@ - + - + - + - + - + - + - + @@ -114948,7 +115238,7 @@ - + @@ -115016,9 +115306,9 @@ - + - + @@ -115164,7 +115454,7 @@ - + @@ -115175,7 +115465,7 @@ - + @@ -115375,6 +115665,14 @@ + + + + + + + + @@ -115486,7 +115784,7 @@ - + @@ -115595,7 +115893,7 @@ - + @@ -115913,6 +116211,7 @@ + @@ -115948,14 +116247,14 @@ - + - + @@ -116052,7 +116351,7 @@ - + @@ -116349,7 +116648,7 @@ - + @@ -116406,6 +116705,14 @@ + + + + + + + + @@ -116891,15 +117198,15 @@ - + - + - + - + @@ -117041,7 +117348,7 @@ - + @@ -117313,260 +117620,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -117642,7 +117696,7 @@ - + @@ -117650,17 +117704,6 @@ - - - - - - - - - - - @@ -118057,7 +118100,7 @@ - + @@ -118337,7 +118380,7 @@ - + @@ -118373,7 +118416,7 @@ - + @@ -118506,7 +118549,7 @@ - + @@ -118558,13 +118601,13 @@ - + - + @@ -118704,7 +118747,7 @@ - + @@ -118747,7 +118790,7 @@ - + @@ -118766,7 +118809,7 @@ - + @@ -118794,17 +118837,6 @@ - - - - - - - - - - - @@ -119012,27 +119044,27 @@ - + - + - + - + @@ -119731,7 +119763,7 @@ - + @@ -119784,7 +119816,7 @@ - + @@ -119798,7 +119830,7 @@ - + @@ -119817,7 +119849,7 @@ - + @@ -119841,7 +119873,7 @@ - + @@ -119967,7 +119999,7 @@ - + @@ -119984,7 +120016,7 @@ - + @@ -120475,7 +120507,7 @@ - + @@ -120764,7 +120796,7 @@ - + @@ -120778,7 +120810,7 @@ - + @@ -120786,7 +120818,7 @@ - + @@ -120952,7 +120984,7 @@ - + @@ -120971,7 +121003,7 @@ - + @@ -121001,7 +121033,7 @@ - + @@ -121147,7 +121179,7 @@ - + @@ -121197,7 +121229,7 @@ - + @@ -121309,7 +121341,7 @@ - + @@ -121355,7 +121387,7 @@ - + @@ -122232,7 +122264,6 @@ - @@ -122245,7 +122276,7 @@ - + @@ -122293,7 +122324,7 @@ - + @@ -122303,16 +122334,19 @@ - + - + - + + + + - + @@ -122460,7 +122494,7 @@ - + @@ -122756,12 +122790,12 @@ - + - + @@ -122786,7 +122820,7 @@ - + @@ -122812,13 +122846,13 @@ - + - + @@ -122826,35 +122860,35 @@ - + - + - + - + - + @@ -122863,28 +122897,28 @@ - + - + - + - + @@ -122892,12 +122926,12 @@ - + - + @@ -122905,18 +122939,18 @@ - + - + - + @@ -123034,7 +123068,7 @@ - + @@ -123078,7 +123112,7 @@ - + @@ -123110,7 +123144,7 @@ - + @@ -123618,7 +123652,7 @@ - + @@ -123639,8 +123673,8 @@ - - + + @@ -123707,7 +123741,7 @@ - + @@ -123773,22 +123807,6 @@ - - - - - - - - - - - - - - - - @@ -123972,6 +123990,10 @@ + + + + @@ -124019,114 +124041,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -124333,7 +124247,7 @@ - + @@ -124878,7 +124792,7 @@ - + @@ -125821,7 +125735,7 @@ - + @@ -126643,7 +126557,7 @@ - + @@ -126680,7 +126594,7 @@ - + @@ -126978,7 +126892,7 @@ - + @@ -127040,7 +126954,7 @@ - + @@ -127632,7 +127546,7 @@ - + @@ -127698,13 +127612,13 @@ - + - + @@ -129408,7 +129322,7 @@ - + @@ -130047,6 +129961,6 @@ diff --git a/android/abi_gki_aarch64_d6430e6763.xml b/android/abi_gki_aarch64_d6430e6763.xml index 80259adebf48..5c75765b2018 100644 --- a/android/abi_gki_aarch64_d6430e6763.xml +++ b/android/abi_gki_aarch64_d6430e6763.xml @@ -2,13 +2,13 @@ - - + + - - + + - + @@ -17,126 +17,127 @@ - - - - - + + + + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - + + - + - - - + + + - + - + + - + - - + + - + - - + + - - - - + + + + - - - - - + + + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + @@ -144,31 +145,31 @@ - + - + - + - + - - - + + + - - - - - - - - + + + + + + + + @@ -195,162 +196,162 @@ - + - + - + - - - + + + - + - - - + + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - + + + + + + + + - - - - - - + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + @@ -360,62 +361,62 @@ - + - - - - - - - - - + + + + + + + + + - + - + - + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - + + + - + - + - + @@ -425,60 +426,60 @@ - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - + + + + + + + + + + - - - - - - - - + + + + + + + + - + - - - + + + - - - - - - - - - - - - - + + + + + + + + + + + + + @@ -497,136 +498,136 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - + + @@ -634,36 +635,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -678,18 +679,18 @@ - - - - - - + + + + + + - + - - + + @@ -698,326 +699,326 @@ - - - - + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - + + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - - - - + + + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - + - + - + - - + + - - - - - - - + + + + + + + @@ -1029,90 +1030,90 @@ - - - - - - + + + + + + - - - - - - - - - - + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - + @@ -1120,39 +1121,39 @@ - + - - + + - - + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - - - - + + + + + @@ -1167,171 +1168,175 @@ - + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - - + + + - - + + - - - - - - + + + + + + - - + + - - - - - + + + + + + + + - - - - + + + + - - - - - + + + + + - - + + @@ -1352,24 +1357,24 @@ - - - - - + + + + + - - - - - + + + + + - - + + - - + + @@ -1380,13 +1385,13 @@ - - - - - - - + + + + + + + @@ -1395,38 +1400,38 @@ - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -1445,27 +1450,27 @@ - - - - - - + + + + + + - - - - - - - - - + + + + + + + + + - + - - + + @@ -1473,142 +1478,143 @@ - - - - - - - + + + + + + + - - + + - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - + + + + - + - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -1621,125 +1627,125 @@ - - - - + + + + - - - + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1749,18 +1755,19 @@ - - - - + + + + - + + @@ -1768,50 +1775,50 @@ - + - - - - - - - + + + + + + + - + - + - - - + + + - - - - - - - - - - + + + + + + + + + + - - - - - + + + + + - + @@ -1832,411 +1839,411 @@ - + - - - - - + + + + + - + - - + + - + - + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - + + - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - - + + - + - + - - - + + + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + + - - - + + + - + - - - - + + + + - - - - - + + + + + - - - - - - - - + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + @@ -2271,9 +2278,9 @@ - + - + @@ -2281,171 +2288,171 @@ - - - + + + - - - - - + + + + + - + - - - - + + + + - + - - - - - - + + + + + + - + - - + + - - + + - + - - + + - + - + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - + - + - + - - + + - - - - - - - + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + - - - - + + + + - + @@ -2457,212 +2464,212 @@ - - - - - + + + + + - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + - + - - - - - - + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - - - + + + - + - - - + + + @@ -2674,17 +2681,17 @@ - - - - - - - - + + + + + + + + - + @@ -2693,14 +2700,14 @@ - + - - - - - - + + + + + + @@ -2713,62 +2720,62 @@ - + - + - + - - - - + + + + - + - + - + - + - - - - - - - - - - - + + + + + + + + + + + - + - - + + @@ -2779,14 +2786,14 @@ - - - + + + - - - + + + @@ -3036,17 +3043,6 @@ - - - - - - - - - - - @@ -3159,7 +3155,6 @@ - @@ -3227,291 +3222,291 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - + - + @@ -3551,17 +3546,6 @@ - - - - - - - - - - - @@ -3641,63 +3625,62 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - @@ -3852,18 +3835,7 @@ - - - - - - - - - - - - + @@ -4054,7 +4026,6 @@ - @@ -4405,7 +4376,7 @@ - + @@ -4457,7 +4428,7 @@ - + @@ -4486,7 +4457,7 @@ - + @@ -4505,7 +4476,7 @@ - + @@ -4905,20 +4876,6 @@ - - - - - - - - - - - - - - @@ -5613,7 +5570,7 @@ - + @@ -6560,7 +6517,7 @@ - + @@ -6626,7 +6583,7 @@ - + @@ -7047,6 +7004,19 @@ + + + + + + + + + + + + + @@ -7082,7 +7052,7 @@ - + @@ -7189,20 +7159,6 @@ - - - - - - - - - - - - - - @@ -7861,17 +7817,6 @@ - - - - - - - - - - - @@ -7890,7 +7835,7 @@ - + @@ -7898,7 +7843,7 @@ - + @@ -7906,7 +7851,7 @@ - + @@ -7923,7 +7868,7 @@ - + @@ -7993,7 +7938,6 @@ - @@ -8147,7 +8091,7 @@ - + @@ -8409,26 +8353,10 @@ - - - - - - - - - - - - - - - - - - - - + + + + @@ -9645,7 +9573,7 @@ - + @@ -9700,7 +9628,7 @@ - + @@ -11044,7 +10972,7 @@ - + @@ -11136,7 +11064,7 @@ - + @@ -11743,7 +11671,7 @@ - + @@ -11753,7 +11681,7 @@ - + @@ -11792,7 +11720,7 @@ - + @@ -11813,7 +11741,7 @@ - + @@ -11846,12 +11774,12 @@ - + - + @@ -11940,7 +11868,7 @@ - + @@ -11952,7 +11880,7 @@ - + @@ -12573,7 +12501,7 @@ - + @@ -12834,7 +12762,7 @@ - + @@ -12914,7 +12842,7 @@ - + @@ -14326,7 +14254,7 @@ - + @@ -14369,7 +14297,7 @@ - + @@ -15541,13 +15469,13 @@ - + - + @@ -15606,7 +15534,7 @@ - + @@ -16133,7 +16061,7 @@ - + @@ -16167,7 +16095,7 @@ - + @@ -16269,7 +16197,7 @@ - + @@ -16543,7 +16471,7 @@ - + @@ -16706,14 +16634,14 @@ - + - + @@ -16733,7 +16661,7 @@ - + @@ -16848,7 +16776,7 @@ - + @@ -19102,7 +19030,7 @@ - + @@ -19170,6 +19098,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -19924,7 +19874,7 @@ - + @@ -20023,7 +19973,7 @@ - + @@ -21282,7 +21232,7 @@ - + @@ -21340,7 +21290,7 @@ - + @@ -21366,7 +21316,7 @@ - + @@ -21375,7 +21325,7 @@ - + @@ -21399,7 +21349,7 @@ - + @@ -21460,7 +21410,7 @@ - + @@ -22131,7 +22081,7 @@ - + @@ -22359,28 +22309,6 @@ - - - - - - - - - - - - - - - - - - - - - - @@ -22527,7 +22455,6 @@ - @@ -23112,7 +23039,6 @@ - @@ -23189,7 +23115,6 @@ - @@ -23601,7 +23526,7 @@ - + @@ -23624,7 +23549,7 @@ - + @@ -23774,7 +23699,7 @@ - + @@ -24505,7 +24430,7 @@ - + @@ -24774,7 +24699,7 @@ - + @@ -24853,7 +24778,7 @@ - + @@ -25038,7 +24963,7 @@ - + @@ -25287,7 +25212,7 @@ - + @@ -25358,7 +25283,7 @@ - + @@ -25405,13 +25330,13 @@ - + - + @@ -25495,7 +25420,7 @@ - + @@ -25505,7 +25430,7 @@ - + @@ -25920,7 +25845,7 @@ - + @@ -25984,7 +25909,7 @@ - + @@ -26041,7 +25966,7 @@ - + @@ -26189,7 +26114,7 @@ - + @@ -26220,7 +26145,7 @@ - + @@ -26231,7 +26156,7 @@ - + @@ -26320,7 +26245,7 @@ - + @@ -26490,7 +26415,7 @@ - + @@ -26509,7 +26434,7 @@ - + @@ -26546,7 +26471,7 @@ - + @@ -26670,7 +26595,7 @@ - + @@ -26691,7 +26616,7 @@ - + @@ -26728,7 +26653,7 @@ - + @@ -26822,7 +26747,7 @@ - + @@ -26881,7 +26806,7 @@ - + @@ -28817,7 +28742,7 @@ - + @@ -28832,7 +28757,7 @@ - + @@ -28840,7 +28765,7 @@ - + @@ -29117,7 +29042,7 @@ - + @@ -29282,7 +29207,7 @@ - + @@ -29333,7 +29258,7 @@ - + @@ -29555,7 +29480,7 @@ - + @@ -29576,17 +29501,6 @@ - - - - - - - - - - - @@ -29637,7 +29551,7 @@ - + @@ -29727,7 +29641,6 @@ - @@ -29748,314 +29661,314 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30178,39 +30091,39 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -30784,20 +30697,20 @@ - + - + - + - + - + - + @@ -30835,41 +30748,41 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30905,9 +30818,9 @@ - - - + + + @@ -31006,6 +30919,17 @@ + + + + + + + + + + + @@ -31367,60 +31291,60 @@ - - + + - - - + + + - - - + + + - - - + + + - - + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - - + + + @@ -31537,9 +31461,9 @@ - + - + @@ -31554,7 +31478,7 @@ - + @@ -32008,7 +31932,7 @@ - + @@ -32154,7 +32078,7 @@ - + @@ -32163,7 +32087,7 @@ - + @@ -32176,7 +32100,7 @@ - + @@ -32186,7 +32110,7 @@ - + @@ -32411,7 +32335,7 @@ - + @@ -33082,7 +33006,7 @@ - + @@ -33106,16 +33030,16 @@ - + - + - + @@ -33214,7 +33138,7 @@ - + @@ -33222,7 +33146,7 @@ - + @@ -33241,7 +33165,7 @@ - + @@ -33249,23 +33173,23 @@ - + - + - + - + @@ -33278,18 +33202,18 @@ - + - + - + @@ -33297,7 +33221,7 @@ - + @@ -33394,12 +33318,12 @@ - + - + - + @@ -33417,7 +33341,7 @@ - + @@ -34054,7 +33978,7 @@ - + @@ -34309,7 +34233,7 @@ - + @@ -34321,7 +34245,7 @@ - + @@ -34654,7 +34578,7 @@ - + @@ -34921,7 +34845,7 @@ - + @@ -35164,17 +35088,6 @@ - - - - - - - - - - - @@ -35223,7 +35136,6 @@ - @@ -35475,7 +35387,7 @@ - + @@ -36272,7 +36184,7 @@ - + @@ -36667,7 +36579,7 @@ - + @@ -36739,7 +36651,7 @@ - + @@ -36859,7 +36771,7 @@ - + @@ -37024,6 +36936,10 @@ + + + + @@ -37041,7 +36957,6 @@ - @@ -37211,7 +37126,6 @@ - @@ -37571,19 +37485,19 @@ - + - + - + @@ -37663,7 +37577,7 @@ - + @@ -37965,7 +37879,7 @@ - + @@ -37987,7 +37901,7 @@ - + @@ -38614,7 +38528,7 @@ - + @@ -39238,14 +39152,6 @@ - - - - - - - - @@ -39457,35 +39363,12 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - @@ -39577,7 +39460,7 @@ - + @@ -40657,7 +40540,7 @@ - + @@ -40665,7 +40548,7 @@ - + @@ -40692,7 +40575,7 @@ - + @@ -40884,7 +40767,18 @@ - + + + + + + + + + + + + @@ -40892,7 +40786,7 @@ - + @@ -40900,7 +40794,7 @@ - + @@ -41100,6 +40994,22 @@ + + + + + + + + + + + + + + + + @@ -41613,29 +41523,21 @@ - - - - - - - - - + - + - + @@ -41720,7 +41622,7 @@ - + @@ -41776,7 +41678,7 @@ - + @@ -41826,6 +41728,14 @@ + + + + + + + + @@ -41852,6 +41762,14 @@ + + + + + + + + @@ -41928,13 +41846,13 @@ - + - + @@ -42046,7 +41964,7 @@ - + @@ -42216,7 +42134,7 @@ - + @@ -42343,7 +42261,7 @@ - + @@ -42402,12 +42320,12 @@ - + - + @@ -42459,22 +42377,6 @@ - - - - - - - - - - - - - - - - @@ -42637,17 +42539,6 @@ - - - - - - - - - - - @@ -42662,7 +42553,6 @@ - @@ -42709,7 +42599,7 @@ - + @@ -42721,7 +42611,7 @@ - + @@ -42738,7 +42628,7 @@ - + @@ -42769,7 +42659,7 @@ - + @@ -42802,39 +42692,39 @@ - - - - - - + + + + + + - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + - - + + - - + + @@ -43046,7 +42936,7 @@ - + @@ -43422,7 +43312,7 @@ - + @@ -43442,12 +43332,12 @@ - + - + - + @@ -43528,7 +43418,6 @@ - @@ -43715,7 +43604,7 @@ - + @@ -43726,7 +43615,6 @@ - @@ -44148,7 +44036,7 @@ - + @@ -44755,7 +44643,7 @@ - + @@ -46079,7 +45967,7 @@ - + @@ -46686,7 +46574,7 @@ - + @@ -46788,13 +46676,13 @@ - + - + @@ -46837,7 +46725,7 @@ - + @@ -46862,7 +46750,7 @@ - + @@ -46870,7 +46758,7 @@ - + @@ -46902,7 +46790,7 @@ - + @@ -48263,17 +48151,6 @@ - - - - - - - - - - - @@ -48287,7 +48164,6 @@ - @@ -49257,7 +49133,7 @@ - + @@ -49663,7 +49539,7 @@ - + @@ -49874,30 +49750,30 @@ - + - + - + - + - + @@ -49956,13 +49832,13 @@ - + - + @@ -50363,7 +50239,7 @@ - + @@ -50383,7 +50259,7 @@ - + @@ -50396,7 +50272,7 @@ - + @@ -50590,7 +50466,7 @@ - + @@ -50633,7 +50509,7 @@ - + @@ -50815,14 +50691,14 @@ - + - + @@ -51650,7 +51526,7 @@ - + @@ -51690,7 +51566,9 @@ + + @@ -51739,24 +51617,12 @@ - - - - - - - - - - - - @@ -51989,17 +51855,6 @@ - - - - - - - - - - - @@ -52014,7 +51869,6 @@ - @@ -52025,6 +51879,20 @@ + + + + + + + + + + + + + + @@ -52039,6 +51907,14 @@ + + + + + + + + @@ -52112,12 +51988,12 @@ - + - + @@ -52473,7 +52349,7 @@ - + @@ -52650,7 +52526,7 @@ - + @@ -52671,19 +52547,26 @@ + + + + + + + + - - + - + - + @@ -52694,31 +52577,15 @@ - - - - - - - - - - - - - - - - - + - + @@ -52987,57 +52854,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -53068,23 +52886,6 @@ - - - - - - - - - - - - - - - - - @@ -53095,25 +52896,6 @@ - - - - - - - - - - - - - - - - - - - @@ -53168,7 +52950,6 @@ - @@ -53244,167 +53025,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -53594,7 +53214,7 @@ - + @@ -53613,7 +53233,6 @@ - @@ -53995,11 +53614,12 @@ - + + @@ -54240,7 +53860,7 @@ - + @@ -54310,7 +53930,7 @@ - + @@ -54320,7 +53940,7 @@ - + @@ -54437,7 +54057,7 @@ - + @@ -54559,7 +54179,7 @@ - + @@ -54759,12 +54379,12 @@ - + - + - + @@ -55173,205 +54793,208 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -55586,7 +55209,7 @@ - + @@ -56604,7 +56227,7 @@ - + @@ -57227,7 +56850,7 @@ - + @@ -57243,7 +56866,7 @@ - + @@ -57316,7 +56939,7 @@ - + @@ -57606,7 +57229,7 @@ - + @@ -57723,7 +57346,7 @@ - + @@ -57731,7 +57354,7 @@ - + @@ -58014,7 +57637,7 @@ - + @@ -58131,7 +57754,7 @@ - + @@ -58179,7 +57802,7 @@ - + @@ -58798,13 +58421,13 @@ - + - + @@ -58926,7 +58549,7 @@ - + @@ -58977,7 +58600,7 @@ - + @@ -59537,573 +59160,573 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -60318,118 +59941,118 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -60527,7 +60150,7 @@ - + @@ -60719,7 +60342,7 @@ - + @@ -61315,9 +60938,9 @@ - + - + @@ -61378,7 +61001,7 @@ - + @@ -61966,13 +61589,13 @@ - + - + @@ -62014,7 +61637,7 @@ - + @@ -62284,7 +61907,7 @@ - + @@ -62410,7 +62033,7 @@ - + @@ -62573,7 +62196,7 @@ - + @@ -62958,7 +62581,7 @@ - + @@ -63340,7 +62963,7 @@ - + @@ -63394,7 +63017,7 @@ - + @@ -63406,7 +63029,7 @@ - + @@ -63455,7 +63078,7 @@ - + @@ -63617,7 +63240,7 @@ - + @@ -63850,7 +63473,7 @@ - + @@ -64138,7 +63761,7 @@ - + @@ -64470,7 +64093,7 @@ - + @@ -64974,7 +64597,7 @@ - + @@ -65447,7 +65070,7 @@ - + @@ -65909,16 +65532,19 @@ - + - + - + - + + + + @@ -66376,7 +66002,7 @@ - + @@ -66405,7 +66031,7 @@ - + @@ -66483,7 +66109,7 @@ - + @@ -66827,19 +66453,6 @@ - - - - - - - - - - - - - @@ -66876,7 +66489,7 @@ - + @@ -66885,7 +66498,7 @@ - + @@ -67042,7 +66655,7 @@ - + @@ -67050,7 +66663,7 @@ - + @@ -67058,7 +66671,7 @@ - + @@ -67072,7 +66685,7 @@ - + @@ -67127,7 +66740,7 @@ - + @@ -67147,7 +66760,7 @@ - + @@ -67193,17 +66806,17 @@ - + - + - + @@ -67211,7 +66824,7 @@ - + @@ -67247,7 +66860,7 @@ - + @@ -67379,7 +66992,7 @@ - + @@ -67433,7 +67046,7 @@ - + @@ -67462,7 +67075,7 @@ - + @@ -67470,7 +67083,7 @@ - + @@ -67771,7 +67384,7 @@ - + @@ -67956,7 +67569,7 @@ - + @@ -67999,7 +67612,7 @@ - + @@ -68026,7 +67639,7 @@ - + @@ -68038,7 +67651,7 @@ - + @@ -68233,6 +67846,7 @@ + @@ -68379,7 +67993,7 @@ - + @@ -69156,7 +68770,7 @@ - + @@ -69750,6 +69364,11 @@ + + + + + @@ -70096,7 +69715,7 @@ - + @@ -70161,7 +69780,7 @@ - + @@ -70220,7 +69839,7 @@ - + @@ -70236,17 +69855,6 @@ - - - - - - - - - - - @@ -70272,15 +69880,15 @@ - + - + - + - + @@ -70330,7 +69938,7 @@ - + @@ -70341,7 +69949,7 @@ - + @@ -70360,8 +69968,7 @@ - - + @@ -70369,6 +69976,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -70392,27 +70039,6 @@ - - - - - - - - - - - - - - - - - - - - - @@ -70425,7 +70051,7 @@ - + @@ -70433,33 +70059,33 @@ - + - + - + - + - + - + @@ -70472,7 +70098,7 @@ - + @@ -70543,7 +70169,7 @@ - + @@ -70559,12 +70185,12 @@ - + - + @@ -70667,7 +70293,7 @@ - + @@ -70684,17 +70310,6 @@ - - - - - - - - - - - @@ -70710,7 +70325,6 @@ - @@ -70819,8 +70433,6 @@ - - @@ -70987,7 +70599,7 @@ - + @@ -71027,547 +70639,550 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -71617,23 +71232,23 @@ - + - + - + - + - + - + - + @@ -72357,7 +71972,7 @@ - + @@ -73028,7 +72643,7 @@ - + @@ -73145,7 +72760,7 @@ - + @@ -73242,7 +72857,7 @@ - + @@ -73271,7 +72886,7 @@ - + @@ -73882,7 +73497,7 @@ - + @@ -74479,7 +74094,7 @@ - + @@ -75051,7 +74666,7 @@ - + @@ -75794,7 +75409,7 @@ - + @@ -75803,7 +75418,7 @@ - + @@ -75954,14 +75569,6 @@ - - - - - - - - @@ -75971,41 +75578,30 @@ - - - - - - - - - - - - - + + - + - + - + - + - + - + - + - + @@ -76117,7 +75713,7 @@ - + @@ -76718,13 +76314,13 @@ - + - + @@ -76759,7 +76355,7 @@ - + @@ -77231,7 +76827,7 @@ - + @@ -78573,69 +78169,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -78646,23 +78242,23 @@ - + - + - + - + - + - + - + @@ -78673,12 +78269,23 @@ - + - + - + + + + + + + + + + + + @@ -78729,7 +78336,7 @@ - + @@ -78741,7 +78348,7 @@ - + @@ -78949,13 +78556,13 @@ - + - + @@ -79474,7 +79081,6 @@ - @@ -81103,18 +80709,18 @@ - + - + - + - + - + @@ -81885,7 +81491,7 @@ - + @@ -81903,7 +81509,7 @@ - + @@ -81988,7 +81594,7 @@ - + @@ -82068,7 +81674,7 @@ - + @@ -82148,7 +81754,7 @@ - + @@ -82614,6 +82220,11 @@ + + + + + @@ -82639,6 +82250,13 @@ + + + + + + + @@ -82823,7 +82441,7 @@ - + @@ -83309,6 +82927,9 @@ + + + @@ -83334,6 +82955,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -83508,12 +83172,12 @@ - - - - - - + + + + + + @@ -83689,6 +83353,17 @@ + + + + + + + + + + + @@ -83941,7 +83616,7 @@ - + @@ -83981,7 +83656,7 @@ - + @@ -84008,7 +83683,7 @@ - + @@ -84375,7 +84050,7 @@ - + @@ -84426,7 +84101,7 @@ - + @@ -84710,7 +84385,7 @@ - + @@ -85671,7 +85346,7 @@ - + @@ -86433,7 +86108,7 @@ - + @@ -86610,7 +86285,7 @@ - + @@ -86631,7 +86306,7 @@ - + @@ -86857,12 +86532,12 @@ - + - + @@ -88446,7 +88121,7 @@ - + @@ -88818,12 +88493,12 @@ - - + + - - + + @@ -88911,7 +88586,7 @@ - + @@ -89382,7 +89057,7 @@ - + @@ -89435,7 +89110,7 @@ - + @@ -89533,62 +89208,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -89874,6 +89493,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -90057,7 +89732,7 @@ - + @@ -90374,7 +90049,7 @@ - + @@ -90400,6 +90075,20 @@ + + + + + + + + + + + + + + @@ -90457,7 +90146,7 @@ - + @@ -90531,48 +90220,57 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + @@ -90713,7 +90411,7 @@ - + @@ -90729,24 +90427,24 @@ - + - + - + - + - + - + - + @@ -90776,7 +90474,7 @@ - + @@ -90844,9 +90542,9 @@ - + - + @@ -90934,7 +90632,7 @@ - + @@ -91035,17 +90733,6 @@ - - - - - - - - - - - @@ -91078,25 +90765,6 @@ - - - - - - - - - - - - - - - - - - - @@ -91105,7 +90773,7 @@ - + @@ -91193,7 +90861,7 @@ - + @@ -91456,12 +91124,12 @@ - + - + @@ -91524,7 +91192,7 @@ - + @@ -91599,6 +91267,14 @@ + + + + + + + + @@ -91869,9 +91545,9 @@ - + - + @@ -91931,7 +91607,7 @@ - + @@ -92002,7 +91678,7 @@ - + @@ -92048,19 +91724,17 @@ - - - - + + - - + + - + @@ -92068,118 +91742,118 @@ - - - - - + + + + + - - - - + + + + - - - - - + + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - - - + + + + + + - - - - - - + + + + + + - - - - + + + + - - - - - + + + + + - + - + - + - + - + - + @@ -92227,32 +91901,24 @@ - + - + - + - + - - - - - - - - @@ -92349,91 +92015,15 @@ - + - + - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -92479,7 +92069,7 @@ - + @@ -92650,7 +92240,7 @@ - + @@ -93014,7 +92604,7 @@ - + @@ -93294,7 +92884,7 @@ - + @@ -93330,7 +92920,7 @@ - + @@ -93463,7 +93053,7 @@ - + @@ -93515,13 +93105,13 @@ - + - + @@ -93661,7 +93251,7 @@ - + @@ -93704,7 +93294,7 @@ - + @@ -93723,7 +93313,7 @@ - + @@ -93958,27 +93548,27 @@ - + - + - + - + @@ -94677,7 +94267,7 @@ - + @@ -94730,7 +94320,7 @@ - + @@ -94744,7 +94334,7 @@ - + @@ -94763,7 +94353,7 @@ - + @@ -94787,7 +94377,7 @@ - + @@ -94913,7 +94503,7 @@ - + @@ -94930,7 +94520,7 @@ - + @@ -95421,7 +95011,7 @@ - + @@ -95710,7 +95300,7 @@ - + @@ -95724,7 +95314,7 @@ - + @@ -95898,7 +95488,7 @@ - + @@ -95917,7 +95507,7 @@ - + @@ -95947,7 +95537,7 @@ - + @@ -96093,7 +95683,7 @@ - + @@ -96143,7 +95733,7 @@ - + @@ -96255,7 +95845,7 @@ - + @@ -96301,7 +95891,7 @@ - + @@ -97177,7 +96767,7 @@ - + @@ -97219,72 +96809,156 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -97432,7 +97106,7 @@ - + @@ -97863,7 +97537,7 @@ - + @@ -97871,7 +97545,7 @@ - + @@ -97879,7 +97553,7 @@ - + @@ -97887,7 +97561,7 @@ - + @@ -97899,7 +97573,7 @@ - + @@ -97920,7 +97594,7 @@ - + @@ -97952,7 +97626,7 @@ - + @@ -98465,7 +98139,7 @@ - + @@ -98479,20 +98153,6 @@ - - - - - - - - - - - - - - @@ -98546,7 +98206,7 @@ - + @@ -98603,55 +98263,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -98677,6 +98288,20 @@ + + + + + + + + + + + + + + @@ -99224,17 +98849,6 @@ - - - - - - - - - - - @@ -99378,7 +98992,7 @@ - + @@ -99452,7 +99066,7 @@ - + @@ -99550,7 +99164,6 @@ - @@ -100024,7 +99637,7 @@ - + @@ -100830,7 +100443,7 @@ - + @@ -100867,7 +100480,7 @@ - + @@ -100995,7 +100608,7 @@ - + @@ -101057,7 +100670,7 @@ - + @@ -101649,7 +101262,7 @@ - + @@ -102043,7 +101656,7 @@ - + @@ -102074,13 +101687,13 @@ - + - + @@ -104162,6 +103775,6 @@ diff --git a/android/abi_gki_aarch64_galaxy b/android/abi_gki_aarch64_galaxy index 690d1f72c4b0..400b3a7699ca 100644 --- a/android/abi_gki_aarch64_galaxy +++ b/android/abi_gki_aarch64_galaxy @@ -38,6 +38,7 @@ __cpuhp_setup_state __cpuhp_setup_state_cpuslocked __dev_kfree_skb_any + __dev_kfree_skb_irq __devm_iio_device_register __devm_irq_alloc_descs __devm_of_phy_provider_register @@ -70,6 +71,7 @@ __ioread32_copy __ioremap __iowrite32_copy + __ipv6_addr_type __irq_alloc_descs __irq_domain_add __irq_set_handler @@ -115,6 +117,7 @@ __pm_runtime_suspend __pm_runtime_use_autosuspend __pm_stay_awake + __printk_ratelimit __pskb_pull_tail __put_cred __put_page @@ -136,6 +139,7 @@ __sdhci_add_host __sg_page_iter_next __sg_page_iter_start + __skb_get_hash __skb_pad __spi_alloc_controller __spi_register_driver @@ -149,13 +153,17 @@ __tasklet_hi_schedule __tasklet_schedule __trace_bprintk + __trace_puts + __tracepoint_android_vh_ipi_stop __tracepoint_android_vh_is_fpsimd_save __tracepoint_android_vh_kfree_skb __tracepoint_android_vh_ptype_head __tracepoint_device_pm_callback_end __tracepoint_device_pm_callback_start + __tracepoint_gpu_mem_total __tracepoint_pelt_cfs_tp __tracepoint_suspend_resume + __tty_alloc_driver __tty_insert_flip_char __udelay __uio_register_device @@ -253,6 +261,7 @@ bitmap_zalloc blk_execute_rq_nowait blk_get_request + blk_lookup_devt blk_mq_rq_cpu blk_put_request blk_queue_bounce_limit @@ -262,6 +271,7 @@ blk_rq_map_user_iov blk_rq_unmap_user blk_verify_command + blkdev_get_by_dev blkdev_get_by_path blkdev_put blocking_notifier_call_chain @@ -289,10 +299,12 @@ bus_unregister bus_unregister_notifier cache_line_size + call_rcu cancel_delayed_work cancel_delayed_work_sync cancel_work_sync capable + cdc_parse_cdc_header cdev_add cdev_alloc cdev_del @@ -428,6 +440,7 @@ cpufreq_register_notifier cpufreq_table_index_unsorted cpufreq_unregister_driver + cpufreq_unregister_notifier cpuhp_tasks_frozen cpuidle_pause_and_lock cpuidle_resume_and_unlock @@ -435,6 +448,7 @@ cpumask_next_and cpus_read_lock cpus_read_unlock + crc16 crc32_le crc8 crc8_populate_msb @@ -444,10 +458,12 @@ crypto_register_rngs crypto_shash_digest crypto_unregister_rngs + csum_partial d_add d_drop d_instantiate d_make_root + d_path dapm_pinctrl_event dapm_regulator_event datagram_poll @@ -702,6 +718,7 @@ downgrade_write dput drain_workqueue + driver_attach driver_find driver_find_device driver_register @@ -935,7 +952,9 @@ eth_type_trans eth_validate_addr ether_setup + ethtool_convert_legacy_u32_to_link_mode ethtool_op_get_link + ethtool_op_get_ts_info event_triggers_call extcon_find_edev_by_node extcon_get_edev_by_phandle @@ -949,6 +968,8 @@ fb_mode_option fd_install fget + filp_close + filp_open find_get_pid find_last_bit find_next_bit @@ -972,6 +993,7 @@ free_pages_exact free_percpu free_percpu_irq + free_reserved_area freezing_slow_path freq_qos_add_request freq_qos_remove_request @@ -1000,6 +1022,7 @@ generic_file_read_iter generic_file_splice_read generic_handle_irq + generic_mii_ioctl generic_read_dir generic_shutdown_super genl_register_family @@ -1013,6 +1036,8 @@ get_pid_task get_random_bytes get_random_u32 + get_task_exe_file + get_task_mm get_task_pid get_thermal_instance get_unmapped_area @@ -1145,6 +1170,9 @@ idr_preload idr_remove idr_replace + ieee80211_channel_to_freq_khz + ieee80211_freq_khz_to_channel + ieee80211_get_channel_khz iget5_locked ignore_console_lock_warning ihold @@ -1161,6 +1189,7 @@ import_iovec in_aton in_egroup_p + in6_pton init_dummy_netdev init_net init_task @@ -1243,6 +1272,7 @@ ion_query_heaps_kernel iounmap iput + ipv6_stub irq_chip_ack_parent irq_chip_disable_parent irq_chip_enable_parent @@ -1297,6 +1327,7 @@ jiffies_64_to_clock_t jiffies_to_msecs jiffies_to_usecs + jiffies64_to_msecs kasprintf kern_path kernel_bind @@ -1344,6 +1375,7 @@ kset_unregister kstat kstrdup + kstrdup_quotable kstrndup kstrtobool kstrtobool_from_user @@ -1428,6 +1460,7 @@ media_entity_pads_init media_entity_remove_links media_remove_intf_links + memblock_free memchr memcmp memcpy @@ -1441,6 +1474,9 @@ memweight mfd_add_devices mfd_remove_devices + mii_check_media + mii_ethtool_gset + mii_nway_restart mipi_dsi_create_packet mipi_dsi_dcs_set_display_brightness mipi_dsi_dcs_set_tear_off @@ -1464,6 +1500,7 @@ mmc_request_done mmc_send_tuning mmc_wait_for_req + mmput mod_delayed_work_on mod_node_page_state mod_timer @@ -1482,7 +1519,11 @@ napi_gro_flush napi_gro_receive napi_schedule_prep + netdev_err + netdev_info + netdev_state_change netdev_update_features + netdev_warn netif_carrier_off netif_carrier_on netif_device_attach @@ -1490,8 +1531,10 @@ netif_napi_add netif_napi_del netif_receive_skb + netif_receive_skb_list netif_rx netif_rx_ni + netif_schedule_queue netif_tx_wake_queue netlink_broadcast netlink_kernel_release @@ -1558,6 +1601,7 @@ of_get_child_by_name of_get_cpu_node of_get_dma_window + of_get_mac_address of_get_named_gpio_flags of_get_next_available_child of_get_next_child @@ -1625,6 +1669,7 @@ panic_timeout param_array_ops param_get_int + param_get_uint param_ops_bool param_ops_byte param_ops_charp @@ -1780,8 +1825,12 @@ proc_symlink proto_register proto_unregister + pskb_expand_head + public_key_verify_signature put_device put_disk + put_pid + put_tty_driver put_unused_fd pwm_apply_state pwm_get_chip_data @@ -1937,13 +1986,17 @@ rtnl_is_locked rtnl_lock rtnl_unlock + rt_mutex_lock + rt_mutex_unlock save_stack_trace + save_stack_trace_tsk sched_clock sched_setscheduler sched_setscheduler_nocheck sched_show_task schedule schedule_timeout + schedule_timeout_interruptible schedule_timeout_uninterruptible scmd_printk scnprintf @@ -1997,6 +2050,7 @@ seq_putc seq_puts seq_read + seq_release set_anon_super set_cpus_allowed_ptr set_normalized_timespec64 @@ -2202,6 +2256,7 @@ sock_release sock_unregister sock_wfree + softnet_data sort spi_bus_type spi_controller_resume @@ -2293,6 +2348,12 @@ system_wq tasklet_init tasklet_kill + tcp_register_congestion_control + tcp_reno_cong_avoid + tcp_reno_ssthresh + tcp_reno_undo_cwnd + tcp_slow_start + tcp_unregister_congestion_control thermal_cdev_update thermal_cooling_device_unregister thermal_of_cooling_device_register @@ -2321,10 +2382,33 @@ truncate_inode_pages try_module_get try_wait_for_completion + tty_encode_baud_rate tty_flip_buffer_push + tty_hangup tty_insert_flip_string_fixed_flag tty_kref_put + tty_ldisc_deref + tty_ldisc_ref + tty_port_close + tty_port_destroy + tty_port_hangup + tty_port_init + tty_port_open + tty_port_put + tty_port_register_device tty_port_tty_get + tty_port_tty_hangup + tty_port_tty_wakeup + tty_register_driver + tty_set_operations + tty_standard_install + tty_std_termios + tty_termios_baud_rate + tty_termios_copy_hw + tty_termios_hw_change + tty_unregister_device + tty_unregister_driver + tty_vhangup typec_altmode_get_partner typec_altmode_update_active typec_get_drvdata @@ -2408,6 +2492,7 @@ usb_alloc_dev usb_alloc_streams usb_alloc_urb + usb_altnum_to_altsetting usb_amd_dev_put usb_amd_pt_check_port usb_amd_quirk_pll_check @@ -2417,8 +2502,10 @@ usb_asmedia_modifyflowcontrol usb_assign_descriptors usb_autopm_get_interface + usb_autopm_get_interface_async usb_autopm_get_interface_no_resume usb_autopm_put_interface + usb_autopm_put_interface_async usb_autopm_put_interface_no_suspend usb_bulk_msg usb_choose_configuration @@ -2469,6 +2556,7 @@ usb_get_current_frame_number usb_get_dev usb_get_dr_mode + usb_get_from_anchor usb_get_intf usb_get_maximum_speed usb_get_urb @@ -2497,6 +2585,7 @@ usb_kill_anchored_urbs usb_kill_urb usb_lock_device_for_reset + usb_match_id usb_match_one_id usb_os_desc_prepare_interf_dir usb_otg_state_string @@ -2522,15 +2611,51 @@ usb_sg_cancel usb_sg_init usb_sg_wait + usb_show_dynids usb_speed_string + usb_store_new_id usb_string usb_string_id usb_submit_urb usb_unanchor_urb usb_unlink_urb + usb_unpoison_urb usb_unregister_notify usb_wait_anchor_empty_timeout usb_wakeup_notification + usbnet_cdc_unbind + usbnet_change_mtu + usbnet_defer_kevent + usbnet_device_suggests_idle + usbnet_disconnect + usbnet_generic_cdc_bind + usbnet_get_drvinfo + usbnet_get_endpoints + usbnet_get_ethernet_addr + usbnet_get_link + usbnet_get_link_ksettings + usbnet_get_msglevel + usbnet_get_stats64 + usbnet_link_change + usbnet_manage_power + usbnet_nway_reset + usbnet_open + usbnet_probe + usbnet_read_cmd + usbnet_read_cmd_nopm + usbnet_resume + usbnet_set_link_ksettings + usbnet_set_msglevel + usbnet_skb_return + usbnet_start_xmit + usbnet_stop + usbnet_suspend + usbnet_tx_timeout + usbnet_unlink_rx_urbs + usbnet_update_max_qlen + usbnet_write_cmd + usbnet_write_cmd_async + usbnet_write_cmd_nopm user_path_at_empty usleep_range v4l_bound_align_image @@ -2668,6 +2793,7 @@ wake_up_process wakeup_source_add wakeup_source_register + wakeup_source_remove wakeup_source_unregister watchdog_init_timeout watchdog_register_device diff --git a/android/abi_gki_aarch64_qcom b/android/abi_gki_aarch64_qcom index 2c874f5110a3..2eec223cb60a 100644 --- a/android/abi_gki_aarch64_qcom +++ b/android/abi_gki_aarch64_qcom @@ -1197,6 +1197,8 @@ irq_set_chained_handler_and_data irq_set_chip_and_handler_name irq_set_chip_data + __irq_set_handler + irq_set_handler_data irq_set_irqchip_state irq_set_irq_type irq_set_irq_wake @@ -1225,6 +1227,9 @@ kern_path keyslot_manager_create keyslot_manager_private + keyslot_manager_set_max_dun_bytes + keyslot_manager_reprogram_all_keys + keyslot_manager_destroy __kfifo_in __kfifo_out kfree @@ -1522,6 +1527,7 @@ of_get_named_gpio_flags of_get_next_available_child of_get_next_child + of_get_next_parent of_get_parent of_get_property of_get_regulator_init_data @@ -1728,6 +1734,7 @@ __pm_relax pm_relax pm_runtime_allow + pm_runtime_autosuspend_expiration pm_runtime_barrier __pm_runtime_disable pm_runtime_enable diff --git a/android/abi_gki_aarch64_vivo b/android/abi_gki_aarch64_vivo index b0ac1774bc52..283b9083e392 100644 --- a/android/abi_gki_aarch64_vivo +++ b/android/abi_gki_aarch64_vivo @@ -129,6 +129,7 @@ __class_create class_destroy class_find_device + class_for_each_device class_interface_unregister __class_register class_unregister @@ -287,6 +288,7 @@ device_register device_remove_bin_file device_remove_file + device_set_of_node_from_dev device_set_wakeup_capable device_set_wakeup_enable device_show_int @@ -329,6 +331,7 @@ devm_kmemdup devm_kstrdup devm_led_classdev_register_ext + devm_led_classdev_unregister devm_nvmem_cell_get devm_nvmem_device_get devm_nvmem_register @@ -1417,6 +1420,7 @@ pinconf_generic_dt_node_to_map pinctrl_dev_get_drvdata pinctrl_get + pinctrl_gpio_free pinctrl_lookup_state pinctrl_pm_select_default_state pinctrl_pm_select_sleep_state @@ -1770,6 +1774,8 @@ sg_pcopy_from_buffer sg_pcopy_to_buffer sg_scsi_ioctl + sha_init + sha_transform shmem_truncate_range sigprocmask simple_read_from_buffer @@ -2016,6 +2022,7 @@ typec_altmode_update_active typec_get_drvdata typec_partner_register_altmode + typec_partner_set_identity typec_port_register_altmode typec_register_partner typec_register_port diff --git a/arch/arm64/configs/gki_defconfig b/arch/arm64/configs/gki_defconfig index 75e9549e63d8..66acc099f331 100644 --- a/arch/arm64/configs/gki_defconfig +++ b/arch/arm64/configs/gki_defconfig @@ -562,6 +562,7 @@ CONFIG_DMA_CMA=y CONFIG_PRINTK_TIME=y CONFIG_DYNAMIC_DEBUG_CORE=y CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_DWARF4=y # CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set CONFIG_MAGIC_SYSRQ=y diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index a1e734bf2ad3..5907a92631d2 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -932,7 +932,7 @@ void handle_IPI(int ipinr, struct pt_regs *regs) break; case IPI_CPU_STOP: - trace_android_vh_ipi_stop(regs); + trace_android_vh_ipi_stop_rcuidle(regs); irq_enter(); local_cpu_stop(); irq_exit(); diff --git a/arch/x86/configs/gki_defconfig b/arch/x86/configs/gki_defconfig index 8609914b07dd..f121a388508e 100644 --- a/arch/x86/configs/gki_defconfig +++ b/arch/x86/configs/gki_defconfig @@ -491,6 +491,7 @@ CONFIG_XZ_DEC=y CONFIG_DMA_CMA=y CONFIG_PRINTK_TIME=y CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_DWARF4=y # CONFIG_ENABLE_MUST_CHECK is not set # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set CONFIG_MAGIC_SYSRQ=y diff --git a/build.config.common b/build.config.common index bdf8be882636..660e00f9ec88 100644 --- a/build.config.common +++ b/build.config.common @@ -1,5 +1,5 @@ BRANCH=android11-5.4 -KMI_GENERATION=1 +KMI_GENERATION=2 CC=clang LD=ld.lld diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index a1839ddcf05b..d95612b7d29a 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -47,6 +47,10 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_rwsem_write_wait_finish); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_show_task); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_ptype_head); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_kfree_skb); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_alloc); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_sk_free); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_alloc); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_nf_conn_free); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_arch_set_freq_scale); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_transaction_init); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_set_priority); @@ -62,4 +66,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_printk_store); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_show_regs); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_wq_lockup_pool); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sysrq_crash); -EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group); \ No newline at end of file +EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_find_busiest_group); diff --git a/drivers/char/misc.c b/drivers/char/misc.c index f6a147427029..ca5141ed5ef3 100644 --- a/drivers/char/misc.c +++ b/drivers/char/misc.c @@ -60,7 +60,7 @@ static DEFINE_MUTEX(misc_mtx); /* * Assigned numbers, used for dynamic minors */ -#define DYNAMIC_MINORS 64 /* like dynamic majors */ +#define DYNAMIC_MINORS 128 /* like dynamic majors */ static DECLARE_BITMAP(misc_minors, DYNAMIC_MINORS); #ifdef CONFIG_PROC_FS diff --git a/fs/crypto/fscrypt_private.h b/fs/crypto/fscrypt_private.h index 588c61c274f5..ea28dd500d2b 100644 --- a/fs/crypto/fscrypt_private.h +++ b/fs/crypto/fscrypt_private.h @@ -11,6 +11,7 @@ #ifndef _FSCRYPT_PRIVATE_H #define _FSCRYPT_PRIVATE_H +#define FSCRYPT_NEED_OPS #include #include #include diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 75f97bf2e507..3ce93d7484cf 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -40,6 +40,7 @@ #include #endif +#define FSCRYPT_NEED_OPS #include #include diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index d278001ade14..83bd2e229787 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -24,6 +24,7 @@ #include #include +#define FSCRYPT_NEED_OPS #include #include diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 06dd38e76c62..18232eab80ed 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -1899,6 +1900,12 @@ static ssize_t fuse_dev_do_write(struct fuse_dev *fud, err = copy_out_args(cs, req->args, nbytes); fuse_copy_finish(cs); + if (!err && req->in.h.opcode == FUSE_CANONICAL_PATH) { + char *path = (char *)req->args->out_args[0].value; + path[req->args->out_args[0].size - 1] = 0; + req->out.h.error = kern_path(path, 0, req->args->canonical_path); + } + spin_lock(&fpq->lock); clear_bit(FR_LOCKED, &req->flags); if (!fpq->connected) diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index ee190119f45c..ebd1927b2f61 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -298,6 +298,42 @@ static int fuse_dentry_delete(const struct dentry *dentry) return time_before64(fuse_dentry_time(dentry), get_jiffies_64()); } +/* + * Get the canonical path. Since we must translate to a path, this must be done + * in the context of the userspace daemon, however, the userspace daemon cannot + * look up paths on its own. Instead, we handle the lookup as a special case + * inside of the write request. + */ +static void fuse_dentry_canonical_path(const struct path *path, struct path *canonical_path) { + struct inode *inode = d_inode(path->dentry); + struct fuse_conn *fc = get_fuse_conn(inode); + FUSE_ARGS(args); + char *path_name; + int err; + + path_name = (char*)__get_free_page(GFP_KERNEL); + if (!path_name) + goto default_path; + + args.opcode = FUSE_CANONICAL_PATH; + args.nodeid = get_node_id(inode); + args.in_numargs = 0; + args.out_numargs = 1; + args.out_args[0].size = PATH_MAX; + args.out_args[0].value = path_name; + args.canonical_path = canonical_path; + args.out_argvar = 1; + + err = fuse_simple_request(fc, &args); + free_page((unsigned long)path_name); + if (err > 0) + return; +default_path: + canonical_path->dentry = path->dentry; + canonical_path->mnt = path->mnt; + path_get(canonical_path); +} + const struct dentry_operations fuse_dentry_operations = { .d_revalidate = fuse_dentry_revalidate, .d_delete = fuse_dentry_delete, @@ -305,6 +341,7 @@ const struct dentry_operations fuse_dentry_operations = { .d_init = fuse_dentry_init, .d_release = fuse_dentry_release, #endif + .d_canonical_path = fuse_dentry_canonical_path, }; const struct dentry_operations fuse_root_dentry_operations = { diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index d7cde216fc87..bf040533bed3 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -253,6 +253,9 @@ struct fuse_args { struct fuse_in_arg in_args[3]; struct fuse_arg out_args[2]; void (*end)(struct fuse_conn *fc, struct fuse_args *args, int error); + + /* Path used for completing d_canonical_path */ + struct path *canonical_path; }; struct fuse_args_pages { diff --git a/fs/notify/inotify/inotify_user.c b/fs/notify/inotify/inotify_user.c index 81ffc8629fc4..a8c3f31e5eca 100644 --- a/fs/notify/inotify/inotify_user.c +++ b/fs/notify/inotify/inotify_user.c @@ -701,6 +701,8 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, struct fsnotify_group *group; struct inode *inode; struct path path; + struct path alteredpath; + struct path *canonical_path = &path; struct fd f; int ret; unsigned flags = 0; @@ -747,13 +749,23 @@ SYSCALL_DEFINE3(inotify_add_watch, int, fd, const char __user *, pathname, if (ret) goto fput_and_out; + /* support stacked filesystems */ + if (path.dentry && path.dentry->d_op) { + if (path.dentry->d_op->d_canonical_path) { + path.dentry->d_op->d_canonical_path(&path, + &alteredpath); + canonical_path = &alteredpath; + path_put(&path); + } + } + /* inode held in place by reference to path; group by fget on fd */ - inode = path.dentry->d_inode; + inode = canonical_path->dentry->d_inode; group = f.file->private_data; /* create/update an inode mark */ ret = inotify_update_watch(group, inode, mask); - path_put(&path); + path_put(canonical_path); fput_and_out: fdput(f); return ret; diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h index bff682309fbe..5d20ba451463 100644 --- a/fs/ubifs/ubifs.h +++ b/fs/ubifs/ubifs.h @@ -31,6 +31,7 @@ #include #include +#define FSCRYPT_NEED_OPS #include #include "ubifs-media.h" diff --git a/include/linux/dcache.h b/include/linux/dcache.h index a96334500f39..48f86c805676 100644 --- a/include/linux/dcache.h +++ b/include/linux/dcache.h @@ -151,6 +151,7 @@ struct dentry_operations { struct vfsmount *(*d_automount)(struct path *); int (*d_manage)(const struct path *, bool); struct dentry *(*d_real)(struct dentry *, const struct inode *); + void (*d_canonical_path)(const struct path *, struct path *); ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(2); diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h index 0e28e81aee8a..f226673dd447 100644 --- a/include/linux/fscrypt.h +++ b/include/linux/fscrypt.h @@ -53,6 +53,7 @@ struct fscrypt_name { */ #define FS_CFLG_OWN_PAGES (1U << 1) +#ifdef FSCRYPT_NEED_OPS /* * crypto operations for filesystems */ @@ -74,6 +75,7 @@ struct fscrypt_operations { void (*get_devices)(struct super_block *sb, struct request_queue **devs); }; +#endif static inline bool fscrypt_has_encryption_key(const struct inode *inode) { @@ -97,6 +99,7 @@ static inline bool fscrypt_needs_contents_encryption(const struct inode *inode) return IS_ENCRYPTED(inode) && S_ISREG(inode->i_mode); } +#ifdef FSCRYPT_NEED_OPS static inline const union fscrypt_context * fscrypt_get_dummy_context(struct super_block *sb) { @@ -104,6 +107,7 @@ fscrypt_get_dummy_context(struct super_block *sb) return NULL; return sb->s_cop->get_dummy_context(sb); } +#endif /* * When d_splice_alias() moves a directory's encrypted alias to its decrypted @@ -801,6 +805,7 @@ static inline int fscrypt_prepare_setattr(struct dentry *dentry, * -ENOKEY if the encryption key is missing, or another -errno code if a problem * occurred while setting up the encryption key. */ +#ifdef FSCRYPT_NEED_OPS static inline int fscrypt_prepare_symlink(struct inode *dir, const char *target, unsigned int len, @@ -816,6 +821,7 @@ static inline int fscrypt_prepare_symlink(struct inode *dir, return -ENAMETOOLONG; return 0; } +#endif /** * fscrypt_encrypt_symlink() - encrypt the symlink target if needed diff --git a/include/linux/fsnotify.h b/include/linux/fsnotify.h index a2d5d175d3c1..e018872b047c 100644 --- a/include/linux/fsnotify.h +++ b/include/linux/fsnotify.h @@ -262,6 +262,7 @@ static inline void fsnotify_modify(struct file *file) static inline void fsnotify_open(struct file *file) { const struct path *path = &file->f_path; + struct path lower_path; struct inode *inode = file_inode(file); __u32 mask = FS_OPEN; @@ -270,6 +271,12 @@ static inline void fsnotify_open(struct file *file) if (file->f_flags & __FMODE_EXEC) mask |= FS_OPEN_EXEC; + if (path->dentry->d_op && path->dentry->d_op->d_canonical_path) { + path->dentry->d_op->d_canonical_path(path, &lower_path); + fsnotify_parent(&lower_path, NULL, mask); + fsnotify(lower_path.dentry->d_inode, mask, &lower_path, FSNOTIFY_EVENT_PATH, NULL, 0); + path_put(&lower_path); + } fsnotify_path(inode, path, mask); } diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 3de7fa8a7bf5..d2a1c04a51b0 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h @@ -318,7 +318,7 @@ struct pcmcia_device_id { #define INPUT_DEVICE_ID_LED_MAX 0x0f #define INPUT_DEVICE_ID_SND_MAX 0x07 #define INPUT_DEVICE_ID_FF_MAX 0x7f -#define INPUT_DEVICE_ID_SW_MAX 0x10 +#define INPUT_DEVICE_ID_SW_MAX 0x3f #define INPUT_DEVICE_ID_PROP_MAX 0x1f #define INPUT_DEVICE_ID_MATCH_BUS 1 diff --git a/include/linux/module.h b/include/linux/module.h index 5246cbce5881..4f71785d6bbd 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -346,11 +346,6 @@ struct klp_modinfo { }; #endif -struct module_kabi_preserve_1 { - u64 using_gplonly_symbols:1; - u64 free:63; -}; - struct module { enum module_state state; @@ -387,6 +382,7 @@ struct module { unsigned int num_gpl_syms; const struct kernel_symbol *gpl_syms; const s32 *gpl_crcs; + bool using_gplonly_symbols; #ifdef CONFIG_UNUSED_SYMBOLS /* unused exported symbols. */ @@ -520,7 +516,7 @@ struct module { struct error_injection_entry *ei_funcs; unsigned int num_ei_funcs; #endif - ANDROID_KABI_USE(1, struct module_kabi_preserve_1 m1); + ANDROID_KABI_RESERVE(1); ANDROID_KABI_RESERVE(2); ANDROID_KABI_RESERVE(3); ANDROID_KABI_RESERVE(4); diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 89301656f985..f26daba301b0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -41,6 +41,7 @@ #include #endif #include +#include /* The interface for checksum offload between the stack and networking drivers * is as follows... @@ -530,6 +531,8 @@ struct skb_shared_info { * remains valid until skb destructor */ void * destructor_arg; + ANDROID_VENDOR_DATA_ARRAY(1, 3); + /* must be last field, see pskb_expand_head() */ skb_frag_t frags[MAX_SKB_FRAGS]; }; diff --git a/include/net/netfilter/nf_conntrack.h b/include/net/netfilter/nf_conntrack.h index 159bc1934679..e1c69f516bfb 100644 --- a/include/net/netfilter/nf_conntrack.h +++ b/include/net/netfilter/nf_conntrack.h @@ -15,6 +15,8 @@ #include #include +#include +#include #include #include @@ -114,6 +116,11 @@ struct nf_conn { /* Storage reserved for other modules, must be the last member */ union nf_conntrack_proto proto; + + ANDROID_KABI_RESERVE(1); + ANDROID_KABI_RESERVE(2); + + ANDROID_VENDOR_DATA(1); }; static inline struct nf_conn * diff --git a/include/net/sock.h b/include/net/sock.h index fb048b2c2c41..eb3c7e89b474 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -69,6 +69,7 @@ #include #include #include +#include /* * This structure really needs to be cleaned up. @@ -521,6 +522,8 @@ struct sock { ANDROID_KABI_RESERVE(6); ANDROID_KABI_RESERVE(7); ANDROID_KABI_RESERVE(8); + + ANDROID_VENDOR_DATA(1); }; enum sk_pacing { diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 12aa6e15e43f..083cc349ed08 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -1999,4 +1999,38 @@ static inline int xfrm_tunnel_check(struct sk_buff *skb, struct xfrm_state *x, return 0; } + +extern const int xfrm_msg_min[XFRM_NR_MSGTYPES]; +extern const struct nla_policy xfrma_policy[XFRMA_MAX+1]; + +struct xfrm_translator { + /* Allocate frag_list and put compat translation there */ + int (*alloc_compat)(struct sk_buff *skb, const struct nlmsghdr *src); + + /* Allocate nlmsg with 64-bit translaton of received 32-bit message */ + struct nlmsghdr *(*rcv_msg_compat)(const struct nlmsghdr *nlh, + int maxtype, const struct nla_policy *policy, + struct netlink_ext_ack *extack); + + /* Translate 32-bit user_policy from sockptr */ + int (*xlate_user_policy_sockptr)(u8 **pdata32, int optlen); + + struct module *owner; +}; + +#if IS_ENABLED(CONFIG_XFRM_USER_COMPAT) +extern int xfrm_register_translator(struct xfrm_translator *xtr); +extern int xfrm_unregister_translator(struct xfrm_translator *xtr); +extern struct xfrm_translator *xfrm_get_translator(void); +extern void xfrm_put_translator(struct xfrm_translator *xtr); +#else +static inline struct xfrm_translator *xfrm_get_translator(void) +{ + return NULL; +} +static inline void xfrm_put_translator(struct xfrm_translator *xtr) +{ +} +#endif + #endif /* _NET_XFRM_H */ diff --git a/include/trace/hooks/debug.h b/include/trace/hooks/debug.h index 392525e806d4..9ddb4e45f97e 100644 --- a/include/trace/hooks/debug.h +++ b/include/trace/hooks/debug.h @@ -21,6 +21,7 @@ DECLARE_HOOK(android_vh_printk_store, TP_ARGS(facility, level)) #else #define trace_android_vh_ipi_stop(regs) +#define trace_android_vh_ipi_stop_rcuidle(regs) #define trace_android_vh_printk_store(facility, level) #endif diff --git a/include/trace/hooks/net.h b/include/trace/hooks/net.h index fee1e84fa61a..9b69ad26e57b 100644 --- a/include/trace/hooks/net.h +++ b/include/trace/hooks/net.h @@ -13,14 +13,29 @@ struct packet_type; struct list_head; struct sk_buff; +struct sock; +struct nf_conn; + DECLARE_HOOK(android_vh_ptype_head, TP_PROTO(const struct packet_type *pt, struct list_head *vendor_pt), TP_ARGS(pt, vendor_pt)); DECLARE_HOOK(android_vh_kfree_skb, TP_PROTO(struct sk_buff *skb), TP_ARGS(skb)); +DECLARE_RESTRICTED_HOOK(android_rvh_sk_alloc, + TP_PROTO(struct sock *sock), TP_ARGS(sock), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_sk_free, + TP_PROTO(struct sock *sock), TP_ARGS(sock), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_alloc, + TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1); +DECLARE_RESTRICTED_HOOK(android_rvh_nf_conn_free, + TP_PROTO(struct nf_conn *nf_conn), TP_ARGS(nf_conn), 1); #else #define trace_android_vh_ptype_head(pt, vendor_pt) #define trace_android_vh_kfree_skb(skb) +#define trace_android_rvh_sk_alloc(sock) +#define trace_android_rvh_sk_free(sock) +#define trace_android_rvh_nf_conn_alloc(nf_conn) +#define trace_android_rvh_nf_conn_free(nf_conn) #endif #endif /* _TRACE_HOOK_NET_VH_H */ /* This part must be outside protection */ diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h index 373cada89815..0a88b2179fda 100644 --- a/include/uapi/linux/fuse.h +++ b/include/uapi/linux/fuse.h @@ -465,6 +465,7 @@ enum fuse_opcode { FUSE_COPY_FILE_RANGE = 47, FUSE_SETUPMAPPING = 48, FUSE_REMOVEMAPPING = 49, + FUSE_CANONICAL_PATH = 2016, /* CUSE specific operations */ CUSE_INIT = 4096, diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h index 472cd5bc5567..b8902770a989 100644 --- a/include/uapi/linux/input-event-codes.h +++ b/include/uapi/linux/input-event-codes.h @@ -809,7 +809,7 @@ #define SW_MUTE_DEVICE 0x0e /* set = device disabled */ #define SW_PEN_INSERTED 0x0f /* set = pen inserted */ #define SW_MACHINE_COVER 0x10 /* set = cover closed */ -#define SW_MAX 0x10 +#define SW_MAX 0x3f #define SW_CNT (SW_MAX+1) /* diff --git a/kernel/cfi.c b/kernel/cfi.c index db9971424ed1..31419747b86d 100644 --- a/kernel/cfi.c +++ b/kernel/cfi.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include @@ -246,33 +247,36 @@ static inline cfi_check_fn ptr_to_check_fn(const struct cfi_shadow __rcu *s, static inline cfi_check_fn find_module_cfi_check(void *ptr) { + cfi_check_fn f = CFI_CHECK_FN; struct module *mod; preempt_disable(); mod = __module_address((unsigned long)ptr); + if (mod) + f = mod->cfi_check; preempt_enable(); - if (mod) - return mod->cfi_check; - - return CFI_CHECK_FN; + return f; } static inline cfi_check_fn find_cfi_check(void *ptr) { -#ifdef CONFIG_CFI_CLANG_SHADOW + bool rcu; cfi_check_fn f; - if (!rcu_access_pointer(cfi_shadow)) - return CFI_CHECK_FN; /* No loaded modules */ + rcu = rcu_is_watching(); + if (!rcu) + rcu_nmi_enter(); +#ifdef CONFIG_CFI_CLANG_SHADOW /* Look up the __cfi_check function to use */ - rcu_read_lock(); - f = ptr_to_check_fn(rcu_dereference(cfi_shadow), (unsigned long)ptr); - rcu_read_unlock(); + rcu_read_lock_sched(); + f = ptr_to_check_fn(rcu_dereference_sched(cfi_shadow), + (unsigned long)ptr); + rcu_read_unlock_sched(); if (f) - return f; + goto out; /* * Fall back to find_module_cfi_check, which works also for a larger @@ -280,7 +284,13 @@ static inline cfi_check_fn find_cfi_check(void *ptr) */ #endif /* CONFIG_CFI_CLANG_SHADOW */ - return find_module_cfi_check(ptr); + f = find_module_cfi_check(ptr); + +out: + if (!rcu) + rcu_nmi_exit(); + + return f; } void cfi_slowpath_handler(uint64_t id, void *ptr, void *diag) diff --git a/kernel/module.c b/kernel/module.c index 49c40cd2f26c..e5498252c0a9 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1432,7 +1432,7 @@ 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) { + if (mod->using_gplonly_symbols) { pr_err("%s: module using GPL-only symbols uses symbols from proprietary module %s.\n", mod->name, owner->name); return false; @@ -1471,7 +1471,7 @@ static const struct kernel_symbol *resolve_symbol(struct module *mod, goto unlock; if (license == GPL_ONLY) - mod->m1.using_gplonly_symbols = true; + mod->using_gplonly_symbols = true; if (!inherit_taint(mod, owner)) { sym = NULL; @@ -4006,6 +4006,8 @@ static int load_module(struct load_info *info, const char __user *uargs, mutex_unlock(&module_mutex); ddebug_cleanup: + /* Clean up CFI for the module. */ + cfi_cleanup(mod); ftrace_release_mod(mod); dynamic_debug_remove(mod, info->debug); synchronize_rcu(); diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 62e59596a30a..e370d2c19e46 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -603,6 +603,7 @@ void rcu_idle_enter(void) lockdep_assert_irqs_disabled(); rcu_eqs_enter(false); } +EXPORT_SYMBOL_GPL(rcu_idle_enter); #ifdef CONFIG_NO_HZ_FULL /** @@ -768,6 +769,7 @@ void rcu_idle_exit(void) rcu_eqs_exit(false); local_irq_restore(flags); } +EXPORT_SYMBOL_GPL(rcu_idle_exit); #ifdef CONFIG_NO_HZ_FULL /** diff --git a/mm/slob.c b/mm/slob.c index fa53e9f73893..ac2aecfbc7a8 100644 --- a/mm/slob.c +++ b/mm/slob.c @@ -524,6 +524,7 @@ void *__kmalloc_track_caller(size_t size, gfp_t gfp, unsigned long caller) { return __do_kmalloc_node(size, gfp, NUMA_NO_NODE, caller); } +EXPORT_SYMBOL(__kmalloc_track_caller); #ifdef CONFIG_NUMA void *__kmalloc_node_track_caller(size_t size, gfp_t gfp, @@ -531,6 +532,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfp, { return __do_kmalloc_node(size, gfp, node, caller); } +EXPORT_SYMBOL(__kmalloc_node_track_caller); #endif void kfree(const void *block) diff --git a/mm/slub.c b/mm/slub.c index e200fbc1b985..b2b714f904b8 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -4424,6 +4424,7 @@ void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller) return ret; } +EXPORT_SYMBOL(__kmalloc_track_caller); #ifdef CONFIG_NUMA void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, @@ -4454,6 +4455,7 @@ void *__kmalloc_node_track_caller(size_t size, gfp_t gfpflags, return ret; } +EXPORT_SYMBOL(__kmalloc_node_track_caller); #endif #ifdef CONFIG_SYSFS diff --git a/net/core/sock.c b/net/core/sock.c index 919f1a1739e9..f87c9f7577fe 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -134,6 +134,7 @@ #include #include +#include #include #include @@ -1608,6 +1609,8 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority, if (security_sk_alloc(sk, family, priority)) goto out_free; + trace_android_rvh_sk_alloc(sk); + if (!try_module_get(prot->owner)) goto out_free_sec; sk_tx_queue_clear(sk); @@ -1617,6 +1620,7 @@ static struct sock *sk_prot_alloc(struct proto *prot, gfp_t priority, out_free_sec: security_sk_free(sk); + trace_android_rvh_sk_free(sk); out_free: if (slab != NULL) kmem_cache_free(slab, sk); @@ -1636,6 +1640,7 @@ static void sk_prot_free(struct proto *prot, struct sock *sk) cgroup_sk_free(&sk->sk_cgrp_data); mem_cgroup_sk_free(sk); security_sk_free(sk); + trace_android_rvh_sk_free(sk); if (slab != NULL) kmem_cache_free(slab, sk); else diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 953c408db2a5..42009391d8c7 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -1396,6 +1397,9 @@ __nf_conntrack_alloc(struct net *net, #if defined(CONFIG_IP_NF_TARGET_NATTYPE_MODULE) ct->nattype_entry = 0; #endif + + trace_android_rvh_nf_conn_alloc(ct); + /* Because we use RCU lookups, we set ct_general.use to zero before * this is inserted in any list. */ @@ -1429,6 +1433,7 @@ void nf_conntrack_free(struct nf_conn *ct) nf_ct_ext_free(ct); kmem_cache_free(nf_conntrack_cachep, ct); smp_mb__before_atomic(); + trace_android_rvh_nf_conn_free(ct); atomic_dec(&net->ct.count); } EXPORT_SYMBOL_GPL(nf_conntrack_free); diff --git a/net/xfrm/Kconfig b/net/xfrm/Kconfig index 51bb6018f3bf..e5815cb2c297 100644 --- a/net/xfrm/Kconfig +++ b/net/xfrm/Kconfig @@ -28,6 +28,17 @@ config XFRM_USER If unsure, say Y. +config XFRM_USER_COMPAT + tristate "Compatible ABI support" + depends on XFRM_USER && COMPAT_FOR_U64_ALIGNMENT && \ + HAVE_EFFICIENT_UNALIGNED_ACCESS + select WANT_COMPAT_NETLINK_MESSAGES + help + Transformation(XFRM) user configuration interface like IPsec + used by compatible Linux applications. + + If unsure, say N. + config XFRM_INTERFACE tristate "Transformation virtual interface" depends on XFRM && IPV6 diff --git a/net/xfrm/Makefile b/net/xfrm/Makefile index fbc4552d17b8..f32511588d56 100644 --- a/net/xfrm/Makefile +++ b/net/xfrm/Makefile @@ -9,5 +9,6 @@ obj-$(CONFIG_XFRM) := xfrm_policy.o xfrm_state.o xfrm_hash.o \ obj-$(CONFIG_XFRM_STATISTICS) += xfrm_proc.o obj-$(CONFIG_XFRM_ALGO) += xfrm_algo.o obj-$(CONFIG_XFRM_USER) += xfrm_user.o +obj-$(CONFIG_XFRM_USER_COMPAT) += xfrm_compat.o obj-$(CONFIG_XFRM_IPCOMP) += xfrm_ipcomp.o obj-$(CONFIG_XFRM_INTERFACE) += xfrm_interface.o diff --git a/net/xfrm/xfrm_compat.c b/net/xfrm/xfrm_compat.c new file mode 100644 index 000000000000..c1dee0696dfb --- /dev/null +++ b/net/xfrm/xfrm_compat.c @@ -0,0 +1,625 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * XFRM compat layer + * Author: Dmitry Safonov + * Based on code and translator idea by: Florian Westphal + */ +#include +#include +#include + +struct compat_xfrm_lifetime_cfg { + compat_u64 soft_byte_limit, hard_byte_limit; + compat_u64 soft_packet_limit, hard_packet_limit; + compat_u64 soft_add_expires_seconds, hard_add_expires_seconds; + compat_u64 soft_use_expires_seconds, hard_use_expires_seconds; +}; /* same size on 32bit, but only 4 byte alignment required */ + +struct compat_xfrm_lifetime_cur { + compat_u64 bytes, packets, add_time, use_time; +}; /* same size on 32bit, but only 4 byte alignment required */ + +struct compat_xfrm_userpolicy_info { + struct xfrm_selector sel; + struct compat_xfrm_lifetime_cfg lft; + struct compat_xfrm_lifetime_cur curlft; + __u32 priority, index; + u8 dir, action, flags, share; + /* 4 bytes additional padding on 64bit */ +}; + +struct compat_xfrm_usersa_info { + struct xfrm_selector sel; + struct xfrm_id id; + xfrm_address_t saddr; + struct compat_xfrm_lifetime_cfg lft; + struct compat_xfrm_lifetime_cur curlft; + struct xfrm_stats stats; + __u32 seq, reqid; + u16 family; + u8 mode, replay_window, flags; + /* 4 bytes additional padding on 64bit */ +}; + +struct compat_xfrm_user_acquire { + struct xfrm_id id; + xfrm_address_t saddr; + struct xfrm_selector sel; + struct compat_xfrm_userpolicy_info policy; + /* 4 bytes additional padding on 64bit */ + __u32 aalgos, ealgos, calgos, seq; +}; + +struct compat_xfrm_userspi_info { + struct compat_xfrm_usersa_info info; + /* 4 bytes additional padding on 64bit */ + __u32 min, max; +}; + +struct compat_xfrm_user_expire { + struct compat_xfrm_usersa_info state; + /* 8 bytes additional padding on 64bit */ + u8 hard; +}; + +struct compat_xfrm_user_polexpire { + struct compat_xfrm_userpolicy_info pol; + /* 8 bytes additional padding on 64bit */ + u8 hard; +}; + +#define XMSGSIZE(type) sizeof(struct type) + +static const int compat_msg_min[XFRM_NR_MSGTYPES] = { + [XFRM_MSG_NEWSA - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_usersa_info), + [XFRM_MSG_DELSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_id), + [XFRM_MSG_GETSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_id), + [XFRM_MSG_NEWPOLICY - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_userpolicy_info), + [XFRM_MSG_DELPOLICY - XFRM_MSG_BASE] = XMSGSIZE(xfrm_userpolicy_id), + [XFRM_MSG_GETPOLICY - XFRM_MSG_BASE] = XMSGSIZE(xfrm_userpolicy_id), + [XFRM_MSG_ALLOCSPI - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_userspi_info), + [XFRM_MSG_ACQUIRE - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_user_acquire), + [XFRM_MSG_EXPIRE - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_user_expire), + [XFRM_MSG_UPDPOLICY - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_userpolicy_info), + [XFRM_MSG_UPDSA - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_usersa_info), + [XFRM_MSG_POLEXPIRE - XFRM_MSG_BASE] = XMSGSIZE(compat_xfrm_user_polexpire), + [XFRM_MSG_FLUSHSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_flush), + [XFRM_MSG_FLUSHPOLICY - XFRM_MSG_BASE] = 0, + [XFRM_MSG_NEWAE - XFRM_MSG_BASE] = XMSGSIZE(xfrm_aevent_id), + [XFRM_MSG_GETAE - XFRM_MSG_BASE] = XMSGSIZE(xfrm_aevent_id), + [XFRM_MSG_REPORT - XFRM_MSG_BASE] = XMSGSIZE(xfrm_user_report), + [XFRM_MSG_MIGRATE - XFRM_MSG_BASE] = XMSGSIZE(xfrm_userpolicy_id), + [XFRM_MSG_NEWSADINFO - XFRM_MSG_BASE] = sizeof(u32), + [XFRM_MSG_GETSADINFO - XFRM_MSG_BASE] = sizeof(u32), + [XFRM_MSG_NEWSPDINFO - XFRM_MSG_BASE] = sizeof(u32), + [XFRM_MSG_GETSPDINFO - XFRM_MSG_BASE] = sizeof(u32), + [XFRM_MSG_MAPPING - XFRM_MSG_BASE] = XMSGSIZE(xfrm_user_mapping) +}; + +static const struct nla_policy compat_policy[XFRMA_MAX+1] = { + [XFRMA_SA] = { .len = XMSGSIZE(compat_xfrm_usersa_info)}, + [XFRMA_POLICY] = { .len = XMSGSIZE(compat_xfrm_userpolicy_info)}, + [XFRMA_LASTUSED] = { .type = NLA_U64}, + [XFRMA_ALG_AUTH_TRUNC] = { .len = sizeof(struct xfrm_algo_auth)}, + [XFRMA_ALG_AEAD] = { .len = sizeof(struct xfrm_algo_aead) }, + [XFRMA_ALG_AUTH] = { .len = sizeof(struct xfrm_algo) }, + [XFRMA_ALG_CRYPT] = { .len = sizeof(struct xfrm_algo) }, + [XFRMA_ALG_COMP] = { .len = sizeof(struct xfrm_algo) }, + [XFRMA_ENCAP] = { .len = sizeof(struct xfrm_encap_tmpl) }, + [XFRMA_TMPL] = { .len = sizeof(struct xfrm_user_tmpl) }, + [XFRMA_SEC_CTX] = { .len = sizeof(struct xfrm_sec_ctx) }, + [XFRMA_LTIME_VAL] = { .len = sizeof(struct xfrm_lifetime_cur) }, + [XFRMA_REPLAY_VAL] = { .len = sizeof(struct xfrm_replay_state) }, + [XFRMA_REPLAY_THRESH] = { .type = NLA_U32 }, + [XFRMA_ETIMER_THRESH] = { .type = NLA_U32 }, + [XFRMA_SRCADDR] = { .len = sizeof(xfrm_address_t) }, + [XFRMA_COADDR] = { .len = sizeof(xfrm_address_t) }, + [XFRMA_POLICY_TYPE] = { .len = sizeof(struct xfrm_userpolicy_type)}, + [XFRMA_MIGRATE] = { .len = sizeof(struct xfrm_user_migrate) }, + [XFRMA_KMADDRESS] = { .len = sizeof(struct xfrm_user_kmaddress) }, + [XFRMA_MARK] = { .len = sizeof(struct xfrm_mark) }, + [XFRMA_TFCPAD] = { .type = NLA_U32 }, + [XFRMA_REPLAY_ESN_VAL] = { .len = sizeof(struct xfrm_replay_state_esn) }, + [XFRMA_SA_EXTRA_FLAGS] = { .type = NLA_U32 }, + [XFRMA_PROTO] = { .type = NLA_U8 }, + [XFRMA_ADDRESS_FILTER] = { .len = sizeof(struct xfrm_address_filter) }, + [XFRMA_OFFLOAD_DEV] = { .len = sizeof(struct xfrm_user_offload) }, + [XFRMA_SET_MARK] = { .type = NLA_U32 }, + [XFRMA_SET_MARK_MASK] = { .type = NLA_U32 }, + [XFRMA_IF_ID] = { .type = NLA_U32 }, +}; + +static struct nlmsghdr *xfrm_nlmsg_put_compat(struct sk_buff *skb, + const struct nlmsghdr *nlh_src, u16 type) +{ + int payload = compat_msg_min[type]; + int src_len = xfrm_msg_min[type]; + struct nlmsghdr *nlh_dst; + + /* Compat messages are shorter or equal to native (+padding) */ + if (WARN_ON_ONCE(src_len < payload)) + return ERR_PTR(-EMSGSIZE); + + nlh_dst = nlmsg_put(skb, nlh_src->nlmsg_pid, nlh_src->nlmsg_seq, + nlh_src->nlmsg_type, payload, nlh_src->nlmsg_flags); + if (!nlh_dst) + return ERR_PTR(-EMSGSIZE); + + memset(nlmsg_data(nlh_dst), 0, payload); + + switch (nlh_src->nlmsg_type) { + /* Compat message has the same layout as native */ + case XFRM_MSG_DELSA: + case XFRM_MSG_DELPOLICY: + case XFRM_MSG_FLUSHSA: + case XFRM_MSG_FLUSHPOLICY: + case XFRM_MSG_NEWAE: + case XFRM_MSG_REPORT: + case XFRM_MSG_MIGRATE: + case XFRM_MSG_NEWSADINFO: + case XFRM_MSG_NEWSPDINFO: + case XFRM_MSG_MAPPING: + WARN_ON_ONCE(src_len != payload); + memcpy(nlmsg_data(nlh_dst), nlmsg_data(nlh_src), src_len); + break; + /* 4 byte alignment for trailing u64 on native, but not on compat */ + case XFRM_MSG_NEWSA: + case XFRM_MSG_NEWPOLICY: + case XFRM_MSG_UPDSA: + case XFRM_MSG_UPDPOLICY: + WARN_ON_ONCE(src_len != payload + 4); + memcpy(nlmsg_data(nlh_dst), nlmsg_data(nlh_src), payload); + break; + case XFRM_MSG_EXPIRE: { + const struct xfrm_user_expire *src_ue = nlmsg_data(nlh_src); + struct compat_xfrm_user_expire *dst_ue = nlmsg_data(nlh_dst); + + /* compat_xfrm_user_expire has 4-byte smaller state */ + memcpy(dst_ue, src_ue, sizeof(dst_ue->state)); + dst_ue->hard = src_ue->hard; + break; + } + case XFRM_MSG_ACQUIRE: { + const struct xfrm_user_acquire *src_ua = nlmsg_data(nlh_src); + struct compat_xfrm_user_acquire *dst_ua = nlmsg_data(nlh_dst); + + memcpy(dst_ua, src_ua, offsetof(struct compat_xfrm_user_acquire, aalgos)); + dst_ua->aalgos = src_ua->aalgos; + dst_ua->ealgos = src_ua->ealgos; + dst_ua->calgos = src_ua->calgos; + dst_ua->seq = src_ua->seq; + break; + } + case XFRM_MSG_POLEXPIRE: { + const struct xfrm_user_polexpire *src_upe = nlmsg_data(nlh_src); + struct compat_xfrm_user_polexpire *dst_upe = nlmsg_data(nlh_dst); + + /* compat_xfrm_user_polexpire has 4-byte smaller state */ + memcpy(dst_upe, src_upe, sizeof(dst_upe->pol)); + dst_upe->hard = src_upe->hard; + break; + } + case XFRM_MSG_ALLOCSPI: { + const struct xfrm_userspi_info *src_usi = nlmsg_data(nlh_src); + struct compat_xfrm_userspi_info *dst_usi = nlmsg_data(nlh_dst); + + /* compat_xfrm_user_polexpire has 4-byte smaller state */ + memcpy(dst_usi, src_usi, sizeof(src_usi->info)); + dst_usi->min = src_usi->min; + dst_usi->max = src_usi->max; + break; + } + /* Not being sent by kernel */ + case XFRM_MSG_GETSA: + case XFRM_MSG_GETPOLICY: + case XFRM_MSG_GETAE: + case XFRM_MSG_GETSADINFO: + case XFRM_MSG_GETSPDINFO: + default: + WARN_ONCE(1, "unsupported nlmsg_type %d", nlh_src->nlmsg_type); + return ERR_PTR(-EOPNOTSUPP); + } + + return nlh_dst; +} + +static int xfrm_nla_cpy(struct sk_buff *dst, const struct nlattr *src, int len) +{ + return nla_put(dst, src->nla_type, len, nla_data(src)); +} + +static int xfrm_xlate64_attr(struct sk_buff *dst, const struct nlattr *src) +{ + switch (src->nla_type) { + case XFRMA_PAD: + /* Ignore */ + return 0; + case XFRMA_ALG_AUTH: + case XFRMA_ALG_CRYPT: + case XFRMA_ALG_COMP: + case XFRMA_ENCAP: + case XFRMA_TMPL: + return xfrm_nla_cpy(dst, src, nla_len(src)); + case XFRMA_SA: + return xfrm_nla_cpy(dst, src, XMSGSIZE(compat_xfrm_usersa_info)); + case XFRMA_POLICY: + return xfrm_nla_cpy(dst, src, XMSGSIZE(compat_xfrm_userpolicy_info)); + case XFRMA_SEC_CTX: + return xfrm_nla_cpy(dst, src, nla_len(src)); + case XFRMA_LTIME_VAL: + return nla_put_64bit(dst, src->nla_type, nla_len(src), + nla_data(src), XFRMA_PAD); + case XFRMA_REPLAY_VAL: + case XFRMA_REPLAY_THRESH: + case XFRMA_ETIMER_THRESH: + case XFRMA_SRCADDR: + case XFRMA_COADDR: + return xfrm_nla_cpy(dst, src, nla_len(src)); + case XFRMA_LASTUSED: + return nla_put_64bit(dst, src->nla_type, nla_len(src), + nla_data(src), XFRMA_PAD); + case XFRMA_POLICY_TYPE: + case XFRMA_MIGRATE: + case XFRMA_ALG_AEAD: + case XFRMA_KMADDRESS: + case XFRMA_ALG_AUTH_TRUNC: + case XFRMA_MARK: + case XFRMA_TFCPAD: + case XFRMA_REPLAY_ESN_VAL: + case XFRMA_SA_EXTRA_FLAGS: + case XFRMA_PROTO: + case XFRMA_ADDRESS_FILTER: + case XFRMA_OFFLOAD_DEV: + case XFRMA_SET_MARK: + case XFRMA_SET_MARK_MASK: + case XFRMA_IF_ID: + return xfrm_nla_cpy(dst, src, nla_len(src)); + default: + BUILD_BUG_ON(XFRMA_MAX != XFRMA_IF_ID); + WARN_ONCE(1, "unsupported nla_type %d", src->nla_type); + return -EOPNOTSUPP; + } +} + +/* Take kernel-built (64bit layout) and create 32bit layout for userspace */ +static int xfrm_xlate64(struct sk_buff *dst, const struct nlmsghdr *nlh_src) +{ + u16 type = nlh_src->nlmsg_type - XFRM_MSG_BASE; + const struct nlattr *nla, *attrs; + struct nlmsghdr *nlh_dst; + int len, remaining; + + nlh_dst = xfrm_nlmsg_put_compat(dst, nlh_src, type); + if (IS_ERR(nlh_dst)) + return PTR_ERR(nlh_dst); + + attrs = nlmsg_attrdata(nlh_src, xfrm_msg_min[type]); + len = nlmsg_attrlen(nlh_src, xfrm_msg_min[type]); + + nla_for_each_attr(nla, attrs, len, remaining) { + int err = xfrm_xlate64_attr(dst, nla); + + if (err) + return err; + } + + nlmsg_end(dst, nlh_dst); + + return 0; +} + +static int xfrm_alloc_compat(struct sk_buff *skb, const struct nlmsghdr *nlh_src) +{ + u16 type = nlh_src->nlmsg_type - XFRM_MSG_BASE; + struct sk_buff *new = NULL; + int err; + + if (WARN_ON_ONCE(type >= ARRAY_SIZE(xfrm_msg_min))) + return -EOPNOTSUPP; + + if (skb_shinfo(skb)->frag_list == NULL) { + new = alloc_skb(skb->len + skb_tailroom(skb), GFP_ATOMIC); + if (!new) + return -ENOMEM; + skb_shinfo(skb)->frag_list = new; + } + + err = xfrm_xlate64(skb_shinfo(skb)->frag_list, nlh_src); + if (err) { + if (new) { + kfree_skb(new); + skb_shinfo(skb)->frag_list = NULL; + } + return err; + } + + return 0; +} + +/* Calculates len of translated 64-bit message. */ +static size_t xfrm_user_rcv_calculate_len64(const struct nlmsghdr *src, + struct nlattr *attrs[XFRMA_MAX+1]) +{ + size_t len = nlmsg_len(src); + + switch (src->nlmsg_type) { + case XFRM_MSG_NEWSA: + case XFRM_MSG_NEWPOLICY: + case XFRM_MSG_ALLOCSPI: + case XFRM_MSG_ACQUIRE: + case XFRM_MSG_UPDPOLICY: + case XFRM_MSG_UPDSA: + len += 4; + break; + case XFRM_MSG_EXPIRE: + case XFRM_MSG_POLEXPIRE: + len += 8; + break; + default: + break; + } + + if (attrs[XFRMA_SA]) + len += 4; + if (attrs[XFRMA_POLICY]) + len += 4; + + /* XXX: some attrs may need to be realigned + * if !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS + */ + + return len; +} + +static int xfrm_attr_cpy32(void *dst, size_t *pos, const struct nlattr *src, + size_t size, int copy_len, int payload) +{ + struct nlmsghdr *nlmsg = dst; + struct nlattr *nla; + + if (WARN_ON_ONCE(copy_len > payload)) + copy_len = payload; + + if (size - *pos < nla_attr_size(payload)) + return -ENOBUFS; + + nla = dst + *pos; + + memcpy(nla, src, nla_attr_size(copy_len)); + nla->nla_len = nla_attr_size(payload); + *pos += nla_attr_size(payload); + nlmsg->nlmsg_len += nla->nla_len; + + memset(dst + *pos, 0, payload - copy_len); + *pos += payload - copy_len; + + return 0; +} + +static int xfrm_xlate32_attr(void *dst, const struct nlattr *nla, + size_t *pos, size_t size, + struct netlink_ext_ack *extack) +{ + int type = nla_type(nla); + u16 pol_len32, pol_len64; + int err; + + if (type > XFRMA_MAX) { + BUILD_BUG_ON(XFRMA_MAX != XFRMA_IF_ID); + NL_SET_ERR_MSG(extack, "Bad attribute"); + return -EOPNOTSUPP; + } + if (nla_len(nla) < compat_policy[type].len) { + NL_SET_ERR_MSG(extack, "Attribute bad length"); + return -EOPNOTSUPP; + } + + pol_len32 = compat_policy[type].len; + pol_len64 = xfrma_policy[type].len; + + /* XFRMA_SA and XFRMA_POLICY - need to know how-to translate */ + if (pol_len32 != pol_len64) { + if (nla_len(nla) != compat_policy[type].len) { + NL_SET_ERR_MSG(extack, "Attribute bad length"); + return -EOPNOTSUPP; + } + err = xfrm_attr_cpy32(dst, pos, nla, size, pol_len32, pol_len64); + if (err) + return err; + } + + return xfrm_attr_cpy32(dst, pos, nla, size, nla_len(nla), nla_len(nla)); +} + +static int xfrm_xlate32(struct nlmsghdr *dst, const struct nlmsghdr *src, + struct nlattr *attrs[XFRMA_MAX+1], + size_t size, u8 type, struct netlink_ext_ack *extack) +{ + size_t pos; + int i; + + memcpy(dst, src, NLMSG_HDRLEN); + dst->nlmsg_len = NLMSG_HDRLEN + xfrm_msg_min[type]; + memset(nlmsg_data(dst), 0, xfrm_msg_min[type]); + + switch (src->nlmsg_type) { + /* Compat message has the same layout as native */ + case XFRM_MSG_DELSA: + case XFRM_MSG_GETSA: + case XFRM_MSG_DELPOLICY: + case XFRM_MSG_GETPOLICY: + case XFRM_MSG_FLUSHSA: + case XFRM_MSG_FLUSHPOLICY: + case XFRM_MSG_NEWAE: + case XFRM_MSG_GETAE: + case XFRM_MSG_REPORT: + case XFRM_MSG_MIGRATE: + case XFRM_MSG_NEWSADINFO: + case XFRM_MSG_GETSADINFO: + case XFRM_MSG_NEWSPDINFO: + case XFRM_MSG_GETSPDINFO: + case XFRM_MSG_MAPPING: + memcpy(nlmsg_data(dst), nlmsg_data(src), compat_msg_min[type]); + break; + /* 4 byte alignment for trailing u64 on native, but not on compat */ + case XFRM_MSG_NEWSA: + case XFRM_MSG_NEWPOLICY: + case XFRM_MSG_UPDSA: + case XFRM_MSG_UPDPOLICY: + memcpy(nlmsg_data(dst), nlmsg_data(src), compat_msg_min[type]); + break; + case XFRM_MSG_EXPIRE: { + const struct compat_xfrm_user_expire *src_ue = nlmsg_data(src); + struct xfrm_user_expire *dst_ue = nlmsg_data(dst); + + /* compat_xfrm_user_expire has 4-byte smaller state */ + memcpy(dst_ue, src_ue, sizeof(src_ue->state)); + dst_ue->hard = src_ue->hard; + break; + } + case XFRM_MSG_ACQUIRE: { + const struct compat_xfrm_user_acquire *src_ua = nlmsg_data(src); + struct xfrm_user_acquire *dst_ua = nlmsg_data(dst); + + memcpy(dst_ua, src_ua, offsetof(struct compat_xfrm_user_acquire, aalgos)); + dst_ua->aalgos = src_ua->aalgos; + dst_ua->ealgos = src_ua->ealgos; + dst_ua->calgos = src_ua->calgos; + dst_ua->seq = src_ua->seq; + break; + } + case XFRM_MSG_POLEXPIRE: { + const struct compat_xfrm_user_polexpire *src_upe = nlmsg_data(src); + struct xfrm_user_polexpire *dst_upe = nlmsg_data(dst); + + /* compat_xfrm_user_polexpire has 4-byte smaller state */ + memcpy(dst_upe, src_upe, sizeof(src_upe->pol)); + dst_upe->hard = src_upe->hard; + break; + } + case XFRM_MSG_ALLOCSPI: { + const struct compat_xfrm_userspi_info *src_usi = nlmsg_data(src); + struct xfrm_userspi_info *dst_usi = nlmsg_data(dst); + + /* compat_xfrm_user_polexpire has 4-byte smaller state */ + memcpy(dst_usi, src_usi, sizeof(src_usi->info)); + dst_usi->min = src_usi->min; + dst_usi->max = src_usi->max; + break; + } + default: + NL_SET_ERR_MSG(extack, "Unsupported message type"); + return -EOPNOTSUPP; + } + pos = dst->nlmsg_len; + + for (i = 1; i < XFRMA_MAX + 1; i++) { + int err; + + if (i == XFRMA_PAD) + continue; + + if (!attrs[i]) + continue; + + err = xfrm_xlate32_attr(dst, attrs[i], &pos, size, extack); + if (err) + return err; + } + + return 0; +} + +static struct nlmsghdr *xfrm_user_rcv_msg_compat(const struct nlmsghdr *h32, + int maxtype, const struct nla_policy *policy, + struct netlink_ext_ack *extack) +{ + /* netlink_rcv_skb() checks if a message has full (struct nlmsghdr) */ + u16 type = h32->nlmsg_type - XFRM_MSG_BASE; + struct nlattr *attrs[XFRMA_MAX+1]; + struct nlmsghdr *h64; + size_t len; + int err; + + BUILD_BUG_ON(ARRAY_SIZE(xfrm_msg_min) != ARRAY_SIZE(compat_msg_min)); + + if (type >= ARRAY_SIZE(xfrm_msg_min)) + return ERR_PTR(-EINVAL); + + /* Don't call parse: the message might have only nlmsg header */ + if ((h32->nlmsg_type == XFRM_MSG_GETSA || + h32->nlmsg_type == XFRM_MSG_GETPOLICY) && + (h32->nlmsg_flags & NLM_F_DUMP)) + return NULL; + + err = nlmsg_parse_deprecated(h32, compat_msg_min[type], attrs, + maxtype ? : XFRMA_MAX, policy ? : compat_policy, extack); + if (err < 0) + return ERR_PTR(err); + + len = xfrm_user_rcv_calculate_len64(h32, attrs); + /* The message doesn't need translation */ + if (len == nlmsg_len(h32)) + return NULL; + + len += NLMSG_HDRLEN; + h64 = kvmalloc(len, GFP_KERNEL | __GFP_ZERO); + if (!h64) + return ERR_PTR(-ENOMEM); + + err = xfrm_xlate32(h64, h32, attrs, len, type, extack); + if (err < 0) { + kvfree(h64); + return ERR_PTR(err); + } + + return h64; +} + +static int xfrm_user_policy_compat(u8 **pdata32, int optlen) +{ + struct compat_xfrm_userpolicy_info *p = (void *)*pdata32; + u8 *src_templates, *dst_templates; + u8 *data64; + + if (optlen < sizeof(*p)) + return -EINVAL; + + data64 = kmalloc(optlen + 4, GFP_USER | __GFP_NOWARN); + if (!data64) + return -ENOMEM; + + memcpy(data64, *pdata32, sizeof(*p)); + memset(data64 + sizeof(*p), 0, 4); + + src_templates = *pdata32 + sizeof(*p); + dst_templates = data64 + sizeof(*p) + 4; + memcpy(dst_templates, src_templates, optlen - sizeof(*p)); + + kfree(*pdata32); + *pdata32 = data64; + return 0; +} + +static struct xfrm_translator xfrm_translator = { + .owner = THIS_MODULE, + .alloc_compat = xfrm_alloc_compat, + .rcv_msg_compat = xfrm_user_rcv_msg_compat, + .xlate_user_policy_sockptr = xfrm_user_policy_compat, +}; + +static int __init xfrm_compat_init(void) +{ + return xfrm_register_translator(&xfrm_translator); +} + +static void __exit xfrm_compat_exit(void) +{ + xfrm_unregister_translator(&xfrm_translator); +} + +module_init(xfrm_compat_init); +module_exit(xfrm_compat_exit); +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Dmitry Safonov"); +MODULE_DESCRIPTION("XFRM 32-bit compatibility layer"); diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index 787105cc002b..d5a730fa797a 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -2261,6 +2261,66 @@ static bool km_is_alive(const struct km_event *c) return is_alive; } +#if IS_ENABLED(CONFIG_XFRM_USER_COMPAT) +static DEFINE_SPINLOCK(xfrm_translator_lock); +static struct xfrm_translator __rcu *xfrm_translator; + +struct xfrm_translator *xfrm_get_translator(void) +{ + struct xfrm_translator *xtr; + + rcu_read_lock(); + xtr = rcu_dereference(xfrm_translator); + if (unlikely(!xtr)) + goto out; + if (!try_module_get(xtr->owner)) + xtr = NULL; +out: + rcu_read_unlock(); + return xtr; +} +EXPORT_SYMBOL_GPL(xfrm_get_translator); + +void xfrm_put_translator(struct xfrm_translator *xtr) +{ + module_put(xtr->owner); +} +EXPORT_SYMBOL_GPL(xfrm_put_translator); + +int xfrm_register_translator(struct xfrm_translator *xtr) +{ + int err = 0; + + spin_lock_bh(&xfrm_translator_lock); + if (unlikely(xfrm_translator != NULL)) + err = -EEXIST; + else + rcu_assign_pointer(xfrm_translator, xtr); + spin_unlock_bh(&xfrm_translator_lock); + + return err; +} +EXPORT_SYMBOL_GPL(xfrm_register_translator); + +int xfrm_unregister_translator(struct xfrm_translator *xtr) +{ + int err = 0; + + spin_lock_bh(&xfrm_translator_lock); + if (likely(xfrm_translator != NULL)) { + if (rcu_access_pointer(xfrm_translator) != xtr) + err = -EINVAL; + else + RCU_INIT_POINTER(xfrm_translator, NULL); + } + spin_unlock_bh(&xfrm_translator_lock); + synchronize_rcu(); + + return err; +} +EXPORT_SYMBOL_GPL(xfrm_unregister_translator); +#endif + int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen) { int err; @@ -2282,6 +2342,23 @@ int xfrm_user_policy(struct sock *sk, int optname, u8 __user *optval, int optlen if (IS_ERR(data)) return PTR_ERR(data); + /* Use the 64-bit / untranslated format on Android, even for compat */ + if (!IS_ENABLED(CONFIG_ANDROID) || IS_ENABLED(CONFIG_XFRM_USER_COMPAT)) { + if (in_compat_syscall()) { + struct xfrm_translator *xtr = xfrm_get_translator(); + + if (!xtr) + return -EOPNOTSUPP; + + err = xtr->xlate_user_policy_sockptr(&data, optlen); + xfrm_put_translator(xtr); + if (err) { + kfree(data); + return err; + } + } + } + err = -EINVAL; rcu_read_lock(); list_for_each_entry_rcu(km, &xfrm_km_list, list) { diff --git a/net/xfrm/xfrm_user.c b/net/xfrm/xfrm_user.c index 8e4fb35cfc06..49687429adf2 100644 --- a/net/xfrm/xfrm_user.c +++ b/net/xfrm/xfrm_user.c @@ -975,6 +975,7 @@ static int dump_one_state(struct xfrm_state *x, int count, void *ptr) struct xfrm_dump_info *sp = ptr; struct sk_buff *in_skb = sp->in_skb; struct sk_buff *skb = sp->out_skb; + struct xfrm_translator *xtr; struct xfrm_usersa_info *p; struct nlmsghdr *nlh; int err; @@ -992,6 +993,18 @@ static int dump_one_state(struct xfrm_state *x, int count, void *ptr) return err; } nlmsg_end(skb, nlh); + + xtr = xfrm_get_translator(); + if (xtr) { + err = xtr->alloc_compat(skb, nlh); + + xfrm_put_translator(xtr); + if (err) { + nlmsg_cancel(skb, nlh); + return err; + } + } + return 0; } @@ -1006,7 +1019,6 @@ static int xfrm_dump_sa_done(struct netlink_callback *cb) return 0; } -static const struct nla_policy xfrma_policy[XFRMA_MAX+1]; static int xfrm_dump_sa(struct sk_buff *skb, struct netlink_callback *cb) { struct net *net = sock_net(skb->sk); @@ -1083,12 +1095,24 @@ static inline int xfrm_nlmsg_multicast(struct net *net, struct sk_buff *skb, u32 pid, unsigned int group) { struct sock *nlsk = rcu_dereference(net->xfrm.nlsk); + struct xfrm_translator *xtr; if (!nlsk) { kfree_skb(skb); return -EPIPE; } + xtr = xfrm_get_translator(); + if (xtr) { + int err = xtr->alloc_compat(skb, nlmsg_hdr(skb)); + + xfrm_put_translator(xtr); + if (err) { + kfree_skb(skb); + return err; + } + } + return nlmsg_multicast(nlsk, skb, pid, group, GFP_ATOMIC); } @@ -1308,6 +1332,7 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh, struct net *net = sock_net(skb->sk); struct xfrm_state *x; struct xfrm_userspi_info *p; + struct xfrm_translator *xtr; struct sk_buff *resp_skb; xfrm_address_t *daddr; int family; @@ -1358,6 +1383,17 @@ static int xfrm_alloc_userspi(struct sk_buff *skb, struct nlmsghdr *nlh, goto out; } + xtr = xfrm_get_translator(); + if (xtr) { + err = xtr->alloc_compat(skb, nlmsg_hdr(skb)); + + xfrm_put_translator(xtr); + if (err) { + kfree_skb(resp_skb); + goto out; + } + } + err = nlmsg_unicast(net->xfrm.nlsk, resp_skb, NETLINK_CB(skb).portid); out: @@ -1764,6 +1800,7 @@ static int dump_one_policy(struct xfrm_policy *xp, int dir, int count, void *ptr struct xfrm_userpolicy_info *p; struct sk_buff *in_skb = sp->in_skb; struct sk_buff *skb = sp->out_skb; + struct xfrm_translator *xtr; struct nlmsghdr *nlh; int err; @@ -1788,6 +1825,18 @@ static int dump_one_policy(struct xfrm_policy *xp, int dir, int count, void *ptr return err; } nlmsg_end(skb, nlh); + + xtr = xfrm_get_translator(); + if (xtr) { + err = xtr->alloc_compat(skb, nlh); + + xfrm_put_translator(xtr); + if (err) { + nlmsg_cancel(skb, nlh); + return err; + } + } + return 0; } @@ -2533,7 +2582,7 @@ static int xfrm_send_migrate(const struct xfrm_selector *sel, u8 dir, u8 type, #define XMSGSIZE(type) sizeof(struct type) -static const int xfrm_msg_min[XFRM_NR_MSGTYPES] = { +const int xfrm_msg_min[XFRM_NR_MSGTYPES] = { [XFRM_MSG_NEWSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_info), [XFRM_MSG_DELSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_id), [XFRM_MSG_GETSA - XFRM_MSG_BASE] = XMSGSIZE(xfrm_usersa_id), @@ -2556,10 +2605,11 @@ static const int xfrm_msg_min[XFRM_NR_MSGTYPES] = { [XFRM_MSG_NEWSPDINFO - XFRM_MSG_BASE] = sizeof(u32), [XFRM_MSG_GETSPDINFO - XFRM_MSG_BASE] = sizeof(u32), }; +EXPORT_SYMBOL_GPL(xfrm_msg_min); #undef XMSGSIZE -static const struct nla_policy xfrma_policy[XFRMA_MAX+1] = { +const struct nla_policy xfrma_policy[XFRMA_MAX+1] = { [XFRMA_SA] = { .len = sizeof(struct xfrm_usersa_info)}, [XFRMA_POLICY] = { .len = sizeof(struct xfrm_userpolicy_info)}, [XFRMA_LASTUSED] = { .type = NLA_U64}, @@ -2591,6 +2641,7 @@ static const struct nla_policy xfrma_policy[XFRMA_MAX+1] = { [XFRMA_SET_MARK_MASK] = { .type = NLA_U32 }, [XFRMA_IF_ID] = { .type = NLA_U32 }, }; +EXPORT_SYMBOL_GPL(xfrma_policy); static const struct nla_policy xfrma_spd_policy[XFRMA_SPD_MAX+1] = { [XFRMA_SPD_IPV4_HTHRESH] = { .len = sizeof(struct xfrmu_spdhthresh) }, @@ -2640,6 +2691,7 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, struct net *net = sock_net(skb->sk); struct nlattr *attrs[XFRMA_MAX+1]; const struct xfrm_link *link; + struct nlmsghdr *nlh64 = NULL; int type, err; type = nlh->nlmsg_type; @@ -2653,32 +2705,58 @@ static int xfrm_user_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh, if (!netlink_net_capable(skb, CAP_NET_ADMIN)) return -EPERM; + /* Use the 64-bit / untranslated format on Android, even for compat */ + if (!IS_ENABLED(CONFIG_ANDROID) || IS_ENABLED(CONFIG_XFRM_USER_COMPAT)) { + if (in_compat_syscall()) { + struct xfrm_translator *xtr = xfrm_get_translator(); + + if (!xtr) + return -EOPNOTSUPP; + + nlh64 = xtr->rcv_msg_compat(nlh, link->nla_max, + link->nla_pol, extack); + xfrm_put_translator(xtr); + if (IS_ERR(nlh64)) + return PTR_ERR(nlh64); + if (nlh64) + nlh = nlh64; + } + } + if ((type == (XFRM_MSG_GETSA - XFRM_MSG_BASE) || type == (XFRM_MSG_GETPOLICY - XFRM_MSG_BASE)) && (nlh->nlmsg_flags & NLM_F_DUMP)) { - if (link->dump == NULL) - return -EINVAL; + struct netlink_dump_control c = { + .start = link->start, + .dump = link->dump, + .done = link->done, + }; - { - struct netlink_dump_control c = { - .start = link->start, - .dump = link->dump, - .done = link->done, - }; - return netlink_dump_start(net->xfrm.nlsk, skb, nlh, &c); + if (link->dump == NULL) { + err = -EINVAL; + goto err; } + + err = netlink_dump_start(net->xfrm.nlsk, skb, nlh, &c); + goto err; } err = nlmsg_parse_deprecated(nlh, xfrm_msg_min[type], attrs, link->nla_max ? : XFRMA_MAX, link->nla_pol ? : xfrma_policy, extack); if (err < 0) - return err; + goto err; - if (link->doit == NULL) - return -EINVAL; + if (link->doit == NULL) { + err = -EINVAL; + goto err; + } - return link->doit(skb, nlh, attrs); + err = link->doit(skb, nlh, attrs); + +err: + kvfree(nlh64); + return err; } static void xfrm_netlink_rcv(struct sk_buff *skb)