Skip to content

Commit

Permalink
crypto: LLVMLinux: Remove VLAIS usage from libcrc32c.c
Browse files Browse the repository at this point in the history
Replaced the use of a Variable Length Array In Struct (VLAIS) with a C99
compliant equivalent. This patch allocates the appropriate amount of memory
using a char array using the SHASH_DESC_ON_STACK macro.

The new code can be compiled with both gcc and clang.

Signed-off-by: Jan-Simon Möller <dl9pf@gmx.de>
Signed-off-by: Behan Webster <behanw@converseincode.com>
Reviewed-by: Mark Charlebois <charlebm@gmail.com>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Cc: pageexec@freemail.hu
Cc: "David S. Miller" <davem@davemloft.net>
  • Loading branch information
Jan-Simon Möller authored and Behan Webster committed Oct 14, 2014
1 parent ffb32e9 commit ea0e0de
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions lib/libcrc32c.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,20 +41,18 @@ static struct crypto_shash *tfm;

u32 crc32c(u32 crc, const void *address, unsigned int length)
{
struct {
struct shash_desc shash;
char ctx[crypto_shash_descsize(tfm)];
} desc;
SHASH_DESC_ON_STACK(shash, tfm);
u32 *ctx = (u32 *)shash_desc_ctx(shash);
int err;

desc.shash.tfm = tfm;
desc.shash.flags = 0;
*(u32 *)desc.ctx = crc;
shash->tfm = tfm;
shash->flags = 0;
*ctx = crc;

err = crypto_shash_update(&desc.shash, address, length);
err = crypto_shash_update(shash, address, length);
BUG_ON(err);

return *(u32 *)desc.ctx;
return *ctx;
}

EXPORT_SYMBOL(crc32c);
Expand Down

0 comments on commit ea0e0de

Please sign in to comment.