From 7be1420f44465a96d098a33c12c5a61dcefb14aa Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 22 Jun 2017 17:40:50 +0200 Subject: [PATCH] dissect: when dissecting block devices, ignore weird MMC RPMB partitions (#6165) For now, let's just special-case this in the sources. If more partition types like this show up we should probably find some other solution. Fixes: #5806 --- src/shared/dissect-image.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 163995c1e5f..505a83f54f8 100644 --- a/src/shared/dissect-image.c +++ b/src/shared/dissect-image.c @@ -301,7 +301,7 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI _cleanup_udev_device_unref_ struct udev_device *q; unsigned long long pflags; blkid_partition pp; - const char *node; + const char *node, *sysname; dev_t qn; int nr; @@ -316,6 +316,12 @@ int dissect_image(int fd, const void *root_hash, size_t root_hash_size, DissectI if (st.st_rdev == qn) continue; + /* Filter out weird MMC RPMB partitions, which cannot reasonably be read, see + * https://github.com/systemd/systemd/issues/5806 */ + sysname = udev_device_get_sysname(q); + if (sysname && startswith(sysname, "mmcblk") && endswith(sysname, "rpmb")) + continue; + node = udev_device_get_devnode(q); if (!node) continue; -- 2.47.3