]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sdp: BUG1502 - scheduling while atomic
authorAmir Vadai <amirv@mellanox.co.il>
Tue, 17 Feb 2009 09:04:09 +0000 (11:04 +0200)
committerMukesh Kacker <mukesh.kacker@oracle.com>
Tue, 6 Oct 2015 12:04:23 +0000 (05:04 -0700)
Don't destory qp from interrupt context - do it in work queue

Signed-off-by: Amir Vadai <amirv@mellanox.co.il>
drivers/infiniband/ulp/sdp/sdp.h
drivers/infiniband/ulp/sdp/sdp_main.c

index d9da77679a5041d9941697073ed5f459af9875d7..aeeb1bb7ea3fe017a5f05a572c72ffb35fb30fc5 100644 (file)
@@ -173,16 +173,18 @@ struct sdp_sock {
        int destructed_already;
        int sdp_disconnect;
 
-       /* Data below will be reset on error */
+       struct sdp_buf *rx_ring;
+       struct sdp_buf   *tx_ring;
+
        /* rdma specific */
-       struct rdma_cm_id *id;
        struct ib_qp *qp;
        struct ib_cq *cq;
        struct ib_mr *mr;
+       /* Data below will be reset on error */
+       struct rdma_cm_id *id;
        struct ib_device *ib_device;
 
        /* SDP specific */
-       struct sdp_buf *rx_ring;
        struct ib_recv_wr rx_wr;
        unsigned rx_head;
        unsigned rx_tail;
@@ -194,7 +196,6 @@ struct sdp_sock {
        int               remote_credits;
        int               poll_cq;
 
-       struct sdp_buf   *tx_ring;
        unsigned          tx_head;
        unsigned          tx_tail;
        struct ib_send_wr tx_wr;
index e20a79c00df719a892b38d16648b4e619de7a890..ebd716ac531e90d492b4026ac29618df08b25a59 100644 (file)
@@ -344,8 +344,6 @@ void sdp_reset_sk(struct sock *sk, int rc)
        if (!(sk->sk_shutdown & RCV_SHUTDOWN) || !sk_stream_memory_free(sk))
                sdp_set_error(sk, rc);
 
-       sdp_destroy_qp(ssk);
-
        memset((void *)&ssk->id, 0, sizeof(*ssk) - offsetof(typeof(*ssk), id));
 
        sk->sk_state_change(sk);