Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

jbd2: fix compile warning when using JBUFFER_TRACE

The jh pointer may be used uninitialized in the two cases below and the
compiler complain about it when enabling JBUFFER_TRACE macro, fix them.

In file included from fs/jbd2/transaction.c:19:0:
fs/jbd2/transaction.c: In function ‘jbd2_journal_get_undo_access’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ is used uninitialized in this function [-Wuninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__, jh->b_jcount);} while (0)
^
fs/jbd2/transaction.c:1219:23: note: ‘jh’ was declared here
struct journal_head *jh;
^
In file included from fs/jbd2/transaction.c:19:0:
fs/jbd2/transaction.c: In function ‘jbd2_journal_dirty_metadata’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ may be used uninitialized in this function [-Wmaybe-uninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__, jh->b_jcount);} while (0)
^
fs/jbd2/transaction.c:1332:23: note: ‘jh’ was declared here
struct journal_head *jh;
^

Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: stable@vger.kernel.org
Reviewed-by: Jan Kara <jack@suse.cz>

authored by

zhangyi (F) and committed by
Theodore Ts'o
01215d3e 7159a986

+8 -8
+8 -8
fs/jbd2/transaction.c
··· 1252 1252 struct journal_head *jh; 1253 1253 char *committed_data = NULL; 1254 1254 1255 - JBUFFER_TRACE(jh, "entry"); 1256 1255 if (jbd2_write_access_granted(handle, bh, true)) 1257 1256 return 0; 1258 1257 1259 1258 jh = jbd2_journal_add_journal_head(bh); 1259 + JBUFFER_TRACE(jh, "entry"); 1260 + 1260 1261 /* 1261 1262 * Do this first --- it can drop the journal lock, so we want to 1262 1263 * make sure that obtaining the committed_data is done ··· 1368 1367 1369 1368 if (is_handle_aborted(handle)) 1370 1369 return -EROFS; 1371 - if (!buffer_jbd(bh)) { 1372 - ret = -EUCLEAN; 1373 - goto out; 1374 - } 1370 + if (!buffer_jbd(bh)) 1371 + return -EUCLEAN; 1372 + 1375 1373 /* 1376 1374 * We don't grab jh reference here since the buffer must be part 1377 1375 * of the running transaction. 1378 1376 */ 1379 1377 jh = bh2jh(bh); 1378 + jbd_debug(5, "journal_head %p\n", jh); 1379 + JBUFFER_TRACE(jh, "entry"); 1380 + 1380 1381 /* 1381 1382 * This and the following assertions are unreliable since we may see jh 1382 1383 * in inconsistent state unless we grab bh_state lock. But this is ··· 1412 1409 } 1413 1410 1414 1411 journal = transaction->t_journal; 1415 - jbd_debug(5, "journal_head %p\n", jh); 1416 - JBUFFER_TRACE(jh, "entry"); 1417 - 1418 1412 jbd_lock_bh_state(bh); 1419 1413 1420 1414 if (jh->b_modified == 0) {