* [PATCH v2 1/7] dm-integrity: use internal variable for digestsize
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 2/7] dm-integrity: replace bvec_kmap_local with kmap_local_page Mikulas Patocka
` (7 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
Instead of calling digestsize() each time the digestsize for
the internal hash is needed, store the digestsize in a new
field internal_hash_digestsize within struct dm_integrity_c
once and use this value when needed.
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 25 ++++++++++++++-----------
1 file changed, 14 insertions(+), 11 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-15 17:31:52.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-15 17:33:14.000000000 +0200
@@ -223,6 +223,7 @@ struct dm_integrity_c {
int failed;
struct crypto_shash *internal_hash;
+ unsigned int internal_hash_digestsize;
struct dm_target *ti;
@@ -1676,7 +1677,7 @@ static void integrity_sector_checksum(st
goto failed;
}
- digest_size = crypto_shash_digestsize(ic->internal_hash);
+ digest_size = ic->internal_hash_digestsize;
if (unlikely(digest_size < ic->tag_size))
memset(result + digest_size, 0, ic->tag_size - digest_size);
@@ -1776,7 +1777,7 @@ static void integrity_metadata(struct wo
if (ic->internal_hash) {
struct bvec_iter iter;
struct bio_vec bv;
- unsigned int digest_size = crypto_shash_digestsize(ic->internal_hash);
+ unsigned int digest_size = ic->internal_hash_digestsize;
struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
char *checksums;
unsigned int extra_space = unlikely(digest_size > ic->tag_size) ? digest_size - ic->tag_size : 0;
@@ -2124,7 +2125,7 @@ retry_kmap:
} while (++s < ic->sectors_per_block);
if (ic->internal_hash) {
- unsigned int digest_size = crypto_shash_digestsize(ic->internal_hash);
+ unsigned int digest_size = ic->internal_hash_digestsize;
if (unlikely(digest_size > ic->tag_size)) {
char checksums_onstack[HASH_MAX_DIGESTSIZE];
@@ -2428,7 +2429,7 @@ retry:
if (!dio->integrity_payload) {
unsigned digest_size, extra_size;
dio->payload_len = ic->tuple_size * (bio_sectors(bio) >> ic->sb->log2_sectors_per_block);
- digest_size = crypto_shash_digestsize(ic->internal_hash);
+ digest_size = ic->internal_hash_digestsize;
extra_size = unlikely(digest_size > ic->tag_size) ? digest_size - ic->tag_size : 0;
dio->payload_len += extra_size;
dio->integrity_payload = kmalloc(dio->payload_len, GFP_NOIO | __GFP_NORETRY | __GFP_NOMEMALLOC | __GFP_NOWARN);
@@ -2589,7 +2590,7 @@ static void dm_integrity_inline_recheck(
bio_put(outgoing_bio);
integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, outgoing_data, digest);
- if (unlikely(crypto_memneq(digest, dio->integrity_payload, min(crypto_shash_digestsize(ic->internal_hash), ic->tag_size)))) {
+ if (unlikely(crypto_memneq(digest, dio->integrity_payload, min(ic->internal_hash_digestsize, ic->tag_size)))) {
DMERR_LIMIT("%pg: Checksum failed at sector 0x%llx",
ic->dev->bdev, dio->bio_details.bi_iter.bi_sector);
atomic64_inc(&ic->number_of_mismatches);
@@ -2629,7 +2630,7 @@ static int dm_integrity_end_io(struct dm
//memset(mem, 0xff, ic->sectors_per_block << SECTOR_SHIFT);
integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
- min(crypto_shash_digestsize(ic->internal_hash), ic->tag_size)))) {
+ min(ic->internal_hash_digestsize, ic->tag_size)))) {
kunmap_local(mem);
dm_integrity_free_payload(dio);
INIT_WORK(&dio->work, dm_integrity_inline_recheck);
@@ -3011,8 +3012,8 @@ oom:
goto free_ret;
}
recalc_tags_size = (recalc_sectors >> ic->sb->log2_sectors_per_block) * ic->tag_size;
- if (crypto_shash_digestsize(ic->internal_hash) > ic->tag_size)
- recalc_tags_size += crypto_shash_digestsize(ic->internal_hash) - ic->tag_size;
+ if (ic->internal_hash_digestsize > ic->tag_size)
+ recalc_tags_size += ic->internal_hash_digestsize - ic->tag_size;
recalc_tags = kvmalloc(recalc_tags_size, GFP_NOIO);
if (!recalc_tags) {
vfree(recalc_buffer);
@@ -3171,8 +3172,8 @@ oom:
}
recalc_tags_size = (recalc_sectors >> ic->sb->log2_sectors_per_block) * ic->tuple_size;
- if (crypto_shash_digestsize(ic->internal_hash) > ic->tuple_size)
- recalc_tags_size += crypto_shash_digestsize(ic->internal_hash) - ic->tuple_size;
+ if (ic->internal_hash_digestsize > ic->tuple_size)
+ recalc_tags_size += ic->internal_hash_digestsize - ic->tuple_size;
recalc_tags = kmalloc(recalc_tags_size, GFP_NOIO | __GFP_NOWARN);
if (!recalc_tags) {
kfree(recalc_buffer);
@@ -4694,6 +4695,8 @@ static int dm_integrity_ctr(struct dm_ta
"Invalid internal hash", "Error setting internal hash key");
if (r)
goto bad;
+ if (ic->internal_hash)
+ ic->internal_hash_digestsize = crypto_shash_digestsize(ic->internal_hash);
r = get_mac(&ic->journal_mac, &ic->journal_mac_alg, &ti->error,
"Invalid journal mac", "Error setting journal mac key");
@@ -4706,7 +4709,7 @@ static int dm_integrity_ctr(struct dm_ta
r = -EINVAL;
goto bad;
}
- ic->tag_size = crypto_shash_digestsize(ic->internal_hash);
+ ic->tag_size = ic->internal_hash_digestsize;
}
if (ic->tag_size > MAX_TAG_SIZE) {
ti->error = "Too big tag size";
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 2/7] dm-integrity: replace bvec_kmap_local with kmap_local_page
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 1/7] dm-integrity: use internal variable for digestsize Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 3/7] dm-integrity: introduce integrity_kmap and integrity_kunmap Mikulas Patocka
` (6 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
Replace bvec_kmap_local with kmap_local_page - it will be needed for the
upcoming patches that make kmap_local_page optional, depending on whether
asynchronous hash interface is used or not.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-18 16:58:01.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-18 17:06:37.000000000 +0200
@@ -1838,11 +1838,11 @@ static void integrity_metadata(struct wo
char *mem, *checksums_ptr;
again:
- mem = bvec_kmap_local(&bv_copy);
+ mem = kmap_local_page(bv_copy.bv_page);
pos = 0;
checksums_ptr = checksums;
do {
- integrity_sector_checksum(ic, sector, mem + pos, checksums_ptr);
+ integrity_sector_checksum(ic, sector, mem + bv_copy.bv_offset + pos, checksums_ptr);
checksums_ptr += ic->tag_size;
sectors_to_process -= ic->sectors_per_block;
pos += ic->sectors_per_block << SECTOR_SHIFT;
@@ -2506,10 +2506,10 @@ skip_spinlock:
unsigned pos = 0;
while (dio->bio_details.bi_iter.bi_size) {
struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
- const char *mem = bvec_kmap_local(&bv);
+ const char *mem = kmap_local_page(bv.bv_page);
if (ic->tag_size < ic->tuple_size)
memset(dio->integrity_payload + pos + ic->tag_size, 0, ic->tuple_size - ic->tuple_size);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, dio->integrity_payload + pos);
+ integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, dio->integrity_payload + pos);
kunmap_local(mem);
pos += ic->tuple_size;
bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
@@ -2626,9 +2626,8 @@ static int dm_integrity_end_io(struct dm
while (dio->bio_details.bi_iter.bi_size) {
char digest[HASH_MAX_DIGESTSIZE];
struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
- char *mem = bvec_kmap_local(&bv);
- //memset(mem, 0xff, ic->sectors_per_block << SECTOR_SHIFT);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, digest);
+ char *mem = kmap_local_page(bv.bv_page);
+ integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
min(ic->internal_hash_digestsize, ic->tag_size)))) {
kunmap_local(mem);
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 3/7] dm-integrity: introduce integrity_kmap and integrity_kunmap
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 1/7] dm-integrity: use internal variable for digestsize Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 2/7] dm-integrity: replace bvec_kmap_local with kmap_local_page Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 4/7] dm-integrity: allocate the recalculate buffer with kmalloc Mikulas Patocka
` (5 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
This abstraction will be used later, for the asynchronous hash interface.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 37 +++++++++++++++++--------------------
1 file changed, 17 insertions(+), 20 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-21 18:21:12.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-21 18:22:00.000000000 +0200
@@ -1688,6 +1688,16 @@ failed:
get_random_bytes(result, ic->tag_size);
}
+static void *integrity_kmap(struct dm_integrity_c *ic, struct page *p)
+{
+ return kmap_local_page(p);
+}
+
+static void integrity_kunmap(struct dm_integrity_c *ic, const void *ptr)
+{
+ kunmap_local(ptr);
+}
+
static noinline void integrity_recheck(struct dm_integrity_io *dio, char *checksum)
{
struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
@@ -1838,7 +1848,7 @@ static void integrity_metadata(struct wo
char *mem, *checksums_ptr;
again:
- mem = kmap_local_page(bv_copy.bv_page);
+ mem = integrity_kmap(ic, bv_copy.bv_page);
pos = 0;
checksums_ptr = checksums;
do {
@@ -1848,7 +1858,7 @@ again:
pos += ic->sectors_per_block << SECTOR_SHIFT;
sector += ic->sectors_per_block;
} while (pos < bv_copy.bv_len && sectors_to_process && checksums != checksums_onstack);
- kunmap_local(mem);
+ integrity_kunmap(ic, mem);
r = dm_integrity_rw_tag(ic, checksums, &dio->metadata_block, &dio->metadata_offset,
checksums_ptr - checksums, dio->op == REQ_OP_READ ? TAG_CMP : TAG_WRITE);
@@ -2072,19 +2082,6 @@ retry_kmap:
js++;
mem_ptr += 1 << SECTOR_SHIFT;
} while (++s < ic->sectors_per_block);
-#ifdef INTERNAL_VERIFY
- if (ic->internal_hash) {
- char checksums_onstack[MAX_T(size_t, HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
-
- integrity_sector_checksum(ic, logical_sector, mem + bv.bv_offset, checksums_onstack);
- if (unlikely(crypto_memneq(checksums_onstack, journal_entry_tag(ic, je), ic->tag_size))) {
- DMERR_LIMIT("Checksum failed when reading from journal, at sector 0x%llx",
- logical_sector);
- dm_audit_log_bio(DM_MSG_PREFIX, "journal-checksum",
- bio, logical_sector, 0);
- }
- }
-#endif
}
if (!ic->internal_hash) {
@@ -2506,11 +2503,11 @@ skip_spinlock:
unsigned pos = 0;
while (dio->bio_details.bi_iter.bi_size) {
struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
- const char *mem = kmap_local_page(bv.bv_page);
+ const char *mem = integrity_kmap(ic, bv.bv_page);
if (ic->tag_size < ic->tuple_size)
memset(dio->integrity_payload + pos + ic->tag_size, 0, ic->tuple_size - ic->tuple_size);
integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, dio->integrity_payload + pos);
- kunmap_local(mem);
+ integrity_kunmap(ic, mem);
pos += ic->tuple_size;
bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
}
@@ -2626,17 +2623,17 @@ static int dm_integrity_end_io(struct dm
while (dio->bio_details.bi_iter.bi_size) {
char digest[HASH_MAX_DIGESTSIZE];
struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
- char *mem = kmap_local_page(bv.bv_page);
+ char *mem = integrity_kmap(ic, bv.bv_page);
integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
min(ic->internal_hash_digestsize, ic->tag_size)))) {
- kunmap_local(mem);
+ integrity_kunmap(ic, mem);
dm_integrity_free_payload(dio);
INIT_WORK(&dio->work, dm_integrity_inline_recheck);
queue_work(ic->offload_wq, &dio->work);
return DM_ENDIO_INCOMPLETE;
}
- kunmap_local(mem);
+ integrity_kunmap(ic, mem);
pos += ic->tuple_size;
bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
}
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 4/7] dm-integrity: allocate the recalculate buffer with kmalloc
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (2 preceding siblings ...)
2025-09-08 13:16 ` [PATCH v2 3/7] dm-integrity: introduce integrity_kmap and integrity_kunmap Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 5/7] dm-integrity: add the "offset" argument Mikulas Patocka
` (4 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
Allocate the recalculate buffer with kmalloc rather than vmalloc. This
will be needed later, for the simplification of the asynchronous hash
interface.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-21 18:22:55.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-21 18:22:55.000000000 +0200
@@ -2998,7 +2998,7 @@ static void integrity_recalc(struct work
unsigned recalc_sectors = RECALC_SECTORS;
retry:
- recalc_buffer = __vmalloc(recalc_sectors << SECTOR_SHIFT, GFP_NOIO);
+ recalc_buffer = kmalloc(recalc_sectors << SECTOR_SHIFT, GFP_NOIO | __GFP_NOWARN);
if (!recalc_buffer) {
oom:
recalc_sectors >>= 1;
@@ -3012,7 +3012,7 @@ oom:
recalc_tags_size += ic->internal_hash_digestsize - ic->tag_size;
recalc_tags = kvmalloc(recalc_tags_size, GFP_NOIO);
if (!recalc_tags) {
- vfree(recalc_buffer);
+ kfree(recalc_buffer);
recalc_buffer = NULL;
goto oom;
}
@@ -3078,7 +3078,7 @@ next_chunk:
goto err;
io_req.bi_opf = REQ_OP_READ;
- io_req.mem.type = DM_IO_VMA;
+ io_req.mem.type = DM_IO_KMEM;
io_req.mem.ptr.addr = recalc_buffer;
io_req.notify.fn = NULL;
io_req.client = ic->io;
@@ -3136,7 +3136,7 @@ unlock_ret:
recalc_write_super(ic);
free_ret:
- vfree(recalc_buffer);
+ kfree(recalc_buffer);
kvfree(recalc_tags);
}
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 5/7] dm-integrity: add the "offset" argument
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (3 preceding siblings ...)
2025-09-08 13:16 ` [PATCH v2 4/7] dm-integrity: allocate the recalculate buffer with kmalloc Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 6/7] dm-integrity: rename internal_hash Mikulas Patocka
` (3 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
Make sure that the "data" argument passed to integrity_sector_checksum is
always page-aligned and add an "offset" argument that specifies the
offset from the start of the page. This will enable us to use the
asynchronous hash interface later.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 49 ++++++++++++++++++++++++++++++++--------------
1 file changed, 35 insertions(+), 14 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-25 15:38:52.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-25 15:40:31.000000000 +0200
@@ -1636,7 +1636,7 @@ static void integrity_end_io(struct bio
}
static void integrity_sector_checksum(struct dm_integrity_c *ic, sector_t sector,
- const char *data, char *result)
+ const char *data, unsigned offset, char *result)
{
__le64 sector_le = cpu_to_le64(sector);
SHASH_DESC_ON_STACK(req, ic->internal_hash);
@@ -1665,7 +1665,7 @@ static void integrity_sector_checksum(st
goto failed;
}
- r = crypto_shash_update(req, data, ic->sectors_per_block << SECTOR_SHIFT);
+ r = crypto_shash_update(req, data + offset, ic->sectors_per_block << SECTOR_SHIFT);
if (unlikely(r < 0)) {
dm_integrity_io_error(ic, "crypto_shash_update", r);
goto failed;
@@ -1698,6 +1698,15 @@ static void integrity_kunmap(struct dm_i
kunmap_local(ptr);
}
+static void *integrity_identity(struct dm_integrity_c *ic, void *data)
+{
+#ifdef CONFIG_DEBUG_SG
+ BUG_ON(offset_in_page(data));
+ BUG_ON(!virt_addr_valid(data));
+#endif
+ return data;
+}
+
static noinline void integrity_recheck(struct dm_integrity_io *dio, char *checksum)
{
struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
@@ -1722,6 +1731,7 @@ static noinline void integrity_recheck(s
sector_t alignment;
char *mem;
char *buffer = page_to_virt(page);
+ unsigned int buffer_offset;
int r;
struct dm_io_request io_req;
struct dm_io_region io_loc;
@@ -1739,7 +1749,7 @@ static noinline void integrity_recheck(s
alignment &= -alignment;
io_loc.sector = round_down(io_loc.sector, alignment);
io_loc.count += sector - io_loc.sector;
- buffer += (sector - io_loc.sector) << SECTOR_SHIFT;
+ buffer_offset = (sector - io_loc.sector) << SECTOR_SHIFT;
io_loc.count = round_up(io_loc.count, alignment);
r = dm_io(&io_req, 1, &io_loc, NULL, IOPRIO_DEFAULT);
@@ -1748,7 +1758,7 @@ static noinline void integrity_recheck(s
goto free_ret;
}
- integrity_sector_checksum(ic, logical_sector, buffer, checksum);
+ integrity_sector_checksum(ic, logical_sector, integrity_identity(ic, buffer), buffer_offset, checksum);
r = dm_integrity_rw_tag(ic, checksum, &dio->metadata_block,
&dio->metadata_offset, ic->tag_size, TAG_CMP);
if (r) {
@@ -1765,7 +1775,7 @@ static noinline void integrity_recheck(s
}
mem = bvec_kmap_local(&bv);
- memcpy(mem + pos, buffer, ic->sectors_per_block << SECTOR_SHIFT);
+ memcpy(mem + pos, buffer + buffer_offset, ic->sectors_per_block << SECTOR_SHIFT);
kunmap_local(mem);
pos += ic->sectors_per_block << SECTOR_SHIFT;
@@ -1852,7 +1862,7 @@ again:
pos = 0;
checksums_ptr = checksums;
do {
- integrity_sector_checksum(ic, sector, mem + bv_copy.bv_offset + pos, checksums_ptr);
+ integrity_sector_checksum(ic, sector, mem, bv_copy.bv_offset + pos, checksums_ptr);
checksums_ptr += ic->tag_size;
sectors_to_process -= ic->sectors_per_block;
pos += ic->sectors_per_block << SECTOR_SHIFT;
@@ -2123,14 +2133,16 @@ retry_kmap:
if (ic->internal_hash) {
unsigned int digest_size = ic->internal_hash_digestsize;
+ void *js_page = integrity_identity(ic, (char *)js - offset_in_page(js));
+ unsigned js_offset = offset_in_page(js);
if (unlikely(digest_size > ic->tag_size)) {
char checksums_onstack[HASH_MAX_DIGESTSIZE];
- integrity_sector_checksum(ic, logical_sector, (char *)js, checksums_onstack);
+ integrity_sector_checksum(ic, logical_sector, js_page, js_offset, checksums_onstack);
memcpy(journal_entry_tag(ic, je), checksums_onstack, ic->tag_size);
} else
- integrity_sector_checksum(ic, logical_sector, (char *)js, journal_entry_tag(ic, je));
+ integrity_sector_checksum(ic, logical_sector, js_page, js_offset, journal_entry_tag(ic, je));
}
journal_entry_set_sector(je, logical_sector);
@@ -2506,7 +2518,7 @@ skip_spinlock:
const char *mem = integrity_kmap(ic, bv.bv_page);
if (ic->tag_size < ic->tuple_size)
memset(dio->integrity_payload + pos + ic->tag_size, 0, ic->tuple_size - ic->tuple_size);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, dio->integrity_payload + pos);
+ integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, dio->integrity_payload + pos);
integrity_kunmap(ic, mem);
pos += ic->tuple_size;
bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
@@ -2586,7 +2598,7 @@ static void dm_integrity_inline_recheck(
}
bio_put(outgoing_bio);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, outgoing_data, digest);
+ integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, integrity_identity(ic, outgoing_data), 0, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload, min(ic->internal_hash_digestsize, ic->tag_size)))) {
DMERR_LIMIT("%pg: Checksum failed at sector 0x%llx",
ic->dev->bdev, dio->bio_details.bi_iter.bi_sector);
@@ -2624,7 +2636,7 @@ static int dm_integrity_end_io(struct dm
char digest[HASH_MAX_DIGESTSIZE];
struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
char *mem = integrity_kmap(ic, bv.bv_page);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem + bv.bv_offset, digest);
+ integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
min(ic->internal_hash_digestsize, ic->tag_size)))) {
integrity_kunmap(ic, mem);
@@ -2899,9 +2911,12 @@ static void do_journal_write(struct dm_i
#endif
ic->internal_hash) {
char test_tag[MAX_T(size_t, HASH_MAX_DIGESTSIZE, MAX_TAG_SIZE)];
+ struct journal_sector *js = access_journal_data(ic, i, l);
+ void *js_page = integrity_identity(ic, (char *)js - offset_in_page(js));
+ unsigned js_offset = offset_in_page(js);
integrity_sector_checksum(ic, sec + ((l - j) << ic->sb->log2_sectors_per_block),
- (char *)access_journal_data(ic, i, l), test_tag);
+ js_page, js_offset, test_tag);
if (unlikely(crypto_memneq(test_tag, journal_entry_tag(ic, je2), ic->tag_size))) {
dm_integrity_io_error(ic, "tag mismatch when replaying journal", -EILSEQ);
dm_audit_log_target(DM_MSG_PREFIX, "integrity-replay-journal", ic->ti, 0);
@@ -3094,7 +3109,10 @@ next_chunk:
t = recalc_tags;
for (i = 0; i < n_sectors; i += ic->sectors_per_block) {
- integrity_sector_checksum(ic, logical_sector + i, recalc_buffer + (i << SECTOR_SHIFT), t);
+ void *ptr = recalc_buffer + (i << SECTOR_SHIFT);
+ void *ptr_page = integrity_identity(ic, (char *)ptr - offset_in_page(ptr));
+ unsigned ptr_offset = offset_in_page(ptr);
+ integrity_sector_checksum(ic, logical_sector + i, ptr_page, ptr_offset, t);
t += ic->tag_size;
}
@@ -3214,8 +3232,11 @@ next_chunk:
t = recalc_tags;
for (i = 0; i < range.n_sectors; i += ic->sectors_per_block) {
+ void *ptr = recalc_buffer + (i << SECTOR_SHIFT);
+ void *ptr_page = integrity_identity(ic, (char *)ptr - offset_in_page(ptr));
+ unsigned ptr_offset = offset_in_page(ptr);
memset(t, 0, ic->tuple_size);
- integrity_sector_checksum(ic, range.logical_sector + i, recalc_buffer + (i << SECTOR_SHIFT), t);
+ integrity_sector_checksum(ic, range.logical_sector + i, ptr_page, ptr_offset, t);
t += ic->tuple_size;
}
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 6/7] dm-integrity: rename internal_hash
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (4 preceding siblings ...)
2025-09-08 13:16 ` [PATCH v2 5/7] dm-integrity: add the "offset" argument Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-08 13:16 ` [PATCH v2 7/7] dm-integrity: enable asynchronous hash interface Mikulas Patocka
` (2 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
Rename "internal_hash" to "internal_shash" and introduce a boolean value
"internal_hash".
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-08-25 15:46:51.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-08-25 15:46:51.000000000 +0200
@@ -219,10 +219,11 @@ struct dm_integrity_c {
__u8 log2_blocks_per_bitmap_bit;
unsigned char mode;
+ bool internal_hash;
int failed;
- struct crypto_shash *internal_hash;
+ struct crypto_shash *internal_shash;
unsigned int internal_hash_digestsize;
struct dm_target *ti;
@@ -1639,11 +1640,11 @@ static void integrity_sector_checksum(st
const char *data, unsigned offset, char *result)
{
__le64 sector_le = cpu_to_le64(sector);
- SHASH_DESC_ON_STACK(req, ic->internal_hash);
+ SHASH_DESC_ON_STACK(req, ic->internal_shash);
int r;
unsigned int digest_size;
- req->tfm = ic->internal_hash;
+ req->tfm = ic->internal_shash;
r = crypto_shash_init(req);
if (unlikely(r < 0)) {
@@ -4708,12 +4709,14 @@ static int dm_integrity_ctr(struct dm_ta
buffer_sectors = 1;
ic->log2_buffer_sectors = min((int)__fls(buffer_sectors), 31 - SECTOR_SHIFT);
- r = get_mac(&ic->internal_hash, &ic->internal_hash_alg, &ti->error,
+ r = get_mac(&ic->internal_shash, &ic->internal_hash_alg, &ti->error,
"Invalid internal hash", "Error setting internal hash key");
if (r)
goto bad;
- if (ic->internal_hash)
- ic->internal_hash_digestsize = crypto_shash_digestsize(ic->internal_hash);
+ if (ic->internal_shash) {
+ ic->internal_hash = true;
+ ic->internal_hash_digestsize = crypto_shash_digestsize(ic->internal_shash);
+ }
r = get_mac(&ic->journal_mac, &ic->journal_mac_alg, &ti->error,
"Invalid journal mac", "Error setting journal mac key");
@@ -5235,8 +5238,8 @@ static void dm_integrity_dtr(struct dm_t
if (ic->sb)
free_pages_exact(ic->sb, SB_SECTORS << SECTOR_SHIFT);
- if (ic->internal_hash)
- crypto_free_shash(ic->internal_hash);
+ if (ic->internal_shash)
+ crypto_free_shash(ic->internal_shash);
free_alg(&ic->internal_hash_alg);
if (ic->journal_crypt)
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH v2 7/7] dm-integrity: enable asynchronous hash interface
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (5 preceding siblings ...)
2025-09-08 13:16 ` [PATCH v2 6/7] dm-integrity: rename internal_hash Mikulas Patocka
@ 2025-09-08 13:16 ` Mikulas Patocka
2025-09-09 9:04 ` [PATCH v2 0/7] dm-integrity: asynchronous hash support Ingo Franzki
2025-09-09 13:36 ` [PATCH v2 0/7] dm-integrity: asynchronous hash support Harald Freudenberger
8 siblings, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-08 13:16 UTC (permalink / raw)
To: Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland, Mikulas Patocka
This commit enables the asynchronous hash interface in dm-integrity.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
drivers/md/dm-integrity.c | 243 +++++++++++++++++++++++++++++++++++++---------
1 file changed, 199 insertions(+), 44 deletions(-)
Index: linux-2.6/drivers/md/dm-integrity.c
===================================================================
--- linux-2.6.orig/drivers/md/dm-integrity.c 2025-09-03 15:41:06.000000000 +0200
+++ linux-2.6/drivers/md/dm-integrity.c 2025-09-03 16:25:58.000000000 +0200
@@ -224,6 +224,7 @@ struct dm_integrity_c {
int failed;
struct crypto_shash *internal_shash;
+ struct crypto_ahash *internal_ahash;
unsigned int internal_hash_digestsize;
struct dm_target *ti;
@@ -279,6 +280,9 @@ struct dm_integrity_c {
bool fix_hmac;
bool legacy_recalculate;
+ mempool_t ahash_req_pool;
+ struct ahash_request *journal_ahash_req;
+
struct alg_spec internal_hash_alg;
struct alg_spec journal_crypt_alg;
struct alg_spec journal_mac_alg;
@@ -328,6 +332,8 @@ struct dm_integrity_io {
unsigned payload_len;
bool integrity_payload_from_mempool;
bool integrity_range_locked;
+
+ struct ahash_request *ahash_req;
};
struct journal_completion {
@@ -354,6 +360,7 @@ struct bitmap_block_status {
static struct kmem_cache *journal_io_cache;
#define JOURNAL_IO_MEMPOOL 32
+#define AHASH_MEMPOOL 32
#ifdef DEBUG_PRINT
#define DEBUG_print(x, ...) printk(KERN_DEBUG x, ##__VA_ARGS__)
@@ -1636,8 +1643,8 @@ static void integrity_end_io(struct bio
dec_in_flight(dio);
}
-static void integrity_sector_checksum(struct dm_integrity_c *ic, sector_t sector,
- const char *data, unsigned offset, char *result)
+static void integrity_sector_checksum_shash(struct dm_integrity_c *ic, sector_t sector,
+ const char *data, unsigned offset, char *result)
{
__le64 sector_le = cpu_to_le64(sector);
SHASH_DESC_ON_STACK(req, ic->internal_shash);
@@ -1689,14 +1696,90 @@ failed:
get_random_bytes(result, ic->tag_size);
}
+static void integrity_sector_checksum_ahash(struct dm_integrity_c *ic, struct ahash_request **ahash_req,
+ sector_t sector, struct page *page, unsigned offset, char *result)
+{
+ __le64 sector_le = cpu_to_le64(sector);
+ struct ahash_request *req;
+ DECLARE_CRYPTO_WAIT(wait);
+ struct scatterlist sg[3], *s = sg;
+ int r;
+ unsigned int digest_size;
+ unsigned int nbytes = 0;
+
+ might_sleep();
+
+ req = *ahash_req;
+ if (unlikely(!req)) {
+ req = mempool_alloc(&ic->ahash_req_pool, GFP_NOIO);
+ *ahash_req = req;
+ }
+
+ ahash_request_set_tfm(req, ic->internal_ahash);
+ ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP, crypto_req_done, &wait);
+
+ if (ic->sb->flags & cpu_to_le32(SB_FLAG_FIXED_HMAC)) {
+ sg_init_table(sg, 3);
+ sg_set_buf(s, (const __u8 *)&ic->sb->salt, SALT_SIZE);
+ nbytes += SALT_SIZE;
+ s++;
+ } else {
+ sg_init_table(sg, 2);
+ }
+
+ if (likely(!is_vmalloc_addr(§or_le))) {
+ sg_set_buf(s, §or_le, sizeof(sector_le));
+ } else {
+ struct page *sec_page = vmalloc_to_page(§or_le);
+ unsigned int sec_off = offset_in_page(§or_le);
+ sg_set_page(s, sec_page, sizeof(sector_le), sec_off);
+ }
+ nbytes += sizeof(sector_le);
+ s++;
+
+ sg_set_page(s, page, ic->sectors_per_block << SECTOR_SHIFT, offset);
+ nbytes += ic->sectors_per_block << SECTOR_SHIFT;
+
+ ahash_request_set_crypt(req, sg, result, nbytes);
+
+ r = crypto_wait_req(crypto_ahash_digest(req), &wait);
+ if (unlikely(r)) {
+ dm_integrity_io_error(ic, "crypto_ahash_digest", r);
+ goto failed;
+ }
+
+ digest_size = ic->internal_hash_digestsize;
+ if (unlikely(digest_size < ic->tag_size))
+ memset(result + digest_size, 0, ic->tag_size - digest_size);
+
+ return;
+
+failed:
+ /* this shouldn't happen anyway, the hash functions have no reason to fail */
+ get_random_bytes(result, ic->tag_size);
+}
+
+static void integrity_sector_checksum(struct dm_integrity_c *ic, struct ahash_request **ahash_req,
+ sector_t sector, const char *data, unsigned offset, char *result)
+{
+ if (likely(ic->internal_shash != NULL))
+ integrity_sector_checksum_shash(ic, sector, data, offset, result);
+ else
+ integrity_sector_checksum_ahash(ic, ahash_req, sector, (struct page *)data, offset, result);
+}
+
static void *integrity_kmap(struct dm_integrity_c *ic, struct page *p)
{
- return kmap_local_page(p);
+ if (likely(ic->internal_shash != NULL))
+ return kmap_local_page(p);
+ else
+ return p;
}
static void integrity_kunmap(struct dm_integrity_c *ic, const void *ptr)
{
- kunmap_local(ptr);
+ if (likely(ic->internal_shash != NULL))
+ kunmap_local(ptr);
}
static void *integrity_identity(struct dm_integrity_c *ic, void *data)
@@ -1705,7 +1788,10 @@ static void *integrity_identity(struct d
BUG_ON(offset_in_page(data));
BUG_ON(!virt_addr_valid(data));
#endif
- return data;
+ if (likely(ic->internal_shash != NULL))
+ return data;
+ else
+ return virt_to_page(data);
}
static noinline void integrity_recheck(struct dm_integrity_io *dio, char *checksum)
@@ -1759,7 +1845,7 @@ static noinline void integrity_recheck(s
goto free_ret;
}
- integrity_sector_checksum(ic, logical_sector, integrity_identity(ic, buffer), buffer_offset, checksum);
+ integrity_sector_checksum(ic, &dio->ahash_req, logical_sector, integrity_identity(ic, buffer), buffer_offset, checksum);
r = dm_integrity_rw_tag(ic, checksum, &dio->metadata_block,
&dio->metadata_offset, ic->tag_size, TAG_CMP);
if (r) {
@@ -1863,7 +1949,7 @@ again:
pos = 0;
checksums_ptr = checksums;
do {
- integrity_sector_checksum(ic, sector, mem, bv_copy.bv_offset + pos, checksums_ptr);
+ integrity_sector_checksum(ic, &dio->ahash_req, sector, mem, bv_copy.bv_offset + pos, checksums_ptr);
checksums_ptr += ic->tag_size;
sectors_to_process -= ic->sectors_per_block;
pos += ic->sectors_per_block << SECTOR_SHIFT;
@@ -1971,6 +2057,7 @@ static int dm_integrity_map(struct dm_ta
dio->ic = ic;
dio->bi_status = 0;
dio->op = bio_op(bio);
+ dio->ahash_req = NULL;
if (ic->mode == 'I') {
bio->bi_iter.bi_sector = dm_target_offset(ic->ti, bio->bi_iter.bi_sector);
@@ -2140,10 +2227,10 @@ retry_kmap:
if (unlikely(digest_size > ic->tag_size)) {
char checksums_onstack[HASH_MAX_DIGESTSIZE];
- integrity_sector_checksum(ic, logical_sector, js_page, js_offset, checksums_onstack);
+ integrity_sector_checksum(ic, &dio->ahash_req, logical_sector, js_page, js_offset, checksums_onstack);
memcpy(journal_entry_tag(ic, je), checksums_onstack, ic->tag_size);
} else
- integrity_sector_checksum(ic, logical_sector, js_page, js_offset, journal_entry_tag(ic, je));
+ integrity_sector_checksum(ic, &dio->ahash_req, logical_sector, js_page, js_offset, journal_entry_tag(ic, je));
}
journal_entry_set_sector(je, logical_sector);
@@ -2519,7 +2606,7 @@ skip_spinlock:
const char *mem = integrity_kmap(ic, bv.bv_page);
if (ic->tag_size < ic->tuple_size)
memset(dio->integrity_payload + pos + ic->tag_size, 0, ic->tuple_size - ic->tuple_size);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, dio->integrity_payload + pos);
+ integrity_sector_checksum(ic, &dio->ahash_req, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, dio->integrity_payload + pos);
integrity_kunmap(ic, mem);
pos += ic->tuple_size;
bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
@@ -2599,7 +2686,7 @@ static void dm_integrity_inline_recheck(
}
bio_put(outgoing_bio);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, integrity_identity(ic, outgoing_data), 0, digest);
+ integrity_sector_checksum(ic, &dio->ahash_req, dio->bio_details.bi_iter.bi_sector, integrity_identity(ic, outgoing_data), 0, digest);
if (unlikely(crypto_memneq(digest, dio->integrity_payload, min(ic->internal_hash_digestsize, ic->tag_size)))) {
DMERR_LIMIT("%pg: Checksum failed at sector 0x%llx",
ic->dev->bdev, dio->bio_details.bi_iter.bi_sector);
@@ -2623,32 +2710,58 @@ static void dm_integrity_inline_recheck(
bio_endio(bio);
}
+static inline bool dm_integrity_check(struct dm_integrity_c *ic, struct dm_integrity_io *dio)
+{
+ struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
+ unsigned pos = 0;
+
+ while (dio->bio_details.bi_iter.bi_size) {
+ char digest[HASH_MAX_DIGESTSIZE];
+ struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
+ char *mem = integrity_kmap(ic, bv.bv_page);
+ integrity_sector_checksum(ic, &dio->ahash_req, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, digest);
+ if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
+ min(ic->internal_hash_digestsize, ic->tag_size)))) {
+ integrity_kunmap(ic, mem);
+ dm_integrity_free_payload(dio);
+ INIT_WORK(&dio->work, dm_integrity_inline_recheck);
+ queue_work(ic->offload_wq, &dio->work);
+ return false;
+ }
+ integrity_kunmap(ic, mem);
+ pos += ic->tuple_size;
+ bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
+ }
+
+ return true;
+}
+
+static void dm_integrity_inline_async_check(struct work_struct *w)
+{
+ struct dm_integrity_io *dio = container_of(w, struct dm_integrity_io, work);
+ struct dm_integrity_c *ic = dio->ic;
+ struct bio *bio = dm_bio_from_per_bio_data(dio, sizeof(struct dm_integrity_io));
+
+ if (likely(dm_integrity_check(ic, dio)))
+ bio_endio(bio);
+}
+
static int dm_integrity_end_io(struct dm_target *ti, struct bio *bio, blk_status_t *status)
{
struct dm_integrity_c *ic = ti->private;
+ struct dm_integrity_io *dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
if (ic->mode == 'I') {
- struct dm_integrity_io *dio = dm_per_bio_data(bio, sizeof(struct dm_integrity_io));
- if (dio->op == REQ_OP_READ && likely(*status == BLK_STS_OK)) {
- unsigned pos = 0;
+ if (dio->op == REQ_OP_READ && likely(*status == BLK_STS_OK) && likely(dio->bio_details.bi_iter.bi_size != 0)) {
if (ic->sb->flags & cpu_to_le32(SB_FLAG_RECALCULATING) &&
unlikely(dio->integrity_range_locked))
- goto skip_check;
- while (dio->bio_details.bi_iter.bi_size) {
- char digest[HASH_MAX_DIGESTSIZE];
- struct bio_vec bv = bio_iter_iovec(bio, dio->bio_details.bi_iter);
- char *mem = integrity_kmap(ic, bv.bv_page);
- integrity_sector_checksum(ic, dio->bio_details.bi_iter.bi_sector, mem, bv.bv_offset, digest);
- if (unlikely(crypto_memneq(digest, dio->integrity_payload + pos,
- min(ic->internal_hash_digestsize, ic->tag_size)))) {
- integrity_kunmap(ic, mem);
- dm_integrity_free_payload(dio);
- INIT_WORK(&dio->work, dm_integrity_inline_recheck);
- queue_work(ic->offload_wq, &dio->work);
+ goto skip_check;
+ if (likely(ic->internal_shash != NULL)) {
+ if (unlikely(!dm_integrity_check(ic, dio)))
return DM_ENDIO_INCOMPLETE;
- }
- integrity_kunmap(ic, mem);
- pos += ic->tuple_size;
- bio_advance_iter_single(bio, &dio->bio_details.bi_iter, ic->sectors_per_block << SECTOR_SHIFT);
+ } else {
+ INIT_WORK(&dio->work, dm_integrity_inline_async_check);
+ queue_work(ic->offload_wq, &dio->work);
+ return DM_ENDIO_INCOMPLETE;
}
}
skip_check:
@@ -2656,6 +2769,8 @@ skip_check:
if (unlikely(dio->integrity_range_locked))
remove_range(ic, &dio->range);
}
+ if (unlikely(dio->ahash_req))
+ mempool_free(dio->ahash_req, &ic->ahash_req_pool);
return DM_ENDIO_DONE;
}
@@ -2916,7 +3031,7 @@ static void do_journal_write(struct dm_i
void *js_page = integrity_identity(ic, (char *)js - offset_in_page(js));
unsigned js_offset = offset_in_page(js);
- integrity_sector_checksum(ic, sec + ((l - j) << ic->sb->log2_sectors_per_block),
+ integrity_sector_checksum(ic, &ic->journal_ahash_req, sec + ((l - j) << ic->sb->log2_sectors_per_block),
js_page, js_offset, test_tag);
if (unlikely(crypto_memneq(test_tag, journal_entry_tag(ic, je2), ic->tag_size))) {
dm_integrity_io_error(ic, "tag mismatch when replaying journal", -EILSEQ);
@@ -3000,6 +3115,7 @@ static void integrity_recalc(struct work
size_t recalc_tags_size;
u8 *recalc_buffer = NULL;
u8 *recalc_tags = NULL;
+ struct ahash_request *ahash_req = NULL;
struct dm_integrity_range range;
struct dm_io_request io_req;
struct dm_io_region io_loc;
@@ -3113,7 +3229,7 @@ next_chunk:
void *ptr = recalc_buffer + (i << SECTOR_SHIFT);
void *ptr_page = integrity_identity(ic, (char *)ptr - offset_in_page(ptr));
unsigned ptr_offset = offset_in_page(ptr);
- integrity_sector_checksum(ic, logical_sector + i, ptr_page, ptr_offset, t);
+ integrity_sector_checksum(ic, &ahash_req, logical_sector + i, ptr_page, ptr_offset, t);
t += ic->tag_size;
}
@@ -3157,6 +3273,7 @@ unlock_ret:
free_ret:
kfree(recalc_buffer);
kvfree(recalc_tags);
+ mempool_free(ahash_req, &ic->ahash_req_pool);
}
static void integrity_recalc_inline(struct work_struct *w)
@@ -3165,6 +3282,7 @@ static void integrity_recalc_inline(stru
size_t recalc_tags_size;
u8 *recalc_buffer = NULL;
u8 *recalc_tags = NULL;
+ struct ahash_request *ahash_req = NULL;
struct dm_integrity_range range;
struct bio *bio;
struct bio_integrity_payload *bip;
@@ -3237,7 +3355,7 @@ next_chunk:
void *ptr_page = integrity_identity(ic, (char *)ptr - offset_in_page(ptr));
unsigned ptr_offset = offset_in_page(ptr);
memset(t, 0, ic->tuple_size);
- integrity_sector_checksum(ic, range.logical_sector + i, ptr_page, ptr_offset, t);
+ integrity_sector_checksum(ic, &ahash_req, range.logical_sector + i, ptr_page, ptr_offset, t);
t += ic->tuple_size;
}
@@ -3289,6 +3407,7 @@ unlock_ret:
free_ret:
kfree(recalc_buffer);
kfree(recalc_tags);
+ mempool_free(ahash_req, &ic->ahash_req_pool);
}
static void bitmap_block_work(struct work_struct *w)
@@ -4229,27 +4348,49 @@ nomem:
return -ENOMEM;
}
-static int get_mac(struct crypto_shash **hash, struct alg_spec *a, char **error,
- char *error_alg, char *error_key)
+static int get_mac(struct crypto_shash **shash, struct crypto_ahash **ahash,
+ struct alg_spec *a, char **error, char *error_alg, char *error_key)
{
int r;
if (a->alg_string) {
- *hash = crypto_alloc_shash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
- if (IS_ERR(*hash)) {
+ if (ahash) {
+ *ahash = crypto_alloc_ahash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
+ if (IS_ERR(*ahash)) {
+ *ahash = NULL;
+ goto try_shash;
+ }
+
+ if (a->key) {
+ r = crypto_ahash_setkey(*ahash, a->key, a->key_size);
+ if (r) {
+ *error = error_key;
+ return r;
+ }
+ } else if (crypto_ahash_get_flags(*ahash) & CRYPTO_TFM_NEED_KEY) {
+ *error = error_key;
+ return -ENOKEY;
+ }
+
+ return 0;
+ }
+
+try_shash:
+ *shash = crypto_alloc_shash(a->alg_string, 0, CRYPTO_ALG_ALLOCATES_MEMORY);
+ if (IS_ERR(*shash)) {
*error = error_alg;
- r = PTR_ERR(*hash);
- *hash = NULL;
+ r = PTR_ERR(*shash);
+ *shash = NULL;
return r;
}
if (a->key) {
- r = crypto_shash_setkey(*hash, a->key, a->key_size);
+ r = crypto_shash_setkey(*shash, a->key, a->key_size);
if (r) {
*error = error_key;
return r;
}
- } else if (crypto_shash_get_flags(*hash) & CRYPTO_TFM_NEED_KEY) {
+ } else if (crypto_shash_get_flags(*shash) & CRYPTO_TFM_NEED_KEY) {
*error = error_key;
return -ENOKEY;
}
@@ -4709,7 +4850,7 @@ static int dm_integrity_ctr(struct dm_ta
buffer_sectors = 1;
ic->log2_buffer_sectors = min((int)__fls(buffer_sectors), 31 - SECTOR_SHIFT);
- r = get_mac(&ic->internal_shash, &ic->internal_hash_alg, &ti->error,
+ r = get_mac(&ic->internal_shash, &ic->internal_ahash, &ic->internal_hash_alg, &ti->error,
"Invalid internal hash", "Error setting internal hash key");
if (r)
goto bad;
@@ -4717,8 +4858,18 @@ static int dm_integrity_ctr(struct dm_ta
ic->internal_hash = true;
ic->internal_hash_digestsize = crypto_shash_digestsize(ic->internal_shash);
}
+ if (ic->internal_ahash) {
+ ic->internal_hash = true;
+ ic->internal_hash_digestsize = crypto_ahash_digestsize(ic->internal_ahash);
+ r = mempool_init_kmalloc_pool(&ic->ahash_req_pool, AHASH_MEMPOOL,
+ sizeof(struct ahash_request) + crypto_ahash_reqsize(ic->internal_ahash));
+ if (r) {
+ ti->error = "Cannot allocate mempool";
+ goto bad;
+ }
+ }
- r = get_mac(&ic->journal_mac, &ic->journal_mac_alg, &ti->error,
+ r = get_mac(&ic->journal_mac, NULL, &ic->journal_mac_alg, &ti->error,
"Invalid journal mac", "Error setting journal mac key");
if (r)
goto bad;
@@ -5201,6 +5352,8 @@ static void dm_integrity_dtr(struct dm_t
kvfree(ic->bbs);
if (ic->bufio)
dm_bufio_client_destroy(ic->bufio);
+ mempool_free(ic->journal_ahash_req, &ic->ahash_req_pool);
+ mempool_exit(&ic->ahash_req_pool);
bioset_exit(&ic->recalc_bios);
bioset_exit(&ic->recheck_bios);
mempool_exit(&ic->recheck_pool);
@@ -5240,6 +5393,8 @@ static void dm_integrity_dtr(struct dm_t
if (ic->internal_shash)
crypto_free_shash(ic->internal_shash);
+ if (ic->internal_ahash)
+ crypto_free_ahash(ic->internal_ahash);
free_alg(&ic->internal_hash_alg);
if (ic->journal_crypt)
@@ -5256,7 +5411,7 @@ static void dm_integrity_dtr(struct dm_t
static struct target_type integrity_target = {
.name = "integrity",
- .version = {1, 13, 0},
+ .version = {1, 14, 0},
.module = THIS_MODULE,
.features = DM_TARGET_SINGLETON | DM_TARGET_INTEGRITY,
.ctr = dm_integrity_ctr,
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (6 preceding siblings ...)
2025-09-08 13:16 ` [PATCH v2 7/7] dm-integrity: enable asynchronous hash interface Mikulas Patocka
@ 2025-09-09 9:04 ` Ingo Franzki
2025-09-09 9:42 ` Mikulas Patocka
2025-09-09 13:36 ` [PATCH v2 0/7] dm-integrity: asynchronous hash support Harald Freudenberger
8 siblings, 1 reply; 34+ messages in thread
From: Ingo Franzki @ 2025-09-09 9:04 UTC (permalink / raw)
To: Mikulas Patocka, Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, agk, snitzer, gmazyland, Milan Broz
On 08.09.2025 15:16, Mikulas Patocka wrote:
> Hi
>
> These patches add asynchronous hash support to dm-integrity.
>
> Harald, please test them, I will commit them if they work for you.
>
> Mikulas
>
I have started to test your patches in top of 6.17.0-rc5.
I am testing 2 scenarios:
1.) plain dm-integrity using PHMAC.
2.) combined encryption and integrity (LUKS2 with integrity option) using PHMAC (and PAES).
Plain dm-integrity using PHMAC seems to work fine. No errors occurred, but I certainly have not stress-teted it.
I did:
# integritysetup format --integrity phmac-sha256 --integrity-key-file '<key-file>' --integrity-key-size <size-of-key> /dev/loop0
# integritysetup open --integrity phmac-sha256 --integrity-key-file '<key-file>' --integrity-key-size <size-of-key> /dev/loop0
# mkfs.ext4 /dev/mapper/int-loop
# mount /dev/mapper/int-loop /mnt
- read/write data to/from /mnt
All works fine.
However, combined encryption and integrity seems to have problems. Not sure if this is related to your changes in dm-integrity, or if there is still something missing in dm-crypt, or the interface between the two:
I did:
# cryptsetup luksFormat --type luks2 --master-key-file '<key-file>' --key-size <size-of-encryption-key-in-bits> --cipher paes-xts-plain64 --pbkdf argon2i --pbkdf-memory 32 --pbkdf-force-iterations 4 --integrity phmac-sha256 --integrity-key-size <size-of-integrity-key-in-bits> /dev/loop0
# cryptsetup luksOpen /dev/loop0 int-loop
The open step succeeds, but the following errors are shown in the journal:
Sep 09 04:54:50 fedora kernel: crypt_convert_block_aead: 12 callbacks suppressed
Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 09 04:54:50 fedora kernel: buffer_io_error: 3 callbacks suppressed
Sep 09 04:54:50 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
Sep 09 04:54:50 fedora 55-scsi-sg3_id.rules[2378]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
Still, the mapper devices are there as expected:
# ll /dev/mapper/
total 0
crw------- 1 root root 10, 236 Sep 9 04:26 control
lrwxrwxrwx 1 root root 7 Sep 9 04:54 int-loop -> ../dm-1
lrwxrwxrwx 1 root root 7 Sep 9 04:54 int-loop_dif -> ../dm-0
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 200M 0 loop
└─int-loop_dif 251:0 0 171.4M 0 crypt
└─int-loop 251:1 0 171.4M 0 crypt
However, when making a file system on int-loop it fails:
# mkfs.ext4 /dev/mapper/int-loop
mke2fs 1.47.0 (5-Feb-2023)
Warning: could not erase sector 2: Input/output error
Creating filesystem with 175564 1k blocks and 43824 inodes
Filesystem UUID: 4a6d4579-0b58-4be7-aa67-1f76e4e754b7
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Allocating group tables: done
Warning: could not read block 0: Input/output error
Warning: could not erase sector 0: Input/output error
Writing inode tables: done
ext2fs_write_inode_full: Input/output error while writing reserved inodes
And the following messages appear on the journal:
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 09 04:56:14 fedora 55-scsi-sg3_id.rules[2399]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
This does not really look good.
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 9:04 ` [PATCH v2 0/7] dm-integrity: asynchronous hash support Ingo Franzki
@ 2025-09-09 9:42 ` Mikulas Patocka
2025-09-09 11:18 ` Ingo Franzki
0 siblings, 1 reply; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-09 9:42 UTC (permalink / raw)
To: Ingo Franzki
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer, Milan Broz
On Tue, 9 Sep 2025, Ingo Franzki wrote:
> However, combined encryption and integrity seems to have problems. Not
> sure if this is related to your changes in dm-integrity, or if there is
> still something missing in dm-crypt, or the interface between the two:
>
> I did:
>
> # cryptsetup luksFormat --type luks2 --master-key-file '<key-file>'
> --key-size <size-of-encryption-key-in-bits> --cipher paes-xts-plain64
> --pbkdf argon2i --pbkdf-memory 32 --pbkdf-force-iterations 4 --integrity
> phmac-sha256 --integrity-key-size <size-of-integrity-key-in-bits>
> /dev/loop0
>
> # cryptsetup luksOpen /dev/loop0 int-loop
>
> The open step succeeds, but the following errors are shown in the journal:
>
> Sep 09 04:54:50 fedora kernel: crypt_convert_block_aead: 12 callbacks suppressed
> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
> Sep 09 04:54:50 fedora kernel: buffer_io_error: 3 callbacks suppressed
> Sep 09 04:54:50 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
> Sep 09 04:54:50 fedora 55-scsi-sg3_id.rules[2378]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
In this mode, the encryption, decryption and authentication is done by
dm-crypt, not dm-integrity. dm-integrity just passes the tags around.
So, it looks like a dm-crypt bug.
Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
to verify that the patches do not introduce the bug.
Mikulas
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 9:42 ` Mikulas Patocka
@ 2025-09-09 11:18 ` Ingo Franzki
2025-09-09 11:47 ` Milan Broz
2025-09-11 13:43 ` Ingo Franzki
0 siblings, 2 replies; 34+ messages in thread
From: Ingo Franzki @ 2025-09-09 11:18 UTC (permalink / raw)
To: Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer, Milan Broz
On 09.09.2025 11:42, Mikulas Patocka wrote:
>
>
> On Tue, 9 Sep 2025, Ingo Franzki wrote:
>
>> However, combined encryption and integrity seems to have problems. Not
>> sure if this is related to your changes in dm-integrity, or if there is
>> still something missing in dm-crypt, or the interface between the two:
>>
>> I did:
>>
>> # cryptsetup luksFormat --type luks2 --master-key-file '<key-file>'
>> --key-size <size-of-encryption-key-in-bits> --cipher paes-xts-plain64
>> --pbkdf argon2i --pbkdf-memory 32 --pbkdf-force-iterations 4 --integrity
>> phmac-sha256 --integrity-key-size <size-of-integrity-key-in-bits>
>> /dev/loop0
>>
>> # cryptsetup luksOpen /dev/loop0 int-loop
>>
>> The open step succeeds, but the following errors are shown in the journal:
>>
>> Sep 09 04:54:50 fedora kernel: crypt_convert_block_aead: 12 callbacks suppressed
>> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
>> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
>> Sep 09 04:54:50 fedora kernel: buffer_io_error: 3 callbacks suppressed
>> Sep 09 04:54:50 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
>> Sep 09 04:54:50 fedora 55-scsi-sg3_id.rules[2378]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
>
> In this mode, the encryption, decryption and authentication is done by
> dm-crypt, not dm-integrity. dm-integrity just passes the tags around.
>
> So, it looks like a dm-crypt bug.
>
> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
> to verify that the patches do not introduce the bug.
With your patches reverted the combined mode fails the same way as with your patches.
So they did not introduce the bug.
>
> Mikulas
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 11:18 ` Ingo Franzki
@ 2025-09-09 11:47 ` Milan Broz
2025-09-09 11:50 ` Ingo Franzki
2025-09-11 13:43 ` Ingo Franzki
1 sibling, 1 reply; 34+ messages in thread
From: Milan Broz @ 2025-09-09 11:47 UTC (permalink / raw)
To: Ingo Franzki, Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer
On 9/9/25 1:18 PM, Ingo Franzki wrote:
>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>> to verify that the patches do not introduce the bug.
>
> With your patches reverted the combined mode fails the same way as with your patches.
> So they did not introduce the bug.
Please report it as cryptsetup issue with a reproducer so we can later check it.
Thanks.
Milan
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 11:47 ` Milan Broz
@ 2025-09-09 11:50 ` Ingo Franzki
2025-09-09 12:15 ` Milan Broz
0 siblings, 1 reply; 34+ messages in thread
From: Ingo Franzki @ 2025-09-09 11:50 UTC (permalink / raw)
To: Milan Broz, Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer
On 09.09.2025 13:47, Milan Broz wrote:
> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>> to verify that the patches do not introduce the bug.
>>
>> With your patches reverted the combined mode fails the same way as with your patches.
>> So they did not introduce the bug.
>
> Please report it as cryptsetup issue with a reproducer so we can later check it.
I don't think its a cryptsetup bug, its rather that dm-crypt is missing something to deal with async HMAC ciphers.
The point is that PHMAC is a async-only cipher, with no sync variant.
>
> Thanks.
> Milan
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 11:50 ` Ingo Franzki
@ 2025-09-09 12:15 ` Milan Broz
2025-09-09 12:23 ` Ingo Franzki
2025-09-09 13:51 ` Harald Freudenberger
0 siblings, 2 replies; 34+ messages in thread
From: Milan Broz @ 2025-09-09 12:15 UTC (permalink / raw)
To: Ingo Franzki, Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer
On 9/9/25 1:50 PM, Ingo Franzki wrote:
> On 09.09.2025 13:47, Milan Broz wrote:
>> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>>> to verify that the patches do not introduce the bug.
>>>
>>> With your patches reverted the combined mode fails the same way as with your patches.
>>> So they did not introduce the bug.
>>
>> Please report it as cryptsetup issue with a reproducer so we can later check it.
>
> I don't think its a cryptsetup bug, its rather that dm-crypt is missing something to deal with async HMAC ciphers.
> The point is that PHMAC is a async-only cipher, with no sync variant.
I know, but there is no tracker for dm-crypt and what I like to have some kind of upstream CI testing for PHMAC/PAES
even without mainframe hw (we already talked about a fake cipher module).
It is not an real issue as PHMAC is neither in released kernel nor in cryptsetup yet, but we should have a test
coverage once it is merged.
On the other side, the async thing is a real pain, is there any plan to switch to something better in future
(for dm-crypt and dm-integrity)?
Thanks,
Milan
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 12:15 ` Milan Broz
@ 2025-09-09 12:23 ` Ingo Franzki
2025-09-09 12:40 ` Milan Broz
2025-09-09 13:51 ` Harald Freudenberger
1 sibling, 1 reply; 34+ messages in thread
From: Ingo Franzki @ 2025-09-09 12:23 UTC (permalink / raw)
To: Milan Broz, Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer
On 09.09.2025 14:15, Milan Broz wrote:
> On 9/9/25 1:50 PM, Ingo Franzki wrote:
>> On 09.09.2025 13:47, Milan Broz wrote:
>>> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>>>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>>>> to verify that the patches do not introduce the bug.
>>>>
>>>> With your patches reverted the combined mode fails the same way as with your patches.
>>>> So they did not introduce the bug.
>>>
>>> Please report it as cryptsetup issue with a reproducer so we can later check it.
>>
>> I don't think its a cryptsetup bug, its rather that dm-crypt is missing something to deal with async HMAC ciphers.
>> The point is that PHMAC is a async-only cipher, with no sync variant.
>
> I know, but there is no tracker for dm-crypt and what I like to have some kind of upstream CI testing for PHMAC/PAES
> even without mainframe hw (we already talked about a fake cipher module).
>
> It is not an real issue as PHMAC is neither in released kernel nor in cryptsetup yet, but we should have a test
> coverage once it is merged.
The fake-PHMAC cipher you use for cryptsetup's CI is not async-only, so you won't see this error with it.
>
> On the other side, the async thing is a real pain, is there any plan to switch to something better in future
> (for dm-crypt and dm-integrity)?
>
> Thanks,
> Milan
>
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 12:23 ` Ingo Franzki
@ 2025-09-09 12:40 ` Milan Broz
0 siblings, 0 replies; 34+ messages in thread
From: Milan Broz @ 2025-09-09 12:40 UTC (permalink / raw)
To: Ingo Franzki, Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer
On 9/9/25 2:23 PM, Ingo Franzki wrote:
> On 09.09.2025 14:15, Milan Broz wrote:
>> On 9/9/25 1:50 PM, Ingo Franzki wrote:
>>> On 09.09.2025 13:47, Milan Broz wrote:
>>>> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>>>>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>>>>> to verify that the patches do not introduce the bug.
>>>>>
>>>>> With your patches reverted the combined mode fails the same way as with your patches.
>>>>> So they did not introduce the bug.
>>>>
>>>> Please report it as cryptsetup issue with a reproducer so we can later check it.
>>>
>>> I don't think its a cryptsetup bug, its rather that dm-crypt is missing something to deal with async HMAC ciphers.
>>> The point is that PHMAC is a async-only cipher, with no sync variant.
>>
>> I know, but there is no tracker for dm-crypt and what I like to have some kind of upstream CI testing for PHMAC/PAES
>> even without mainframe hw (we already talked about a fake cipher module).
>>
>> It is not an real issue as PHMAC is neither in released kernel nor in cryptsetup yet, but we should have a test
>> coverage once it is merged.
>
> The fake-PHMAC cipher you use for cryptsetup's CI is not async-only, so you won't see this error with it.
Years ago I tested async path by replacing algorithm (in kernel) with cryptd(%s-generic) - would this work in principle for PHMAC?
Milan
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 12:15 ` Milan Broz
2025-09-09 12:23 ` Ingo Franzki
@ 2025-09-09 13:51 ` Harald Freudenberger
2025-09-09 14:12 ` Milan Broz
1 sibling, 1 reply; 34+ messages in thread
From: Harald Freudenberger @ 2025-09-09 13:51 UTC (permalink / raw)
To: Milan Broz
Cc: Ingo Franzki, Mikulas Patocka, Herbert Xu, David S. Miller,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer
On 2025-09-09 14:15, Milan Broz wrote:
> On 9/9/25 1:50 PM, Ingo Franzki wrote:
>> On 09.09.2025 13:47, Milan Broz wrote:
>>> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>>>> Please, revert my patches and run the same test on a clean
>>>>> 6.17.0-rc5 just
>>>>> to verify that the patches do not introduce the bug.
>>>>
>>>> With your patches reverted the combined mode fails the same way as
>>>> with your patches.
>>>> So they did not introduce the bug.
>>>
>>> Please report it as cryptsetup issue with a reproducer so we can
>>> later check it.
>>
>> I don't think its a cryptsetup bug, its rather that dm-crypt is
>> missing something to deal with async HMAC ciphers.
>> The point is that PHMAC is a async-only cipher, with no sync variant.
>
> I know, but there is no tracker for dm-crypt and what I like to have
> some kind of upstream CI testing for PHMAC/PAES
> even without mainframe hw (we already talked about a fake cipher
> module).
Let me think about this a bit... You are suggesting a test kernel module
for
e.g. x64 which acts like the phmac/paes implementation in a asynchronous
way.
I'll discuss this with Ingo.
>
> It is not an real issue as PHMAC is neither in released kernel nor in
> cryptsetup yet, but we should have a test
> coverage once it is merged.
>
> On the other side, the async thing is a real pain, is there any plan
> to switch to something better in future
> (for dm-crypt and dm-integrity)?
>
Well, as of now all the s390 pkey things are by nature asynchronous.
Which
means at any time the key may get invalid. It is in the end a hardware
backed
key and thus if the hardware is changed (for example a 'live' guest
migration)
the key runs invalid and needs to be re-derived or re-fetched. I don't
see a
way to hide this and have a synchronous implementation instead.
I think on the contrary the need for asynchronous algorithms will
increase.
More and more platforms run virtual machines which exploit special
hardware
like AI accelerators and crypto co-processors and do support live guest
migration.
Well, that's future. However, it would be nice to have at least one
asynchronous
algorithm implementation available on a broad platform like x64 or arm
maybe only
for test of the dm-integrity layer.
> Thanks,
> Milan
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 13:51 ` Harald Freudenberger
@ 2025-09-09 14:12 ` Milan Broz
0 siblings, 0 replies; 34+ messages in thread
From: Milan Broz @ 2025-09-09 14:12 UTC (permalink / raw)
To: freude
Cc: Ingo Franzki, Mikulas Patocka, Herbert Xu, David S. Miller,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer
On 9/9/25 3:51 PM, Harald Freudenberger wrote:
> On 2025-09-09 14:15, Milan Broz wrote:
>> On 9/9/25 1:50 PM, Ingo Franzki wrote:
>>> On 09.09.2025 13:47, Milan Broz wrote:
>>>> On 9/9/25 1:18 PM, Ingo Franzki wrote:
>>>>>> Please, revert my patches and run the same test on a clean
>>>>>> 6.17.0-rc5 just
>>>>>> to verify that the patches do not introduce the bug.
>>>>>
>>>>> With your patches reverted the combined mode fails the same way as
>>>>> with your patches.
>>>>> So they did not introduce the bug.
>>>>
>>>> Please report it as cryptsetup issue with a reproducer so we can
>>>> later check it.
>>>
>>> I don't think its a cryptsetup bug, its rather that dm-crypt is
>>> missing something to deal with async HMAC ciphers.
>>> The point is that PHMAC is a async-only cipher, with no sync variant.
>>
>> I know, but there is no tracker for dm-crypt and what I like to have
>> some kind of upstream CI testing for PHMAC/PAES
>> even without mainframe hw (we already talked about a fake cipher
>> module).
>
> Let me think about this a bit... You are suggesting a test kernel module
> for
> e.g. x64 which acts like the phmac/paes implementation in a asynchronous
> way.
> I'll discuss this with Ingo.
Just for the context - we do not need a real implementation, only something
that pretends the alg with that name exists so we can check all options.
In reality we just cloned SHA ans AES modules and renamed them - we do not
care that keys is not wrapped, we use it directly here. This allows us
to prepare a test script that can run in our CI without mainframe HW.
(These modules are compiled on the CI builder and loaded to the kernel.)
If cryptd() can be used here, we can trivially add async path testing.
It will not be perfect, but still better than nothing.
That's all, no real magic :)
Milan
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-09 11:18 ` Ingo Franzki
2025-09-09 11:47 ` Milan Broz
@ 2025-09-11 13:43 ` Ingo Franzki
2025-09-11 15:58 ` Mikulas Patocka
1 sibling, 1 reply; 34+ messages in thread
From: Ingo Franzki @ 2025-09-11 13:43 UTC (permalink / raw)
To: Mikulas Patocka
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer, Milan Broz
On 09.09.2025 13:18, Ingo Franzki wrote:
> On 09.09.2025 11:42, Mikulas Patocka wrote:
>>
>>
>> On Tue, 9 Sep 2025, Ingo Franzki wrote:
>>
>>> However, combined encryption and integrity seems to have problems. Not
>>> sure if this is related to your changes in dm-integrity, or if there is
>>> still something missing in dm-crypt, or the interface between the two:
>>>
>>> I did:
>>>
>>> # cryptsetup luksFormat --type luks2 --master-key-file '<key-file>'
>>> --key-size <size-of-encryption-key-in-bits> --cipher paes-xts-plain64
>>> --pbkdf argon2i --pbkdf-memory 32 --pbkdf-force-iterations 4 --integrity
>>> phmac-sha256 --integrity-key-size <size-of-integrity-key-in-bits>
>>> /dev/loop0
>>>
>>> # cryptsetup luksOpen /dev/loop0 int-loop
>>>
>>> The open step succeeds, but the following errors are shown in the journal:
>>>
>>> Sep 09 04:54:50 fedora kernel: crypt_convert_block_aead: 12 callbacks suppressed
>>> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
>>> Sep 09 04:54:50 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
>>> Sep 09 04:54:50 fedora kernel: buffer_io_error: 3 callbacks suppressed
>>> Sep 09 04:54:50 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
>>> Sep 09 04:54:50 fedora 55-scsi-sg3_id.rules[2378]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
>>
>> In this mode, the encryption, decryption and authentication is done by
>> dm-crypt, not dm-integrity. dm-integrity just passes the tags around.
>>
>> So, it looks like a dm-crypt bug.
>>
>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>> to verify that the patches do not introduce the bug.
>
> With your patches reverted the combined mode fails the same way as with your patches.
> So they did not introduce the bug.
Mikulas, do you have any idea what could be causing this errors?
Is it that dm-crypt is not properly dealing with async-only HMAC ciphers?
Async-only encryption ciphers seem to work fine in dm-crypt, since LUKS with PAES (but no integrity) works fine, and PAES is an async-onky cipher.
LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine, even in combination with PAES.
>
>>
>> Mikulas
>>
>
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-11 13:43 ` Ingo Franzki
@ 2025-09-11 15:58 ` Mikulas Patocka
2025-09-12 8:08 ` Ingo Franzki
2025-09-18 15:00 ` Harald Freudenberger
0 siblings, 2 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-11 15:58 UTC (permalink / raw)
To: Ingo Franzki
Cc: Harald Freudenberger, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer, Milan Broz
On Thu, 11 Sep 2025, Ingo Franzki wrote:
> >> So, it looks like a dm-crypt bug.
> >>
> >> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
> >> to verify that the patches do not introduce the bug.
> >
> > With your patches reverted the combined mode fails the same way as with your patches.
> > So they did not introduce the bug.
>
> Mikulas, do you have any idea what could be causing this errors?
> Is it that dm-crypt is not properly dealing with async-only HMAC ciphers?
> Async-only encryption ciphers seem to work fine in dm-crypt, since LUKS with PAES (but no integrity) works fine, and PAES is an async-onky cipher.
> LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine, even in combination with PAES.
Yes, I think that it's a problem with async HMAC. The bug is probably
either in dm-crypt or in the crypto library.
Do you have some other (non-dm-crypt-related) workload that uses the
async authentication, so that we can determine whether the bug is in
dm-crypt or crypto?
Otherwise, would it be possible to give us a virtual machine on the
mainframe to debug this issue?
Mikulas
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-11 15:58 ` Mikulas Patocka
@ 2025-09-12 8:08 ` Ingo Franzki
2025-09-15 9:26 ` Harald Freudenberger
2025-09-18 15:00 ` Harald Freudenberger
1 sibling, 1 reply; 34+ messages in thread
From: Ingo Franzki @ 2025-09-12 8:08 UTC (permalink / raw)
To: Mikulas Patocka, Harald Freudenberger
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, agk, snitzer, Milan Broz
On 11.09.2025 17:58, Mikulas Patocka wrote:
>
>
> On Thu, 11 Sep 2025, Ingo Franzki wrote:
>
>>>> So, it looks like a dm-crypt bug.
>>>>
>>>> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>>> to verify that the patches do not introduce the bug.
>>>
>>> With your patches reverted the combined mode fails the same way as with your patches.
>>> So they did not introduce the bug.
>>
>> Mikulas, do you have any idea what could be causing this errors?
>> Is it that dm-crypt is not properly dealing with async-only HMAC ciphers?
>> Async-only encryption ciphers seem to work fine in dm-crypt, since LUKS with PAES (but no integrity) works fine, and PAES is an async-onky cipher.
>> LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine, even in combination with PAES.
>
> Yes, I think that it's a problem with async HMAC. The bug is probably
> either in dm-crypt or in the crypto library.
>
> Do you have some other (non-dm-crypt-related) workload that uses the
> async authentication, so that we can determine whether the bug is in
> dm-crypt or crypto?
Well, dm-integrity can use PHMAC and this works (with you patches) as confirmed in this mail thread.
I don't think we have other non-dm-crypt or non-dm-integrity related workload.
We could probably come up with a test program using AF_ALG that uses PHMAC.
@Harald: Do you possibly have such already?
>
> Otherwise, would it be possible to give us a virtual machine on the
> mainframe to debug this issue?
@Harald: What do you think, could this be possible?
>
> Mikulas
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-12 8:08 ` Ingo Franzki
@ 2025-09-15 9:26 ` Harald Freudenberger
0 siblings, 0 replies; 34+ messages in thread
From: Harald Freudenberger @ 2025-09-15 9:26 UTC (permalink / raw)
To: Ingo Franzki
Cc: Mikulas Patocka, Herbert Xu, David S. Miller, Eric Biggers,
dengler, linux-s390, dm-devel, agk, snitzer, Milan Broz
On 2025-09-12 10:08, Ingo Franzki wrote:
> On 11.09.2025 17:58, Mikulas Patocka wrote:
>>
>>
>> On Thu, 11 Sep 2025, Ingo Franzki wrote:
>>
>>>>> So, it looks like a dm-crypt bug.
>>>>>
>>>>> Please, revert my patches and run the same test on a clean
>>>>> 6.17.0-rc5 just
>>>>> to verify that the patches do not introduce the bug.
>>>>
>>>> With your patches reverted the combined mode fails the same way as
>>>> with your patches.
>>>> So they did not introduce the bug.
>>>
>>> Mikulas, do you have any idea what could be causing this errors?
>>> Is it that dm-crypt is not properly dealing with async-only HMAC
>>> ciphers?
>>> Async-only encryption ciphers seem to work fine in dm-crypt, since
>>> LUKS with PAES (but no integrity) works fine, and PAES is an
>>> async-onky cipher.
>>> LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine,
>>> even in combination with PAES.
>>
>> Yes, I think that it's a problem with async HMAC. The bug is probably
>> either in dm-crypt or in the crypto library.
>>
>> Do you have some other (non-dm-crypt-related) workload that uses the
>> async authentication, so that we can determine whether the bug is in
>> dm-crypt or crypto?
>
> Well, dm-integrity can use PHMAC and this works (with you patches) as
> confirmed in this mail thread.
> I don't think we have other non-dm-crypt or non-dm-integrity related
> workload.
> We could probably come up with a test program using AF_ALG that uses
> PHMAC.
> @Harald: Do you possibly have such already?
>
I do have. But still it only runs on a s390 platform. And for the qemu
s390
emulation - all the cpacf stuff is not covered. I think the better
approach
is really some kind of a pseudo module which offers some pseudo phmac
for
x64. Let me see how this can be done.
>>
>> Otherwise, would it be possible to give us a virtual machine on the
>> mainframe to debug this issue?
>
> @Harald: What do you think, could this be possible?
Hm - I have my doubts that this is possible.
>
>>
>> Mikulas
>>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-11 15:58 ` Mikulas Patocka
2025-09-12 8:08 ` Ingo Franzki
@ 2025-09-18 15:00 ` Harald Freudenberger
2025-09-19 6:53 ` Ingo Franzki
2025-09-22 19:08 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
1 sibling, 2 replies; 34+ messages in thread
From: Harald Freudenberger @ 2025-09-18 15:00 UTC (permalink / raw)
To: Mikulas Patocka
Cc: Ingo Franzki, Herbert Xu, David S. Miller, Eric Biggers, dengler,
linux-s390, dm-devel, agk, snitzer, Milan Broz
[-- Attachment #1: Type: text/plain, Size: 2159 bytes --]
On 2025-09-11 17:58, Mikulas Patocka wrote:
> On Thu, 11 Sep 2025, Ingo Franzki wrote:
>
>> >> So, it looks like a dm-crypt bug.
>> >>
>> >> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>> >> to verify that the patches do not introduce the bug.
>> >
>> > With your patches reverted the combined mode fails the same way as with your patches.
>> > So they did not introduce the bug.
>>
>> Mikulas, do you have any idea what could be causing this errors?
>> Is it that dm-crypt is not properly dealing with async-only HMAC
>> ciphers?
>> Async-only encryption ciphers seem to work fine in dm-crypt, since
>> LUKS with PAES (but no integrity) works fine, and PAES is an
>> async-onky cipher.
>> LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine,
>> even in combination with PAES.
>
> Yes, I think that it's a problem with async HMAC. The bug is probably
> either in dm-crypt or in the crypto library.
>
> Do you have some other (non-dm-crypt-related) workload that uses the
> async authentication, so that we can determine whether the bug is in
> dm-crypt or crypto?
>
> Otherwise, would it be possible to give us a virtual machine on the
> mainframe to debug this issue?
>
> Mikulas
So here is now an out-of-tree kernel module build which offers a pseudo
phmac-sha256
for testing and debugging purpose. In the end this is just a asynch
(ahash) wrapper
around the hmac-sha256 shash crypto subsystem implementation. It should
compile and
be usable on all platforms (s390, x64, arm, ...).
I ran dm-integrity tests with this and all worked fine. Ingo ran
dm-crypt tests
where he combined aes-cbc encryption with phmac-sha256 integrity and saw
hangs
on cryptsetup open. He also reported that these issues are different to
what he
saw with the 'real' phmac in combination with aes encryption. A short
glimpse gives
me the impression that there is a job blocking the system's workqueue.
However, I
could not find any indication that the pseudo phmac is not working
properly.
For instructions on how to build and use the module see the README in
the tgz archive.
Thanks to all
Harald Freudenberger
[-- Attachment #2: pseudo_phmac.tgz --]
[-- Type: application/gzip, Size: 3902 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-18 15:00 ` Harald Freudenberger
@ 2025-09-19 6:53 ` Ingo Franzki
2025-09-22 19:08 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
1 sibling, 0 replies; 34+ messages in thread
From: Ingo Franzki @ 2025-09-19 6:53 UTC (permalink / raw)
To: Mikulas Patocka
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, agk, snitzer, Milan Broz, freude
On 18.09.2025 17:00, Harald Freudenberger wrote:
> On 2025-09-11 17:58, Mikulas Patocka wrote:
>> On Thu, 11 Sep 2025, Ingo Franzki wrote:
>>
>>> >> So, it looks like a dm-crypt bug.
>>> >>
>>> >> Please, revert my patches and run the same test on a clean 6.17.0-rc5 just
>>> >> to verify that the patches do not introduce the bug.
>>> >
>>> > With your patches reverted the combined mode fails the same way as with your patches.
>>> > So they did not introduce the bug.
>>>
>>> Mikulas, do you have any idea what could be causing this errors?
>>> Is it that dm-crypt is not properly dealing with async-only HMAC ciphers?
>>> Async-only encryption ciphers seem to work fine in dm-crypt, since LUKS with PAES (but no integrity) works fine, and PAES is an async-onky cipher.
>>> LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine, even in combination with PAES.
>>
>> Yes, I think that it's a problem with async HMAC. The bug is probably
>> either in dm-crypt or in the crypto library.
>>
>> Do you have some other (non-dm-crypt-related) workload that uses the
>> async authentication, so that we can determine whether the bug is in
>> dm-crypt or crypto?
>>
>> Otherwise, would it be possible to give us a virtual machine on the
>> mainframe to debug this issue?
>>
>> Mikulas
>
> So here is now an out-of-tree kernel module build which offers a pseudo phmac-sha256
> for testing and debugging purpose. In the end this is just a asynch (ahash) wrapper
> around the hmac-sha256 shash crypto subsystem implementation. It should compile and
> be usable on all platforms (s390, x64, arm, ...).
>
> I ran dm-integrity tests with this and all worked fine. Ingo ran dm-crypt tests
> where he combined aes-cbc encryption with phmac-sha256 integrity and saw hangs
> on cryptsetup open. He also reported that these issues are different to what he
> saw with the 'real' phmac in combination with aes encryption. A short glimpse gives
> me the impression that there is a job blocking the system's workqueue. However, I
> could not find any indication that the pseudo phmac is not working properly.
Here is what I did (after insmod'ing the pseudo phmac cipher).
I did this on a s390x system, but it should behave the same on x86.
# cryptsetup luksFormat --type luks2 --integrity phmac-sha256 --integrity-key-size 256 /dev/loop0
# cryptsetup luksOpen /dev/loop0 int-loop
Note: To use the above cryptsetup commands with phmac you might need the code from this cryptsetup PR, otherwise it won't accept phmac as integrity algorithm: https://gitlab.com/cryptsetup/cryptsetup/-/merge_requests/693
The luksOpen step hangs forever and the following messages are shown in syslog after a while:
Sep 19 02:43:29 fedora systemd-udevd[500]: dm-1: Worker [2720] processing SEQNUM=1272 is taking a long time
Sep 19 02:45:29 fedora systemd-udevd[500]: dm-1: Worker [2720] processing SEQNUM=1272 killed
Still the luksOpen keeps hanging, and a lot of kworkers are hanging around as well:
# ps -ef
...
root 2679 1987 2 02:42 pts/0 00:00:04 cryptsetup luksOpen /dev/loop0 int-loop
root 2712 2 0 02:42 ? 00:00:00 [kworker/R-kdmflush/251:0]
root 2713 2 0 02:42 ? 00:00:00 [kworker/R-dm-integrity-metadata]
root 2714 2 0 02:42 ? 00:00:00 [kworker/R-dm-integrity-wait]
root 2715 2 0 02:42 ? 00:00:00 [kworker/R-dm-integrity-offload]
root 2716 2 0 02:42 ? 00:00:00 [kworker/R-dm-integrity-commit]
root 2717 2 0 02:42 ? 00:00:00 [kworker/R-dm-integrity-writer]
root 2718 500 0 02:42 ? 00:00:00 (udev-worker)
root 2719 500 0 02:42 ? 00:00:00 (udev-worker)
root 2720 500 0 02:42 ? 00:00:00 [(udev-worker)]
root 2726 2 0 02:42 ? 00:00:00 [kworker/R-kdmflush/251:1]
root 2727 2 0 02:42 ? 00:00:00 [kworker/R-kcryptd_io-251:1-1]
root 2728 2 0 02:42 ? 00:00:00 [kworker/R-kcryptd-251:1-1]
root 2729 2 0 02:42 ? 00:00:00 [dmcrypt_write/251:1]
...
# dmsetup table
int-loop: 0 351128 crypt capi:authenc(phmac(sha256),xts(aes))-plain64 :96:logon:cryptsetup:239c87ad-8c23-4cdb-943f-947737e9cf5c-d0 0 251:0 0 2 integrity:32:aead integrity_key_size:32
int-loop_dif: 0 351128 integrity 7:0 32768 32 J 6 interleave_sectors:32768 buffer_sectors:128 journal_sectors:3168 journal_watermark:50 commit_time:10000 fix_padding
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 200M 0 loop
└─int-loop_dif 251:0 0 171.4M 0 crypt
>
> For instructions on how to build and use the module see the README in the tgz archive.
>
> Thanks to all
> Harald Freudenberger
>
>
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Tel: ++49 (0)7031-16-4648
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-18 15:00 ` Harald Freudenberger
2025-09-19 6:53 ` Ingo Franzki
@ 2025-09-22 19:08 ` Mikulas Patocka
2025-09-23 3:47 ` Herbert Xu
1 sibling, 1 reply; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-22 19:08 UTC (permalink / raw)
To: Herbert Xu, David S. Miller, Harald Freudenberger
Cc: Ingo Franzki, linux-crypto, Eric Biggers, dengler, linux-s390,
dm-devel, agk, snitzer, Milan Broz
On Thu, 18 Sep 2025, Harald Freudenberger wrote:
> On 2025-09-11 17:58, Mikulas Patocka wrote:
> > On Thu, 11 Sep 2025, Ingo Franzki wrote:
> >
> > > >> So, it looks like a dm-crypt bug.
> > > >>
> > > >> Please, revert my patches and run the same test on a clean 6.17.0-rc5
> > > just
> > > >> to verify that the patches do not introduce the bug.
> > > >
> > > > With your patches reverted the combined mode fails the same way as with
> > > your patches.
> > > > So they did not introduce the bug.
> > >
> > > Mikulas, do you have any idea what could be causing this errors?
> > > Is it that dm-crypt is not properly dealing with async-only HMAC ciphers?
> > > Async-only encryption ciphers seem to work fine in dm-crypt, since LUKS
> > > with PAES (but no integrity) works fine, and PAES is an async-onky cipher.
> > > LUKS with sync-HMAC ciphers (e.g. clear key HMAC) also works fine, even in
> > > combination with PAES.
> >
> > Yes, I think that it's a problem with async HMAC. The bug is probably
> > either in dm-crypt or in the crypto library.
> >
> > Do you have some other (non-dm-crypt-related) workload that uses the
> > async authentication, so that we can determine whether the bug is in
> > dm-crypt or crypto?
> >
> > Otherwise, would it be possible to give us a virtual machine on the
> > mainframe to debug this issue?
> >
> > Mikulas
>
> So here is now an out-of-tree kernel module build which offers a pseudo
> phmac-sha256
> for testing and debugging purpose. In the end this is just a asynch (ahash)
> wrapper
> around the hmac-sha256 shash crypto subsystem implementation. It should
> compile and
> be usable on all platforms (s390, x64, arm, ...).
>
> I ran dm-integrity tests with this and all worked fine. Ingo ran dm-crypt
> tests
> where he combined aes-cbc encryption with phmac-sha256 integrity and saw hangs
> on cryptsetup open. He also reported that these issues are different to what
> he
> saw with the 'real' phmac in combination with aes encryption. A short glimpse
> gives
> me the impression that there is a job blocking the system's workqueue.
> However, I
> could not find any indication that the pseudo phmac is not working properly.
>
> For instructions on how to build and use the module see the README in the tgz
> archive.
>
> Thanks to all
> Harald Freudenberger
Hi
I analyzed the dm-crypt deadlock - in crypto_authenc_decrypt, there's
err = crypto_ahash_digest(ahreq);
if (err)
return err;
- here we get -EBUSY, that -EBUSY is propagated to dm-crypt. When dm-crypt
gets -EBUSY, it waits in "wait_for_completion(&ctx->restart);" in
crypt_convert.
dm-crypt wakes up when kcryptd_async_done gets -EINPROGRESS, but the
crypto API never calls kcryptd_async_done with -EINPROGRESS, so dm-crypt
deadlocks.
I've made this patch for the bug, it is tested only lightly, please review
it.
Mikulas
From: Mikulas Patocka <mpatocka@redhat.com>
When we return -EBUSY from encryption routines, the caller is supposed to
sleep until it receives -EINPROGRESS in the callback method.
However when using authenc with asynchronous hash, the hash function may
return -EBUSY. In this case, the crypto API never calls the caller with
-EINPROGRESS and it causes deadlock in dm-crypt.
Fix this by turning -EBUSY into -EINPROGRESS.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
---
crypto/authenc.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
Index: linux-2.6/crypto/authenc.c
===================================================================
--- linux-2.6.orig/crypto/authenc.c 2025-09-22 20:32:02.000000000 +0200
+++ linux-2.6/crypto/authenc.c 2025-09-22 20:35:38.000000000 +0200
@@ -146,8 +146,11 @@ static int crypto_authenc_genicv(struct
authenc_geniv_ahash_done, req);
err = crypto_ahash_digest(ahreq);
- if (err)
+ if (err) {
+ if (err == -EBUSY)
+ err = -EINPROGRESS;
return err;
+ }
scatterwalk_map_and_copy(hash, req->dst, req->assoclen + req->cryptlen,
crypto_aead_authsize(authenc), 1);
@@ -270,8 +273,11 @@ static int crypto_authenc_decrypt(struct
authenc_verify_ahash_done, req);
err = crypto_ahash_digest(ahreq);
- if (err)
+ if (err) {
+ if (err == -EBUSY)
+ err = -EINPROGRESS;
return err;
+ }
return crypto_authenc_decrypt_tail(req, aead_request_flags(req));
}
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-22 19:08 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
@ 2025-09-23 3:47 ` Herbert Xu
2025-09-23 11:14 ` Mikulas Patocka
0 siblings, 1 reply; 34+ messages in thread
From: Herbert Xu @ 2025-09-23 3:47 UTC (permalink / raw)
To: Mikulas Patocka
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz
On Mon, Sep 22, 2025 at 09:08:42PM +0200, Mikulas Patocka wrote:
>
> When we return -EBUSY from encryption routines, the caller is supposed to
> sleep until it receives -EINPROGRESS in the callback method.
>
> However when using authenc with asynchronous hash, the hash function may
> return -EBUSY. In this case, the crypto API never calls the caller with
> -EINPROGRESS and it causes deadlock in dm-crypt.
>
> Fix this by turning -EBUSY into -EINPROGRESS.
>
> Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> Cc: stable@vger.kernel.org
>
> ---
> crypto/authenc.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> Index: linux-2.6/crypto/authenc.c
> ===================================================================
> --- linux-2.6.orig/crypto/authenc.c 2025-09-22 20:32:02.000000000 +0200
> +++ linux-2.6/crypto/authenc.c 2025-09-22 20:35:38.000000000 +0200
> @@ -146,8 +146,11 @@ static int crypto_authenc_genicv(struct
> authenc_geniv_ahash_done, req);
>
> err = crypto_ahash_digest(ahreq);
> - if (err)
> + if (err) {
> + if (err == -EBUSY)
> + err = -EINPROGRESS;
> return err;
> + }
If authenc gets EBUSY from the ahash, then the ahash is responsible
for sending an EINPROGRESS notification. I just checked the authenc
code and it does pass the notification back up to the caller (which
is dm-crypt).
So if EINPROGRESS is not being received, then it's a bug in the
ahash layer or the underlying ahash algorithm.
Which phmac implementation was this?
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-23 3:47 ` Herbert Xu
@ 2025-09-23 11:14 ` Mikulas Patocka
2025-09-23 14:36 ` Mikulas Patocka
2025-09-23 15:17 ` Herbert Xu
0 siblings, 2 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-23 11:14 UTC (permalink / raw)
To: Herbert Xu
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz
On Tue, 23 Sep 2025, Herbert Xu wrote:
> If authenc gets EBUSY from the ahash, then the ahash is responsible
> for sending an EINPROGRESS notification. I just checked the authenc
> code and it does pass the notification back up to the caller (which
> is dm-crypt).
>
> So if EINPROGRESS is not being received, then it's a bug in the
> ahash layer or the underlying ahash algorithm.
static void authenc_request_complete(struct aead_request *req, int err)
{
if (err != -EINPROGRESS)
aead_request_complete(req, err);
}
This prevents -EINPROGRESS from reaching dm-crypt. If I remove the
condition "err != -EINPROGRESS", the deadlock goes away. Though, removing
it may break other things - we may send -EINPROGRESS twice, first for the
hash and then for the decryption.
> Which phmac implementation was this?
It was pseudo_phmac out-of-tree module sent by Harald Freudenberger. He
CC'd you, so you should have it as an attachment in your inbox.
The following scripts creates the buggy device mapper device:
#!/bin/sh -ex
sync
modprobe crypto_engine
insmod ~/c/phmac/pseudo_phmac/phmac.ko
modprobe brd rd_size=1048576
dmsetup create cr_dif --table '0 2031880 integrity 1:0 32768 32 J 7 block_size:4096 interleave_sectors:32768 buffer_sectors:128 journal_sectors:16368 journal_watermark:50 commit_time:10000 fix_padding'
dmsetup create cr --table '0 2031880 crypt capi:authenc(phmac(sha256),xts(aes))-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 252:0 0 2 integrity:32:aead sector_size:4096'
dd if=/dev/zero of=/dev/mapper/cr bs=1M oflag=direct status=progress
> Cheers,
Mikulas
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-23 11:14 ` Mikulas Patocka
@ 2025-09-23 14:36 ` Mikulas Patocka
2025-09-23 15:17 ` Herbert Xu
1 sibling, 0 replies; 34+ messages in thread
From: Mikulas Patocka @ 2025-09-23 14:36 UTC (permalink / raw)
To: Herbert Xu
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz
On Tue, 23 Sep 2025, Mikulas Patocka wrote:
>
>
> On Tue, 23 Sep 2025, Herbert Xu wrote:
>
> > If authenc gets EBUSY from the ahash, then the ahash is responsible
> > for sending an EINPROGRESS notification. I just checked the authenc
> > code and it does pass the notification back up to the caller (which
> > is dm-crypt).
> >
> > So if EINPROGRESS is not being received, then it's a bug in the
> > ahash layer or the underlying ahash algorithm.
>
> static void authenc_request_complete(struct aead_request *req, int err)
> {
> if (err != -EINPROGRESS)
> aead_request_complete(req, err);
> }
>
> This prevents -EINPROGRESS from reaching dm-crypt. If I remove the
> condition "err != -EINPROGRESS", the deadlock goes away. Though, removing
> it may break other things - we may send -EINPROGRESS twice, first for the
> hash and then for the decryption.
>
> > Which phmac implementation was this?
>
> It was pseudo_phmac out-of-tree module sent by Harald Freudenberger. He
> CC'd you, so you should have it as an attachment in your inbox.
>
> The following scripts creates the buggy device mapper device:
>
> #!/bin/sh -ex
> sync
> modprobe crypto_engine
> insmod ~/c/phmac/pseudo_phmac/phmac.ko
> modprobe brd rd_size=1048576
> dmsetup create cr_dif --table '0 2031880 integrity 1:0 32768 32 J 7 block_size:4096 interleave_sectors:32768 buffer_sectors:128 journal_sectors:16368 journal_watermark:50 commit_time:10000 fix_padding'
> dmsetup create cr --table '0 2031880 crypt capi:authenc(phmac(sha256),xts(aes))-plain64 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0 252:0 0 2 integrity:32:aead sector_size:4096'
> dd if=/dev/zero of=/dev/mapper/cr bs=1M oflag=direct status=progress
>
> > Cheers,
>
> Mikulas
What do you think about this patch? Do you think that it is the right
direction to fix it?
Mikulas
From: Mikulas Patocka <mpatocka@redhat.com>
The function authenc_request_complete ignores -EINPROGRESS. This causes
deadlock in dm-crypt when using it with authenticated encryption with an
asynchronous hash implementation.
This patch makes it pass -EINPROGRESS to the caller. Note that we don't
want to report -EINPROGRESS twice (one for the hash and the second one
for the cipher), so we set a flag and report -EINPROGRESS just once.
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
---
crypto/authenc.c | 11 +++++++++--
include/linux/crypto.h | 1 +
2 files changed, 10 insertions(+), 2 deletions(-)
Index: linux-2.6/crypto/authenc.c
===================================================================
--- linux-2.6.orig/crypto/authenc.c 2025-09-23 16:15:42.000000000 +0200
+++ linux-2.6/crypto/authenc.c 2025-09-23 16:32:57.000000000 +0200
@@ -37,8 +37,15 @@ struct authenc_request_ctx {
static void authenc_request_complete(struct aead_request *req, int err)
{
- if (err != -EINPROGRESS)
- aead_request_complete(req, err);
+ if (unlikely(err == -EINPROGRESS)) {
+ req->base.flags |= CRYPTO_TFM_REQ_REPORT_EINPROGRESS;
+ return;
+ }
+ if (unlikely(req->base.flags & CRYPTO_TFM_REQ_REPORT_EINPROGRESS)) {
+ aead_request_complete(req, -EINPROGRESS);
+ req->base.flags &=~ CRYPTO_TFM_REQ_REPORT_EINPROGRESS;
+ }
+ aead_request_complete(req, err);
}
int crypto_authenc_extractkeys(struct crypto_authenc_keys *keys, const u8 *key,
Index: linux-2.6/include/linux/crypto.h
===================================================================
--- linux-2.6.orig/include/linux/crypto.h 2025-08-15 17:28:24.000000000 +0200
+++ linux-2.6/include/linux/crypto.h 2025-09-23 16:17:05.000000000 +0200
@@ -151,6 +151,7 @@
#define CRYPTO_TFM_REQ_MAY_SLEEP 0x00000200
#define CRYPTO_TFM_REQ_MAY_BACKLOG 0x00000400
#define CRYPTO_TFM_REQ_ON_STACK 0x00000800
+#define CRYPTO_TFM_REQ_REPORT_EINPROGRESS 0x00100000
/*
* Miscellaneous stuff.
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-23 11:14 ` Mikulas Patocka
2025-09-23 14:36 ` Mikulas Patocka
@ 2025-09-23 15:17 ` Herbert Xu
2025-09-24 10:20 ` [PATCH] crypto: authenc - Correctly pass EINPROGRESS back up to the caller Herbert Xu
2025-11-25 14:02 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
1 sibling, 2 replies; 34+ messages in thread
From: Herbert Xu @ 2025-09-23 15:17 UTC (permalink / raw)
To: Mikulas Patocka
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz
On Tue, Sep 23, 2025 at 01:14:10PM +0200, Mikulas Patocka wrote:
>
> static void authenc_request_complete(struct aead_request *req, int err)
> {
> if (err != -EINPROGRESS)
> aead_request_complete(req, err);
> }
Oh OK. That was kind of a hack which worked because authenc was
used by IPsec only, so it didn't expect to be called with MAY_BACKLOG.
Now that you're calling it with MAY_BACKLOG, we need to fix it to
distinguish between an EINPROGRESS notification for EBUSY and one
that's returned directly by an async function.
Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 34+ messages in thread* [PATCH] crypto: authenc - Correctly pass EINPROGRESS back up to the caller
2025-09-23 15:17 ` Herbert Xu
@ 2025-09-24 10:20 ` Herbert Xu
2025-09-24 13:17 ` Ingo Franzki
2025-11-25 14:02 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
1 sibling, 1 reply; 34+ messages in thread
From: Herbert Xu @ 2025-09-24 10:20 UTC (permalink / raw)
To: Mikulas Patocka
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz
When authenc is invoked with MAY_BACKLOG, it needs to pass EINPROGRESS
notifications back up to the caller when the underlying algorithm
returns EBUSY synchronously.
However, if the EBUSY comes from the second part of an authenc call,
i.e., it is asynchronous, both the EBUSY and the subsequent EINPROGRESS
notification must not be passed to the caller.
Implement this by passing a mask to the function that starts the
second half of authenc and using it to determine whether EBUSY
and EINPROGRESS should be passed to the caller.
This was a deficiency in the original implementation of authenc
because it was not expected to be used with MAY_BACKLOG.
Reported-by: Ingo Franzki <ifranzki@linux.ibm.com>
Reported-by: Mikulas Patocka <mpatocka@redhat.com>
Fixes: 180ce7e81030 ("crypto: authenc - Add EINPROGRESS check")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
diff --git a/crypto/authenc.c b/crypto/authenc.c
index a723769c8777..ac679ce2cb95 100644
--- a/crypto/authenc.c
+++ b/crypto/authenc.c
@@ -37,7 +37,7 @@ struct authenc_request_ctx {
static void authenc_request_complete(struct aead_request *req, int err)
{
- if (err != -EINPROGRESS)
+ if (err != -EINPROGRESS && err != -EBUSY)
aead_request_complete(req, err);
}
@@ -107,27 +107,42 @@ static int crypto_authenc_setkey(struct crypto_aead *authenc, const u8 *key,
return err;
}
-static void authenc_geniv_ahash_done(void *data, int err)
+static void authenc_geniv_ahash_finish(struct aead_request *req)
{
- struct aead_request *req = data;
struct crypto_aead *authenc = crypto_aead_reqtfm(req);
struct aead_instance *inst = aead_alg_instance(authenc);
struct authenc_instance_ctx *ictx = aead_instance_ctx(inst);
struct authenc_request_ctx *areq_ctx = aead_request_ctx(req);
struct ahash_request *ahreq = (void *)(areq_ctx->tail + ictx->reqoff);
- if (err)
- goto out;
-
scatterwalk_map_and_copy(ahreq->result, req->dst,
req->assoclen + req->cryptlen,
crypto_aead_authsize(authenc), 1);
+}
-out:
+static void authenc_geniv_ahash_done(void *data, int err)
+{
+ struct aead_request *req = data;
+
+ if (!err)
+ authenc_geniv_ahash_finish(req);
aead_request_complete(req, err);
}
-static int crypto_authenc_genicv(struct aead_request *req, unsigned int flags)
+/*
+ * Used when the ahash request was invoked in the async callback context
+ * of the previous skcipher request. Eat any EINPROGRESS notifications.
+ */
+static void authenc_geniv_ahash_done2(void *data, int err)
+{
+ struct aead_request *req = data;
+
+ if (!err)
+ authenc_geniv_ahash_finish(req);
+ authenc_request_complete(req, err);
+}
+
+static int crypto_authenc_genicv(struct aead_request *req, unsigned int mask)
{
struct crypto_aead *authenc = crypto_aead_reqtfm(req);
struct aead_instance *inst = aead_alg_instance(authenc);
@@ -136,6 +151,7 @@ static int crypto_authenc_genicv(struct aead_request *req, unsigned int flags)
struct crypto_ahash *auth = ctx->auth;
struct authenc_request_ctx *areq_ctx = aead_request_ctx(req);
struct ahash_request *ahreq = (void *)(areq_ctx->tail + ictx->reqoff);
+ unsigned int flags = aead_request_flags(req) & ~mask;
u8 *hash = areq_ctx->tail;
int err;
@@ -143,7 +159,8 @@ static int crypto_authenc_genicv(struct aead_request *req, unsigned int flags)
ahash_request_set_crypt(ahreq, req->dst, hash,
req->assoclen + req->cryptlen);
ahash_request_set_callback(ahreq, flags,
- authenc_geniv_ahash_done, req);
+ mask ? authenc_geniv_ahash_done2 :
+ authenc_geniv_ahash_done, req);
err = crypto_ahash_digest(ahreq);
if (err)
@@ -159,12 +176,11 @@ static void crypto_authenc_encrypt_done(void *data, int err)
{
struct aead_request *areq = data;
- if (err)
- goto out;
-
- err = crypto_authenc_genicv(areq, 0);
-
-out:
+ if (err) {
+ aead_request_complete(areq, err);
+ return;
+ }
+ err = crypto_authenc_genicv(areq, CRYPTO_TFM_REQ_MAY_SLEEP);
authenc_request_complete(areq, err);
}
@@ -199,11 +215,18 @@ static int crypto_authenc_encrypt(struct aead_request *req)
if (err)
return err;
- return crypto_authenc_genicv(req, aead_request_flags(req));
+ return crypto_authenc_genicv(req, 0);
+}
+
+static void authenc_decrypt_tail_done(void *data, int err)
+{
+ struct aead_request *req = data;
+
+ authenc_request_complete(req, err);
}
static int crypto_authenc_decrypt_tail(struct aead_request *req,
- unsigned int flags)
+ unsigned int mask)
{
struct crypto_aead *authenc = crypto_aead_reqtfm(req);
struct aead_instance *inst = aead_alg_instance(authenc);
@@ -214,6 +237,7 @@ static int crypto_authenc_decrypt_tail(struct aead_request *req,
struct skcipher_request *skreq = (void *)(areq_ctx->tail +
ictx->reqoff);
unsigned int authsize = crypto_aead_authsize(authenc);
+ unsigned int flags = aead_request_flags(req) & ~mask;
u8 *ihash = ahreq->result + authsize;
struct scatterlist *src, *dst;
@@ -230,7 +254,9 @@ static int crypto_authenc_decrypt_tail(struct aead_request *req,
skcipher_request_set_tfm(skreq, ctx->enc);
skcipher_request_set_callback(skreq, flags,
- req->base.complete, req->base.data);
+ mask ? authenc_decrypt_tail_done :
+ req->base.complete,
+ mask ? req : req->base.data);
skcipher_request_set_crypt(skreq, src, dst,
req->cryptlen - authsize, req->iv);
@@ -241,12 +267,11 @@ static void authenc_verify_ahash_done(void *data, int err)
{
struct aead_request *req = data;
- if (err)
- goto out;
-
- err = crypto_authenc_decrypt_tail(req, 0);
-
-out:
+ if (err) {
+ aead_request_complete(req, err);
+ return;
+ }
+ err = crypto_authenc_decrypt_tail(req, CRYPTO_TFM_REQ_MAY_SLEEP);
authenc_request_complete(req, err);
}
@@ -273,7 +298,7 @@ static int crypto_authenc_decrypt(struct aead_request *req)
if (err)
return err;
- return crypto_authenc_decrypt_tail(req, aead_request_flags(req));
+ return crypto_authenc_decrypt_tail(req, 0);
}
static int crypto_authenc_init_tfm(struct crypto_aead *tfm)
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply related [flat|nested] 34+ messages in thread* Re: [PATCH] crypto: authenc - Correctly pass EINPROGRESS back up to the caller
2025-09-24 10:20 ` [PATCH] crypto: authenc - Correctly pass EINPROGRESS back up to the caller Herbert Xu
@ 2025-09-24 13:17 ` Ingo Franzki
0 siblings, 0 replies; 34+ messages in thread
From: Ingo Franzki @ 2025-09-24 13:17 UTC (permalink / raw)
To: Herbert Xu, Mikulas Patocka, Harald Freudenberger
Cc: David S. Miller, linux-crypto, Eric Biggers, dengler, linux-s390,
dm-devel, agk, snitzer, Milan Broz
On 24.09.2025 12:20, Herbert Xu wrote:
> When authenc is invoked with MAY_BACKLOG, it needs to pass EINPROGRESS
> notifications back up to the caller when the underlying algorithm
> returns EBUSY synchronously.
>
> However, if the EBUSY comes from the second part of an authenc call,
> i.e., it is asynchronous, both the EBUSY and the subsequent EINPROGRESS
> notification must not be passed to the caller.
>
> Implement this by passing a mask to the function that starts the
> second half of authenc and using it to determine whether EBUSY
> and EINPROGRESS should be passed to the caller.
>
> This was a deficiency in the original implementation of authenc
> because it was not expected to be used with MAY_BACKLOG.
>
> Reported-by: Ingo Franzki <ifranzki@linux.ibm.com>
> Reported-by: Mikulas Patocka <mpatocka@redhat.com>
> Fixes: 180ce7e81030 ("crypto: authenc - Add EINPROGRESS check")
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
>
> diff --git a/crypto/authenc.c b/crypto/authenc.c
> index a723769c8777..ac679ce2cb95 100644
> --- a/crypto/authenc.c
> +++ b/crypto/authenc.c
[ snip ]
I applied this patch and tested with the pseudo phmac again.
Now combined encryption and integrity works fine with pseudo phmac!
However, when testing with the original phmac_s390 module instead of the pseudo phmac, I still see the same errors as I saw with phmac_s390 before.
So looks like this patch did indeed fix an error with async handling, but it isn't the error that happens with phmac_s390.
The pseudo phmac is kind of the worst case: Every request except init (i.e. update, final, finup, digest) is always truely async.
The real phmac_s390 also is an async cipher, but as far as I can tell, in our test environment at max the first request after setkey is really async, while any subsequent request just go synchronous. In real world there is a possibility that even subsequent requests go async again, whenever the HW key gets invalid (e.g. due to a live guest relocation), however this does not happen in my test environment.
As far as I can see from the 'dyndbg=+pf' enabled for phmac_s390 all calls actually go synchronous in my tests.
Still there are integrity errors. They seem to come right after 'phmac_digest: phmac_s390: rc=0', i.e. a digest call which returned synchrously.
See messages below.
Smells like dm-crypt and/or authenc seems to handle sync HMAC calls wrongly?
Side note: When using plain dm-integrity with phmac_s390 I do see the same sequence of calls, also returnding synchrously, but no errors.
luksOpen:
Sep 24 09:03:51 fedora kernel: convert_key: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_convert_key: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_setkey: phmac_s390: rc=0
Sep 24 09:03:51 fedora 55-scsi-sg3_id.rules[1363]: WARNING: SCSI device dm-1 has no device ID, consider changing .SCSI_ID_SERIAL_SRC in 00-scsi-sg3_config.rules
Sep 24 09:03:51 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 24 09:03:51 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:03:51 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 24 09:03:51 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
mkfs:
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 350976
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 43872, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: trusted_key: device-mapper: crypt: dm-0: INTEGRITY AEAD ERROR, sector 0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: Buffer I/O error on dev dm-1, logical block 0, async page read
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_init: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_update: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_kmac_final: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_finup: phmac_s390: rc=0
Sep 24 09:06:36 fedora kernel: phmac_digest: phmac_s390: rc=0
--
Ingo Franzki
eMail: ifranzki@linux.ibm.com
Linux on IBM Z Development, Schoenaicher Str. 220, 71032 Boeblingen, Germany
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Wolfgang Wendt
Geschäftsführung: David Faller
Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, HRB 243294
IBM DATA Privacy Statement: https://www.ibm.com/privacy/us/en/
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-09-23 15:17 ` Herbert Xu
2025-09-24 10:20 ` [PATCH] crypto: authenc - Correctly pass EINPROGRESS back up to the caller Herbert Xu
@ 2025-11-25 14:02 ` Mikulas Patocka
2025-11-26 5:16 ` Herbert Xu
1 sibling, 1 reply; 34+ messages in thread
From: Mikulas Patocka @ 2025-11-25 14:02 UTC (permalink / raw)
To: Herbert Xu
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz, guazhang
On Tue, 23 Sep 2025, Herbert Xu wrote:
> On Tue, Sep 23, 2025 at 01:14:10PM +0200, Mikulas Patocka wrote:
> >
> > static void authenc_request_complete(struct aead_request *req, int err)
> > {
> > if (err != -EINPROGRESS)
> > aead_request_complete(req, err);
> > }
>
> Oh OK. That was kind of a hack which worked because authenc was
> used by IPsec only, so it didn't expect to be called with MAY_BACKLOG.
>
> Now that you're calling it with MAY_BACKLOG, we need to fix it to
> distinguish between an EINPROGRESS notification for EBUSY and one
> that's returned directly by an async function.
>
> Thanks,
> --
> Email: Herbert Xu <herbert@gondor.apana.org.au>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Hi Herbert
What's the status of this bugfix? I searched the git history, but didn't
find it.
We have hit another deadlock in dm-crypt when using the "tegra-se" driver
(the driver returned -EBUSY, but didn't call the completion routine with
-EINPROGRESS), and I suspect that it may be this problem again.
Mikulas
^ permalink raw reply [flat|nested] 34+ messages in thread* Re: [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request
2025-11-25 14:02 ` [PATCH] crypto/authenc: don't return -EBUSY when enqueuing the hash request Mikulas Patocka
@ 2025-11-26 5:16 ` Herbert Xu
0 siblings, 0 replies; 34+ messages in thread
From: Herbert Xu @ 2025-11-26 5:16 UTC (permalink / raw)
To: Mikulas Patocka
Cc: David S. Miller, Harald Freudenberger, Ingo Franzki, linux-crypto,
Eric Biggers, dengler, linux-s390, dm-devel, agk, snitzer,
Milan Broz, guazhang
On Tue, Nov 25, 2025 at 03:02:06PM +0100, Mikulas Patocka wrote:
>
> What's the status of this bugfix? I searched the git history, but didn't
> find it.
It's in cryptodev:
commit 96feb73def02d175850daa0e7c2c90c876681b5c
Author: Herbert Xu <herbert@gondor.apana.org.au>
Date: Wed Sep 24 18:20:17 2025 +0800
crypto: authenc - Correctly pass EINPROGRESS back up to the caller
Cheers,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v2 0/7] dm-integrity: asynchronous hash support
2025-09-08 13:16 [PATCH v2 0/7] dm-integrity: asynchronous hash support Mikulas Patocka
` (7 preceding siblings ...)
2025-09-09 9:04 ` [PATCH v2 0/7] dm-integrity: asynchronous hash support Ingo Franzki
@ 2025-09-09 13:36 ` Harald Freudenberger
8 siblings, 0 replies; 34+ messages in thread
From: Harald Freudenberger @ 2025-09-09 13:36 UTC (permalink / raw)
To: Mikulas Patocka
Cc: Herbert Xu, David S. Miller, Eric Biggers, dengler, linux-s390,
dm-devel, ifranzki, agk, snitzer, gmazyland
On 2025-09-08 15:16, Mikulas Patocka wrote:
> Hi
>
> These patches add asynchronous hash support to dm-integrity.
>
> Harald, please test them, I will commit them if they work for you.
>
> Mikulas
Back from vacation ...
Applied your patches to the latest 6.17-rc5. Git complains about an
whitespace issue on patch #7 but other that that applied without issue.
Kernel build and execution of my simple tests show no failures and all
works fine with an phmac-sha256 and phmac-sha512.
A modified version of the cryptsetup testcase
tests/integrity-compat-test
(where I added the phmac) ran without failures:
Integrity mode tests:
[INTEGRITY:blake2s-256:32:512][FORMAT][N/A]
...
[INTEGRITY:hmac(sha256):32:4096][KEYFILE:4096][FORMAT][ACTIVATE][CHECKSUM
OK][REMOVE][OK]
[INTEGRITY:phmac(sha256):32:4096][KEYFILE:80][FORMAT][ACTIVATE][CHECKSUM
OK][REMOVE][OK]
Error detection tests:
[INTEGRITY:J:crc32c:4:512][FORMAT][ACTIVATE][WRITE DATA][CORRUPT
DATA:315392][DETECT ERROR][REMOVE][OK]
...
[INTEGRITY:J:hmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:270336][DETECT ERROR][REMOVE][OK]
[INTEGRITY:J:phmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:270336][DETECT ERROR][REMOVE][OK]
Integrity mode tests (inline tags):
[INTEGRITY:crc32c:4:4096][FORMAT][ACTIVATE][CHECKSUM OK][REMOVE][OK]
...
[INTEGRITY:hmac(sha256):32:4096][KEYFILE:4096][FORMAT][ACTIVATE][CHECKSUM
OK][REMOVE][OK]
[INTEGRITY:phmac(sha256):32:4096][KEYFILE:80][FORMAT][ACTIVATE][CHECKSUM
OK][REMOVE][OK]
Error detection tests (inline tags):
...
[INTEGRITY:J:hmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:4096][DETECT ERROR][REMOVE][OK]
[INTEGRITY:J:phmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:4096][DETECT ERROR][REMOVE][OK]
Journal parameters tests:
...
Journal encryption tests:
...
Mode tests:
[MODE TESTS:crc32c:4:512][JOURNALED WRITES][DIRECT WRITES][RECOVERY
MODE][OK]
...
[MODE TESTS:hmac-sha256:32:4096][JOURNALED WRITES][DIRECT
WRITES][RECOVERY MODE][OK]
[MODE TESTS:phmac-sha256:32:4096][JOURNALED WRITES][DIRECT
WRITES][RECOVERY MODE][OK]
Recalculate tags in-kernel:[CHECKSUM OK][OK][CHECKSUM OK][RESET OK]
Recalculate tags in-kernel (inline tags):[CHECKSUM OK][OK][CHECKSUM
OK][RESET OK]
Separate metadata device:[CHECKSUM OK][OK]
Bitmap mode parameters:[OK]
Bitmap error detection tests:
[INTEGRITY:B:crc32c:4:512][FORMAT][ACTIVATE][WRITE DATA][CORRUPT
DATA:315392][DETECT ERROR][REMOVE][OK]
...
[INTEGRITY:B:hmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:270336][DETECT ERROR][REMOVE][OK]
[INTEGRITY:B:phmac-sha256:32:4096][FORMAT][ACTIVATE][KEYED HASH][WRITE
DATA][CORRUPT DATA:270336][DETECT ERROR][REMOVE][OK]
Big device:[OK]
Deferred removal of device:[OK]
Fixed HMAC and legacy flags:[OK]
[INTEGRITY BASIC RESIZE NOKEY][FORMAT][ACTIVATE][SHRINK][OK]
...
Early check for active name:[OK]
Thanks for this work :-)
^ permalink raw reply [flat|nested] 34+ messages in thread