sctp: Remove some redundant code
[cascardo/linux.git] / net / sctp / ulpqueue.c
index ec166d2..84d0fda 100644 (file)
@@ -140,11 +140,8 @@ int sctp_clear_pd(struct sock *sk, struct sctp_association *asoc)
                 * we can go ahead and clear out the lobby in one shot
                 */
                if (!skb_queue_empty(&sp->pd_lobby)) {
-                       struct list_head *list;
                        skb_queue_splice_tail_init(&sp->pd_lobby,
                                                   &sk->sk_receive_queue);
-                       list = (struct list_head *)&sctp_sk(sk)->pd_lobby;
-                       INIT_LIST_HEAD(list);
                        return 1;
                }
        } else {
@@ -204,7 +201,9 @@ int sctp_ulpq_tail_event(struct sctp_ulpq *ulpq, struct sctp_ulpevent *event)
        /* If the socket is just going to throw this away, do not
         * even try to deliver it.
         */
-       if (sock_flag(sk, SOCK_DEAD) || (sk->sk_shutdown & RCV_SHUTDOWN))
+       if (sk->sk_shutdown & RCV_SHUTDOWN &&
+           (sk->sk_shutdown & SEND_SHUTDOWN ||
+            !sctp_ulpevent_is_notification(event)))
                goto out_free;
 
        if (!sctp_ulpevent_is_notification(event)) {