Commit ff8da37d authored by Zhen Lei's avatar Zhen Lei Committed by Dan Williams
Browse files

device-dax: Avoid an unnecessary check in alloc_dev_dax_range()



Swap the calling sequence of krealloc() and __request_region(), call the
latter first. In this way, the value of dev_dax->nr_range does not need to
be considered when __request_region() failed.

Signed-off-by: default avatarZhen Lei <thunder.leizhen@huawei.com>
Link: https://lore.kernel.org/r/20201219081840.1149-2-thunder.leizhen@huawei.com


Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent 6268d7da
Loading
Loading
Loading
Loading
+6 −14
Original line number Diff line number Diff line
@@ -772,22 +772,14 @@ static int alloc_dev_dax_range(struct dev_dax *dev_dax, u64 start,
		return 0;
	}

	ranges = krealloc(dev_dax->ranges, sizeof(*ranges)
			* (dev_dax->nr_range + 1), GFP_KERNEL);
	if (!ranges)
	alloc = __request_region(res, start, size, dev_name(dev), 0);
	if (!alloc)
		return -ENOMEM;

	alloc = __request_region(res, start, size, dev_name(dev), 0);
	if (!alloc) {
		/*
		 * If this was an empty set of ranges nothing else
		 * will release @ranges, so do it now.
		 */
		if (!dev_dax->nr_range) {
			kfree(ranges);
			ranges = NULL;
		}
		dev_dax->ranges = ranges;
	ranges = krealloc(dev_dax->ranges, sizeof(*ranges)
			* (dev_dax->nr_range + 1), GFP_KERNEL);
	if (!ranges) {
		__release_region(res, alloc->start, resource_size(alloc));
		return -ENOMEM;
	}