krb5 commit: Fix profile_open_file() last_stat locking

ghudson at mit.edu ghudson at mit.edu
Fri Sep 19 11:57:13 EDT 2025


https://github.com/krb5/krb5/commit/3466589de7de7e74aa53c560b83313ae7d2f8b6f
commit 3466589de7de7e74aa53c560b83313ae7d2f8b6f
Author: Alexey Milovidov <milovidov at clickhouse.com>
Date:   Mon Apr 10 04:19:01 2023 +0200

    Fix profile_open_file() last_stat locking
    
    Commit 53d6d0d64e96b84b57b7446a787e683312e2a529 changed
    profile_open_file() to force a stat() when reusing a profile object,
    by setting the last_stat field to 0 on the data object.  The last_stat
    field is controlled by the data object mutex (unlike the refcount
    field, which is controlled by g_shared_trees_mutex).  Lock the data
    object before setting last_stat.
    
    [ghudson at mit.edu: switched to using profile_update_data_file_locked()
    so we don't lock and unlock the data object twice; rewrote commit
    message]
    
    ticket: 9184 (new)

 src/util/profile/prof_file.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/util/profile/prof_file.c b/src/util/profile/prof_file.c
index 8b0b2bb44..4ff1538fd 100644
--- a/src/util/profile/prof_file.c
+++ b/src/util/profile/prof_file.c
@@ -220,9 +220,11 @@ errcode_t profile_open_file(const_profile_filespec_t filespec,
     }
     if (data) {
         data->refcount++;
-        data->last_stat = 0;    /* Make sure to stat when updating. */
         k5_mutex_unlock(&g_shared_trees_mutex);
-        retval = profile_update_file_data(data, NULL);
+        k5_mutex_lock(&data->lock);
+        data->last_stat = 0;    /* Make sure to stat when updating. */
+        retval = profile_update_file_data_locked(data, NULL);
+        k5_mutex_unlock(&data->lock);
         free(expanded_filename);
         if (retval) {
             profile_dereference_data(data);


More information about the cvs-krb5 mailing list