在進程退出時,skb釋放的大致流程為
用戶態exit()->
內核do_exit()->
exit_files->
put_files_struct->
close_files->
filp_close->
__fput->
file->f_op->release(inode, file)->
sock_close->
sock_release->
inet_release->
sk->sk_prot->close(sk, timeout)->
tcp_close->
__kfree_skb->
kfree_skbmem
skb_release_data //釋放data的page
kmem_cache_free //從slab中釋放skb數據結構
release_sock
sock_put
另一途徑:發送完成的(軟)中斷中釋放。。。。