diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c index 163995c1e5..505a83f54f 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;