[PATCH v3] selinux_restorecon: Do not exit on directory cycles
Johannes Segitz <[email protected]> Mon, 27 Jul 2026 14:47:57 +0200
| Newsgroups | org.kernel.vger.selinux |
|---|---|
| Message-ID | <[email protected]> |
All other failures are handled gracefully. Directory cycles can e.g. happen on BTRFS filesystems with subvolumes. Skip them and continue instead of exiting Signed-off-by: Johannes Segitz <[email protected]> --- libselinux/src/selinux_restorecon.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libselinux/src/selinux_restorecon.c b/libselinux/src/selinux_restorecon.c index 30f1b836..fdefc92c 100644 --- a/libselinux/src/selinux_restorecon.c +++ b/libselinux/src/selinux_restorecon.c @@ -1393,15 +1393,14 @@ static void *selinux_restorecon_thread(void *arg) if (is_dir) { if (descend && walk_is_cycle(state, ent_sb.st_dev, ent_sb.st_ino)) { - selinux_log(SELINUX_ERROR, + selinux_log(SELINUX_WARNING, "Directory cycle on %s.\n", ent_path); close(ent_fd); - close(rd_fd); - errno = ELOOP; - state->error = -1; - state->abort = true; - goto finish; + if (rd_fd >= 0) + close(rd_fd); + prune_pathbuf(state); + continue; } if (state->sfsb.f_type == SYSFS_MAGIC && -- 2.55.0