diff mbox series

[2/6] syscalls/fanotify14: Add tests for FAN_REPORT_TARGET_FID and FAN_RENAME

Message ID 20220414145357.3184012-3-amir73il@gmail.com
State Accepted
Headers show
Series Fanotify tests for v5.17 features | expand

Commit Message

Amir Goldstein April 14, 2022, 2:53 p.m. UTC
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(+)
diff mbox series

Patch

diff --git a/testcases/kernel/syscalls/fanotify/fanotify.h b/testcases/kernel/syscalls/fanotify/fanotify.h
index b2855d292..eb690e332 100644
--- a/testcases/kernel/syscalls/fanotify/fanotify.h
+++ b/testcases/kernel/syscalls/fanotify/fanotify.h
@@ -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;
diff --git a/testcases/kernel/syscalls/fanotify/fanotify14.c b/testcases/kernel/syscalls/fanotify/fanotify14.c
index 1944bcbb4..5d74b9b91 100644
--- a/testcases/kernel/syscalls/fanotify/fanotify14.c
+++ b/testcases/kernel/syscalls/fanotify/fanotify14.c
@@ -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)