Skip to content
Snippets Groups Projects
tcp_minisocks.c 30.4 KiB
Newer Older
  • Learn to ignore specific revisions
  • Linus Torvalds's avatar
    Linus Torvalds committed
    	if (!sock_owned_by_user(child)) {
    		ret = tcp_rcv_state_process(child, skb, skb->h.th, skb->len);
    
    		/* Wakeup parent, send SIGIO */
    		if (state == TCP_SYN_RECV && child->sk_state != state)
    			parent->sk_data_ready(parent, 0);
    	} else {
    		/* Alas, it is possible again, because we do lookup
    		 * in main socket hash table and lock on listening
    		 * socket does not protect us more.
    		 */
    		sk_add_backlog(child, skb);
    	}
    
    	bh_unlock_sock(child);
    	sock_put(child);
    	return ret;
    }
    
    EXPORT_SYMBOL(tcp_check_req);
    EXPORT_SYMBOL(tcp_child_process);
    EXPORT_SYMBOL(tcp_create_openreq_child);
    EXPORT_SYMBOL(tcp_timewait_state_process);
    EXPORT_SYMBOL(tcp_tw_deschedule);