hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/net/rose/af_rose.c
....@@ -487,6 +487,12 @@
487487 {
488488 struct sock *sk = sock->sk;
489489
490
+ lock_sock(sk);
491
+ if (sock->state != SS_UNCONNECTED) {
492
+ release_sock(sk);
493
+ return -EINVAL;
494
+ }
495
+
490496 if (sk->sk_state != TCP_LISTEN) {
491497 struct rose_sock *rose = rose_sk(sk);
492498
....@@ -496,8 +502,10 @@
496502 memset(rose->dest_digis, 0, AX25_ADDR_LEN * ROSE_MAX_DIGIS);
497503 sk->sk_max_ack_backlog = backlog;
498504 sk->sk_state = TCP_LISTEN;
505
+ release_sock(sk);
499506 return 0;
500507 }
508
+ release_sock(sk);
501509
502510 return -EOPNOTSUPP;
503511 }