diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-03-13 01:33:21 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-03-13 01:33:21 +0100 |
commit | 480c93df5b99699390f93a7024c9f60d09da0e96 (patch) | |
tree | b93b6c8c71c5f2e716dd05b126e01ef4e20ff0af /fs/xfs/xfs_log_recover.c | |
parent | Merge branch 'tip/tracing/ftrace' of git://git.kernel.org/pub/scm/linux/kerne... (diff) | |
parent | locking: rename trace_softirq_[enter|exit] => lockdep_softirq_[enter|exit] (diff) | |
download | linux-480c93df5b99699390f93a7024c9f60d09da0e96.tar.xz linux-480c93df5b99699390f93a7024c9f60d09da0e96.zip |
Merge branch 'core/locking' into tracing/ftrace
Diffstat (limited to 'fs/xfs/xfs_log_recover.c')
-rw-r--r-- | fs/xfs/xfs_log_recover.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index b1047de2fffd..61af610d79b3 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -1455,10 +1455,19 @@ xlog_recover_add_to_trans( item = item->ri_prev; if (item->ri_total == 0) { /* first region to be added */ - item->ri_total = in_f->ilf_size; - ASSERT(item->ri_total <= XLOG_MAX_REGIONS_IN_ITEM); - item->ri_buf = kmem_zalloc((item->ri_total * - sizeof(xfs_log_iovec_t)), KM_SLEEP); + if (in_f->ilf_size == 0 || + in_f->ilf_size > XLOG_MAX_REGIONS_IN_ITEM) { + xlog_warn( + "XFS: bad number of regions (%d) in inode log format", + in_f->ilf_size); + ASSERT(0); + return XFS_ERROR(EIO); + } + + item->ri_total = in_f->ilf_size; + item->ri_buf = + kmem_zalloc(item->ri_total * sizeof(xfs_log_iovec_t), + KM_SLEEP); } ASSERT(item->ri_total > item->ri_cnt); /* Description region is ri_buf[0] */ |