From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Waiman Long <longman@redhat.com>
Cc: linux-crypto@vger.kernel.org,
Herbert Xu <herbert@gondor.apana.org.au>,
James Morris <jmorris@namei.org>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
linux-mm@kvack.org, Chen-Yu Tsai <wens@csie.org>,
keyrings@vger.kernel.org, Matthew Wilcox <willy@infradead.org>,
David Rientjes <rientjes@google.com>,
Joe Perches <joe@perches.com>,
linux-amlogic@lists.infradead.org,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"David S. Miller" <davem@davemloft.net>,
linux-arm-kernel@lists.infradead.org,
"Serge E. Hallyn" <serge@hallyn.com>
Subject: Re: [PATCH v3 2/3] crypto: Remove unnecessary memzero_explicit()
Date: Thu, 16 Apr 2020 09:06:18 +0000 [thread overview]
Message-ID: <20200416090618.GB29148@Red> (raw)
In-Reply-To: <20200414200214.1873-1-longman@redhat.com>
On Tue, Apr 14, 2020 at 04:02:14PM -0400, Waiman Long wrote:
> Since kfree_sensitive() will do an implicit memzero_explicit(),
> there is no need to call memzero_explicit() before it. Eliminate those
> memzero_explicit() and simplify the call sites. For better correctness,
> keylen is cleared if key memory allocation fails.
>
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> .../allwinner/sun8i-ce/sun8i-ce-cipher.c | 23 +++++++-----------
> .../allwinner/sun8i-ss/sun8i-ss-cipher.c | 24 +++++++------------
> drivers/crypto/amlogic/amlogic-gxl-cipher.c | 14 ++++-------
> drivers/crypto/inside-secure/safexcel_hash.c | 3 +--
> 4 files changed, 24 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> index aa4e8fdc2b32..a2bac10d2876 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -366,10 +366,7 @@ void sun8i_ce_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync_suspend(op->ce->dev);
> }
> @@ -391,14 +388,13 @@ int sun8i_ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ce->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -416,14 +412,13 @@ int sun8i_ce_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> if (err)
> return err;
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> index 5246ef4f5430..a24d567a6c36 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> @@ -249,7 +249,6 @@ static int sun8i_ss_cipher(struct skcipher_request *areq)
> offset = areq->cryptlen - ivsize;
> if (rctx->op_dir & SS_DECRYPTION) {
> memcpy(areq->iv, backup_iv, ivsize);
> - memzero_explicit(backup_iv, ivsize);
> kfree_sensitive(backup_iv);
> } else {
> scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
> @@ -367,10 +366,7 @@ void sun8i_ss_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync(op->ss->dev);
> }
> @@ -392,14 +388,13 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -418,14 +413,13 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> return -EINVAL;
> }
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> index fd1269900d67..5312bad7534e 100644
> --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> @@ -341,10 +341,7 @@ void meson_cipher_exit(struct crypto_tfm *tfm)
> {
> struct meson_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> }
>
> @@ -368,14 +365,13 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
> }
For sun8i-ss/sun8i-ce
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
For amlogic
Acked-by: Corentin Labbe <clabbe@baylibre.com>
Thanks
WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Waiman Long <longman@redhat.com>
Cc: linux-crypto@vger.kernel.org,
Herbert Xu <herbert@gondor.apana.org.au>,
James Morris <jmorris@namei.org>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
linux-mm@kvack.org, Chen-Yu Tsai <wens@csie.org>,
keyrings@vger.kernel.org, Matthew Wilcox <willy@infradead.org>,
David Rientjes <rientjes@google.com>,
Joe Perches <joe@perches.com>,
linux-amlogic@lists.infradead.org,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"David S. Miller" <davem@davemloft.net>,
linux-arm-kernel@lists.infradead.org,
"Serge E. Hallyn" <serge@hallyn.com>
Subject: Re: [PATCH v3 2/3] crypto: Remove unnecessary memzero_explicit()
Date: Thu, 16 Apr 2020 11:06:18 +0200 [thread overview]
Message-ID: <20200416090618.GB29148@Red> (raw)
In-Reply-To: <20200414200214.1873-1-longman@redhat.com>
On Tue, Apr 14, 2020 at 04:02:14PM -0400, Waiman Long wrote:
> Since kfree_sensitive() will do an implicit memzero_explicit(),
> there is no need to call memzero_explicit() before it. Eliminate those
> memzero_explicit() and simplify the call sites. For better correctness,
> keylen is cleared if key memory allocation fails.
>
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> .../allwinner/sun8i-ce/sun8i-ce-cipher.c | 23 +++++++-----------
> .../allwinner/sun8i-ss/sun8i-ss-cipher.c | 24 +++++++------------
> drivers/crypto/amlogic/amlogic-gxl-cipher.c | 14 ++++-------
> drivers/crypto/inside-secure/safexcel_hash.c | 3 +--
> 4 files changed, 24 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> index aa4e8fdc2b32..a2bac10d2876 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -366,10 +366,7 @@ void sun8i_ce_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync_suspend(op->ce->dev);
> }
> @@ -391,14 +388,13 @@ int sun8i_ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ce->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -416,14 +412,13 @@ int sun8i_ce_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> if (err)
> return err;
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> index 5246ef4f5430..a24d567a6c36 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> @@ -249,7 +249,6 @@ static int sun8i_ss_cipher(struct skcipher_request *areq)
> offset = areq->cryptlen - ivsize;
> if (rctx->op_dir & SS_DECRYPTION) {
> memcpy(areq->iv, backup_iv, ivsize);
> - memzero_explicit(backup_iv, ivsize);
> kfree_sensitive(backup_iv);
> } else {
> scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
> @@ -367,10 +366,7 @@ void sun8i_ss_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync(op->ss->dev);
> }
> @@ -392,14 +388,13 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -418,14 +413,13 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> return -EINVAL;
> }
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> index fd1269900d67..5312bad7534e 100644
> --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> @@ -341,10 +341,7 @@ void meson_cipher_exit(struct crypto_tfm *tfm)
> {
> struct meson_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> }
>
> @@ -368,14 +365,13 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
> }
For sun8i-ss/sun8i-ce
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
For amlogic
Acked-by: Corentin Labbe <clabbe@baylibre.com>
Thanks
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Waiman Long <longman@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
David Howells <dhowells@redhat.com>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
James Morris <jmorris@namei.org>,
"Serge E. Hallyn" <serge@hallyn.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Joe Perches <joe@perches.com>,
Matthew Wilcox <willy@infradead.org>,
David Rientjes <rientjes@google.com>,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
Chen-Yu Tsai <wens@csie.org>,
linux-mm@kvack.org, keyrings@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-amlogic@lists.infradead.org
Subject: Re: [PATCH v3 2/3] crypto: Remove unnecessary memzero_explicit()
Date: Thu, 16 Apr 2020 11:06:18 +0200 [thread overview]
Message-ID: <20200416090618.GB29148@Red> (raw)
In-Reply-To: <20200414200214.1873-1-longman@redhat.com>
On Tue, Apr 14, 2020 at 04:02:14PM -0400, Waiman Long wrote:
> Since kfree_sensitive() will do an implicit memzero_explicit(),
> there is no need to call memzero_explicit() before it. Eliminate those
> memzero_explicit() and simplify the call sites. For better correctness,
> keylen is cleared if key memory allocation fails.
>
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> .../allwinner/sun8i-ce/sun8i-ce-cipher.c | 23 +++++++-----------
> .../allwinner/sun8i-ss/sun8i-ss-cipher.c | 24 +++++++------------
> drivers/crypto/amlogic/amlogic-gxl-cipher.c | 14 ++++-------
> drivers/crypto/inside-secure/safexcel_hash.c | 3 +--
> 4 files changed, 24 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> index aa4e8fdc2b32..a2bac10d2876 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -366,10 +366,7 @@ void sun8i_ce_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync_suspend(op->ce->dev);
> }
> @@ -391,14 +388,13 @@ int sun8i_ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ce->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -416,14 +412,13 @@ int sun8i_ce_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> if (err)
> return err;
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> index 5246ef4f5430..a24d567a6c36 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> @@ -249,7 +249,6 @@ static int sun8i_ss_cipher(struct skcipher_request *areq)
> offset = areq->cryptlen - ivsize;
> if (rctx->op_dir & SS_DECRYPTION) {
> memcpy(areq->iv, backup_iv, ivsize);
> - memzero_explicit(backup_iv, ivsize);
> kfree_sensitive(backup_iv);
> } else {
> scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
> @@ -367,10 +366,7 @@ void sun8i_ss_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync(op->ss->dev);
> }
> @@ -392,14 +388,13 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -418,14 +413,13 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> return -EINVAL;
> }
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> index fd1269900d67..5312bad7534e 100644
> --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> @@ -341,10 +341,7 @@ void meson_cipher_exit(struct crypto_tfm *tfm)
> {
> struct meson_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> }
>
> @@ -368,14 +365,13 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
> }
For sun8i-ss/sun8i-ce
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
For amlogic
Acked-by: Corentin Labbe <clabbe@baylibre.com>
Thanks
WARNING: multiple messages have this Message-ID (diff)
From: Corentin Labbe <clabbe.montjoie@gmail.com>
To: Waiman Long <longman@redhat.com>
Cc: linux-crypto@vger.kernel.org,
Herbert Xu <herbert@gondor.apana.org.au>,
James Morris <jmorris@namei.org>,
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
linux-kernel@vger.kernel.org, David Howells <dhowells@redhat.com>,
linux-mm@kvack.org, Chen-Yu Tsai <wens@csie.org>,
keyrings@vger.kernel.org, Matthew Wilcox <willy@infradead.org>,
David Rientjes <rientjes@google.com>,
Joe Perches <joe@perches.com>,
linux-amlogic@lists.infradead.org,
Andrew Morton <akpm@linux-foundation.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
"David S. Miller" <davem@davemloft.net>,
linux-arm-kernel@lists.infradead.org,
"Serge E. Hallyn" <serge@hallyn.com>
Subject: Re: [PATCH v3 2/3] crypto: Remove unnecessary memzero_explicit()
Date: Thu, 16 Apr 2020 11:06:18 +0200 [thread overview]
Message-ID: <20200416090618.GB29148@Red> (raw)
In-Reply-To: <20200414200214.1873-1-longman@redhat.com>
On Tue, Apr 14, 2020 at 04:02:14PM -0400, Waiman Long wrote:
> Since kfree_sensitive() will do an implicit memzero_explicit(),
> there is no need to call memzero_explicit() before it. Eliminate those
> memzero_explicit() and simplify the call sites. For better correctness,
> keylen is cleared if key memory allocation fails.
>
> Signed-off-by: Waiman Long <longman@redhat.com>
> ---
> .../allwinner/sun8i-ce/sun8i-ce-cipher.c | 23 +++++++-----------
> .../allwinner/sun8i-ss/sun8i-ss-cipher.c | 24 +++++++------------
> drivers/crypto/amlogic/amlogic-gxl-cipher.c | 14 ++++-------
> drivers/crypto/inside-secure/safexcel_hash.c | 3 +--
> 4 files changed, 24 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> index aa4e8fdc2b32..a2bac10d2876 100644
> --- a/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> @@ -366,10 +366,7 @@ void sun8i_ce_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync_suspend(op->ce->dev);
> }
> @@ -391,14 +388,13 @@ int sun8i_ce_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ce->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -416,14 +412,13 @@ int sun8i_ce_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> if (err)
> return err;
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key)) {
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> index 5246ef4f5430..a24d567a6c36 100644
> --- a/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> +++ b/drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
> @@ -249,7 +249,6 @@ static int sun8i_ss_cipher(struct skcipher_request *areq)
> offset = areq->cryptlen - ivsize;
> if (rctx->op_dir & SS_DECRYPTION) {
> memcpy(areq->iv, backup_iv, ivsize);
> - memzero_explicit(backup_iv, ivsize);
> kfree_sensitive(backup_iv);
> } else {
> scatterwalk_map_and_copy(areq->iv, areq->dst, offset,
> @@ -367,10 +366,7 @@ void sun8i_ss_cipher_exit(struct crypto_tfm *tfm)
> {
> struct sun8i_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> pm_runtime_put_sync(op->ss->dev);
> }
> @@ -392,14 +388,13 @@ int sun8i_ss_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(ss->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> @@ -418,14 +413,13 @@ int sun8i_ss_des3_setkey(struct crypto_skcipher *tfm, const u8 *key,
> return -EINVAL;
> }
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> crypto_sync_skcipher_clear_flags(op->fallback_tfm, CRYPTO_TFM_REQ_MASK);
> crypto_sync_skcipher_set_flags(op->fallback_tfm, tfm->base.crt_flags & CRYPTO_TFM_REQ_MASK);
> diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> index fd1269900d67..5312bad7534e 100644
> --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c
> @@ -341,10 +341,7 @@ void meson_cipher_exit(struct crypto_tfm *tfm)
> {
> struct meson_cipher_tfm_ctx *op = crypto_tfm_ctx(tfm);
>
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> crypto_free_sync_skcipher(op->fallback_tfm);
> }
>
> @@ -368,14 +365,13 @@ int meson_aes_setkey(struct crypto_skcipher *tfm, const u8 *key,
> dev_dbg(mc->dev, "ERROR: Invalid keylen %u\n", keylen);
> return -EINVAL;
> }
> - if (op->key) {
> - memzero_explicit(op->key, op->keylen);
> - kfree(op->key);
> - }
> + kfree_sensitive(op->key);
> op->keylen = keylen;
> op->key = kmemdup(key, keylen, GFP_KERNEL | GFP_DMA);
> - if (!op->key)
> + if (unlikely(!op->key))
> + op->keylen = 0;
> return -ENOMEM;
> + }
>
> return crypto_sync_skcipher_setkey(op->fallback_tfm, key, keylen);
> }
For sun8i-ss/sun8i-ce
Acked-by: Corentin Labbe <clabbe.montjoie@gmail.com>
For amlogic
Acked-by: Corentin Labbe <clabbe@baylibre.com>
Thanks
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-04-16 9:06 UTC|newest]
Thread overview: 195+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-13 21:15 [Cocci] [PATCH 0/2] mm, treewide: Rename kzfree() to kfree_sensitive() Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` [Intel-wired-lan] " Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` [Cocci] [PATCH 1/2] " Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` [Intel-wired-lan] " Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-14 0:29 ` [Cocci] " David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 0:29 ` [Intel-wired-lan] " David Rientjes
2020-04-14 0:29 ` David Rientjes
2020-04-14 8:32 ` [Cocci] " Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 8:32 ` [Intel-wired-lan] " Jason A. Donenfeld
2020-04-14 8:32 ` Jason A. Donenfeld
2020-04-14 9:01 ` [Cocci] " Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 9:01 ` [Intel-wired-lan] " Michal Hocko
2020-04-14 9:01 ` Michal Hocko
2020-04-14 12:48 ` [Cocci] " David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 12:48 ` [Intel-wired-lan] " David Sterba
2020-04-14 12:48 ` David Sterba
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` [Cocci] " Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` Waiman Long
2020-04-14 18:26 ` [Intel-wired-lan] " Waiman Long
2020-04-14 13:06 ` [Cocci] " David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` David Howells
2020-04-14 13:06 ` [Intel-wired-lan] " David Howells
2020-04-14 13:06 ` David Howells
2020-04-15 5:01 ` [Cocci] " Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-04-15 5:01 ` [Intel-wired-lan] " Johannes Weiner
2020-04-15 5:01 ` Johannes Weiner
2020-06-15 18:07 ` [Cocci] " Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:07 ` [Intel-wired-lan] " Dan Carpenter
2020-06-15 18:07 ` Dan Carpenter
2020-06-15 18:39 ` [Cocci] " Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-06-15 18:39 ` [Intel-wired-lan] " Waiman Long
2020-06-15 18:39 ` Waiman Long
2020-04-13 21:15 ` [Cocci] [PATCH 2/2] crypto: Remove unnecessary memzero_explicit() Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:15 ` [Intel-wired-lan] " Waiman Long
2020-04-13 21:15 ` Waiman Long
2020-04-13 21:31 ` [Cocci] " Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:31 ` [Intel-wired-lan] " Joe Perches
2020-04-13 21:31 ` Joe Perches
2020-04-13 21:52 ` [Cocci] " Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 21:52 ` [Intel-wired-lan] " Waiman Long
2020-04-13 21:52 ` Waiman Long
2020-04-13 23:07 ` kbuild test robot
2020-04-13 23:50 ` Waiman Long
2020-04-14 0:01 ` kbuild test robot
2020-04-13 22:28 ` [Cocci] [PATCH v2 " Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-13 22:28 ` [Intel-wired-lan] " Waiman Long
2020-04-13 22:28 ` Waiman Long
2020-04-14 6:08 ` [Cocci] " Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 6:08 ` [Intel-wired-lan] " Christophe Leroy
2020-04-14 6:08 ` Christophe Leroy
2020-04-14 16:24 ` [Cocci] " Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 16:24 ` [Intel-wired-lan] " Waiman Long
2020-04-14 16:24 ` Waiman Long
2020-04-14 19:16 ` [Cocci] " Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:16 ` [Intel-wired-lan] " Michal =?unknown-8bit?q?Such=C3=A1nek?=
2020-04-14 19:16 ` Michal Suchánek
2020-04-14 19:37 ` [Cocci] " Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:37 ` [Intel-wired-lan] " Waiman Long
2020-04-14 19:37 ` Waiman Long
2020-04-14 19:44 ` [Cocci] " Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:44 ` [Intel-wired-lan] " Joe Perches
2020-04-14 19:44 ` Joe Perches
2020-04-14 19:29 ` [PATCH v2 3/3] btrfs: Use kfree() in btrfs_ioctl_get_subvol_info() Waiman Long
2020-04-14 19:29 ` Waiman Long
2020-04-14 20:02 ` [PATCH v3 2/3] crypto: Remove unnecessary memzero_explicit() Waiman Long
2020-04-14 20:02 ` Waiman Long
2020-04-14 20:02 ` Waiman Long
2020-04-14 20:02 ` Waiman Long
2020-04-16 9:06 ` Corentin Labbe [this message]
2020-04-16 9:06 ` Corentin Labbe
2020-04-16 9:06 ` Corentin Labbe
2020-04-16 9:06 ` Corentin Labbe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200416090618.GB29148@Red \
--to=clabbe.montjoie@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=herbert@gondor.apana.org.au \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=jmorris@namei.org \
--cc=joe@perches.com \
--cc=keyrings@vger.kernel.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=longman@redhat.com \
--cc=rientjes@google.com \
--cc=serge@hallyn.com \
--cc=torvalds@linux-foundation.org \
--cc=wens@csie.org \
--cc=willy@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.