diff mbox series

[liburing] fix io_uring_recvmsg_cmsg_nexthdr logic

Message ID 20220718133429.726628-1-dylany@fb.com (mailing list archive)
State New
Headers show
Series [liburing] fix io_uring_recvmsg_cmsg_nexthdr logic | expand

Commit Message

Dylan Yudaken July 18, 2022, 1:34 p.m. UTC
io_uring_recvmsg_cmsg_nexthdr was using the payload to delineate the end
of the cmsg list, but really it needs to use whatever was returned by the
kernel.

Reported-by: Jens Axboe <axboe@kernel.dk>
Fixes: 874406f ("add multishot recvmsg API")
Signed-off-by: Dylan Yudaken <dylany@fb.com>
---
 src/include/liburing.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Ammar Faizi July 18, 2022, 1:41 p.m. UTC | #1
On 7/18/22 8:34 PM, Dylan Yudaken wrote:
> io_uring_recvmsg_cmsg_nexthdr was using the payload to delineate the end
> of the cmsg list, but really it needs to use whatever was returned by the
> kernel.
> 
> Reported-by: Jens Axboe <axboe@kernel.dk>
> Fixes: 874406f ("add multishot recvmsg API")
> Signed-off-by: Dylan Yudaken <dylany@fb.com>

The Fixes tag must be at least 12 chars.
Jens Axboe July 18, 2022, 1:41 p.m. UTC | #2
On 7/18/22 7:34 AM, Dylan Yudaken wrote:
> io_uring_recvmsg_cmsg_nexthdr was using the payload to delineate the end
> of the cmsg list, but really it needs to use whatever was returned by the
> kernel.

Thanks, this works for me. I'll add it with a tested-by as well.
Jens Axboe July 18, 2022, 1:41 p.m. UTC | #3
On Mon, 18 Jul 2022 06:34:29 -0700, Dylan Yudaken wrote:
> io_uring_recvmsg_cmsg_nexthdr was using the payload to delineate the end
> of the cmsg list, but really it needs to use whatever was returned by the
> kernel.
> 
> 

Applied, thanks!

[1/1] fix io_uring_recvmsg_cmsg_nexthdr logic
      commit: 4e6eec8bdea906fe5341c97aef96986d605004e9

Best regards,
Jens Axboe July 18, 2022, 1:42 p.m. UTC | #4
On 7/18/22 7:41 AM, Ammar Faizi wrote:
> On 7/18/22 8:34 PM, Dylan Yudaken wrote:
>> io_uring_recvmsg_cmsg_nexthdr was using the payload to delineate the end
>> of the cmsg list, but really it needs to use whatever was returned by the
>> kernel.
>>
>> Reported-by: Jens Axboe <axboe@kernel.dk>
>> Fixes: 874406f ("add multishot recvmsg API")
>> Signed-off-by: Dylan Yudaken <dylany@fb.com>
> 
> The Fixes tag must be at least 12 chars.

It was fixed up while applying.
diff mbox series

Patch

diff --git a/src/include/liburing.h b/src/include/liburing.h
index 583b917..fc7613d 100644
--- a/src/include/liburing.h
+++ b/src/include/liburing.h
@@ -745,7 +745,8 @@  io_uring_recvmsg_cmsg_nexthdr(struct io_uring_recvmsg_out *o, struct msghdr *m,
 
 	if (cmsg->cmsg_len < sizeof(struct cmsghdr))
 		return NULL;
-	end = (unsigned char *) io_uring_recvmsg_payload(o, m);
+	end = (unsigned char *) io_uring_recvmsg_cmsg_firsthdr(o, m) +
+		o->controllen;
 	cmsg = (struct cmsghdr *)((unsigned char *) cmsg +
 			CMSG_ALIGN(cmsg->cmsg_len));