|
@@ -1314,6 +1314,9 @@ again:
|
|
|
|
|
|
hlist_del_init(&session->hlist);
|
|
|
|
|
|
+ if (test_and_set_bit(0, &session->dead))
|
|
|
+ goto again;
|
|
|
+
|
|
|
if (session->ref != NULL)
|
|
|
(*session->ref)(session);
|
|
|
|
|
@@ -1750,6 +1753,9 @@ EXPORT_SYMBOL_GPL(__l2tp_session_unhash);
|
|
|
*/
|
|
|
int l2tp_session_delete(struct l2tp_session *session)
|
|
|
{
|
|
|
+ if (test_and_set_bit(0, &session->dead))
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (session->ref)
|
|
|
(*session->ref)(session);
|
|
|
__l2tp_session_unhash(session);
|