Open can generate an EFAULT (errno = 14) if the const char* path is an invalid pointer (ie one that is not accessible). However, while the man-page lists numerous possible error codes open might generate, this one is missing.
I think you've missed something. EFAULT is listed in open(1): http://man7.org/linux/man-pages/man2/open.2.html#ERRORS