2020-05-02 13:00:44

by Richard Weinberger

[permalink] [raw]
Subject: [PATCH] ubi: Fix seq_file usage in detailed_erase_block_info debugfs file

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 <[email protected]>
---
drivers/mtd/ubi/debug.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/drivers/mtd/ubi/debug.c b/drivers/mtd/ubi/debug.c
index 54646c2c2744..ac2bdba8bb1a 100644
--- a/drivers/mtd/ubi/debug.c
+++ b/drivers/mtd/ubi/debug.c
@@ -393,9 +393,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;

@@ -409,8 +406,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)
@@ -432,11 +427,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)
--
2.16.4


2020-05-17 21:44:01

by Richard Weinberger

[permalink] [raw]
Subject: Re: [PATCH] ubi: Fix seq_file usage in detailed_erase_block_info debugfs file

On Sat, May 2, 2020 at 2:48 PM Richard Weinberger <[email protected]> wrote:
>
> 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 <[email protected]>
> ---
> drivers/mtd/ubi/debug.c | 12 ++----------
> 1 file changed, 2 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/mtd/ubi/debug.c b/drivers/mtd/ubi/debug.c
> index 54646c2c2744..ac2bdba8bb1a 100644
> --- a/drivers/mtd/ubi/debug.c
> +++ b/drivers/mtd/ubi/debug.c
> @@ -393,9 +393,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;
>
> @@ -409,8 +406,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)
> @@ -432,11 +427,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)
> --

Applied!

--
Thanks,
//richard