"Serge E. Hallyn" <serue@xxxxxxxxxx> writes: > Quoting Samir Bellabes (sam@xxxxxxxxx): >> +int snet_event_fill_info(struct sk_buff *skb, struct netlink_callback *cb) >> +{ >> + unsigned int i = 0, n = 0; >> + int ret = -1; >> + unsigned hashs_to_skip = cb->args[0]; >> + unsigned events_to_skip = cb->args[1]; >> + struct list_head *l; >> + struct snet_event_entry *s; >> + >> + read_lock_bh(&event_hash_lock); >> + >> + if (!event_hash) >> + goto errout; >> + >> + for (i = 0; i < event_hash_size; i++) { >> + if (i < hashs_to_skip) >> + continue; > > What is this? code was duplicated from ctrl_dumpfamily() at net/netlink/genetlink.c this can be optimized by: for (i = hashs_to_skip; i < event_hash_size; i++) { I will made a patch for ctrl_dumpfamily() right now. >> + l = &event_hash[i]; >> + n = 0; >> + list_for_each_entry(s, l, list) { >> + if (++n < events_to_skip) >> + continue; >> + ret = snet_nl_list_fill_info(skb, >> + NETLINK_CB(cb->skb).pid, >> + cb->nlh->nlmsg_seq, >> + NLM_F_MULTI, >> + s->se.protocol, >> + s->se.syscall); >> + if (ret < 0) >> + goto errout; > > So if it returns 0, presumably meaning successfully handled, you > want to go on processing any duplicates? first, I found a bug in snet_nl_list_fill_info() which was returning 0 instead of -EMSGSIZE in case there was not enough space to put data. I'm not sure to understand what may have duplicates, but if you are talking about the events (struct snet_event_entry), that is not possible as the insert function checks if the event is already in the hashtable snet_evh before insertion. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html