When referencing nd_cnp after namei(), always pass SAVENAME into
NDINIT() operation flags. Submitted by: green Obtained from: TrustedBSD Project Sponsored by: DARPA, NAI Labs
This commit is contained in:
parent
e37b1fcdee
commit
e66c87b70e
@ -798,7 +798,8 @@ mknod(td, uap)
|
|||||||
return (error);
|
return (error);
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, path), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
vp = nd.ni_vp;
|
vp = nd.ni_vp;
|
||||||
@ -882,7 +883,8 @@ mkfifo(td, uap)
|
|||||||
|
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, path), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
if (nd.ni_vp != NULL) {
|
if (nd.ni_vp != NULL) {
|
||||||
@ -950,7 +952,8 @@ link(td, uap)
|
|||||||
vrele(vp);
|
vrele(vp);
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, link), td);
|
||||||
if ((error = namei(&nd)) == 0) {
|
if ((error = namei(&nd)) == 0) {
|
||||||
if (nd.ni_vp != NULL) {
|
if (nd.ni_vp != NULL) {
|
||||||
vrele(nd.ni_vp);
|
vrele(nd.ni_vp);
|
||||||
@ -999,7 +1002,8 @@ symlink(td, uap)
|
|||||||
goto out;
|
goto out;
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, link), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if (nd.ni_vp) {
|
if (nd.ni_vp) {
|
||||||
@ -2613,7 +2617,7 @@ vn_mkdir(path, mode, segflg, td)
|
|||||||
|
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, segflg, path, td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, segflg, path, td);
|
||||||
nd.ni_cnd.cn_flags |= WILLBEDIR;
|
nd.ni_cnd.cn_flags |= WILLBEDIR;
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
@ -798,7 +798,8 @@ mknod(td, uap)
|
|||||||
return (error);
|
return (error);
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, path), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
vp = nd.ni_vp;
|
vp = nd.ni_vp;
|
||||||
@ -882,7 +883,8 @@ mkfifo(td, uap)
|
|||||||
|
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, UIO_USERSPACE, SCARG(uap, path), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, path), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
if (nd.ni_vp != NULL) {
|
if (nd.ni_vp != NULL) {
|
||||||
@ -950,7 +952,8 @@ link(td, uap)
|
|||||||
vrele(vp);
|
vrele(vp);
|
||||||
return (error);
|
return (error);
|
||||||
}
|
}
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, link), td);
|
||||||
if ((error = namei(&nd)) == 0) {
|
if ((error = namei(&nd)) == 0) {
|
||||||
if (nd.ni_vp != NULL) {
|
if (nd.ni_vp != NULL) {
|
||||||
vrele(nd.ni_vp);
|
vrele(nd.ni_vp);
|
||||||
@ -999,7 +1002,8 @@ symlink(td, uap)
|
|||||||
goto out;
|
goto out;
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT|NOOBJ, UIO_USERSPACE, SCARG(uap, link), td);
|
NDINIT(&nd, CREATE, LOCKPARENT | NOOBJ | SAVENAME, UIO_USERSPACE,
|
||||||
|
SCARG(uap, link), td);
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
goto out;
|
goto out;
|
||||||
if (nd.ni_vp) {
|
if (nd.ni_vp) {
|
||||||
@ -2613,7 +2617,7 @@ vn_mkdir(path, mode, segflg, td)
|
|||||||
|
|
||||||
restart:
|
restart:
|
||||||
bwillwrite();
|
bwillwrite();
|
||||||
NDINIT(&nd, CREATE, LOCKPARENT, segflg, path, td);
|
NDINIT(&nd, CREATE, LOCKPARENT | SAVENAME, segflg, path, td);
|
||||||
nd.ni_cnd.cn_flags |= WILLBEDIR;
|
nd.ni_cnd.cn_flags |= WILLBEDIR;
|
||||||
if ((error = namei(&nd)) != 0)
|
if ((error = namei(&nd)) != 0)
|
||||||
return (error);
|
return (error);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user