diff options
author | Andrew Morton <akpm@osdl.org> | 2006-06-23 11:05:31 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-23 16:43:05 +0200 |
commit | 304c4c841a31c780a45d65e389b07706babf5d36 (patch) | |
tree | d5fed361a127e46c1a99d72ef907e1c6b03a1abe /fs/jbd | |
parent | [PATCH] x86/powerpc make hardirq_ctx and softirq_ctx __read_mostly (diff) | |
download | linux-304c4c841a31c780a45d65e389b07706babf5d36.tar.xz linux-304c4c841a31c780a45d65e389b07706babf5d36.zip |
[PATCH] jbd: avoid kfree(NULL)
There are a couple of places where JBD has to check to see whether an unneeded
memory allocation was performed. Usually it _was_ needed, so we end up
calling kfree(NULL). We can micro-optimise that by checking the pointer
before calling kfree().
Thanks to Steven Rostedt <rostedt@goodmis.org> for identifying this.
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/jbd')
-rw-r--r-- | fs/jbd/transaction.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c index ff75afe9b185..508b2ea91f43 100644 --- a/fs/jbd/transaction.c +++ b/fs/jbd/transaction.c @@ -227,7 +227,8 @@ repeat_locked: spin_unlock(&transaction->t_handle_lock); spin_unlock(&journal->j_state_lock); out: - kfree(new_transaction); + if (unlikely(new_transaction)) /* It's usually NULL */ + kfree(new_transaction); return ret; } @@ -724,7 +725,8 @@ done: journal_cancel_revoke(handle, jh); out: - kfree(frozen_buffer); + if (unlikely(frozen_buffer)) /* It's usually NULL */ + kfree(frozen_buffer); JBUFFER_TRACE(jh, "exit"); return error; @@ -903,7 +905,8 @@ repeat: jbd_unlock_bh_state(bh); out: journal_put_journal_head(jh); - kfree(committed_data); + if (unlikely(committed_data)) + kfree(committed_data); return err; } |