timerfd: convert timerfd_create() to FD_ADD()
Link: https://patch.msgid.link/20251123-work-fd-prepare-v4-15-b6efa1706cfd@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>pull/1354/merge
parent
5b755da105
commit
14010faa1b
29
fs/timerfd.c
29
fs/timerfd.c
|
|
@ -393,9 +393,8 @@ static const struct file_operations timerfd_fops = {
|
||||||
|
|
||||||
SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
||||||
{
|
{
|
||||||
int ufd;
|
struct timerfd_ctx *ctx __free(kfree) = NULL;
|
||||||
struct timerfd_ctx *ctx;
|
int ret;
|
||||||
struct file *file;
|
|
||||||
|
|
||||||
/* Check the TFD_* constants for consistency. */
|
/* Check the TFD_* constants for consistency. */
|
||||||
BUILD_BUG_ON(TFD_CLOEXEC != O_CLOEXEC);
|
BUILD_BUG_ON(TFD_CLOEXEC != O_CLOEXEC);
|
||||||
|
|
@ -432,23 +431,13 @@ SYSCALL_DEFINE2(timerfd_create, int, clockid, int, flags)
|
||||||
|
|
||||||
ctx->moffs = ktime_mono_to_real(0);
|
ctx->moffs = ktime_mono_to_real(0);
|
||||||
|
|
||||||
ufd = get_unused_fd_flags(flags & TFD_SHARED_FCNTL_FLAGS);
|
ret = FD_ADD(flags & TFD_SHARED_FCNTL_FLAGS,
|
||||||
if (ufd < 0) {
|
anon_inode_getfile_fmode("[timerfd]", &timerfd_fops, ctx,
|
||||||
kfree(ctx);
|
O_RDWR | (flags & TFD_SHARED_FCNTL_FLAGS),
|
||||||
return ufd;
|
FMODE_NOWAIT));
|
||||||
}
|
if (ret >= 0)
|
||||||
|
retain_and_null_ptr(ctx);
|
||||||
file = anon_inode_getfile_fmode("[timerfd]", &timerfd_fops, ctx,
|
return ret;
|
||||||
O_RDWR | (flags & TFD_SHARED_FCNTL_FLAGS),
|
|
||||||
FMODE_NOWAIT);
|
|
||||||
if (IS_ERR(file)) {
|
|
||||||
put_unused_fd(ufd);
|
|
||||||
kfree(ctx);
|
|
||||||
return PTR_ERR(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
fd_install(ufd, file);
|
|
||||||
return ufd;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_timerfd_settime(int ufd, int flags,
|
static int do_timerfd_settime(int ufd, int flags,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue