Fix bug in DM iteration and standardise how to iterate through DM layers (#40426)
get_block_device_harder_fd() currently only traverses one level of device mapper stacking when looking for the underlying block device. This causes issues with nested DM setups like dm-crypt on top of dm-integrity, where we don't traverse enough to get the actual physical device. Fix this by iterating through all DM layers until we reach a device with no underlying device. And while we're at it also make cgroups use the same logic. Fixes: #40419
This commit is contained in:
@@ -678,7 +678,7 @@ static int get_sysext_overlay_block(const char *p, dev_t *ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
(void) block_get_originating(*ret, ret);
|
||||
(void) block_get_originating(*ret, ret, /* recursive= */ false);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user