DPI: Avoid concurrent access of ndpi_flow_struct by multiple lcores#9
Closed
shubham-cdot wants to merge 1 commit intodanos:masterfrom
Closed
DPI: Avoid concurrent access of ndpi_flow_struct by multiple lcores#9shubham-cdot wants to merge 1 commit intodanos:masterfrom
shubham-cdot wants to merge 1 commit intodanos:masterfrom
Conversation
pjaitken
approved these changes
Apr 9, 2021
Contributor
|
@shubham-cdot there are a couple of checkpatch issues. Please re-wrap the commit message so there are no lines > 75 chars, and change "Co-authored-by:" to "Co-developed-by:" so that checkpatch runs cleanly. Thanks. |
For each flow, an instance of `ndpi_flow_struct` is maintained in the respective row in the connection table. The `ndpi_flow_struct` structure contains `ndpi_packet_struct` (`packet` in `struct ndpi_flow_struct`) which holds per-packet data and is updated by nDPI library for each packet of the session handled by it. The per packet data includes pointers to L3, L4 headers and L4 payload which are contained inside the `rte_mbuf` of the given packet. Since the connection table is global and if there are not any explicit locks, any of the lcores can access it at any time. Under such circumstances, if the forward and backward packets from the same flow are handled by different lcores, it is possible that the `ndpi_flow_struct` of the session is concurrently accessed by the two lcores. Fixes DAN-316 Co-developed-by: Anshul Thakur <athakur@cdot.in> Signed-off-by: Anshul Thakur <athakur@cdot.in> Signed-off-by: Shubham Shrivastava <shubhams@cdot.in>
2e68a36 to
e5a6d49
Compare
Contributor
Author
|
@pjaitken Fixed checkpatch issues and added copyright notice to the modified file. |
Contributor
|
This was included via 455e70b |
nickbroon
pushed a commit
to nickbroon/vyatta-dataplane
that referenced
this pull request
Apr 28, 2021
se_sen field in struct session may be NULL in two cases for newly
created sessions not yet added to sentry hash list, or after sesssion
removed from sentry hash list during reclaim in session gc.
This causes the following segmentaion fault infrequently.
[Current thread is 1 (Thread 0x7ff5c3fff700 (LWP 30235))]
#0 0x000055ce31a8978d in csync_get_session_from_init_sentry (
cse=<synthetic pointer>, cs=<synthetic pointer>, sp=0x7ff5f004ef36)
at ../src/npf/csync/csync_session_unpack.c:38
#1 csync_session_unpack_update (csu=0x7ff5f004ef2e)
at ../src/npf/csync/csync_session_unpack.c:71
#2 csync_unpack_session (size=<optimized out>, msg=0x7ff5f004ef26)
at ../src/npf/csync/csync_session_unpack.c:421
#3 csync_recv_session_update (frame=<optimized out>)
at ../src/npf/csync/csync_session_unpack.c:501
#4 0x000055ce31b2d57d in csync_restore_sessions (n=<optimized out>,
flist=<optimized out>) at ../src/csync/csync_transfer.c:218
#5 csync_pull_batch (info=0x7ff58400b880) at
../src/csync/csync_transfer.c:506
#6 csync_xfer_backup (pipe=0x7ff58400b8e0, arg=0x7ff58400b880)
at ../src/csync/csync_transfer.c:301
#7 0x00007ff6629618d3 in ?? () from
/usr/lib/x86_64-linux-gnu/libczmq.so.4
#8 0x00007ff6611ad4a4 in start_thread ()
from /lib/x86_64-linux-gnu/libpthread.so.0
danos#9 0x00007ff660eefd0f in clone () from /lib/x86_64-linux-gnu/libc.so.6
Fixed by doing a safe derefernce and checking for NULL.
VRVDR-54586
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes DAN-316