free(sc,
M_DEVBUF) [Was: amd64 panic snd_hda - hdac_get_capabilities:
Invalid corb size (0)]
Kostik Belousov
kostikbel at gmail.com
Wed Jul 28 13:18:55 UTC 2010
On Wed, Jul 28, 2010 at 04:14:10PM +0300, Andriy Gapon wrote:
> 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@ 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.
If anybody goes to make infrastructure work on the sound drivers,
it might be not that bad idea to replace clone.c with cdevpriv.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 196 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20100728/0b7ebf77/attachment.pgp
More information about the freebsd-current
mailing list