1. 21 Mar, 2014 4 commits
    • Marek Vasut's avatar
      crypto: hash - Simplify the ahash_finup implementation · d4a7a0fb
      Marek Vasut authored
      The ahash_def_finup() can make use of the request save/restore functions,
      thus make it so. This simplifies the code a little and unifies the code
      paths.
      
      Note that the same remark about free()ing the req->priv applies here, the
      req->priv can only be free()'d after the original request was restored.
      
      Finally, squash a bug in the invocation of completion in the ASYNC path.
      In both ahash_def_finup_done{1,2}, the function areq->base.complete(X, err);
      was called with X=areq->base.data . This is incorrect , as X=&areq->base
      is the correct value. By analysis of the data structures, we see the areq is
      of type 'struct ahash_request' , areq->base is of type 'struct crypto_async_request'
      and areq->base.completion is of type crypto_completion_t, which is defined in
      include/linux/crypto.h as:
      
        typedef void (*crypto_completion_t)(struct crypto_async_request *req, int err);
      
      This is one lead that the X should be &areq->base . Next up, we can inspect
      other code which calls the completion callback to give us kind-of statistical
      idea of how this callback is used. We can try:
      
        $ git grep base\.complete\( drivers/crypto/
      
      Finally, by inspecting ahash_request_set_callback() implementation defined
      in include/crypto/hash.h , we observe that the .data entry of 'struct
      crypto_async_request' is intended for arbitrary data, not for completion
      argument.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      d4a7a0fb
    • Marek Vasut's avatar
      crypto: hash - Pull out the functions to save/restore request · 1ffc9fbd
      Marek Vasut authored
      The functions to save original request within a newly adjusted request
      and it's counterpart to restore the original request can be re-used by
      more code in the crypto/ahash.c file. Pull these functions out from the
      code so they're available.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      1ffc9fbd
    • Marek Vasut's avatar
      crypto: hash - Fix the pointer voodoo in unaligned ahash · ab6bf4e5
      Marek Vasut authored
      Add documentation for the pointer voodoo that is happening in crypto/ahash.c
      in ahash_op_unaligned(). This code is quite confusing, so add a beefy chunk
      of documentation.
      
      Moreover, make sure the mangled request is completely restored after finishing
      this unaligned operation. This means restoring all of .result, .base.data
      and .base.complete .
      
      Also, remove the crypto_completion_t complete = ... line present in the
      ahash_op_unaligned_done() function. This type actually declares a function
      pointer, which is very confusing.
      
      Finally, yet very important nonetheless, make sure the req->priv is free()'d
      only after the original request is restored in ahash_op_unaligned_done().
      The req->priv data must not be free()'d before that in ahash_op_unaligned_finish(),
      since we would be accessing previously free()'d data in ahash_op_unaligned_done()
      and cause corruption.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: Shawn Guo <shawn.guo@linaro.org>
      Cc: Tom Lendacky <thomas.lendacky@amd.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      ab6bf4e5
    • Herbert Xu's avatar
      crypto: caam - Fix first parameter to caam_init_rng · 85e0da92
      Herbert Xu authored
      Found by the kbuild test robot, the first argument to caam_init_rng
      has a spurious ampersand.
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      85e0da92
  2. 10 Mar, 2014 18 commits
  3. 26 Feb, 2014 14 commits
  4. 25 Feb, 2014 1 commit
  5. 09 Feb, 2014 3 commits