@@ -2931,7 +2931,7 @@ static int io_openat_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
2931
2931
2932
2932
if (sqe -> ioprio || sqe -> buf_index )
2933
2933
return - EINVAL ;
2934
- if (sqe -> flags & IOSQE_FIXED_FILE )
2934
+ if (req -> flags & REQ_F_FIXED_FILE )
2935
2935
return - EBADF ;
2936
2936
if (req -> flags & REQ_F_NEED_CLEANUP )
2937
2937
return 0 ;
@@ -2964,7 +2964,7 @@ static int io_openat2_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
2964
2964
2965
2965
if (sqe -> ioprio || sqe -> buf_index )
2966
2966
return - EINVAL ;
2967
- if (sqe -> flags & IOSQE_FIXED_FILE )
2967
+ if (req -> flags & REQ_F_FIXED_FILE )
2968
2968
return - EBADF ;
2969
2969
if (req -> flags & REQ_F_NEED_CLEANUP )
2970
2970
return 0 ;
@@ -3318,7 +3318,7 @@ static int io_statx_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
3318
3318
3319
3319
if (sqe -> ioprio || sqe -> buf_index )
3320
3320
return - EINVAL ;
3321
- if (sqe -> flags & IOSQE_FIXED_FILE )
3321
+ if (req -> flags & REQ_F_FIXED_FILE )
3322
3322
return - EBADF ;
3323
3323
if (req -> flags & REQ_F_NEED_CLEANUP )
3324
3324
return 0 ;
@@ -3395,7 +3395,7 @@ static int io_close_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
3395
3395
if (sqe -> ioprio || sqe -> off || sqe -> addr || sqe -> len ||
3396
3396
sqe -> rw_flags || sqe -> buf_index )
3397
3397
return - EINVAL ;
3398
- if (sqe -> flags & IOSQE_FIXED_FILE )
3398
+ if (req -> flags & REQ_F_FIXED_FILE )
3399
3399
return - EBADF ;
3400
3400
3401
3401
req -> close .fd = READ_ONCE (sqe -> fd );
@@ -5366,15 +5366,10 @@ static int io_file_get(struct io_submit_state *state, struct io_kiocb *req,
5366
5366
}
5367
5367
5368
5368
static int io_req_set_file (struct io_submit_state * state , struct io_kiocb * req ,
5369
- const struct io_uring_sqe * sqe )
5369
+ int fd , unsigned int flags )
5370
5370
{
5371
- unsigned flags ;
5372
- int fd ;
5373
5371
bool fixed ;
5374
5372
5375
- flags = READ_ONCE (sqe -> flags );
5376
- fd = READ_ONCE (sqe -> fd );
5377
-
5378
5373
if (!io_req_needs_file (req , fd ))
5379
5374
return 0 ;
5380
5375
@@ -5616,7 +5611,7 @@ static bool io_submit_sqe(struct io_kiocb *req, const struct io_uring_sqe *sqe,
5616
5611
{
5617
5612
struct io_ring_ctx * ctx = req -> ctx ;
5618
5613
unsigned int sqe_flags ;
5619
- int ret , id ;
5614
+ int ret , id , fd ;
5620
5615
5621
5616
sqe_flags = READ_ONCE (sqe -> flags );
5622
5617
@@ -5647,7 +5642,8 @@ static bool io_submit_sqe(struct io_kiocb *req, const struct io_uring_sqe *sqe,
5647
5642
IOSQE_ASYNC | IOSQE_FIXED_FILE |
5648
5643
IOSQE_BUFFER_SELECT );
5649
5644
5650
- ret = io_req_set_file (state , req , sqe );
5645
+ fd = READ_ONCE (sqe -> fd );
5646
+ ret = io_req_set_file (state , req , fd , sqe_flags );
5651
5647
if (unlikely (ret )) {
5652
5648
err_req :
5653
5649
io_cqring_add_event (req , ret );
0 commit comments