VFS: Fix memory access after free() in UART select()
Closes
@@ -474,10 +474,6 @@ static esp_err_t uart_end_select(void *end_select_args)
{
uart_select_args_t *args = end_select_args;
- if (args) {
- free(args);
- }
-
portENTER_CRITICAL(uart_get_selectlock());
esp_err_t ret = unregister_select(args);
for (int i = 0; i < UART_NUM; ++i) {
@@ -485,6 +481,10 @@ static esp_err_t uart_end_select(void *end_select_args)
}
portEXIT_CRITICAL(uart_get_selectlock());
+ if (args) {
+ free(args);
+ }
+
return ret;
}
