From 8eb1b1a5dd0ace9a1e487eba722c18483f5ea7fd Mon Sep 17 00:00:00 2001 From: Duane Griffin Date: Fri, 25 Jul 2008 01:46:31 -0700 Subject: [PATCH] --- yaml --- r: 105855 b: refs/heads/master c: 275c0a8f1253a7542ad9726956c918d8a1f694c4 h: refs/heads/master i: 105853: 6d72116863b0a362c00c00c0374d9dd7bb0d4675 105851: e6b30da043c4b904a558c23f87b1b4e606674708 105847: f1ed8fb5c7978f378e22307c7275112b76eb029e 105839: 6f4f62655f1a7cf3634aa9e1de0acaaad7a6f195 105823: 5b14f455f0bbe6a24bcaf1b12bafc8ef6a622b54 105791: 899a257487d0fba553f139045c1859cfcb23921d 105727: bd744c028a94e53ba633f5b274e7d1a79af5f0f9 v: v3 --- [refs] | 2 +- trunk/fs/ext3/namei.c | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index 475996f60542..36d64b9baa92 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cbe5f466f6995e10a10c7ae66d6dc8608f08a6b8 +refs/heads/master: 275c0a8f1253a7542ad9726956c918d8a1f694c4 diff --git a/trunk/fs/ext3/namei.c b/trunk/fs/ext3/namei.c index d282ea870081..de13e919cd81 100644 --- a/trunk/fs/ext3/namei.c +++ b/trunk/fs/ext3/namei.c @@ -991,19 +991,21 @@ static struct buffer_head * ext3_dx_find_entry(struct dentry *dentry, de = (struct ext3_dir_entry_2 *) bh->b_data; top = (struct ext3_dir_entry_2 *) ((char *) de + sb->s_blocksize - EXT3_DIR_REC_LEN(0)); - for (; de < top; de = ext3_next_entry(de)) - if (ext3_match (namelen, name, de)) { - if (!ext3_check_dir_entry("ext3_find_entry", - dir, de, bh, - (block<b_data))) { - brelse (bh); + for (; de < top; de = ext3_next_entry(de)) { + int off = (block << EXT3_BLOCK_SIZE_BITS(sb)) + + ((char *) de - bh->b_data); + + if (!ext3_check_dir_entry(__func__, dir, de, bh, off)) { + brelse(bh); *err = ERR_BAD_DX_DIR; goto errout; } - *res_dir = de; - dx_release (frames); - return bh; + + if (ext3_match(namelen, name, de)) { + *res_dir = de; + dx_release(frames); + return bh; + } } brelse (bh); /* Check to see if we should continue to search */