diff options
author | Elliott Hughes <enh@google.com> | 2024-02-27 16:14:52 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-02-27 16:14:52 +0000 |
commit | 77a80d1744b81f200b1f9710abe71da93da2f0d9 (patch) | |
tree | 856a17997920bae4e9d6d7fe2984f7adaaf3e9d8 /debuggerd | |
parent | fb97c97932714823c6475ac0eca60a1b870e6a0d (diff) | |
parent | aa1d18a59bdbcc36a4a133ae9faea4997612b232 (diff) | |
download | core-77a80d1744b81f200b1f9710abe71da93da2f0d9.tar.gz |
Merge "Remove support for Linux before 3.11 (without O_TMPFILE)." into main
Diffstat (limited to 'debuggerd')
-rw-r--r-- | debuggerd/tombstoned/tombstoned.cpp | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/debuggerd/tombstoned/tombstoned.cpp b/debuggerd/tombstoned/tombstoned.cpp index 98eb003e3..e2a67a2f7 100644 --- a/debuggerd/tombstoned/tombstoned.cpp +++ b/debuggerd/tombstoned/tombstoned.cpp @@ -61,7 +61,6 @@ enum CrashStatus { struct CrashArtifact { unique_fd fd; - std::optional<std::string> temporary_path; static CrashArtifact devnull() { CrashArtifact result; @@ -145,17 +144,9 @@ class CrashQueue { std::optional<std::string> path; result.fd.reset(openat(dir_fd_, ".", O_WRONLY | O_APPEND | O_TMPFILE | O_CLOEXEC, 0660)); if (result.fd == -1) { - // We might not have O_TMPFILE. Try creating with an arbitrary filename instead. - static size_t counter = 0; - std::string tmp_filename = StringPrintf(".temporary%zu", counter++); - result.fd.reset(openat(dir_fd_, tmp_filename.c_str(), - O_WRONLY | O_APPEND | O_CREAT | O_TRUNC | O_CLOEXEC, 0660)); - if (result.fd == -1) { - PLOG(FATAL) << "failed to create temporary tombstone in " << dir_path_; - } - - result.temporary_path = std::move(tmp_filename); + PLOG(FATAL) << "failed to create temporary tombstone in " << dir_path_; } + // We need to fchmodat after creating to avoid getting the umask applied. std::string fd_path = StringPrintf("/proc/self/fd/%d", result.fd.get()); if (fchmodat(dir_fd_, fd_path.c_str(), 0664, 0) != 0) { @@ -477,20 +468,6 @@ static void crash_completed(borrowed_fd sockfd, std::unique_ptr<Crash> crash) { rename_tombstone_fd(crash->output.proto->fd, queue->dir_fd(), *paths.proto); } } - - // If we don't have O_TMPFILE, we need to clean up after ourselves. - if (crash->output.text.temporary_path) { - rc = unlinkat(queue->dir_fd().get(), crash->output.text.temporary_path->c_str(), 0); - if (rc != 0) { - PLOG(ERROR) << "failed to unlink temporary tombstone at " << paths.text; - } - } - if (crash->output.proto && crash->output.proto->temporary_path) { - rc = unlinkat(queue->dir_fd().get(), crash->output.proto->temporary_path->c_str(), 0); - if (rc != 0) { - PLOG(ERROR) << "failed to unlink temporary proto tombstone"; - } - } } static void crash_completed_cb(evutil_socket_t sockfd, short ev, void* arg) { |