From: Linus Torvalds Date: Wed, 9 May 2007 03:10:00 +0000 (-0700) Subject: Remove suid/sgid bits on [f]truncate() X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=7b82dc0e64e93f430182f36b46b79fcee87d3532;p=openwrt%2Fstaging%2Fblogic.git Remove suid/sgid bits on [f]truncate() .. to match what we do on write(). This way, people who write to files by using [f]truncate + writable mmap have the same semantics as if they were using the write() family of system calls. Signed-off-by: Linus Torvalds --- diff --git a/fs/open.c b/fs/open.c index ca9981c4a658..0d515d161974 100644 --- a/fs/open.c +++ b/fs/open.c @@ -210,6 +210,9 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs, newattrs.ia_valid |= ATTR_FILE; } + /* Remove suid/sgid on truncate too */ + newattrs.ia_valid |= should_remove_suid(dentry); + mutex_lock(&dentry->d_inode->i_mutex); err = notify_change(dentry, &newattrs); mutex_unlock(&dentry->d_inode->i_mutex);