[LTP] [PATCH] crasher/crasher.c: Fix release incompatibilities issue.
Qiao Zhao
qiaozqjhsy@gmail.com
Thu Jan 4 09:44:32 CET 2018
Since 4.x kernel, the old function "create_proc_entry" is not in
in use, we need to use new function "proc_create_data", and to
match all kernel version.
Others, I have tested this case on RHEL 6, 7, and Fedora 26 and 27.
Signed-off-by: Qiao Zhao <qiaozqjhsy@gmail.com>
---
testcases/kdump/lib/crasher/crasher.c | 32 +++++++++++++++++++++++++++-----
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/testcases/kdump/lib/crasher/crasher.c b/testcases/kdump/lib/crasher/crasher.c
index fe72986..d850634 100644
--- a/testcases/kdump/lib/crasher/crasher.c
+++ b/testcases/kdump/lib/crasher/crasher.c
@@ -26,9 +26,7 @@
#include <linux/spinlock.h>
#include <asm/uaccess.h>
#include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
-# include <asm/system.h>
-#endif
+#include <linux/uaccess.h>
MODULE_LICENSE("GPL");
@@ -39,14 +37,24 @@ module_exit(crasher_exit);
#define CRASH "crasher" /* name of /proc entry file */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
static int crasher_read(char *buf, char **start, off_t offset, int len,
int *eof, void *data)
+#else
+static ssize_t crasher_read(struct file *file, char __user *buf, size_t len,
+ loff_t *offset)
+#endif
{
return (sprintf(buf, "\n"));
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
static int crasher_write(struct file *file, const char *buffer,
unsigned long count, void *data)
+#else
+static ssize_t crasher_write(struct file *file, const char __user *buffer,
+ size_t count, loff_t *data)
+#endif
{
char value, *a;
DEFINE_SPINLOCK(mylock);
@@ -84,6 +92,15 @@ static int crasher_write(struct file *file, const char *buffer,
/* create a directory in /proc and a debug file in the new directory */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
+#else
+static const struct file_operations crasher_proc_fops = {
+ .owner = THIS_MODULE,
+ .read = crasher_read,
+ .write = crasher_write,
+};
+#endif
+
int crasher_init(void)
{
struct proc_dir_entry *crasher_proc;
@@ -91,14 +108,19 @@ int crasher_init(void)
printk("loaded crasher module\n");
/* build a crasher file that can be set */
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32)
if ((crasher_proc = create_proc_entry(CRASH, 0, NULL)) == NULL) {
return -ENOMEM;
}
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 30)
crasher_proc->owner = THIS_MODULE
-#endif
crasher_proc->read_proc = crasher_read;
crasher_proc->write_proc = crasher_write;
+#else
+ if ((crasher_proc = proc_create_data(CRASH, 0, NULL,
+ &crasher_proc_fops,NULL)) == NULL) {
+ return -ENOMEM;
+ }
+#endif
return 0;
}
--
1.8.3.1
More information about the ltp
mailing list