From 396658cc6c7b568257140a89468b5cfba0c9b976 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Thu, 6 Aug 2020 14:04:57 -0700 Subject: [PATCH] client: use non-static dirent for thread-safety Fixes: https://tracker.ceph.com/issues/46832 Signed-off-by: Patrick Donnelly (cherry picked from commit 9b00083489d1d4777519da38f3003cf164dae480) --- src/client/Client.cc | 2 +- src/client/Client.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 48e40e36a0d3c..77c35e564e58e 100755 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -8380,7 +8380,7 @@ static int _readdir_single_dirent_cb(void *p, struct dirent *de, struct dirent *Client::readdir(dir_result_t *d) { int ret; - static struct dirent de; + auto& de = d->de; single_readdir sr; sr.de = &de; sr.stx = NULL; diff --git a/src/client/Client.h b/src/client/Client.h index 0747baab91863..9c4f02c04473c 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -222,6 +222,7 @@ struct dir_result_t { frag_t buffer_frag; vector buffer; + struct dirent de; }; class Client : public Dispatcher, public md_config_obs_t { -- 2.39.5