summaryrefslogtreecommitdiff
path: root/io_uring
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2026-01-06 23:23:05 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2026-01-16 12:47:42 -0500
commit037193b0ae833c922881f0bf188b4ed49874e6c9 (patch)
tree2707e3c7065edbb3267d04146a7800d22279cf67 /io_uring
parente6d50234ccb9ff54addd579032a146aef52e7541 (diff)
non-consuming variant of do_linkat()
similar to previous commit; replacement is filename_linkat() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'io_uring')
-rw-r--r--io_uring/fs.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/io_uring/fs.c b/io_uring/fs.c
index e5829d112c9e..e39cd1ca1942 100644
--- a/io_uring/fs.c
+++ b/io_uring/fs.c
@@ -280,12 +280,13 @@ int io_linkat_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
int io_linkat(struct io_kiocb *req, unsigned int issue_flags)
{
struct io_link *lnk = io_kiocb_to_cmd(req, struct io_link);
+ CLASS(filename_complete_delayed, old)(&lnk->oldpath);
+ CLASS(filename_complete_delayed, new)(&lnk->newpath);
int ret;
WARN_ON_ONCE(issue_flags & IO_URING_F_NONBLOCK);
- ret = do_linkat(lnk->old_dfd, complete_getname(&lnk->oldpath),
- lnk->new_dfd, complete_getname(&lnk->newpath), lnk->flags);
+ ret = filename_linkat(lnk->old_dfd, old, lnk->new_dfd, new, lnk->flags);
req->flags &= ~REQ_F_NEED_CLEANUP;
io_req_set_res(req, ret, 0);