diff --git a/drivers/nvme/target/fabrics-cmd-auth.c b/drivers/nvme/target/fabrics-cmd-auth.c index f1e613e7c63e..b5d5e612c33e 100644 --- a/drivers/nvme/target/fabrics-cmd-auth.c +++ b/drivers/nvme/target/fabrics-cmd-auth.c @@ -411,6 +411,13 @@ static int nvmet_auth_challenge(struct nvmet_req *req, void *d, int al) int hash_len = nvme_auth_hmac_hash_len(ctrl->shash_id); int data_size = sizeof(*d) + hash_len; + /* + * If replacing the keys then we have previous successful keys + * that might be leaked, so we need to free them here. + */ + if (req->sq->dhchap_c1) + nvmet_auth_sq_free(req->sq); + if (ctrl->dh_tfm) data_size += ctrl->dh_keysize; if (al < data_size) {