Message ID | 1420609318-3261-7-git-send-email-ying.xue@windriver.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On 01/07/15 at 01:41pm, Ying Xue wrote: > Signed-off-by: Ying Xue <ying.xue@windriver.com> > Cc: Thomas Graf <tgraf@suug.ch> Is this really needed at all? We initialize the full rhashtable struct to 0 in rhashtable_init(). -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 01/07/2015 05:53 PM, Thomas Graf wrote: > On 01/07/15 at 01:41pm, Ying Xue wrote: >> Signed-off-by: Ying Xue <ying.xue@windriver.com> >> Cc: Thomas Graf <tgraf@suug.ch> > > Is this really needed at all? We initialize the full rhashtable > struct to 0 in rhashtable_init(). > > I am not sure whether we really need to reinitialize atomic variable again although we have reset it with memset() or something else. But I see many places in kernel where we do this, for example: Although we use kmem_cache_zalloc() to allocate "net" structure instance in net_alloc(), there are still several places where to reinitialize its atomic variables again: setup_net() atomic_set(&net->use_count, 0); rt_genid_init() atomic_set(&net->ipv4.rt_genid, 0); atomic_set(&net->fnhe_genid, 0); Can you please definitely confirm that the reinitialisation is redundant for us? Regards, Ying -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 01/07/15 at 06:26pm, Ying Xue wrote: > I am not sure whether we really need to reinitialize atomic variable > again although we have reset it with memset() or something else. But I > see many places in kernel where we do this, for example: > > Although we use kmem_cache_zalloc() to allocate "net" structure instance > in net_alloc(), there are still several places where to reinitialize its > atomic variables again: > > setup_net() > atomic_set(&net->use_count, 0); > > rt_genid_init() > atomic_set(&net->ipv4.rt_genid, 0); > atomic_set(&net->fnhe_genid, 0); > > Can you please definitely confirm that the reinitialisation is redundant > for us? I see examples for both, explicit initialization and dependence on a previous memset. I'm not sure what is the preferred way. I'll provide my ACK since this obviously doesn't break anything and leave it up to Dave. Acked-by: Thomas Graf <tgraf@suug.ch> -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 7fb474b..8023b55 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -847,6 +847,7 @@ int rhashtable_init(struct rhashtable *ht, struct rhashtable_params *params) if (tbl == NULL) return -ENOMEM; + atomic_set(&ht->nelems, 0); atomic_set(&ht->shift, ilog2(tbl->size)); RCU_INIT_POINTER(ht->tbl, tbl); RCU_INIT_POINTER(ht->future_tbl, tbl);
Signed-off-by: Ying Xue <ying.xue@windriver.com> Cc: Thomas Graf <tgraf@suug.ch> --- lib/rhashtable.c | 1 + 1 file changed, 1 insertion(+)