| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 The Chromium OS Authors <chromium-os-dev@chromium.org> | 2 * Copyright (C) 2010 The Chromium OS Authors <chromium-os-dev@chromium.org> |
| 3 * | 3 * |
| 4 * Device-Mapper block hash tree interface. | 4 * Device-Mapper block hash tree interface. |
| 5 * See Documentation/device-mapper/dm-bht.txt for details. | 5 * See Documentation/device-mapper/dm-bht.txt for details. |
| 6 * | 6 * |
| 7 * This file is released under the GPL. | 7 * This file is released under the GPL. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 #include <asm/atomic.h> | 10 #include <asm/atomic.h> |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 static int dm_bht_compute_hash(struct dm_bht *bht, const void *block, | 98 static int dm_bht_compute_hash(struct dm_bht *bht, const void *block, |
| 99 u8 *digest) | 99 u8 *digest) |
| 100 { | 100 { |
| 101 struct hash_desc *hash_desc = &bht->hash_desc[smp_processor_id()]; | 101 struct hash_desc *hash_desc = &bht->hash_desc[smp_processor_id()]; |
| 102 struct scatterlist sg; | 102 struct scatterlist sg; |
| 103 | 103 |
| 104 /* TODO(msb): Once we supporting block_size < PAGE_SIZE, change this to: | 104 /* TODO(msb): Once we supporting block_size < PAGE_SIZE, change this to: |
| 105 * offset_into_page + length < page_size | 105 * offset_into_page + length < page_size |
| 106 * For now just check that block is page-aligned. | 106 * For now just check that block is page-aligned. |
| 107 */ | 107 */ |
| 108 » BUG_ON(!IS_ALIGNED((uintptr_t)block, PAGE_SIZE)); | 108 » /* |
| 109 » * TODO(msb): Re-enable once user-space code is modified to use |
| 110 » * aligned buffers. |
| 111 » * BUG_ON(!IS_ALIGNED((uintptr_t)block, PAGE_SIZE)); |
| 112 » */ |
| 109 | 113 |
| 110 sg_init_table(&sg, 1); | 114 sg_init_table(&sg, 1); |
| 111 sg_set_buf(&sg, block, PAGE_SIZE); | 115 sg_set_buf(&sg, block, PAGE_SIZE); |
| 112 /* Note, this is synchronous. */ | 116 /* Note, this is synchronous. */ |
| 113 if (crypto_hash_init(hash_desc)) { | 117 if (crypto_hash_init(hash_desc)) { |
| 114 DMCRIT("failed to reinitialize crypto hash (proc:%d)", | 118 DMCRIT("failed to reinitialize crypto hash (proc:%d)", |
| 115 smp_processor_id()); | 119 smp_processor_id()); |
| 116 return -EINVAL; | 120 return -EINVAL; |
| 117 } | 121 } |
| 118 if (crypto_hash_digest(hash_desc, &sg, PAGE_SIZE, digest)) { | 122 if (crypto_hash_digest(hash_desc, &sg, PAGE_SIZE, digest)) { |
| (...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1183 DMERR("no root digest exists to export"); | 1187 DMERR("no root digest exists to export"); |
| 1184 if (available > 0) | 1188 if (available > 0) |
| 1185 *hexdigest = 0; | 1189 *hexdigest = 0; |
| 1186 return -1; | 1190 return -1; |
| 1187 } | 1191 } |
| 1188 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size); | 1192 dm_bht_bin_to_hex(bht->root_digest, hexdigest, bht->digest_size); |
| 1189 return 0; | 1193 return 0; |
| 1190 } | 1194 } |
| 1191 EXPORT_SYMBOL(dm_bht_root_hexdigest); | 1195 EXPORT_SYMBOL(dm_bht_root_hexdigest); |
| 1192 | 1196 |
| OLD | NEW |