Just a happy path test.

Signed-off-by: Dorjoy Chowdhury <[email protected]>
---
 .../testing/selftests/openat2/openat2_test.c  | 37 ++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/openat2/openat2_test.c 
b/tools/testing/selftests/openat2/openat2_test.c
index 0e161ef9e9e4..e8847f7d416c 100644
--- a/tools/testing/selftests/openat2/openat2_test.c
+++ b/tools/testing/selftests/openat2/openat2_test.c
@@ -320,8 +320,42 @@ void test_openat2_flags(void)
        }
 }
 
+#ifndef OPENAT2_REGULAR
+#define OPENAT2_REGULAR 040000000
+#endif
+
+#ifndef EFTYPE
+#define EFTYPE 134
+#endif
+
+void test_openat2_regular_flag(void)
+{
+       if (!openat2_supported) {
+               ksft_test_result_skip("Skipping %s as openat2 is not 
supported\n", __func__);
+               return;
+       }
+
+       struct open_how how = {
+               .flags = OPENAT2_REGULAR | O_RDONLY
+       };
+
+       int fd = sys_openat2(AT_FDCWD, "/dev/null", &how);
+
+       if (fd == -ENOENT) {
+               ksft_test_result_skip("Skipping %s as there is no /dev/null\n", 
__func__);
+               return;
+       }
+
+       if (fd != -EFTYPE) {
+               ksft_test_result_fail("openat2 should return EFTYPE\n");
+               return;
+       }
+
+       ksft_test_result_pass("%s succeeded\n", __func__);
+}
+
 #define NUM_TESTS (NUM_OPENAT2_STRUCT_VARIATIONS * NUM_OPENAT2_STRUCT_TESTS + \
-                  NUM_OPENAT2_FLAG_TESTS)
+                  NUM_OPENAT2_FLAG_TESTS + 1)
 
 int main(int argc, char **argv)
 {
@@ -330,6 +364,7 @@ int main(int argc, char **argv)
 
        test_openat2_struct();
        test_openat2_flags();
+       test_openat2_regular_flag();
 
        if (ksft_get_fail_cnt() + ksft_get_error_cnt() > 0)
                ksft_exit_fail();
-- 
2.53.0


Reply via email to