diff options
-rw-r--r-- | fs/cifs/cifsglob.h | 4 | ||||
-rw-r--r-- | fs/cifs/dir.c | 2 | ||||
-rw-r--r-- | fs/cifs/file.c | 2 |
3 files changed, 5 insertions, 3 deletions
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index 9a7527dc977e..c19419a38f62 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
@@ -365,8 +365,10 @@ static inline void cifsFileInfo_get(struct cifsFileInfo *cifs_file) | |||
365 | /* Release a reference on the file private data */ | 365 | /* Release a reference on the file private data */ |
366 | static inline void cifsFileInfo_put(struct cifsFileInfo *cifs_file) | 366 | static inline void cifsFileInfo_put(struct cifsFileInfo *cifs_file) |
367 | { | 367 | { |
368 | if (atomic_dec_and_test(&cifs_file->count)) | 368 | if (atomic_dec_and_test(&cifs_file->count)) { |
369 | iput(cifs_file->pInode); | ||
369 | kfree(cifs_file); | 370 | kfree(cifs_file); |
371 | } | ||
370 | } | 372 | } |
371 | 373 | ||
372 | /* | 374 | /* |
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c index 44f735aa2e3f..36435502b5e8 100644 --- a/fs/cifs/dir.c +++ b/fs/cifs/dir.c | |||
@@ -147,7 +147,7 @@ cifs_fill_fileinfo(struct inode *newinode, __u16 fileHandle, | |||
147 | 147 | ||
148 | pCifsFile->netfid = fileHandle; | 148 | pCifsFile->netfid = fileHandle; |
149 | pCifsFile->pid = current->tgid; | 149 | pCifsFile->pid = current->tgid; |
150 | pCifsFile->pInode = newinode; | 150 | pCifsFile->pInode = igrab(newinode); |
151 | pCifsFile->invalidHandle = false; | 151 | pCifsFile->invalidHandle = false; |
152 | pCifsFile->closePend = false; | 152 | pCifsFile->closePend = false; |
153 | mutex_init(&pCifsFile->fh_mutex); | 153 | mutex_init(&pCifsFile->fh_mutex); |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 225d127c960e..b976cea24102 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -50,7 +50,7 @@ static inline struct cifsFileInfo *cifs_init_private( | |||
50 | mutex_init(&private_data->lock_mutex); | 50 | mutex_init(&private_data->lock_mutex); |
51 | INIT_LIST_HEAD(&private_data->llist); | 51 | INIT_LIST_HEAD(&private_data->llist); |
52 | private_data->pfile = file; /* needed for writepage */ | 52 | private_data->pfile = file; /* needed for writepage */ |
53 | private_data->pInode = inode; | 53 | private_data->pInode = igrab(inode); |
54 | private_data->invalidHandle = false; | 54 | private_data->invalidHandle = false; |
55 | private_data->closePend = false; | 55 | private_data->closePend = false; |
56 | /* Initialize reference count to one. The private data is | 56 | /* Initialize reference count to one. The private data is |