On Mon, Sep 19, 2016 at 4:37 PM, Player, Timmons <timmons.pla...@spirent.com
> wrote:

> Well, KASSERT only actually fails in debug builds, so you’d never see a
> problem with a release build
> (since NDEBUG is defined in conf/release.mk).
>

So this patch looks like it is doing reasonable things to me, and I don't
see a
reason not to apply it, but I don't know if we're not just plastering over
some more
serious bug which causes this receiving-on-a-closed-connection case.

I can only think of some very unlikely situations where reordered
retransmissions
cause some duplicate packets to be received for a connection after the
FIN-ACK
was already received, but I wonder if this is really what happens in your
tests
(or in https://github.com/cloudius-systems/osv/issues/726) or we're seeing
evidence for a real bug in netchannels somewhere.

Avi, perhaps you can also look into this patch?



> Well, the only reason you end up in this state is that the net channel
> should have been torn down
> already, but hasn’t (though it could be in the process of doing so).
> Additionally, since the network driver calls directly into this function,
> you
> could potentially have a burst of packets destined for this no longer
> valid net channel.  So, it
> made sense to just close the channel here instead of allowing more packets
> to take this path
> into the stack.
>

So what worries me is that if this netchannel hasn't been torn down for a
reason - or being torn down in parallel - maybe it's not a good idea to
tear it
down here. Or maybe there is a case where we "leak" netchannels (never
tear them down) and here we're avoiding the leak in just one case but
leaving
it in other places?

Again, my worries likely come from not understanding this code enough,
sorry :-(


>
> Handing the packet off to netisr_dispatch allows the stack to generate a
> reset.
>

Sorry, I wasn't familiar with this "netisr_dispatch()" function.
Apparently ether_input() calls it, and ifp->if_input is ether_input().
So I guess it is indeed the right function to call.

-- 
You received this message because you are subscribed to the Google Groups "OSv 
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to osv-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to