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