@@ -81,6 +81,11 @@ static inline int safe_fanotify_mark(const char *file, const int lineno,
#ifndef FAN_REPORT_PIDFD
#define FAN_REPORT_PIDFD 0x00000080
#endif
+#ifndef FAN_REPORT_TARGET_FID
+#define FAN_REPORT_TARGET_FID 0x00001000
+#define FAN_REPORT_DFID_NAME_TARGET (FAN_REPORT_DFID_NAME | \
+ FAN_REPORT_FID | FAN_REPORT_TARGET_FID)
+#endif
/* Non-uapi convenience macros */
#ifndef FAN_REPORT_DFID_NAME_FID
@@ -130,6 +135,9 @@ static inline int safe_fanotify_mark(const char *file, const int lineno,
#ifndef FAN_FS_ERROR
#define FAN_FS_ERROR 0x00008000
#endif
+#ifndef FAN_RENAME
+#define FAN_RENAME 0x10000000
+#endif
/* Additional error status codes that can be returned to userspace */
#ifndef FAN_NOPIDFD
@@ -185,6 +193,13 @@ typedef struct {
#define FAN_EVENT_INFO_TYPE_ERROR 5
#endif
+#ifndef FAN_EVENT_INFO_TYPE_OLD_DFID_NAME
+#define FAN_EVENT_INFO_TYPE_OLD_DFID_NAME 10
+#endif
+#ifndef FAN_EVENT_INFO_TYPE_NEW_DFID_NAME
+#define FAN_EVENT_INFO_TYPE_NEW_DFID_NAME 12
+#endif
+
#ifndef HAVE_STRUCT_FANOTIFY_EVENT_INFO_HEADER
struct fanotify_event_info_header {
uint8_t info_type;
@@ -62,6 +62,18 @@ static struct test_case_t {
/* FAN_REPORT_NAME without FAN_REPORT_DIR_FID is not valid */
FAN_CLASS_NOTIF | FAN_REPORT_FID | FAN_REPORT_NAME, 0, 0
},
+ {
+ /* FAN_REPORT_TARGET_FID without FAN_REPORT_FID is not valid */
+ FAN_CLASS_NOTIF | FAN_REPORT_TARGET_FID | FAN_REPORT_DFID_NAME, 0, 0
+ },
+ {
+ /* FAN_REPORT_TARGET_FID without FAN_REPORT_NAME is not valid */
+ FAN_CLASS_NOTIF | FAN_REPORT_TARGET_FID | FAN_REPORT_DFID_FID, 0, 0
+ },
+ {
+ /* FAN_RENAME without FAN_REPORT_NAME is not valid */
+ FAN_CLASS_NOTIF | FAN_REPORT_DFID_FID, 0, FAN_RENAME
+ },
};
static void do_test(unsigned int number)
Validate flag combinations: 1) FAN_REPORT_TARGET_FID requires FAN_REPORT_NAME and FAN_REPORT_FID 2) FAN_RENAME requires FAN_REPORT_NAME Signed-off-by: Amir Goldstein <amir73il@gmail.com> --- testcases/kernel/syscalls/fanotify/fanotify.h | 15 +++++++++++++++ testcases/kernel/syscalls/fanotify/fanotify14.c | 12 ++++++++++++ 2 files changed, 27 insertions(+)