]> git.proxmox.com Git - mirror_lxcfs.git/commitdiff
bindings: protect do_release_file_info() with mutex
authortomponline <tomp@tomp.uk>
Fri, 18 Jan 2019 13:05:09 +0000 (13:05 +0000)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 18 Jan 2019 14:21:02 +0000 (15:21 +0100)
Add a mutex to do_release_file_info to avoid lxcfs crash when stopping
multiple containers concurrently

Signed-off-by: tomponline <tomp@tomp.uk>
[christian.brauner@ubuntu.com: use correct commit message style]
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
bindings.c

index 097ca81573539f03987568bd5f8c1bcc853c0004..29855d518cf25ea1c4e0811d1c3754f0667aa29e 100644 (file)
@@ -2169,11 +2169,16 @@ out:
        return ret;
 }
 
+static pthread_mutex_t do_release_file_info_lock = PTHREAD_MUTEX_INITIALIZER;
+
 static void do_release_file_info(struct fuse_file_info *fi)
 {
+       lock_mutex(&do_release_file_info_lock);
+
        struct file_info *f = (struct file_info *)fi->fh;
 
        if (!f)
+               unlock_mutex(&do_release_file_info_lock);
                return;
 
        fi->fh = 0;
@@ -2188,6 +2193,8 @@ static void do_release_file_info(struct fuse_file_info *fi)
        f->buf = NULL;
        free(f);
        f = NULL;
+
+       unlock_mutex(&do_release_file_info_lock);
 }
 
 int cg_releasedir(const char *path, struct fuse_file_info *fi)