Message ID | 20230510143927.123170-1-ammarfaizi2@gnuweeb.org (mailing list archive) |
---|---|
Headers | show |
Series | 2 fixes for recv-msgall.c | expand |
On Wed, 10 May 2023 21:39:25 +0700, Ammar Faizi wrote: > This is the follow up patchset for the recent issue found in > recv-msgall.c. There are two patches in this series. > > 1. Fix undefined behavior in `recv_prep()`. > The lifetime of `struct msghdr msg;` must be long enough until the CQE > is generated because the recvmsg operation will write to that storage. I > found this test segfault when compiling with -O0 optimization. This is > undefined behavior and may behave randomly. Fix this by making the > lifetime of `struct msghdr msg;` long enough. > > [...] Applied, thanks! [1/2] recv-msgall: Fix undefined behavior in `recv_prep()` commit: 05c6317367cab6fd4b8cf38c68cea1563bf31c5f [2/2] recv-msgall: Fix invalid mutex usage commit: 09c3661278bebb8431fbc10ed213e42181e7cac7 Best regards,
Hi Jens, This is the follow up patchset for the recent issue found in recv-msgall.c. There are two patches in this series. 1. Fix undefined behavior in `recv_prep()`. The lifetime of `struct msghdr msg;` must be long enough until the CQE is generated because the recvmsg operation will write to that storage. I found this test segfault when compiling with -O0 optimization. This is undefined behavior and may behave randomly. Fix this by making the lifetime of `struct msghdr msg;` long enough. 2. Fix invalid mutex usage. Calling pthread_mutex_lock() twice with the same mutex in the same thread without unlocking it first is invalid. The intention behind this pattern was to wait for the recv_fn() thread to be ready. Use the pthread barrier instead. It is more straightforward and correct. Please apply! Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org> --- Ammar Faizi (2): recv-msgall: Fix undefined behavior in `recv_prep()` recv-msgall: Fix invalid mutex usage test/recv-msgall.c | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) base-commit: 4961ac480052089a94978e9f771d513551aff61b