RDS: cancel connection work structs as we shut down
authorZach Brown <zach.brown@oracle.com>
Fri, 23 Jul 2010 17:37:33 +0000 (10:37 -0700)
committerAndy Grover <andy.grover@oracle.com>
Thu, 9 Sep 2010 01:16:49 +0000 (18:16 -0700)
Nothing was canceling the send and receive work that might have been
queued as a conn was being destroyed.

Signed-off-by: Zach Brown <zach.brown@oracle.com>
net/rds/connection.c

index 519b4fe..870992e 100644 (file)
@@ -336,6 +336,10 @@ void rds_conn_destroy(struct rds_connection *conn)
        rds_conn_drop(conn);
        flush_work(&conn->c_down_w);
 
+       /* make sure lingering queued work won't try to ref the conn */
+       cancel_delayed_work_sync(&conn->c_send_w);
+       cancel_delayed_work_sync(&conn->c_recv_w);
+
        /* tear down queued messages */
        list_for_each_entry_safe(rm, rtmp,
                                 &conn->c_send_queue,