Skip to content

Commit 807ca64

Browse files
author
Paolo Abeni
committed
Merge branch 'fix-uaf-bugs-caused-by-ax25_release'
Duoming Zhou says: ==================== Fix UAF bugs caused by ax25_release() The first patch fixes UAF bugs in ax25_send_control, and the second patch fixes UAF bugs in ax25 timers. ==================== Link: https://lore.kernel.org/r/cover.1648472006.git.duoming@zju.edu.cn Signed-off-by: Paolo Abeni <pabeni@redhat.com>
2 parents f19c444 + 82e3175 commit 807ca64

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

net/ax25/af_ax25.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -991,10 +991,6 @@ static int ax25_release(struct socket *sock)
991991
sock_orphan(sk);
992992
ax25 = sk_to_ax25(sk);
993993
ax25_dev = ax25->ax25_dev;
994-
if (ax25_dev) {
995-
dev_put_track(ax25_dev->dev, &ax25_dev->dev_tracker);
996-
ax25_dev_put(ax25_dev);
997-
}
998994

999995
if (sk->sk_type == SOCK_SEQPACKET) {
1000996
switch (ax25->state) {
@@ -1056,6 +1052,15 @@ static int ax25_release(struct socket *sock)
10561052
sk->sk_state_change(sk);
10571053
ax25_destroy_socket(ax25);
10581054
}
1055+
if (ax25_dev) {
1056+
del_timer_sync(&ax25->timer);
1057+
del_timer_sync(&ax25->t1timer);
1058+
del_timer_sync(&ax25->t2timer);
1059+
del_timer_sync(&ax25->t3timer);
1060+
del_timer_sync(&ax25->idletimer);
1061+
dev_put_track(ax25_dev->dev, &ax25_dev->dev_tracker);
1062+
ax25_dev_put(ax25_dev);
1063+
}
10591064

10601065
sock->sk = NULL;
10611066
release_sock(sk);

0 commit comments

Comments
 (0)