start switching sysfs attributes to expose the seq_file

Christoph Hellwig
2021-09-13T05:42:38Z

Hi all,

Al pointed out multiple times that seq_get_buf is highly dangerous as
it opens up the tight seq_file abstractions to buffer overflows. The
last such caller now is sysfs.

This series allows attributes to implement a seq_show method and switch
the block and XFS code as users that I'm most familiar with to use
seq_files directly after a few preparatory cleanups. With this series
"leaf" users of sysfs_ops can be converted one at at a time, after that
we can move the seq_get_buf into the multiplexers (e.g. kobj, device,
class attributes) and remove the show method in sysfs_ops and repeat the
process until all attributes are converted. This will probably take a
fair amount of time.

Diffstat:
block/bfq-iosched.c | 12 +-
block/blk-integrity.c | 44 +++++----
block/blk-mq-sysfs.c | 64 ++++++--------
block/blk-sysfs.c | 209 ++++++++++++++++++++++++++---------------------
block/blk-throttle.c | 5 -
block/blk.h | 2
block/elevator.c | 42 +++++----
block/kyber-iosched.c | 7 -
block/mq-deadline.c | 5 -
fs/sysfs/file.c | 135 +++++++++++++++++-------------
fs/sysfs/group.c | 15 +--
fs/sysfs/sysfs.h | 8 +
fs/xfs/xfs_error.c | 14 +--
fs/xfs/xfs_stats.c | 24 ++---
fs/xfs/xfs_stats.h | 2
fs/xfs/xfs_sysfs.c | 96 ++++++++++-----------
include/linux/elevator.h | 4
include/linux/kernfs.h | 28 ------
include/linux/seq_file.h | 4
include/linux/sysfs.h | 9 +-
20 files changed, 376 insertions(+), 353 deletions(-)