--- /dev/null
+From 5f15684bd5e5ef39d4337988864fec8012471dda Mon Sep 17 00:00:00 2001
+From: Richard Narron <comet.berkeley@gmail.com>
+Date: Wed, 10 Jan 2018 09:12:16 -0700
+Subject: partitions/msdos: Unable to mount UFS 44bsd partitions
+
+From: Richard Narron <comet.berkeley@gmail.com>
+
+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 <comet.berkeley@gmail.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ block/partitions/msdos.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/block/partitions/msdos.c
++++ b/block/partitions/msdos.c
+@@ -301,7 +301,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 */