| From f588c960fcaa6fa8bf82930bb819c9aca4eb9347 Mon Sep 17 00:00:00 2001 |
| From: Seth Forshee <seth.forshee@canonical.com> |
| Date: Thu, 15 Sep 2011 10:48:27 -0400 |
| Subject: hfsplus: Fix kfree of wrong pointers in hfsplus_fill_super() error path |
| |
| From: Seth Forshee <seth.forshee@canonical.com> |
| |
| commit f588c960fcaa6fa8bf82930bb819c9aca4eb9347 upstream. |
| |
| Commit 6596528e391a ("hfsplus: ensure bio requests are not smaller than |
| the hardware sectors") changed the pointers used for volume header |
| allocations but failed to free the correct pointers in the error path |
| path of hfsplus_fill_super() and hfsplus_read_wrapper. |
| |
| The second hunk came from a separate patch by Pavel Ivanov. |
| |
| Reported-by: Pavel Ivanov <paivanof@gmail.com> |
| Signed-off-by: Seth Forshee <seth.forshee@canonical.com> |
| Signed-off-by: Christoph Hellwig <hch@tuxera.com> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| fs/hfsplus/super.c | 4 ++-- |
| fs/hfsplus/wrapper.c | 4 ++-- |
| 2 files changed, 4 insertions(+), 4 deletions(-) |
| |
| --- a/fs/hfsplus/super.c |
| +++ b/fs/hfsplus/super.c |
| @@ -508,8 +508,8 @@ out_close_cat_tree: |
| out_close_ext_tree: |
| hfs_btree_close(sbi->ext_tree); |
| out_free_vhdr: |
| - kfree(sbi->s_vhdr); |
| - kfree(sbi->s_backup_vhdr); |
| + kfree(sbi->s_vhdr_buf); |
| + kfree(sbi->s_backup_vhdr_buf); |
| out_unload_nls: |
| unload_nls(sbi->nls); |
| unload_nls(nls); |
| --- a/fs/hfsplus/wrapper.c |
| +++ b/fs/hfsplus/wrapper.c |
| @@ -275,9 +275,9 @@ reread: |
| return 0; |
| |
| out_free_backup_vhdr: |
| - kfree(sbi->s_backup_vhdr); |
| + kfree(sbi->s_backup_vhdr_buf); |
| out_free_vhdr: |
| - kfree(sbi->s_vhdr); |
| + kfree(sbi->s_vhdr_buf); |
| out: |
| return error; |
| } |