1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _LINUX_FS_STRUCT_H 3*4882a593Smuzhiyun #define _LINUX_FS_STRUCT_H 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <linux/path.h> 6*4882a593Smuzhiyun #include <linux/spinlock.h> 7*4882a593Smuzhiyun #include <linux/seqlock.h> 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun struct fs_struct { 10*4882a593Smuzhiyun int users; 11*4882a593Smuzhiyun spinlock_t lock; 12*4882a593Smuzhiyun seqcount_spinlock_t seq; 13*4882a593Smuzhiyun int umask; 14*4882a593Smuzhiyun int in_exec; 15*4882a593Smuzhiyun struct path root, pwd; 16*4882a593Smuzhiyun } __randomize_layout; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun extern struct kmem_cache *fs_cachep; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun extern void exit_fs(struct task_struct *); 21*4882a593Smuzhiyun extern void set_fs_root(struct fs_struct *, const struct path *); 22*4882a593Smuzhiyun extern void set_fs_pwd(struct fs_struct *, const struct path *); 23*4882a593Smuzhiyun extern struct fs_struct *copy_fs_struct(struct fs_struct *); 24*4882a593Smuzhiyun extern void free_fs_struct(struct fs_struct *); 25*4882a593Smuzhiyun extern int unshare_fs_struct(void); 26*4882a593Smuzhiyun get_fs_root(struct fs_struct * fs,struct path * root)27*4882a593Smuzhiyunstatic inline void get_fs_root(struct fs_struct *fs, struct path *root) 28*4882a593Smuzhiyun { 29*4882a593Smuzhiyun spin_lock(&fs->lock); 30*4882a593Smuzhiyun *root = fs->root; 31*4882a593Smuzhiyun path_get(root); 32*4882a593Smuzhiyun spin_unlock(&fs->lock); 33*4882a593Smuzhiyun } 34*4882a593Smuzhiyun get_fs_pwd(struct fs_struct * fs,struct path * pwd)35*4882a593Smuzhiyunstatic inline void get_fs_pwd(struct fs_struct *fs, struct path *pwd) 36*4882a593Smuzhiyun { 37*4882a593Smuzhiyun spin_lock(&fs->lock); 38*4882a593Smuzhiyun *pwd = fs->pwd; 39*4882a593Smuzhiyun path_get(pwd); 40*4882a593Smuzhiyun spin_unlock(&fs->lock); 41*4882a593Smuzhiyun } 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun extern bool current_chrooted(void); 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #endif /* _LINUX_FS_STRUCT_H */ 46