Linux-NVME Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] nvmet-auth: assign dh_key to NULL after kfree_sensitive
@ 2024-09-16 17:41 Vitaliy Shevtsov
  2024-09-16 20:44 ` Hannes Reinecke
  2024-09-17  6:12 ` Christoph Hellwig
  0 siblings, 2 replies; 5+ messages in thread
From: Vitaliy Shevtsov @ 2024-09-16 17:41 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman
  Cc: Vitaliy Shevtsov, Hannes Reinecke, Christoph Hellwig,
	Sagi Grimberg, Chaitanya Kulkarni, Jens Axboe, linux-nvme,
	linux-kernel

ctrl->dh_key might be used across multiple calls to nvmet_setup_dhgroup()
for the same controller. So it's better to nullify it after release on
error path in order to avoid double free later in nvmet_destroy_auth().

Found by Linux Verification Center (linuxtesting.org) with Svace.

Fixes: 7a277c37d352 ("nvmet-auth: Diffie-Hellman key exchange support")
Cc: stable@vger.kernel.org
Signed-off-by: Vitaliy Shevtsov <v.shevtsov@maxima.ru>
---
 drivers/nvme/target/auth.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/nvme/target/auth.c b/drivers/nvme/target/auth.c
index e900525b7866..7bca64de4a2f 100644
--- a/drivers/nvme/target/auth.c
+++ b/drivers/nvme/target/auth.c
@@ -101,6 +101,7 @@ int nvmet_setup_dhgroup(struct nvmet_ctrl *ctrl, u8 dhgroup_id)
 			pr_debug("%s: ctrl %d failed to generate private key, err %d\n",
 				 __func__, ctrl->cntlid, ret);
 			kfree_sensitive(ctrl->dh_key);
+			ctrl->dh_key = NULL;
 			return ret;
 		}
 		ctrl->dh_keysize = crypto_kpp_maxsize(ctrl->dh_tfm);
-- 
2.46.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-10-25 15:12 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-16 17:41 [PATCH] nvmet-auth: assign dh_key to NULL after kfree_sensitive Vitaliy Shevtsov
2024-09-16 20:44 ` Hannes Reinecke
2024-09-17  6:12 ` Christoph Hellwig
2024-10-25 13:01   ` Fedor Pchelkin
2024-10-25 14:51     ` Keith Busch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox