Date: Fri, 21 Oct 2005 12:39:33 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-hackers@freebsd.org Cc: delphij <delphij@freebsd.org>, das <das@freebsd.org>, freebsd-current <freebsd-current@freebsd.org>, nocool <nocool@263.net> Subject: Re: where to release proc.p_stats Message-ID: <200510211239.35190.jhb@freebsd.org> In-Reply-To: <20051021131329.A16FC126E@smtp.263.net> References: <20051021131329.A16FC126E@smtp.263.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Friday 21 October 2005 09:13 am, nocool wrote:
> freebsd-hackers=EF=BC=8Chello
>
> Question about 5.4 kernel source code.
> I have some question about strust proc's initialize. Kernel use proc_zone
> to allocate proc items and initialize them with proc_init
> (sys\kern\kern_proc.c) function. In this function, we can find the field
> proc.p_stats is allocated with pstats_alloc(), as
>
> p->p_stats =3D pstats_alloc();
>
> and pstats_alloc is realized as
>
> malloc(sizeof(struct pstats), M_SUBPROC, M_ZERO|M_WAITOK);
>
> But I can't find where this field is freed. If it will not be release, wi=
ll
> there be memory leakage?
Heh, das@ forgot to call pstats_free() when he did the changes. The reason=
=20
is probably because proc_fini() doesn't do anything useful because we never=
=20
recycle proc structs. We should probably at least add the operations there=
=20
though for documentation purposes. Something like this would work I think:
Index: kern_proc.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /usr/cvs/src/sys/kern/kern_proc.c,v
retrieving revision 1.232
diff -u -r1.232 kern_proc.c
=2D-- kern_proc.c 2 Oct 2005 23:27:56 -0000 1.232
+++ kern_proc.c 21 Oct 2005 16:38:45 -0000
@@ -197,7 +197,14 @@
proc_fini(void *mem, int size)
{
+#ifdef notnow
+ pstats_free(p->p_stats);
+ mtx_destroy(&p->p_mtx);
+ ksegrp_free(FIRST_KSEGRP_IN_PROC(p));
+ thread_free(FIRST_THREAD_IN_PROC(p));
+#else
panic("proc reclaimed");
+#endif
}
/*
=2D-=20
John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" =3D http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510211239.35190.jhb>
