From 0f9c72631cad6417aa50c2af3b9a6eef9bea0b7a Mon Sep 17 00:00:00 2001 From: linD026 Date: Wed, 21 Sep 2022 13:55:30 +0800 Subject: [PATCH] Fix dereference NULL pointer with proc_lseek Since the operations are static storage duration, the pointer in operation structures will initialize with NULL. But, the kernel doesn't check whether the pointer is NULL or not when calling it. Related Discussion: - https://github.com/sysprog21/lkmpg/issues/165 - https://github.com/sysprog21/lkmpg/issues/160 Close #165 --- examples/sleep.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/sleep.c b/examples/sleep.c index d642b1e..931ff5d 100644 --- a/examples/sleep.c +++ b/examples/sleep.c @@ -169,6 +169,7 @@ static const struct proc_ops file_ops_4_our_proc_file = { .proc_write = module_input, /* "write" to the file */ .proc_open = module_open, /* called when the /proc file is opened */ .proc_release = module_close, /* called when it's closed */ + .proc_lseek = noop_llseek, /* return file->f_pos */ }; #else static const struct file_operations file_ops_4_our_proc_file = { @@ -176,6 +177,7 @@ static const struct file_operations file_ops_4_our_proc_file = { .write = module_input, .open = module_open, .release = module_close, + .llseek = noop_llseek, }; #endif