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

inotify.h (1860B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#include <linux/fsnotify_backend.h>
      3#include <linux/inotify.h>
      4#include <linux/slab.h> /* struct kmem_cache */
      5
      6struct inotify_event_info {
      7	struct fsnotify_event fse;
      8	u32 mask;
      9	int wd;
     10	u32 sync_cookie;
     11	int name_len;
     12	char name[];
     13};
     14
     15struct inotify_inode_mark {
     16	struct fsnotify_mark fsn_mark;
     17	int wd;
     18};
     19
     20static inline struct inotify_event_info *INOTIFY_E(struct fsnotify_event *fse)
     21{
     22	return container_of(fse, struct inotify_event_info, fse);
     23}
     24
     25/*
     26 * INOTIFY_USER_FLAGS represents all of the mask bits that we expose to
     27 * userspace.  There is at least one bit (FS_EVENT_ON_CHILD) which is
     28 * used only internally to the kernel.
     29 */
     30#define INOTIFY_USER_MASK (IN_ALL_EVENTS)
     31
     32static inline __u32 inotify_mark_user_mask(struct fsnotify_mark *fsn_mark)
     33{
     34	__u32 mask = fsn_mark->mask & INOTIFY_USER_MASK;
     35
     36	if (fsn_mark->flags & FSNOTIFY_MARK_FLAG_EXCL_UNLINK)
     37		mask |= IN_EXCL_UNLINK;
     38	if (fsn_mark->flags & FSNOTIFY_MARK_FLAG_IN_ONESHOT)
     39		mask |= IN_ONESHOT;
     40
     41	return mask;
     42}
     43
     44extern void inotify_ignored_and_remove_idr(struct fsnotify_mark *fsn_mark,
     45					   struct fsnotify_group *group);
     46extern int inotify_handle_inode_event(struct fsnotify_mark *inode_mark,
     47				      u32 mask, struct inode *inode,
     48				      struct inode *dir,
     49				      const struct qstr *name, u32 cookie);
     50
     51extern const struct fsnotify_ops inotify_fsnotify_ops;
     52extern struct kmem_cache *inotify_inode_mark_cachep;
     53
     54#ifdef CONFIG_INOTIFY_USER
     55static inline void dec_inotify_instances(struct ucounts *ucounts)
     56{
     57	dec_ucount(ucounts, UCOUNT_INOTIFY_INSTANCES);
     58}
     59
     60static inline struct ucounts *inc_inotify_watches(struct ucounts *ucounts)
     61{
     62	return inc_ucount(ucounts->ns, ucounts->uid, UCOUNT_INOTIFY_WATCHES);
     63}
     64
     65static inline void dec_inotify_watches(struct ucounts *ucounts)
     66{
     67	dec_ucount(ucounts, UCOUNT_INOTIFY_WATCHES);
     68}
     69#endif