From d50ef66d03ed80f79574b53a4ac84c97ac107763 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Sun, 19 Mar 2006 20:43:07 +0000 Subject: [PATCH] Don't call vn_finished_write() if vn_start_write() failed. --- sys/kern/kern_mac.c | 10 ++++++---- sys/security/mac/mac_framework.c | 10 ++++++---- sys/security/mac/mac_syscalls.c | 10 ++++++---- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/sys/kern/kern_mac.c b/sys/kern/kern_mac.c index fd28931cb4a9..19e6d7df7f65 100644 --- a/sys/kern/kern_mac.c +++ b/sys/kern/kern_mac.c @@ -1069,10 +1069,11 @@ __mac_set_file(struct thread *td, struct __mac_set_file_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0); @@ -1122,10 +1123,11 @@ __mac_set_link(struct thread *td, struct __mac_set_link_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0); diff --git a/sys/security/mac/mac_framework.c b/sys/security/mac/mac_framework.c index fd28931cb4a9..19e6d7df7f65 100644 --- a/sys/security/mac/mac_framework.c +++ b/sys/security/mac/mac_framework.c @@ -1069,10 +1069,11 @@ __mac_set_file(struct thread *td, struct __mac_set_file_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0); @@ -1122,10 +1123,11 @@ __mac_set_link(struct thread *td, struct __mac_set_link_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0); diff --git a/sys/security/mac/mac_syscalls.c b/sys/security/mac/mac_syscalls.c index fd28931cb4a9..19e6d7df7f65 100644 --- a/sys/security/mac/mac_syscalls.c +++ b/sys/security/mac/mac_syscalls.c @@ -1069,10 +1069,11 @@ __mac_set_file(struct thread *td, struct __mac_set_file_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0); @@ -1122,10 +1123,11 @@ __mac_set_link(struct thread *td, struct __mac_set_link_args *uap) vfslocked = NDHASGIANT(&nd); if (error == 0) { error = vn_start_write(nd.ni_vp, &mp, V_WAIT | PCATCH); - if (error == 0) + if (error == 0) { error = vn_setlabel(nd.ni_vp, intlabel, td->td_ucred); - vn_finished_write(mp); + vn_finished_write(mp); + } } NDFREE(&nd, 0);