1#ifndef _LINUX_KERNEL_H
2#define _LINUX_KERNEL_H
3
4
5#include <stdarg.h>
6#include <linux/linkage.h>
7#include <linux/stddef.h>
8#include <linux/types.h>
9#include <linux/compiler.h>
10#include <linux/bitops.h>
11#include <linux/log2.h>
12#include <linux/typecheck.h>
13#include <linux/printk.h>
14#include <asm/byteorder.h>
15#include <uapi/linux/kernel.h>
16
17#define USHRT_MAX ((u16)(~0U))
18#define SHRT_MAX ((s16)(USHRT_MAX>>1))
19#define SHRT_MIN ((s16)(-SHRT_MAX - 1))
20#define INT_MAX ((int)(~0U>>1))
21#define INT_MIN (-INT_MAX - 1)
22#define UINT_MAX (~0U)
23#define LONG_MAX ((long)(~0UL>>1))
24#define LONG_MIN (-LONG_MAX - 1)
25#define ULONG_MAX (~0UL)
26#define LLONG_MAX ((long long)(~0ULL>>1))
27#define LLONG_MIN (-LLONG_MAX - 1)
28#define ULLONG_MAX (~0ULL)
29#define SIZE_MAX (~(size_t)0)
30
31#define U8_MAX ((u8)~0U)
32#define S8_MAX ((s8)(U8_MAX>>1))
33#define S8_MIN ((s8)(-S8_MAX - 1))
34#define U16_MAX ((u16)~0U)
35#define S16_MAX ((s16)(U16_MAX>>1))
36#define S16_MIN ((s16)(-S16_MAX - 1))
37#define U32_MAX ((u32)~0U)
38#define S32_MAX ((s32)(U32_MAX>>1))
39#define S32_MIN ((s32)(-S32_MAX - 1))
40#define U64_MAX ((u64)~0ULL)
41#define S64_MAX ((s64)(U64_MAX>>1))
42#define S64_MIN ((s64)(-S64_MAX - 1))
43
44#define STACK_MAGIC 0xdeadbeef
45
46#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x))
47
48#define ALIGN(x, a) __ALIGN_KERNEL((x), (a))
49#define __ALIGN_MASK(x, mask) __ALIGN_KERNEL_MASK((x), (mask))
50#define PTR_ALIGN(p, a) ((typeof(p))ALIGN((unsigned long)(p), (a)))
51#define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0)
52
53#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
54
55#define u64_to_user_ptr(x) ( \
56{ \
57 typecheck(u64, x); \
58 (void __user *)(uintptr_t)x; \
59} \
60)
61
62
63
64
65
66
67
68#define __round_mask(x, y) ((__typeof__(x))((y)-1))
69#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
70#define round_down(x, y) ((x) & ~__round_mask(x, y))
71
72#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
73#define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
74#define DIV_ROUND_UP_ULL(ll,d) \
75 ({ unsigned long long _tmp = (ll)+(d)-1; do_div(_tmp, d); _tmp; })
76
77#if BITS_PER_LONG == 32
78# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP_ULL(ll, d)
79#else
80# define DIV_ROUND_UP_SECTOR_T(ll,d) DIV_ROUND_UP(ll,d)
81#endif
82
83
84#define roundup(x, y) ( \
85{ \
86 const typeof(y) __y = y; \
87 (((x) + (__y - 1)) / __y) * __y; \
88} \
89)
90#define rounddown(x, y) ( \
91{ \
92 typeof(x) __x = (x); \
93 __x - (__x % (y)); \
94} \
95)
96
97
98
99
100
101
102#define DIV_ROUND_CLOSEST(x, divisor)( \
103{ \
104 typeof(x) __x = x; \
105 typeof(divisor) __d = divisor; \
106 (((typeof(x))-1) > 0 || \
107 ((typeof(divisor))-1) > 0 || (__x) > 0) ? \
108 (((__x) + ((__d) / 2)) / (__d)) : \
109 (((__x) - ((__d) / 2)) / (__d)); \
110} \
111)
112
113
114
115
116#define DIV_ROUND_CLOSEST_ULL(x, divisor)( \
117{ \
118 typeof(divisor) __d = divisor; \
119 unsigned long long _tmp = (x) + (__d) / 2; \
120 do_div(_tmp, __d); \
121 _tmp; \
122} \
123)
124
125
126
127
128
129#define mult_frac(x, numer, denom)( \
130{ \
131 typeof(x) quot = (x) / (denom); \
132 typeof(x) rem = (x) % (denom); \
133 (quot * (numer)) + ((rem * (numer)) / (denom)); \
134} \
135)
136
137
138#define _RET_IP_ (unsigned long)__builtin_return_address(0)
139#define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
140
141#ifdef CONFIG_LBDAF
142# include <asm/div64.h>
143# define sector_div(a, b) do_div(a, b)
144#else
145# define sector_div(n, b)( \
146{ \
147 int _res; \
148 _res = (n) % (b); \
149 (n) /= (b); \
150 _res; \
151} \
152)
153#endif
154
155
156
157
158
159
160
161
162
163#define upper_32_bits(n) ((u32)(((n) >> 16) >> 16))
164
165
166
167
168
169#define lower_32_bits(n) ((u32)(n))
170
171struct completion;
172struct pt_regs;
173struct user;
174
175#ifdef CONFIG_PREEMPT_VOLUNTARY
176extern int _cond_resched(void);
177# define might_resched() _cond_resched()
178#else
179# define might_resched() do { } while (0)
180#endif
181
182#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
183 void ___might_sleep(const char *file, int line, int preempt_offset);
184 void __might_sleep(const char *file, int line, int preempt_offset);
185
186
187
188
189
190
191
192
193
194
195# define might_sleep() \
196 do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
197# define sched_annotate_sleep() (current->task_state_change = 0)
198#else
199 static inline void ___might_sleep(const char *file, int line,
200 int preempt_offset) { }
201 static inline void __might_sleep(const char *file, int line,
202 int preempt_offset) { }
203# define might_sleep() do { might_resched(); } while (0)
204# define sched_annotate_sleep() do { } while (0)
205#endif
206
207#define might_sleep_if(cond) do { if (cond) might_sleep(); } while (0)
208
209
210
211
212
213
214
215
216
217#define abs(x) __abs_choose_expr(x, long long, \
218 __abs_choose_expr(x, long, \
219 __abs_choose_expr(x, int, \
220 __abs_choose_expr(x, short, \
221 __abs_choose_expr(x, char, \
222 __builtin_choose_expr( \
223 __builtin_types_compatible_p(typeof(x), char), \
224 (char)({ signed char __x = (x); __x<0?-__x:__x; }), \
225 ((void)0)))))))
226
227#define __abs_choose_expr(x, type, other) __builtin_choose_expr( \
228 __builtin_types_compatible_p(typeof(x), signed type) || \
229 __builtin_types_compatible_p(typeof(x), unsigned type), \
230 ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other)
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246static inline u32 reciprocal_scale(u32 val, u32 ep_ro)
247{
248 return (u32)(((u64) val * ep_ro) >> 32);
249}
250
251#if defined(CONFIG_MMU) && \
252 (defined(CONFIG_PROVE_LOCKING) || defined(CONFIG_DEBUG_ATOMIC_SLEEP))
253#define might_fault() __might_fault(__FILE__, __LINE__)
254void __might_fault(const char *file, int line);
255#else
256static inline void might_fault(void) { }
257#endif
258
259extern struct atomic_notifier_head panic_notifier_list;
260extern long (*panic_blink)(int state);
261__printf(1, 2)
262void panic(const char *fmt, ...) __noreturn __cold;
263void nmi_panic(struct pt_regs *regs, const char *msg);
264extern void oops_enter(void);
265extern void oops_exit(void);
266void print_oops_end_marker(void);
267extern int oops_may_print(void);
268void do_exit(long error_code) __noreturn;
269void complete_and_exit(struct completion *, long) __noreturn;
270
271
272int __must_check _kstrtoul(const char *s, unsigned int base, unsigned long *res);
273int __must_check _kstrtol(const char *s, unsigned int base, long *res);
274
275int __must_check kstrtoull(const char *s, unsigned int base, unsigned long long *res);
276int __must_check kstrtoll(const char *s, unsigned int base, long long *res);
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
295{
296
297
298
299
300 if (sizeof(unsigned long) == sizeof(unsigned long long) &&
301 __alignof__(unsigned long) == __alignof__(unsigned long long))
302 return kstrtoull(s, base, (unsigned long long *)res);
303 else
304 return _kstrtoul(s, base, res);
305}
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323static inline int __must_check kstrtol(const char *s, unsigned int base, long *res)
324{
325
326
327
328
329 if (sizeof(long) == sizeof(long long) &&
330 __alignof__(long) == __alignof__(long long))
331 return kstrtoll(s, base, (long long *)res);
332 else
333 return _kstrtol(s, base, res);
334}
335
336int __must_check kstrtouint(const char *s, unsigned int base, unsigned int *res);
337int __must_check kstrtoint(const char *s, unsigned int base, int *res);
338
339static inline int __must_check kstrtou64(const char *s, unsigned int base, u64 *res)
340{
341 return kstrtoull(s, base, res);
342}
343
344static inline int __must_check kstrtos64(const char *s, unsigned int base, s64 *res)
345{
346 return kstrtoll(s, base, res);
347}
348
349static inline int __must_check kstrtou32(const char *s, unsigned int base, u32 *res)
350{
351 return kstrtouint(s, base, res);
352}
353
354static inline int __must_check kstrtos32(const char *s, unsigned int base, s32 *res)
355{
356 return kstrtoint(s, base, res);
357}
358
359int __must_check kstrtou16(const char *s, unsigned int base, u16 *res);
360int __must_check kstrtos16(const char *s, unsigned int base, s16 *res);
361int __must_check kstrtou8(const char *s, unsigned int base, u8 *res);
362int __must_check kstrtos8(const char *s, unsigned int base, s8 *res);
363int __must_check kstrtobool(const char *s, bool *res);
364
365int __must_check kstrtoull_from_user(const char __user *s, size_t count, unsigned int base, unsigned long long *res);
366int __must_check kstrtoll_from_user(const char __user *s, size_t count, unsigned int base, long long *res);
367int __must_check kstrtoul_from_user(const char __user *s, size_t count, unsigned int base, unsigned long *res);
368int __must_check kstrtol_from_user(const char __user *s, size_t count, unsigned int base, long *res);
369int __must_check kstrtouint_from_user(const char __user *s, size_t count, unsigned int base, unsigned int *res);
370int __must_check kstrtoint_from_user(const char __user *s, size_t count, unsigned int base, int *res);
371int __must_check kstrtou16_from_user(const char __user *s, size_t count, unsigned int base, u16 *res);
372int __must_check kstrtos16_from_user(const char __user *s, size_t count, unsigned int base, s16 *res);
373int __must_check kstrtou8_from_user(const char __user *s, size_t count, unsigned int base, u8 *res);
374int __must_check kstrtos8_from_user(const char __user *s, size_t count, unsigned int base, s8 *res);
375int __must_check kstrtobool_from_user(const char __user *s, size_t count, bool *res);
376
377static inline int __must_check kstrtou64_from_user(const char __user *s, size_t count, unsigned int base, u64 *res)
378{
379 return kstrtoull_from_user(s, count, base, res);
380}
381
382static inline int __must_check kstrtos64_from_user(const char __user *s, size_t count, unsigned int base, s64 *res)
383{
384 return kstrtoll_from_user(s, count, base, res);
385}
386
387static inline int __must_check kstrtou32_from_user(const char __user *s, size_t count, unsigned int base, u32 *res)
388{
389 return kstrtouint_from_user(s, count, base, res);
390}
391
392static inline int __must_check kstrtos32_from_user(const char __user *s, size_t count, unsigned int base, s32 *res)
393{
394 return kstrtoint_from_user(s, count, base, res);
395}
396
397
398
399extern unsigned long simple_strtoul(const char *,char **,unsigned int);
400extern long simple_strtol(const char *,char **,unsigned int);
401extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
402extern long long simple_strtoll(const char *,char **,unsigned int);
403
404extern int num_to_str(char *buf, int size, unsigned long long num);
405
406
407
408extern __printf(2, 3) int sprintf(char *buf, const char * fmt, ...);
409extern __printf(2, 0) int vsprintf(char *buf, const char *, va_list);
410extern __printf(3, 4)
411int snprintf(char *buf, size_t size, const char *fmt, ...);
412extern __printf(3, 0)
413int vsnprintf(char *buf, size_t size, const char *fmt, va_list args);
414extern __printf(3, 4)
415int scnprintf(char *buf, size_t size, const char *fmt, ...);
416extern __printf(3, 0)
417int vscnprintf(char *buf, size_t size, const char *fmt, va_list args);
418extern __printf(2, 3) __malloc
419char *kasprintf(gfp_t gfp, const char *fmt, ...);
420extern __printf(2, 0) __malloc
421char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
422extern __printf(2, 0)
423const char *kvasprintf_const(gfp_t gfp, const char *fmt, va_list args);
424
425extern __scanf(2, 3)
426int sscanf(const char *, const char *, ...);
427extern __scanf(2, 0)
428int vsscanf(const char *, const char *, va_list);
429
430extern int get_option(char **str, int *pint);
431extern char *get_options(const char *str, int nints, int *ints);
432extern unsigned long long memparse(const char *ptr, char **retptr);
433extern bool parse_option_str(const char *str, const char *option);
434
435extern int core_kernel_text(unsigned long addr);
436extern int core_kernel_data(unsigned long addr);
437extern int __kernel_text_address(unsigned long addr);
438extern int kernel_text_address(unsigned long addr);
439extern int func_ptr_is_kernel_text(void *ptr);
440
441unsigned long int_sqrt(unsigned long);
442
443extern void bust_spinlocks(int yes);
444extern int oops_in_progress;
445extern int panic_timeout;
446extern int panic_on_oops;
447extern int panic_on_unrecovered_nmi;
448extern int panic_on_io_nmi;
449extern int panic_on_warn;
450extern int sysctl_panic_on_rcu_stall;
451extern int sysctl_panic_on_stackoverflow;
452
453extern bool crash_kexec_post_notifiers;
454
455
456
457
458
459
460extern atomic_t panic_cpu;
461#define PANIC_CPU_INVALID -1
462
463
464
465
466
467static inline void set_arch_panic_timeout(int timeout, int arch_default_timeout)
468{
469 if (panic_timeout == arch_default_timeout)
470 panic_timeout = timeout;
471}
472extern const char *print_tainted(void);
473enum lockdep_ok {
474 LOCKDEP_STILL_OK,
475 LOCKDEP_NOW_UNRELIABLE
476};
477extern void add_taint(unsigned flag, enum lockdep_ok);
478extern int test_taint(unsigned flag);
479extern unsigned long get_taint(void);
480extern int root_mountflags;
481
482extern bool early_boot_irqs_disabled;
483
484
485extern enum system_states {
486 SYSTEM_BOOTING,
487 SYSTEM_RUNNING,
488 SYSTEM_HALT,
489 SYSTEM_POWER_OFF,
490 SYSTEM_RESTART,
491} system_state;
492
493#define TAINT_PROPRIETARY_MODULE 0
494#define TAINT_FORCED_MODULE 1
495#define TAINT_CPU_OUT_OF_SPEC 2
496#define TAINT_FORCED_RMMOD 3
497#define TAINT_MACHINE_CHECK 4
498#define TAINT_BAD_PAGE 5
499#define TAINT_USER 6
500#define TAINT_DIE 7
501#define TAINT_OVERRIDDEN_ACPI_TABLE 8
502#define TAINT_WARN 9
503#define TAINT_CRAP 10
504#define TAINT_FIRMWARE_WORKAROUND 11
505#define TAINT_OOT_MODULE 12
506#define TAINT_UNSIGNED_MODULE 13
507#define TAINT_SOFTLOCKUP 14
508#define TAINT_LIVEPATCH 15
509
510extern const char hex_asc[];
511#define hex_asc_lo(x) hex_asc[((x) & 0x0f)]
512#define hex_asc_hi(x) hex_asc[((x) & 0xf0) >> 4]
513
514static inline char *hex_byte_pack(char *buf, u8 byte)
515{
516 *buf++ = hex_asc_hi(byte);
517 *buf++ = hex_asc_lo(byte);
518 return buf;
519}
520
521extern const char hex_asc_upper[];
522#define hex_asc_upper_lo(x) hex_asc_upper[((x) & 0x0f)]
523#define hex_asc_upper_hi(x) hex_asc_upper[((x) & 0xf0) >> 4]
524
525static inline char *hex_byte_pack_upper(char *buf, u8 byte)
526{
527 *buf++ = hex_asc_upper_hi(byte);
528 *buf++ = hex_asc_upper_lo(byte);
529 return buf;
530}
531
532extern int hex_to_bin(char ch);
533extern int __must_check hex2bin(u8 *dst, const char *src, size_t count);
534extern char *bin2hex(char *dst, const void *src, size_t count);
535
536bool mac_pton(const char *s, u8 *mac);
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558enum ftrace_dump_mode {
559 DUMP_NONE,
560 DUMP_ALL,
561 DUMP_ORIG,
562};
563
564#ifdef CONFIG_TRACING
565void tracing_on(void);
566void tracing_off(void);
567int tracing_is_on(void);
568void tracing_snapshot(void);
569void tracing_snapshot_alloc(void);
570
571extern void tracing_start(void);
572extern void tracing_stop(void);
573
574static inline __printf(1, 2)
575void ____trace_printk_check_format(const char *fmt, ...)
576{
577}
578#define __trace_printk_check_format(fmt, args...) \
579do { \
580 if (0) \
581 ____trace_printk_check_format(fmt, ##args); \
582} while (0)
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614#define trace_printk(fmt, ...) \
615do { \
616 char _______STR[] = __stringify((__VA_ARGS__)); \
617 if (sizeof(_______STR) > 3) \
618 do_trace_printk(fmt, ##__VA_ARGS__); \
619 else \
620 trace_puts(fmt); \
621} while (0)
622
623#define do_trace_printk(fmt, args...) \
624do { \
625 static const char *trace_printk_fmt __used \
626 __attribute__((section("__trace_printk_fmt"))) = \
627 __builtin_constant_p(fmt) ? fmt : NULL; \
628 \
629 __trace_printk_check_format(fmt, ##args); \
630 \
631 if (__builtin_constant_p(fmt)) \
632 __trace_bprintk(_THIS_IP_, trace_printk_fmt, ##args); \
633 else \
634 __trace_printk(_THIS_IP_, fmt, ##args); \
635} while (0)
636
637extern __printf(2, 3)
638int __trace_bprintk(unsigned long ip, const char *fmt, ...);
639
640extern __printf(2, 3)
641int __trace_printk(unsigned long ip, const char *fmt, ...);
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668#define trace_puts(str) ({ \
669 static const char *trace_printk_fmt __used \
670 __attribute__((section("__trace_printk_fmt"))) = \
671 __builtin_constant_p(str) ? str : NULL; \
672 \
673 if (__builtin_constant_p(str)) \
674 __trace_bputs(_THIS_IP_, trace_printk_fmt); \
675 else \
676 __trace_puts(_THIS_IP_, str, strlen(str)); \
677})
678extern int __trace_bputs(unsigned long ip, const char *str);
679extern int __trace_puts(unsigned long ip, const char *str, int size);
680
681extern void trace_dump_stack(int skip);
682
683
684
685
686
687
688#define ftrace_vprintk(fmt, vargs) \
689do { \
690 if (__builtin_constant_p(fmt)) { \
691 static const char *trace_printk_fmt __used \
692 __attribute__((section("__trace_printk_fmt"))) = \
693 __builtin_constant_p(fmt) ? fmt : NULL; \
694 \
695 __ftrace_vbprintk(_THIS_IP_, trace_printk_fmt, vargs); \
696 } else \
697 __ftrace_vprintk(_THIS_IP_, fmt, vargs); \
698} while (0)
699
700extern __printf(2, 0) int
701__ftrace_vbprintk(unsigned long ip, const char *fmt, va_list ap);
702
703extern __printf(2, 0) int
704__ftrace_vprintk(unsigned long ip, const char *fmt, va_list ap);
705
706extern void ftrace_dump(enum ftrace_dump_mode oops_dump_mode);
707#else
708static inline void tracing_start(void) { }
709static inline void tracing_stop(void) { }
710static inline void trace_dump_stack(int skip) { }
711
712static inline void tracing_on(void) { }
713static inline void tracing_off(void) { }
714static inline int tracing_is_on(void) { return 0; }
715static inline void tracing_snapshot(void) { }
716static inline void tracing_snapshot_alloc(void) { }
717
718static inline __printf(1, 2)
719int trace_printk(const char *fmt, ...)
720{
721 return 0;
722}
723static __printf(1, 0) inline int
724ftrace_vprintk(const char *fmt, va_list ap)
725{
726 return 0;
727}
728static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
729#endif
730
731
732
733
734
735
736#define __min(t1, t2, min1, min2, x, y) ({ \
737 t1 min1 = (x); \
738 t2 min2 = (y); \
739 (void) (&min1 == &min2); \
740 min1 < min2 ? min1 : min2; })
741#define min(x, y) \
742 __min(typeof(x), typeof(y), \
743 __UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
744 x, y)
745
746#define __max(t1, t2, max1, max2, x, y) ({ \
747 t1 max1 = (x); \
748 t2 max2 = (y); \
749 (void) (&max1 == &max2); \
750 max1 > max2 ? max1 : max2; })
751#define max(x, y) \
752 __max(typeof(x), typeof(y), \
753 __UNIQUE_ID(max1_), __UNIQUE_ID(max2_), \
754 x, y)
755
756#define min3(x, y, z) min((typeof(x))min(x, y), z)
757#define max3(x, y, z) max((typeof(x))max(x, y), z)
758
759
760
761
762
763
764#define min_not_zero(x, y) ({ \
765 typeof(x) __x = (x); \
766 typeof(y) __y = (y); \
767 __x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })
768
769
770
771
772
773
774
775
776
777
778#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi)
779
780
781
782
783
784
785
786#define min_t(type, x, y) \
787 __min(type, type, \
788 __UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
789 x, y)
790
791#define max_t(type, x, y) \
792 __max(type, type, \
793 __UNIQUE_ID(min1_), __UNIQUE_ID(min2_), \
794 x, y)
795
796
797
798
799
800
801
802
803
804
805
806#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
807
808
809
810
811
812
813
814
815
816
817
818
819#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
820
821
822
823
824
825#define swap(a, b) \
826 do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)
827
828
829
830
831
832
833
834
835#define container_of(ptr, type, member) ({ \
836 const typeof( ((type *)0)->member ) *__mptr = (ptr); \
837 (type *)( (char *)__mptr - offsetof(type,member) );})
838
839
840#ifdef CONFIG_FTRACE_MCOUNT_RECORD
841# define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
842#endif
843
844
845#define VERIFY_OCTAL_PERMISSIONS(perms) \
846 (BUILD_BUG_ON_ZERO((perms) < 0) + \
847 BUILD_BUG_ON_ZERO((perms) > 0777) + \
848 \
849 BUILD_BUG_ON_ZERO((((perms) >> 6) & 4) < (((perms) >> 3) & 4)) + \
850 BUILD_BUG_ON_ZERO((((perms) >> 3) & 4) < ((perms) & 4)) + \
851 \
852 BUILD_BUG_ON_ZERO((((perms) >> 6) & 2) < (((perms) >> 3) & 2)) + \
853 \
854 BUILD_BUG_ON_ZERO((perms) & 2) + \
855 (perms))
856#endif
857