From 694b21cf7bbb738cc2e6a4936586e4d6231e86bd Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Tue, 22 Jun 2004 04:29:07 +0000 Subject: [PATCH] Acquire Giant in link() so that we can mark it as MSTD in syscalls.master. Don't want to do it in kern_link() since the Linux emulation code calls kern_link() after performing other actions requiring Giant. --- sys/kern/vfs_extattr.c | 6 +++++- sys/kern/vfs_syscalls.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index 10ff13f69ad9..38b21e407562 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -1338,8 +1338,12 @@ link(td, uap) char *link; } */ *uap; { + int error; - return (kern_link(td, uap->path, uap->link, UIO_USERSPACE)); + mtx_lock(&Giant); + error = kern_link(td, uap->path, uap->link, UIO_USERSPACE); + mtx_unlock(&Giant); + return (error); } SYSCTL_DECL(_security_bsd); diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 10ff13f69ad9..38b21e407562 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1338,8 +1338,12 @@ link(td, uap) char *link; } */ *uap; { + int error; - return (kern_link(td, uap->path, uap->link, UIO_USERSPACE)); + mtx_lock(&Giant); + error = kern_link(td, uap->path, uap->link, UIO_USERSPACE); + mtx_unlock(&Giant); + return (error); } SYSCTL_DECL(_security_bsd);