Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Mar 2000 11:10:55 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Doug Rabson <dfr@nlsystems.com>
Cc:        Benjamin Greenwald <beng@lcs.mit.edu>, freebsd-current@FreeBSD.ORG, dfr@FreeBSD.ORG, yokota@FreeBSD.ORG
Subject:   Re: panic: free: multiple frees
Message-ID:  <Pine.BSF.4.21.0003021042170.628-100000@alphplex.bde.org>
In-Reply-To: <Pine.BSF.4.21.0003012327240.8714-100000@salmon.nlsystems.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 1 Mar 2000, Doug Rabson wrote:

> I think it was a problem with psm.c which Peter has committed a fix for
> already. It bogusly freed the softc (sio.c does too but I doubt if it
> would happen in normal usage).

The free in sioclose() happens in normal usage after a pccard goes away.

Managing softc's outside the driver is the main bogon here in IMHO.
sioclose() needs to free the softc and remove it from any external
tables atomically with other closedowns.  It uses spltty() to prevent
races.  This will be fixed by using an internal table for com_addr()
again.

device_set_driver() has unnecessary races.  It frees the softc before
clearing the pointer to it.  Interrupt handlers shouldn't call it, but
some do.

Bruce



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0003021042170.628-100000>