mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-12 01:20:14 +00:00
io_uring/zcrx: move area reg checks into io_import_area
io_import_area() is responsible for importing memory and parsing io_uring_zcrx_area_reg, so move all area reg structure checks into the function. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
d425f13146
commit
01464ea405
@ -26,6 +26,8 @@
|
||||
#include "zcrx.h"
|
||||
#include "rsrc.h"
|
||||
|
||||
#define IO_ZCRX_AREA_SUPPORTED_FLAGS (IORING_ZCRX_AREA_DMABUF)
|
||||
|
||||
#define IO_DMA_ATTR (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_WEAK_ORDERING)
|
||||
|
||||
static inline struct io_zcrx_ifq *io_pp_to_ifq(struct page_pool *pp)
|
||||
@ -231,6 +233,13 @@ static int io_import_area(struct io_zcrx_ifq *ifq,
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (area_reg->flags & ~IO_ZCRX_AREA_SUPPORTED_FLAGS)
|
||||
return -EINVAL;
|
||||
if (area_reg->rq_area_token)
|
||||
return -EINVAL;
|
||||
if (area_reg->__resv2[0] || area_reg->__resv2[1])
|
||||
return -EINVAL;
|
||||
|
||||
ret = io_validate_user_buf_range(area_reg->addr, area_reg->len);
|
||||
if (ret)
|
||||
return ret;
|
||||
@ -395,8 +404,6 @@ static void io_zcrx_free_area(struct io_zcrx_area *area)
|
||||
kfree(area);
|
||||
}
|
||||
|
||||
#define IO_ZCRX_AREA_SUPPORTED_FLAGS (IORING_ZCRX_AREA_DMABUF)
|
||||
|
||||
static int io_zcrx_append_area(struct io_zcrx_ifq *ifq,
|
||||
struct io_zcrx_area *area)
|
||||
{
|
||||
@ -413,13 +420,6 @@ static int io_zcrx_create_area(struct io_zcrx_ifq *ifq,
|
||||
unsigned nr_iovs;
|
||||
int i, ret;
|
||||
|
||||
if (area_reg->flags & ~IO_ZCRX_AREA_SUPPORTED_FLAGS)
|
||||
return -EINVAL;
|
||||
if (area_reg->rq_area_token)
|
||||
return -EINVAL;
|
||||
if (area_reg->__resv2[0] || area_reg->__resv2[1])
|
||||
return -EINVAL;
|
||||
|
||||
ret = -ENOMEM;
|
||||
area = kzalloc(sizeof(*area), GFP_KERNEL);
|
||||
if (!area)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user