on 27/07/2010 19:53 Gavin Atkinson said the following: > > Thanks. Can you try > http://people.freebsd.org/~gavin/mexas-hda-panic.diff > > and see if that solves things for you? > > (Credit goes to avg_at_ for looking into this before me :) BTW, it seems that there is an epidemic of "free(sc, M_DEVBUF)" in sound drivers. And not only them, but I haven't looked at the other cases - perhaps the code there does something different and thus correct. glimpse -w M_DEVBUF | fgrep -w free | fgrep '(sc,' /usr/src/sys/dev/sound/pci/hda/hdac.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_lagg.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_lagg.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_lagg.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_bridge.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_bridge.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/ich.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/ich.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/maestro3.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/maestro3.c: free(sc, M_DEVBUF); /usr/src/sys/net/if_enc.c: free(sc, M_DEVBUF); /usr/src/sys/sun4v/sun4v/simdisk.c: free(sc, M_DEVBUF); /usr/src/sys/dev/ofw/ofw_disk.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/isa/ess.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/sbus/cs4231.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/atiixp.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/emu10kx-pcm.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/emu10kx-pcm.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/emu10kx-pcm.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/ds1.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/ds1.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/cmi.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/cmi.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/neomagic.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/neomagic.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/neomagic.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/neomagic.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/solo.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/als4000.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/als4000.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/vibes.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/emu10k1.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/emu10k1.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/cs4281.c: free(sc, M_DEVBUF); /usr/src/sys/dev/sound/pci/cs4281.c: free(sc, M_DEVBUF); Good example of how get examples get multiplied. P.S. Actually all non-sound case seem to be correct, explicitly malloc-ed memory gets freed. -- Andriy GaponReceived on Wed Jul 28 2010 - 11:14:14 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:05 UTC