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

Commit 0729029e authored by Zheng Wang's avatar Zheng Wang Committed by Greg Kroah-Hartman
Browse files

bcache: Remove unnecessary NULL point check in node allocations



commit 028ddcac477b691dd9205c92f991cc15259d033e upstream.

Due to the previous fix of __bch_btree_node_alloc, the return value will
never be a NULL pointer. So IS_ERR is enough to handle the failure
situation. Fix it by replacing IS_ERR_OR_NULL check by an IS_ERR check.

Fixes: cafe5635 ("bcache: A block layer cache")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarZheng Wang <zyytlz.wz@163.com>
Signed-off-by: default avatarColy Li <colyli@suse.de>
Link: https://lore.kernel.org/r/20230615121223.22502-5-colyli@suse.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4be68f1c
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1186,7 +1186,7 @@ static struct btree *btree_node_alloc_replacement(struct btree *b,
{
	struct btree *n = bch_btree_node_alloc(b->c, op, b->level, b->parent);

	if (!IS_ERR_OR_NULL(n)) {
	if (!IS_ERR(n)) {
		mutex_lock(&n->write_lock);
		bch_btree_sort_into(&b->keys, &n->keys, &b->c->sort);
		bkey_copy_key(&n->key, &b->key);
@@ -1389,7 +1389,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,
	memset(new_nodes, 0, sizeof(new_nodes));
	closure_init_stack(&cl);

	while (nodes < GC_MERGE_NODES && !IS_ERR_OR_NULL(r[nodes].b))
	while (nodes < GC_MERGE_NODES && !IS_ERR(r[nodes].b))
		keys += r[nodes++].keys;

	blocks = btree_default_blocks(b->c) * 2 / 3;
@@ -1401,7 +1401,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,

	for (i = 0; i < nodes; i++) {
		new_nodes[i] = btree_node_alloc_replacement(r[i].b, NULL);
		if (IS_ERR_OR_NULL(new_nodes[i]))
		if (IS_ERR(new_nodes[i]))
			goto out_nocoalesce;
	}

@@ -1536,7 +1536,7 @@ static int btree_gc_coalesce(struct btree *b, struct btree_op *op,
	bch_keylist_free(&keylist);

	for (i = 0; i < nodes; i++)
		if (!IS_ERR_OR_NULL(new_nodes[i])) {
		if (!IS_ERR(new_nodes[i])) {
			btree_node_free(new_nodes[i]);
			rw_unlock(true, new_nodes[i]);
		}
@@ -1718,7 +1718,7 @@ static int bch_btree_gc_root(struct btree *b, struct btree_op *op,
	if (should_rewrite) {
		n = btree_node_alloc_replacement(b, NULL);

		if (!IS_ERR_OR_NULL(n)) {
		if (!IS_ERR(n)) {
			bch_btree_node_write_sync(n);

			bch_btree_set_root(n);
+2 −2
Original line number Diff line number Diff line
@@ -1633,7 +1633,7 @@ static void cache_set_flush(struct closure *cl)
	if (!IS_ERR_OR_NULL(c->gc_thread))
		kthread_stop(c->gc_thread);

	if (!IS_ERR_OR_NULL(c->root))
	if (!IS_ERR(c->root))
		list_add(&c->root->list, &c->btree_cache);

	/*
@@ -2000,7 +2000,7 @@ static int run_cache_set(struct cache_set *c)

		err = "cannot allocate new btree root";
		c->root = __bch_btree_node_alloc(c, NULL, 0, true, NULL);
		if (IS_ERR_OR_NULL(c->root))
		if (IS_ERR(c->root))
			goto err;

		mutex_lock(&c->root->write_lock);