Skip to content

Commit

Permalink
AFS: Don't pass error value to page_cache_release() in error handling
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: David Howells <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
dhowells authored and torvalds committed Apr 21, 2010
1 parent 05ce7bf commit 083fd8b
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions fs/afs/mntpt.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,9 +138,9 @@ static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt)
{
struct afs_super_info *super;
struct vfsmount *mnt;
struct page *page = NULL;
struct page *page;
size_t size;
char *buf, *devname = NULL, *options = NULL;
char *buf, *devname, *options;
int ret;

_enter("{%s}", mntpt->d_name.name);
Expand All @@ -150,22 +150,22 @@ static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt)
ret = -EINVAL;
size = mntpt->d_inode->i_size;
if (size > PAGE_SIZE - 1)
goto error;
goto error_no_devname;

ret = -ENOMEM;
devname = (char *) get_zeroed_page(GFP_KERNEL);
if (!devname)
goto error;
goto error_no_devname;

options = (char *) get_zeroed_page(GFP_KERNEL);
if (!options)
goto error;
goto error_no_options;

/* read the contents of the AFS special symlink */
page = read_mapping_page(mntpt->d_inode->i_mapping, 0, NULL);
if (IS_ERR(page)) {
ret = PTR_ERR(page);
goto error;
goto error_no_page;
}

ret = -EIO;
Expand Down Expand Up @@ -196,12 +196,12 @@ static struct vfsmount *afs_mntpt_do_automount(struct dentry *mntpt)
return mnt;

error:
if (page)
page_cache_release(page);
if (devname)
free_page((unsigned long) devname);
if (options)
free_page((unsigned long) options);
page_cache_release(page);
error_no_page:
free_page((unsigned long) options);
error_no_options:
free_page((unsigned long) devname);
error_no_devname:
_leave(" = %d", ret);
return ERR_PTR(ret);
}
Expand Down

0 comments on commit 083fd8b

Please sign in to comment.