diff options
author | Alexander Larsson <alexl@redhat.com> | 2009-06-23 20:52:34 +0200 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2009-06-23 20:52:34 +0200 |
commit | 5fb558770f0a3f3c7d277855700e6812c01a9762 (patch) | |
tree | 1ad50fc28fc630319c3ed477731be8cc42055167 /metadata | |
parent | 454a365b0b53cce2010787f6eb4ee28c321a6375 (diff) | |
download | gvfs-5fb558770f0a3f3c7d277855700e6812c01a9762.tar.gz |
Fix deadlock in MetaTree
meta_tree_refresh calls meta_tree_init which may call
meta_tree_refresh, which can deadlock due to the writer lock. Call
meta_tree_refresh_locked instead.
Diffstat (limited to 'metadata')
-rw-r--r-- | metadata/metatree.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/metadata/metatree.c b/metadata/metatree.c index 9664fa84..0f66893b 100644 --- a/metadata/metatree.c +++ b/metadata/metatree.c @@ -170,6 +170,7 @@ struct _MetaTree { MetaJournal *journal; }; +static void meta_tree_refresh_locked (MetaTree *tree); static MetaJournal *meta_journal_open (MetaTree *tree, const char *filename, gboolean for_write, @@ -504,7 +505,7 @@ meta_tree_init (MetaTree *tree) journal. However we can detect this case by looking at the tree and see if its been rotated, we do this to ensure we have an uptodate tree+journal combo. */ - meta_tree_refresh (tree); + meta_tree_refresh_locked (tree); return TRUE; |