]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/cifs/dir.c
cifs: have find_readable/writable_file filter by fsuid
[mv-sheeva.git] / fs / cifs / dir.c
index bb3ea06ca6f4e2e39451aea77ec05010dba6889c..e249b561ce8f861d92e1f6dd46b244c50e709b51 100644 (file)
@@ -132,7 +132,7 @@ cifs_bp_rename_retry:
 
 struct cifsFileInfo *
 cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle, struct file *file,
-                 struct vfsmount *mnt, struct cifsTconInfo *tcon,
+                 struct vfsmount *mnt, struct tcon_link *tlink,
                  unsigned int oflags, __u32 oplock)
 {
        struct cifsFileInfo *pCifsFile;
@@ -144,12 +144,13 @@ cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle, struct file *file,
 
        pCifsFile->netfid = fileHandle;
        pCifsFile->pid = current->tgid;
+       pCifsFile->uid = current_fsuid();
        pCifsFile->pInode = igrab(newinode);
        pCifsFile->mnt = mnt;
        pCifsFile->pfile = file;
        pCifsFile->invalidHandle = false;
        pCifsFile->closePend = false;
-       pCifsFile->tcon = tcon;
+       pCifsFile->tlink = cifs_get_tlink(tlink);
        mutex_init(&pCifsFile->fh_mutex);
        mutex_init(&pCifsFile->lock_mutex);
        INIT_LIST_HEAD(&pCifsFile->llist);
@@ -157,7 +158,7 @@ cifs_new_fileinfo(struct inode *newinode, __u16 fileHandle, struct file *file,
        INIT_WORK(&pCifsFile->oplock_break, cifs_oplock_break);
 
        write_lock(&GlobalSMBSeslock);
-       list_add(&pCifsFile->tlist, &tcon->openFileList);
+       list_add(&pCifsFile->tlist, &(tlink_tcon(tlink)->openFileList));
        pCifsInode = CIFS_I(newinode);
        if (pCifsInode) {
                /* if readable file instance put first in list*/
@@ -483,7 +484,7 @@ cifs_create_set_dentry:
                }
 
                pfile_info = cifs_new_fileinfo(newinode, fileHandle, filp,
-                                              nd->path.mnt, tcon, oflags,
+                                               nd->path.mnt, tlink, oflags,
                                                oplock);
                if (pfile_info == NULL) {
                        fput(filp);
@@ -758,7 +759,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry,
                        }
 
                        cfile = cifs_new_fileinfo(newInode, fileHandle, filp,
-                                                 nd->path.mnt, pTcon,
+                                                 nd->path.mnt, tlink,
                                                  nd->intent.open.flags,
                                                  oplock);
                        if (cfile == NULL) {