From 9b00083489d1d4777519da38f3003cf164dae480 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 --- 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 8a2db48552600..7dccc705a9d1c 100755 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -8512,7 +8512,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 f1057e8465d32..78266feb70c2b 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