https://bugzilla.kernel.org/show_bug.cgi?id=73301 Bug ID: 73301 Summary: Documentation misses case of symlink, symlinkat giving ENOENT for a directory with a reference only held by a process Product: Documentation Version: unspecified Hardware: All OS: Linux Status: NEW Severity: low Priority: P1 Component: man-pages Assignee: documentation_man-pages@xxxxxxxxxxxxxxxxxxxx Reporter: sstewartgallus00@xxxxxxxxxxxxxxx Regression: No The errors printed out by the following code on symlink and symlinkat are missed by the documentation. #include <fcntl.h> #include <stdio.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> int main() { if (-1 == mkdir("/tmp/temporary", S_IRWXU)) { perror("mkdir"); } int dir = open("/tmp/temporary", O_RDONLY | O_CLOEXEC); if (-1 == dir) { perror("open"); } if (-1 == rmdir("/tmp/temporary")) { perror("rmdir"); } if (-1 == symlinkat("/", dir, "root")) { perror("symlinkat"); } char template_text[] = "/proc/self/fd/XXXXXXXXXXX/root"; sprintf(template_text, "/proc/self/fd/%i/root", dir); if (-1 == symlink("/", template_text)) { perror("symlink"); } return 0; } The calls to symlink and symlinkat in this case give ENOENT errors. This might also be a small oversight which is probably impossible to change now. I wonder if the code thinks this is a dangling symbolic link (a case which is mentioned by the documentation)? The POSIX standard issue 7 also seems to miss this corner case (although it might simply be an omission of mentioning a system dependant case rather than a bug for the POSIX standard). I'm not sure how exactly one would explain this corner case in the documentation. -- You are receiving this mail because: You are watching the assignee of the bug. -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html