-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
cleanup: remove some extra code #2186
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -632,19 +632,11 @@ bool sinsp_parser::reset(sinsp_evt *evt) { | |
// | ||
// Error detection logic | ||
// | ||
if(evt->get_num_params() != 0 && ((evt->get_info()->params[0].name[0] == 'r' && | ||
evt->get_info()->params[0].name[1] == 'e' && | ||
evt->get_info()->params[0].name[2] == 's' && | ||
evt->get_info()->params[0].name[3] == '\0') || | ||
(evt->get_info()->params[0].name[0] == 'f' && | ||
evt->get_info()->params[0].name[1] == 'd' && | ||
evt->get_info()->params[0].name[2] == '\0'))) { | ||
if(evt->has_return_value()) { | ||
int64_t res = evt->get_syscall_return_value(); | ||
|
||
if(res < 0) { | ||
evt->set_errorcode(-(int32_t)res); | ||
} | ||
if(evt->has_return_value()) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if i don't miss something all the syscall exit event should have at least the return value so i don't see why we need the additional manual check on the parameter names There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I encountered this code right yesterday and was wondering exactly the same 🤣 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. BTW this logic was broken since there are all these possible values |
||
int64_t res = evt->get_syscall_return_value(); | ||
|
||
if(res < 0) { | ||
evt->set_errorcode(-(int32_t)res); | ||
} | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't get this test; do we really need to enforce the param name from now on, given your changes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should enforce the rule that the first parameter in the exit event is the return value of the syscall. Unfortunately, I've not found a great way to do that so for now we just monitor the parameters' names.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's a best effort check, if the name matches we are quite confident that the first parameter is a return value
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this already cached the weird case of `PPME_GENERIC_X'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah i see, makes sense.
But then we are not using the check on param name at runtime anymore, so this is just to avoid that in the future a new syscall exit event is added whose first param is not a return code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
exactly, today we are quite confident the rule is valid, this test tries to prevent future issues