@@ -325,25 +325,6 @@ static int io_msg_copy_hdr(struct io_kiocb *req, struct io_async_msghdr *iomsg,
325
325
return 0 ;
326
326
}
327
327
328
- static int io_sendmsg_copy_hdr (struct io_kiocb * req ,
329
- struct io_async_msghdr * iomsg )
330
- {
331
- struct io_sr_msg * sr = io_kiocb_to_cmd (req , struct io_sr_msg );
332
- struct user_msghdr msg ;
333
- int ret ;
334
-
335
- ret = io_msg_copy_hdr (req , iomsg , & msg , ITER_SOURCE , NULL );
336
- if (unlikely (ret ))
337
- return ret ;
338
-
339
- if (!(req -> flags & REQ_F_BUFFER_SELECT ))
340
- ret = io_net_import_vec (req , iomsg , msg .msg_iov , msg .msg_iovlen ,
341
- ITER_SOURCE );
342
- /* save msg_control as sys_sendmsg() overwrites it */
343
- sr -> msg_control = iomsg -> msg .msg_control_user ;
344
- return ret ;
345
- }
346
-
347
328
void io_sendmsg_recvmsg_cleanup (struct io_kiocb * req )
348
329
{
349
330
struct io_async_msghdr * io = req -> async_data ;
@@ -392,10 +373,19 @@ static int io_sendmsg_setup(struct io_kiocb *req, const struct io_uring_sqe *sqe
392
373
{
393
374
struct io_sr_msg * sr = io_kiocb_to_cmd (req , struct io_sr_msg );
394
375
struct io_async_msghdr * kmsg = req -> async_data ;
376
+ struct user_msghdr msg ;
377
+ int ret ;
395
378
396
379
sr -> umsg = u64_to_user_ptr (READ_ONCE (sqe -> addr ));
380
+ ret = io_msg_copy_hdr (req , kmsg , & msg , ITER_SOURCE , NULL );
381
+ if (unlikely (ret ))
382
+ return ret ;
383
+ /* save msg_control as sys_sendmsg() overwrites it */
384
+ sr -> msg_control = kmsg -> msg .msg_control_user ;
397
385
398
- return io_sendmsg_copy_hdr (req , kmsg );
386
+ if (req -> flags & REQ_F_BUFFER_SELECT )
387
+ return 0 ;
388
+ return io_net_import_vec (req , kmsg , msg .msg_iov , msg .msg_iovlen , ITER_SOURCE );
399
389
}
400
390
401
391
static int io_sendmsg_zc_setup (struct io_kiocb * req , const struct io_uring_sqe * sqe )
0 commit comments