tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/dev/pci



On Tue, Nov 29, 2016 at 21:54:11 +0000, Valeriy E. Ushakov wrote:

> Module Name:	src
> Committed By:	uwe
> Date:		Tue Nov 29 21:54:11 UTC 2016
> 
> Modified Files:
> 	src/sys/dev/pci: if_vioif.c
> 
> Log Message:
> vioif_start() - do not call virtio_enqueue_abort() after error from
> virtio_enqueue_reserve(), as it's already done by the latter, so we
> ended up with a kind of "double free" that messed up out free list of
> vq_entry's.
> 
> This is even documented in a "typical usage" comment in virtio.c (and
> those quotes are not intended to be sarcastic).
> 
> PR 51132 - virtio net device stuck for UDP burst transmission
> 
> 
> To generate a diff of this commit:
> cvs rdiff -u -r1.26 -r1.27 src/sys/dev/pci/if_vioif.c

This seems to be a common problem, as both ld at virtio and viornd
drivers do the same mistake too.

I'd appreciate if people can fix and test (with simulated failure if
necessary).

I wonder if http://gnats.netbsd.org/50604 might be caused by this as
the first time you run out of vq_entry's, you will end up with a
messed up free list.

-uwe


Home | Main Index | Thread Index | Old Index