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 |
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.
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.
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,
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 --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));
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(-)