summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/qgroup.c
diff options
context:
space:
mode:
authorTsutomu Itoh2012-09-06 08:18:10 +0200
committerChris Mason2012-10-01 21:19:14 +0200
commit3d6b5c3b5c0b970ce8a9d3bac6854f5c0ce0295a (patch)
treeaadfc9ad81660e5ef11121a4529213e8cd1062de /fs/btrfs/qgroup.c
parentBtrfs: fix error handling in delete_block_group_cache() (diff)
downloadkernel-qcow2-linux-3d6b5c3b5c0b970ce8a9d3bac6854f5c0ce0295a.tar.gz
kernel-qcow2-linux-3d6b5c3b5c0b970ce8a9d3bac6854f5c0ce0295a.tar.xz
kernel-qcow2-linux-3d6b5c3b5c0b970ce8a9d3bac6854f5c0ce0295a.zip
Btrfs: check return value of ulist_alloc() properly
ulist_alloc() has the possibility of returning NULL. So, it is necessary to check the return value. Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Diffstat (limited to 'fs/btrfs/qgroup.c')
-rw-r--r--fs/btrfs/qgroup.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c
index 9b707ba5c6c4..5039686df6ae 100644
--- a/fs/btrfs/qgroup.c
+++ b/fs/btrfs/qgroup.c
@@ -1469,6 +1469,10 @@ int btrfs_qgroup_reserve(struct btrfs_root *root, u64 num_bytes)
* be exceeded
*/
ulist = ulist_alloc(GFP_ATOMIC);
+ if (!ulist) {
+ ret = -ENOMEM;
+ goto out;
+ }
ulist_add(ulist, qgroup->qgroupid, (uintptr_t)qgroup, GFP_ATOMIC);
ULIST_ITER_INIT(&uiter);
while ((unode = ulist_next(ulist, &uiter))) {
@@ -1541,6 +1545,10 @@ void btrfs_qgroup_free(struct btrfs_root *root, u64 num_bytes)
goto out;
ulist = ulist_alloc(GFP_ATOMIC);
+ if (!ulist) {
+ btrfs_std_error(fs_info, -ENOMEM);
+ goto out;
+ }
ulist_add(ulist, qgroup->qgroupid, (uintptr_t)qgroup, GFP_ATOMIC);
ULIST_ITER_INIT(&uiter);
while ((unode = ulist_next(ulist, &uiter))) {