1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_SCHED_COREDUMP_H
3#define _LINUX_SCHED_COREDUMP_H
4
5#include <linux/mm_types.h>
6
7#define SUID_DUMP_DISABLE 0 /* No setuid dumping */
8#define SUID_DUMP_USER 1 /* Dump as user of process */
9#define SUID_DUMP_ROOT 2 /* Dump as root */
10
11static inline unsigned long __mm_flags_get_dumpable(struct mm_struct *mm)
12{
13 /*
14 * By convention, dumpable bits are contained in first 32 bits of the
15 * bitmap, so we can simply access this first unsigned long directly.
16 */
17 return __mm_flags_get_word(mm);
18}
19
20static inline void __mm_flags_set_mask_dumpable(struct mm_struct *mm, int value)
21{
22 __mm_flags_set_mask_bits_word(mm, MMF_DUMPABLE_MASK, bits: value);
23}
24
25extern void set_dumpable(struct mm_struct *mm, int value);
26/*
27 * This returns the actual value of the suid_dumpable flag. For things
28 * that are using this for checking for privilege transitions, it must
29 * test against SUID_DUMP_USER rather than treating it as a boolean
30 * value.
31 */
32static inline int __get_dumpable(unsigned long mm_flags)
33{
34 return mm_flags & MMF_DUMPABLE_MASK;
35}
36
37static inline int get_dumpable(struct mm_struct *mm)
38{
39 unsigned long flags = __mm_flags_get_dumpable(mm);
40
41 return __get_dumpable(mm_flags: flags);
42}
43
44#endif /* _LINUX_SCHED_COREDUMP_H */
45