ubi: Fix seq_file usage in detailed_erase_block_info debugfs file
authorRichard Weinberger <richard@nod.at>
Sat, 2 May 2020 12:48:02 +0000 (14:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 27 May 2020 15:46:19 +0000 (17:46 +0200)
[ Upstream commit 0e7572cffe442290c347e779bf8bd4306bb0aa7c ]

3bfa7e141b0b ("fs/seq_file.c: seq_read(): add info message about buggy .next functions")
showed that we don't use seq_file correctly.
So make sure that our ->next function always updates the position.

Fixes: 7bccd12d27b7 ("ubi: Add debugfs file for tracking PEB state")
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/mtd/ubi/debug.c

index a1dff92..8a83072 100644 (file)
@@ -392,9 +392,6 @@ static void *eraseblk_count_seq_start(struct seq_file *s, loff_t *pos)
 {
        struct ubi_device *ubi = s->private;
 
-       if (*pos == 0)
-               return SEQ_START_TOKEN;
-
        if (*pos < ubi->peb_count)
                return pos;
 
@@ -408,8 +405,6 @@ static void *eraseblk_count_seq_next(struct seq_file *s, void *v, loff_t *pos)
 {
        struct ubi_device *ubi = s->private;
 
-       if (v == SEQ_START_TOKEN)
-               return pos;
        (*pos)++;
 
        if (*pos < ubi->peb_count)
@@ -431,11 +426,8 @@ static int eraseblk_count_seq_show(struct seq_file *s, void *iter)
        int err;
 
        /* If this is the start, print a header */
-       if (iter == SEQ_START_TOKEN) {
-               seq_puts(s,
-                        "physical_block_number\terase_count\tblock_status\tread_status\n");
-               return 0;
-       }
+       if (*block_number == 0)
+               seq_puts(s, "physical_block_number\terase_count\n");
 
        err = ubi_io_is_bad(ubi, *block_number);
        if (err)