From owner-freebsd-current@FreeBSD.ORG Wed Jul 28 17:00:11 2010 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 267A01065675; Wed, 28 Jul 2010 17:00:11 +0000 (UTC) (envelope-from pyunyh@gmail.com) Received: from mail-pv0-f182.google.com (mail-pv0-f182.google.com [74.125.83.182]) by mx1.freebsd.org (Postfix) with ESMTP id 238EE8FC16; Wed, 28 Jul 2010 17:00:06 +0000 (UTC) Received: by pvh1 with SMTP id 1so1182546pvh.13 for ; Wed, 28 Jul 2010 10:00:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:received:from:date:to:cc :subject:message-id:reply-to:references:mime-version:content-type :content-disposition:in-reply-to:user-agent; bh=3i+6+BVvs4sUHLFgQ0CvpUEaDyeBAYC20SpKp5lxyRA=; b=X06ctL/4AeWBrJdaxhncTZdhBZgjQijXDKQNqGw2kjEYT3XUYvB7jZZ1KPRMlLgiD/ ktQzlK+fPe4yminTXWhd82RIDnD6+NpQO7k3Ck7o/1LAv/ljwDCNYjnEhoiBW2qaOirx JCHRn4n7QIi/yqtN8lAWL8pzd9ug4H5xi3PS4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:date:to:cc:subject:message-id:reply-to:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=KmiTSYWNqBcQUurz9IZWqgekQXMHkwTCz1FbCtNxa8U/XQcDXkPD3L5kZHvFAI79/V tcDQMmxJicvD90lQmZ50FlDN42/gMU4sLvU8ULQyl+8SgiqyfNNk4TbGBnOpeFieRIh8 DMKOXcTImojfrkANmbzLhU0A16Xm4k5/iVR6M= Received: by 10.114.136.18 with SMTP id j18mr15762155wad.99.1280336401155; Wed, 28 Jul 2010 10:00:01 -0700 (PDT) Received: from pyunyh@gmail.com ([174.35.1.224]) by mx.google.com with ESMTPS id c10sm11484769wam.13.2010.07.28.09.59.59 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 28 Jul 2010 09:59:59 -0700 (PDT) Received: by pyunyh@gmail.com (sSMTP sendmail emulation); Wed, 28 Jul 2010 09:59:17 -0700 From: Pyun YongHyeon Date: Wed, 28 Jul 2010 09:59:17 -0700 To: Andriy Gapon Message-ID: <20100728165917.GA7479@michelle.cdnetworks.com> References: <20100726132451.GA18443@mech-cluster241.men.bris.ac.uk> <1280226205.78791.0.camel@buffy.york.ac.uk> <20100727115831.GA46325@mech-cluster241.men.bris.ac.uk> <1280238737.78791.20.camel@buffy.york.ac.uk> <20100727144703.GA46905@mech-cluster241.men.bris.ac.uk> <1280249605.78791.36.camel@buffy.york.ac.uk> <4C502D22.10800@icyb.net.ua> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4C502D22.10800@icyb.net.ua> User-Agent: Mutt/1.4.2.3i Cc: Gavin Atkinson , freebsd-current@freebsd.org Subject: Re: free(sc, M_DEVBUF) [Was: amd64 panic snd_hda - hdac_get_capabilities: Invalid corb size (0)] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: pyunyh@gmail.com List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2010 17:00:11 -0000 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. > When I started to write snd_audiocs(4) for sparc64 I also noticed that. The practice of sound driver was to explicitly allocate softc structure in device attach routine and release it after use. I don't remember details but other parts of sound subsystem seemed to rely on the structure and changing it to use standard device_get_softc(9) was not easy task. > P.S. > Actually all non-sound case seem to be correct, explicitly malloc-ed memory gets > freed. > > -- > Andriy Gapon