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

Commit 47ac54e8 authored by Xiongwei Song's avatar Xiongwei Song Committed by Greg Kroah-Hartman
Browse files

staging: android: check for error from register_shrinker in ion_heap_init_shrinker



The function register_shrinker in ion_heap_init_shrinker may return an
error, check it out. Meanwhile, ion_heap_init_shrinker has to a return
value.

Signed-off-by: default avatarXiongwei Song <sxwjean@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a941f70e
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -529,6 +529,7 @@ void ion_device_add_heap(struct ion_heap *heap)
{
	struct dentry *debug_file;
	struct ion_device *dev = internal_dev;
	int ret;

	if (!heap->ops->allocate || !heap->ops->free)
		pr_err("%s: can not add heap with invalid ops struct.\n",
@@ -540,8 +541,11 @@ void ion_device_add_heap(struct ion_heap *heap)
	if (heap->flags & ION_HEAP_FLAG_DEFER_FREE)
		ion_heap_init_deferred_free(heap);

	if ((heap->flags & ION_HEAP_FLAG_DEFER_FREE) || heap->ops->shrink)
		ion_heap_init_shrinker(heap);
	if ((heap->flags & ION_HEAP_FLAG_DEFER_FREE) || heap->ops->shrink) {
		ret = ion_heap_init_shrinker(heap);
		if (ret)
			pr_err("%s: Failed to register shrinker\n", __func__);
	}

	heap->dev = dev;
	down_write(&dev->lock);
+1 −1
Original line number Diff line number Diff line
@@ -230,7 +230,7 @@ int ion_alloc(size_t len,
 * this function will be called to setup a shrinker to shrink the freelists
 * and call the heap's shrink op.
 */
void ion_heap_init_shrinker(struct ion_heap *heap);
int ion_heap_init_shrinker(struct ion_heap *heap);

/**
 * ion_heap_init_deferred_free -- initialize deferred free functionality
+3 −2
Original line number Diff line number Diff line
@@ -297,11 +297,12 @@ static unsigned long ion_heap_shrink_scan(struct shrinker *shrinker,
	return freed;
}

void ion_heap_init_shrinker(struct ion_heap *heap)
int ion_heap_init_shrinker(struct ion_heap *heap)
{
	heap->shrinker.count_objects = ion_heap_shrink_count;
	heap->shrinker.scan_objects = ion_heap_shrink_scan;
	heap->shrinker.seeks = DEFAULT_SEEKS;
	heap->shrinker.batch = 0;
	register_shrinker(&heap->shrinker);

	return register_shrinker(&heap->shrinker);
}