Hi, I want net_bh to close the connection once it receives FIN from the other side of the connection, I know that tcp_close() can close an existing connection. But the thing is if there are undelivered data in socket's queue, tcp_close() will call tcp_send_active_reset() to send out a RST, tcp_send_active_reset() need call alloc_skb() with flag __GFP_WAIT. Normally, tcp_close() is called in user context, and everything is OK. However, if I call tcp_close() in net_bh, alloc_skb() won't allow __GFP_WAIT flag being set when it's called inside bottom half or interupt. My current solution is manually remove all the undelivered data before calling tcp_close(). Is there any other solution? thanks rz -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/