Btrfs: fix crash regarding to ulist_add_merge
authorLiu Bo <bo.li.liu@oracle.com>
Fri, 28 Jun 2013 04:37:45 +0000 (12:37 +0800)
committerJosef Bacik <jbacik@fusionio.com>
Tue, 2 Jul 2013 15:50:59 +0000 (11:50 -0400)
commit35f0399db6658f465b00893bdd13b992a0acfef0
tree85d5f041076bb95561f904dba8ac3dc56c19fe42
parentedd1400be9f983f521c7397740d810fa210ee52f
Btrfs: fix crash regarding to ulist_add_merge

Several users reported this crash of NULL pointer or general protection,
the story is that we add a rbtree for speedup ulist iteration, and we
use krealloc() to address ulist growth, and krealloc() use memcpy to copy
old data to new memory area, so it's OK for an array as it doesn't use
pointers while it's not OK for a rbtree as it uses pointers.

So krealloc() will mess up our rbtree and it ends up with crash.

Reviewed-by: Wang Shilong <wangsl-fnst@cn.fujitsu.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
fs/btrfs/ulist.c