[PATCH net-next 3/3] rose: guard rose_neigh_put() against NULL in timer expiry
f6bvp <[email protected]> Mon, 13 Apr 2026 19:42:38 +0200
| Newsgroups | org.kernel.vger.linux-hams,org.kernel.vger.netdev |
|---|---|
| Message-ID | <[email protected]> |
In rose_timer_expiry(), ROSE_STATE_2 calls rose_neigh_put() on rose->neighbour without checking whether it is NULL first. The pointer can be NULL if the connection was already being torn down by a concurrent code path (e.g. rose_kill_by_neigh()), leading to a NULL-pointer dereference. Add a NULL check before the put and clear the pointer afterwards. Signed-off-by: f6bvp <[email protected]> --- net/rose/rose_timer.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/rose/rose_timer.c b/net/rose/rose_timer.c index bb60a1654d61..d997d24ab081 100644 --- a/net/rose/rose_timer.c +++ b/net/rose/rose_timer.c @@ -180,7 +180,10 @@ static void rose_timer_expiry(struct timer_list *t) break; case ROSE_STATE_2: /* T3 */ - rose_neigh_put(rose->neighbour); + if (rose->neighbour) { + rose_neigh_put(rose->neighbour); + rose->neighbour = NULL; + } rose_disconnect(sk, ETIMEDOUT, -1, -1); break; -- 2.51.0