if (committed_data) kfree(committed_data); 
kfree(committed_data); 
int journal_get_undo_access(handle_t *handle, struct buffer_head *bh){	int err;	struct journal_head *jh = journal_add_journal_head(bh);	char *committed_data = NULL;	JBUFFER_TRACE(jh, "entry");	/*	 * Do this first --- it can drop the journal lock, so we want to	 * make sure that obtaining the committed_data is done	 * atomically wrt. completion of any outstanding commits.	 */	err = do_get_write_access(handle, jh, 1);	if (err)		goto out;repeat:	if (!jh->b_committed_data) {		committed_data = jbd_kmalloc(jh2bh(jh)->b_size, GFP_NOFS);		if (!committed_data) {			printk(KERN_EMERG "%s: No memory for committed data\n",				__FUNCTION__);			err = -ENOMEM;			goto out;		}	}	jbd_lock_bh_state(bh);	if (!jh->b_committed_data) {		/* Copy out the current buffer contents into the		 * preserved, committed copy. */		JBUFFER_TRACE(jh, "generate b_committed data");		if (!committed_data) {			jbd_unlock_bh_state(bh);			goto repeat;		}		jh->b_committed_data = committed_data;		committed_data = NULL;		memcpy(jh->b_committed_data, bh->b_data, bh->b_size);	}	jbd_unlock_bh_state(bh);out:	journal_put_journal_head(jh);	if (committed_data)		kfree(committed_data);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f99d49adf527fa6f7a9c42257fa76bca6b8df1e3/transaction.c/clean/fs/jbd/transaction.c