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>pull/1354/merge
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…
Reference in New Issue