Page MenuHomeFreeBSD

D49898.id153892.diff
No OneTemporary

D49898.id153892.diff

diff --git a/sys/kern/vfs_vnops.c.dotdot b/sys/kern/vfs_vnops.c.sav
--- a/sys/kern/vfs_vnops.c.dotdot
+++ b/sys/kern/vfs_vnops.c.sav
@@ -363,10 +363,20 @@
if ((error = namei(ndp)) != 0)
return (error);
vp = ndp->ni_vp;
- if ((fmode & O_NAMEDATTR) != 0 && (vp->v_mount->mnt_flag &
- MNT_NAMEDATTR) == 0) {
- error = EINVAL;
- goto bad;
+ if ((fmode & O_NAMEDATTR) != 0) {
+ short irflag;
+
+ irflag = vn_irflag_read(vp);
+ if ((vp->v_mount->mnt_flag &
+ MNT_NAMEDATTR) == 0 ||
+ ((irflag & VIRF_NAMEDATTR) != 0 &&
+ vp->v_type != VREG))
+ error = EINVAL;
+ else if ((irflag & (VIRF_NAMEDDIR |
+ VIRF_NAMEDATTR)) == 0)
+ error = ENOATTR;
+ if (error != 0)
+ goto bad;
}
}
error = vn_open_vnode(vp, fmode, cred, curthread, fp);

File Metadata

Mime Type
text/plain
Expires
Wed, Jul 22, 7:03 AM (12 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35352916
Default Alt Text
D49898.id153892.diff (799 B)

Event Timeline