On Thu, 6 Feb 2014 21:45:36 +0100 Geert Uytterhoeven [off-list ref] wrote:
quoted
--- a/drivers/md/bcache/btree.c~bcache-drop-l-suffix-when-comparing-ssize_t-with-0-fix
+++ a/drivers/md/bcache/btree.c
@@ -1805,7 +1805,7 @@ static bool btree_insert_key(struct btre
static size_t insert_u64s_remaining(struct btree *b)
{
- ssize_t ret = bch_btree_keys_u64s_remaining(&b->keys);
+ size_t ret = bch_btree_keys_u64s_remaining(&b->keys);
/*
* Might land in the middle of an existing extent and have to split it@@ -1813,7 +1813,7 @@ static size_t insert_u64s_remaining(stru
if (b->keys.ops->is_extents)
ret -= KEY_MAX_U64S;
I think the reason is the line above: with size_t, ret may become a big
positive number when the subtraction wraps below zero.
Well, I assumed that case would be a bug - otherwise the programmer
would have commented such a subtlety. Wouldn't he?
quoted
- return max(ret, 0);
+ return max_t(size_t, ret, 0);
That part is OK, cfr. my v1 (which I had planned to send out as v3 again).
It needs to be ssize_t.