Commit 083fd8b21a13742b37ab347089c73f895a896672

Authored by David Howells
Committed by Linus Torvalds
1 parent 05ce7bfe54

AFS: Don't pass error value to page_cache_release() in error handling

In the error handling in afs_mntpt_do_automount(), we pass an error
pointer to page_cache_release() if read_mapping_page() failed.  Instead,
we should extend the gotos around the error handling we don't need.

Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 12 additions and 12 deletions Side-by-side Diff

... ... @@ -138,9 +138,9 @@
138 138 {
139 139 struct afs_super_info *super;
140 140 struct vfsmount *mnt;
141   - struct page *page = NULL;
  141 + struct page *page;
142 142 size_t size;
143   - char *buf, *devname = NULL, *options = NULL;
  143 + char *buf, *devname, *options;
144 144 int ret;
145 145  
146 146 _enter("{%s}", mntpt->d_name.name);
147 147  
148 148  
149 149  
... ... @@ -150,22 +150,22 @@
150 150 ret = -EINVAL;
151 151 size = mntpt->d_inode->i_size;
152 152 if (size > PAGE_SIZE - 1)
153   - goto error;
  153 + goto error_no_devname;
154 154  
155 155 ret = -ENOMEM;
156 156 devname = (char *) get_zeroed_page(GFP_KERNEL);
157 157 if (!devname)
158   - goto error;
  158 + goto error_no_devname;
159 159  
160 160 options = (char *) get_zeroed_page(GFP_KERNEL);
161 161 if (!options)
162   - goto error;
  162 + goto error_no_options;
163 163  
164 164 /* read the contents of the AFS special symlink */
165 165 page = read_mapping_page(mntpt->d_inode->i_mapping, 0, NULL);
166 166 if (IS_ERR(page)) {
167 167 ret = PTR_ERR(page);
168   - goto error;
  168 + goto error_no_page;
169 169 }
170 170  
171 171 ret = -EIO;
... ... @@ -196,12 +196,12 @@
196 196 return mnt;
197 197  
198 198 error:
199   - if (page)
200   - page_cache_release(page);
201   - if (devname)
202   - free_page((unsigned long) devname);
203   - if (options)
204   - free_page((unsigned long) options);
  199 + page_cache_release(page);
  200 +error_no_page:
  201 + free_page((unsigned long) options);
  202 +error_no_options:
  203 + free_page((unsigned long) devname);
  204 +error_no_devname:
205 205 _leave(" = %d", ret);
206 206 return ERR_PTR(ret);
207 207 }