X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net%2Frxrpc%2Fkrxsecd.c;h=3ab0f77409f49c79de6c65dc361962bf14be1c94;hb=97bf2856c6014879bd04983a3e9dfcdac1e7fe85;hp=c9ee29eb203281ae4b636227f4cfb16deafb9026;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/net/rxrpc/krxsecd.c b/net/rxrpc/krxsecd.c index c9ee29eb2..3ab0f7740 100644 --- a/net/rxrpc/krxsecd.c +++ b/net/rxrpc/krxsecd.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #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); } }