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

Commit f8cb822f authored by Tetsuo Handa's avatar Tetsuo Handa Committed by Martijn Coenen
Browse files

UPSTREAM: android: binder: Check for errors in binder_alloc_shrinker_init().



Both list_lru_init() and register_shrinker() might return an error.

Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Sherry Yang <sherryy@android.com>
Cc: Michal Hocko <mhocko@suse.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit 533dfb250d1c8d2bb8c9b65252f7b296b29913d4)

Change-Id: I5325ccaf34a04179ef3dae73dd8f3abfd6e21565
parent 9e790395
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -5780,7 +5780,9 @@ static int __init binder_init(void)
	struct binder_device *device;
	struct hlist_node *tmp;

	binder_alloc_shrinker_init();
	ret = binder_alloc_shrinker_init();
	if (ret)
		return ret;

	atomic_set(&binder_transaction_log.cur, ~0U);
	atomic_set(&binder_transaction_log_failed.cur, ~0U);
+9 −3
Original line number Diff line number Diff line
@@ -1008,8 +1008,14 @@ void binder_alloc_init(struct binder_alloc *alloc)
	INIT_LIST_HEAD(&alloc->buffers);
}

void binder_alloc_shrinker_init(void)
int binder_alloc_shrinker_init(void)
{
	list_lru_init(&binder_alloc_lru);
	register_shrinker(&binder_shrinker);
	int ret = list_lru_init(&binder_alloc_lru);

	if (ret == 0) {
		ret = register_shrinker(&binder_shrinker);
		if (ret)
			list_lru_destroy(&binder_alloc_lru);
	}
	return ret;
}
+1 −1
Original line number Diff line number Diff line
@@ -130,7 +130,7 @@ extern struct binder_buffer *binder_alloc_new_buf(struct binder_alloc *alloc,
						  size_t extra_buffers_size,
						  int is_async);
extern void binder_alloc_init(struct binder_alloc *alloc);
void binder_alloc_shrinker_init(void);
extern int binder_alloc_shrinker_init(void);
extern void binder_alloc_vma_close(struct binder_alloc *alloc);
extern struct binder_buffer *
binder_alloc_prepare_to_free(struct binder_alloc *alloc,