try_to_freeze(PF_FREEZE); 
try_to_freeze(); 
static int rxrpc_krxiod(void *arg){	DECLARE_WAITQUEUE(krxiod,current);	printk("Started krxiod %d\n",current->pid);	daemonize("krxiod");	/* loop around waiting for work to do */	do {		/* wait for work or to be told to exit */		_debug("### Begin Wait");		if (!atomic_read(&rxrpc_krxiod_qcount)) {			set_current_state(TASK_INTERRUPTIBLE);			add_wait_queue(&rxrpc_krxiod_sleepq, &krxiod);			for (;;) {				set_current_state(TASK_INTERRUPTIBLE);				if (atomic_read(&rxrpc_krxiod_qcount) ||				    rxrpc_krxiod_die ||				    signal_pending(current))					break;				schedule();			}			remove_wait_queue(&rxrpc_krxiod_sleepq, &krxiod);			set_current_state(TASK_RUNNING);		}		_debug("### End Wait");		/* do work if been given some to do */		_debug("### Begin Work");		/* see if there's a transport in need of attention */		if (!list_empty(&rxrpc_krxiod_transportq)) {			struct rxrpc_transport *trans = NULL;			spin_lock_irq(&rxrpc_krxiod_transportq_lock);			if (!list_empty(&rxrpc_krxiod_transportq)) {				trans = list_entry(					rxrpc_krxiod_transportq.next,					struct rxrpc_transport,					krxiodq_link);				list_del_init(&trans->krxiodq_link);				atomic_dec(&rxrpc_krxiod_qcount);				/* make sure it hasn't gone away and doesn't go				 * away */				if (atomic_read(&trans->usage)>0)					rxrpc_get_transport(trans);				else					trans = NULL;			}			spin_unlock_irq(&rxrpc_krxiod_transportq_lock);			if (trans) {				rxrpc_trans_receive_packet(trans);				rxrpc_put_transport(trans);			}		}		/* see if there's a call in need of attention */		if (!list_empty(&rxrpc_krxiod_callq)) {			struct rxrpc_call *call = NULL;			spin_lock_irq(&rxrpc_krxiod_callq_lock);			if (!list_empty(&rxrpc_krxiod_callq)) {				call = list_entry(rxrpc_krxiod_callq.next,						  struct rxrpc_call,						  rcv_krxiodq_lk);				list_del_init(&call->rcv_krxiodq_lk);				atomic_dec(&rxrpc_krxiod_qcount);				/* make sure it hasn't gone away and doesn't go				 * away */				if (atomic_read(&call->usage) > 0) {					_debug("@@@ KRXIOD"					       " Begin Attend Call %p", call);					rxrpc_get_call(call);				}				else {					call = NULL;				}			}			spin_unlock_irq(&rxrpc_krxiod_callq_lock);			if (call) {				rxrpc_call_do_stuff(call);				rxrpc_put_call(call);				_debug("@@@ KRXIOD End Attend Call %p", call);			}		}		_debug("### End Work");		try_to_freeze(PF_FREEZE);                /* discard pending signals */		rxrpc_discard_my_signals();	} while (!rxrpc_krxiod_die);	/* and that's all */	complete_and_exit(&rxrpc_krxiod_dead, 0);} /* end rxrpc_krxiod() */
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e1d1d28d99dabe63c64f7f40f1ca1d646de1f73/krxiod.c/buggy/net/rxrpc/krxiod.c