Message ID | 20240716173702.1505620-6-adhemerval.zanella@linaro.org |
---|---|
State | Accepted |
Commit | 28f8cee64a3223636d15c78f69432503d8ef1c22 |
Headers | show |
Series | Updates for Linux 6.10 | expand |
On Tue, Jul 16, 2024 at 1:37 PM Adhemerval Zanella < adhemerval.zanella@linaro.org> wrote: > It was added by commit c62b758bae6af16 as a way for userspace to > check if two file descriptors refer o the same struct file. > There are a few places where this is needed too right ? I recall some posix_spawn codepath using numeric comparison for the job..
On 16/07/24 14:52, Cristian Rodríguez wrote: > > > On Tue, Jul 16, 2024 at 1:37 PM Adhemerval Zanella <adhemerval.zanella@linaro.org <mailto:adhemerval.zanella@linaro.org>> wrote: > > It was added by commit c62b758bae6af16 as a way for userspace to > check if two file descriptors refer o the same struct file. > > > There are a few places where this is needed too right ? I recall some posix_spawn codepath using numeric comparison for the job.. > I am not sure if it applied to posix_spawn_file_actions_adddup2, as per Austin group issue #411 [1]. My understanding is the file descriptor equality is for the input argument, since the dup operation will be issue anyway (but I might be missing something here). But I think might we have some internal usage where the code check for same inode using stat, similar to the systemd example [2] that the kernel commit references: * get_current_dir_name * on ldconfig create_links * on getttyname_r fallback. [1] https://www.austingroupbugs.net/view.php?id=411 [2] https://github.com/systemd/systemd/blob/a4f0e0da3573a10bc5404142be8799418760b1d1/src/basic/fd-util.c#L517
* Adhemerval Zanella Netto: > On 16/07/24 14:52, Cristian Rodríguez wrote: >> >> >> On Tue, Jul 16, 2024 at 1:37 PM Adhemerval Zanella <adhemerval.zanella@linaro.org <mailto:adhemerval.zanella@linaro.org>> wrote: >> >> It was added by commit c62b758bae6af16 as a way for userspace to >> check if two file descriptors refer o the same struct file. >> >> >> There are a few places where this is needed too right ? I recall some posix_spawn codepath using numeric comparison for the job.. >> > > I am not sure if it applied to posix_spawn_file_actions_adddup2, as per Austin > group issue #411 [1]. My understanding is the file descriptor equality is for > the input argument, since the dup operation will be issue anyway (but I might > be missing something here). > > But I think might we have some internal usage where the code check for same > inode using stat, similar to the systemd example [2] that the kernel commit > references: > > * get_current_dir_name > * on ldconfig create_links > * on getttyname_r fallback. > > [1] https://www.austingroupbugs.net/view.php?id=411 > [2] https://github.com/systemd/systemd/blob/a4f0e0da3573a10bc5404142be8799418760b1d1/src/basic/fd-util.c#L517 I thin “struct file” means “file description”. These checks above need to check for the same inode. I started a thread about this today: Testing if two open descriptors refer to the same inode <https://lore.kernel.org/linux-fsdevel/874j88sn4d.fsf@oldenburg.str.redhat.com/> Thanks, Florian
* Adhemerval Zanella: > It was added by commit c62b758bae6af16 as a way for userspace to > check if two file descriptors refer o the same struct file. Typo: [t]o Okay with that change. Reviewed-by: Florian Weimer <fweimer@redhat.com> Florian
diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h index 628612b885..61c100d984 100644 --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h @@ -200,6 +200,7 @@ # define F_SETLEASE 1024 /* Set a lease. */ # define F_GETLEASE 1025 /* Enquire what lease is active. */ # define F_NOTIFY 1026 /* Request notifications on a directory. */ +# define F_DUPFD_QUERY 1027 /* Compare two file descriptors for sameness. */ # define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ # define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ # define F_ADD_SEALS 1033 /* Add seals to file. */