Module Name: src Committed By: chs Date: Sat Feb 22 21:59:31 UTC 2020
Modified Files: src/sys/kern: subr_copy.c Log Message: check for errors from proc_vmspace_getref(). To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/sys/kern/subr_copy.c 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/subr_copy.c diff -u src/sys/kern/subr_copy.c:1.11 src/sys/kern/subr_copy.c:1.12 --- src/sys/kern/subr_copy.c:1.11 Sun Apr 7 16:27:41 2019 +++ src/sys/kern/subr_copy.c Sat Feb 22 21:59:30 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: subr_copy.c,v 1.11 2019/04/07 16:27:41 thorpej Exp $ */ +/* $NetBSD: subr_copy.c,v 1.12 2020/02/22 21:59:30 chs Exp $ */ /*- * Copyright (c) 1997, 1998, 1999, 2002, 2007, 2008, 2019 @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: subr_copy.c,v 1.11 2019/04/07 16:27:41 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: subr_copy.c,v 1.12 2020/02/22 21:59:30 chs Exp $"); #define __UFETCHSTORE_PRIVATE #define __UCAS_PRIVATE @@ -321,13 +321,14 @@ copyin_pid(pid_t pid, const void *uaddr, return ESRCH; } mutex_enter(p->p_lock); - proc_vmspace_getref(p, &vm); + error = proc_vmspace_getref(p, &vm); mutex_exit(p->p_lock); mutex_exit(proc_lock); - error = copyin_vmspace(vm, uaddr, kaddr, len); - - uvmspace_free(vm); + if (error == 0) { + error = copyin_vmspace(vm, uaddr, kaddr, len); + uvmspace_free(vm); + } return error; }