Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3d6b5c3b authored by Tsutomu Itoh's avatar Tsutomu Itoh Committed by Chris Mason
Browse files

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: default avatarTsutomu Itoh <t-itoh@jp.fujitsu.com>
parent f54fb859
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -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))) {