@@ -1838,11 +1838,11 @@ static void integrity_metadata(struct work_struct *w)
18381838 char * mem , * checksums_ptr ;
18391839
18401840again :
1841- mem = bvec_kmap_local ( & bv_copy );
1841+ mem = kmap_local_page ( bv_copy . bv_page );
18421842 pos = 0 ;
18431843 checksums_ptr = checksums ;
18441844 do {
1845- integrity_sector_checksum (ic , sector , mem + pos , checksums_ptr );
1845+ integrity_sector_checksum (ic , sector , mem + bv_copy . bv_offset + pos , checksums_ptr );
18461846 checksums_ptr += ic -> tag_size ;
18471847 sectors_to_process -= ic -> sectors_per_block ;
18481848 pos += ic -> sectors_per_block << SECTOR_SHIFT ;
@@ -2506,10 +2506,10 @@ static int dm_integrity_map_inline(struct dm_integrity_io *dio, bool from_map)
25062506 unsigned pos = 0 ;
25072507 while (dio -> bio_details .bi_iter .bi_size ) {
25082508 struct bio_vec bv = bio_iter_iovec (bio , dio -> bio_details .bi_iter );
2509- const char * mem = bvec_kmap_local ( & bv );
2509+ const char * mem = kmap_local_page ( bv . bv_page );
25102510 if (ic -> tag_size < ic -> tuple_size )
25112511 memset (dio -> integrity_payload + pos + ic -> tag_size , 0 , ic -> tuple_size - ic -> tuple_size );
2512- integrity_sector_checksum (ic , dio -> bio_details .bi_iter .bi_sector , mem , dio -> integrity_payload + pos );
2512+ integrity_sector_checksum (ic , dio -> bio_details .bi_iter .bi_sector , mem + bv . bv_offset , dio -> integrity_payload + pos );
25132513 kunmap_local (mem );
25142514 pos += ic -> tuple_size ;
25152515 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_target *ti, struct bio *bio, blk_status
26262626 while (dio -> bio_details .bi_iter .bi_size ) {
26272627 char digest [HASH_MAX_DIGESTSIZE ];
26282628 struct bio_vec bv = bio_iter_iovec (bio , dio -> bio_details .bi_iter );
2629- char * mem = bvec_kmap_local (& bv );
2630- //memset(mem, 0xff, ic->sectors_per_block << SECTOR_SHIFT);
2631- integrity_sector_checksum (ic , dio -> bio_details .bi_iter .bi_sector , mem , digest );
2629+ char * mem = kmap_local_page (bv .bv_page );
2630+ integrity_sector_checksum (ic , dio -> bio_details .bi_iter .bi_sector , mem + bv .bv_offset , digest );
26322631 if (unlikely (crypto_memneq (digest , dio -> integrity_payload + pos ,
26332632 min (ic -> internal_hash_digestsize , ic -> tag_size )))) {
26342633 kunmap_local (mem );
0 commit comments