lkml.org 
[lkml]   [2016]   [Apr]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.19.y-ckt 046/170] crypto: ccp - memset request context to zero during import
    Date
    3.19.8-ckt18 -stable review patch.  If anyone has any objections, please let me know.

    ---8<------------------------------------------------------------

    From: Tom Lendacky <thomas.lendacky@amd.com>

    commit ce0ae266feaf35930394bd770c69778e4ef03ba9 upstream.

    Since a crypto_ahash_import() can be called against a request context
    that has not had a crypto_ahash_init() performed, the request context
    needs to be cleared to insure there is no random data present. If not,
    the random data can result in a kernel oops during crypto_ahash_update().

    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/crypto/ccp/ccp-crypto-aes-cmac.c | 1 +
    drivers/crypto/ccp/ccp-crypto-sha.c | 1 +
    2 files changed, 2 insertions(+)

    diff --git a/drivers/crypto/ccp/ccp-crypto-aes-cmac.c b/drivers/crypto/ccp/ccp-crypto-aes-cmac.c
    index bc19c1e..5c93afb 100644
    --- a/drivers/crypto/ccp/ccp-crypto-aes-cmac.c
    +++ b/drivers/crypto/ccp/ccp-crypto-aes-cmac.c
    @@ -225,6 +225,7 @@ static int ccp_aes_cmac_import(struct ahash_request *req, const void *in)
    /* 'in' may not be aligned so memcpy to local variable */
    memcpy(&state, in, sizeof(state));

    + memset(rctx, 0, sizeof(*rctx));
    rctx->null_msg = state.null_msg;
    memcpy(rctx->iv, state.iv, sizeof(rctx->iv));
    rctx->buf_count = state.buf_count;
    diff --git a/drivers/crypto/ccp/ccp-crypto-sha.c b/drivers/crypto/ccp/ccp-crypto-sha.c
    index db6ebd9..b368e98 100644
    --- a/drivers/crypto/ccp/ccp-crypto-sha.c
    +++ b/drivers/crypto/ccp/ccp-crypto-sha.c
    @@ -219,6 +219,7 @@ static int ccp_sha_import(struct ahash_request *req, const void *in)
    /* 'in' may not be aligned so memcpy to local variable */
    memcpy(&state, in, sizeof(state));

    + memset(rctx, 0, sizeof(*rctx));
    rctx->type = state.type;
    rctx->msg_bits = state.msg_bits;
    rctx->first = state.first;
    --
    2.7.4
    \
     
     \ /
      Last update: 2016-04-02 03:41    [W:4.114 / U:0.044 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site