From a08f06bb7a0743a7fc8d571899c93d882468096e Mon Sep 17 00:00:00 2001
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date: Mon, 22 Jan 2018 18:05:43 +0200
Subject: seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro
Git-commit: a08f06bb7a0743a7fc8d571899c93d882468096e
Patch-mainline: v4.16-rc1
References: FATE#326289
The DEFINE_SHOW_ATTRIBUTE() helper macro would be useful for current
users, which are many of them, and for new comers to decrease code
duplication.
Backporting notes:
* Only changes to <linux/seq_file.h> have been taken
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Darren Hart (VMware) <dvhart@infradead.org>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
---
include/linux/seq_file.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
--- a/include/linux/seq_file.h
+++ b/include/linux/seq_file.h
@@ -139,6 +139,20 @@ void *__seq_open_private(struct file *,
int seq_open_private(struct file *, const struct seq_operations *, int);
int seq_release_private(struct inode *, struct file *);
+#define DEFINE_SHOW_ATTRIBUTE(__name) \
+static int __name ## _open(struct inode *inode, struct file *file) \
+{ \
+ return single_open(file, __name ## _show, inode->i_private); \
+} \
+ \
+static const struct file_operations __name ## _fops = { \
+ .owner = THIS_MODULE, \
+ .open = __name ## _open, \
+ .read = seq_read, \
+ .llseek = seq_lseek, \
+ .release = single_release, \
+}
+
static inline struct user_namespace *seq_user_ns(struct seq_file *seq)
{
#ifdef CONFIG_USER_NS