mirror of https://gitee.com/openkylin/linux.git
llc: avoid blocking in llc_sap_close()
llc_sap_close() is called by llc_sap_put() which could be called in BH context in llc_rcv(). We can't block in BH. There is no reason to block it here, kfree_rcu() should be sufficient. Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
15033f0457
commit
9708d2b5b7
|
@ -66,6 +66,7 @@ struct llc_sap {
|
|||
int sk_count;
|
||||
struct hlist_nulls_head sk_laddr_hash[LLC_SK_LADDR_HASH_ENTRIES];
|
||||
struct hlist_head sk_dev_hash[LLC_SK_DEV_HASH_ENTRIES];
|
||||
struct rcu_head rcu;
|
||||
};
|
||||
|
||||
static inline
|
||||
|
|
|
@ -127,9 +127,7 @@ void llc_sap_close(struct llc_sap *sap)
|
|||
list_del_rcu(&sap->node);
|
||||
spin_unlock_bh(&llc_sap_list_lock);
|
||||
|
||||
synchronize_rcu();
|
||||
|
||||
kfree(sap);
|
||||
kfree_rcu(sap, rcu);
|
||||
}
|
||||
|
||||
static struct packet_type llc_packet_type __read_mostly = {
|
||||
|
|
Loading…
Reference in New Issue