md: Fix md_seq_ops() regressions
authorYu Kuai <yukuai3@huawei.com>
Tue, 9 Jan 2024 13:39:57 +0000 (21:39 +0800)
committerSong Liu <song@kernel.org>
Tue, 9 Jan 2024 18:08:18 +0000 (10:08 -0800)
commitf9cfe7e7f96a9414a17d596e288693c4f2325d49
treed27d6bd409d8a45cac4a4ec8cf563a3bf6f5bbf6
parent53889bcaf536b3abedeaf104019877cee37dd08b
md: Fix md_seq_ops() regressions

Commit cf1b6d4441ff ("md: simplify md_seq_ops") introduce following
regressions:

1) If list all_mddevs is emptly, personalities and unused devices won't
   be showed to user anymore.
2) If seq_file buffer overflowed from md_seq_show(), then md_seq_start()
   will be called again, hence personalities will be showed to user
   again.
3) If seq_file buffer overflowed from md_seq_stop(), seq_read_iter()
   doesn't handle this, hence unused devices won't be showed to user.

Fix above problems by printing personalities and unused devices in
md_seq_show().

Fixes: cf1b6d4441ff ("md: simplify md_seq_ops")
Cc: stable@vger.kernel.org # v6.7+
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20240109133957.2975272-1-yukuai1@huaweicloud.com
drivers/md/md.c