#include <linux/fsnotify_backend.h> #include <linux/path.h> #include <linux/slab.h> extern struct kmem_cache *fanotify_event_cachep; /* * Lifetime of the structure differs for normal and permission events. In both * cases the structure is allocated in fanotify_handle_event(). For normal * events the structure is freed immediately after reporting it to userspace. * For permission events we free it only after we receive response from * userspace. */ struct fanotify_event_info { struct fsnotify_event fse; /* * We hold ref to this path so it may be dereferenced at any point * during this object's lifetime */ struct path path; struct pid *tgid; #ifdef CONFIG_FANOTIFY_ACCESS_PERMISSIONS u32 response; /* userspace answer to question */ #endif }; static inline struct fanotify_event_info *FANOTIFY_E(struct fsnotify_event *fse) { return container_of(fse, struct fanotify_event_info, fse); }