From owner-svn-src-projects@FreeBSD.ORG Thu Jul 30 21:00:21 2009 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 25400106564A; Thu, 30 Jul 2009 21:00:21 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 135758FC0C; Thu, 30 Jul 2009 21:00:21 +0000 (UTC) (envelope-from stas@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n6UL0Kcc045820; Thu, 30 Jul 2009 21:00:20 GMT (envelope-from stas@svn.freebsd.org) Received: (from stas@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n6UL0Kvt045815; Thu, 30 Jul 2009 21:00:20 GMT (envelope-from stas@svn.freebsd.org) Message-Id: <200907302100.n6UL0Kvt045815@svn.freebsd.org> From: Stanislav Sedov Date: Thu, 30 Jul 2009 21:00:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r195981 - projects/libprocstat/usr.bin/fstat X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Jul 2009 21:00:21 -0000 Author: stas Date: Thu Jul 30 21:00:20 2009 New Revision: 195981 URL: http://svn.freebsd.org/changeset/base/195981 Log: - Add functions to free procstat-returned memory after usage. - Use these functions to free resources in fstat/fuser. Modified: projects/libprocstat/usr.bin/fstat/fstat.c projects/libprocstat/usr.bin/fstat/fuser.c projects/libprocstat/usr.bin/fstat/libprocstat.c projects/libprocstat/usr.bin/fstat/libprocstat.h Modified: projects/libprocstat/usr.bin/fstat/fstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/fstat.c Thu Jul 30 21:00:20 2009 (r195981) @@ -202,6 +202,7 @@ do_fstat(int argc, char **argv) dofiles(procstat, &p[i]); } free(p); + procstat_freeprocs(procstat, p); procstat_close(procstat); return (0); } @@ -224,6 +225,7 @@ dofiles(struct procstat *procstat, struc return; STAILQ_FOREACH(fst, head, next) print_file_info(procstat, fst, uname, cmd, pid); + procstat_freefiles(procstat, head); } Modified: projects/libprocstat/usr.bin/fstat/fuser.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/fuser.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/fuser.c Thu Jul 30 21:00:20 2009 (r195981) @@ -156,7 +156,6 @@ addfile(const char *path, struct reqfile reqfile->name = path; STAILQ_INIT(&reqfile->consumers); return (0); -/* XXX: devs? */ } int @@ -279,8 +278,9 @@ do_fuser(int argc, char *argv[]) } (void)fprintf(stderr, "\n"); } + procstat_freeprocs(procstat, p); procstat_close(procstat); - /* XXX: free resoucres .*/ + free(reqfiles); return (0); } @@ -350,7 +350,7 @@ dofiles(struct procstat *procstat, struc STAILQ_INSERT_TAIL(&reqfiles[i].consumers, cons, next); } } - /* XXX: free head */ + procstat_freefiles(procstat, head); } /* Modified: projects/libprocstat/usr.bin/fstat/libprocstat.c ============================================================================== --- projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/libprocstat.c Thu Jul 30 21:00:20 2009 (r195981) @@ -226,6 +226,14 @@ fail: return (NULL); } +void +procstat_freeprocs(struct procstat *procstat __unused, struct kinfo_proc *p) +{ + + if (p != NULL) + free(p); +} + struct filestat_list * procstat_getfiles(struct procstat *procstat, struct kinfo_proc *kp, int mmapped) { @@ -238,6 +246,20 @@ procstat_getfiles(struct procstat *procs return (NULL); } +void +procstat_freefiles(struct procstat *procstat, struct filestat_list *head) +{ + struct filestat *fst, *tmp; + + STAILQ_FOREACH_SAFE(fst, head, next, tmp) { + if (procstat->type == PROCSTAT_SYSCTL && + fst->fs_typedep != NULL) + free(fst->fs_typedep); + free(fst); + } + free(head); +} + static struct filestat * filestat_new_entry(void *typedep, int type, int fd, int fflags, int uflags) { Modified: projects/libprocstat/usr.bin/fstat/libprocstat.h ============================================================================== --- projects/libprocstat/usr.bin/fstat/libprocstat.h Thu Jul 30 20:50:56 2009 (r195980) +++ projects/libprocstat/usr.bin/fstat/libprocstat.h Thu Jul 30 21:00:20 2009 (r195981) @@ -138,6 +138,9 @@ struct sockstat { STAILQ_HEAD(filestat_list, filestat); void procstat_close(struct procstat *procstat); +void procstat_freeprocs(struct procstat *procstat, struct kinfo_proc *p); +void procstat_freefiles(struct procstat *procstat, + struct filestat_list *head); struct filestat_list *procstat_getfiles(struct procstat *procstat, struct kinfo_proc *kp, int mmapped); struct kinfo_proc *procstat_getprocs(struct procstat *procstat,