diff options
author | Theodore Ts'o <tytso@mit.edu> | 2014-09-03 09:33:00 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2014-09-03 09:37:30 -0400 |
commit | a9cfcd63e8d206ce4235c355d857c4fbdf0f4587 (patch) | |
tree | f373a6fdd3347086b50c93ed16d164cb039f8dc1 /fs | |
parent | d4f03186c8986ffde34d06fe74a99aab08f7ee0b (diff) |
ext4: avoid trying to kfree an ERR_PTR pointer
Thanks to Dan Carpenter for extending smatch to find bugs like this.
(This was found using a development version of smatch.)
Fixes: 36de928641ee48b2078d3fe9514242aaa2f92013
Reported-by: Dan Carpenter <dan.carpenter@oracle.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ext4/namei.c | 2 | ||||
-rw-r--r-- | fs/ext4/resize.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 90a3cdca3f88..603e4ebbd0ac 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c | |||
@@ -3240,6 +3240,7 @@ static int ext4_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
3240 | &new.de, &new.inlined); | 3240 | &new.de, &new.inlined); |
3241 | if (IS_ERR(new.bh)) { | 3241 | if (IS_ERR(new.bh)) { |
3242 | retval = PTR_ERR(new.bh); | 3242 | retval = PTR_ERR(new.bh); |
3243 | new.bh = NULL; | ||
3243 | goto end_rename; | 3244 | goto end_rename; |
3244 | } | 3245 | } |
3245 | if (new.bh) { | 3246 | if (new.bh) { |
@@ -3386,6 +3387,7 @@ static int ext4_cross_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
3386 | &new.de, &new.inlined); | 3387 | &new.de, &new.inlined); |
3387 | if (IS_ERR(new.bh)) { | 3388 | if (IS_ERR(new.bh)) { |
3388 | retval = PTR_ERR(new.bh); | 3389 | retval = PTR_ERR(new.bh); |
3390 | new.bh = NULL; | ||
3389 | goto end_rename; | 3391 | goto end_rename; |
3390 | } | 3392 | } |
3391 | 3393 | ||
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index bb0e80f03e2e..1e43b905ff98 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c | |||
@@ -575,6 +575,7 @@ handle_bb: | |||
575 | bh = bclean(handle, sb, block); | 575 | bh = bclean(handle, sb, block); |
576 | if (IS_ERR(bh)) { | 576 | if (IS_ERR(bh)) { |
577 | err = PTR_ERR(bh); | 577 | err = PTR_ERR(bh); |
578 | bh = NULL; | ||
578 | goto out; | 579 | goto out; |
579 | } | 580 | } |
580 | overhead = ext4_group_overhead_blocks(sb, group); | 581 | overhead = ext4_group_overhead_blocks(sb, group); |
@@ -603,6 +604,7 @@ handle_ib: | |||
603 | bh = bclean(handle, sb, block); | 604 | bh = bclean(handle, sb, block); |
604 | if (IS_ERR(bh)) { | 605 | if (IS_ERR(bh)) { |
605 | err = PTR_ERR(bh); | 606 | err = PTR_ERR(bh); |
607 | bh = NULL; | ||
606 | goto out; | 608 | goto out; |
607 | } | 609 | } |
608 | 610 | ||