diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/btrfs/hash.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/fs/btrfs/hash.c b/fs/btrfs/hash.c index 64f15bb30a81..aae520b2aee5 100644 --- a/fs/btrfs/hash.c +++ b/fs/btrfs/hash.c | |||
@@ -31,18 +31,16 @@ void btrfs_hash_exit(void) | |||
31 | 31 | ||
32 | u32 btrfs_crc32c(u32 crc, const void *address, unsigned int length) | 32 | u32 btrfs_crc32c(u32 crc, const void *address, unsigned int length) |
33 | { | 33 | { |
34 | struct { | 34 | SHASH_DESC_ON_STACK(shash, tfm); |
35 | struct shash_desc shash; | 35 | u32 *ctx = (u32 *)shash_desc_ctx(shash); |
36 | char ctx[crypto_shash_descsize(tfm)]; | ||
37 | } desc; | ||
38 | int err; | 36 | int err; |
39 | 37 | ||
40 | desc.shash.tfm = tfm; | 38 | shash->tfm = tfm; |
41 | desc.shash.flags = 0; | 39 | shash->flags = 0; |
42 | *(u32 *)desc.ctx = crc; | 40 | *ctx = crc; |
43 | 41 | ||
44 | err = crypto_shash_update(&desc.shash, address, length); | 42 | err = crypto_shash_update(shash, address, length); |
45 | BUG_ON(err); | 43 | BUG_ON(err); |
46 | 44 | ||
47 | return *(u32 *)desc.ctx; | 45 | return *ctx; |
48 | } | 46 | } |