Thanks for your time, Patrick, it's very much appreciated.

>> Since the rest of the assignments match I was left wondering, which
>> one is correct?
> 
> Both are fine.
> 2.4:
>         new->nfct=old->nfct;
>         nf_conntrack_get(new->nfct);
> 2.6:
>     new->nfct       = old->nfct;
>         nf_conntrack_get(old->nfct);

D'oh, now that you've pointed it out it's so obvious.

> So in both cases the same reference is grabbed. Since the patch which
> put a nf_reset in ip_finish_output2 helped, I suggest following the
> code path from there and place nf_reset statements anywhere the
> packet can take a path other than to the qdiscs, that should
> help locating the problem.

Ok, I have tried for a couple of hours but in vain. Problems:

- I don't really understand how to probe for paths not using qdiscs
  using skb as a source (skb->list check if list is empty?), which I
  would really like to do in ip_finish_output2(). Something along the
  lines of:

  if (list_empty(&skb->list)) {
     nf_reset(skb);
  }

- The net/* seems to be randomly sprinkled with nf_reset()'s without
  a clear documentation as to why (ipv4/ip_input.c:ip_call_ra_chain()
  for 2.6 kernel, maybe for skb_clone()'d packets), which makes it
  very hard to understand.
- Where exactly do we need to nf_conntrack_put()/nf_reset() skb's?

I wonder if the remaining references should just be zeroed once we are
in the i_see_dead_people part and the call stack reveils rmmod
ip_conntrack? :)

Cheers,
Roberto Nibali, ratz
-- 
echo
'[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq' | dc
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to