In journal_read_bucket() when setting ja->seq[bucket_index], there might
be potential case that a later non-maximum overwrites a better sequence
number to ja->seq[bucket_index]. This patch adds a check to make sure
that ja->seq[bucket_index] will be only set a new value if it is bigger
then current value.

Signed-off-by: Coly Li <[email protected]>
---
 drivers/md/bcache/journal.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/md/bcache/journal.c b/drivers/md/bcache/journal.c
index 76d3770ce484..69586ded980c 100644
--- a/drivers/md/bcache/journal.c
+++ b/drivers/md/bcache/journal.c
@@ -156,7 +156,8 @@ reread:             left = ca->sb.bucket_size - offset;
                        list_add(&i->list, where);
                        ret = 1;
 
-                       ja->seq[bucket_index] = j->seq;
+                       if (j->seq > ja->seq[bucket_index])
+                               ja->seq[bucket_index] = j->seq;
 next_set:
                        offset  += blocks * ca->sb.block_size;
                        len     -= blocks * ca->sb.block_size;
-- 
2.16.4

Reply via email to