From: Greg Kroah-Hartman Date: Thu, 21 Mar 2019 08:19:00 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v3.18.137~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bb610d92d67956b42dd5532ace124cc8579ca9fa;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: dm-fix-to_sector-for-32bit.patch dm-integrity-limit-the-rate-of-error-messages.patch --- diff --git a/queue-4.14/dm-fix-to_sector-for-32bit.patch b/queue-4.14/dm-fix-to_sector-for-32bit.patch new file mode 100644 index 00000000000..ce73604c15b --- /dev/null +++ b/queue-4.14/dm-fix-to_sector-for-32bit.patch @@ -0,0 +1,43 @@ +From 0bdb50c531f7377a9da80d3ce2d61f389c84cb30 Mon Sep 17 00:00:00 2001 +From: NeilBrown +Date: Sun, 6 Jan 2019 21:06:25 +1100 +Subject: dm: fix to_sector() for 32bit +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: NeilBrown + +commit 0bdb50c531f7377a9da80d3ce2d61f389c84cb30 upstream. + +A dm-raid array with devices larger than 4GB won't assemble on +a 32 bit host since _check_data_dev_sectors() was added in 4.16. +This is because to_sector() treats its argument as an "unsigned long" +which is 32bits (4GB) on a 32bit host. Using "unsigned long long" +is more correct. + +Kernels as early as 4.2 can have other problems due to to_sector() +being used on the size of a device. + +Fixes: 0cf4503174c1 ("dm raid: add support for the MD RAID0 personality") +cc: stable@vger.kernel.org (v4.2+) +Reported-and-tested-by: Guillaume Perréal +Signed-off-by: NeilBrown +Signed-off-by: Mike Snitzer +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/device-mapper.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/include/linux/device-mapper.h ++++ b/include/linux/device-mapper.h +@@ -630,7 +630,7 @@ do { \ + */ + #define dm_target_offset(ti, sector) ((sector) - (ti)->begin) + +-static inline sector_t to_sector(unsigned long n) ++static inline sector_t to_sector(unsigned long long n) + { + return (n >> SECTOR_SHIFT); + } diff --git a/queue-4.14/dm-integrity-limit-the-rate-of-error-messages.patch b/queue-4.14/dm-integrity-limit-the-rate-of-error-messages.patch new file mode 100644 index 00000000000..94158fe3357 --- /dev/null +++ b/queue-4.14/dm-integrity-limit-the-rate-of-error-messages.patch @@ -0,0 +1,51 @@ +From 225557446856448039a9e495da37b72c20071ef2 Mon Sep 17 00:00:00 2001 +From: Mikulas Patocka +Date: Wed, 6 Mar 2019 08:29:34 -0500 +Subject: dm integrity: limit the rate of error messages + +From: Mikulas Patocka + +commit 225557446856448039a9e495da37b72c20071ef2 upstream. + +When using dm-integrity underneath md-raid, some tests with raid +auto-correction trigger large amounts of integrity failures - and all +these failures print an error message. These messages can bring the +system to a halt if the system is using serial console. + +Fix this by limiting the rate of error messages - it improves the speed +of raid recovery and avoids the hang. + +Fixes: 7eada909bfd7a ("dm: add integrity target") +Cc: stable@vger.kernel.org # v4.12+ +Signed-off-by: Mikulas Patocka +Signed-off-by: Mike Snitzer +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-integrity.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/md/dm-integrity.c ++++ b/drivers/md/dm-integrity.c +@@ -1276,8 +1276,8 @@ again: + checksums_ptr - checksums, !dio->write ? TAG_CMP : TAG_WRITE); + if (unlikely(r)) { + if (r > 0) { +- DMERR("Checksum failed at sector 0x%llx", +- (unsigned long long)(sector - ((r + ic->tag_size - 1) / ic->tag_size))); ++ DMERR_LIMIT("Checksum failed at sector 0x%llx", ++ (unsigned long long)(sector - ((r + ic->tag_size - 1) / ic->tag_size))); + r = -EILSEQ; + atomic64_inc(&ic->number_of_mismatches); + } +@@ -1469,8 +1469,8 @@ retry_kmap: + + integrity_sector_checksum(ic, logical_sector, mem + bv.bv_offset, checksums_onstack); + if (unlikely(memcmp(checksums_onstack, journal_entry_tag(ic, je), ic->tag_size))) { +- DMERR("Checksum failed when reading from journal, at sector 0x%llx", +- (unsigned long long)logical_sector); ++ DMERR_LIMIT("Checksum failed when reading from journal, at sector 0x%llx", ++ (unsigned long long)logical_sector); + } + } + #endif diff --git a/queue-4.14/series b/queue-4.14/series index a0eff0a81eb..2ccf597739d 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -148,3 +148,5 @@ arm-s3c24xx-fix-boolean-expressions-in-osiris_dvs_notify.patch arm64-fix-hcr.tge-status-for-nmi-contexts.patch arm64-debug-ensure-debug-handlers-check-triggering-exception-level.patch arm64-kvm-fix-architecturally-invalid-reset-value-for-fpexc32_el2.patch +dm-fix-to_sector-for-32bit.patch +dm-integrity-limit-the-rate-of-error-messages.patch