expose O_PATH if possible
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index d854474..344218c 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -1137,6 +1137,7 @@
           O_DIRECTORY
           O_NOFOLLOW
           O_NOATIME
+          O_PATH
 
    These constants are GNU extensions and not present if they are not defined by
    the C library.
diff --git a/Misc/NEWS b/Misc/NEWS
index a2068b1..ddb39d4 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -277,6 +277,8 @@
 Library
 -------
 
+- Expose the O_PATH constant in the os module if it is available.
+
 - Issue #17368: Fix an off-by-one error in the Python JSON decoder that caused
   a failure while decoding empty object literals when object_pairs_hook was
   specified.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 0586da3..3ddeef4 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -10858,6 +10858,9 @@
 #ifdef O_SEARCH
     if (ins(d, "O_SEARCH", (long)O_SEARCH)) return -1;
 #endif
+#ifdef O_PATH
+    if (ins(d, "O_PATH", (long)O_PATH)) return -1;
+#endif
 #ifdef O_TTY_INIT
     if (ins(d, "O_TTY_INIT", (long)O_TTY_INIT)) return -1;
 #endif