From owner-svn-soc-all@FreeBSD.ORG Sun Jun 7 18:59:53 2015 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 52BFE8DE for ; Sun, 7 Jun 2015 18:59:53 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4101D1623 for ; Sun, 7 Jun 2015 18:59:53 +0000 (UTC) (envelope-from def@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.9/8.14.9) with ESMTP id t57IxrJc015205 for ; Sun, 7 Jun 2015 18:59:53 GMT (envelope-from def@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.9/8.14.9/Submit) id t57IxqSv015191 for svn-soc-all@FreeBSD.org; Sun, 7 Jun 2015 18:59:52 GMT (envelope-from def@FreeBSD.org) Date: Sun, 7 Jun 2015 18:59:52 GMT Message-Id: <201506071859.t57IxqSv015191@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to def@FreeBSD.org using -f From: def@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r286799 - soc2013/def/crashdump-head/sys/kern MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Jun 2015 18:59:53 -0000 Author: def Date: Sun Jun 7 18:59:52 2015 New Revision: 286799 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=286799 Log: Create a custom handler for sysctl security.ekcd.enable. Don't dump a key when EKCD is disabled. Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c ============================================================================== --- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Sun Jun 7 17:50:28 2015 (r286798) +++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c Sun Jun 7 18:59:52 2015 (r286799) @@ -153,16 +153,17 @@ size_t kdc_bufused; } dumpcrypto; -static struct kerneldumpkey *dumpkey; +static struct kerneldumpkey *dumpkey = NULL; +static int kerneldump_sysctl_enable(SYSCTL_HANDLER_ARGS); static int kerneldump_sysctl_key(SYSCTL_HANDLER_ARGS); static int kerneldump_sysctl_encryptedkey(SYSCTL_HANDLER_ARGS); SYSCTL_NODE(_security, OID_AUTO, ekcd, CTLFLAG_RW, 0, "Encrypted kernel crash dumps"); -SYSCTL_INT(_security_ekcd, OID_AUTO, enable, CTLFLAG_RW, &dumpcrypto.kdc_enable, - 0, "Enable encrypted kernel crash dumps"); +SYSCTL_PROC(_security_ekcd, OID_AUTO, enable, CTLTYPE_INT | CTLFLAG_RW, NULL, 0, + kerneldump_sysctl_enable, "I", "Enable encrypted kernel crash dumps"); SYSCTL_PROC(_security_ekcd, OID_AUTO, key, CTLTYPE_OPAQUE | CTLFLAG_WR, NULL, 0, kerneldump_sysctl_key, "", "Key"); @@ -887,6 +888,24 @@ } static int +kerneldump_sysctl_enable(SYSCTL_HANDLER_ARGS) +{ + int error; + + error = sysctl_handle_opaque(oidp, &dumpcrypto.kdc_enable, + sizeof(dumpcrypto.kdc_enable), req); + if (error != 0) + return (error); + + if (dumpcrypto.kdc_enable == 1) + dumper.kdk = dumpkey; + else + dumper.kdk = NULL; + + return (0); +} + +static int kerneldump_sysctl_key(SYSCTL_HANDLER_ARGS) { int error;