From aa9e2eefe4ad51ba6a61ba10abe7dc1ef277700d Mon Sep 17 00:00:00 2001 From: DmitriyEshenko Date: Wed, 30 Jun 2021 22:29:23 +0300 Subject: T43: Change to list_for_each_safe to prevent segmentation fault --- accel-pppd/logs/log_file.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'accel-pppd/logs') diff --git a/accel-pppd/logs/log_file.c b/accel-pppd/logs/log_file.c index 216ff5ad..42d9f3f4 100644 --- a/accel-pppd/logs/log_file.c +++ b/accel-pppd/logs/log_file.c @@ -265,8 +265,10 @@ static void general_log(struct log_target_t *t, struct log_msg_t *msg, struct ap static struct ap_private *find_pd(struct ap_session *ses, void *pd_key) { struct ap_private *pd; + struct list_head *pos, *next; - list_for_each_entry(pd, &ses->pd_list, entry) { + list_for_each_safe(pos, next, &ses->pd_list) { + pd = list_entry(pos->next, typeof(*pd), entry); if (pd->key == pd_key) { return pd; } @@ -551,8 +553,8 @@ static void ev_ctrl_started(struct ap_session *ses) } memset(fpd, 0, sizeof(*fpd)); fpd->pd.key = &pd_key3; - list_add_tail(&fpd->pd.entry, &ses->pd_list); INIT_LIST_HEAD(&fpd->msgs); + list_add_tail(&fpd->pd.entry, &ses->pd_list); } } -- cgit v1.2.3