@@ -377,32 +377,16 @@ static int io_sendmsg_setup(struct io_kiocb *req, const struct io_uring_sqe *sqe
377
377
/* save msg_control as sys_sendmsg() overwrites it */
378
378
sr -> msg_control = kmsg -> msg .msg_control_user ;
379
379
380
+ if (sr -> flags & IORING_RECVSEND_FIXED_BUF ) {
381
+ kmsg -> msg .msg_iter .nr_segs = msg .msg_iovlen ;
382
+ return io_prep_reg_iovec (req , & kmsg -> vec , msg .msg_iov ,
383
+ msg .msg_iovlen );
384
+ }
380
385
if (req -> flags & REQ_F_BUFFER_SELECT )
381
386
return 0 ;
382
387
return io_net_import_vec (req , kmsg , msg .msg_iov , msg .msg_iovlen , ITER_SOURCE );
383
388
}
384
389
385
- static int io_sendmsg_zc_setup (struct io_kiocb * req , const struct io_uring_sqe * sqe )
386
- {
387
- struct io_sr_msg * sr = io_kiocb_to_cmd (req , struct io_sr_msg );
388
- struct io_async_msghdr * kmsg = req -> async_data ;
389
- struct user_msghdr msg ;
390
- int ret ;
391
-
392
- if (!(sr -> flags & IORING_RECVSEND_FIXED_BUF ))
393
- return io_sendmsg_setup (req , sqe );
394
-
395
- sr -> umsg = u64_to_user_ptr (READ_ONCE (sqe -> addr ));
396
-
397
- ret = io_msg_copy_hdr (req , kmsg , & msg , ITER_SOURCE , NULL );
398
- if (unlikely (ret ))
399
- return ret ;
400
- sr -> msg_control = kmsg -> msg .msg_control_user ;
401
- kmsg -> msg .msg_iter .nr_segs = msg .msg_iovlen ;
402
-
403
- return io_prep_reg_iovec (req , & kmsg -> vec , msg .msg_iov , msg .msg_iovlen );
404
- }
405
-
406
390
#define SENDMSG_FLAGS (IORING_RECVSEND_POLL_FIRST | IORING_RECVSEND_BUNDLE)
407
391
408
392
int io_sendmsg_prep (struct io_kiocb * req , const struct io_uring_sqe * sqe )
@@ -1339,7 +1323,7 @@ int io_send_zc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
1339
1323
req -> flags |= REQ_F_IMPORT_BUFFER ;
1340
1324
return io_send_setup (req , sqe );
1341
1325
}
1342
- ret = io_sendmsg_zc_setup (req , sqe );
1326
+ ret = io_sendmsg_setup (req , sqe );
1343
1327
if (unlikely (ret ))
1344
1328
return ret ;
1345
1329
0 commit comments