Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1423790 > unrolled thread

[tip:perf/core] perf tools: Fix rm_rf() to handle non-regular files correctly

Started bytip-bot for Masami Hiramatsu <tipbot@zytor.com>
First post2016-06-16 10:40 +0200
Last post2016-06-16 10:40 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [tip:perf/core] perf tools: Fix rm_rf() to handle non-regular files  correctly tip-bot for Masami Hiramatsu <tipbot@zytor.com> - 2016-06-16 10:40 +0200

#1423790 — [tip:perf/core] perf tools: Fix rm_rf() to handle non-regular files correctly

Fromtip-bot for Masami Hiramatsu <tipbot@zytor.com>
Date2016-06-16 10:40 +0200
Subject[tip:perf/core] perf tools: Fix rm_rf() to handle non-regular files correctly
Message-ID<rKB0d-5XD-9@gated-at.bofh.it>
Commit-ID:  2a1ef032cfccd8c92f32b86615a0b0151a7cd86f
Gitweb:     http://git.kernel.org/tip/2a1ef032cfccd8c92f32b86615a0b0151a7cd86f
Author:     Masami Hiramatsu <mhiramat@kernel.org>
AuthorDate: Wed, 8 Jun 2016 18:29:11 +0900
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 14 Jun 2016 09:29:54 -0300

perf tools: Fix rm_rf() to handle non-regular files correctly

Fix rm_rf() to handle non-regular files correctly. This fix includes two
changes;

 - Fix to use lstat(3) instead of stat(3) since if the target
   file is a symbolic link, rm_rf() should unlink the symbolic
   link itself, not the file which pointed by the symlink.
 - Fix to unlink non-regular files (except for directory),
   including symlink.

Even though the first one fixes to stat symlink itself, without second
fix, it still failed because the symlink is not a regular file.

Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20160608092911.3116.90929.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/util/util.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/tools/perf/util/util.c b/tools/perf/util/util.c
index 23504ad..e08b9a0 100644
--- a/tools/perf/util/util.c
+++ b/tools/perf/util/util.c
@@ -97,20 +97,17 @@ int rm_rf(char *path)
 		scnprintf(namebuf, sizeof(namebuf), "%s/%s",
 			  path, d->d_name);
 
-		ret = stat(namebuf, &statbuf);
+		/* We have to check symbolic link itself */
+		ret = lstat(namebuf, &statbuf);
 		if (ret < 0) {
 			pr_debug("stat failed: %s\n", namebuf);
 			break;
 		}
 
-		if (S_ISREG(statbuf.st_mode))
-			ret = unlink(namebuf);
-		else if (S_ISDIR(statbuf.st_mode))
+		if (S_ISDIR(statbuf.st_mode))
 			ret = rm_rf(namebuf);
-		else {
-			pr_debug("unknown file: %s\n", namebuf);
-			ret = -1;
-		}
+		else
+			ret = unlink(namebuf);
 	}
 	closedir(dir);
 

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web