diff options
Diffstat (limited to 'fs/cifs')
-rw-r--r-- | fs/cifs/cifsfs.c | 2 | ||||
-rw-r--r-- | fs/cifs/connect.c | 2 | ||||
-rw-r--r-- | fs/cifs/inode.c | 5 |
3 files changed, 7 insertions, 2 deletions
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 91ba32861c8..a6fbea57c4b 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c @@ -700,7 +700,7 @@ const struct file_operations cifs_dir_ops = { }; static void -cifs_init_once(void *inode, struct kmem_cache *cachep, unsigned long flags) +cifs_init_once(struct kmem_cache *cachep, void *inode) { struct cifsInodeInfo *cifsi = inode; diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index 676bbf2bb56..19ee11f7f35 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c @@ -351,7 +351,7 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server) current->flags |= PF_MEMALLOC; server->tsk = current; /* save process info to wake at shutdown */ - cFYI(1, ("Demultiplex PID: %d", current->pid)); + cFYI(1, ("Demultiplex PID: %d", task_pid_nr(current))); write_lock(&GlobalSMBSeslock); atomic_inc(&tcpSesAllocCount); length = tcpSesAllocCount.counter; diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index cc119b278e5..5e8b388be3b 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -1570,6 +1570,11 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) } time_buf.Attributes = 0; + + /* skip mode change if it's just for clearing setuid/setgid */ + if (attrs->ia_valid & (ATTR_KILL_SUID|ATTR_KILL_SGID)) + attrs->ia_valid &= ~ATTR_MODE; + if (attrs->ia_valid & ATTR_MODE) { cFYI(1, ("Mode changed to 0x%x", attrs->ia_mode)); mode = attrs->ia_mode; |