You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libvma/SOURCES/0001-issue-3525812-Fix-buff...

36 lines
1.2 KiB

From 92f3868fd0474956afe6cb43f8de4d16abba83d6 Mon Sep 17 00:00:00 2001
From: Iftah Levi <iftahl@nvidia.com>
Date: Sun, 9 Jul 2023 14:08:44 +0300
Subject: [PATCH] issue: 3525812 Fix buffer leak socketextreme
In reclaim buffer api - vma_socketxtreme_free_vma_packets
we use reclaim_recv_buffers method which uses try_lock
on the ring, but in case the lock has failed - buffers
will not be returned.
The fix - in case the ring is locked - reclaim buffers
to the global pool.
Signed-off-by: Iftah Levi <iftahl@nvidia.com>
---
src/vma/sock/sock-redirect.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/vma/sock/sock-redirect.cpp b/src/vma/sock/sock-redirect.cpp
index 4308d21e8478..9b232e6093ca 100644
--- a/src/vma/sock/sock-redirect.cpp
+++ b/src/vma/sock/sock-redirect.cpp
@@ -466,7 +466,9 @@ int vma_socketxtreme_free_vma_packets(struct vma_packet_desc_t *packets, int num
p_socket_object->free_buffs(packets[i].total_len);
}
if (rng) {
- rng->reclaim_recv_buffers(desc);
+ if (!rng->reclaim_recv_buffers(desc)) {
+ g_buffer_pool_rx->put_buffers_thread_safe(desc);
+ }
} else {
goto err;
}
--
2.41.0