>+ //DQ: vfs_create has a different prototype in 2.6
I found a relic! :-)
>+ if (IS_ERR(hidden_dentry)) {
>+ err = PTR_ERR(hidden_dentry);
>+ }
-{}
>+/* We don't lock the dentry here, because readlink does the heavy lifting. */
>+static void *unionfs_follow_link(struct dentry *dentry, struct nameidata *nd)
>+{
>+ char *buf;
>+ int len = PAGE_SIZE, err;
>+ mm_segment_t old_fs;
>+
>+ /* This is freed by the put_link method assuming a successful call. */
>+ buf = (char *)kmalloc(len, GFP_KERNEL);
Nocast.
>+void unionfs_put_link(struct dentry *dentry, struct nameidata *nd, void *cookie)
>+{
>+ char *link;
>+ link = nd_get_link(nd);
>+ kfree(link);
>+}
kfree(nd_get_link(nd));
>+ /* Ordinary permission routines do not understand MAY_APPEND. */
>+ submask = mask & ~MAY_APPEND;
>+ if (inode->i_op && inode->i_op->permission) {
>+ retval = inode->i_op->permission(inode, submask, nd);
>+ if ((retval == -EACCES) && (submask & MAY_WRITE) &&
>+ (!strcmp("nfs", (inode)->i_sb->s_type->name)) &&
>+ (nd) && (nd->mnt) && (nd->mnt->mnt_sb) &&
>+ (branchperms(nd->mnt->mnt_sb, bindex) & MAY_NFSRO)) {
>+ retval = generic_permission(inode, submask, NULL);
I am not sure right now, I would need to test; does someone know out of the box
whether other network filesystems (in particular SMBFS/CIFS) behave like NFS
and also return -EACCES rather than -EROFS?
>+ return ((retval == -EROFS) ? 0 : retval); /* ignore EROFS */
outer ()
>+ for (bindex = bstart; (bindex <= bend) || (bindex == bstart); bindex++) {
>+ /* if error is in the leftmost f/s, pass it up */
"f/s" => branch, to follow unionfs terminiology.
Jan Engelhardt
--
--
VGER BF report: H 0.0311395
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]