diff --git a/libc/bionic/mkfifo.cpp b/libc/bionic/mkfifo.cpp
index 08ffad1..a98b350 100644
--- a/libc/bionic/mkfifo.cpp
+++ b/libc/bionic/mkfifo.cpp
@@ -28,6 +28,12 @@
 
 #include <sys/stat.h>
 
+#include <fcntl.h>
+
 int mkfifo(const char* path, mode_t mode) {
-  return mknod(path, (mode & ~S_IFMT) | S_IFIFO, 0);
+  return mkfifoat(AT_FDCWD, path, mode);
+}
+
+int mkfifoat(int fd, const char* path, mode_t mode) {
+  return mknodat(fd, path, (mode & ~S_IFMT) | S_IFIFO, 0);
 }
diff --git a/libc/include/sys/stat.h b/libc/include/sys/stat.h
index 77d7cac..4900e84 100644
--- a/libc/include/sys/stat.h
+++ b/libc/include/sys/stat.h
@@ -181,6 +181,7 @@
 #endif /* defined(__BIONIC_FORTIFY) */
 
 extern int mkfifo(const char*, mode_t);
+extern int mkfifoat(int, const char*, mode_t);
 
 extern int fchmodat(int, const char*, mode_t, int);
 extern int mkdirat(int, const char*, mode_t);
diff --git a/tests/sys_stat_test.cpp b/tests/sys_stat_test.cpp
index 64049ab..e465774 100644
--- a/tests/sys_stat_test.cpp
+++ b/tests/sys_stat_test.cpp
@@ -55,6 +55,18 @@
   ASSERT_EQ(EBADF, errno);
 }
 
+TEST(sys_stat, mkfifo_failure) {
+  errno = 0;
+  ASSERT_EQ(-1, mkfifo("/", 0666));
+  ASSERT_EQ(EEXIST, errno);
+}
+
+TEST(sys_stat, mkfifoat_failure) {
+  errno = 0;
+  ASSERT_EQ(-1, mkfifoat(-2, "x", 0666));
+  ASSERT_EQ(EBADF, errno);
+}
+
 TEST(sys_stat, mkfifo) {
   if (getuid() == 0) {
     // Racy but probably sufficient way to get a suitable filename.
@@ -70,6 +82,7 @@
     ASSERT_TRUE(S_ISFIFO(sb.st_mode));
     unlink(path.c_str());
   } else {
+    // SELinux policy forbids us from creating FIFOs. http://b/17646702.
     GTEST_LOG_(INFO) << "This test only performs a test when run as root.";
   }
 }
