rcu: covert call_rcu(simple_kfree_callbck) to kfree_rcu() (PART 1)
Subsystems (11)
cover rcu: covert call_rcu(simple_kfree_callbck) to kfree_rcu() (PART 1)
There are many simple_kfree_callback() instances that just does
kfree(containerof(head,struct whatever_struct,rcu_member));
We convert them to kfree_rcu().
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/17 cgroup, rcu: convert call_rcu(free_css_set_rcu) to kfree_rcu()
The rcu callback free_css_set_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(free_css_set_rcu).
--- kernel/cgroup.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-)
kernel/cgroup.c +1 -7
@@ -326,12 +326,6 @@ static struct hlist_head *css_set_hash(struct cgroup_subsys_state *css[])return &css_set_table[index]; } -static void free_css_set_rcu (struct rcu_head *obj) -{ - struct css_set *cg = container_of(obj, struct css_set, rcu_head); -kfree (cg); -} -/* We don't maintain the lists running through each css_set to its * task until after the first call to cgroup_iter_start(). This * reduces the fork()/exit() overhead for people who have cgroups
@@ -375,7 +369,7 @@ static void __put_css_set(struct css_set *cg, int taskexit) }write_unlock (&css_set_lock); -call_rcu (&cg->rcu_head, free_css_set_rcu); +kfree_rcu (cg, rcu_head); }/*
Signature · 1 line
1.7.4
A message that is not in the archive (sent off-list or not yet received): [email protected]
Paul Menage
Acked-byRe: [PATCH 01/17] cgroup, rcu: convert call_rcu(free_css_set_rcu) to kfree_rcu()
2011/3/15 Lai Jiangshan <[email protected]>:
Quoted 5 lines
The rcu callback
free_css_set_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(free_css_set_rcu).Signed-off-by Lai Jiangshan <[email protected]>
Looks fine, assuming the main kfree_rcu() changes go through.
Paul
PATCH 2/17 cgroup, rcu: convert call_rcu(free_cgroup_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback free_cgroup_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(free_cgroup_rcu).
--- kernel/cgroup.c | 9 +-------- 1 files changed, 1 insertions(+), 8 deletions(-)
kernel/cgroup.c +1 -8
@@ -806,13 +806,6 @@ static int cgroup_call_pre_destroy(struct cgroup *cgrp)return ret; } -static void free_cgroup_rcu (struct rcu_head *obj) -{ - struct cgroup *cgrp = container_of(obj, struct cgroup, rcu_head); - -kfree (cgrp); -} -static void cgroup_diput (struct dentry *dentry,struct inode *inode) {/* is dentry a directory ? if so, kfree() associated cgroup */
@@ -850,7 +843,7 @@ static void cgroup_diput(struct dentry *dentry, struct inode *inode)*/ BUG_ON (!list_empty (&cgrp->pidlists)); -call_rcu (&cgrp->rcu_head, free_cgroup_rcu); +kfree_rcu (cgrp, rcu_head); }iput (inode); }
Signature · 1 line
1.7.4
A message that is not in the archive (sent off-list or not yet received): [email protected]
Paul Menage
Acked-byRe: [PATCH 02/17] cgroup, rcu: convert call_rcu(free_cgroup_rcu) to kfree_rcu()
2011/3/15 Lai Jiangshan <[email protected]>:
Quoted 5 lines
The rcu callback
free_cgroup_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(free_cgroup_rcu).Signed-off-by Lai Jiangshan <[email protected]>
Quoted 34 lines
---
kernel/cgroup.c | 9 +--------1 files changed, 1 insertions(+), 8 deletions(-)kernel/cgroup.c +1
-9@@ -806,13 +806,6 @@ static int cgroup_call_pre_destroy(struct cgroup *cgrp) return ret; } -static void free_cgroup_rcu (struct rcu_head *obj) -{ - struct cgroup *cgrp = container_of(obj, struct cgroup, rcu_head); - - kfree(cgrp); -} - static void cgroup_diput(struct dentry *dentry, struct inode *inode) { /* is dentry a directory ? if so, kfree() associated cgroup */@@ -850,7 +843,7 @@ static void cgroup_diput(struct dentry *dentry, struct inode *inode)*/ BUG_ON(!list_empty(&cgrp->pidlists)); - call_rcu(&cgrp->rcu_head, free_cgroup_rcu); + kfree_rcu(cgrp, rcu_head); } iput(inode); } --1.7.4
PATCH 3/17 cgroup, rcu: convert call_rcu(__free_css_id_cb) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback __free_css_id_cb() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(__free_css_id_cb).
--- kernel/cgroup.c | 10 +--------- 1 files changed, 1 insertions(+), 9 deletions(-)
kernel/cgroup.c +1 -9
@@ -4612,14 +4612,6 @@ bool css_is_ancestor(struct cgroup_subsys_state *child,return ret; } -static void __free_css_id_cb (struct rcu_head *head) -{ -struct css_id *id; - - id = container_of(head, struct css_id, rcu_head); -kfree (id); -} -void free_css_id (struct cgroup_subsys *ss,struct cgroup_subsys_state *css) {struct css_id *id = css->id;
@@ -4634,7 +4626,7 @@ void free_css_id(struct cgroup_subsys *ss, struct cgroup_subsys_state *css)spin_lock (&ss->id_lock);idr_remove (&ss->idr, id->id);spin_unlock (&ss->id_lock); -call_rcu (&id->rcu_head, __free_css_id_cb); +kfree_rcu (id, rcu_head); }EXPORT_SYMBOL_GPL (free_css_id);
Signature · 1 line
1.7.4
A message that is not in the archive (sent off-list or not yet received): [email protected]
Paul Menage
Acked-byRe: [PATCH 03/17] cgroup, rcu: convert call_rcu(__free_css_id_cb) to kfree_rcu()
2011/3/15 Lai Jiangshan <[email protected]>:
Quoted 6 lines
The rcu callback
__free_css_id_cb()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(__free_css_id_cb).Signed-off-by Lai Jiangshan <[email protected]>
Quoted 35 lines
---
kernel/cgroup.c | 10 +---------1 files changed, 1 insertions(+), 9 deletions(-)kernel/cgroup.c +1
-10@@ -4612,14 +4612,6 @@ bool css_is_ancestor(struct cgroup_subsys_state *child, return ret; } -static void __free_css_id_cb (struct rcu_head *head) -{ - struct css_id *id; - - id = container_of(head, struct css_id, rcu_head); - kfree(id); -} - void free_css_id(struct cgroup_subsys *ss, struct cgroup_subsys_state *css) { struct css_id *id = css->id;@@ -4634,7 +4626,7 @@ void free_css_id(struct cgroup_subsys *ss, struct cgroup_subsys_state *css) spin_lock(&ss->id_lock); idr_remove(&ss->idr, id->id); spin_unlock(&ss->id_lock); - call_rcu(&id->rcu_head, __free_css_id_cb); + kfree_rcu(id, rcu_head); } EXPORT_SYMBOL_GPL(free_css_id); --1.7.4
PATCH 4/17 net, rcu: convert call_rcu(tcf_common_free_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback tcf_common_free_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(tcf_common_free_rcu).
--- net/sched/act_api.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-)
net/sched/act_api.c +1 -6
@@ -26,11 +26,6 @@#include <net/act_api.h> #include <net/netlink.h> -static void tcf_common_free_rcu (struct rcu_head *head) -{ -kfree (container_of(head ,struct tcf_common ,tcfc_rcu )); -} -void tcf_hash_destroy (struct tcf_common *p,struct tcf_hashinfo *hinfo) {unsigned int h =tcf_hash (p->tcfc_index, hinfo->hmask);
@@ -47,7 +42,7 @@ void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo)* gen_estimator est_timer() might access p->tcfc_lock * or bstats, wait a RCU grace period before freeing p */ -call_rcu (&p->tcfc_rcu, tcf_common_free_rcu); +kfree_rcu (p, tcfc_rcu);return ; } }
Signature · 1 line
1.7.4
Re: [PATCH 04/17] net,rcu: convert call_rcu(tcf_common_free_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 17:57:04 +0800
Quoted 6 lines
The rcu callback
tcf_common_free_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(tcf_common_free_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 5/17 net, rcu: convert call_rcu(tcf_police_free_rcu) to kfree_rcu()
In reply to a message not in the archive[PATCH 05/17] net,rcu: convert call_rcu(tcf_police_free_rcu) to kfree_rcu()
The rcu callback tcf_police_free_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(tcf_police_free_rcu).
--- net/sched/act_police.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-)
net/sched/act_police.c +1 -6
@@ -97,11 +97,6 @@ nla_put_failure: goto done; } -static void tcf_police_free_rcu (struct rcu_head *head) -{ -kfree (container_of(head ,struct tcf_police ,tcf_rcu )); -} -static void tcf_police_destroy (struct tcf_police *p) {unsigned int h =tcf_hash (p->tcf_index,POL_TAB_MASK );
@@ -122,7 +117,7 @@ static void tcf_police_destroy(struct tcf_police *p)* gen_estimator est_timer() might access p->tcf_lock * or bstats, wait a RCU grace period before freeing p */ -call_rcu (&p->tcf_rcu, tcf_police_free_rcu); +kfree_rcu (p, tcf_rcu);return ; } }
Signature · 1 line
1.7.4
Re: [PATCH 05/17] net,rcu: convert call_rcu(tcf_police_free_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 17:58:00 +0800
Quoted 6 lines
[PATCH 05/17] net,rcu: convert
call_rcu(tcf_police_free_rcu)tokfree_rcu()The rcu callback
tcf_police_free_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(tcf_police_free_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 6/17 net,rcu: convert call_rcu(in6_dev_finish_destroy_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback in6_dev_finish_destroy_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(in6_dev_finish_destroy_rcu).
--- net/ipv6/addrconf.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-)
net/ipv6/addrconf.c +1 -7
@@ -317,12 +317,6 @@ static void snmp6_free_dev(struct inet6_dev *idev)/* Nobody refers to this device, we may destroy it. */ -static void in6_dev_finish_destroy_rcu (struct rcu_head *head) -{ - struct inet6_dev *idev = container_of(head, struct inet6_dev, rcu); -kfree (idev); -} -void in6_dev_finish_destroy (struct inet6_dev *idev) {struct net_device *dev = idev->dev;
@@ -339,7 +333,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)return ; }snmp6_free_dev (idev); -call_rcu (&idev->rcu, in6_dev_finish_destroy_rcu); +kfree_rcu (idev, rcu); }EXPORT_SYMBOL (in6_dev_finish_destroy);
Signature · 1 line
1.7.4
Re: [PATCH 06/17] net,rcu: convert call_rcu(in6_dev_finish_destroy_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 17:59:14 +0800
Quoted 6 lines
The rcu callback
in6_dev_finish_destroy_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(in6_dev_finish_destroy_rcu).Signed-off-by Lai Jiangshan <[email protected]>
A message that is not in the archive (sent off-list or not yet received): [email protected]
David Miller
Acked-byRe: [PATCH 06/17] net,rcu: convert call_rcu(in6_dev_finish_destroy_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 17:59:14 +0800
Quoted 6 lines
The rcu callback
in6_dev_finish_destroy_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(in6_dev_finish_destroy_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 7/17 net, rcu: convert call_rcu(inet6_ifa_finish_destroy_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback inet6_ifa_finish_destroy_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(inet6_ifa_finish_destroy_rcu).
--- net/ipv6/addrconf.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-)
net/ipv6/addrconf.c +1 -7
@@ -529,12 +529,6 @@ static int addrconf_fixup_forwarding(struct ctl_table *table, int *p, int old) }#endif -static void inet6_ifa_finish_destroy_rcu (struct rcu_head *head) -{ - struct inet6_ifaddr *ifp = container_of(head, struct inet6_ifaddr, rcu); -kfree (ifp); -} -/* Nobody refers to this ifaddr, destroy it */ void inet6_ifa_finish_destroy (struct inet6_ifaddr *ifp) {
@@ -555,7 +549,7 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp) }dst_release (&ifp->rt->dst); -call_rcu (&ifp->rcu, inet6_ifa_finish_destroy_rcu); +kfree_rcu (ifp, rcu); } static void
Signature · 1 line
1.7.4
Re: [PATCH 07/17] net,rcu: convert call_rcu(inet6_ifa_finish_destroy_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:00:14 +0800
Quoted 6 lines
The rcu callback
inet6_ifa_finish_destroy_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(inet6_ifa_finish_destroy_rcu).Signed-off-by Lai Jiangshan <[email protected]>
A message that is not in the archive (sent off-list or not yet received): [email protected]
David Miller
Acked-byRe: [PATCH 07/17] net,rcu: convert call_rcu(inet6_ifa_finish_destroy_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:00:14 +0800
Quoted 6 lines
The rcu callback
inet6_ifa_finish_destroy_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(inet6_ifa_finish_destroy_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 8/17 net, rcu: convert call_rcu(listeners_free_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback listeners_free_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(listeners_free_rcu).
--- net/netlink/af_netlink.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-)
net/netlink/af_netlink.c +1 -7
@@ -1575,12 +1575,6 @@ netlink_kernel_release(struct sock *sk) }EXPORT_SYMBOL (netlink_kernel_release); - -static void listeners_free_rcu (struct rcu_head *head) -{ -kfree (container_of(head ,struct listeners ,rcu )); -} -int __netlink_change_ngroups (struct sock *sk,unsigned int groups) {struct listeners *new, *old;
@@ -1597,7 +1591,7 @@ int __netlink_change_ngroups(struct sock *sk, unsigned int groups)memcpy (new->masks, old->masks,NLGRPSZ (tbl->groups));rcu_assign_pointer (tbl->listeners, new); -call_rcu (&old->rcu, listeners_free_rcu); +kfree_rcu (old, rcu); } tbl->groups = groups;
Signature · 1 line
1.7.4
Re: [PATCH 08/17] net,rcu: convert call_rcu(listeners_free_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:01:42 +0800
Quoted 6 lines
The rcu callback
listeners_free_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(listeners_free_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 9/17 net,rcu: convert call_rcu(kfree_tid_tx) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback kfree_tid_tx() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(kfree_tid_tx).
--- net/mac80211/agg-tx.c | 14 +++----------- 1 files changed, 3 insertions(+), 11 deletions(-)
net/mac80211/agg-tx.c +3 -11
@@ -136,14 +136,6 @@ void ieee80211_send_bar(struct ieee80211_sub_if_data *sdata, u8 *ra, u16 tid, u1ieee80211_tx_skb (sdata, skb); } -static void kfree_tid_tx (struct rcu_head *rcu_head) -{ -struct tid_ampdu_tx *tid_tx = - container_of(rcu_head, struct tid_ampdu_tx, rcu_head); - -kfree (tid_tx); -} -int ___ieee80211_stop_tx_ba_session (struct sta_info *sta,u16 tid,enum ieee80211_back_parties initiator,bool tx)
@@ -163,7 +155,7 @@ int ___ieee80211_stop_tx_ba_session(struct sta_info *sta, u16 tid,/* not even started yet! */ rcu_assign_pointer (sta->ampdu_mlme.tid_tx[tid],NULL );spin_unlock_bh (&sta->lock); -call_rcu (&tid_tx->rcu_head, kfree_tid_tx); +kfree_rcu (tid_tx, rcu_head);return 0 ; }
@@ -322,7 +314,7 @@ void ieee80211_tx_ba_session_handle_start(struct sta_info *sta, int tid)spin_unlock_bh (&sta->lock);ieee80211_wake_queue_agg (local, tid); -call_rcu (&tid_tx->rcu_head, kfree_tid_tx); +kfree_rcu (tid_tx, rcu_head);return ; }
@@ -699,7 +691,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid)ieee80211_agg_splice_finish (local, tid); -call_rcu (&tid_tx->rcu_head, kfree_tid_tx); +kfree_rcu (tid_tx, rcu_head); unlock_sta:spin_unlock_bh (&sta->lock);
Signature · 1 line
1.7.4
PATCH 10/17 audit_tree, rcu: convert call_rcu(__put_tree) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback __put_tree() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(__put_tree).
--- kernel/audit_tree.c | 8 +------- 1 files changed, 1 insertions(+), 7 deletions(-)
kernel/audit_tree.c +1 -7
@@ -93,16 +93,10 @@ static inline void get_tree(struct audit_tree *tree)atomic_inc (&tree->count); } -static void __put_tree (struct rcu_head *rcu) -{ - struct audit_tree *tree = container_of(rcu, struct audit_tree, head); -kfree (tree); -} -static inline void put_tree (struct audit_tree *tree) {if (atomic_dec_and_test (&tree->count)) -call_rcu (&tree->head, __put_tree); +kfree_rcu (tree, head); }/* to avoid bringing the entire thing in audit.h */
Signature · 1 line
1.7.4
PATCH 11/17 net,rcu: convert call_rcu(sctp_local_addr_free) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback sctp_local_addr_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(sctp_local_addr_free).
--- include/net/sctp/sctp.h | 1 - net/sctp/bind_addr.c | 2 +- net/sctp/ipv6.c | 2 +- net/sctp/protocol.c | 9 +-------- 4 files changed, 3 insertions(+), 11 deletions(-)
include/net/sctp/sctp.h +0 -1
@@ -115,7 +115,6 @@* sctp/protocol.c */ extern struct sock *sctp_get_ctl_sock (void ); -extern void sctp_local_addr_free (struct rcu_head *head);extern int sctp_copy_local_addr_list (struct sctp_bind_addr *,sctp_scope_t ,gfp_t gfp,int flags);
net/sctp/bind_addr.c +1 -1
@@ -219,7 +219,7 @@ int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) }if (found) { -call_rcu (&addr->rcu, sctp_local_addr_free); +kfree_rcu (addr, rcu);SCTP_DBG_OBJCNT_DEC (addr);return 0 ; }
net/sctp/ipv6.c +1 -1
@@ -123,7 +123,7 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, }spin_unlock_bh (&sctp_local_addr_lock);if (found) -call_rcu (&addr->rcu, sctp_local_addr_free); +kfree_rcu (addr, rcu);break ; }
net/sctp/protocol.c +1 -8
@@ -230,13 +230,6 @@ static void sctp_free_local_addr_list(void) } } -void sctp_local_addr_free (struct rcu_head *head) -{ -struct sctp_sockaddr_entry *e =container_of (head, - struct sctp_sockaddr_entry, rcu); -kfree (e); -} -/* Copy the local addresses which are valid for 'scope' into 'bp'. */ int sctp_copy_local_addr_list (struct sctp_bind_addr *bp,sctp_scope_t scope,gfp_t gfp,int copy_flags)
@@ -680,7 +673,7 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev, }spin_unlock_bh (&sctp_local_addr_lock);if (found) -call_rcu (&addr->rcu, sctp_local_addr_free); +kfree_rcu (addr, rcu);break ; }
Signature · 1 line
1.7.4
Re: [PATCH 11/17] net,rcu: convert call_rcu(sctp_local_addr_free) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:05:02 +0800
Quoted 6 lines
The rcu callback
sctp_local_addr_free()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(sctp_local_addr_free).Signed-off-by Lai Jiangshan <[email protected]>
A message that is not in the archive (sent off-list or not yet received): [email protected]
David Miller
Acked-byRe: [PATCH 11/17] net,rcu: convert call_rcu(sctp_local_addr_free) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:05:02 +0800
Quoted 6 lines
The rcu callback
sctp_local_addr_free()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(sctp_local_addr_free).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 12/17 block, rcu: convert call_rcu(cfq_cfqd_free) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback cfq_cfqd_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(cfq_cfqd_free).
--- block/cfq-iosched.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-)
block/cfq-iosched.c +1 -6
@@ -3812,11 +3812,6 @@ static void cfq_put_async_queues(struct cfq_data *cfqd)cfq_put_queue (cfqd->async_idle_cfqq); } -static void cfq_cfqd_free (struct rcu_head *head) -{ -kfree (container_of(head ,struct cfq_data ,rcu )); -} -static void cfq_exit_queue (struct elevator_queue *e) {struct cfq_data *cfqd = e->elevator_data;
@@ -3850,7 +3845,7 @@ static void cfq_exit_queue(struct elevator_queue *e)spin_unlock (&cic_index_lock);/* Wait for cfqg->blkg->key accessors to exit their grace periods. */ -call_rcu (&cfqd->rcu, cfq_cfqd_free); +kfree_rcu (cfqd, rcu); }static int cfq_alloc_cic_index (void )
Signature · 1 line
1.7.4
PATCH 13/17 nfs, rcu: convert call_rcu(nfs_free_delegation_callback) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback nfs_free_delegation_callback() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(nfs_free_delegation_callback).
--- fs/nfs/delegation.c | 14 +------------- 1 files changed, 1 insertions(+), 13 deletions(-)
fs/nfs/delegation.c +1 -13
@@ -21,25 +21,13 @@#include "delegation.h" #include "internal.h" -static void nfs_do_free_delegation (struct nfs_delegation *delegation) -{ -kfree (delegation); -} - -static void nfs_free_delegation_callback (struct rcu_head *head) -{ - struct nfs_delegation *delegation = container_of(head, struct nfs_delegation, rcu); - -nfs_do_free_delegation (delegation); -} -static void nfs_free_delegation (struct nfs_delegation *delegation) {if (delegation->cred) {put_rpccred (delegation->cred); delegation->cred =NULL ; } -call_rcu (&delegation->rcu, nfs_free_delegation_callback); +kfree_rcu (delegation, rcu); }/**
Signature · 1 line
1.7.4
PATCH 14/17 security,rcu: convert call_rcu(whitelist_item_free) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback whitelist_item_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(whitelist_item_free).
--- security/device_cgroup.c | 10 +--------- 1 files changed, 1 insertions(+), 9 deletions(-)
security/device_cgroup.c +1 -9
@@ -126,14 +126,6 @@ static int dev_whitelist_add(struct dev_cgroup *dev_cgroup,return 0 ; } -static void whitelist_item_free (struct rcu_head *rcu) -{ -struct dev_whitelist_item *item; - - item = container_of(rcu, struct dev_whitelist_item, rcu); -kfree (item); -} -/* * called under devcgroup_mutex */
@@ -156,7 +148,7 @@ remove: walk->access &= ~wh->access;if (!walk->access) {list_del_rcu (&walk->list); -call_rcu (&walk->rcu, whitelist_item_free); +kfree_rcu (walk, rcu); } } }
Signature · 1 line
1.7.4
PATCH 15/17 net,rcu: convert call_rcu(ha_rcu_free) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback ha_rcu_free() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(ha_rcu_free).
--- net/core/dev_addr_lists.c | 12 ++---------- 1 files changed, 2 insertions(+), 10 deletions(-)
net/core/dev_addr_lists.c +2 -10
@@ -68,14 +68,6 @@ static int __hw_addr_add(struct netdev_hw_addr_list *list, unsigned char *addr,return __hw_addr_add_ex (list, addr, addr_len, addr_type, false); } -static void ha_rcu_free (struct rcu_head *head) -{ -struct netdev_hw_addr *ha; - - ha = container_of(head, struct netdev_hw_addr, rcu_head); -kfree (ha); -} -static int __hw_addr_del_ex (struct netdev_hw_addr_list *list,unsigned char *addr,int addr_len,unsigned char addr_type,bool global)
@@ -94,7 +86,7 @@ static int __hw_addr_del_ex(struct netdev_hw_addr_list *list,if (--ha->refcount)return 0 ;list_del_rcu (&ha->list); -call_rcu (&ha->rcu_head, ha_rcu_free); +kfree_rcu (ha, rcu_head); list->count--;return 0 ; }
@@ -197,7 +189,7 @@ void __hw_addr_flush(struct netdev_hw_addr_list *list)list_for_each_entry_safe (ha, tmp, &list->list, list) {list_del_rcu (&ha->list); -call_rcu (&ha->rcu_head, ha_rcu_free); +kfree_rcu (ha, rcu_head); } list->count =0 ; }
Signature · 1 line
1.7.4
Re: [PATCH 15/17] net,rcu: convert call_rcu(ha_rcu_free) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:08:58 +0800
Quoted 6 lines
The rcu callback
ha_rcu_free()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(ha_rcu_free).Signed-off-by Lai Jiangshan <[email protected]>
A message that is not in the archive (sent off-list or not yet received): [email protected]
David Miller
Acked-byRe: [PATCH 15/17] net,rcu: convert call_rcu(ha_rcu_free) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:08:58 +0800
Quoted 6 lines
The rcu callback
ha_rcu_free()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(ha_rcu_free).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 16/17 net, rcu: convert call_rcu(dn_dev_free_ifa_rcu) to kfree_rcu()
In reply to a message not in the archiveThe rcu callback dn_dev_free_ifa_rcu() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(dn_dev_free_ifa_rcu).
--- net/decnet/dn_dev.c | 7 +------ 1 files changed, 1 insertions(+), 6 deletions(-)
net/decnet/dn_dev.c +1 -6
@@ -332,14 +332,9 @@ static struct dn_ifaddr *dn_dev_alloc_ifa(void)return ifa; } -static void dn_dev_free_ifa_rcu (struct rcu_head *head) -{ -kfree (container_of(head ,struct dn_ifaddr ,rcu )); -} -static void dn_dev_free_ifa (struct dn_ifaddr *ifa) { -call_rcu (&ifa->rcu, dn_dev_free_ifa_rcu); +kfree_rcu (ifa, rcu); }static void dn_dev_del_ifa (struct dn_dev *dn_db,struct dn_ifaddr __rcu **ifap,int destroy)
Signature · 1 line
1.7.4
Re: [PATCH 16/17] net,rcu: convert call_rcu(dn_dev_free_ifa_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:10:12 +0800
Quoted 5 lines
The rcu callback
dn_dev_free_ifa_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(dn_dev_free_ifa_rcu).Signed-off-by Lai Jiangshan <[email protected]>
A message that is not in the archive (sent off-list or not yet received): [email protected]
David Miller
Acked-byRe: [PATCH 16/17] net,rcu: convert call_rcu(dn_dev_free_ifa_rcu) to kfree_rcu()
From: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:10:12 +0800
Quoted 5 lines
The rcu callback
dn_dev_free_ifa_rcu()just calls akfree(), so we usekfree_rcu()instead of thecall_rcu(dn_dev_free_ifa_rcu).Signed-off-by Lai Jiangshan <[email protected]>
PATCH 17/17 net,act_police,rcu: remove rcu_barrier()
In reply to a message not in the archiveThere is no callback of this module maybe queued
since we use kfree_rcu(), we can safely remove the rcu_barrier().
--- net/sched/act_police.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
net/sched/act_police.c +0 -1
@@ -397,7 +397,6 @@ static void __exitpolice_cleanup_module (void) {tcf_unregister_action (&act_police_ops); -rcu_barrier ();/* Wait for completion of call_rcu()'s (tcf_police_free_rcu) */ }module_init (police_init_module);
Signature · 1 line
1.7.4
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH 17/17] net,act_police,rcu: remove rcu_barrier()
Quoted 14 lines · Lai Jiangshan
There is no callback of this module maybe queued
since we usekfree_rcu(), we can safely remove thercu_barrier().Signed-off-by Lai Jiangshan <[email protected]>--- net/sched/act_police.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)net/sched/act_police.c +0
-0
net/sched/act_police.c static void __exit · line 402
Quoted 7 lines
net/sched/act_police.c +0
-1@@ -397,7 +397,6 @@ static void __exitpolice_cleanup_module (void) {tcf_unregister_action (&act_police_ops); -rcu_barrier ();/* Wait for completion of call_rcu()'s (tcf_police_free_rcu) */ }module_init (police_init_module);
Why is it a separate patch, and not included in patch 5/17 ?
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers
Re: [PATCH 17/17] net,act_police,rcu: remove rcu_barrier()
Quoted 21 lines · Eric Dumazet
Quoted 20 lines · Lai Jiangshan
There is no callback of this module maybe queued
since we usekfree_rcu(), we can safely remove thercu_barrier().Signed-off-by Lai Jiangshan <[email protected]>--- net/sched/act_police.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)net/sched/act_police.c +0
-1@@ -397,7 +397,6 @@ static void __exitpolice_cleanup_module (void) {tcf_unregister_action (&act_police_ops); -rcu_barrier ();/* Wait for completion of call_rcu()'s (tcf_police_free_rcu) */ }
Quoted 5 lines
net/sched/act_police.c static void __exit · line 402
Quoted 1 line
net/sched/act_police.c +0
-0module_init (police_init_module);Why is it a separate patch, and not included in patch 5/17 ?
A simple_kfree_callback() a patch, if a module has multiple simple_kfree_callback()s, "rcu_barrier()" in module_exit function should only be removed after all callback()s are converted to kfree_rcu(). Separate patches makes things clearer.
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers
David Miller
Acked-byRe: [PATCH 17/17] net,act_police,rcu: remove rcu_barrier()
In reply to a message not in the archiveFrom: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:11:46 +0800
Quoted 6 lines
There is no callback of this module maybe queued
since we usekfree_rcu(), we can safely remove thercu_barrier().Signed-off-by Lai Jiangshan <[email protected]>
Re: [PATCH 17/17] net,act_police,rcu: remove rcu_barrier()
In reply to Lai JiangshanFrom: Lai Jiangshan <[email protected]>
Date: Tue, 15 Mar 2011 18:11:46 +0800
Quoted 6 lines
There is no callback of this module maybe queued
since we usekfree_rcu(), we can safely remove thercu_barrier().Signed-off-by Lai Jiangshan <[email protected]>