On 11/26/20 1:36 PM, Alejandro Colomar (man-pages) wrote: > Hi Mathias & Michael, > > Please, see a fix below. Thanks, Alex. Fixed! Cheers, Michael > Cheers, > > Alex > > On 11/26/20 11:00 AM, Michael Kerrisk (man-pages) wrote: >> On 11/25/20 2:27 PM, Mathias Rav wrote: >>> Linux kernel commit aae8a97d3ec30788790d1720b71d76fd8eb44b73 >>> (part of kernel release v2.6.39) added a check to disallow creating a >>> hardlink to an unlinked file. >>> >>> Signed-off-by: Mathias Rav <m@xxxxxxxxxxxxx> >> >> Thanks, Matthias. Patch applied. >> >>> --- >>> The manual page already describes the trick of using AT_SYMLINK_FOLLOW >>> as an alternative to AT_EMPTY_PATH, and for AT_EMPTY_PATH the manual >>> page already notes that it "will generally not work if the file has a >>> link count of zero". However, the precise error (ENOENT) is not mentioned, >>> and the error case isn't mentioned in the ERRORS section at all. >>> >>> This makes it easy to overlook the fact that the AT_SYMLINK_FOLLOW >>> trick on /proc/self/fd/NN won't work on deleted files, as evidenced by >>> the follow message (which turns up when googling "linkat deleted ENOENT"): >>> https://groups.google.com/g/linux.kernel/c/zZO4lqqwp64 >> >> I think the above piece is actually worth including in the >> commit message, so I added it. >> >> Thanks, >> >> Michael >> >>> man2/link.2 | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/man2/link.2 b/man2/link.2 >>> index 1e7b2efd8..202119c6e 100644 >>> --- a/man2/link.2 >>> +++ b/man2/link.2 >>> @@ -318,6 +318,10 @@ open(path, O_TMPFILE | O_EXCL, mode); >>> .IP >>> See >>> .BR open (2). > > +.TP > >>> +.B ENOENT >>> +An attempt was made to link to a >>> +.I /proc/self/fd/NN >>> +file corresponding to a file that has been deleted. >>> .TP >>> .B ENOENT >>> .I oldpath >>> >> >> -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/