l2tp: don't BUG_ON session magic checks in l2tp_ppp
checkpatch advises that WARN_ON and recovery code are preferred over BUG_ON which crashes the kernel. l2tp_ppp.c's BUG_ON checks of the l2tp session structure's "magic" field occur in code paths where it's reasonably easy to recover: * In the case of pppol2tp_sock_to_session, we can return NULL and the caller will bail out appropriately. There is no change required to any of the callsites of this function since they already handle pppol2tp_sock_to_session returning NULL. * In the case of pppol2tp_session_destruct we can just avoid decrementing the reference count on the suspect session structure. In the worst case scenario this results in a memory leak, which is preferable to a crash. Convert these uses of BUG_ON to WARN_ON accordingly. Signed-off-by: Tom Parkin <tparkin@katalix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
cd3e29b333
Коммит
1aa646ac71
|
@ -163,8 +163,11 @@ static inline struct l2tp_session *pppol2tp_sock_to_session(struct sock *sk)
|
|||
sock_put(sk);
|
||||
goto out;
|
||||
}
|
||||
|
||||
BUG_ON(session->magic != L2TP_SESSION_MAGIC);
|
||||
if (WARN_ON(session->magic != L2TP_SESSION_MAGIC)) {
|
||||
session = NULL;
|
||||
sock_put(sk);
|
||||
goto out;
|
||||
}
|
||||
|
||||
out:
|
||||
return session;
|
||||
|
@ -419,7 +422,8 @@ static void pppol2tp_session_destruct(struct sock *sk)
|
|||
|
||||
if (session) {
|
||||
sk->sk_user_data = NULL;
|
||||
BUG_ON(session->magic != L2TP_SESSION_MAGIC);
|
||||
if (WARN_ON(session->magic != L2TP_SESSION_MAGIC))
|
||||
return;
|
||||
l2tp_session_dec_refcount(session);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче