Blob Blame History Raw
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