When rsv is the right hand side of goal, we should return NULL, because now rsv's prev is NULL, or we return rsv. Signed-off-by: Peter Pan(潘卫平) <wppan@xxxxxxxxxxxxxxxxx> --- fs/ext2/balloc.c | 6 +----- fs/ext3/balloc.c | 6 +----- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c index 3cf038c..023990f 100644 --- a/fs/ext2/balloc.c +++ b/fs/ext2/balloc.c @@ -323,11 +323,7 @@ search_reserve_window(struct rb_root *root, ext2_fsblk_t goal) * side of the interval containing the goal. If it's the RHS, * we need to back up one. */ - if (rsv->rsv_start > goal) { - n = rb_prev(&rsv->rsv_node); - rsv = rb_entry(n, struct ext2_reserve_window_node, rsv_node); - } - return rsv; + return (rsv->rsv_start < goal) ? rsv : NULL; } /* diff --git a/fs/ext3/balloc.c b/fs/ext3/balloc.c index a177122..bfa62e9 100644 --- a/fs/ext3/balloc.c +++ b/fs/ext3/balloc.c @@ -310,11 +310,7 @@ search_reserve_window(struct rb_root *root, ext3_fsblk_t goal) * side of the interval containing the goal. If it's the RHS, * we need to back up one. */ - if (rsv->rsv_start > goal) { - n = rb_prev(&rsv->rsv_node); - rsv = rb_entry(n, struct ext3_reserve_window_node, rsv_node); - } - return rsv; + return (rsv->rsv_start < goal) ? rsv : NULL; } /** -- 1.6.6 -- Peter Pan(潘卫平) Red Flag Software Co.,Ltd -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html