From owner-svn-src-all@FreeBSD.ORG Sun Mar 3 23:23:36 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 85608CF1; Sun, 3 Mar 2013 23:23:36 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 5AA94E75; Sun, 3 Mar 2013 23:23:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r23NNaTT029683; Sun, 3 Mar 2013 23:23:36 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id r23NNZY4029680; Sun, 3 Mar 2013 23:23:35 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201303032323.r23NNZY4029680@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 3 Mar 2013 23:23:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r247736 - in head/sys: kern sys X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 03 Mar 2013 23:23:36 -0000 Author: pjd Date: Sun Mar 3 23:23:35 2013 New Revision: 247736 URL: http://svnweb.freebsd.org/changeset/base/247736 Log: Plug memory leaks in file descriptors passing. Modified: head/sys/kern/kern_descrip.c head/sys/kern/uipc_usrreq.c head/sys/sys/filedesc.h Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Sun Mar 3 23:07:27 2013 (r247735) +++ head/sys/kern/kern_descrip.c Sun Mar 3 23:23:35 2013 (r247736) @@ -1397,7 +1397,7 @@ filecaps_copy(const struct filecaps *src /* * Move filecaps structure to the new place and clear the old place. */ -static void +void filecaps_move(struct filecaps *src, struct filecaps *dst) { Modified: head/sys/kern/uipc_usrreq.c ============================================================================== --- head/sys/kern/uipc_usrreq.c Sun Mar 3 23:07:27 2013 (r247735) +++ head/sys/kern/uipc_usrreq.c Sun Mar 3 23:23:35 2013 (r247736) @@ -1686,6 +1686,7 @@ unp_freerights(struct filedescent *fde, for (i = 0; i < fdcount; i++, fde++) { fp = fde->fde_file; + filecaps_free(&fdep->fde_caps); bzero(fde, sizeof(*fde)); unp_discard(fp); } @@ -1760,7 +1761,7 @@ unp_externalize(struct mbuf *control, st panic("unp_externalize fdalloc failed"); fde = &fdesc->fd_ofiles[f]; fde->fde_file = fdep->fde_file; - filecaps_copy(&fdep->fde_caps, &fde->fde_caps); + filecaps_move(&fdep->fde_caps, &fde->fde_caps); unp_externalize_fp(fde->fde_file); *fdp = f; } Modified: head/sys/sys/filedesc.h ============================================================================== --- head/sys/sys/filedesc.h Sun Mar 3 23:07:27 2013 (r247735) +++ head/sys/sys/filedesc.h Sun Mar 3 23:23:35 2013 (r247736) @@ -136,6 +136,7 @@ struct thread; void filecaps_init(struct filecaps *fcaps); void filecaps_copy(const struct filecaps *src, struct filecaps *dst); +void filecaps_move(struct filecaps *src, struct filecaps *dst); void filecaps_free(struct filecaps *fcaps); int closef(struct file *fp, struct thread *td);