fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / net / rxrpc / krxsecd.c
index c9ee29e..3ab0f77 100644 (file)
@@ -27,6 +27,7 @@
 #include <rxrpc/call.h>
 #include <linux/udp.h>
 #include <linux/ip.h>
+#include <linux/freezer.h>
 #include <net/sock.h>
 #include "internal.h"
 
@@ -39,7 +40,7 @@ static atomic_t rxrpc_krxsecd_qcount;
 /* queue of unprocessed inbound messages with seqno #1 and
  * RXRPC_CLIENT_INITIATED flag set */
 static LIST_HEAD(rxrpc_krxsecd_initmsgq);
-static spinlock_t rxrpc_krxsecd_initmsgq_lock = SPIN_LOCK_UNLOCKED;
+static DEFINE_SPINLOCK(rxrpc_krxsecd_initmsgq_lock);
 
 static void rxrpc_krxsecd_process_incoming_call(struct rxrpc_message *msg);
 
@@ -107,6 +108,8 @@ static int rxrpc_krxsecd(void *arg)
 
                _debug("### End Inbound Calls");
 
+               try_to_freeze();
+
                 /* discard pending signals */
                rxrpc_discard_my_signals();
 
@@ -158,8 +161,7 @@ void rxrpc_krxsecd_clear_transport(struct rxrpc_transport *trans)
        list_for_each_safe(_p, _n, &rxrpc_krxsecd_initmsgq) {
                msg = list_entry(_p, struct rxrpc_message, link);
                if (msg->trans == trans) {
-                       list_del(&msg->link);
-                       list_add_tail(&msg->link, &tmp);
+                       list_move_tail(&msg->link, &tmp);
                        atomic_dec(&rxrpc_krxsecd_qcount);
                }
        }