aboutsummaryrefslogtreecommitdiffstats
path: root/for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx
diff options
context:
space:
mode:
Diffstat (limited to 'for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx')
-rw-r--r--for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx50
1 files changed, 50 insertions, 0 deletions
diff --git a/for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx b/for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx
new file mode 100644
index 0000000..9aef3d4
--- /dev/null
+++ b/for-next/v3_20230218_zyytlz_wz_bcache_fix___bch_btree_node_alloc_to_make_the_failure_behavior_consistent.mbx
@@ -0,0 +1,50 @@
+From git@z Thu Jan 1 00:00:00 1970
+Subject: [PATCH v3] bcache: Fix __bch_btree_node_alloc to make the failure
+ behavior consistent
+From: Zheng Wang <zyytlz.wz@163.com>
+Date: Sat, 18 Feb 2023 15:23:35 +0800
+Message-Id: <20230218072335.1537099-1-zyytlz.wz@163.com>
+MIME-Version: 1.0
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: 7bit
+
+In some specific situation, the return value of __bch_btree_node_alloc may
+be NULL. This may lead to poential NULL pointer dereference in caller
+ function like a calling chaion :
+ btree_split->bch_btree_node_alloc->__bch_btree_node_alloc.
+
+Fix it by initialize return value in __bch_btree_node_alloc before return.
+
+Fixes: cafe56359144 ("bcache: A block layer cache")
+Cc: stable@vger.kernel.org
+Signed-off-by: Zheng Wang <zyytlz.wz@163.com>
+---
+v3:
+- Add Cc: stable@vger.kernel.org suggested by Eric
+v2:
+- split patch v1 into two patches to make it clearer suggested by Coly Li
+---
+ drivers/md/bcache/btree.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c
+index 147c493a989a..cae25e74b9e0 100644
+--- a/drivers/md/bcache/btree.c
++++ b/drivers/md/bcache/btree.c
+@@ -1090,10 +1090,12 @@ struct btree *__bch_btree_node_alloc(struct cache_set *c, struct btree_op *op,
+ struct btree *parent)
+ {
+ BKEY_PADDED(key) k;
+- struct btree *b = ERR_PTR(-EAGAIN);
++ struct btree *b;
+
+ mutex_lock(&c->bucket_lock);
+ retry:
++ /* return ERR_PTR(-EAGAIN) when it fails */
++ b = ERR_PTR(-EAGAIN);
+ if (__bch_bucket_alloc_set(c, RESERVE_BTREE, &k.key, wait))
+ goto err;
+
+--
+2.25.1
+