It's possible that this struct will outlive the filp to which it is
attached. If it does and it needs to do some work on the inode, then
it'll need a reference.
Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Steve French <sfrench@us.ibm.com>
 /* Release a reference on the file private data */
 static inline void cifsFileInfo_put(struct cifsFileInfo *cifs_file)
 {
-       if (atomic_dec_and_test(&cifs_file->count))
+       if (atomic_dec_and_test(&cifs_file->count)) {
+               iput(cifs_file->pInode);
                kfree(cifs_file);
+       }
 }
 
 /*
 
 
        pCifsFile->netfid = fileHandle;
        pCifsFile->pid = current->tgid;
-       pCifsFile->pInode = newinode;
+       pCifsFile->pInode = igrab(newinode);
        pCifsFile->invalidHandle = false;
        pCifsFile->closePend = false;
        mutex_init(&pCifsFile->fh_mutex);
 
        mutex_init(&private_data->lock_mutex);
        INIT_LIST_HEAD(&private_data->llist);
        private_data->pfile = file; /* needed for writepage */
-       private_data->pInode = inode;
+       private_data->pInode = igrab(inode);
        private_data->invalidHandle = false;
        private_data->closePend = false;
        /* Initialize reference count to one.  The private data is