@@ -1318,23 +1318,23 @@ int io_send_zc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
1318
1318
if (unlikely (!iomsg ))
1319
1319
return - ENOMEM ;
1320
1320
1321
- if (zc -> flags & IORING_RECVSEND_FIXED_BUF )
1322
- iomsg -> msg .sg_from_iter = io_sg_from_iter ;
1323
- else
1324
- iomsg -> msg .sg_from_iter = io_sg_from_iter_iovec ;
1325
-
1326
1321
if (req -> opcode == IORING_OP_SEND_ZC ) {
1327
- req -> flags |= REQ_F_IMPORT_BUFFER ;
1328
- return io_send_setup (req , sqe );
1322
+ if (zc -> flags & IORING_RECVSEND_FIXED_BUF )
1323
+ req -> flags |= REQ_F_IMPORT_BUFFER ;
1324
+ ret = io_send_setup (req , sqe );
1325
+ } else {
1326
+ if (unlikely (sqe -> addr2 || sqe -> file_index ))
1327
+ return - EINVAL ;
1328
+ ret = io_sendmsg_setup (req , sqe );
1329
1329
}
1330
- if (unlikely (sqe -> addr2 || sqe -> file_index ))
1331
- return - EINVAL ;
1332
- ret = io_sendmsg_setup (req , sqe );
1333
1330
if (unlikely (ret ))
1334
1331
return ret ;
1335
1332
1336
- if (!(zc -> flags & IORING_RECVSEND_FIXED_BUF ))
1333
+ if (!(zc -> flags & IORING_RECVSEND_FIXED_BUF )) {
1334
+ iomsg -> msg .sg_from_iter = io_sg_from_iter_iovec ;
1337
1335
return io_notif_account_mem (zc -> notif , iomsg -> msg .msg_iter .count );
1336
+ }
1337
+ iomsg -> msg .sg_from_iter = io_sg_from_iter ;
1338
1338
return 0 ;
1339
1339
}
1340
1340
@@ -1392,25 +1392,13 @@ static int io_send_zc_import(struct io_kiocb *req, unsigned int issue_flags)
1392
1392
{
1393
1393
struct io_sr_msg * sr = io_kiocb_to_cmd (req , struct io_sr_msg );
1394
1394
struct io_async_msghdr * kmsg = req -> async_data ;
1395
- int ret ;
1396
1395
1397
- if (sr -> flags & IORING_RECVSEND_FIXED_BUF ) {
1398
- sr -> notif -> buf_index = req -> buf_index ;
1399
- ret = io_import_reg_buf (sr -> notif , & kmsg -> msg .msg_iter ,
1400
- (u64 )(uintptr_t )sr -> buf , sr -> len ,
1401
- ITER_SOURCE , issue_flags );
1402
- if (unlikely (ret ))
1403
- return ret ;
1404
- } else {
1405
- ret = import_ubuf (ITER_SOURCE , sr -> buf , sr -> len , & kmsg -> msg .msg_iter );
1406
- if (unlikely (ret ))
1407
- return ret ;
1408
- ret = io_notif_account_mem (sr -> notif , sr -> len );
1409
- if (unlikely (ret ))
1410
- return ret ;
1411
- }
1396
+ WARN_ON_ONCE (!(sr -> flags & IORING_RECVSEND_FIXED_BUF ));
1412
1397
1413
- return ret ;
1398
+ sr -> notif -> buf_index = req -> buf_index ;
1399
+ return io_import_reg_buf (sr -> notif , & kmsg -> msg .msg_iter ,
1400
+ (u64 )(uintptr_t )sr -> buf , sr -> len ,
1401
+ ITER_SOURCE , issue_flags );
1414
1402
}
1415
1403
1416
1404
int io_send_zc (struct io_kiocb * req , unsigned int issue_flags )
0 commit comments