cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

pnode.h (1997B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  linux/fs/pnode.h
      4 *
      5 * (C) Copyright IBM Corporation 2005.
      6 */
      7#ifndef _LINUX_PNODE_H
      8#define _LINUX_PNODE_H
      9
     10#include <linux/list.h>
     11#include "mount.h"
     12
     13#define IS_MNT_SHARED(m) ((m)->mnt.mnt_flags & MNT_SHARED)
     14#define IS_MNT_SLAVE(m) ((m)->mnt_master)
     15#define IS_MNT_NEW(m)  (!(m)->mnt_ns || is_anon_ns((m)->mnt_ns))
     16#define CLEAR_MNT_SHARED(m) ((m)->mnt.mnt_flags &= ~MNT_SHARED)
     17#define IS_MNT_UNBINDABLE(m) ((m)->mnt.mnt_flags & MNT_UNBINDABLE)
     18#define IS_MNT_MARKED(m) ((m)->mnt.mnt_flags & MNT_MARKED)
     19#define SET_MNT_MARK(m) ((m)->mnt.mnt_flags |= MNT_MARKED)
     20#define CLEAR_MNT_MARK(m) ((m)->mnt.mnt_flags &= ~MNT_MARKED)
     21#define IS_MNT_LOCKED(m) ((m)->mnt.mnt_flags & MNT_LOCKED)
     22
     23#define CL_EXPIRE    		0x01
     24#define CL_SLAVE     		0x02
     25#define CL_COPY_UNBINDABLE	0x04
     26#define CL_MAKE_SHARED 		0x08
     27#define CL_PRIVATE 		0x10
     28#define CL_SHARED_TO_SLAVE	0x20
     29#define CL_COPY_MNT_NS_FILE	0x40
     30
     31#define CL_COPY_ALL		(CL_COPY_UNBINDABLE | CL_COPY_MNT_NS_FILE)
     32
     33static inline void set_mnt_shared(struct mount *mnt)
     34{
     35	mnt->mnt.mnt_flags &= ~MNT_SHARED_MASK;
     36	mnt->mnt.mnt_flags |= MNT_SHARED;
     37}
     38
     39void change_mnt_propagation(struct mount *, int);
     40int propagate_mnt(struct mount *, struct mountpoint *, struct mount *,
     41		struct hlist_head *);
     42int propagate_umount(struct list_head *);
     43int propagate_mount_busy(struct mount *, int);
     44void propagate_mount_unlock(struct mount *);
     45void mnt_release_group_id(struct mount *);
     46int get_dominating_id(struct mount *mnt, const struct path *root);
     47int mnt_get_count(struct mount *mnt);
     48void mnt_set_mountpoint(struct mount *, struct mountpoint *,
     49			struct mount *);
     50void mnt_change_mountpoint(struct mount *parent, struct mountpoint *mp,
     51			   struct mount *mnt);
     52struct mount *copy_tree(struct mount *, struct dentry *, int);
     53bool is_path_reachable(struct mount *, struct dentry *,
     54			 const struct path *root);
     55int count_mounts(struct mnt_namespace *ns, struct mount *mnt);
     56#endif /* _LINUX_PNODE_H */