diff --git a/ChangeLog b/ChangeLog
index 350e575..37c54d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,11 +1,35 @@
-2006-01-13  Miklos Szeredi <miklos@szeredi.hu>
+2007-01-19  Miklos Szeredi <miklos@szeredi.hu>
+
+	* Build fix for 2.6.16 vanila and 2.6.15 FC5 kernels.  Patch from
+	Ian Abbott
+
+2007-01-18  Miklos Szeredi <miklos@szeredi.hu>
+
+	* Fix abort in fuse_new() compatibility API for opts == NULL case.
+	Novell bugzilla #233870.  Patch from Takashi Iwai.
+
+2007-01-13  Miklos Szeredi <miklos@szeredi.hu>
 
 	* Fix option parsing in mount.fuse.  Patch from Jens M. Noedler
 
+2007-01-02  Miklos Szeredi <miklos@szeredi.hu>
+
+	* Fix unaligned access in file desctriptor passing in libfuse,
+	fusermount and ulockmgr.  Debian bug ID: 404904.  Reported and
+	tested by Sebastian Fontius
+
 2006-12-16  Miklos Szeredi <miklos@szeredi.hu>
 
 	* kernel: don't keep unreferenced inodes in the icache.
 
+2006-12-15  Miklos Szeredi <miklos@szeredi.hu>
+
+	* fusermount: Fix detection of fuseblk.  Reported by Szakacsits
+	Szabolcs
+
+	* lib: Fix use after free in fuse_flush().  Reported by Ron
+	Lindman
+
 2006-12-10  Miklos Szeredi <miklos@szeredi.hu>
 
 	* mount.fuse: add "setuid=USER" option which does a "su - USER"
diff --git a/kernel/file.c b/kernel/file.c
index 6cf71f3..3006d02 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -628,15 +628,9 @@
 	struct inode *inode = file->f_dentry->d_inode;
 	ssize_t res;
 	/* Don't allow parallel writes to the same file */
-#ifdef KERNEL_2_6_16_PLUS
 	mutex_lock(&inode->i_mutex);
 	res = fuse_direct_io(file, buf, count, ppos, 1);
 	mutex_unlock(&inode->i_mutex);
-#else
-	down(&inode->i_sem);
-	res = fuse_direct_io(file, buf, count, ppos, 1);
-	up(&inode->i_sem);
-#endif
 	return res;
 }
 
diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h
index f5b26f2..5259ee1 100644
--- a/kernel/fuse_i.h
+++ b/kernel/fuse_i.h
@@ -55,16 +55,14 @@
 #include <linux/spinlock.h>
 #include <linux/mm.h>
 #include <linux/backing-dev.h>
-#ifdef KERNEL_2_6_17_PLUS
-#include <linux/mutex.h>
-#else
-#include <asm/semaphore.h>
+#ifndef DEFINE_MUTEX
 #define DEFINE_MUTEX(m) DECLARE_MUTEX(m)
 #define mutex_init(m) init_MUTEX(m)
 #define mutex_destroy(m) do { } while (0)
 #define mutex_lock(m) down(m)
 #define mutex_unlock(m) up(m)
 #define mutex semaphore
+#define i_mutex i_sem	/* Hack for struct inode */
 #endif
 #ifndef KERNEL_2_6_19_PLUS
 #define clear_nlink(inode) (inode)->i_nlink = 0
diff --git a/lib/fuse.c b/lib/fuse.c
index 4446245..994a31f 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -2295,7 +2295,6 @@
         err = -ENOSYS;
         if (f->op.flush)
             err = fuse_do_flush(f, req, path, fi);
-        free(path);
     }
     if (f->op.lock) {
         struct flock lock;
@@ -2314,6 +2313,7 @@
         if (err == -ENOSYS)
             err = 0;
     }
+    free(path);
     pthread_rwlock_unlock(&f->tree_lock);
     reply_err(req, err);
 }
@@ -2948,9 +2948,10 @@
     struct fuse *f;
     struct fuse_args args = FUSE_ARGS_INIT(0, NULL);
 
+    if (fuse_opt_add_arg(&args, "") == -1)
+	return NULL;
     if (opts &&
-        (fuse_opt_add_arg(&args, "") == -1 ||
-         fuse_opt_add_arg(&args, "-o") == -1 ||
+        (fuse_opt_add_arg(&args, "-o") == -1 ||
          fuse_opt_add_arg(&args, opts) == -1)) {
         fuse_opt_free_args(&args);
         return NULL;
diff --git a/lib/mount.c b/lib/mount.c
index a72294b..cbdedf3 100644
--- a/lib/mount.c
+++ b/lib/mount.c
@@ -151,7 +151,7 @@
     struct iovec iov;
     char buf[1];
     int rv;
-    char ccmsg[CMSG_SPACE(sizeof(int))];
+    size_t ccmsg[CMSG_SPACE(sizeof(int)) / sizeof(size_t)];
     struct cmsghdr *cmsg;
 
     iov.iov_base = buf;
diff --git a/lib/ulockmgr.c b/lib/ulockmgr.c
index 9e9c2b6..bf27b36 100644
--- a/lib/ulockmgr.c
+++ b/lib/ulockmgr.c
@@ -75,7 +75,7 @@
     struct msghdr msg;
     struct cmsghdr *p_cmsg;
     struct iovec vec;
-    char cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS)];
+    size_t cmsgbuf[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS) / sizeof(size_t)];
     int res;
 
     assert(numfds <= MAX_SEND_FDS);
diff --git a/util/fusermount.c b/util/fusermount.c
index 47f335c..70903a0 100644
--- a/util/fusermount.c
+++ b/util/fusermount.c
@@ -437,7 +437,7 @@
         return 1;
 
     while (fgets(buf, sizeof(buf), f))
-        if (strcmp(buf, "fuseblk\n") == 0) {
+        if (strstr(buf, "fuseblk\n")) {
             fclose(f);
             return 1;
         }
@@ -883,7 +883,7 @@
     struct msghdr msg;
     struct cmsghdr *p_cmsg;
     struct iovec vec;
-    char cmsgbuf[CMSG_SPACE(sizeof(fd))];
+    size_t cmsgbuf[CMSG_SPACE(sizeof(fd)) / sizeof(size_t)];
     int *p_fds;
     char sendchar = 0;
 
diff --git a/util/ulockmgr_server.c b/util/ulockmgr_server.c
index 0d00975..211d74a 100644
--- a/util/ulockmgr_server.c
+++ b/util/ulockmgr_server.c
@@ -58,7 +58,7 @@
 {
     struct msghdr msg;
     struct iovec iov;
-    char ccmsg[CMSG_SPACE(sizeof(int)) * MAX_SEND_FDS];
+    size_t ccmsg[CMSG_SPACE(sizeof(int) * MAX_SEND_FDS) / sizeof(size_t)];
     struct cmsghdr *cmsg;
     int res;
     int i;
