summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/smbprofile.h4
-rw-r--r--source3/profile/profile.c4
-rw-r--r--source3/smbd/server.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/source3/include/smbprofile.h b/source3/include/smbprofile.h
index 76d9d2b6f6f..c771fd431d6 100644
--- a/source3/include/smbprofile.h
+++ b/source3/include/smbprofile.h
@@ -533,7 +533,7 @@ static inline bool smbprofile_dump_pending(void)
void smbprofile_dump(void);
-void smbprofile_cleanup(pid_t pid);
+void smbprofile_cleanup(pid_t pid, pid_t dst);
void smbprofile_stats_accumulate(struct profile_stats *acc,
const struct profile_stats *add);
void smbprofile_collect(struct profile_stats *stats);
@@ -610,7 +610,7 @@ static inline void smbprofile_dump(void)
return;
}
-static inline void smbprofile_cleanup(pid_t pid)
+static inline void smbprofile_cleanup(pid_t pid, pid_t dst)
{
return;
}
diff --git a/source3/profile/profile.c b/source3/profile/profile.c
index 00cb3e550c4..1464a421b4d 100644
--- a/source3/profile/profile.c
+++ b/source3/profile/profile.c
@@ -312,7 +312,7 @@ void smbprofile_dump(void)
return;
}
-void smbprofile_cleanup(pid_t pid)
+void smbprofile_cleanup(pid_t pid, pid_t dst)
{
TDB_DATA key = { .dptr = (uint8_t *)&pid, .dsize = sizeof(pid) };
struct profile_stats s = {};
@@ -336,7 +336,7 @@ void smbprofile_cleanup(pid_t pid)
tdb_delete(smbprofile_state.internal.db->tdb, key);
tdb_chainunlock(smbprofile_state.internal.db->tdb, key);
- pid = getpid();
+ pid = dst;
ret = tdb_chainlock(smbprofile_state.internal.db->tdb, key);
if (ret != 0) {
return;
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index c7a17332403..46e655a6e4f 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -579,7 +579,7 @@ static void remove_child_pid(struct smbd_parent_context *parent,
__func__, strerror(ret)));
}
- smbprofile_cleanup(pid);
+ smbprofile_cleanup(pid, getpid());
for (child = parent->children; child != NULL; child = child->next) {
if (child->pid == pid) {