public inbox for [email protected]
 help / color / mirror / Atom feed
* [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime
@ 2022-09-16 22:22 Pavel Begunkov
  2022-09-17 10:27 ` Stefan Metzmacher
  2022-09-18 11:10 ` Jens Axboe
  0 siblings, 2 replies; 5+ messages in thread
From: Pavel Begunkov @ 2022-09-16 22:22 UTC (permalink / raw)
  To: io-uring; +Cc: Jens Axboe, asml.silence

Notifications usually outlive requests, so we need to pin buffers with
it by assigning a rsrc to it instead of the request.

Fixed: b48c312be05e8 ("io_uring/net: simplify zerocopy send user API")
Signed-off-by: Pavel Begunkov <[email protected]>
---
 io_uring/net.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/io_uring/net.c b/io_uring/net.c
index e9efed40cf3d..60e392f7f2dc 100644
--- a/io_uring/net.c
+++ b/io_uring/net.c
@@ -905,6 +905,13 @@ int io_sendzc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 	if (zc->flags & ~(IORING_RECVSEND_POLL_FIRST |
 			  IORING_RECVSEND_FIXED_BUF))
 		return -EINVAL;
+	notif = zc->notif = io_alloc_notif(ctx);
+	if (!notif)
+		return -ENOMEM;
+	notif->cqe.user_data = req->cqe.user_data;
+	notif->cqe.res = 0;
+	notif->cqe.flags = IORING_CQE_F_NOTIF;
+	req->flags |= REQ_F_NEED_CLEANUP;
 	if (zc->flags & IORING_RECVSEND_FIXED_BUF) {
 		unsigned idx = READ_ONCE(sqe->buf_index);
 
@@ -912,15 +919,8 @@ int io_sendzc_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe)
 			return -EFAULT;
 		idx = array_index_nospec(idx, ctx->nr_user_bufs);
 		req->imu = READ_ONCE(ctx->user_bufs[idx]);
-		io_req_set_rsrc_node(req, ctx, 0);
+		io_req_set_rsrc_node(notif, ctx, 0);
 	}
-	notif = zc->notif = io_alloc_notif(ctx);
-	if (!notif)
-		return -ENOMEM;
-	notif->cqe.user_data = req->cqe.user_data;
-	notif->cqe.res = 0;
-	notif->cqe.flags = IORING_CQE_F_NOTIF;
-	req->flags |= REQ_F_NEED_CLEANUP;
 
 	zc->buf = u64_to_user_ptr(READ_ONCE(sqe->addr));
 	zc->len = READ_ONCE(sqe->len);
-- 
2.37.2


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime
  2022-09-16 22:22 [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime Pavel Begunkov
@ 2022-09-17 10:27 ` Stefan Metzmacher
  2022-09-17 11:58   ` Jens Axboe
  2022-09-18 11:10 ` Jens Axboe
  1 sibling, 1 reply; 5+ messages in thread
From: Stefan Metzmacher @ 2022-09-17 10:27 UTC (permalink / raw)
  To: Pavel Begunkov, io-uring; +Cc: Jens Axboe

Am 17.09.22 um 00:22 schrieb Pavel Begunkov:
> Notifications usually outlive requests, so we need to pin buffers with
> it by assigning a rsrc to it instead of the request.
> 
> Fixed: b48c312be05e8 ("io_uring/net: simplify zerocopy send user API")
> Signed-off-by: Pavel Begunkov <[email protected]>

Looks good to me :-)

metze

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime
  2022-09-17 10:27 ` Stefan Metzmacher
@ 2022-09-17 11:58   ` Jens Axboe
  2022-09-18  9:29     ` Stefan Metzmacher
  0 siblings, 1 reply; 5+ messages in thread
From: Jens Axboe @ 2022-09-17 11:58 UTC (permalink / raw)
  To: Stefan Metzmacher, Pavel Begunkov, io-uring

On 9/17/22 4:27 AM, Stefan Metzmacher wrote:
> Am 17.09.22 um 00:22 schrieb Pavel Begunkov:
>> Notifications usually outlive requests, so we need to pin buffers with
>> it by assigning a rsrc to it instead of the request.
>>
>> Fixed: b48c312be05e8 ("io_uring/net: simplify zerocopy send user API")
>> Signed-off-by: Pavel Begunkov <[email protected]>
> 
> Looks good to me :-)

Can I turn that into an acked-by or reviewed-by?

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime
  2022-09-17 11:58   ` Jens Axboe
@ 2022-09-18  9:29     ` Stefan Metzmacher
  0 siblings, 0 replies; 5+ messages in thread
From: Stefan Metzmacher @ 2022-09-18  9:29 UTC (permalink / raw)
  To: Jens Axboe, Pavel Begunkov, io-uring

Am 17.09.22 um 13:58 schrieb Jens Axboe:
> On 9/17/22 4:27 AM, Stefan Metzmacher wrote:
>> Am 17.09.22 um 00:22 schrieb Pavel Begunkov:
>>> Notifications usually outlive requests, so we need to pin buffers with
>>> it by assigning a rsrc to it instead of the request.
>>>
>>> Fixed: b48c312be05e8 ("io_uring/net: simplify zerocopy send user API")
>>> Signed-off-by: Pavel Begunkov <[email protected]>
>>
>> Looks good to me :-)
> 
> Can I turn that into an acked-by or reviewed-by?

reviewed-by is fine.

metze


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime
  2022-09-16 22:22 [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime Pavel Begunkov
  2022-09-17 10:27 ` Stefan Metzmacher
@ 2022-09-18 11:10 ` Jens Axboe
  1 sibling, 0 replies; 5+ messages in thread
From: Jens Axboe @ 2022-09-18 11:10 UTC (permalink / raw)
  To: Pavel Begunkov, io-uring

On Fri, 16 Sep 2022 23:22:57 +0100, Pavel Begunkov wrote:
> Notifications usually outlive requests, so we need to pin buffers with
> it by assigning a rsrc to it instead of the request.
> 
> 

Applied, thanks!

[1/1] io_uring/net: fix zc fixed buf lifetime
      commit: e3366e0234971a09f0e16f0e6fa16f4cbae45e47

Best regards,
-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-09-18 11:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-16 22:22 [PATCH 1/1] io_uring/net: fix zc fixed buf lifetime Pavel Begunkov
2022-09-17 10:27 ` Stefan Metzmacher
2022-09-17 11:58   ` Jens Axboe
2022-09-18  9:29     ` Stefan Metzmacher
2022-09-18 11:10 ` Jens Axboe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox