Merge branch 'android12-5.4' into 'android12-5.4-lts'

Sync up with android12-5.4 for the following commits:

73e6d86c30ee ANDROID: ABI: update symbols to unisoc whitelist for the nineteen time
2ffb0acdabc5 UPSTREAM: usb: max-3421: Prevent corruption of freed memory
23c18f1ad0fc FROMLIST: dm-verity: skip verity_handle_error on I/O errors
091c7c49aa71 ANDROID: distribute Module.symvers instead of vmlinux.symvers

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: If060a0e72ae16aa24a6ef6e9bee46ccd76d38e5f
diff --git a/android/abi_gki_aarch64_unisoc b/android/abi_gki_aarch64_unisoc
index 5e1affc..eebfa77 100644
--- a/android/abi_gki_aarch64_unisoc
+++ b/android/abi_gki_aarch64_unisoc
@@ -94,6 +94,7 @@
   compat_alloc_user_space
   complete
   complete_all
+  complete_and_exit
   config_ep_by_speed
   config_group_init_type_name
   contig_page_data
@@ -1072,6 +1073,7 @@
   generic_write_end
   __getblk_gfp
   ilookup
+  in6_dev_finish_destroy
   inc_nlink
   in_group_p
   __insert_inode_hash
@@ -1279,6 +1281,9 @@
   usb_ep_disable
   usb_speed_string
 
+# required by nu1619_wireless_charger.ko
+  regmap_bulk_read
+
 # required by pcie-sprd.ko
   device_get_next_child_node
   devm_gpiod_get_index
@@ -1479,6 +1484,7 @@
   devm_iio_channel_get
   gpiod_get_value_cansleep
   iio_read_channel_processed
+  rtc_read_time
   power_supply_find_ocv2cap_table
   power_supply_ocv2cap_simple
   power_supply_put_battery_info
diff --git a/build.config.aarch64 b/build.config.aarch64
index 7aa66af..d015286 100644
--- a/build.config.aarch64
+++ b/build.config.aarch64
@@ -15,7 +15,7 @@
 arch/arm64/boot/Image
 vmlinux
 System.map
-vmlinux.symvers
+Module.symvers
 modules.builtin
 modules.builtin.modinfo
 "
diff --git a/build.config.x86_64 b/build.config.x86_64
index ae4d41a..2e9474c 100644
--- a/build.config.x86_64
+++ b/build.config.x86_64
@@ -14,7 +14,7 @@
 arch/x86/boot/bzImage
 vmlinux
 System.map
-vmlinux.symvers
+Module.symvers
 modules.builtin
 modules.builtin.modinfo
 "
diff --git a/drivers/md/dm-verity-target.c b/drivers/md/dm-verity-target.c
index 711f101..08047cc 100644
--- a/drivers/md/dm-verity-target.c
+++ b/drivers/md/dm-verity-target.c
@@ -471,6 +471,7 @@ static int verity_verify_io(struct dm_verity_io *io)
 	struct bvec_iter start;
 	unsigned b;
 	struct crypto_wait wait;
+	struct bio *bio = dm_bio_from_per_bio_data(io, v->ti->per_io_data_size);
 
 	for (b = 0; b < io->n_blocks; b++) {
 		int r;
@@ -525,9 +526,17 @@ static int verity_verify_io(struct dm_verity_io *io)
 		else if (verity_fec_decode(v, io, DM_VERITY_BLOCK_TYPE_DATA,
 					   cur_block, NULL, &start) == 0)
 			continue;
-		else if (verity_handle_err(v, DM_VERITY_BLOCK_TYPE_DATA,
+		else {
+			if (bio->bi_status) {
+				/*
+				 * Error correction failed; Just return error
+				 */
+				return -EIO;
+			}
+			if (verity_handle_err(v, DM_VERITY_BLOCK_TYPE_DATA,
 					   cur_block))
-			return -EIO;
+				return -EIO;
+		}
 	}
 
 	return 0;