Log: Fix locking during log reconfiguration
The log subsystem should be locked earlier, as default_log_list() may internally manipulate with the current_log_list (if it is also a default log list).
This commit is contained in:
parent
0ef082c51e
commit
62d57b9bdf
1 changed files with 3 additions and 3 deletions
|
@ -382,12 +382,12 @@ log_switch(int initial, list *logs, const char *new_syslog_name)
|
||||||
{
|
{
|
||||||
struct log_config *l;
|
struct log_config *l;
|
||||||
|
|
||||||
|
/* We should not manipulate with log list when other threads may use it */
|
||||||
|
log_lock();
|
||||||
|
|
||||||
if (!logs || EMPTY_LIST(*logs))
|
if (!logs || EMPTY_LIST(*logs))
|
||||||
logs = default_log_list(initial, &new_syslog_name);
|
logs = default_log_list(initial, &new_syslog_name);
|
||||||
|
|
||||||
/* We shouldn't close the logs when other threads may use them */
|
|
||||||
log_lock();
|
|
||||||
|
|
||||||
/* Close the logs to avoid pinning them on disk when deleted */
|
/* Close the logs to avoid pinning them on disk when deleted */
|
||||||
if (current_log_list)
|
if (current_log_list)
|
||||||
WALK_LIST(l, *current_log_list)
|
WALK_LIST(l, *current_log_list)
|
||||||
|
|
Loading…
Reference in a new issue