hc
2023-12-11 1f93a7dfd1f8d5ff7a5c53246c7534fe2332d6f4
kernel/include/linux/kernel.h
....@@ -2,19 +2,22 @@
22 #ifndef _LINUX_KERNEL_H
33 #define _LINUX_KERNEL_H
44
5
+
56 #include <stdarg.h>
7
+#include <linux/limits.h>
68 #include <linux/linkage.h>
79 #include <linux/stddef.h>
810 #include <linux/types.h>
911 #include <linux/compiler.h>
1012 #include <linux/bitops.h>
1113 #include <linux/log2.h>
14
+#include <linux/minmax.h>
1215 #include <linux/typecheck.h>
1316 #include <linux/printk.h>
1417 #include <linux/build_bug.h>
1518 #include <asm/byteorder.h>
19
+#include <asm/div64.h>
1620 #include <uapi/linux/kernel.h>
17
-#include <linux/limits.h>
1821
1922 #define STACK_MAGIC 0xdeadbeef
2023
....@@ -31,6 +34,7 @@
3134 #define ALIGN_DOWN(x, a) __ALIGN_KERNEL((x) - ((a) - 1), (a))
3235 #define __ALIGN_MASK(x, mask) __ALIGN_KERNEL_MASK((x), (mask))
3336 #define PTR_ALIGN(p, a) ((typeof(p))ALIGN((unsigned long)(p), (a)))
37
+#define PTR_ALIGN_DOWN(p, a) ((typeof(p))ALIGN_DOWN((unsigned long)(p), (a)))
3438 #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
3539
3640 /* generic data direction definitions */
....@@ -76,14 +80,7 @@
7680 */
7781 #define round_down(x, y) ((x) & ~__round_mask(x, y))
7882
79
-/**
80
- * FIELD_SIZEOF - get the size of a struct's field
81
- * @t: the target struct
82
- * @f: the target struct's field
83
- * Return: the size of @f in the struct definition without having a
84
- * declared instance of @t.
85
- */
86
-#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
83
+#define typeof_member(T, m) typeof(((T*)0)->m)
8784
8885 #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
8986
....@@ -106,12 +103,10 @@
106103 *
107104 * Rounds @x up to next multiple of @y. If @y will always be a power
108105 * of 2, consider using the faster round_up().
109
- *
110
- * The `const' here prevents gcc-3.3 from calling __divdi3
111106 */
112107 #define roundup(x, y) ( \
113108 { \
114
- const typeof(y) __y = y; \
109
+ typeof(y) __y = y; \
115110 (((x) + (__y - 1)) / __y) * __y; \
116111 } \
117112 )
....@@ -176,19 +171,7 @@
176171 #define _RET_IP_ (unsigned long)__builtin_return_address(0)
177172 #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
178173
179
-#ifdef CONFIG_LBDAF
180
-# include <asm/div64.h>
181
-# define sector_div(a, b) do_div(a, b)
182
-#else
183
-# define sector_div(n, b)( \
184
-{ \
185
- int _res; \
186
- _res = (n) % (b); \
187
- (n) /= (b); \
188
- _res; \
189
-} \
190
-)
191
-#endif
174
+#define sector_div(a, b) do_div(a, b)
192175
193176 /**
194177 * upper_32_bits - return bits 32-63 of a number
....@@ -204,7 +187,7 @@
204187 * lower_32_bits - return bits 0-31 of a number
205188 * @n: the number we're accessing
206189 */
207
-#define lower_32_bits(n) ((u32)(n))
190
+#define lower_32_bits(n) ((u32)((n) & 0xffffffff))
208191
209192 struct completion;
210193 struct pt_regs;
....@@ -218,13 +201,18 @@
218201 #endif
219202
220203 #ifdef CONFIG_DEBUG_ATOMIC_SLEEP
221
- void ___might_sleep(const char *file, int line, int preempt_offset);
222
- void __might_sleep(const char *file, int line, int preempt_offset);
204
+extern void ___might_sleep(const char *file, int line, int preempt_offset);
205
+extern void __might_sleep(const char *file, int line, int preempt_offset);
206
+extern void __cant_sleep(const char *file, int line, int preempt_offset);
207
+extern void __cant_migrate(const char *file, int line);
208
+
223209 /**
224210 * might_sleep - annotation for functions that can sleep
225211 *
226212 * this macro will print a stack trace if it is executed in an atomic
227
- * context (spinlock, irq-handler, ...).
213
+ * context (spinlock, irq-handler, ...). Additional sections where blocking is
214
+ * not allowed can be annotated with non_block_start() and non_block_end()
215
+ * pairs.
228216 *
229217 * This is a useful debugging help to be able to catch problems early and not
230218 * be bitten later when the calling function happens to sleep when it is not
....@@ -232,14 +220,59 @@
232220 */
233221 # define might_sleep() \
234222 do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
223
+
224
+# define might_sleep_no_state_check() \
225
+ do { ___might_sleep(__FILE__, __LINE__, 0); } while (0)
226
+
227
+/**
228
+ * cant_sleep - annotation for functions that cannot sleep
229
+ *
230
+ * this macro will print a stack trace if it is executed with preemption enabled
231
+ */
232
+# define cant_sleep() \
233
+ do { __cant_sleep(__FILE__, __LINE__, 0); } while (0)
235234 # define sched_annotate_sleep() (current->task_state_change = 0)
235
+
236
+/**
237
+ * cant_migrate - annotation for functions that cannot migrate
238
+ *
239
+ * Will print a stack trace if executed in code which is migratable
240
+ */
241
+# define cant_migrate() \
242
+ do { \
243
+ if (IS_ENABLED(CONFIG_SMP)) \
244
+ __cant_migrate(__FILE__, __LINE__); \
245
+ } while (0)
246
+
247
+/**
248
+ * non_block_start - annotate the start of section where sleeping is prohibited
249
+ *
250
+ * This is on behalf of the oom reaper, specifically when it is calling the mmu
251
+ * notifiers. The problem is that if the notifier were to block on, for example,
252
+ * mutex_lock() and if the process which holds that mutex were to perform a
253
+ * sleeping memory allocation, the oom reaper is now blocked on completion of
254
+ * that memory allocation. Other blocking calls like wait_event() pose similar
255
+ * issues.
256
+ */
257
+# define non_block_start() (current->non_block_count++)
258
+/**
259
+ * non_block_end - annotate the end of section where sleeping is prohibited
260
+ *
261
+ * Closes a section opened by non_block_start().
262
+ */
263
+# define non_block_end() WARN_ON(current->non_block_count-- == 0)
236264 #else
237265 static inline void ___might_sleep(const char *file, int line,
238266 int preempt_offset) { }
239267 static inline void __might_sleep(const char *file, int line,
240268 int preempt_offset) { }
241269 # define might_sleep() do { might_resched(); } while (0)
270
+# define might_sleep_no_state_check() do { might_resched(); } while (0)
271
+# define cant_sleep() do { } while (0)
272
+# define cant_migrate() do { } while (0)
242273 # define sched_annotate_sleep() do { } while (0)
274
+# define non_block_start() do { } while (0)
275
+# define non_block_end() do { } while (0)
243276 #endif
244277
245278 #define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
....@@ -295,24 +328,15 @@
295328 #endif
296329
297330 extern struct atomic_notifier_head panic_notifier_list;
298
-extern void (*vendor_panic_cb)(u64 sp);
299331 extern long (*panic_blink)(int state);
300332 __printf(1, 2)
301333 void panic(const char *fmt, ...) __noreturn __cold;
302334 void nmi_panic(struct pt_regs *regs, const char *msg);
303335 extern void oops_enter(void);
304336 extern void oops_exit(void);
305
-void print_oops_end_marker(void);
306
-extern int oops_may_print(void);
337
+extern bool oops_may_print(void);
307338 void do_exit(long error_code) __noreturn;
308339 void complete_and_exit(struct completion *, long) __noreturn;
309
-
310
-#ifdef CONFIG_ARCH_HAS_REFCOUNT
311
-void refcount_error_report(struct pt_regs *regs, const char *err);
312
-#else
313
-static inline void refcount_error_report(struct pt_regs *regs, const char *err)
314
-{ }
315
-#endif
316340
317341 /* Internal, do not use. */
318342 int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res);
....@@ -334,8 +358,7 @@
334358 * @res: Where to write the result of the conversion on success.
335359 *
336360 * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
337
- * Used as a replacement for the obsolete simple_strtoull. Return code must
338
- * be checked.
361
+ * Preferred over simple_strtoul(). Return code must be checked.
339362 */
340363 static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
341364 {
....@@ -363,8 +386,7 @@
363386 * @res: Where to write the result of the conversion on success.
364387 *
365388 * Returns 0 on success, -ERANGE on overflow and -EINVAL on parsing error.
366
- * Used as a replacement for the obsolete simple_strtoull. Return code must
367
- * be checked.
389
+ * Preferred over simple_strtol(). Return code must be checked.
368390 */
369391 static inline int __must_check kstrtol(const char *s, unsigned int base, long *res)
370392 {
....@@ -440,7 +462,18 @@
440462 return kstrtoint_from_user(s, count, base, res);
441463 }
442464
443
-/* Obsolete, do not use. Use kstrto<foo> instead */
465
+/*
466
+ * Use kstrto<foo> instead.
467
+ *
468
+ * NOTE: simple_strto<foo> does not check for the range overflow and,
469
+ * depending on the input, may give interesting results.
470
+ *
471
+ * Use these functions if and only if you cannot use kstrto<foo>, because
472
+ * the conversion ends on the first non-digit character, which may be far
473
+ * beyond the supported range. It might be useful to parse the strings like
474
+ * 10x50 or 12:21 without altering original string or temporary buffer in use.
475
+ * Keep in mind above caveat.
476
+ */
444477
445478 extern unsigned long simple_strtoul(const char *,char **,unsigned int);
446479 extern long simple_strtol(const char *,char **,unsigned int);
....@@ -487,6 +520,7 @@
487520 extern int kernel_text_address(unsigned long addr);
488521 extern int func_ptr_is_kernel_text(void *ptr);
489522
523
+u64 int_pow(u64 base, unsigned int exp);
490524 unsigned long int_sqrt(unsigned long);
491525
492526 #if BITS_PER_LONG < 64
....@@ -498,13 +532,21 @@
498532 }
499533 #endif
500534
535
+#ifdef CONFIG_SMP
536
+extern unsigned int sysctl_oops_all_cpu_backtrace;
537
+#else
538
+#define sysctl_oops_all_cpu_backtrace 0
539
+#endif /* CONFIG_SMP */
540
+
501541 extern void bust_spinlocks(int yes);
502
-extern int oops_in_progress; /* If set, an oops, panic(), BUG() or die() is in progress */
503542 extern int panic_timeout;
543
+extern unsigned long panic_print;
504544 extern int panic_on_oops;
505545 extern int panic_on_unrecovered_nmi;
506546 extern int panic_on_io_nmi;
507547 extern int panic_on_warn;
548
+extern unsigned long panic_on_taint;
549
+extern bool panic_on_taint_nousertaint;
508550 extern int sysctl_panic_on_rcu_stall;
509551 extern int sysctl_panic_on_stackoverflow;
510552
....@@ -573,6 +615,7 @@
573615 #define TAINT_AUX 16
574616 #define TAINT_RANDSTRUCT 17
575617 #define TAINT_FLAGS_COUNT 18
618
+#define TAINT_FLAGS_MAX ((1UL << TAINT_FLAGS_COUNT) - 1)
576619
577620 struct taint_flag {
578621 char c_true; /* character printed when tainted */
....@@ -604,7 +647,11 @@
604647 return buf;
605648 }
606649
650
+#ifdef __GENKSYMS__
607651 extern int hex_to_bin(char ch);
652
+#else
653
+extern int hex_to_bin(unsigned char ch);
654
+#endif
608655 extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
609656 extern char *bin2hex(char *dst, const void *src, size_t count);
610657
....@@ -698,7 +745,7 @@
698745 #define do_trace_printk(fmt, args...) \
699746 do { \
700747 static const char *trace_printk_fmt __used \
701
- __attribute__((section("__trace_printk_fmt"))) = \
748
+ __section("__trace_printk_fmt") = \
702749 __builtin_constant_p(fmt) ? fmt : NULL; \
703750 \
704751 __trace_printk_check_format(fmt, ##args); \
....@@ -742,7 +789,7 @@
742789
743790 #define trace_puts(str) ({ \
744791 static const char *trace_printk_fmt __used \
745
- __attribute__((section("__trace_printk_fmt"))) = \
792
+ __section("__trace_printk_fmt") = \
746793 __builtin_constant_p(str) ? str : NULL; \
747794 \
748795 if (__builtin_constant_p(str)) \
....@@ -764,7 +811,7 @@
764811 do { \
765812 if (__builtin_constant_p(fmt)) { \
766813 static const char *trace_printk_fmt __used \
767
- __attribute__((section("__trace_printk_fmt"))) = \
814
+ __section("__trace_printk_fmt") = \
768815 __builtin_constant_p(fmt) ? fmt : NULL; \
769816 \
770817 __ftrace_vbprintk(_THIS_IP_, trace_printk_fmt, vargs); \
....@@ -802,155 +849,6 @@
802849 }
803850 static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
804851 #endif /* CONFIG_TRACING */
805
-
806
-/*
807
- * min()/max()/clamp() macros must accomplish three things:
808
- *
809
- * - avoid multiple evaluations of the arguments (so side-effects like
810
- * "x++" happen only once) when non-constant.
811
- * - perform strict type-checking (to generate warnings instead of
812
- * nasty runtime surprises). See the "unnecessary" pointer comparison
813
- * in __typecheck().
814
- * - retain result as a constant expressions when called with only
815
- * constant expressions (to avoid tripping VLA warnings in stack
816
- * allocation usage).
817
- */
818
-#define __typecheck(x, y) \
819
- (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
820
-
821
-/*
822
- * This returns a constant expression while determining if an argument is
823
- * a constant expression, most importantly without evaluating the argument.
824
- * Glory to Martin Uecker <Martin.Uecker@med.uni-goettingen.de>
825
- */
826
-#define __is_constexpr(x) \
827
- (sizeof(int) == sizeof(*(8 ? ((void *)((long)(x) * 0l)) : (int *)8)))
828
-
829
-#define __no_side_effects(x, y) \
830
- (__is_constexpr(x) && __is_constexpr(y))
831
-
832
-#define __safe_cmp(x, y) \
833
- (__typecheck(x, y) && __no_side_effects(x, y))
834
-
835
-#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
836
-
837
-#define __cmp_once(x, y, unique_x, unique_y, op) ({ \
838
- typeof(x) unique_x = (x); \
839
- typeof(y) unique_y = (y); \
840
- __cmp(unique_x, unique_y, op); })
841
-
842
-#define __careful_cmp(x, y, op) \
843
- __builtin_choose_expr(__safe_cmp(x, y), \
844
- __cmp(x, y, op), \
845
- __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
846
-
847
-/**
848
- * min - return minimum of two values of the same or compatible types
849
- * @x: first value
850
- * @y: second value
851
- */
852
-#define min(x, y) __careful_cmp(x, y, <)
853
-
854
-/**
855
- * max - return maximum of two values of the same or compatible types
856
- * @x: first value
857
- * @y: second value
858
- */
859
-#define max(x, y) __careful_cmp(x, y, >)
860
-
861
-/**
862
- * min3 - return minimum of three values
863
- * @x: first value
864
- * @y: second value
865
- * @z: third value
866
- */
867
-#define min3(x, y, z) min((typeof(x))min(x, y), z)
868
-
869
-/**
870
- * max3 - return maximum of three values
871
- * @x: first value
872
- * @y: second value
873
- * @z: third value
874
- */
875
-#define max3(x, y, z) max((typeof(x))max(x, y), z)
876
-
877
-/**
878
- * min_not_zero - return the minimum that is _not_ zero, unless both are zero
879
- * @x: value1
880
- * @y: value2
881
- */
882
-#define min_not_zero(x, y) ({ \
883
- typeof(x) __x = (x); \
884
- typeof(y) __y = (y); \
885
- __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
886
-
887
-/**
888
- * clamp - return a value clamped to a given range with strict typechecking
889
- * @val: current value
890
- * @lo: lowest allowable value
891
- * @hi: highest allowable value
892
- *
893
- * This macro does strict typechecking of @lo/@hi to make sure they are of the
894
- * same type as @val. See the unnecessary pointer comparisons.
895
- */
896
-#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
897
-
898
-/*
899
- * ..and if you can't take the strict
900
- * types, you can specify one yourself.
901
- *
902
- * Or not use min/max/clamp at all, of course.
903
- */
904
-
905
-/**
906
- * min_t - return minimum of two values, using the specified type
907
- * @type: data type to use
908
- * @x: first value
909
- * @y: second value
910
- */
911
-#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
912
-
913
-/**
914
- * max_t - return maximum of two values, using the specified type
915
- * @type: data type to use
916
- * @x: first value
917
- * @y: second value
918
- */
919
-#define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
920
-
921
-/**
922
- * clamp_t - return a value clamped to a given range using a given type
923
- * @type: the type of variable to use
924
- * @val: current value
925
- * @lo: minimum allowable value
926
- * @hi: maximum allowable value
927
- *
928
- * This macro does no typechecking and uses temporary variables of type
929
- * @type to make all the comparisons.
930
- */
931
-#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
932
-
933
-/**
934
- * clamp_val - return a value clamped to a given range using val's type
935
- * @val: current value
936
- * @lo: minimum allowable value
937
- * @hi: maximum allowable value
938
- *
939
- * This macro does no typechecking and uses temporary variables of whatever
940
- * type the input argument @val is. This is useful when @val is an unsigned
941
- * type and @lo and @hi are literals that will otherwise be assigned a signed
942
- * integer type.
943
- */
944
-#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
945
-
946
-
947
-/**
948
- * swap - swap values of @a and @b
949
- * @a: first value
950
- * @b: second value
951
- */
952
-#define swap(a, b) \
953
- do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
954852
955853 /* This counts to 12. Any more, it will return 13th argument. */
956854 #define __COUNT_ARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _n, X...) _n