aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--kernel/file.c2
-rw-r--r--lib/fuse_session.c5
3 files changed, 15 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7a53cea..e985792 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,13 +1,23 @@
+2006-09-27 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix Oops in fuse_readpages(). Reported by David Shaw
+
2006-09-24 Csaba Henk <csaba.henk@creo.hu>
* Add support for nanosec times on FreeBSD
* Fix FreeBSD compatibility issues
+2006-09-23 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Fix one more compatibility bug. Thanks to Ricardo Correia
+
+ * Fix utimens compilation with uClibc. Patch from Jamie Guinan
+
2006-09-22 Miklos Szeredi <miklos@szeredi.hu>
- * Fix compatibility bugs in low level interface. Reported by
- Ricardo Correia
+ * Fixed several compatibility bugs in low level interface.
+ Reported by Ricardo Correia
* Add workaround for ARM caching bug
diff --git a/kernel/file.c b/kernel/file.c
index e3a42c0..f01fc99 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -434,7 +434,7 @@ static int fuse_readpages(struct file *file, struct address_space *mapping,
data.req = NULL;
err = read_cache_pages(mapping, pages, fuse_readpages_fill, &data);
- if (!err) {
+ if (!err && data.req) {
if (data.req->num_pages)
fuse_send_readpages(data.req, file, inode);
else
diff --git a/lib/fuse_session.c b/lib/fuse_session.c
index 73f5f57..6e68568 100644
--- a/lib/fuse_session.c
+++ b/lib/fuse_session.c
@@ -120,8 +120,8 @@ int fuse_session_exited(struct fuse_session *se)
return se->exited;
}
-struct fuse_chan *fuse_chan_new_common(struct fuse_chan_ops *op, int fd,
- size_t bufsize, void *data, int compat)
+static struct fuse_chan *fuse_chan_new_common(struct fuse_chan_ops *op, int fd,
+ size_t bufsize, void *data, int compat)
{
struct fuse_chan *ch = (struct fuse_chan *) malloc(sizeof(*ch));
if (ch == NULL) {
@@ -186,7 +186,6 @@ int fuse_chan_receive(struct fuse_chan *ch, char *buf, size_t size)
{
int res;
- assert(ch->compat);
res = fuse_chan_recv(&ch, buf, size);
return res >= 0 ? res : (res != -EINTR && res != -EAGAIN) ? -1 : 0;
}