Merge tag 'drm-next-2019-07-19' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / fs / btrfs / check-integrity.c
index b0c8094..81a9731 100644 (file)
@@ -83,7 +83,7 @@
 #include <linux/blkdev.h>
 #include <linux/mm.h>
 #include <linux/string.h>
-#include <linux/crc32c.h>
+#include <crypto/hash.h>
 #include "ctree.h"
 #include "disk-io.h"
 #include "transaction.h"
@@ -1710,9 +1710,9 @@ static int btrfsic_test_for_metadata(struct btrfsic_state *state,
                                     char **datav, unsigned int num_pages)
 {
        struct btrfs_fs_info *fs_info = state->fs_info;
+       SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
        struct btrfs_header *h;
        u8 csum[BTRFS_CSUM_SIZE];
-       u32 crc = ~(u32)0;
        unsigned int i;
 
        if (num_pages * PAGE_SIZE < state->metablock_size)
@@ -1723,14 +1723,17 @@ static int btrfsic_test_for_metadata(struct btrfsic_state *state,
        if (memcmp(h->fsid, fs_info->fs_devices->fsid, BTRFS_FSID_SIZE))
                return 1;
 
+       shash->tfm = fs_info->csum_shash;
+       crypto_shash_init(shash);
+
        for (i = 0; i < num_pages; i++) {
                u8 *data = i ? datav[i] : (datav[i] + BTRFS_CSUM_SIZE);
                size_t sublen = i ? PAGE_SIZE :
                                    (PAGE_SIZE - BTRFS_CSUM_SIZE);
 
-               crc = crc32c(crc, data, sublen);
+               crypto_shash_update(shash, data, sublen);
        }
-       btrfs_csum_final(crc, csum);
+       crypto_shash_final(shash, csum);
        if (memcmp(csum, h->csum, state->csum_size))
                return 1;