Date: Tue, 17 Jan 2006 11:11:00 -0500 From: John Baldwin <jhb@freebsd.org> To: Doug Rabson <dfr@nlsystems.com> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/pci agp.c Message-ID: <200601171111.01942.jhb@freebsd.org> In-Reply-To: <1CDDC33C-01D5-4AFE-99C0-DE848321D78B@nlsystems.com> References: <200512202106.jBKL6hNr035186@repoman.freebsd.org> <1CDDC33C-01D5-4AFE-99C0-DE848321D78B@nlsystems.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 17 January 2006 06:51, Doug Rabson wrote:
> On 20 Dec 2005, at 21:06, John Baldwin wrote:
> > jhb 2005-12-20 21:06:43 UTC
> >
> > FreeBSD src repository
> >
> > Modified files:
> > sys/pci agp.c
> > Log:
> > Change the agp_find_device() to return the first agp device that
> > has been
> > attached to a driver rather than always returning agp0.
>
> According to Coverity, this introduces a memory leak
> (devclass_get_devices() allocates memory).
That it does. How about this fix:
Index: pci/agp.c
===================================================================
RCS file: /usr/cvs/src/sys/pci/agp.c,v
retrieving revision 1.50
diff -u -r1.50 agp.c
--- pci/agp.c 20 Dec 2005 21:06:43 -0000 1.50
+++ pci/agp.c 17 Jan 2006 16:10:20 -0000
@@ -830,18 +830,22 @@
device_t
agp_find_device()
{
- device_t *children;
+ device_t *children, child;
int i, count;
if (!agp_devclass)
return NULL;
if (devclass_get_devices(agp_devclass, &children, &count) != 0)
return NULL;
+ child = NULL;
for (i = 0; i < count; i++) {
- if (device_is_attached(children[i]))
- return (children[i]);
+ if (device_is_attached(children[i])) {
+ child = children[i];
+ break;
+ }
}
- return NULL;
+ free(children, M_TEMP);
+ return child;
}
enum agp_acquire_state
--
John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601171111.01942.jhb>
