From nobody Fri Dec 29 23:08:58 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4T21K73FLbz55T1P; Fri, 29 Dec 2023 23:08:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4T21K71N8Hz4GvX; Fri, 29 Dec 2023 23:08:59 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703891339; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dOXJGX33M1L/sO1sgEe9KdXnM9Q6T9n9rYl7esQyGUU=; b=JktH/AChq5/qHOqpwVCpAT/kgA99IPO4cbXLNZcvPyKKXkQlAHkegwxig/e+4EhL6of801 Vx65UJzMw4IIniBs4iboe9HdD8voDl2DAUIdrRDYo//YakIsZgb66xfD7FDz0kWzgNdL23 TCi+KiKJq2FsYZ1n/uLDmfaQeDOB/uVTNHBhUAaF5Ua2yGM3qSzNmn+YrgBANjeTk1zkrC tguZvm54qIpA8d357lGyUj+SjpVL50AY7Z9+VdOhTTkG1IRZv582Jl2iH0cSPxzxLfcBHw UoDcrv0rKv5qoc86vcQJw/8FYKqWslGJm7EV7ox73rnfW9D0HRAizUQqt+L03g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1703891339; a=rsa-sha256; cv=none; b=YnVQZAZgEBl9ibYiO+w3DfCFPr+hMWxzdnh8vljo5jzC3raJZGp4RwmZdgkzB0YzanDLXY 943QHiv/mYWOfNKbe8090W0gIWlqRQCcn3TjOTr9Ina7i8iTgZTWZpI1tnUcP7nOS8gsZv Q+Zjs11fcy9x3WzHDLiXMpAzg0UZIFuLJNvOdfiEmM72WZddSh5o9ITo+S/tY0yiZCGOzY C5R7xOYXEQFtnV9y+CubqBs3A6qW5rOYvTThzATv3Vl7EEA2juY5nnrNpGtmhPNPjPWSwz 4Hb1Voc6Vxh4MtrhEaUly4P5gjewpA3foqYn8l1YpjUqnOqYamNUJLkpPZtNeQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1703891339; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=dOXJGX33M1L/sO1sgEe9KdXnM9Q6T9n9rYl7esQyGUU=; b=Slv/5Xjjt9+GFqF/5faCqVbGWxkdKce9yYlaJowjiNihoWTZ73B2z+PK5TFXQyTmPMA/TK e8hLGFO+q0nzFvC0u6QMcM8vPPQ+9ffH/ES6Y4o1/eJQ1wQReT8jvfXDy0pctHCwI73siP WOfJiMClSVe6nOth5uH6Ug1PZpCYQpMn29DcrG7reQAVXLp81YJpVyt+M2R2qcmoQwgmwJ jFAel4EY0BvbWZpdEUR2I3qIM7DCDwCL2wa5GZ2LACGjXMgtLB5fBMtpBWwFjI7cl1ddKa kqYQjBltf31OWOC9PmoSQPLCkjSkCIFajx4QX1eYzyowWhFlgs9vwWWOAFPFAg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4T21K709z2zB9m; Fri, 29 Dec 2023 23:08:59 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 3BTN8wAv075671; Fri, 29 Dec 2023 23:08:58 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 3BTN8wD7075668; Fri, 29 Dec 2023 23:08:58 GMT (envelope-from git) Date: Fri, 29 Dec 2023 23:08:58 GMT Message-Id: <202312292308.3BTN8wD7075668@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: f7e5bdbc683a - stable/14 - armv8_crypto: fix recursive fpu_kern_enter call List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: f7e5bdbc683acb6c3cfb9a2ae95716e75478e776 Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=f7e5bdbc683acb6c3cfb9a2ae95716e75478e776 commit f7e5bdbc683acb6c3cfb9a2ae95716e75478e776 Author: Zachary Leaf AuthorDate: 2023-08-31 13:11:53 +0000 Commit: John Baldwin CommitDate: 2023-12-29 21:49:42 +0000 armv8_crypto: fix recursive fpu_kern_enter call Now armv8_crypto is using FPU_KERN_NOCTX, this results in a kernel panic in armv8_crypto.c:armv8_crypto_cipher_setup: panic: recursive fpu_kern_enter while in PCB_FP_NOSAVE state This is because in armv8_crypto.c:armv8_crypto_cipher_process, directly after calling fpu_kern_enter() a call is made to armv8_crypto_cipher_setup(), resulting in nested calls to fpu_kern_enter() without the required fpu_kern_leave() in between. Move fpu_kern_enter() in armv8_crypto_cipher_process() after the call to armv8_crypto_cipher_setup() to resolve this. Reviewed by: markj, andrew Fixes: 6485286f536f ("armv8_crypto: Switch to using FPU_KERN_NOCTX") Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D41671 (cherry picked from commit 565c887a775284bfb1a15eadee2c3f312d288c01) --- sys/crypto/armv8/armv8_crypto.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/crypto/armv8/armv8_crypto.c b/sys/crypto/armv8/armv8_crypto.c index fd1d845c29b0..fcbc7e77de29 100644 --- a/sys/crypto/armv8/armv8_crypto.c +++ b/sys/crypto/armv8/armv8_crypto.c @@ -336,8 +336,6 @@ armv8_crypto_cipher_process(struct armv8_crypto_session *ses, crypto_cursor_copy(&fromc, &toc); } - fpu_kern_enter(curthread, NULL, FPU_KERN_NORMAL | FPU_KERN_NOCTX); - if (crp->crp_cipher_key != NULL) { armv8_crypto_cipher_setup(ses, csp, crp->crp_cipher_key, csp->csp_cipher_klen); @@ -345,6 +343,8 @@ armv8_crypto_cipher_process(struct armv8_crypto_session *ses, crypto_read_iv(crp, iv); + fpu_kern_enter(curthread, NULL, FPU_KERN_NORMAL | FPU_KERN_NOCTX); + error = 0; switch (csp->csp_cipher_alg) { case CRYPTO_AES_CBC: