mbox series

[liburing,v1,0/2] 2 fixes for recv-msgall.c

Message ID 20230510143927.123170-1-ammarfaizi2@gnuweeb.org (mailing list archive)
Headers show
Series 2 fixes for recv-msgall.c | expand

Message

Ammar Faizi May 10, 2023, 2:39 p.m. UTC
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

Comments

Jens Axboe May 10, 2023, 3:17 p.m. UTC | #1
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,