aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMadan Valluri <mvalluri@cumulus-systems.com>2013-02-04 18:30:14 +0100
committerMiklos Szeredi <mszeredi@suse.cz>2013-02-04 18:30:14 +0100
commitd7bf78d9131bbe44800d0e961eaf3881925d1219 (patch)
tree69ae615be4b5fcf2280a9e558aaeeff78183c463
parent3a2bd4da6b0b713276528d0c818f9e7be515e8ec (diff)
downloadandroid_external_fuse-d7bf78d9131bbe44800d0e961eaf3881925d1219.tar.gz
android_external_fuse-d7bf78d9131bbe44800d0e961eaf3881925d1219.tar.bz2
android_external_fuse-d7bf78d9131bbe44800d0e961eaf3881925d1219.zip
libfuse: fix the 'remember' option
The lru list was not initialized for the "/" path. This resulted in remove_node_lru() crashing on LOOKUP-DOTDOT. Patch by Madan Valluri. -- ChangeLog | 4 ++++ lib/fuse.c | 4 ++++ 2 files changed, 8 insertions(+)
-rw-r--r--ChangeLog4
-rw-r--r--lib/fuse.c4
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 076bcaf..5a648be 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
* libfuse: fix crash in unlock_path(). Patch by Ratna Manoj
+ * libfuse: fix the 'remember' option. The lru list was not
+ initialized for the "/" path. This resulted in remove_node_lru()
+ crashing on LOOKUP-DOTDOT. Patch by Madan Valluri
+
2012-10-01 Miklos Szeredi <miklos@szeredi.hu>
* Released 2.9.2
diff --git a/lib/fuse.c b/lib/fuse.c
index 1917346..f404650 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -4698,6 +4698,10 @@ struct fuse *fuse_new_common(struct fuse_chan *ch, struct fuse_args *args,
fprintf(stderr, "fuse: memory allocation failed\n");
goto out_free_id_table;
}
+ if (lru_enabled(f)) {
+ struct node_lru *lnode = node_lru(root);
+ init_list_head(&lnode->lru);
+ }
strcpy(root->inline_name, "/");
root->name = root->inline_name;