Yes, this seems right.

ok yasuoka

On Thu, 18 Jun 2020 23:53:25 +0300
Vitaliy Makkoveev <henscheltig...@yahoo.com> wrote:
> While pppac(4) destroy sessions by pipex_iface_fini() or by
> pipex_ioctl() with PIPEXSMODE command, some sessions can be linked to
> `state_list'. This case is not checked and sessions will never be
> unlinked and `state_list' will be broken after session's memory freeing.
> 
> Diff below adds session removal from `state_list' in
> pipex_unlink_session(). Also unlinked session `state' sets to
> PIPEX_STATE_CLOSED like pipex_close_session() does.
> 
> Index: sys/net/pipex.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pipex.c,v
> retrieving revision 1.115
> diff -u -p -r1.115 pipex.c
> --- sys/net/pipex.c   18 Jun 2020 14:20:12 -0000      1.115
> +++ sys/net/pipex.c   18 Jun 2020 16:37:44 -0000
> @@ -473,8 +473,10 @@ pipex_unlink_session(struct pipex_sessio
>               break;
>       }
>  #endif
> -
> +     if (session->state == PIPEX_STATE_CLOSE_WAIT)
> +             LIST_REMOVE(session, state_list);
>       LIST_REMOVE(session, session_list);
> +     session->state = PIPEX_STATE_CLOSED;
>  
>       /* if final session is destroyed, stop timer */
>       if (LIST_EMPTY(&pipex_session_list))
> 

Reply via email to