Re: [patch] link.2: ERRORS: add ENOENT when target is deleted

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux