<div dir="ltr">ack</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 21, 2021 at 11:52 AM Colin King <<a href="mailto:colin.king@canonical.com">colin.king@canonical.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">From: Colin Ian King <<a href="mailto:colin.king@canonical.com" target="_blank">colin.king@canonical.com</a>><br>
<br>
The call to lower_bound can return -1 if the key is not found<br>
with the bsearch, leading to a negative index access into<br>
array node->keys[]. Ensure this cannot occur by checking for<br>
a negative index before reading from the array.<br>
<br>
Addresses-Coverity: ("Negative array index read")<br>
Fixes: d69e2e7e28bd ("dm btree: improve btree residency")<br>
Signed-off-by: Colin Ian King <<a href="mailto:colin.king@canonical.com" target="_blank">colin.king@canonical.com</a>><br>
---<br>
drivers/md/persistent-data/dm-btree.c | 2 +-<br>
1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/drivers/md/persistent-data/dm-btree.c b/drivers/md/persistent-data/dm-btree.c<br>
index b8d21b6e2953..266deaea5eea 100644<br>
--- a/drivers/md/persistent-data/dm-btree.c<br>
+++ b/drivers/md/persistent-data/dm-btree.c<br>
@@ -1048,7 +1048,7 @@ static bool contains_key(struct btree_node *node, uint64_t key)<br>
{<br>
int i = lower_bound(node, key);<br>
<br>
- if (le64_to_cpu(node->keys[i]) == key)<br>
+ if (i >= 0 && le64_to_cpu(node->keys[i]) == key)<br>
return true;<br>
<br>
return false;<br>
-- <br>
2.31.1<br>
<br>
</blockquote></div>