From: Andrew Morton 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 for identifying this. Signed-off-by: Andrew Morton --- fs/jbd/transaction.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff -puN fs/jbd/transaction.c~jbd-avoid-kfree-null fs/jbd/transaction.c --- devel/fs/jbd/transaction.c~jbd-avoid-kfree-null 2006-04-23 14:03:00.000000000 -0700 +++ devel-akpm/fs/jbd/transaction.c 2006-04-23 14:04:26.000000000 -0700 @@ -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; } _