History

Merge 5.8-rc6 into tty-next

We need the serial/tty fixes in here as well.

Greg Kroah-Hartman committed 6 years ago

Commit 6f2c6592 parents ea1be1e ba47d841395 files · +12287 −6522Browse files

Showing the changes to include/linux (54 of 1395 files). Show all

Unified · Split

54 files
  1. include/linux/atomic-fallback.h +235 −1
  2. include/linux/bits.h +1 −2
  3. include/linux/blkdev.h +1 −0
  4. include/linux/bpf-netns.h +3 −2
  5. include/linux/bpf.h +11 −2
  6. include/linux/btf.h +5 −0
  7. include/linux/cgroup-defs.h +6 −2
  8. include/linux/cgroup.h +3 −1
  9. include/linux/compiler-clang.h +8 −0
  10. include/linux/compiler-gcc.h +7 −1
  11. include/linux/compiler.h +1 −1
  12. include/linux/compiler_attributes.h +1 −0
  13. include/linux/compiler_types.h +7 −34
  14. include/linux/device.h +3 −2
  15. include/linux/dma-buf.h +1 −0
  16. include/linux/dma-direct.h +2 −2
  17. include/linux/dma-mapping.h +5 −0
  18. include/linux/efi.h +3 −5
  19. include/linux/filter.h +2 −2
  20. include/linux/fs.h +2 −1
  21. include/linux/fs_context.h +1 −0
  22. include/linux/host1x.h +3 −0
  23. include/linux/ieee80211.h +4 −0
  24. include/linux/if_vlan.h +22 −7
  25. include/linux/input/elan-i2c-ids.h +7 −0
  26. include/linux/intel-iommu.h +1 −0
  27. include/linux/irq_work.h +8 −18
  28. include/linux/kallsyms.h +3 −2
  29. include/linux/kgdb.h +14 −3
  30. include/linux/libata.h +1 −1
  31. include/linux/lsm_hook_defs.h +2 −2
  32. include/linux/mlx5/driver.h +1 −0
  33. include/linux/mlx5/mlx5_ifc.h +34 −4
  34. include/linux/mmzone.h +2 −2
  35. include/linux/mod_devicetable.h +1 −1
  36. include/linux/netdevice.h +1 −1
  37. include/linux/netfilter_ipv4/ip_tables.h +6 −0
  38. include/linux/netfilter_ipv6/ip6_tables.h +3 −0
  39. include/linux/pci.h +5 −6
  40. include/linux/phy.h +1 −0
  41. include/linux/qed/qed_chain.h +16 −10
  42. include/linux/scatterlist.h +4 −4
  43. include/linux/sched.h +1 −6
  44. include/linux/sched/jobctl.h +3 −1
  45. include/linux/serial_core.h +98 −4
  46. include/linux/skmsg.h +13 −0
  47. include/linux/smp.h +8 −15
  48. include/linux/smp_types.h +66 −0
  49. include/linux/swap.h +1 −0
  50. include/linux/syscalls.h +1 −1
  51. include/linux/task_work.h +4 −1
  52. include/linux/timekeeping.h +7 −7
  53. include/linux/tpm_eventlog.h +13 −1
  54. include/linux/vmalloc.h +0 −1
include/linux/atomic-fallback.h+235−1
@@ -77,6 +77,9 @@ · 76 unmodified lines
77 77
78#endif /* cmpxchg64_relaxed */78#endif /* cmpxchg64_relaxed */
79 79
80#define arch_atomic_read atomic_read
81#define arch_atomic_read_acquire atomic_read_acquire
82
80#ifndef atomic_read_acquire83#ifndef atomic_read_acquire
81static __always_inline int84static __always_inline int
82atomic_read_acquire(const atomic_t *v)85atomic_read_acquire(const atomic_t *v)
@@ -86,6 +89,9 @@ atomic_read_acquire(const atomic_t *v) · 3 unmodified lines
86#define atomic_read_acquire atomic_read_acquire89#define atomic_read_acquire atomic_read_acquire
87#endif90#endif
88 91
92#define arch_atomic_set atomic_set
93#define arch_atomic_set_release atomic_set_release
94
89#ifndef atomic_set_release95#ifndef atomic_set_release
90static __always_inline void96static __always_inline void
91atomic_set_release(atomic_t *v, int i)97atomic_set_release(atomic_t *v, int i)
@@ -95,6 +101,13 @@ atomic_set_release(atomic_t *v, int i) · 3 unmodified lines
95#define atomic_set_release atomic_set_release101#define atomic_set_release atomic_set_release
96#endif102#endif
97 103
104#define arch_atomic_add atomic_add
105
106#define arch_atomic_add_return atomic_add_return
107#define arch_atomic_add_return_acquire atomic_add_return_acquire
108#define arch_atomic_add_return_release atomic_add_return_release
109#define arch_atomic_add_return_relaxed atomic_add_return_relaxed
110
98#ifndef atomic_add_return_relaxed111#ifndef atomic_add_return_relaxed
99#define atomic_add_return_acquire atomic_add_return112#define atomic_add_return_acquire atomic_add_return
100#define atomic_add_return_release atomic_add_return113#define atomic_add_return_release atomic_add_return
@@ -137,6 +150,11 @@ atomic_add_return(int i, atomic_t *v) · 36 unmodified lines
137 150
138#endif /* atomic_add_return_relaxed */151#endif /* atomic_add_return_relaxed */
139 152
153#define arch_atomic_fetch_add atomic_fetch_add
154#define arch_atomic_fetch_add_acquire atomic_fetch_add_acquire
155#define arch_atomic_fetch_add_release atomic_fetch_add_release
156#define arch_atomic_fetch_add_relaxed atomic_fetch_add_relaxed
157
140#ifndef atomic_fetch_add_relaxed158#ifndef atomic_fetch_add_relaxed
141#define atomic_fetch_add_acquire atomic_fetch_add159#define atomic_fetch_add_acquire atomic_fetch_add
142#define atomic_fetch_add_release atomic_fetch_add160#define atomic_fetch_add_release atomic_fetch_add
@@ -179,6 +197,13 @@ atomic_fetch_add(int i, atomic_t *v) · 36 unmodified lines
179 197
180#endif /* atomic_fetch_add_relaxed */198#endif /* atomic_fetch_add_relaxed */
181 199
200#define arch_atomic_sub atomic_sub
201
202#define arch_atomic_sub_return atomic_sub_return
203#define arch_atomic_sub_return_acquire atomic_sub_return_acquire
204#define arch_atomic_sub_return_release atomic_sub_return_release
205#define arch_atomic_sub_return_relaxed atomic_sub_return_relaxed
206
182#ifndef atomic_sub_return_relaxed207#ifndef atomic_sub_return_relaxed
183#define atomic_sub_return_acquire atomic_sub_return208#define atomic_sub_return_acquire atomic_sub_return
184#define atomic_sub_return_release atomic_sub_return209#define atomic_sub_return_release atomic_sub_return
@@ -221,6 +246,11 @@ atomic_sub_return(int i, atomic_t *v) · 36 unmodified lines
221 246
222#endif /* atomic_sub_return_relaxed */247#endif /* atomic_sub_return_relaxed */
223 248
249#define arch_atomic_fetch_sub atomic_fetch_sub
250#define arch_atomic_fetch_sub_acquire atomic_fetch_sub_acquire
251#define arch_atomic_fetch_sub_release atomic_fetch_sub_release
252#define arch_atomic_fetch_sub_relaxed atomic_fetch_sub_relaxed
253
224#ifndef atomic_fetch_sub_relaxed254#ifndef atomic_fetch_sub_relaxed
225#define atomic_fetch_sub_acquire atomic_fetch_sub255#define atomic_fetch_sub_acquire atomic_fetch_sub
226#define atomic_fetch_sub_release atomic_fetch_sub256#define atomic_fetch_sub_release atomic_fetch_sub
@@ -263,6 +293,8 @@ atomic_fetch_sub(int i, atomic_t *v) · 36 unmodified lines
263 293
264#endif /* atomic_fetch_sub_relaxed */294#endif /* atomic_fetch_sub_relaxed */
265 295
296#define arch_atomic_inc atomic_inc
297
266#ifndef atomic_inc298#ifndef atomic_inc
267static __always_inline void299static __always_inline void
268atomic_inc(atomic_t *v)300atomic_inc(atomic_t *v)
@@ -272,6 +304,11 @@ atomic_inc(atomic_t *v) · 3 unmodified lines
272#define atomic_inc atomic_inc304#define atomic_inc atomic_inc
273#endif305#endif
274 306
307#define arch_atomic_inc_return atomic_inc_return
308#define arch_atomic_inc_return_acquire atomic_inc_return_acquire
309#define arch_atomic_inc_return_release atomic_inc_return_release
310#define arch_atomic_inc_return_relaxed atomic_inc_return_relaxed
311
275#ifndef atomic_inc_return_relaxed312#ifndef atomic_inc_return_relaxed
276#ifdef atomic_inc_return313#ifdef atomic_inc_return
277#define atomic_inc_return_acquire atomic_inc_return314#define atomic_inc_return_acquire atomic_inc_return
@@ -353,6 +390,11 @@ atomic_inc_return(atomic_t *v) · 75 unmodified lines
353 390
354#endif /* atomic_inc_return_relaxed */391#endif /* atomic_inc_return_relaxed */
355 392
393#define arch_atomic_fetch_inc atomic_fetch_inc
394#define arch_atomic_fetch_inc_acquire atomic_fetch_inc_acquire
395#define arch_atomic_fetch_inc_release atomic_fetch_inc_release
396#define arch_atomic_fetch_inc_relaxed atomic_fetch_inc_relaxed
397
356#ifndef atomic_fetch_inc_relaxed398#ifndef atomic_fetch_inc_relaxed
357#ifdef atomic_fetch_inc399#ifdef atomic_fetch_inc
358#define atomic_fetch_inc_acquire atomic_fetch_inc400#define atomic_fetch_inc_acquire atomic_fetch_inc
@@ -434,6 +476,8 @@ atomic_fetch_inc(atomic_t *v) · 75 unmodified lines
434 476
435#endif /* atomic_fetch_inc_relaxed */477#endif /* atomic_fetch_inc_relaxed */
436 478
479#define arch_atomic_dec atomic_dec
480
437#ifndef atomic_dec481#ifndef atomic_dec
438static __always_inline void482static __always_inline void
439atomic_dec(atomic_t *v)483atomic_dec(atomic_t *v)
@@ -443,6 +487,11 @@ atomic_dec(atomic_t *v) · 3 unmodified lines
443#define atomic_dec atomic_dec487#define atomic_dec atomic_dec
444#endif488#endif
445 489
490#define arch_atomic_dec_return atomic_dec_return
491#define arch_atomic_dec_return_acquire atomic_dec_return_acquire
492#define arch_atomic_dec_return_release atomic_dec_return_release
493#define arch_atomic_dec_return_relaxed atomic_dec_return_relaxed
494
446#ifndef atomic_dec_return_relaxed495#ifndef atomic_dec_return_relaxed
447#ifdef atomic_dec_return496#ifdef atomic_dec_return
448#define atomic_dec_return_acquire atomic_dec_return497#define atomic_dec_return_acquire atomic_dec_return
@@ -524,6 +573,11 @@ atomic_dec_return(atomic_t *v) · 75 unmodified lines
524 573
525#endif /* atomic_dec_return_relaxed */574#endif /* atomic_dec_return_relaxed */
526 575
576#define arch_atomic_fetch_dec atomic_fetch_dec
577#define arch_atomic_fetch_dec_acquire atomic_fetch_dec_acquire
578#define arch_atomic_fetch_dec_release atomic_fetch_dec_release
579#define arch_atomic_fetch_dec_relaxed atomic_fetch_dec_relaxed
580
527#ifndef atomic_fetch_dec_relaxed581#ifndef atomic_fetch_dec_relaxed
528#ifdef atomic_fetch_dec582#ifdef atomic_fetch_dec
529#define atomic_fetch_dec_acquire atomic_fetch_dec583#define atomic_fetch_dec_acquire atomic_fetch_dec
@@ -605,6 +659,13 @@ atomic_fetch_dec(atomic_t *v) · 75 unmodified lines
605 659
606#endif /* atomic_fetch_dec_relaxed */660#endif /* atomic_fetch_dec_relaxed */
607 661
662#define arch_atomic_and atomic_and
663
664#define arch_atomic_fetch_and atomic_fetch_and
665#define arch_atomic_fetch_and_acquire atomic_fetch_and_acquire
666#define arch_atomic_fetch_and_release atomic_fetch_and_release
667#define arch_atomic_fetch_and_relaxed atomic_fetch_and_relaxed
668
608#ifndef atomic_fetch_and_relaxed669#ifndef atomic_fetch_and_relaxed
609#define atomic_fetch_and_acquire atomic_fetch_and670#define atomic_fetch_and_acquire atomic_fetch_and
610#define atomic_fetch_and_release atomic_fetch_and671#define atomic_fetch_and_release atomic_fetch_and
@@ -647,6 +708,8 @@ atomic_fetch_and(int i, atomic_t *v) · 36 unmodified lines
647 708
648#endif /* atomic_fetch_and_relaxed */709#endif /* atomic_fetch_and_relaxed */
649 710
711#define arch_atomic_andnot atomic_andnot
712
650#ifndef atomic_andnot713#ifndef atomic_andnot
651static __always_inline void714static __always_inline void
652atomic_andnot(int i, atomic_t *v)715atomic_andnot(int i, atomic_t *v)
@@ -656,6 +719,11 @@ atomic_andnot(int i, atomic_t *v) · 3 unmodified lines
656#define atomic_andnot atomic_andnot719#define atomic_andnot atomic_andnot
657#endif720#endif
658 721
722#define arch_atomic_fetch_andnot atomic_fetch_andnot
723#define arch_atomic_fetch_andnot_acquire atomic_fetch_andnot_acquire
724#define arch_atomic_fetch_andnot_release atomic_fetch_andnot_release
725#define arch_atomic_fetch_andnot_relaxed atomic_fetch_andnot_relaxed
726
659#ifndef atomic_fetch_andnot_relaxed727#ifndef atomic_fetch_andnot_relaxed
660#ifdef atomic_fetch_andnot728#ifdef atomic_fetch_andnot
661#define atomic_fetch_andnot_acquire atomic_fetch_andnot729#define atomic_fetch_andnot_acquire atomic_fetch_andnot
@@ -737,6 +805,13 @@ atomic_fetch_andnot(int i, atomic_t *v) · 75 unmodified lines
737 805
738#endif /* atomic_fetch_andnot_relaxed */806#endif /* atomic_fetch_andnot_relaxed */
739 807
808#define arch_atomic_or atomic_or
809
810#define arch_atomic_fetch_or atomic_fetch_or
811#define arch_atomic_fetch_or_acquire atomic_fetch_or_acquire
812#define arch_atomic_fetch_or_release atomic_fetch_or_release
813#define arch_atomic_fetch_or_relaxed atomic_fetch_or_relaxed
814
740#ifndef atomic_fetch_or_relaxed815#ifndef atomic_fetch_or_relaxed
741#define atomic_fetch_or_acquire atomic_fetch_or816#define atomic_fetch_or_acquire atomic_fetch_or
742#define atomic_fetch_or_release atomic_fetch_or817#define atomic_fetch_or_release atomic_fetch_or
@@ -779,6 +854,13 @@ atomic_fetch_or(int i, atomic_t *v) · 36 unmodified lines
779 854
780#endif /* atomic_fetch_or_relaxed */855#endif /* atomic_fetch_or_relaxed */
781 856
857#define arch_atomic_xor atomic_xor
858
859#define arch_atomic_fetch_xor atomic_fetch_xor
860#define arch_atomic_fetch_xor_acquire atomic_fetch_xor_acquire
861#define arch_atomic_fetch_xor_release atomic_fetch_xor_release
862#define arch_atomic_fetch_xor_relaxed atomic_fetch_xor_relaxed
863
782#ifndef atomic_fetch_xor_relaxed864#ifndef atomic_fetch_xor_relaxed
783#define atomic_fetch_xor_acquire atomic_fetch_xor865#define atomic_fetch_xor_acquire atomic_fetch_xor
784#define atomic_fetch_xor_release atomic_fetch_xor866#define atomic_fetch_xor_release atomic_fetch_xor
@@ -821,6 +903,11 @@ atomic_fetch_xor(int i, atomic_t *v) · 36 unmodified lines
821 903
822#endif /* atomic_fetch_xor_relaxed */904#endif /* atomic_fetch_xor_relaxed */
823 905
906#define arch_atomic_xchg atomic_xchg
907#define arch_atomic_xchg_acquire atomic_xchg_acquire
908#define arch_atomic_xchg_release atomic_xchg_release
909#define arch_atomic_xchg_relaxed atomic_xchg_relaxed
910
824#ifndef atomic_xchg_relaxed911#ifndef atomic_xchg_relaxed
825#define atomic_xchg_acquire atomic_xchg912#define atomic_xchg_acquire atomic_xchg
826#define atomic_xchg_release atomic_xchg913#define atomic_xchg_release atomic_xchg
@@ -863,6 +950,11 @@ atomic_xchg(atomic_t *v, int i) · 36 unmodified lines
863 950
864#endif /* atomic_xchg_relaxed */951#endif /* atomic_xchg_relaxed */
865 952
953#define arch_atomic_cmpxchg atomic_cmpxchg
954#define arch_atomic_cmpxchg_acquire atomic_cmpxchg_acquire
955#define arch_atomic_cmpxchg_release atomic_cmpxchg_release
956#define arch_atomic_cmpxchg_relaxed atomic_cmpxchg_relaxed
957
866#ifndef atomic_cmpxchg_relaxed958#ifndef atomic_cmpxchg_relaxed
867#define atomic_cmpxchg_acquire atomic_cmpxchg959#define atomic_cmpxchg_acquire atomic_cmpxchg
868#define atomic_cmpxchg_release atomic_cmpxchg960#define atomic_cmpxchg_release atomic_cmpxchg
@@ -905,6 +997,11 @@ atomic_cmpxchg(atomic_t *v, int old, int new) · 36 unmodified lines
905 997
906#endif /* atomic_cmpxchg_relaxed */998#endif /* atomic_cmpxchg_relaxed */
907 999
1000#define arch_atomic_try_cmpxchg atomic_try_cmpxchg
1001#define arch_atomic_try_cmpxchg_acquire atomic_try_cmpxchg_acquire
1002#define arch_atomic_try_cmpxchg_release atomic_try_cmpxchg_release
1003#define arch_atomic_try_cmpxchg_relaxed atomic_try_cmpxchg_relaxed
1004
908#ifndef atomic_try_cmpxchg_relaxed1005#ifndef atomic_try_cmpxchg_relaxed
909#ifdef atomic_try_cmpxchg1006#ifdef atomic_try_cmpxchg
910#define atomic_try_cmpxchg_acquire atomic_try_cmpxchg1007#define atomic_try_cmpxchg_acquire atomic_try_cmpxchg
@@ -1002,6 +1099,8 @@ atomic_try_cmpxchg(atomic_t *v, int *old, int new) · 91 unmodified lines
1002 1099
1003#endif /* atomic_try_cmpxchg_relaxed */1100#endif /* atomic_try_cmpxchg_relaxed */
1004 1101
1102#define arch_atomic_sub_and_test atomic_sub_and_test
1103
1005#ifndef atomic_sub_and_test1104#ifndef atomic_sub_and_test
1006/**1105/**
1007 * atomic_sub_and_test - subtract value from variable and test result1106 * atomic_sub_and_test - subtract value from variable and test result
@@ -1020,6 +1119,8 @@ atomic_sub_and_test(int i, atomic_t *v) · 12 unmodified lines
1020#define atomic_sub_and_test atomic_sub_and_test1119#define atomic_sub_and_test atomic_sub_and_test
1021#endif1120#endif
1022 1121
1122#define arch_atomic_dec_and_test atomic_dec_and_test
1123
1023#ifndef atomic_dec_and_test1124#ifndef atomic_dec_and_test
1024/**1125/**
1025 * atomic_dec_and_test - decrement and test1126 * atomic_dec_and_test - decrement and test
@@ -1037,6 +1138,8 @@ atomic_dec_and_test(atomic_t *v) · 11 unmodified lines
1037#define atomic_dec_and_test atomic_dec_and_test1138#define atomic_dec_and_test atomic_dec_and_test
1038#endif1139#endif
1039 1140
1141#define arch_atomic_inc_and_test atomic_inc_and_test
1142
1040#ifndef atomic_inc_and_test1143#ifndef atomic_inc_and_test
1041/**1144/**
1042 * atomic_inc_and_test - increment and test1145 * atomic_inc_and_test - increment and test
@@ -1054,6 +1157,8 @@ atomic_inc_and_test(atomic_t *v) · 11 unmodified lines
1054#define atomic_inc_and_test atomic_inc_and_test1157#define atomic_inc_and_test atomic_inc_and_test
1055#endif1158#endif
1056 1159
1160#define arch_atomic_add_negative atomic_add_negative
1161
1057#ifndef atomic_add_negative1162#ifndef atomic_add_negative
1058/**1163/**
1059 * atomic_add_negative - add and test if negative1164 * atomic_add_negative - add and test if negative
@@ -1072,6 +1177,8 @@ atomic_add_negative(int i, atomic_t *v) · 12 unmodified lines
1072#define atomic_add_negative atomic_add_negative1177#define atomic_add_negative atomic_add_negative
1073#endif1178#endif
1074 1179
1180#define arch_atomic_fetch_add_unless atomic_fetch_add_unless
1181
1075#ifndef atomic_fetch_add_unless1182#ifndef atomic_fetch_add_unless
1076/**1183/**
1077 * atomic_fetch_add_unless - add unless the number is already a given value1184 * atomic_fetch_add_unless - add unless the number is already a given value
@@ -1097,6 +1204,8 @@ atomic_fetch_add_unless(atomic_t *v, int a, int u) · 19 unmodified lines
1097#define atomic_fetch_add_unless atomic_fetch_add_unless1204#define atomic_fetch_add_unless atomic_fetch_add_unless
1098#endif1205#endif
1099 1206
1207#define arch_atomic_add_unless atomic_add_unless
1208
1100#ifndef atomic_add_unless1209#ifndef atomic_add_unless
1101/**1210/**
1102 * atomic_add_unless - add unless the number is already a given value1211 * atomic_add_unless - add unless the number is already a given value
@@ -1115,6 +1224,8 @@ atomic_add_unless(atomic_t *v, int a, int u) · 12 unmodified lines
1115#define atomic_add_unless atomic_add_unless1224#define atomic_add_unless atomic_add_unless
1116#endif1225#endif
1117 1226
1227#define arch_atomic_inc_not_zero atomic_inc_not_zero
1228
1118#ifndef atomic_inc_not_zero1229#ifndef atomic_inc_not_zero
1119/**1230/**
1120 * atomic_inc_not_zero - increment unless the number is zero1231 * atomic_inc_not_zero - increment unless the number is zero
@@ -1131,6 +1242,8 @@ atomic_inc_not_zero(atomic_t *v) · 10 unmodified lines
1131#define atomic_inc_not_zero atomic_inc_not_zero1242#define atomic_inc_not_zero atomic_inc_not_zero
1132#endif1243#endif
1133 1244
1245#define arch_atomic_inc_unless_negative atomic_inc_unless_negative
1246
1134#ifndef atomic_inc_unless_negative1247#ifndef atomic_inc_unless_negative
1135static __always_inline bool1248static __always_inline bool
1136atomic_inc_unless_negative(atomic_t *v)1249atomic_inc_unless_negative(atomic_t *v)
@@ -1147,6 +1260,8 @@ atomic_inc_unless_negative(atomic_t *v) · 10 unmodified lines
1147#define atomic_inc_unless_negative atomic_inc_unless_negative1260#define atomic_inc_unless_negative atomic_inc_unless_negative
1148#endif1261#endif
1149 1262
1263#define arch_atomic_dec_unless_positive atomic_dec_unless_positive
1264
1150#ifndef atomic_dec_unless_positive1265#ifndef atomic_dec_unless_positive
1151static __always_inline bool1266static __always_inline bool
1152atomic_dec_unless_positive(atomic_t *v)1267atomic_dec_unless_positive(atomic_t *v)
@@ -1163,6 +1278,8 @@ atomic_dec_unless_positive(atomic_t *v) · 10 unmodified lines
1163#define atomic_dec_unless_positive atomic_dec_unless_positive1278#define atomic_dec_unless_positive atomic_dec_unless_positive
1164#endif1279#endif
1165 1280
1281#define arch_atomic_dec_if_positive atomic_dec_if_positive
1282
1166#ifndef atomic_dec_if_positive1283#ifndef atomic_dec_if_positive
1167static __always_inline int1284static __always_inline int
1168atomic_dec_if_positive(atomic_t *v)1285atomic_dec_if_positive(atomic_t *v)
@@ -1184,6 +1301,9 @@ atomic_dec_if_positive(atomic_t *v) · 15 unmodified lines
1184#include <asm-generic/atomic64.h>1301#include <asm-generic/atomic64.h>
1185#endif1302#endif
1186 1303
1304#define arch_atomic64_read atomic64_read
1305#define arch_atomic64_read_acquire atomic64_read_acquire
1306
1187#ifndef atomic64_read_acquire1307#ifndef atomic64_read_acquire
1188static __always_inline s641308static __always_inline s64
1189atomic64_read_acquire(const atomic64_t *v)1309atomic64_read_acquire(const atomic64_t *v)
@@ -1193,6 +1313,9 @@ atomic64_read_acquire(const atomic64_t *v) · 3 unmodified lines
1193#define atomic64_read_acquire atomic64_read_acquire1313#define atomic64_read_acquire atomic64_read_acquire
1194#endif1314#endif
1195 1315
1316#define arch_atomic64_set atomic64_set
1317#define arch_atomic64_set_release atomic64_set_release
1318
1196#ifndef atomic64_set_release1319#ifndef atomic64_set_release
1197static __always_inline void1320static __always_inline void
1198atomic64_set_release(atomic64_t *v, s64 i)1321atomic64_set_release(atomic64_t *v, s64 i)
@@ -1202,6 +1325,13 @@ atomic64_set_release(atomic64_t *v, s64 i) · 3 unmodified lines
1202#define atomic64_set_release atomic64_set_release1325#define atomic64_set_release atomic64_set_release
1203#endif1326#endif
1204 1327
1328#define arch_atomic64_add atomic64_add
1329
1330#define arch_atomic64_add_return atomic64_add_return
1331#define arch_atomic64_add_return_acquire atomic64_add_return_acquire
1332#define arch_atomic64_add_return_release atomic64_add_return_release
1333#define arch_atomic64_add_return_relaxed atomic64_add_return_relaxed
1334
1205#ifndef atomic64_add_return_relaxed1335#ifndef atomic64_add_return_relaxed
1206#define atomic64_add_return_acquire atomic64_add_return1336#define atomic64_add_return_acquire atomic64_add_return
1207#define atomic64_add_return_release atomic64_add_return1337#define atomic64_add_return_release atomic64_add_return
@@ -1244,6 +1374,11 @@ atomic64_add_return(s64 i, atomic64_t *v) · 36 unmodified lines
1244 1374
1245#endif /* atomic64_add_return_relaxed */1375#endif /* atomic64_add_return_relaxed */
1246 1376
1377#define arch_atomic64_fetch_add atomic64_fetch_add
1378#define arch_atomic64_fetch_add_acquire atomic64_fetch_add_acquire
1379#define arch_atomic64_fetch_add_release atomic64_fetch_add_release
1380#define arch_atomic64_fetch_add_relaxed atomic64_fetch_add_relaxed
1381
1247#ifndef atomic64_fetch_add_relaxed1382#ifndef atomic64_fetch_add_relaxed
1248#define atomic64_fetch_add_acquire atomic64_fetch_add1383#define atomic64_fetch_add_acquire atomic64_fetch_add
1249#define atomic64_fetch_add_release atomic64_fetch_add1384#define atomic64_fetch_add_release atomic64_fetch_add
@@ -1286,6 +1421,13 @@ atomic64_fetch_add(s64 i, atomic64_t *v) · 36 unmodified lines
1286 1421
1287#endif /* atomic64_fetch_add_relaxed */1422#endif /* atomic64_fetch_add_relaxed */
1288 1423
1424#define arch_atomic64_sub atomic64_sub
1425
1426#define arch_atomic64_sub_return atomic64_sub_return
1427#define arch_atomic64_sub_return_acquire atomic64_sub_return_acquire
1428#define arch_atomic64_sub_return_release atomic64_sub_return_release
1429#define arch_atomic64_sub_return_relaxed atomic64_sub_return_relaxed
1430
1289#ifndef atomic64_sub_return_relaxed1431#ifndef atomic64_sub_return_relaxed
1290#define atomic64_sub_return_acquire atomic64_sub_return1432#define atomic64_sub_return_acquire atomic64_sub_return
1291#define atomic64_sub_return_release atomic64_sub_return1433#define atomic64_sub_return_release atomic64_sub_return
@@ -1328,6 +1470,11 @@ atomic64_sub_return(s64 i, atomic64_t *v) · 36 unmodified lines
1328 1470
1329#endif /* atomic64_sub_return_relaxed */1471#endif /* atomic64_sub_return_relaxed */
1330 1472
1473#define arch_atomic64_fetch_sub atomic64_fetch_sub
1474#define arch_atomic64_fetch_sub_acquire atomic64_fetch_sub_acquire
1475#define arch_atomic64_fetch_sub_release atomic64_fetch_sub_release
1476#define arch_atomic64_fetch_sub_relaxed atomic64_fetch_sub_relaxed
1477
1331#ifndef atomic64_fetch_sub_relaxed1478#ifndef atomic64_fetch_sub_relaxed
1332#define atomic64_fetch_sub_acquire atomic64_fetch_sub1479#define atomic64_fetch_sub_acquire atomic64_fetch_sub
1333#define atomic64_fetch_sub_release atomic64_fetch_sub1480#define atomic64_fetch_sub_release atomic64_fetch_sub
@@ -1370,6 +1517,8 @@ atomic64_fetch_sub(s64 i, atomic64_t *v) · 36 unmodified lines
1370 1517
1371#endif /* atomic64_fetch_sub_relaxed */1518#endif /* atomic64_fetch_sub_relaxed */
1372 1519
1520#define arch_atomic64_inc atomic64_inc
1521
1373#ifndef atomic64_inc1522#ifndef atomic64_inc
1374static __always_inline void1523static __always_inline void
1375atomic64_inc(atomic64_t *v)1524atomic64_inc(atomic64_t *v)
@@ -1379,6 +1528,11 @@ atomic64_inc(atomic64_t *v) · 3 unmodified lines
1379#define atomic64_inc atomic64_inc1528#define atomic64_inc atomic64_inc
1380#endif1529#endif
1381 1530
1531#define arch_atomic64_inc_return atomic64_inc_return
1532#define arch_atomic64_inc_return_acquire atomic64_inc_return_acquire
1533#define arch_atomic64_inc_return_release atomic64_inc_return_release
1534#define arch_atomic64_inc_return_relaxed atomic64_inc_return_relaxed
1535
1382#ifndef atomic64_inc_return_relaxed1536#ifndef atomic64_inc_return_relaxed
1383#ifdef atomic64_inc_return1537#ifdef atomic64_inc_return
1384#define atomic64_inc_return_acquire atomic64_inc_return1538#define atomic64_inc_return_acquire atomic64_inc_return
@@ -1460,6 +1614,11 @@ atomic64_inc_return(atomic64_t *v) · 75 unmodified lines
1460 1614
1461#endif /* atomic64_inc_return_relaxed */1615#endif /* atomic64_inc_return_relaxed */
1462 1616
1617#define arch_atomic64_fetch_inc atomic64_fetch_inc
1618#define arch_atomic64_fetch_inc_acquire atomic64_fetch_inc_acquire
1619#define arch_atomic64_fetch_inc_release atomic64_fetch_inc_release
1620#define arch_atomic64_fetch_inc_relaxed atomic64_fetch_inc_relaxed
1621
1463#ifndef atomic64_fetch_inc_relaxed1622#ifndef atomic64_fetch_inc_relaxed
1464#ifdef atomic64_fetch_inc1623#ifdef atomic64_fetch_inc
1465#define atomic64_fetch_inc_acquire atomic64_fetch_inc1624#define atomic64_fetch_inc_acquire atomic64_fetch_inc
@@ -1541,6 +1700,8 @@ atomic64_fetch_inc(atomic64_t *v) · 75 unmodified lines
1541 1700
1542#endif /* atomic64_fetch_inc_relaxed */1701#endif /* atomic64_fetch_inc_relaxed */
1543 1702
1703#define arch_atomic64_dec atomic64_dec
1704
1544#ifndef atomic64_dec1705#ifndef atomic64_dec
1545static __always_inline void1706static __always_inline void
1546atomic64_dec(atomic64_t *v)1707atomic64_dec(atomic64_t *v)
@@ -1550,6 +1711,11 @@ atomic64_dec(atomic64_t *v) · 3 unmodified lines
1550#define atomic64_dec atomic64_dec1711#define atomic64_dec atomic64_dec
1551#endif1712#endif
1552 1713
1714#define arch_atomic64_dec_return atomic64_dec_return
1715#define arch_atomic64_dec_return_acquire atomic64_dec_return_acquire
1716#define arch_atomic64_dec_return_release atomic64_dec_return_release
1717#define arch_atomic64_dec_return_relaxed atomic64_dec_return_relaxed
1718
1553#ifndef atomic64_dec_return_relaxed1719#ifndef atomic64_dec_return_relaxed
1554#ifdef atomic64_dec_return1720#ifdef atomic64_dec_return
1555#define atomic64_dec_return_acquire atomic64_dec_return1721#define atomic64_dec_return_acquire atomic64_dec_return
@@ -1631,6 +1797,11 @@ atomic64_dec_return(atomic64_t *v) · 75 unmodified lines
1631 1797
1632#endif /* atomic64_dec_return_relaxed */1798#endif /* atomic64_dec_return_relaxed */
1633 1799
1800#define arch_atomic64_fetch_dec atomic64_fetch_dec
1801#define arch_atomic64_fetch_dec_acquire atomic64_fetch_dec_acquire
1802#define arch_atomic64_fetch_dec_release atomic64_fetch_dec_release
1803#define arch_atomic64_fetch_dec_relaxed atomic64_fetch_dec_relaxed
1804
1634#ifndef atomic64_fetch_dec_relaxed1805#ifndef atomic64_fetch_dec_relaxed
1635#ifdef atomic64_fetch_dec1806#ifdef atomic64_fetch_dec
1636#define atomic64_fetch_dec_acquire atomic64_fetch_dec1807#define atomic64_fetch_dec_acquire atomic64_fetch_dec
@@ -1712,6 +1883,13 @@ atomic64_fetch_dec(atomic64_t *v) · 75 unmodified lines
1712 1883
1713#endif /* atomic64_fetch_dec_relaxed */1884#endif /* atomic64_fetch_dec_relaxed */
1714 1885
1886#define arch_atomic64_and atomic64_and
1887
1888#define arch_atomic64_fetch_and atomic64_fetch_and
1889#define arch_atomic64_fetch_and_acquire atomic64_fetch_and_acquire
1890#define arch_atomic64_fetch_and_release atomic64_fetch_and_release
1891#define arch_atomic64_fetch_and_relaxed atomic64_fetch_and_relaxed
1892
1715#ifndef atomic64_fetch_and_relaxed1893#ifndef atomic64_fetch_and_relaxed
1716#define atomic64_fetch_and_acquire atomic64_fetch_and1894#define atomic64_fetch_and_acquire atomic64_fetch_and
1717#define atomic64_fetch_and_release atomic64_fetch_and1895#define atomic64_fetch_and_release atomic64_fetch_and
@@ -1754,6 +1932,8 @@ atomic64_fetch_and(s64 i, atomic64_t *v) · 36 unmodified lines
1754 1932
1755#endif /* atomic64_fetch_and_relaxed */1933#endif /* atomic64_fetch_and_relaxed */
1756 1934
1935#define arch_atomic64_andnot atomic64_andnot
1936
1757#ifndef atomic64_andnot1937#ifndef atomic64_andnot
1758static __always_inline void1938static __always_inline void
1759atomic64_andnot(s64 i, atomic64_t *v)1939atomic64_andnot(s64 i, atomic64_t *v)
@@ -1763,6 +1943,11 @@ atomic64_andnot(s64 i, atomic64_t *v) · 3 unmodified lines
1763#define atomic64_andnot atomic64_andnot1943#define atomic64_andnot atomic64_andnot
1764#endif1944#endif
1765 1945
1946#define arch_atomic64_fetch_andnot atomic64_fetch_andnot
1947#define arch_atomic64_fetch_andnot_acquire atomic64_fetch_andnot_acquire
1948#define arch_atomic64_fetch_andnot_release atomic64_fetch_andnot_release
1949#define arch_atomic64_fetch_andnot_relaxed atomic64_fetch_andnot_relaxed
1950
1766#ifndef atomic64_fetch_andnot_relaxed1951#ifndef atomic64_fetch_andnot_relaxed
1767#ifdef atomic64_fetch_andnot1952#ifdef atomic64_fetch_andnot
1768#define atomic64_fetch_andnot_acquire atomic64_fetch_andnot1953#define atomic64_fetch_andnot_acquire atomic64_fetch_andnot
@@ -1844,6 +2029,13 @@ atomic64_fetch_andnot(s64 i, atomic64_t *v) · 75 unmodified lines
1844 2029
1845#endif /* atomic64_fetch_andnot_relaxed */2030#endif /* atomic64_fetch_andnot_relaxed */
1846 2031
2032#define arch_atomic64_or atomic64_or
2033
2034#define arch_atomic64_fetch_or atomic64_fetch_or
2035#define arch_atomic64_fetch_or_acquire atomic64_fetch_or_acquire
2036#define arch_atomic64_fetch_or_release atomic64_fetch_or_release
2037#define arch_atomic64_fetch_or_relaxed atomic64_fetch_or_relaxed
2038
1847#ifndef atomic64_fetch_or_relaxed2039#ifndef atomic64_fetch_or_relaxed
1848#define atomic64_fetch_or_acquire atomic64_fetch_or2040#define atomic64_fetch_or_acquire atomic64_fetch_or
1849#define atomic64_fetch_or_release atomic64_fetch_or2041#define atomic64_fetch_or_release atomic64_fetch_or
@@ -1886,6 +2078,13 @@ atomic64_fetch_or(s64 i, atomic64_t *v) · 36 unmodified lines
1886 2078
1887#endif /* atomic64_fetch_or_relaxed */2079#endif /* atomic64_fetch_or_relaxed */
1888 2080
2081#define arch_atomic64_xor atomic64_xor
2082
2083#define arch_atomic64_fetch_xor atomic64_fetch_xor
2084#define arch_atomic64_fetch_xor_acquire atomic64_fetch_xor_acquire
2085#define arch_atomic64_fetch_xor_release atomic64_fetch_xor_release
2086#define arch_atomic64_fetch_xor_relaxed atomic64_fetch_xor_relaxed
2087
1889#ifndef atomic64_fetch_xor_relaxed2088#ifndef atomic64_fetch_xor_relaxed
1890#define atomic64_fetch_xor_acquire atomic64_fetch_xor2089#define atomic64_fetch_xor_acquire atomic64_fetch_xor
1891#define atomic64_fetch_xor_release atomic64_fetch_xor2090#define atomic64_fetch_xor_release atomic64_fetch_xor
@@ -1928,6 +2127,11 @@ atomic64_fetch_xor(s64 i, atomic64_t *v) · 36 unmodified lines
1928 2127
1929#endif /* atomic64_fetch_xor_relaxed */2128#endif /* atomic64_fetch_xor_relaxed */
1930 2129
2130#define arch_atomic64_xchg atomic64_xchg
2131#define arch_atomic64_xchg_acquire atomic64_xchg_acquire
2132#define arch_atomic64_xchg_release atomic64_xchg_release
2133#define arch_atomic64_xchg_relaxed atomic64_xchg_relaxed
2134
1931#ifndef atomic64_xchg_relaxed2135#ifndef atomic64_xchg_relaxed
1932#define atomic64_xchg_acquire atomic64_xchg2136#define atomic64_xchg_acquire atomic64_xchg
1933#define atomic64_xchg_release atomic64_xchg2137#define atomic64_xchg_release atomic64_xchg
@@ -1970,6 +2174,11 @@ atomic64_xchg(atomic64_t *v, s64 i) · 36 unmodified lines
1970 2174
1971#endif /* atomic64_xchg_relaxed */2175#endif /* atomic64_xchg_relaxed */
1972 2176
2177#define arch_atomic64_cmpxchg atomic64_cmpxchg
2178#define arch_atomic64_cmpxchg_acquire atomic64_cmpxchg_acquire
2179#define arch_atomic64_cmpxchg_release atomic64_cmpxchg_release
2180#define arch_atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed
2181
1973#ifndef atomic64_cmpxchg_relaxed2182#ifndef atomic64_cmpxchg_relaxed
1974#define atomic64_cmpxchg_acquire atomic64_cmpxchg2183#define atomic64_cmpxchg_acquire atomic64_cmpxchg
1975#define atomic64_cmpxchg_release atomic64_cmpxchg2184#define atomic64_cmpxchg_release atomic64_cmpxchg
@@ -2012,6 +2221,11 @@ atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) · 36 unmodified lines
2012 2221
2013#endif /* atomic64_cmpxchg_relaxed */2222#endif /* atomic64_cmpxchg_relaxed */
2014 2223
2224#define arch_atomic64_try_cmpxchg atomic64_try_cmpxchg
2225#define arch_atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg_acquire
2226#define arch_atomic64_try_cmpxchg_release atomic64_try_cmpxchg_release
2227#define arch_atomic64_try_cmpxchg_relaxed atomic64_try_cmpxchg_relaxed
2228
2015#ifndef atomic64_try_cmpxchg_relaxed2229#ifndef atomic64_try_cmpxchg_relaxed
2016#ifdef atomic64_try_cmpxchg2230#ifdef atomic64_try_cmpxchg
2017#define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg2231#define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg
@@ -2109,6 +2323,8 @@ atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) · 91 unmodified lines
2109 2323
2110#endif /* atomic64_try_cmpxchg_relaxed */2324#endif /* atomic64_try_cmpxchg_relaxed */
2111 2325
2326#define arch_atomic64_sub_and_test atomic64_sub_and_test
2327
2112#ifndef atomic64_sub_and_test2328#ifndef atomic64_sub_and_test
2113/**2329/**
2114 * atomic64_sub_and_test - subtract value from variable and test result2330 * atomic64_sub_and_test - subtract value from variable and test result
@@ -2127,6 +2343,8 @@ atomic64_sub_and_test(s64 i, atomic64_t *v) · 12 unmodified lines
2127#define atomic64_sub_and_test atomic64_sub_and_test2343#define atomic64_sub_and_test atomic64_sub_and_test
2128#endif2344#endif
2129 2345
2346#define arch_atomic64_dec_and_test atomic64_dec_and_test
2347
2130#ifndef atomic64_dec_and_test2348#ifndef atomic64_dec_and_test
2131/**2349/**
2132 * atomic64_dec_and_test - decrement and test2350 * atomic64_dec_and_test - decrement and test
@@ -2144,6 +2362,8 @@ atomic64_dec_and_test(atomic64_t *v) · 11 unmodified lines
2144#define atomic64_dec_and_test atomic64_dec_and_test2362#define atomic64_dec_and_test atomic64_dec_and_test
2145#endif2363#endif
2146 2364
2365#define arch_atomic64_inc_and_test atomic64_inc_and_test
2366
2147#ifndef atomic64_inc_and_test2367#ifndef atomic64_inc_and_test
2148/**2368/**
2149 * atomic64_inc_and_test - increment and test2369 * atomic64_inc_and_test - increment and test
@@ -2161,6 +2381,8 @@ atomic64_inc_and_test(atomic64_t *v) · 11 unmodified lines
2161#define atomic64_inc_and_test atomic64_inc_and_test2381#define atomic64_inc_and_test atomic64_inc_and_test
2162#endif2382#endif
2163 2383
2384#define arch_atomic64_add_negative atomic64_add_negative
2385
2164#ifndef atomic64_add_negative2386#ifndef atomic64_add_negative
2165/**2387/**
2166 * atomic64_add_negative - add and test if negative2388 * atomic64_add_negative - add and test if negative
@@ -2179,6 +2401,8 @@ atomic64_add_negative(s64 i, atomic64_t *v) · 12 unmodified lines
2179#define atomic64_add_negative atomic64_add_negative2401#define atomic64_add_negative atomic64_add_negative
2180#endif2402#endif
2181 2403
2404#define arch_atomic64_fetch_add_unless atomic64_fetch_add_unless
2405
2182#ifndef atomic64_fetch_add_unless2406#ifndef atomic64_fetch_add_unless
2183/**2407/**
2184 * atomic64_fetch_add_unless - add unless the number is already a given value2408 * atomic64_fetch_add_unless - add unless the number is already a given value
@@ -2204,6 +2428,8 @@ atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) · 19 unmodified lines
2204#define atomic64_fetch_add_unless atomic64_fetch_add_unless2428#define atomic64_fetch_add_unless atomic64_fetch_add_unless
2205#endif2429#endif
2206 2430
2431#define arch_atomic64_add_unless atomic64_add_unless
2432
2207#ifndef atomic64_add_unless2433#ifndef atomic64_add_unless
2208/**2434/**
2209 * atomic64_add_unless - add unless the number is already a given value2435 * atomic64_add_unless - add unless the number is already a given value
@@ -2222,6 +2448,8 @@ atomic64_add_unless(atomic64_t *v, s64 a, s64 u) · 12 unmodified lines
2222#define atomic64_add_unless atomic64_add_unless2448#define atomic64_add_unless atomic64_add_unless
2223#endif2449#endif
2224 2450
2451#define arch_atomic64_inc_not_zero atomic64_inc_not_zero
2452
2225#ifndef atomic64_inc_not_zero2453#ifndef atomic64_inc_not_zero
2226/**2454/**
2227 * atomic64_inc_not_zero - increment unless the number is zero2455 * atomic64_inc_not_zero - increment unless the number is zero
@@ -2238,6 +2466,8 @@ atomic64_inc_not_zero(atomic64_t *v) · 10 unmodified lines
2238#define atomic64_inc_not_zero atomic64_inc_not_zero2466#define atomic64_inc_not_zero atomic64_inc_not_zero
2239#endif2467#endif
2240 2468
2469#define arch_atomic64_inc_unless_negative atomic64_inc_unless_negative
2470
2241#ifndef atomic64_inc_unless_negative2471#ifndef atomic64_inc_unless_negative
2242static __always_inline bool2472static __always_inline bool
2243atomic64_inc_unless_negative(atomic64_t *v)2473atomic64_inc_unless_negative(atomic64_t *v)
@@ -2254,6 +2484,8 @@ atomic64_inc_unless_negative(atomic64_t *v) · 10 unmodified lines
2254#define atomic64_inc_unless_negative atomic64_inc_unless_negative2484#define atomic64_inc_unless_negative atomic64_inc_unless_negative
2255#endif2485#endif
2256 2486
2487#define arch_atomic64_dec_unless_positive atomic64_dec_unless_positive
2488
2257#ifndef atomic64_dec_unless_positive2489#ifndef atomic64_dec_unless_positive
2258static __always_inline bool2490static __always_inline bool
2259atomic64_dec_unless_positive(atomic64_t *v)2491atomic64_dec_unless_positive(atomic64_t *v)
@@ -2270,6 +2502,8 @@ atomic64_dec_unless_positive(atomic64_t *v) · 10 unmodified lines
2270#define atomic64_dec_unless_positive atomic64_dec_unless_positive2502#define atomic64_dec_unless_positive atomic64_dec_unless_positive
2271#endif2503#endif
2272 2504
2505#define arch_atomic64_dec_if_positive atomic64_dec_if_positive
2506
2273#ifndef atomic64_dec_if_positive2507#ifndef atomic64_dec_if_positive
2274static __always_inline s642508static __always_inline s64
2275atomic64_dec_if_positive(atomic64_t *v)2509atomic64_dec_if_positive(atomic64_t *v)
@@ -2288,4 +2522,4 @@ atomic64_dec_if_positive(atomic64_t *v) · 12 unmodified lines
2288#endif2522#endif
2289 2523
2290#endif /* _LINUX_ATOMIC_FALLBACK_H */2524#endif /* _LINUX_ATOMIC_FALLBACK_H */
2291// 1fac0941c79bf0ae100723cc2ac9b94061f0b67a2525// 9d95b56f98d82a2a26c7b79ccdd0c47572d50a6f
include/linux/bits.h+1−2
@@ -18,8 +18,7 @@ · 17 unmodified lines
18 * position @h. For example18 * position @h. For example
19 * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.19 * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
20 */20 */
21#if !defined(__ASSEMBLY__) && \21#if !defined(__ASSEMBLY__)
22 (!defined(CONFIG_CC_IS_GCC) || CONFIG_GCC_VERSION >= 49000)
23#include <linux/build_bug.h>22#include <linux/build_bug.h>
24#define GENMASK_INPUT_CHECK(h, l) \23#define GENMASK_INPUT_CHECK(h, l) \
25 (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \24 (BUILD_BUG_ON_ZERO(__builtin_choose_expr( \
include/linux/blkdev.h+1−0
@@ -590,6 +590,7 @@ struct request_queue { · 589 unmodified lines
590 u64 write_hints[BLK_MAX_WRITE_HINTS];590 u64 write_hints[BLK_MAX_WRITE_HINTS];
591};591};
592 592
593/* Keep blk_queue_flag_name[] in sync with the definitions below */
593#define QUEUE_FLAG_STOPPED 0 /* queue is stopped */594#define QUEUE_FLAG_STOPPED 0 /* queue is stopped */
594#define QUEUE_FLAG_DYING 1 /* queue being torn down */595#define QUEUE_FLAG_DYING 1 /* queue being torn down */
595#define QUEUE_FLAG_NOMERGES 3 /* disable merge attempts */596#define QUEUE_FLAG_NOMERGES 3 /* disable merge attempts */
include/linux/bpf-netns.h+3−2
@@ -33,7 +33,7 @@ int netns_bpf_prog_query(const union bpf_attr *attr, · 32 unmodified lines
33 union bpf_attr __user *uattr);33 union bpf_attr __user *uattr);
34int netns_bpf_prog_attach(const union bpf_attr *attr,34int netns_bpf_prog_attach(const union bpf_attr *attr,
35 struct bpf_prog *prog);35 struct bpf_prog *prog);
36int netns_bpf_prog_detach(const union bpf_attr *attr);36int netns_bpf_prog_detach(const union bpf_attr *attr, enum bpf_prog_type ptype);
37int netns_bpf_link_create(const union bpf_attr *attr,37int netns_bpf_link_create(const union bpf_attr *attr,
38 struct bpf_prog *prog);38 struct bpf_prog *prog);
39#else39#else
@@ -49,7 +49,8 @@ static inline int netns_bpf_prog_attach(const union bpf_attr *attr, · 9 unmodified lines
49 return -EOPNOTSUPP;49 return -EOPNOTSUPP;
50}50}
51 51
52static inline int netns_bpf_prog_detach(const union bpf_attr *attr)52static inline int netns_bpf_prog_detach(const union bpf_attr *attr,
53 enum bpf_prog_type ptype)
53{54{
54 return -EOPNOTSUPP;55 return -EOPNOTSUPP;
55}56}
include/linux/bpf.h+11−2
@@ -1543,13 +1543,16 @@ static inline void bpf_map_offload_map_free(struct bpf_map *map) · 1542 unmodified lines
1543#endif /* CONFIG_NET && CONFIG_BPF_SYSCALL */1543#endif /* CONFIG_NET && CONFIG_BPF_SYSCALL */
1544 1544
1545#if defined(CONFIG_BPF_STREAM_PARSER)1545#if defined(CONFIG_BPF_STREAM_PARSER)
1546int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog, u32 which);1546int sock_map_prog_update(struct bpf_map *map, struct bpf_prog *prog,
1547 struct bpf_prog *old, u32 which);
1547int sock_map_get_from_fd(const union bpf_attr *attr, struct bpf_prog *prog);1548int sock_map_get_from_fd(const union bpf_attr *attr, struct bpf_prog *prog);
1549int sock_map_prog_detach(const union bpf_attr *attr, enum bpf_prog_type ptype);
1548void sock_map_unhash(struct sock *sk);1550void sock_map_unhash(struct sock *sk);
1549void sock_map_close(struct sock *sk, long timeout);1551void sock_map_close(struct sock *sk, long timeout);
1550#else1552#else
1551static inline int sock_map_prog_update(struct bpf_map *map,1553static inline int sock_map_prog_update(struct bpf_map *map,
1552 struct bpf_prog *prog, u32 which)1554 struct bpf_prog *prog,
1555 struct bpf_prog *old, u32 which)
1553{1556{
1554 return -EOPNOTSUPP;1557 return -EOPNOTSUPP;
1555}1558}
@@ -1559,6 +1562,12 @@ static inline int sock_map_get_from_fd(const union bpf_attr *attr, · 3 unmodified lines
1559{1562{
1560 return -EINVAL;1563 return -EINVAL;
1561}1564}
1565
1566static inline int sock_map_prog_detach(const union bpf_attr *attr,
1567 enum bpf_prog_type ptype)
1568{
1569 return -EOPNOTSUPP;
1570}
1562#endif /* CONFIG_BPF_STREAM_PARSER */1571#endif /* CONFIG_BPF_STREAM_PARSER */
1563 1572
1564#if defined(CONFIG_INET) && defined(CONFIG_BPF_SYSCALL)1573#if defined(CONFIG_INET) && defined(CONFIG_BPF_SYSCALL)
include/linux/btf.h+5−0
@@ -82,6 +82,11 @@ static inline bool btf_type_is_int(const struct btf_type *t) · 81 unmodified lines
82 return BTF_INFO_KIND(t->info) == BTF_KIND_INT;82 return BTF_INFO_KIND(t->info) == BTF_KIND_INT;
83}83}
84 84
85static inline bool btf_type_is_small_int(const struct btf_type *t)
86{
87 return btf_type_is_int(t) && t->size <= sizeof(u64);
88}
89
85static inline bool btf_type_is_enum(const struct btf_type *t)90static inline bool btf_type_is_enum(const struct btf_type *t)
86{91{
87 return BTF_INFO_KIND(t->info) == BTF_KIND_ENUM;92 return BTF_INFO_KIND(t->info) == BTF_KIND_ENUM;
include/linux/cgroup-defs.h+6−2
@@ -790,7 +790,9 @@ struct sock_cgroup_data { · 789 unmodified lines
790 union {790 union {
791#ifdef __LITTLE_ENDIAN791#ifdef __LITTLE_ENDIAN
792 struct {792 struct {
793 u8 is_data;793 u8 is_data : 1;
794 u8 no_refcnt : 1;
795 u8 unused : 6;
794 u8 padding;796 u8 padding;
795 u16 prioidx;797 u16 prioidx;
796 u32 classid;798 u32 classid;
@@ -800,7 +802,9 @@ struct sock_cgroup_data { · 3 unmodified lines
800 u32 classid;802 u32 classid;
801 u16 prioidx;803 u16 prioidx;
802 u8 padding;804 u8 padding;
803 u8 is_data;805 u8 unused : 6;
806 u8 no_refcnt : 1;
807 u8 is_data : 1;
804 } __packed;808 } __packed;
805#endif809#endif
806 u64 val;810 u64 val;
include/linux/cgroup.h+3−1
@@ -822,6 +822,7 @@ extern spinlock_t cgroup_sk_update_lock; · 821 unmodified lines
822 822
823void cgroup_sk_alloc_disable(void);823void cgroup_sk_alloc_disable(void);
824void cgroup_sk_alloc(struct sock_cgroup_data *skcd);824void cgroup_sk_alloc(struct sock_cgroup_data *skcd);
825void cgroup_sk_clone(struct sock_cgroup_data *skcd);
825void cgroup_sk_free(struct sock_cgroup_data *skcd);826void cgroup_sk_free(struct sock_cgroup_data *skcd);
826 827
827static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd)828static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd)
@@ -835,7 +836,7 @@ static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd) · 7 unmodified lines
835 */836 */
836 v = READ_ONCE(skcd->val);837 v = READ_ONCE(skcd->val);
837 838
838 if (v & 1)839 if (v & 3)
839 return &cgrp_dfl_root.cgrp;840 return &cgrp_dfl_root.cgrp;
840 841
841 return (struct cgroup *)(unsigned long)v ?: &cgrp_dfl_root.cgrp;842 return (struct cgroup *)(unsigned long)v ?: &cgrp_dfl_root.cgrp;
@@ -847,6 +848,7 @@ static inline struct cgroup *sock_cgroup_ptr(struct sock_cgroup_data *skcd) · 5 unmodified lines
847#else /* CONFIG_CGROUP_DATA */848#else /* CONFIG_CGROUP_DATA */
848 849
849static inline void cgroup_sk_alloc(struct sock_cgroup_data *skcd) {}850static inline void cgroup_sk_alloc(struct sock_cgroup_data *skcd) {}
851static inline void cgroup_sk_clone(struct sock_cgroup_data *skcd) {}
850static inline void cgroup_sk_free(struct sock_cgroup_data *skcd) {}852static inline void cgroup_sk_free(struct sock_cgroup_data *skcd) {}
851 853
852#endif /* CONFIG_CGROUP_DATA */854#endif /* CONFIG_CGROUP_DATA */
include/linux/compiler-clang.h+8−0
@@ -33,6 +33,14 @@ · 32 unmodified lines
33#define __no_sanitize_thread33#define __no_sanitize_thread
34#endif34#endif
35 35
36#if __has_feature(undefined_behavior_sanitizer)
37/* GCC does not have __SANITIZE_UNDEFINED__ */
38#define __no_sanitize_undefined \
39 __attribute__((no_sanitize("undefined")))
40#else
41#define __no_sanitize_undefined
42#endif
43
36/*44/*
37 * Not all versions of clang implement the the type-generic versions45 * Not all versions of clang implement the the type-generic versions
38 * of the builtin overflow checkers. Fortunately, clang implements46 * of the builtin overflow checkers. Fortunately, clang implements
include/linux/compiler-gcc.h+7−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11 + __GNUC_PATCHLEVEL__)11 + __GNUC_PATCHLEVEL__)
12 12
13/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */13/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145 */
14#if GCC_VERSION < 4080014#if GCC_VERSION < 40900
15# error Sorry, your compiler is too old - please upgrade it.15# error Sorry, your compiler is too old - please upgrade it.
16#endif16#endif
17 17
@@ -150,6 +150,12 @@ · 132 unmodified lines
150#define __no_sanitize_thread150#define __no_sanitize_thread
151#endif151#endif
152 152
153#if __has_attribute(__no_sanitize_undefined__)
154#define __no_sanitize_undefined __attribute__((no_sanitize_undefined))
155#else
156#define __no_sanitize_undefined
157#endif
158
153#if GCC_VERSION >= 50100159#if GCC_VERSION >= 50100
154#define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1160#define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1
155#endif161#endif
include/linux/compiler.h+1−1
@@ -123,7 +123,7 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, · 122 unmodified lines
123#ifdef CONFIG_DEBUG_ENTRY123#ifdef CONFIG_DEBUG_ENTRY
124/* Begin/end of an instrumentation safe region */124/* Begin/end of an instrumentation safe region */
125#define instrumentation_begin() ({ \125#define instrumentation_begin() ({ \
126 asm volatile("%c0:\n\t" \126 asm volatile("%c0: nop\n\t" \
127 ".pushsection .discard.instr_begin\n\t" \127 ".pushsection .discard.instr_begin\n\t" \
128 ".long %c0b - .\n\t" \128 ".long %c0b - .\n\t" \
129 ".popsection\n\t" : : "i" (__COUNTER__)); \129 ".popsection\n\t" : : "i" (__COUNTER__)); \
include/linux/compiler_attributes.h+1−0
@@ -40,6 +40,7 @@ · 39 unmodified lines
40# define __GCC4_has_attribute___noclone__ 140# define __GCC4_has_attribute___noclone__ 1
41# define __GCC4_has_attribute___nonstring__ 041# define __GCC4_has_attribute___nonstring__ 0
42# define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8)42# define __GCC4_has_attribute___no_sanitize_address__ (__GNUC_MINOR__ >= 8)
43# define __GCC4_has_attribute___no_sanitize_undefined__ (__GNUC_MINOR__ >= 9)
43# define __GCC4_has_attribute___fallthrough__ 044# define __GCC4_has_attribute___fallthrough__ 0
44#endif45#endif
45 46
include/linux/compiler_types.h+7−34
@@ -118,10 +118,6 @@ struct ftrace_likely_data { · 117 unmodified lines
118#define notrace __attribute__((__no_instrument_function__))118#define notrace __attribute__((__no_instrument_function__))
119#endif119#endif
120 120
121/* Section for code which can't be instrumented at all */
122#define noinstr \
123 noinline notrace __attribute((__section__(".noinstr.text")))
124
125/*121/*
126 * it doesn't make sense on ARM (currently the only user of __naked)122 * it doesn't make sense on ARM (currently the only user of __naked)
127 * to trace naked functions because then mcount is called without123 * to trace naked functions because then mcount is called without
@@ -193,16 +189,18 @@ struct ftrace_likely_data { · 65 unmodified lines
193 189
194#define __no_kcsan __no_sanitize_thread190#define __no_kcsan __no_sanitize_thread
195#ifdef __SANITIZE_THREAD__191#ifdef __SANITIZE_THREAD__
196# define __no_kcsan_or_inline __no_kcsan notrace __maybe_unused192# define __no_sanitize_or_inline __no_kcsan notrace __maybe_unused
197# define __no_sanitize_or_inline __no_kcsan_or_inline
198#else
199# define __no_kcsan_or_inline __always_inline
200#endif193#endif
201 194
202#ifndef __no_sanitize_or_inline195#ifndef __no_sanitize_or_inline
203#define __no_sanitize_or_inline __always_inline196#define __no_sanitize_or_inline __always_inline
204#endif197#endif
205 198
199/* Section for code which can't be instrumented at all */
200#define noinstr \
201 noinline notrace __attribute((__section__(".noinstr.text"))) \
202 __no_kcsan __no_sanitize_address
203
206#endif /* __KERNEL__ */204#endif /* __KERNEL__ */
207 205
208#endif /* __ASSEMBLY__ */206#endif /* __ASSEMBLY__ */
@@ -254,32 +252,8 @@ struct ftrace_likely_data { · 45 unmodified lines
254 * __unqual_scalar_typeof(x) - Declare an unqualified scalar type, leaving252 * __unqual_scalar_typeof(x) - Declare an unqualified scalar type, leaving
255 * non-scalar types unchanged.253 * non-scalar types unchanged.
256 */254 */
257#if (defined(CONFIG_CC_IS_GCC) && CONFIG_GCC_VERSION < 40900) || defined(__CHECKER__)
258/*255/*
259 * We build this out of a couple of helper macros in a vain attempt to256 * Prefer C11 _Generic for better compile-times and simpler code. Note: 'char'
260 * help you keep your lunch down while reading it.
261 */
262#define __pick_scalar_type(x, type, otherwise) \
263 __builtin_choose_expr(__same_type(x, type), (type)0, otherwise)
264
265/*
266 * 'char' is not type-compatible with either 'signed char' or 'unsigned char',
267 * so we include the naked type here as well as the signed/unsigned variants.
268 */
269#define __pick_integer_type(x, type, otherwise) \
270 __pick_scalar_type(x, type, \
271 __pick_scalar_type(x, unsigned type, \
272 __pick_scalar_type(x, signed type, otherwise)))
273
274#define __unqual_scalar_typeof(x) typeof( \
275 __pick_integer_type(x, char, \
276 __pick_integer_type(x, short, \
277 __pick_integer_type(x, int, \
278 __pick_integer_type(x, long, \
279 __pick_integer_type(x, long long, x))))))
280#else
281/*
282 * If supported, prefer C11 _Generic for better compile-times. As above, 'char'
283 * is not type-compatible with 'signed char', and we define a separate case.257 * is not type-compatible with 'signed char', and we define a separate case.
284 */258 */
285#define __scalar_type_to_expr_cases(type) \259#define __scalar_type_to_expr_cases(type) \
@@ -295,7 +269,6 @@ struct ftrace_likely_data { · 9 unmodified lines
295 __scalar_type_to_expr_cases(long), \269 __scalar_type_to_expr_cases(long), \
296 __scalar_type_to_expr_cases(long long), \270 __scalar_type_to_expr_cases(long long), \
297 default: (x)))271 default: (x)))
298#endif
299 272
300/* Is this type a native word size -- useful for atomic operations */273/* Is this type a native word size -- useful for atomic operations */
301#define __native_word(t) \274#define __native_word(t) \
include/linux/device.h+3−2
@@ -433,7 +433,8 @@ enum dl_dev_state { · 432 unmodified lines
433 * @suppliers: List of links to supplier devices.433 * @suppliers: List of links to supplier devices.
434 * @consumers: List of links to consumer devices.434 * @consumers: List of links to consumer devices.
435 * @needs_suppliers: Hook to global list of devices waiting for suppliers.435 * @needs_suppliers: Hook to global list of devices waiting for suppliers.
436 * @defer_sync: Hook to global list of devices that have deferred sync_state.436 * @defer_hook: Hook to global list of devices that have deferred sync_state or
437 * deferred fw_devlink.
437 * @need_for_probe: If needs_suppliers is on a list, this indicates if the438 * @need_for_probe: If needs_suppliers is on a list, this indicates if the
438 * suppliers are needed for probe or not.439 * suppliers are needed for probe or not.
439 * @status: Driver status information.440 * @status: Driver status information.
@@ -442,7 +443,7 @@ struct dev_links_info { · 2 unmodified lines
442 struct list_head suppliers;443 struct list_head suppliers;
443 struct list_head consumers;444 struct list_head consumers;
444 struct list_head needs_suppliers;445 struct list_head needs_suppliers;
445 struct list_head defer_sync;446 struct list_head defer_hook;
446 bool need_for_probe;447 bool need_for_probe;
447 enum dl_dev_state status;448 enum dl_dev_state status;
448};449};
include/linux/dma-buf.h+1−0
@@ -311,6 +311,7 @@ struct dma_buf { · 310 unmodified lines
311 void *vmap_ptr;311 void *vmap_ptr;
312 const char *exp_name;312 const char *exp_name;
313 const char *name;313 const char *name;
314 spinlock_t name_lock; /* spinlock to protect name access */
314 struct module *owner;315 struct module *owner;
315 struct list_head list_node;316 struct list_head list_node;
316 void *priv;317 void *priv;
include/linux/dma-direct.h+2−2
@@ -69,6 +69,7 @@ static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size, · 68 unmodified lines
69u64 dma_direct_get_required_mask(struct device *dev);69u64 dma_direct_get_required_mask(struct device *dev);
70gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask,70gfp_t dma_direct_optimal_gfp_mask(struct device *dev, u64 dma_mask,
71 u64 *phys_mask);71 u64 *phys_mask);
72bool dma_coherent_ok(struct device *dev, phys_addr_t phys, size_t size);
72void *dma_direct_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,73void *dma_direct_alloc(struct device *dev, size_t size, dma_addr_t *dma_handle,
73 gfp_t gfp, unsigned long attrs);74 gfp_t gfp, unsigned long attrs);
74void dma_direct_free(struct device *dev, size_t size, void *cpu_addr,75void dma_direct_free(struct device *dev, size_t size, void *cpu_addr,
@@ -77,8 +78,6 @@ void *dma_direct_alloc_pages(struct device *dev, size_t size, · 2 unmodified lines
77 dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs);78 dma_addr_t *dma_handle, gfp_t gfp, unsigned long attrs);
78void dma_direct_free_pages(struct device *dev, size_t size, void *cpu_addr,79void dma_direct_free_pages(struct device *dev, size_t size, void *cpu_addr,
79 dma_addr_t dma_addr, unsigned long attrs);80 dma_addr_t dma_addr, unsigned long attrs);
80struct page *__dma_direct_alloc_pages(struct device *dev, size_t size,
81 gfp_t gfp, unsigned long attrs);
82int dma_direct_get_sgtable(struct device *dev, struct sg_table *sgt,81int dma_direct_get_sgtable(struct device *dev, struct sg_table *sgt,
83 void *cpu_addr, dma_addr_t dma_addr, size_t size,82 void *cpu_addr, dma_addr_t dma_addr, size_t size,
84 unsigned long attrs);83 unsigned long attrs);
@@ -87,4 +86,5 @@ int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma, · 2 unmodified lines
87 void *cpu_addr, dma_addr_t dma_addr, size_t size,86 void *cpu_addr, dma_addr_t dma_addr, size_t size,
88 unsigned long attrs);87 unsigned long attrs);
89int dma_direct_supported(struct device *dev, u64 mask);88int dma_direct_supported(struct device *dev, u64 mask);
89bool dma_direct_need_sync(struct device *dev, dma_addr_t dma_addr);
90#endif /* _LINUX_DMA_DIRECT_H */90#endif /* _LINUX_DMA_DIRECT_H */
include/linux/dma-mapping.h+5−0
@@ -461,6 +461,7 @@ int dma_set_mask(struct device *dev, u64 mask); · 460 unmodified lines
461int dma_set_coherent_mask(struct device *dev, u64 mask);461int dma_set_coherent_mask(struct device *dev, u64 mask);
462u64 dma_get_required_mask(struct device *dev);462u64 dma_get_required_mask(struct device *dev);
463size_t dma_max_mapping_size(struct device *dev);463size_t dma_max_mapping_size(struct device *dev);
464bool dma_need_sync(struct device *dev, dma_addr_t dma_addr);
464unsigned long dma_get_merge_boundary(struct device *dev);465unsigned long dma_get_merge_boundary(struct device *dev);
465#else /* CONFIG_HAS_DMA */466#else /* CONFIG_HAS_DMA */
466static inline dma_addr_t dma_map_page_attrs(struct device *dev,467static inline dma_addr_t dma_map_page_attrs(struct device *dev,
@@ -571,6 +572,10 @@ static inline size_t dma_max_mapping_size(struct device *dev) · 104 unmodified lines
571{572{
572 return 0;573 return 0;
573}574}
575static inline bool dma_need_sync(struct device *dev, dma_addr_t dma_addr)
576{
577 return false;
578}
574static inline unsigned long dma_get_merge_boundary(struct device *dev)579static inline unsigned long dma_get_merge_boundary(struct device *dev)
575{580{
576 return 0;581 return 0;
include/linux/efi.h+3−5
@@ -350,6 +350,7 @@ void efi_native_runtime_setup(void); · 349 unmodified lines
350 * associated with ConOut350 * associated with ConOut
351 */351 */
352#define LINUX_EFI_ARM_SCREEN_INFO_TABLE_GUID EFI_GUID(0xe03fc20a, 0x85dc, 0x406e, 0xb9, 0x0e, 0x4a, 0xb5, 0x02, 0x37, 0x1d, 0x95)352#define LINUX_EFI_ARM_SCREEN_INFO_TABLE_GUID EFI_GUID(0xe03fc20a, 0x85dc, 0x406e, 0xb9, 0x0e, 0x4a, 0xb5, 0x02, 0x37, 0x1d, 0x95)
353#define LINUX_EFI_ARM_CPU_STATE_TABLE_GUID EFI_GUID(0xef79e4aa, 0x3c3d, 0x4989, 0xb9, 0x02, 0x07, 0xa9, 0x43, 0xe5, 0x50, 0xd2)
353#define LINUX_EFI_LOADER_ENTRY_GUID EFI_GUID(0x4a67b082, 0x0a4c, 0x41cf, 0xb6, 0xc7, 0x44, 0x0b, 0x29, 0xbb, 0x8c, 0x4f)354#define LINUX_EFI_LOADER_ENTRY_GUID EFI_GUID(0x4a67b082, 0x0a4c, 0x41cf, 0xb6, 0xc7, 0x44, 0x0b, 0x29, 0xbb, 0x8c, 0x4f)
354#define LINUX_EFI_RANDOM_SEED_TABLE_GUID EFI_GUID(0x1ce1e5bc, 0x7ceb, 0x42f2, 0x81, 0xe5, 0x8a, 0xad, 0xf1, 0x80, 0xf5, 0x7b)355#define LINUX_EFI_RANDOM_SEED_TABLE_GUID EFI_GUID(0x1ce1e5bc, 0x7ceb, 0x42f2, 0x81, 0xe5, 0x8a, 0xad, 0xf1, 0x80, 0xf5, 0x7b)
355#define LINUX_EFI_TPM_EVENT_LOG_GUID EFI_GUID(0xb7799cb0, 0xeca2, 0x4943, 0x96, 0x67, 0x1f, 0xae, 0x07, 0xb7, 0x47, 0xfa)356#define LINUX_EFI_TPM_EVENT_LOG_GUID EFI_GUID(0xb7799cb0, 0xeca2, 0x4943, 0x96, 0x67, 0x1f, 0xae, 0x07, 0xb7, 0x47, 0xfa)
@@ -1236,14 +1237,11 @@ struct linux_efi_memreserve { · 880 unmodified lines
1236 struct {1237 struct {
1237 phys_addr_t base;1238 phys_addr_t base;
1238 phys_addr_t size;1239 phys_addr_t size;
1239 } entry[0];1240 } entry[];
1240};1241};
1241 1242
1242#define EFI_MEMRESERVE_SIZE(count) (sizeof(struct linux_efi_memreserve) + \
1243 (count) * sizeof(((struct linux_efi_memreserve *)0)->entry[0]))
1244
1245#define EFI_MEMRESERVE_COUNT(size) (((size) - sizeof(struct linux_efi_memreserve)) \1243#define EFI_MEMRESERVE_COUNT(size) (((size) - sizeof(struct linux_efi_memreserve)) \
1246 / sizeof(((struct linux_efi_memreserve *)0)->entry[0]))1244 / sizeof_field(struct linux_efi_memreserve, entry[0]))
1247 1245
1248void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size);1246void __init efi_arch_mem_reserve(phys_addr_t addr, u64 size);
1249 1247
include/linux/filter.h+2−2
@@ -884,12 +884,12 @@ void bpf_jit_compile(struct bpf_prog *prog); · 883 unmodified lines
884bool bpf_jit_needs_zext(void);884bool bpf_jit_needs_zext(void);
885bool bpf_helper_changes_pkt_data(void *func);885bool bpf_helper_changes_pkt_data(void *func);
886 886
887static inline bool bpf_dump_raw_ok(void)887static inline bool bpf_dump_raw_ok(const struct cred *cred)
888{888{
889 /* Reconstruction of call-sites is dependent on kallsyms,889 /* Reconstruction of call-sites is dependent on kallsyms,
890 * thus make dump the same restriction.890 * thus make dump the same restriction.
891 */891 */
892 return kallsyms_show_value() == 1;892 return kallsyms_show_value(cred);
893}893}
894 894
895struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,895struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
include/linux/fs.h+2−1
@@ -315,6 +315,7 @@ enum rw_hint { · 314 unmodified lines
315#define IOCB_SYNC (1 << 5)315#define IOCB_SYNC (1 << 5)
316#define IOCB_WRITE (1 << 6)316#define IOCB_WRITE (1 << 6)
317#define IOCB_NOWAIT (1 << 7)317#define IOCB_NOWAIT (1 << 7)
318#define IOCB_NOIO (1 << 9)
318 319
319struct kiocb {320struct kiocb {
320 struct file *ki_filp;321 struct file *ki_filp;
@@ -1917,7 +1918,6 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector, · 1596 unmodified lines
1917 struct iovec *fast_pointer,1918 struct iovec *fast_pointer,
1918 struct iovec **ret_pointer);1919 struct iovec **ret_pointer);
1919 1920
1920extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
1921extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);1921extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
1922extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);1922extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
1923extern ssize_t vfs_readv(struct file *, const struct iovec __user *,1923extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
@@ -3033,6 +3033,7 @@ extern int kernel_read_file_from_path_initns(const char *, void **, loff_t *, lo · 1109 unmodified lines
3033extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t,3033extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t,
3034 enum kernel_read_file_id);3034 enum kernel_read_file_id);
3035extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);3035extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
3036ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos);
3036extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);3037extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
3037extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);3038extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);
3038extern struct file * open_exec(const char *);3039extern struct file * open_exec(const char *);
include/linux/fs_context.h+1−0
@@ -109,6 +109,7 @@ struct fs_context { · 108 unmodified lines
109 enum fs_context_phase phase:8; /* The phase the context is in */109 enum fs_context_phase phase:8; /* The phase the context is in */
110 bool need_free:1; /* Need to call ops->free() */110 bool need_free:1; /* Need to call ops->free() */
111 bool global:1; /* Goes into &init_user_ns */111 bool global:1; /* Goes into &init_user_ns */
112 bool oldapi:1; /* Coming from mount(2) */
112};113};
113 114
114struct fs_context_operations {115struct fs_context_operations {
include/linux/host1x.h+3−0
@@ -48,6 +48,9 @@ struct host1x_client_ops { · 47 unmodified lines
48 * @channel: host1x channel associated with this client48 * @channel: host1x channel associated with this client
49 * @syncpts: array of syncpoints requested for this client49 * @syncpts: array of syncpoints requested for this client
50 * @num_syncpts: number of syncpoints requested for this client50 * @num_syncpts: number of syncpoints requested for this client
51 * @parent: pointer to parent structure
52 * @usecount: reference count for this structure
53 * @lock: mutex for mutually exclusive concurrency
51 */54 */
52struct host1x_client {55struct host1x_client {
53 struct list_head list;56 struct list_head list;
include/linux/ieee80211.h+4−0
@@ -3333,13 +3333,17 @@ struct ieee80211_multiple_bssid_configuration { · 3332 unmodified lines
3333#define WLAN_AKM_SUITE_TDLS SUITE(0x000FAC, 7)3333#define WLAN_AKM_SUITE_TDLS SUITE(0x000FAC, 7)
3334#define WLAN_AKM_SUITE_SAE SUITE(0x000FAC, 8)3334#define WLAN_AKM_SUITE_SAE SUITE(0x000FAC, 8)
3335#define WLAN_AKM_SUITE_FT_OVER_SAE SUITE(0x000FAC, 9)3335#define WLAN_AKM_SUITE_FT_OVER_SAE SUITE(0x000FAC, 9)
3336#define WLAN_AKM_SUITE_AP_PEER_KEY SUITE(0x000FAC, 10)
3336#define WLAN_AKM_SUITE_8021X_SUITE_B SUITE(0x000FAC, 11)3337#define WLAN_AKM_SUITE_8021X_SUITE_B SUITE(0x000FAC, 11)
3337#define WLAN_AKM_SUITE_8021X_SUITE_B_192 SUITE(0x000FAC, 12)3338#define WLAN_AKM_SUITE_8021X_SUITE_B_192 SUITE(0x000FAC, 12)
3339#define WLAN_AKM_SUITE_FT_8021X_SHA384 SUITE(0x000FAC, 13)
3338#define WLAN_AKM_SUITE_FILS_SHA256 SUITE(0x000FAC, 14)3340#define WLAN_AKM_SUITE_FILS_SHA256 SUITE(0x000FAC, 14)
3339#define WLAN_AKM_SUITE_FILS_SHA384 SUITE(0x000FAC, 15)3341#define WLAN_AKM_SUITE_FILS_SHA384 SUITE(0x000FAC, 15)
3340#define WLAN_AKM_SUITE_FT_FILS_SHA256 SUITE(0x000FAC, 16)3342#define WLAN_AKM_SUITE_FT_FILS_SHA256 SUITE(0x000FAC, 16)
3341#define WLAN_AKM_SUITE_FT_FILS_SHA384 SUITE(0x000FAC, 17)3343#define WLAN_AKM_SUITE_FT_FILS_SHA384 SUITE(0x000FAC, 17)
3342#define WLAN_AKM_SUITE_OWE SUITE(0x000FAC, 18)3344#define WLAN_AKM_SUITE_OWE SUITE(0x000FAC, 18)
3345#define WLAN_AKM_SUITE_FT_PSK_SHA384 SUITE(0x000FAC, 19)
3346#define WLAN_AKM_SUITE_PSK_SHA384 SUITE(0x000FAC, 20)
3343 3347
3344#define WLAN_MAX_KEY_LEN 323348#define WLAN_MAX_KEY_LEN 32
3345 3349
include/linux/if_vlan.h+22−7
@@ -25,6 +25,8 @@ · 24 unmodified lines
25#define VLAN_ETH_DATA_LEN 1500 /* Max. octets in payload */25#define VLAN_ETH_DATA_LEN 1500 /* Max. octets in payload */
26#define VLAN_ETH_FRAME_LEN 1518 /* Max. octets in frame sans FCS */26#define VLAN_ETH_FRAME_LEN 1518 /* Max. octets in frame sans FCS */
27 27
28#define VLAN_MAX_DEPTH 8 /* Max. number of nested VLAN tags parsed */
29
28/*30/*
29 * struct vlan_hdr - vlan header31 * struct vlan_hdr - vlan header
30 * @h_vlan_TCI: priority and VLAN ID32 * @h_vlan_TCI: priority and VLAN ID
@@ -577,10 +579,10 @@ static inline int vlan_get_tag(const struct sk_buff *skb, u16 *vlan_tci) · 546 unmodified lines
577 * Returns the EtherType of the packet, regardless of whether it is579 * Returns the EtherType of the packet, regardless of whether it is
578 * vlan encapsulated (normal or hardware accelerated) or not.580 * vlan encapsulated (normal or hardware accelerated) or not.
579 */581 */
580static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type,582static inline __be16 __vlan_get_protocol(const struct sk_buff *skb, __be16 type,
581 int *depth)583 int *depth)
582{584{
583 unsigned int vlan_depth = skb->mac_len;585 unsigned int vlan_depth = skb->mac_len, parse_depth = VLAN_MAX_DEPTH;
584 586
585 /* if type is 802.1Q/AD then the header should already be587 /* if type is 802.1Q/AD then the header should already be
586 * present at mac_len - VLAN_HLEN (if mac_len > 0), or at588 * present at mac_len - VLAN_HLEN (if mac_len > 0), or at
@@ -595,13 +597,12 @@ static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type, · 8 unmodified lines
595 vlan_depth = ETH_HLEN;597 vlan_depth = ETH_HLEN;
596 }598 }
597 do {599 do {
598 struct vlan_hdr *vh;600 struct vlan_hdr vhdr, *vh;
599 601
600 if (unlikely(!pskb_may_pull(skb,602 vh = skb_header_pointer(skb, vlan_depth, sizeof(vhdr), &vhdr);
601 vlan_depth + VLAN_HLEN)))603 if (unlikely(!vh || !--parse_depth))
602 return 0;604 return 0;
603 605
604 vh = (struct vlan_hdr *)(skb->data + vlan_depth);
605 type = vh->h_vlan_encapsulated_proto;606 type = vh->h_vlan_encapsulated_proto;
606 vlan_depth += VLAN_HLEN;607 vlan_depth += VLAN_HLEN;
607 } while (eth_type_vlan(type));608 } while (eth_type_vlan(type));
@@ -620,11 +621,25 @@ static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type, · 12 unmodified lines
620 * Returns the EtherType of the packet, regardless of whether it is621 * Returns the EtherType of the packet, regardless of whether it is
621 * vlan encapsulated (normal or hardware accelerated) or not.622 * vlan encapsulated (normal or hardware accelerated) or not.
622 */623 */
623static inline __be16 vlan_get_protocol(struct sk_buff *skb)624static inline __be16 vlan_get_protocol(const struct sk_buff *skb)
624{625{
625 return __vlan_get_protocol(skb, skb->protocol, NULL);626 return __vlan_get_protocol(skb, skb->protocol, NULL);
626}627}
627 628
629/* A getter for the SKB protocol field which will handle VLAN tags consistently
630 * whether VLAN acceleration is enabled or not.
631 */
632static inline __be16 skb_protocol(const struct sk_buff *skb, bool skip_vlan)
633{
634 if (!skip_vlan)
635 /* VLAN acceleration strips the VLAN header from the skb and
636 * moves it to skb->vlan_proto
637 */
638 return skb_vlan_tag_present(skb) ? skb->vlan_proto : skb->protocol;
639
640 return vlan_get_protocol(skb);
641}
642
628static inline void vlan_set_encap_proto(struct sk_buff *skb,643static inline void vlan_set_encap_proto(struct sk_buff *skb,
629 struct vlan_hdr *vhdr)644 struct vlan_hdr *vhdr)
630{645{
include/linux/input/elan-i2c-ids.h+7−0
@@ -67,8 +67,15 @@ static const struct acpi_device_id elan_acpi_id[] = { · 66 unmodified lines
67 { "ELAN062B", 0 },67 { "ELAN062B", 0 },
68 { "ELAN062C", 0 },68 { "ELAN062C", 0 },
69 { "ELAN062D", 0 },69 { "ELAN062D", 0 },
70 { "ELAN062E", 0 }, /* Lenovo V340 Whiskey Lake U */
71 { "ELAN062F", 0 }, /* Lenovo V340 Comet Lake U */
70 { "ELAN0631", 0 },72 { "ELAN0631", 0 },
71 { "ELAN0632", 0 },73 { "ELAN0632", 0 },
74 { "ELAN0633", 0 }, /* Lenovo S145 */
75 { "ELAN0634", 0 }, /* Lenovo V340 Ice lake */
76 { "ELAN0635", 0 }, /* Lenovo V1415-IIL */
77 { "ELAN0636", 0 }, /* Lenovo V1415-Dali */
78 { "ELAN0637", 0 }, /* Lenovo V1415-IGLR */
72 { "ELAN1000", 0 },79 { "ELAN1000", 0 },
73 { }80 { }
74};81};
include/linux/intel-iommu.h+1−0
@@ -41,6 +41,7 @@ · 40 unmodified lines
41#define DMA_PTE_SNP BIT_ULL(11)41#define DMA_PTE_SNP BIT_ULL(11)
42 42
43#define DMA_FL_PTE_PRESENT BIT_ULL(0)43#define DMA_FL_PTE_PRESENT BIT_ULL(0)
44#define DMA_FL_PTE_US BIT_ULL(2)
44#define DMA_FL_PTE_XD BIT_ULL(63)45#define DMA_FL_PTE_XD BIT_ULL(63)
45 46
46#define ADDR_WIDTH_5LEVEL (57)47#define ADDR_WIDTH_5LEVEL (57)
include/linux/irq_work.h+8−18
@@ -2,7 +2,7 @@ · 1 unmodified line
2#ifndef _LINUX_IRQ_WORK_H2#ifndef _LINUX_IRQ_WORK_H
3#define _LINUX_IRQ_WORK_H3#define _LINUX_IRQ_WORK_H
4 4
5#include <linux/llist.h>5#include <linux/smp_types.h>
6 6
7/*7/*
8 * An entry can be in one of four states:8 * An entry can be in one of four states:
@@ -13,24 +13,14 @@ · 4 unmodified lines
13 * busy NULL, 2 -> {free, claimed} : callback in progress, can be claimed13 * busy NULL, 2 -> {free, claimed} : callback in progress, can be claimed
14 */14 */
15 15
16/* flags share CSD_FLAG_ space */
17
18#define IRQ_WORK_PENDING BIT(0)
19#define IRQ_WORK_BUSY BIT(1)
20
21/* Doesn't want IPI, wait for tick: */
22#define IRQ_WORK_LAZY BIT(2)
23/* Run hard IRQ context, even on RT */
24#define IRQ_WORK_HARD_IRQ BIT(3)
25
26#define IRQ_WORK_CLAIMED (IRQ_WORK_PENDING | IRQ_WORK_BUSY)
27
28/*
29 * structure shares layout with single_call_data_t.
30 */
31struct irq_work {16struct irq_work {
32 struct llist_node llnode;17 union {
33 atomic_t flags;18 struct __call_single_node node;
19 struct {
20 struct llist_node llnode;
21 atomic_t flags;
22 };
23 };
34 void (*func)(struct irq_work *);24 void (*func)(struct irq_work *);
35};25};
36 26
include/linux/kallsyms.h+3−2
@@ -18,6 +18,7 @@ · 17 unmodified lines
18#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \18#define KSYM_SYMBOL_LEN (sizeof("%s+%#lx/%#lx [%s]") + (KSYM_NAME_LEN - 1) + \
19 2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1)19 2*(BITS_PER_LONG*3/10) + (MODULE_NAME_LEN - 1) + 1)
20 20
21struct cred;
21struct module;22struct module;
22 23
23static inline int is_kernel_inittext(unsigned long addr)24static inline int is_kernel_inittext(unsigned long addr)
@@ -98,7 +99,7 @@ int lookup_symbol_name(unsigned long addr, char *symname); · 74 unmodified lines
98int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name);99int lookup_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name);
99 100
100/* How and when do we show kallsyms values? */101/* How and when do we show kallsyms values? */
101extern int kallsyms_show_value(void);102extern bool kallsyms_show_value(const struct cred *cred);
102 103
103#else /* !CONFIG_KALLSYMS */104#else /* !CONFIG_KALLSYMS */
104 105
@@ -158,7 +159,7 @@ static inline int lookup_symbol_attrs(unsigned long addr, unsigned long *size, u · 53 unmodified lines
158 return -ERANGE;159 return -ERANGE;
159}160}
160 161
161static inline int kallsyms_show_value(void)162static inline bool kallsyms_show_value(const struct cred *cred)
162{163{
163 return false;164 return false;
164}165}
include/linux/kgdb.h+14−3
@@ -176,6 +176,17 @@ kgdb_arch_handle_exception(int vector, int signo, int err_code, · 175 unmodified lines
176 char *remcom_out_buffer,176 char *remcom_out_buffer,
177 struct pt_regs *regs);177 struct pt_regs *regs);
178 178
179/**
180 * kgdb_arch_handle_qxfer_pkt - Handle architecture specific GDB XML
181 * packets.
182 * @remcom_in_buffer: The buffer of the packet we have read.
183 * @remcom_out_buffer: The buffer of %BUFMAX bytes to write a packet into.
184 */
185
186extern void
187kgdb_arch_handle_qxfer_pkt(char *remcom_in_buffer,
188 char *remcom_out_buffer);
189
179/**190/**
180 * kgdb_call_nmi_hook - Call kgdb_nmicallback() on the current CPU191 * kgdb_call_nmi_hook - Call kgdb_nmicallback() on the current CPU
181 * @ignored: This parameter is only here to match the prototype.192 * @ignored: This parameter is only here to match the prototype.
@@ -276,8 +287,7 @@ struct kgdb_arch { · 94 unmodified lines
276 * the I/O driver.287 * the I/O driver.
277 * @post_exception: Pointer to a function that will do any cleanup work288 * @post_exception: Pointer to a function that will do any cleanup work
278 * for the I/O driver.289 * for the I/O driver.
279 * @is_console: 1 if the end device is a console 0 if the I/O device is290 * @cons: valid if the I/O device is a console; else NULL.
280 * not a console
281 */291 */
282struct kgdb_io {292struct kgdb_io {
283 const char *name;293 const char *name;
@@ -288,7 +298,7 @@ struct kgdb_io { · 4 unmodified lines
288 void (*deinit) (void);298 void (*deinit) (void);
289 void (*pre_exception) (void);299 void (*pre_exception) (void);
290 void (*post_exception) (void);300 void (*post_exception) (void);
291 int is_console;301 struct console *cons;
292};302};
293 303
294extern const struct kgdb_arch arch_kgdb_ops;304extern const struct kgdb_arch arch_kgdb_ops;
@@ -315,6 +325,7 @@ extern int kgdb_hex2mem(char *buf, char *mem, int count); · 20 unmodified lines
315 325
316extern int kgdb_isremovedbreak(unsigned long addr);326extern int kgdb_isremovedbreak(unsigned long addr);
317extern void kgdb_schedule_breakpoint(void);327extern void kgdb_schedule_breakpoint(void);
328extern int kgdb_has_hit_break(unsigned long addr);
318 329
319extern int330extern int
320kgdb_handle_exception(int ex_vector, int signo, int err_code,331kgdb_handle_exception(int ex_vector, int signo, int err_code,
include/linux/libata.h+1−1
@@ -1095,7 +1095,7 @@ extern int ata_scsi_ioctl(struct scsi_device *dev, unsigned int cmd, · 1094 unmodified lines
1095#define ATA_SCSI_COMPAT_IOCTL /* empty */1095#define ATA_SCSI_COMPAT_IOCTL /* empty */
1096#endif1096#endif
1097extern int ata_scsi_queuecmd(struct Scsi_Host *h, struct scsi_cmnd *cmd);1097extern int ata_scsi_queuecmd(struct Scsi_Host *h, struct scsi_cmnd *cmd);
1098#if IS_ENABLED(CONFIG_ATA)1098#if IS_REACHABLE(CONFIG_ATA)
1099bool ata_scsi_dma_need_drain(struct request *rq);1099bool ata_scsi_dma_need_drain(struct request *rq);
1100#else1100#else
1101#define ata_scsi_dma_need_drain NULL1101#define ata_scsi_dma_need_drain NULL
include/linux/lsm_hook_defs.h+2−2
@@ -150,7 +150,7 @@ LSM_HOOK(int, 0, inode_listsecurity, struct inode *inode, char *buffer, · 149 unmodified lines
150 size_t buffer_size)150 size_t buffer_size)
151LSM_HOOK(void, LSM_RET_VOID, inode_getsecid, struct inode *inode, u32 *secid)151LSM_HOOK(void, LSM_RET_VOID, inode_getsecid, struct inode *inode, u32 *secid)
152LSM_HOOK(int, 0, inode_copy_up, struct dentry *src, struct cred **new)152LSM_HOOK(int, 0, inode_copy_up, struct dentry *src, struct cred **new)
153LSM_HOOK(int, 0, inode_copy_up_xattr, const char *name)153LSM_HOOK(int, -EOPNOTSUPP, inode_copy_up_xattr, const char *name)
154LSM_HOOK(int, 0, kernfs_init_security, struct kernfs_node *kn_dir,154LSM_HOOK(int, 0, kernfs_init_security, struct kernfs_node *kn_dir,
155 struct kernfs_node *kn)155 struct kernfs_node *kn)
156LSM_HOOK(int, 0, file_permission, struct file *file, int mask)156LSM_HOOK(int, 0, file_permission, struct file *file, int mask)
@@ -360,7 +360,7 @@ LSM_HOOK(int, 0, key_alloc, struct key *key, const struct cred *cred, · 203 unmodified lines
360 unsigned long flags)360 unsigned long flags)
361LSM_HOOK(void, LSM_RET_VOID, key_free, struct key *key)361LSM_HOOK(void, LSM_RET_VOID, key_free, struct key *key)
362LSM_HOOK(int, 0, key_permission, key_ref_t key_ref, const struct cred *cred,362LSM_HOOK(int, 0, key_permission, key_ref_t key_ref, const struct cred *cred,
363 unsigned perm)363 enum key_need_perm need_perm)
364LSM_HOOK(int, 0, key_getsecurity, struct key *key, char **_buffer)364LSM_HOOK(int, 0, key_getsecurity, struct key *key, char **_buffer)
365#endif /* CONFIG_KEYS */365#endif /* CONFIG_KEYS */
366 366
include/linux/mlx5/driver.h+1−0
@@ -147,6 +147,7 @@ enum { · 146 unmodified lines
147 MLX5_REG_MCDA = 0x9063,147 MLX5_REG_MCDA = 0x9063,
148 MLX5_REG_MCAM = 0x907f,148 MLX5_REG_MCAM = 0x907f,
149 MLX5_REG_MIRC = 0x9162,149 MLX5_REG_MIRC = 0x9162,
150 MLX5_REG_SBCAM = 0xB01F,
150 MLX5_REG_RESOURCE_DUMP = 0xC000,151 MLX5_REG_RESOURCE_DUMP = 0xC000,
151};152};
152 153
include/linux/mlx5/mlx5_ifc.h+34−4
@@ -4283,7 +4283,8 @@ struct mlx5_ifc_rst2init_qp_out_bits { · 4282 unmodified lines
4283 4283
4284 u8 syndrome[0x20];4284 u8 syndrome[0x20];
4285 4285
4286 u8 reserved_at_40[0x40];4286 u8 reserved_at_40[0x20];
4287 u8 ece[0x20];
4287};4288};
4288 4289
4289struct mlx5_ifc_rst2init_qp_in_bits {4290struct mlx5_ifc_rst2init_qp_in_bits {
@@ -4300,7 +4301,7 @@ struct mlx5_ifc_rst2init_qp_in_bits { · 10 unmodified lines
4300 4301
4301 u8 opt_param_mask[0x20];4302 u8 opt_param_mask[0x20];
4302 4303
4303 u8 reserved_at_a0[0x20];4304 u8 ece[0x20];
4304 4305
4305 struct mlx5_ifc_qpc_bits qpc;4306 struct mlx5_ifc_qpc_bits qpc;
4306 4307
@@ -6619,7 +6620,8 @@ struct mlx5_ifc_init2init_qp_out_bits { · 2312 unmodified lines
6619 6620
6620 u8 syndrome[0x20];6621 u8 syndrome[0x20];
6621 6622
6622 u8 reserved_at_40[0x40];6623 u8 reserved_at_40[0x20];
6624 u8 ece[0x20];
6623};6625};
6624 6626
6625struct mlx5_ifc_init2init_qp_in_bits {6627struct mlx5_ifc_init2init_qp_in_bits {
@@ -6636,7 +6638,7 @@ struct mlx5_ifc_init2init_qp_in_bits { · 10 unmodified lines
6636 6638
6637 u8 opt_param_mask[0x20];6639 u8 opt_param_mask[0x20];
6638 6640
6639 u8 reserved_at_a0[0x20];6641 u8 ece[0x20];
6640 6642
6641 struct mlx5_ifc_qpc_bits qpc;6643 struct mlx5_ifc_qpc_bits qpc;
6642 6644
@@ -9958,6 +9960,34 @@ struct mlx5_ifc_pptb_reg_bits { · 3315 unmodified lines
9958 u8 untagged_buff[0x4];9960 u8 untagged_buff[0x4];
9959};9961};
9960 9962
9963struct mlx5_ifc_sbcam_reg_bits {
9964 u8 reserved_at_0[0x8];
9965 u8 feature_group[0x8];
9966 u8 reserved_at_10[0x8];
9967 u8 access_reg_group[0x8];
9968
9969 u8 reserved_at_20[0x20];
9970
9971 u8 sb_access_reg_cap_mask[4][0x20];
9972
9973 u8 reserved_at_c0[0x80];
9974
9975 u8 sb_feature_cap_mask[4][0x20];
9976
9977 u8 reserved_at_1c0[0x40];
9978
9979 u8 cap_total_buffer_size[0x20];
9980
9981 u8 cap_cell_size[0x10];
9982 u8 cap_max_pg_buffers[0x8];
9983 u8 cap_num_pool_supported[0x8];
9984
9985 u8 reserved_at_240[0x8];
9986 u8 cap_sbsr_stat_size[0x8];
9987 u8 cap_max_tclass_data[0x8];
9988 u8 cap_max_cpu_ingress_tclass_sb[0x8];
9989};
9990
9961struct mlx5_ifc_pbmc_reg_bits {9991struct mlx5_ifc_pbmc_reg_bits {
9962 u8 reserved_at_0[0x8];9992 u8 reserved_at_0[0x8];
9963 u8 local_port[0x8];9993 u8 local_port[0x8];
include/linux/mmzone.h+2−2
@@ -257,8 +257,8 @@ struct lruvec { · 256 unmodified lines
257 */257 */
258 unsigned long anon_cost;258 unsigned long anon_cost;
259 unsigned long file_cost;259 unsigned long file_cost;
260 /* Evictions & activations on the inactive file list */260 /* Non-resident age, driven by LRU movement */
261 atomic_long_t inactive_age;261 atomic_long_t nonresident_age;
262 /* Refaults at the time of last reclaim cycle */262 /* Refaults at the time of last reclaim cycle */
263 unsigned long refaults;263 unsigned long refaults;
264 /* Various lruvec state flags (enum lruvec_flags) */264 /* Various lruvec state flags (enum lruvec_flags) */
include/linux/mod_devicetable.h+1−1
@@ -318,7 +318,7 @@ struct pcmcia_device_id { · 317 unmodified lines
318#define INPUT_DEVICE_ID_LED_MAX 0x0f318#define INPUT_DEVICE_ID_LED_MAX 0x0f
319#define INPUT_DEVICE_ID_SND_MAX 0x07319#define INPUT_DEVICE_ID_SND_MAX 0x07
320#define INPUT_DEVICE_ID_FF_MAX 0x7f320#define INPUT_DEVICE_ID_FF_MAX 0x7f
321#define INPUT_DEVICE_ID_SW_MAX 0x0f321#define INPUT_DEVICE_ID_SW_MAX 0x10
322#define INPUT_DEVICE_ID_PROP_MAX 0x1f322#define INPUT_DEVICE_ID_PROP_MAX 0x1f
323 323
324#define INPUT_DEVICE_ID_MATCH_BUS 1324#define INPUT_DEVICE_ID_MATCH_BUS 1
include/linux/netdevice.h+1−1
@@ -3157,7 +3157,7 @@ static inline int dev_recursion_level(void) · 3156 unmodified lines
3157 return this_cpu_read(softnet_data.xmit.recursion);3157 return this_cpu_read(softnet_data.xmit.recursion);
3158}3158}
3159 3159
3160#define XMIT_RECURSION_LIMIT 103160#define XMIT_RECURSION_LIMIT 8
3161static inline bool dev_xmit_recursion(void)3161static inline bool dev_xmit_recursion(void)
3162{3162{
3163 return unlikely(__this_cpu_read(softnet_data.xmit.recursion) >3163 return unlikely(__this_cpu_read(softnet_data.xmit.recursion) >
include/linux/netfilter_ipv4/ip_tables.h+6−0
@@ -25,6 +25,12 @@ · 24 unmodified lines
25int ipt_register_table(struct net *net, const struct xt_table *table,25int ipt_register_table(struct net *net, const struct xt_table *table,
26 const struct ipt_replace *repl,26 const struct ipt_replace *repl,
27 const struct nf_hook_ops *ops, struct xt_table **res);27 const struct nf_hook_ops *ops, struct xt_table **res);
28
29void ipt_unregister_table_pre_exit(struct net *net, struct xt_table *table,
30 const struct nf_hook_ops *ops);
31
32void ipt_unregister_table_exit(struct net *net, struct xt_table *table);
33
28void ipt_unregister_table(struct net *net, struct xt_table *table,34void ipt_unregister_table(struct net *net, struct xt_table *table,
29 const struct nf_hook_ops *ops);35 const struct nf_hook_ops *ops);
30 36
include/linux/netfilter_ipv6/ip6_tables.h+3−0
@@ -29,6 +29,9 @@ int ip6t_register_table(struct net *net, const struct xt_table *table, · 28 unmodified lines
29 const struct nf_hook_ops *ops, struct xt_table **res);29 const struct nf_hook_ops *ops, struct xt_table **res);
30void ip6t_unregister_table(struct net *net, struct xt_table *table,30void ip6t_unregister_table(struct net *net, struct xt_table *table,
31 const struct nf_hook_ops *ops);31 const struct nf_hook_ops *ops);
32void ip6t_unregister_table_pre_exit(struct net *net, struct xt_table *table,
33 const struct nf_hook_ops *ops);
34void ip6t_unregister_table_exit(struct net *net, struct xt_table *table);
32extern unsigned int ip6t_do_table(struct sk_buff *skb,35extern unsigned int ip6t_do_table(struct sk_buff *skb,
33 const struct nf_hook_state *state,36 const struct nf_hook_state *state,
34 struct xt_table *table);37 struct xt_table *table);
include/linux/pci.h+5−6
@@ -2169,12 +2169,11 @@ static inline int pci_pcie_type(const struct pci_dev *dev) · 2168 unmodified lines
2169 */2169 */
2170static inline struct pci_dev *pcie_find_root_port(struct pci_dev *dev)2170static inline struct pci_dev *pcie_find_root_port(struct pci_dev *dev)
2171{2171{
2172 struct pci_dev *bridge = pci_upstream_bridge(dev);2172 while (dev) {
2173 2173 if (pci_is_pcie(dev) &&
2174 while (bridge) {2174 pci_pcie_type(dev) == PCI_EXP_TYPE_ROOT_PORT)
2175 if (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT)2175 return dev;
2176 return bridge;2176 dev = pci_upstream_bridge(dev);
2177 bridge = pci_upstream_bridge(bridge);
2178 }2177 }
2179 2178
2180 return NULL;2179 return NULL;
include/linux/phy.h+1−0
@@ -1416,6 +1416,7 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev, · 1415 unmodified lines
1416int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);1416int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
1417int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);1417int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
1418int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd);1418int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd);
1419int phy_disable_interrupts(struct phy_device *phydev);
1419void phy_request_interrupt(struct phy_device *phydev);1420void phy_request_interrupt(struct phy_device *phydev);
1420void phy_free_interrupt(struct phy_device *phydev);1421void phy_free_interrupt(struct phy_device *phydev);
1421void phy_print_status(struct phy_device *phydev);1422void phy_print_status(struct phy_device *phydev);
include/linux/qed/qed_chain.h+16−10
@@ -207,28 +207,34 @@ static inline u32 qed_chain_get_cons_idx_u32(struct qed_chain *p_chain) · 206 unmodified lines
207 207
208static inline u16 qed_chain_get_elem_left(struct qed_chain *p_chain)208static inline u16 qed_chain_get_elem_left(struct qed_chain *p_chain)
209{209{
210 u16 elem_per_page = p_chain->elem_per_page;
211 u32 prod = p_chain->u.chain16.prod_idx;
212 u32 cons = p_chain->u.chain16.cons_idx;
210 u16 used;213 u16 used;
211 214
212 used = (u16) (((u32)0x10000 +215 if (prod < cons)
213 (u32)p_chain->u.chain16.prod_idx) -216 prod += (u32)U16_MAX + 1;
214 (u32)p_chain->u.chain16.cons_idx);217
218 used = (u16)(prod - cons);
215 if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR)219 if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR)
216 used -= p_chain->u.chain16.prod_idx / p_chain->elem_per_page -220 used -= prod / elem_per_page - cons / elem_per_page;
217 p_chain->u.chain16.cons_idx / p_chain->elem_per_page;
218 221
219 return (u16)(p_chain->capacity - used);222 return (u16)(p_chain->capacity - used);
220}223}
221 224
222static inline u32 qed_chain_get_elem_left_u32(struct qed_chain *p_chain)225static inline u32 qed_chain_get_elem_left_u32(struct qed_chain *p_chain)
223{226{
227 u16 elem_per_page = p_chain->elem_per_page;
228 u64 prod = p_chain->u.chain32.prod_idx;
229 u64 cons = p_chain->u.chain32.cons_idx;
224 u32 used;230 u32 used;
225 231
226 used = (u32) (((u64)0x100000000ULL +232 if (prod < cons)
227 (u64)p_chain->u.chain32.prod_idx) -233 prod += (u64)U32_MAX + 1;
228 (u64)p_chain->u.chain32.cons_idx);234
235 used = (u32)(prod - cons);
229 if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR)236 if (p_chain->mode == QED_CHAIN_MODE_NEXT_PTR)
230 used -= p_chain->u.chain32.prod_idx / p_chain->elem_per_page -237 used -= (u32)(prod / elem_per_page - cons / elem_per_page);
231 p_chain->u.chain32.cons_idx / p_chain->elem_per_page;
232 238
233 return p_chain->capacity - used;239 return p_chain->capacity - used;
234}240}
include/linux/scatterlist.h+4−4
@@ -155,7 +155,7 @@ static inline void sg_set_buf(struct scatterlist *sg, const void *buf, · 154 unmodified lines
155 * Loop over each sg element in the given sg_table object.155 * Loop over each sg element in the given sg_table object.
156 */156 */
157#define for_each_sgtable_sg(sgt, sg, i) \157#define for_each_sgtable_sg(sgt, sg, i) \
158 for_each_sg(sgt->sgl, sg, sgt->orig_nents, i)158 for_each_sg((sgt)->sgl, sg, (sgt)->orig_nents, i)
159 159
160/*160/*
161 * Loop over each sg element in the given *DMA mapped* sg_table object.161 * Loop over each sg element in the given *DMA mapped* sg_table object.
@@ -163,7 +163,7 @@ static inline void sg_set_buf(struct scatterlist *sg, const void *buf, · 1 unmodified line
163 * of the each element.163 * of the each element.
164 */164 */
165#define for_each_sgtable_dma_sg(sgt, sg, i) \165#define for_each_sgtable_dma_sg(sgt, sg, i) \
166 for_each_sg(sgt->sgl, sg, sgt->nents, i)166 for_each_sg((sgt)->sgl, sg, (sgt)->nents, i)
167 167
168/**168/**
169 * sg_chain - Chain two sglists together169 * sg_chain - Chain two sglists together
@@ -451,7 +451,7 @@ sg_page_iter_dma_address(struct sg_dma_page_iter *dma_iter) · 281 unmodified lines
451 * See also for_each_sg_page(). In each loop it operates on PAGE_SIZE unit.451 * See also for_each_sg_page(). In each loop it operates on PAGE_SIZE unit.
452 */452 */
453#define for_each_sgtable_page(sgt, piter, pgoffset) \453#define for_each_sgtable_page(sgt, piter, pgoffset) \
454 for_each_sg_page(sgt->sgl, piter, sgt->orig_nents, pgoffset)454 for_each_sg_page((sgt)->sgl, piter, (sgt)->orig_nents, pgoffset)
455 455
456/**456/**
457 * for_each_sgtable_dma_page - iterate over the DMA mapped sg_table object457 * for_each_sgtable_dma_page - iterate over the DMA mapped sg_table object
@@ -465,7 +465,7 @@ sg_page_iter_dma_address(struct sg_dma_page_iter *dma_iter) · 7 unmodified lines
465 * unit.465 * unit.
466 */466 */
467#define for_each_sgtable_dma_page(sgt, dma_iter, pgoffset) \467#define for_each_sgtable_dma_page(sgt, dma_iter, pgoffset) \
468 for_each_sg_dma_page(sgt->sgl, dma_iter, sgt->nents, pgoffset)468 for_each_sg_dma_page((sgt)->sgl, dma_iter, (sgt)->nents, pgoffset)
469 469
470 470
471/*471/*
include/linux/sched.h+1−6
@@ -114,10 +114,6 @@ struct task_group; · 113 unmodified lines
114 114
115#define task_is_stopped_or_traced(task) ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)115#define task_is_stopped_or_traced(task) ((task->state & (__TASK_STOPPED | __TASK_TRACED)) != 0)
116 116
117#define task_contributes_to_load(task) ((task->state & TASK_UNINTERRUPTIBLE) != 0 && \
118 (task->flags & PF_FROZEN) == 0 && \
119 (task->state & TASK_NOLOAD) == 0)
120
121#ifdef CONFIG_DEBUG_ATOMIC_SLEEP117#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
122 118
123/*119/*
@@ -654,9 +650,8 @@ struct task_struct { · 530 unmodified lines
654 unsigned int ptrace;650 unsigned int ptrace;
655 651
656#ifdef CONFIG_SMP652#ifdef CONFIG_SMP
657 struct llist_node wake_entry;
658 unsigned int wake_entry_type;
659 int on_cpu;653 int on_cpu;
654 struct __call_single_node wake_entry;
660#ifdef CONFIG_THREAD_INFO_IN_TASK655#ifdef CONFIG_THREAD_INFO_IN_TASK
661 /* Current CPU: */656 /* Current CPU: */
662 unsigned int cpu;657 unsigned int cpu;
include/linux/sched/jobctl.h+3−1
@@ -19,6 +19,7 @@ struct task_struct; · 18 unmodified lines
19#define JOBCTL_TRAPPING_BIT 21 /* switching to TRACED */19#define JOBCTL_TRAPPING_BIT 21 /* switching to TRACED */
20#define JOBCTL_LISTENING_BIT 22 /* ptracer is listening for events */20#define JOBCTL_LISTENING_BIT 22 /* ptracer is listening for events */
21#define JOBCTL_TRAP_FREEZE_BIT 23 /* trap for cgroup freezer */21#define JOBCTL_TRAP_FREEZE_BIT 23 /* trap for cgroup freezer */
22#define JOBCTL_TASK_WORK_BIT 24 /* set by TWA_SIGNAL */
22 23
23#define JOBCTL_STOP_DEQUEUED (1UL << JOBCTL_STOP_DEQUEUED_BIT)24#define JOBCTL_STOP_DEQUEUED (1UL << JOBCTL_STOP_DEQUEUED_BIT)
24#define JOBCTL_STOP_PENDING (1UL << JOBCTL_STOP_PENDING_BIT)25#define JOBCTL_STOP_PENDING (1UL << JOBCTL_STOP_PENDING_BIT)
@@ -28,9 +29,10 @@ struct task_struct; · 3 unmodified lines
28#define JOBCTL_TRAPPING (1UL << JOBCTL_TRAPPING_BIT)29#define JOBCTL_TRAPPING (1UL << JOBCTL_TRAPPING_BIT)
29#define JOBCTL_LISTENING (1UL << JOBCTL_LISTENING_BIT)30#define JOBCTL_LISTENING (1UL << JOBCTL_LISTENING_BIT)
30#define JOBCTL_TRAP_FREEZE (1UL << JOBCTL_TRAP_FREEZE_BIT)31#define JOBCTL_TRAP_FREEZE (1UL << JOBCTL_TRAP_FREEZE_BIT)
32#define JOBCTL_TASK_WORK (1UL << JOBCTL_TASK_WORK_BIT)
31 33
32#define JOBCTL_TRAP_MASK (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)34#define JOBCTL_TRAP_MASK (JOBCTL_TRAP_STOP | JOBCTL_TRAP_NOTIFY)
33#define JOBCTL_PENDING_MASK (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK)35#define JOBCTL_PENDING_MASK (JOBCTL_STOP_PENDING | JOBCTL_TRAP_MASK | JOBCTL_TASK_WORK)
34 36
35extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask);37extern bool task_set_jobctl_pending(struct task_struct *task, unsigned long mask);
36extern void task_clear_jobctl_trapping(struct task_struct *task);38extern void task_clear_jobctl_trapping(struct task_struct *task);
include/linux/serial_core.h+98−4
@@ -462,10 +462,104 @@ extern void uart_handle_cts_change(struct uart_port *uport, · 461 unmodified lines
462extern void uart_insert_char(struct uart_port *port, unsigned int status,462extern void uart_insert_char(struct uart_port *port, unsigned int status,
463 unsigned int overrun, unsigned int ch, unsigned int flag);463 unsigned int overrun, unsigned int ch, unsigned int flag);
464 464
465extern int uart_handle_sysrq_char(struct uart_port *port, unsigned int ch);465#ifdef CONFIG_MAGIC_SYSRQ_SERIAL
466extern int uart_prepare_sysrq_char(struct uart_port *port, unsigned int ch);466#define SYSRQ_TIMEOUT (HZ * 5)
467extern void uart_unlock_and_check_sysrq(struct uart_port *port, unsigned long flags);467
468extern int uart_handle_break(struct uart_port *port);468bool uart_try_toggle_sysrq(struct uart_port *port, unsigned int ch);
469
470static inline int uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
471{
472 if (!port->sysrq)
473 return 0;
474
475 if (ch && time_before(jiffies, port->sysrq)) {
476 if (sysrq_mask()) {
477 handle_sysrq(ch);
478 port->sysrq = 0;
479 return 1;
480 }
481 if (uart_try_toggle_sysrq(port, ch))
482 return 1;
483 }
484 port->sysrq = 0;
485
486 return 0;
487}
488
489static inline int uart_prepare_sysrq_char(struct uart_port *port, unsigned int ch)
490{
491 if (!port->sysrq)
492 return 0;
493
494 if (ch && time_before(jiffies, port->sysrq)) {
495 if (sysrq_mask()) {
496 port->sysrq_ch = ch;
497 port->sysrq = 0;
498 return 1;
499 }
500 if (uart_try_toggle_sysrq(port, ch))
501 return 1;
502 }
503 port->sysrq = 0;
504
505 return 0;
506}
507
508static inline void uart_unlock_and_check_sysrq(struct uart_port *port, unsigned long irqflags)
509{
510 int sysrq_ch;
511
512 if (!port->has_sysrq) {
513 spin_unlock_irqrestore(&port->lock, irqflags);
514 return;
515 }
516
517 sysrq_ch = port->sysrq_ch;
518 port->sysrq_ch = 0;
519
520 spin_unlock_irqrestore(&port->lock, irqflags);
521
522 if (sysrq_ch)
523 handle_sysrq(sysrq_ch);
524}
525#else /* CONFIG_MAGIC_SYSRQ_SERIAL */
526static inline int uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
527{
528 return 0;
529}
530static inline int uart_prepare_sysrq_char(struct uart_port *port, unsigned int ch)
531{
532 return 0;
533}
534static inline void uart_unlock_and_check_sysrq(struct uart_port *port, unsigned long irqflags)
535{
536 spin_unlock_irqrestore(&port->lock, irqflags);
537}
538#endif /* CONFIG_MAGIC_SYSRQ_SERIAL */
539
540/*
541 * We do the SysRQ and SAK checking like this...
542 */
543static inline int uart_handle_break(struct uart_port *port)
544{
545 struct uart_state *state = port->state;
546
547 if (port->handle_break)
548 port->handle_break(port);
549
550#ifdef CONFIG_MAGIC_SYSRQ_SERIAL
551 if (port->has_sysrq && uart_console(port)) {
552 if (!port->sysrq) {
553 port->sysrq = jiffies + SYSRQ_TIMEOUT;
554 return 1;
555 }
556 port->sysrq = 0;
557 }
558#endif
559 if (port->flags & UPF_SAK)
560 do_SAK(state->port.tty);
561 return 0;
562}
469 563
470/*564/*
471 * UART_ENABLE_MS - determine if port should enable modem status irqs565 * UART_ENABLE_MS - determine if port should enable modem status irqs
include/linux/skmsg.h+13−0
@@ -430,6 +430,19 @@ static inline void psock_set_prog(struct bpf_prog **pprog, · 429 unmodified lines
430 bpf_prog_put(prog);430 bpf_prog_put(prog);
431}431}
432 432
433static inline int psock_replace_prog(struct bpf_prog **pprog,
434 struct bpf_prog *prog,
435 struct bpf_prog *old)
436{
437 if (cmpxchg(pprog, old, prog) != old)
438 return -ENOENT;
439
440 if (old)
441 bpf_prog_put(old);
442
443 return 0;
444}
445
433static inline void psock_progs_drop(struct sk_psock_progs *progs)446static inline void psock_progs_drop(struct sk_psock_progs *progs)
434{447{
435 psock_set_prog(&progs->msg_parser, NULL);448 psock_set_prog(&progs->msg_parser, NULL);
include/linux/smp.h+8−15
@@ -12,29 +12,22 @@ · 11 unmodified lines
12#include <linux/list.h>12#include <linux/list.h>
13#include <linux/cpumask.h>13#include <linux/cpumask.h>
14#include <linux/init.h>14#include <linux/init.h>
15#include <linux/llist.h>15#include <linux/smp_types.h>
16 16
17typedef void (*smp_call_func_t)(void *info);17typedef void (*smp_call_func_t)(void *info);
18typedef bool (*smp_cond_func_t)(int cpu, void *info);18typedef bool (*smp_cond_func_t)(int cpu, void *info);
19 19
20enum {
21 CSD_FLAG_LOCK = 0x01,
22
23 /* IRQ_WORK_flags */
24
25 CSD_TYPE_ASYNC = 0x00,
26 CSD_TYPE_SYNC = 0x10,
27 CSD_TYPE_IRQ_WORK = 0x20,
28 CSD_TYPE_TTWU = 0x30,
29 CSD_FLAG_TYPE_MASK = 0xF0,
30};
31
32/*20/*
33 * structure shares (partial) layout with struct irq_work21 * structure shares (partial) layout with struct irq_work
34 */22 */
35struct __call_single_data {23struct __call_single_data {
36 struct llist_node llist;24 union {
37 unsigned int flags;25 struct __call_single_node node;
26 struct {
27 struct llist_node llist;
28 unsigned int flags;
29 };
30 };
38 smp_call_func_t func;31 smp_call_func_t func;
39 void *info;32 void *info;
40};33};
include/linux/smp_types.h+66−0
@@ -0,0 +1,66 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __LINUX_SMP_TYPES_H
3#define __LINUX_SMP_TYPES_H
4
5#include <linux/llist.h>
6
7enum {
8 CSD_FLAG_LOCK = 0x01,
9
10 IRQ_WORK_PENDING = 0x01,
11 IRQ_WORK_BUSY = 0x02,
12 IRQ_WORK_LAZY = 0x04, /* No IPI, wait for tick */
13 IRQ_WORK_HARD_IRQ = 0x08, /* IRQ context on PREEMPT_RT */
14
15 IRQ_WORK_CLAIMED = (IRQ_WORK_PENDING | IRQ_WORK_BUSY),
16
17 CSD_TYPE_ASYNC = 0x00,
18 CSD_TYPE_SYNC = 0x10,
19 CSD_TYPE_IRQ_WORK = 0x20,
20 CSD_TYPE_TTWU = 0x30,
21
22 CSD_FLAG_TYPE_MASK = 0xF0,
23};
24
25/*
26 * struct __call_single_node is the primary type on
27 * smp.c:call_single_queue.
28 *
29 * flush_smp_call_function_queue() only reads the type from
30 * __call_single_node::u_flags as a regular load, the above
31 * (anonymous) enum defines all the bits of this word.
32 *
33 * Other bits are not modified until the type is known.
34 *
35 * CSD_TYPE_SYNC/ASYNC:
36 * struct {
37 * struct llist_node node;
38 * unsigned int flags;
39 * smp_call_func_t func;
40 * void *info;
41 * };
42 *
43 * CSD_TYPE_IRQ_WORK:
44 * struct {
45 * struct llist_node node;
46 * atomic_t flags;
47 * void (*func)(struct irq_work *);
48 * };
49 *
50 * CSD_TYPE_TTWU:
51 * struct {
52 * struct llist_node node;
53 * unsigned int flags;
54 * };
55 *
56 */
57
58struct __call_single_node {
59 struct llist_node llist;
60 union {
61 unsigned int u_flags;
62 atomic_t a_flags;
63 };
64};
65
66#endif /* __LINUX_SMP_TYPES_H */
include/linux/swap.h+1−0
@@ -313,6 +313,7 @@ struct vma_swap_readahead { · 312 unmodified lines
313};313};
314 314
315/* linux/mm/workingset.c */315/* linux/mm/workingset.c */
316void workingset_age_nonresident(struct lruvec *lruvec, unsigned long nr_pages);
316void *workingset_eviction(struct page *page, struct mem_cgroup *target_memcg);317void *workingset_eviction(struct page *page, struct mem_cgroup *target_memcg);
317void workingset_refault(struct page *page, void *shadow);318void workingset_refault(struct page *page, void *shadow);
318void workingset_activation(struct page *page);319void workingset_activation(struct page *page);
include/linux/syscalls.h+1−1
@@ -1360,7 +1360,7 @@ static inline long ksys_lchown(const char __user *filename, uid_t user, · 1359 unmodified lines
1360 1360
1361extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);1361extern long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
1362 1362
1363static inline long ksys_ftruncate(unsigned int fd, unsigned long length)1363static inline long ksys_ftruncate(unsigned int fd, loff_t length)
1364{1364{
1365 return do_sys_ftruncate(fd, length, 1);1365 return do_sys_ftruncate(fd, length, 1);
1366}1366}
include/linux/task_work.h+4−1
@@ -13,7 +13,10 @@ init_task_work(struct callback_head *twork, task_work_func_t func) · 12 unmodified lines
13 twork->func = func;13 twork->func = func;
14}14}
15 15
16int task_work_add(struct task_struct *task, struct callback_head *twork, bool);16#define TWA_RESUME 1
17#define TWA_SIGNAL 2
18int task_work_add(struct task_struct *task, struct callback_head *twork, int);
19
17struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t);20struct callback_head *task_work_cancel(struct task_struct *, task_work_func_t);
18void task_work_run(void);21void task_work_run(void);
19 22
include/linux/timekeeping.h+7−7
@@ -222,9 +222,9 @@ extern bool timekeeping_rtc_skipresume(void); · 221 unmodified lines
222 222
223extern void timekeeping_inject_sleeptime64(const struct timespec64 *delta);223extern void timekeeping_inject_sleeptime64(const struct timespec64 *delta);
224 224
225/*225/**
226 * struct system_time_snapshot - simultaneous raw/real time capture with226 * struct system_time_snapshot - simultaneous raw/real time capture with
227 * counter value227 * counter value
228 * @cycles: Clocksource counter value to produce the system times228 * @cycles: Clocksource counter value to produce the system times
229 * @real: Realtime system time229 * @real: Realtime system time
230 * @raw: Monotonic raw system time230 * @raw: Monotonic raw system time
@@ -239,9 +239,9 @@ struct system_time_snapshot { · 8 unmodified lines
239 u8 cs_was_changed_seq;239 u8 cs_was_changed_seq;
240};240};
241 241
242/*242/**
243 * struct system_device_crosststamp - system/device cross-timestamp243 * struct system_device_crosststamp - system/device cross-timestamp
244 * (syncronized capture)244 * (synchronized capture)
245 * @device: Device time245 * @device: Device time
246 * @sys_realtime: Realtime simultaneous with device time246 * @sys_realtime: Realtime simultaneous with device time
247 * @sys_monoraw: Monotonic raw simultaneous with device time247 * @sys_monoraw: Monotonic raw simultaneous with device time
@@ -252,12 +252,12 @@ struct system_device_crosststamp { · 4 unmodified lines
252 ktime_t sys_monoraw;252 ktime_t sys_monoraw;
253};253};
254 254
255/*255/**
256 * struct system_counterval_t - system counter value with the pointer to the256 * struct system_counterval_t - system counter value with the pointer to the
257 * corresponding clocksource257 * corresponding clocksource
258 * @cycles: System counter value258 * @cycles: System counter value
259 * @cs: Clocksource corresponding to system counter value. Used by259 * @cs: Clocksource corresponding to system counter value. Used by
260 * timekeeping code to verify comparibility of two cycle values260 * timekeeping code to verify comparibility of two cycle values
261 */261 */
262struct system_counterval_t {262struct system_counterval_t {
263 u64 cycles;263 u64 cycles;
include/linux/tpm_eventlog.h+13−1
@@ -81,6 +81,8 @@ struct tcg_efi_specid_event_algs { · 80 unmodified lines
81 u16 digest_size;81 u16 digest_size;
82} __packed;82} __packed;
83 83
84#define TCG_SPECID_SIG "Spec ID Event03"
85
84struct tcg_efi_specid_event_head {86struct tcg_efi_specid_event_head {
85 u8 signature[16];87 u8 signature[16];
86 u32 platform_class;88 u32 platform_class;
@@ -171,6 +173,7 @@ static inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *event, · 84 unmodified lines
171 int i;173 int i;
172 int j;174 int j;
173 u32 count, event_type;175 u32 count, event_type;
176 const u8 zero_digest[sizeof(event_header->digest)] = {0};
174 177
175 marker = event;178 marker = event;
176 marker_start = marker;179 marker_start = marker;
@@ -198,10 +201,19 @@ static inline int __calc_tpm2_event_size(struct tcg_pcr_event2_head *event, · 21 unmodified lines
198 count = READ_ONCE(event->count);201 count = READ_ONCE(event->count);
199 event_type = READ_ONCE(event->event_type);202 event_type = READ_ONCE(event->event_type);
200 203
204 /* Verify that it's the log header */
205 if (event_header->pcr_idx != 0 ||
206 event_header->event_type != NO_ACTION ||
207 memcmp(event_header->digest, zero_digest, sizeof(zero_digest))) {
208 size = 0;
209 goto out;
210 }
211
201 efispecid = (struct tcg_efi_specid_event_head *)event_header->event;212 efispecid = (struct tcg_efi_specid_event_head *)event_header->event;
202 213
203 /* Check if event is malformed. */214 /* Check if event is malformed. */
204 if (count > efispecid->num_algs) {215 if (memcmp(efispecid->signature, TCG_SPECID_SIG,
216 sizeof(TCG_SPECID_SIG)) || count > efispecid->num_algs) {
205 size = 0;217 size = 0;
206 goto out;218 goto out;
207 }219 }
include/linux/vmalloc.h+0−1
@@ -106,7 +106,6 @@ extern void *vzalloc(unsigned long size); · 105 unmodified lines
106extern void *vmalloc_user(unsigned long size);106extern void *vmalloc_user(unsigned long size);
107extern void *vmalloc_node(unsigned long size, int node);107extern void *vmalloc_node(unsigned long size, int node);
108extern void *vzalloc_node(unsigned long size, int node);108extern void *vzalloc_node(unsigned long size, int node);
109extern void *vmalloc_exec(unsigned long size);
110extern void *vmalloc_32(unsigned long size);109extern void *vmalloc_32(unsigned long size);
111extern void *vmalloc_32_user(unsigned long size);110extern void *vmalloc_32_user(unsigned long size);
112extern void *__vmalloc(unsigned long size, gfp_t gfp_mask);111extern void *__vmalloc(unsigned long size, gfp_t gfp_mask);