From a8d33d24ce3bdf4dc8b1ce8c99fe1a60a4ad01e6 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 1 Apr 2018 11:49:41 +0200 Subject: [PATCH] 3.18-stable patches added patches: partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch --- ...unable-to-mount-ufs-44bsd-partitions.patch | 39 +++++++++++++++++++ queue-3.18/series | 1 + 2 files changed, 40 insertions(+) create mode 100644 queue-3.18/partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch diff --git a/queue-3.18/partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch b/queue-3.18/partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch new file mode 100644 index 00000000000..66871c7345a --- /dev/null +++ b/queue-3.18/partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch @@ -0,0 +1,39 @@ +From 5f15684bd5e5ef39d4337988864fec8012471dda Mon Sep 17 00:00:00 2001 +From: Richard Narron +Date: Wed, 10 Jan 2018 09:12:16 -0700 +Subject: partitions/msdos: Unable to mount UFS 44bsd partitions + +From: Richard Narron + +commit 5f15684bd5e5ef39d4337988864fec8012471dda upstream. + +UFS partitions from newer versions of FreeBSD 10 and 11 use relative +addressing for their subpartitions. But older versions of FreeBSD still +use absolute addressing just like OpenBSD and NetBSD. + +Instead of simply testing for a FreeBSD partition, the code needs to +also test if the starting offset of the C subpartition is zero. + +https://bugzilla.kernel.org/show_bug.cgi?id=197733 + +Signed-off-by: Richard Narron +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + block/partitions/msdos.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +--- a/block/partitions/msdos.c ++++ b/block/partitions/msdos.c +@@ -300,7 +300,9 @@ static void parse_bsd(struct parsed_part + continue; + bsd_start = le32_to_cpu(p->p_offset); + bsd_size = le32_to_cpu(p->p_size); +- if (memcmp(flavour, "bsd\0", 4) == 0) ++ /* FreeBSD has relative offset if C partition offset is zero */ ++ if (memcmp(flavour, "bsd\0", 4) == 0 && ++ le32_to_cpu(l->d_partitions[2].p_offset) == 0) + bsd_start += offset; + if (offset == bsd_start && size == bsd_size) + /* full parent partition, we have it already */ diff --git a/queue-3.18/series b/queue-3.18/series index c7fdd0ad842..31de45579f8 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -38,3 +38,4 @@ mtd-jedec_probe-fix-crash-in-jedec_read_mfr.patch alsa-pcm-use-dma_bytes-as-size-parameter-in-dma_mmap_coherent.patch alsa-pcm-potential-uninitialized-return-values.patch perf-hwbp-simplify-the-perf-hwbp-code-fix-documentation.patch +partitions-msdos-unable-to-mount-ufs-44bsd-partitions.patch -- 2.47.2