From b3d284696cc244be51bbf82d5fa1bacc197c2f99 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 3 Sep 2012 15:40:37 +0200 Subject: [PATCH] util: rm_rf_children_dangerous: delete all descendants dangerously Call rm_rf_children_dangerous() recursively rather than falling back to rm_rf_children(). This fixes a bug in systemd-tmpfiles. The problem can easily be reproduced by: # mount /dev/sda1 /mnt # mkdir /mnt/test # echo "D /mnt" > /root/test.conf # systemd-tmpfiles --remove /root/test.conf Attempted to remove disk file system, and we can't allow that. rm_rf(/root/test): Operation not permitted Reported-by: Lukas Jirkovsky --- src/shared/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/util.c b/src/shared/util.c index 4f5cb26e3..eaf272138 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3358,7 +3358,7 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct continue; } - r = rm_rf_children(subdir_fd, only_dirs, honour_sticky, root_dev); + r = rm_rf_children_dangerous(subdir_fd, only_dirs, honour_sticky, root_dev); if (r < 0 && ret == 0) ret = r;