Re: sparc64: vnet: add size to free(9) call
> Date: Wed, 20 Jul 2022 19:38:13 + > From: Klemens Nanni > > On Wed, Jul 01, 2020 at 01:15:06AM +0200, Klemens Nanni wrote: > > Without any later realloactions, size is taken from vnet_dring_alloc(): > > > > struct vnet_dring *vd; > > ... > > vd = malloc(sizeof(struct vnet_dring), M_DEVBUF, M_NOWAIT); > > > > Tested on T4-2 guest domains: > > > > vnet0 at cbus0 chan 0x6: ivec 0xc, 0xd, address 00:14:4f:f9:3f:34 > > vnet1 at cbus0 chan 0x7: ivec 0xe, 0xf, address 00:14:4f:fb:05:2d > > > > Feedback? OK? > > Found this old diff still in my tree. > > vnet_init() does > sc_vd = vnet_dring_alloc(sc->sc_dmatag, VNET_NUM_SOFT_DESC); > > vnet_dring_alloc() allocates as per above, then > vnet_stop() does > vnet_dring_free(sc->sc_dmatag, sc->sc_vd); > > OK? sure ok kettenis@ > Index: sys/arch/sparc64/dev/vnet.c > === > RCS file: /cvs/src/sys/arch/sparc64/dev/vnet.c,v > retrieving revision 1.64 > diff -u -p -r1.64 vnet.c > --- sys/arch/sparc64/dev/vnet.c 24 Oct 2021 17:05:04 - 1.64 > +++ sys/arch/sparc64/dev/vnet.c 20 Jul 2022 19:33:55 - > @@ -1535,5 +1535,5 @@ vnet_dring_free(bus_dma_tag_t t, struct > bus_dmamem_unmap(t, (caddr_t)vd->vd_desc, size); > bus_dmamem_free(t, >vd_seg, 1); > bus_dmamap_destroy(t, vd->vd_map); > - free(vd, M_DEVBUF, 0); > + free(vd, M_DEVBUF, sizeof(*vd)); > } > >
Re: sparc64: vnet: add size to free(9) call
On Wed, Jul 01, 2020 at 01:15:06AM +0200, Klemens Nanni wrote: > Without any later realloactions, size is taken from vnet_dring_alloc(): > > struct vnet_dring *vd; > ... > vd = malloc(sizeof(struct vnet_dring), M_DEVBUF, M_NOWAIT); > > Tested on T4-2 guest domains: > > vnet0 at cbus0 chan 0x6: ivec 0xc, 0xd, address 00:14:4f:f9:3f:34 > vnet1 at cbus0 chan 0x7: ivec 0xe, 0xf, address 00:14:4f:fb:05:2d > > Feedback? OK? Found this old diff still in my tree. vnet_init() does sc_vd = vnet_dring_alloc(sc->sc_dmatag, VNET_NUM_SOFT_DESC); vnet_dring_alloc() allocates as per above, then vnet_stop() does vnet_dring_free(sc->sc_dmatag, sc->sc_vd); OK? Index: sys/arch/sparc64/dev/vnet.c === RCS file: /cvs/src/sys/arch/sparc64/dev/vnet.c,v retrieving revision 1.64 diff -u -p -r1.64 vnet.c --- sys/arch/sparc64/dev/vnet.c 24 Oct 2021 17:05:04 - 1.64 +++ sys/arch/sparc64/dev/vnet.c 20 Jul 2022 19:33:55 - @@ -1535,5 +1535,5 @@ vnet_dring_free(bus_dma_tag_t t, struct bus_dmamem_unmap(t, (caddr_t)vd->vd_desc, size); bus_dmamem_free(t, >vd_seg, 1); bus_dmamap_destroy(t, vd->vd_map); - free(vd, M_DEVBUF, 0); + free(vd, M_DEVBUF, sizeof(*vd)); }
sparc64: vnet: add size to free(9) call
Without any later realloactions, size is taken from vnet_dring_alloc(): struct vnet_dring *vd; ... vd = malloc(sizeof(struct vnet_dring), M_DEVBUF, M_NOWAIT); Tested on T4-2 guest domains: vnet0 at cbus0 chan 0x6: ivec 0xc, 0xd, address 00:14:4f:f9:3f:34 vnet1 at cbus0 chan 0x7: ivec 0xe, 0xf, address 00:14:4f:fb:05:2d Feedback? OK? diff --git a/sys/arch/sparc64/dev/vnet.c b/sys/arch/sparc64/dev/vnet.c index 147caf1f2..97883df76 100644 --- a/sys/arch/sparc64/dev/vnet.c +++ b/sys/arch/sparc64/dev/vnet.c @@ -1535,5 +1535,5 @@ vnet_dring_free(bus_dma_tag_t t, struct vnet_dring *vd) bus_dmamem_unmap(t, (caddr_t)vd->vd_desc, size); bus_dmamem_free(t, >vd_seg, 1); bus_dmamap_destroy(t, vd->vd_map); - free(vd, M_DEVBUF, 0); + free(vd, M_DEVBUF, sizeof(*vd)); }