Skip to content
This repository has been archived by the owner on Apr 21, 2021. It is now read-only.

Commit

Permalink
io_uring: rewrite methods and add missing structs
Browse files Browse the repository at this point in the history
  • Loading branch information
Javinator9889 committed Feb 8, 2021
1 parent 484ebaf commit 4ee4fa2
Showing 1 changed file with 27 additions and 27 deletions.
54 changes: 27 additions & 27 deletions fs/io_uring.c
Expand Up @@ -9299,55 +9299,55 @@ static int io_allocate_scq_urings(struct io_ring_ctx *ctx,
return 0;
}

static int io_uring_install_fd(struct io_ring_ctx *ctx, struct file *file)
{
int ret, fd;

fd = get_unused_fd_flags(O_RDWR | O_CLOEXEC);
if (fd < 0)
return fd;

ret = io_uring_add_task_file(ctx, file);
if (ret) {
put_unused_fd(fd);
return ret;
}
fd_install(fd, file);
return fd;
}

/*
* Allocate an anonymous fd, this is what constitutes the application
* visible backing of an io_uring instance. The application mmaps this
* fd to gain access to the SQ/CQ ring details. If UNIX sockets are enabled,
* we have to tie this fd to a socket for file garbage collection purposes.
*/
static int io_uring_get_fd(struct io_ring_ctx *ctx)
static struct file *io_uring_get_file(struct io_ring_ctx *ctx)
{
struct file *file;
#if defined(CONFIG_UNIX)
int ret;
int fd;

#if defined(CONFIG_UNIX)
ret = sock_create_kern(&init_net, PF_UNIX, SOCK_RAW, IPPROTO_IP,
&ctx->ring_sock);
if (ret)
return ret;
return ERR_PTR(err);
#endif

ret = get_unused_fd_flags(O_RDWR | O_CLOEXEC);
if (ret < 0)
goto err;
fd = ret;

file = anon_inode_getfile("[io_uring]", &io_uring_fops, ctx,
O_RDWR | O_CLOEXEC);
if (IS_ERR(file)) {
put_unused_fd(fd);
ret = PTR_ERR(file);
goto err;
}
O_RDWR | O_CLOEXEC);

#if defined(CONFIG_UNIX)
ctx->ring_sock->file = file;
#endif
ret = io_uring_add_task_file(ctx, file);
if (ret) {
fput(file);
put_unused_fd(fd);
goto err;
if (IS_ERR(file)) {
sock_release(ctx->ring_sock);
ctx->ring_sock = NULL;
} else {
ctx->ring_sock->file = file;
}
fd_install(fd, file);
return fd;
err:
#if defined(CONFIG_UNIX)
sock_release(ctx->ring_sock);
ctx->ring_sock = NULL;
#endif
return ret;
return file;
}

static int io_uring_create(unsigned entries, struct io_uring_params *p,
Expand Down

0 comments on commit 4ee4fa2

Please sign in to comment.