Module Name: src Committed By: rmind Date: Sun May 1 00:22:37 UTC 2011
Modified Files: src/sys/kern: kern_proc.c kern_resource.c src/sys/sys: resourcevar.h Log Message: Merge duplicate code fragments into a new lim_setcorename() routine. To generate a diff of this commit: cvs rdiff -u -r1.177 -r1.178 src/sys/kern/kern_proc.c cvs rdiff -u -r1.159 -r1.160 src/sys/kern/kern_resource.c cvs rdiff -u -r1.49 -r1.50 src/sys/sys/resourcevar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_proc.c diff -u src/sys/kern/kern_proc.c:1.177 src/sys/kern/kern_proc.c:1.178 --- src/sys/kern/kern_proc.c:1.177 Sun May 1 00:11:52 2011 +++ src/sys/kern/kern_proc.c Sun May 1 00:22:36 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_proc.c,v 1.177 2011/05/01 00:11:52 rmind Exp $ */ +/* $NetBSD: kern_proc.c,v 1.178 2011/05/01 00:22:36 rmind Exp $ */ /*- * Copyright (c) 1999, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.177 2011/05/01 00:11:52 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_proc.c,v 1.178 2011/05/01 00:22:36 rmind Exp $"); #ifdef _KERNEL_OPT #include "opt_kstack.h" @@ -1337,20 +1337,11 @@ { struct lwp *l = curlwp; struct proc *p = l->l_proc; - struct plimit *lim; kauth_cred_t oc; - char *cn; /* Reset what needs to be reset in plimit. */ if (p->p_limit->pl_corename != defcorename) { - lim_privatise(p, false); - lim = p->p_limit; - mutex_enter(&lim->pl_lock); - cn = lim->pl_corename; - lim->pl_corename = defcorename; - mutex_exit(&lim->pl_lock); - if (cn != defcorename) - free(cn, M_TEMP); + lim_setcorename(p, defcorename, 0); } mutex_enter(p->p_lock); Index: src/sys/kern/kern_resource.c diff -u src/sys/kern/kern_resource.c:1.159 src/sys/kern/kern_resource.c:1.160 --- src/sys/kern/kern_resource.c:1.159 Sun May 1 00:11:52 2011 +++ src/sys/kern/kern_resource.c Sun May 1 00:22:36 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_resource.c,v 1.159 2011/05/01 00:11:52 rmind Exp $ */ +/* $NetBSD: kern_resource.c,v 1.160 2011/05/01 00:22:36 rmind Exp $ */ /*- * Copyright (c) 1982, 1986, 1991, 1993 @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.159 2011/05/01 00:11:52 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_resource.c,v 1.160 2011/05/01 00:22:36 rmind Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -699,6 +699,25 @@ } void +lim_setcorename(proc_t *p, char *name, size_t len) +{ + struct plimit *lim; + char *oname; + + lim_privatise(p, false); + lim = p->p_limit; + + mutex_enter(&lim->pl_lock); + oname = lim->pl_corename; + lim->pl_corename = name; + mutex_exit(&lim->pl_lock); + + if (oname != defcorename) { + free(oname, M_TEMP); + } +} + +void lim_free(struct plimit *lim) { struct plimit *sv_lim; @@ -858,17 +877,7 @@ goto done; } memcpy(cname, cnbuf, len); - - char *ocname; - lim_privatise(p, false); - lim = p->p_limit; - mutex_enter(&lim->pl_lock); - ocname = lim->pl_corename; - lim->pl_corename = cname; - mutex_exit(&lim->pl_lock); - if (ocname != defcorename) - free(ocname, M_TEMP); - + lim_setcorename(p, cname, len); done: rw_exit(&p->p_reflock); PNBUF_PUT(cnbuf); Index: src/sys/sys/resourcevar.h diff -u src/sys/sys/resourcevar.h:1.49 src/sys/sys/resourcevar.h:1.50 --- src/sys/sys/resourcevar.h:1.49 Sun May 1 00:11:52 2011 +++ src/sys/sys/resourcevar.h Sun May 1 00:22:36 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: resourcevar.h,v 1.49 2011/05/01 00:11:52 rmind Exp $ */ +/* $NetBSD: resourcevar.h,v 1.50 2011/05/01 00:22:36 rmind Exp $ */ /* * Copyright (c) 1991, 1993 @@ -110,6 +110,7 @@ struct plimit *lim_copy(struct plimit *lim); void lim_addref(struct plimit *lim); void lim_privatise(struct proc *p, bool set_shared); +void lim_setcorename(struct proc *, char *, size_t); void lim_free(struct plimit *); void resource_init(void);