--- a/vmblock-only/linux/control.c 2013-10-03 04:29:47.471339204 -0400 +++ b/vmblock-only/linux/control.c 2013-10-03 04:31:56.607334636 -0400 @@ -283,7 +283,7 @@ int i; int retval; - name = getname(buf); + name = __getname(); if (IS_ERR(name)) { return PTR_ERR(name); } + i = strncpy_from_user(name, buf, PATH_MAX); + if (i < 0 || i == PATH_MAX) { + __putname(name); + return -EINVAL; + } + for (i = strlen(name) - 1; i >= 0 && name[i] == '/'; i--) { name[i] = '\0'; } --- a/vmblock-only/linux/dentry.c 2013-10-03 04:29:47.471339204 -0400 +++ b/vmblock-only/linux/dentry.c 2013-10-03 04:31:56.607334636 -0400 @@ -32,7 +32,7 @@ #include "block.h" -static int DentryOpRevalidate(struct dentry *dentry, struct nameidata *nd); +static int DentryOpRevalidate(struct dentry *dentry, unsigned int flags); struct dentry_operations LinkDentryOps = { .d_revalidate = DentryOpRevalidate, @@ -60,7 +60,7 @@ static int DentryOpRevalidate(struct dentry *dentry, // IN: dentry revalidating - struct nameidata *nd) // IN: lookup flags & intent + unsigned int flags) // IN: lookup flags & intent { VMBlockInodeInfo *iinfo; struct nameidata actualNd; @@ -101,7 +101,7 @@ if (actualDentry && actualDentry->d_op && actualDentry->d_op->d_revalidate) { - return actualDentry->d_op->d_revalidate(actualDentry, nd); + return actualDentry->d_op->d_revalidate(actualDentry, flags); } if (compat_path_lookup(iinfo->name, 0, &actualNd)) { --- a/vmblock-only/linux/inode.c 2013-10-03 04:29:47.471339204 -0400 +++ b/vmblock-only/linux/inode.c 2013-10-03 04:31:56.607334636 -0400 @@ -36,7 +36,7 @@ /* Inode operations */ static struct dentry *InodeOpLookup(struct inode *dir, - struct dentry *dentry, struct nameidata *nd); + struct dentry *dentry, unsigned int flags); static int InodeOpReadlink(struct dentry *dentry, char __user *buffer, int buflen); #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13) static void *InodeOpFollowlink(struct dentry *dentry, struct nameidata *nd); @@ -75,7 +75,7 @@ static struct dentry * InodeOpLookup(struct inode *dir, // IN: parent directory's inode struct dentry *dentry, // IN: dentry to lookup - struct nameidata *nd) // IN: lookup intent and information + unsigned int flags) // IN: lookup intent and information { char *filename; struct inode *inode; @@ -221,7 +221,7 @@ goto out; } - ret = vfs_follow_link(nd, iinfo->name); + nd_set_link(nd, iinfo->name); out: #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 13)