mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
vfs: fix possible use-after-free
This commit is contained in:
+4
-3
@@ -231,15 +231,16 @@ int vfs_open(vnode_t *ref, char *path, int flags, vnode_t **res) {
|
|||||||
|
|
||||||
vnode_t *new = tmp;
|
vnode_t *new = tmp;
|
||||||
err = VOP_OPEN(&new, flags, getcred());
|
err = VOP_OPEN(&new, flags, getcred());
|
||||||
|
|
||||||
|
// locked by vfs_lookup
|
||||||
|
VOP_UNLOCK(tmp);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
VOP_RELEASE(tmp);
|
VOP_RELEASE(tmp);
|
||||||
} else {
|
} else {
|
||||||
*res = new != tmp ? new : tmp;
|
*res = new != tmp ? new : tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
// locked by vfs_lookup
|
|
||||||
VOP_UNLOCK(tmp);
|
|
||||||
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user