From eef2bc4395f1f5c9b004a4338bcc4147f4d42d64 Mon Sep 17 00:00:00 2001 From: linD026 <66012716+linD026@users.noreply.github.com> Date: Thu, 2 Sep 2021 15:15:07 +0800 Subject: [PATCH] Enforce Linux kernel coding style (#88) The only exception is to indent with four spaces rather than tabs for sticking to compact layout of source listing. Close #87 --- examples/.clang-format | 105 +++++++++++++++++++++++++++++++++----- examples/Makefile | 3 ++ examples/bottomhalf.c | 9 ++-- examples/chardev.c | 14 +++-- examples/chardev.h | 2 +- examples/chardev2.c | 50 +++++++++--------- examples/cryptosha256.c | 6 ++- examples/cryptosk.c | 9 ++-- examples/devicemodel.c | 2 +- examples/example_atomic.c | 8 +-- examples/hello-2.c | 2 +- examples/hello-3.c | 2 +- examples/hello-4.c | 2 +- examples/hello-5.c | 13 ++--- examples/hello-sysfs.c | 14 ++--- examples/intrpt.c | 9 ++-- examples/ioctl.c | 35 +++++-------- examples/kbleds.c | 7 ++- examples/print_string.c | 6 +-- examples/procfs1.c | 17 +++--- examples/procfs2.c | 24 ++++----- examples/procfs3.c | 28 +++++----- examples/procfs4.c | 11 ++-- examples/sched.c | 1 - examples/sleep.c | 82 ++++++++++++++--------------- examples/syscall.c | 42 +++++++-------- 26 files changed, 279 insertions(+), 224 deletions(-) diff --git a/examples/.clang-format b/examples/.clang-format index 9705d27..9e4fbaa 100644 --- a/examples/.clang-format +++ b/examples/.clang-format @@ -1,15 +1,94 @@ -BasedOnStyle: Chromium Language: Cpp -MaxEmptyLinesToKeep: 3 -IndentCaseLabels: false -AllowShortIfStatementsOnASingleLine: false -AllowShortCaseLabelsOnASingleLine: false -AllowShortLoopsOnASingleLine: false -DerivePointerAlignment: false -PointerAlignment: Right -SpaceAfterCStyleCast: true -TabWidth: 4 -UseTab: Never -IndentWidth: 4 -BreakBeforeBraces: Linux + AccessModifierOffset: -4 +AlignAfterOpenBracket: Align +AlignConsecutiveAssignments: false +AlignConsecutiveDeclarations: false +AlignOperands: true +AlignTrailingComments: false +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortBlocksOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: None +AllowShortIfStatementsOnASingleLine: false +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: false +BinPackArguments: true +BinPackParameters: true + +BraceWrapping: + AfterClass: false + AfterControlStatement: false + AfterEnum: false + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true + +BreakBeforeBinaryOperators: None +BreakBeforeBraces: Custom +BreakBeforeInheritanceComma: false +BreakBeforeTernaryOperators: false +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeComma +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: false +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false + +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '.*' + Priority: 1 +IncludeIsMainRegex: '(Test)?$' +IndentCaseLabels: false +IndentPPDirectives: None +IndentWidth: 4 +IndentWrappedFunctionNames: false +KeepEmptyLinesAtTheStartOfBlocks: false +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None + +PointerAlignment: Right +ReflowComments: false +SortIncludes: false +SortUsingDeclarations: false +SpaceAfterCStyleCast: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: false +SpacesInContainerLiterals: false +SpacesInCStyleCastParentheses: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +Standard: Cpp03 +TabWidth: 4 +UseTab: Never \ No newline at end of file diff --git a/examples/Makefile b/examples/Makefile index 8d7a6dc..a92b92c 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -36,3 +36,6 @@ all: clean: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean $(RM) other/cat_noblock *.plist + +indent: + clang-format -i *[.ch] diff --git a/examples/bottomhalf.c b/examples/bottomhalf.c index 6abc990..e80f1d9 100644 --- a/examples/bottomhalf.c +++ b/examples/bottomhalf.c @@ -21,19 +21,19 @@ #define DECLARE_TASKLET_OLD(arg1, arg2) DECLARE_TASKLET(arg1, arg2, 0L) #endif -static int button_irqs[] = {-1, -1}; +static int button_irqs[] = { -1, -1 }; /* Define GPIOs for LEDs. * TODO: Change the numbers for the GPIO on your board. */ -static struct gpio leds[] = {{4, GPIOF_OUT_INIT_LOW, "LED 1"}}; +static struct gpio leds[] = { { 4, GPIOF_OUT_INIT_LOW, "LED 1" } }; /* Define GPIOs for BUTTONS * TODO: Change the numbers for the GPIO on your board. */ static struct gpio buttons[] = { - {17, GPIOF_IN, "LED 1 ON BUTTON"}, - {18, GPIOF_IN, "LED 1 OFF BUTTON"}, + { 17, GPIOF_IN, "LED 1 ON BUTTON" }, + { 18, GPIOF_IN, "LED 1 OFF BUTTON" }, }; /* Tasklet containing some non-trivial amount of processing */ @@ -106,7 +106,6 @@ static int __init bottomhalf_init(void) goto fail2; } - ret = gpio_to_irq(buttons[1].gpio); if (ret < 0) { diff --git a/examples/chardev.c b/examples/chardev.c index 138fe81..475b639 100644 --- a/examples/chardev.c +++ b/examples/chardev.c @@ -21,14 +21,14 @@ static ssize_t device_write(struct file *, const char *, size_t, loff_t *); #define SUCCESS 0 #define DEVICE_NAME "chardev" /* Dev name as it appears in /proc/devices */ -#define BUF_LEN 80 /* Max length of the message from the device */ +#define BUF_LEN 80 /* Max length of the message from the device */ /* Global variables are declared as static, so are global within the file. */ -static int major; /* major number assigned to our device driver */ +static int major; /* major number assigned to our device driver */ static int open_device_cnt = 0; /* Is device open? * Used to prevent multiple access to device */ -static char msg[BUF_LEN]; /* The msg the device will give when asked */ +static char msg[BUF_LEN]; /* The msg the device will give when asked */ static char *msg_ptr; static struct class *cls; @@ -105,8 +105,8 @@ static int device_release(struct inode *inode, struct file *file) * read from it. */ static ssize_t device_read(struct file *filp, /* see include/linux/fs.h */ - char *buffer, /* buffer to fill with data */ - size_t length, /* length of the buffer */ + char *buffer, /* buffer to fill with data */ + size_t length, /* length of the buffer */ loff_t *offset) { /* Number of bytes actually written to the buffer */ @@ -134,9 +134,7 @@ static ssize_t device_read(struct file *filp, /* see include/linux/fs.h */ } /* Called when a process writes to dev file: echo "hi" > /dev/hello */ -static ssize_t device_write(struct file *filp, - const char *buff, - size_t len, +static ssize_t device_write(struct file *filp, const char *buff, size_t len, loff_t *off) { pr_alert("Sorry, this operation is not supported.\n"); diff --git a/examples/chardev.h b/examples/chardev.h index 9853299..0713948 100644 --- a/examples/chardev.h +++ b/examples/chardev.h @@ -40,7 +40,7 @@ /* Get the n'th byte of the message */ #define IOCTL_GET_NTH_BYTE _IOWR(MAJOR_NUM, 2, int) /* The IOCTL is used for both input and output. It receives from the user - * a number, n, and returns Message[n]. + * a number, n, and returns message[n]. */ /* The name of the device file */ diff --git a/examples/chardev2.c b/examples/chardev2.c index 370f772..f00cd73 100644 --- a/examples/chardev2.c +++ b/examples/chardev2.c @@ -20,15 +20,15 @@ /* Is the device open right now? Used to prevent concurrent access into * the same device */ -static int Device_Open = 0; +static int open_device_cnt = 0; /* The message the device will give when asked */ -static char Message[BUF_LEN]; +static char message[BUF_LEN]; /* How far did the process reading the message get? Useful if the message * is larger than the size of the buffer we get to fill in device_read. */ -static char *Message_Ptr; +static char *message_ptr; static struct class *cls; @@ -38,12 +38,12 @@ static int device_open(struct inode *inode, struct file *file) pr_info("device_open(%p)\n", file); /* We don't want to talk to two processes at the same time. */ - if (Device_Open) + if (open_device_cnt) return -EBUSY; - Device_Open++; + open_device_cnt++; /* Initialize the message */ - Message_Ptr = Message; + message_ptr = message; try_module_get(THIS_MODULE); return SUCCESS; } @@ -53,7 +53,7 @@ static int device_release(struct inode *inode, struct file *file) pr_info("device_release(%p,%p)\n", inode, file); /* We're now ready for our next caller */ - Device_Open--; + open_device_cnt--; module_put(THIS_MODULE); return SUCCESS; @@ -62,9 +62,9 @@ static int device_release(struct inode *inode, struct file *file) /* This function is called whenever a process which has already opened the * device file attempts to read from it. */ -static ssize_t device_read(struct file *file, /* see include/linux/fs.h */ +static ssize_t device_read(struct file *file, /* see include/linux/fs.h */ char __user *buffer, /* buffer to be filled */ - size_t length, /* length of the buffer */ + size_t length, /* length of the buffer */ loff_t *offset) { /* Number of bytes actually written to the buffer */ @@ -73,17 +73,17 @@ static ssize_t device_read(struct file *file, /* see include/linux/fs.h */ pr_info("device_read(%p,%p,%ld)\n", file, buffer, length); /* If at the end of message, return 0 (which signifies end of file). */ - if (*Message_Ptr == 0) + if (*message_ptr == 0) return 0; /* Actually put the data into the buffer */ - while (length && *Message_Ptr) { + while (length && *message_ptr) { /* Because the buffer is in the user data segment, not the kernel * data segment, assignment would not work. Instead, we have to * use put_user which copies data from the kernel data segment to * the user data segment. */ - put_user(*(Message_Ptr++), buffer++); + put_user(*(message_ptr++), buffer++); length--; bytes_read++; } @@ -97,19 +97,17 @@ static ssize_t device_read(struct file *file, /* see include/linux/fs.h */ } /* called when somebody tries to write into our device file. */ -static ssize_t device_write(struct file *file, - const char __user *buffer, - size_t length, - loff_t *offset) +static ssize_t device_write(struct file *file, const char __user *buffer, + size_t length, loff_t *offset) { int i; pr_info("device_write(%p,%s,%ld)", file, buffer, length); for (i = 0; i < length && i < BUF_LEN; i++) - get_user(Message[i], buffer + i); + get_user(message[i], buffer + i); - Message_Ptr = Message; + message_ptr = message; /* Again, return the number of input characters used. */ return i; @@ -123,7 +121,7 @@ static ssize_t device_write(struct file *file, * If the ioctl is write or read/write (meaning output is returned to the * calling process), the ioctl call returns the output of this function. */ -long device_ioctl(struct file *file, /* ditto */ +long device_ioctl(struct file *file, /* ditto */ unsigned int ioctl_num, /* number and param for ioctl */ unsigned long ioctl_param) { @@ -138,33 +136,33 @@ long device_ioctl(struct file *file, /* ditto */ * be the device's message. Get the parameter given to ioctl by * the process. */ - temp = (char *) ioctl_param; + temp = (char *)ioctl_param; /* Find the length of the message */ get_user(ch, temp); for (i = 0; ch && i < BUF_LEN; i++, temp++) get_user(ch, temp); - device_write(file, (char *) ioctl_param, i, 0); + device_write(file, (char *)ioctl_param, i, 0); break; case IOCTL_GET_MSG: /* Give the current message to the calling process - the parameter * we got is a pointer, fill it. */ - i = device_read(file, (char *) ioctl_param, 99, 0); + i = device_read(file, (char *)ioctl_param, 99, 0); /* Put a zero at the end of the buffer, so it will be properly * terminated. */ - put_user('\0', (char *) ioctl_param + i); + put_user('\0', (char *)ioctl_param + i); break; case IOCTL_GET_NTH_BYTE: /* This ioctl is both input (ioctl_param) and output (the return * value of this function). */ - return Message[ioctl_param]; + return message[ioctl_param]; break; } @@ -178,7 +176,7 @@ long device_ioctl(struct file *file, /* ditto */ * is kept in the devices table, it can't be local to init_module. NULL is * for unimplemented functions. */ -struct file_operations Fops = { +struct file_operations fops = { .read = device_read, .write = device_write, .unlocked_ioctl = device_ioctl, @@ -190,7 +188,7 @@ struct file_operations Fops = { static int __init chardev2_init(void) { /* Register the character device (atleast try) */ - int ret_val = register_chrdev(MAJOR_NUM, DEVICE_NAME, &Fops); + int ret_val = register_chrdev(MAJOR_NUM, DEVICE_NAME, &fops); /* Negative values signify an error */ if (ret_val < 0) { diff --git a/examples/cryptosha256.c b/examples/cryptosha256.c index 02e3a07..99725d3 100644 --- a/examples/cryptosha256.c +++ b/examples/cryptosha256.c @@ -13,7 +13,7 @@ static void show_hash_result(char *plaintext, char *hash_sha256) pr_info("sha256 test for string: \"%s\"\n", plaintext); for (i = 0; i < SHA256_LENGTH; i++) - sprintf(&str[i * 2], "%02x", (unsigned char) hash_sha256[i]); + sprintf(&str[i * 2], "%02x", (unsigned char)hash_sha256[i]); str[i * 2] = 0; pr_info("%s\n", str); } @@ -53,7 +53,9 @@ int cryptosha256_init(void) return 0; } -void cryptosha256_exit(void) {} +void cryptosha256_exit(void) +{ +} module_init(cryptosha256_init); module_exit(cryptosha256_exit); diff --git a/examples/cryptosk.c b/examples/cryptosk.c index b9a84f4..f31d8c7 100644 --- a/examples/cryptosk.c +++ b/examples/cryptosk.c @@ -93,8 +93,7 @@ static void test_skcipher_callback(struct crypto_async_request *req, int error) #endif } -static int test_skcipher_encrypt(char *plaintext, - char *password, +static int test_skcipher_encrypt(char *plaintext, char *password, struct skcipher_def *sk) { int ret = -EFAULT; @@ -121,10 +120,10 @@ static int test_skcipher_encrypt(char *plaintext, test_skcipher_callback, &sk->result); /* clear the key */ - memset((void *) key, '\0', SYMMETRIC_KEY_LENGTH); + memset((void *)key, '\0', SYMMETRIC_KEY_LENGTH); /* Use the world's favourite password */ - sprintf((char *) key, "%s", password); + sprintf((char *)key, "%s", password); /* AES 256 with given symmetric key */ if (crypto_skcipher_setkey(sk->tfm, key, SYMMETRIC_KEY_LENGTH)) { @@ -153,7 +152,7 @@ static int test_skcipher_encrypt(char *plaintext, goto out; } } - sprintf((char *) sk->scratchpad, "%s", plaintext); + sprintf((char *)sk->scratchpad, "%s", plaintext); sg_init_one(&sk->sg, sk->scratchpad, CIPHER_BLOCK_SIZE); skcipher_request_set_crypt(sk->req, &sk->sg, &sk->sg, CIPHER_BLOCK_SIZE, diff --git a/examples/devicemodel.c b/examples/devicemodel.c index b8f855b..f2d97dc 100644 --- a/examples/devicemodel.c +++ b/examples/devicemodel.c @@ -13,7 +13,7 @@ struct devicemodel_data { static int devicemodel_probe(struct platform_device *dev) { struct devicemodel_data *pd = - (struct devicemodel_data *) (dev->dev.platform_data); + (struct devicemodel_data *)(dev->dev.platform_data); pr_info("devicemodel probe\n"); pr_info("devicemodel greeting: %s; %d\n", pd->greeting, pd->number); diff --git a/examples/example_atomic.c b/examples/example_atomic.c index d9eee86..4c05af0 100644 --- a/examples/example_atomic.c +++ b/examples/example_atomic.c @@ -6,10 +6,10 @@ #include #define BYTE_TO_BINARY_PATTERN "%c%c%c%c%c%c%c%c" -#define BYTE_TO_BINARY(byte) \ - (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), \ - (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), \ - (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), \ +#define BYTE_TO_BINARY(byte) \ + (byte & 0x80 ? '1' : '0'), (byte & 0x40 ? '1' : '0'), \ + (byte & 0x20 ? '1' : '0'), (byte & 0x10 ? '1' : '0'), \ + (byte & 0x08 ? '1' : '0'), (byte & 0x04 ? '1' : '0'), \ (byte & 0x02 ? '1' : '0'), (byte & 0x01 ? '1' : '0') static void atomic_add_subtract(void) diff --git a/examples/hello-2.c b/examples/hello-2.c index 7fd3109..b5c360d 100644 --- a/examples/hello-2.c +++ b/examples/hello-2.c @@ -2,7 +2,7 @@ * hello-2.c - Demonstrating the module_init() and module_exit() macros. * This is preferred over using init_module() and cleanup_module(). */ -#include /* Needed for the macros */ +#include /* Needed for the macros */ #include /* Needed for pr_info() */ #include /* Needed by all modules */ diff --git a/examples/hello-3.c b/examples/hello-3.c index e6f8afa..a82c385 100644 --- a/examples/hello-3.c +++ b/examples/hello-3.c @@ -1,7 +1,7 @@ /* * hello-3.c - Illustrating the __init, __initdata and __exit macros. */ -#include /* Needed for the macros */ +#include /* Needed for the macros */ #include /* Needed for pr_info() */ #include /* Needed by all modules */ diff --git a/examples/hello-4.c b/examples/hello-4.c index 260af44..8e2937d 100644 --- a/examples/hello-4.c +++ b/examples/hello-4.c @@ -1,7 +1,7 @@ /* * hello-4.c - Demonstrates module documentation. */ -#include /* Needed for the macros */ +#include /* Needed for the macros */ #include /* Needed for pr_info() */ #include /* Needed by all modules */ diff --git a/examples/hello-5.c b/examples/hello-5.c index dd97d46..669c10a 100644 --- a/examples/hello-5.c +++ b/examples/hello-5.c @@ -13,7 +13,7 @@ static short int myshort = 1; static int myint = 420; static long int mylong = 9999; static char *mystring = "blah"; -static int myintArray[2] = {420, 420}; +static int myintarray[2] = { 420, 420 }; static int arr_argc = 0; /* module_param(foo, int, 0000) @@ -38,22 +38,23 @@ MODULE_PARM_DESC(mystring, "A character string"); * of elements of the array initialized by the user at module loading time. * The fourth argument is the permission bits. */ -module_param_array(myintArray, int, &arr_argc, 0000); -MODULE_PARM_DESC(myintArray, "An array of integers"); +module_param_array(myintarray, int, &arr_argc, 0000); +MODULE_PARM_DESC(myintarray, "An array of integers"); static int __init hello_5_init(void) { int i; + pr_info("Hello, world 5\n=============\n"); pr_info("myshort is a short integer: %hd\n", myshort); pr_info("myint is an integer: %d\n", myint); pr_info("mylong is a long integer: %ld\n", mylong); pr_info("mystring is a string: %s\n", mystring); - for (i = 0; i < (sizeof myintArray / sizeof(int)); i++) - pr_info("myintArray[%d] = %d\n", i, myintArray[i]); + for (i = 0; i < ARRAY_SIZE(myintarray); i++) + pr_info("myintarray[%d] = %d\n", i, myintarray[i]); - pr_info("got %d arguments for myintArray.\n", arr_argc); + pr_info("got %d arguments for myintarray.\n", arr_argc); return 0; } diff --git a/examples/hello-sysfs.c b/examples/hello-sysfs.c index 4be1209..6f7184a 100644 --- a/examples/hello-sysfs.c +++ b/examples/hello-sysfs.c @@ -14,24 +14,21 @@ static struct kobject *mymodule; static int myvariable = 0; static ssize_t myvariable_show(struct kobject *kobj, - struct kobj_attribute *attr, - char *buf) + struct kobj_attribute *attr, char *buf) { return sprintf(buf, "%d\n", myvariable); } static ssize_t myvariable_store(struct kobject *kobj, - struct kobj_attribute *attr, - char *buf, + struct kobj_attribute *attr, char *buf, size_t count) { sscanf(buf, "%du", &myvariable); return count; } - static struct kobj_attribute myvariable_attribute = - __ATTR(myvariable, 0660, myvariable_show, (void *) myvariable_store); + __ATTR(myvariable, 0660, myvariable_show, (void *)myvariable_store); static int __init mymodule_init(void) { @@ -45,9 +42,8 @@ static int __init mymodule_init(void) error = sysfs_create_file(mymodule, &myvariable_attribute.attr); if (error) { - pr_info( - "failed to create the myvariable file " - "in /sys/kernel/mymodule\n"); + pr_info("failed to create the myvariable file " + "in /sys/kernel/mymodule\n"); } return error; diff --git a/examples/intrpt.c b/examples/intrpt.c index 37aca49..0a6b252 100644 --- a/examples/intrpt.c +++ b/examples/intrpt.c @@ -13,18 +13,18 @@ #include #include -static int button_irqs[] = {-1, -1}; +static int button_irqs[] = { -1, -1 }; /* Define GPIOs for LEDs. * TODO: Change the numbers for the GPIO on your board. */ -static struct gpio leds[] = {{4, GPIOF_OUT_INIT_LOW, "LED 1"}}; +static struct gpio leds[] = { { 4, GPIOF_OUT_INIT_LOW, "LED 1" } }; /* Define GPIOs for BUTTONS * TODO: Change the numbers for the GPIO on your board. */ -static struct gpio buttons[] = {{17, GPIOF_IN, "LED 1 ON BUTTON"}, - {18, GPIOF_IN, "LED 1 OFF BUTTON"}}; +static struct gpio buttons[] = { { 17, GPIOF_IN, "LED 1 ON BUTTON" }, + { 18, GPIOF_IN, "LED 1 OFF BUTTON" } }; /* interrupt function triggered when a button is pressed. */ static irqreturn_t button_isr(int irq, void *data) @@ -83,7 +83,6 @@ static int __init intrpt_init(void) goto fail2; } - ret = gpio_to_irq(buttons[1].gpio); if (ret < 0) { diff --git a/examples/ioctl.c b/examples/ioctl.c index bc057f5..7f35649 100644 --- a/examples/ioctl.c +++ b/examples/ioctl.c @@ -35,8 +35,7 @@ struct test_ioctl_data { rwlock_t lock; }; -static long test_ioctl_ioctl(struct file *filp, - unsigned int cmd, +static long test_ioctl_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { struct test_ioctl_data *ioctl_data = filp->private_data; @@ -47,7 +46,7 @@ static long test_ioctl_ioctl(struct file *filp, switch (cmd) { case IOCTL_VALSET: - if (copy_from_user(&data, (int __user *) arg, sizeof(data))) { + if (copy_from_user(&data, (int __user *)arg, sizeof(data))) { retval = -EFAULT; goto done; } @@ -64,7 +63,7 @@ static long test_ioctl_ioctl(struct file *filp, read_unlock(&ioctl_data->lock); data.val = val; - if (copy_to_user((int __user *) arg, &data, sizeof(data))) { + if (copy_to_user((int __user *)arg, &data, sizeof(data))) { retval = -EFAULT; goto done; } @@ -72,7 +71,7 @@ static long test_ioctl_ioctl(struct file *filp, break; case IOCTL_VALGET_NUM: - retval = __put_user(ioctl_num, (int __user *) arg); + retval = __put_user(ioctl_num, (int __user *)arg); break; case IOCTL_VALSET_NUM: @@ -87,15 +86,14 @@ done: return retval; } -ssize_t test_ioctl_read(struct file *filp, - char __user *buf, - size_t count, +ssize_t test_ioctl_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) { struct test_ioctl_data *ioctl_data = filp->private_data; unsigned char val; int retval; int i = 0; + read_lock(&ioctl_data->lock); val = ioctl_data->val; read_unlock(&ioctl_data->lock); @@ -127,16 +125,17 @@ static int test_ioctl_close(struct inode *inode, struct file *filp) static int test_ioctl_open(struct inode *inode, struct file *filp) { struct test_ioctl_data *ioctl_data; + pr_alert("%s call.\n", __func__); ioctl_data = kmalloc(sizeof(struct test_ioctl_data), GFP_KERNEL); - if (ioctl_data == NULL) { + if (ioctl_data == NULL) return -ENOMEM; - } rwlock_init(&ioctl_data->lock); ioctl_data->val = 0xFF; filp->private_data = ioctl_data; + return 0; } @@ -155,37 +154,31 @@ static int ioctl_init(void) int cdev_ret = 0; alloc_ret = alloc_chrdev_region(&dev, 0, num_of_dev, DRIVER_NAME); - if (alloc_ret) { + if (alloc_ret) goto error; - } test_ioctl_major = MAJOR(dev); cdev_init(&test_ioctl_cdev, &fops); cdev_ret = cdev_add(&test_ioctl_cdev, dev, num_of_dev); - if (cdev_ret) { + if (cdev_ret) goto error; - } pr_alert("%s driver(major: %d) installed.\n", DRIVER_NAME, test_ioctl_major); return 0; error: - - if (cdev_ret == 0) { + if (cdev_ret == 0) cdev_del(&test_ioctl_cdev); - } - - if (alloc_ret == 0) { + if (alloc_ret == 0) unregister_chrdev_region(dev, num_of_dev); - } - return -1; } static void ioctl_exit(void) { dev_t dev = MKDEV(test_ioctl_major, 0); + cdev_del(&test_ioctl_cdev); unregister_chrdev_region(dev, num_of_dev); pr_alert("%s driver removed.\n", DRIVER_NAME); diff --git a/examples/kbleds.c b/examples/kbleds.c index d02335e..057912f 100644 --- a/examples/kbleds.c +++ b/examples/kbleds.c @@ -35,7 +35,7 @@ char kbledstatus = 0; static void my_timer_func(unsigned long ptr) { - unsigned long *pstatus = (unsigned long *) ptr; + unsigned long *pstatus = (unsigned long *)ptr; struct tty_struct *t = vc_cons[fg_console].d->port.tty; if (*pstatus == ALL_LEDS_ON) @@ -59,7 +59,7 @@ static int __init kbleds_init(void) if (!vc_cons[i].d) break; pr_info("poet_atkm: console[%i/%i] #%i, tty %lx\n", i, MAX_NR_CONSOLES, - vc_cons[i].d->vc_num, (unsigned long) vc_cons[i].d->port.tty); + vc_cons[i].d->vc_num, (unsigned long)vc_cons[i].d->port.tty); } pr_info("kbleds: finished scanning consoles\n"); @@ -67,8 +67,7 @@ static int __init kbleds_init(void) pr_info("kbleds: tty driver magic %x\n", my_driver->magic); /* Set up the LED blink timer the first time. */ - timer_setup(&my_timer, (void *) &my_timer_func, - (unsigned long) &kbledstatus); + timer_setup(&my_timer, (void *)&my_timer_func, (unsigned long)&kbledstatus); my_timer.expires = jiffies + BLINK_DELAY; add_timer(&my_timer); diff --git a/examples/print_string.c b/examples/print_string.c index 8218125..312939b 100644 --- a/examples/print_string.c +++ b/examples/print_string.c @@ -7,7 +7,7 @@ #include #include #include /* For current */ -#include /* For the tty declarations */ +#include /* For the tty declarations */ static void print_string(char *str) { @@ -37,8 +37,8 @@ static void print_string(char *str) * section 2 of * linux/Documentation/SubmittingPatches */ - (ttyops->write)(my_tty, /* The tty itself */ - str, /* String */ + (ttyops->write)(my_tty, /* The tty itself */ + str, /* String */ strlen(str)); /* Length */ /* ttys were originally hardware devices, which (usually) strictly diff --git a/examples/procfs1.c b/examples/procfs1.c index 71b23b4..11b010a 100644 --- a/examples/procfs1.c +++ b/examples/procfs1.c @@ -14,13 +14,10 @@ #define procfs_name "helloworld" -struct proc_dir_entry *Our_Proc_File; +struct proc_dir_entry *our_proc_file; - -ssize_t procfile_read(struct file *filePointer, - char *buffer, - size_t buffer_length, - loff_t *offset) +ssize_t procfile_read(struct file *filePointer, char *buffer, + size_t buffer_length, loff_t *offset) { char s[13] = "HelloWorld!\n"; int len = sizeof(s); @@ -49,9 +46,9 @@ static const struct file_operations proc_file_fops = { static int __init procfs1_init(void) { - Our_Proc_File = proc_create(procfs_name, 0644, NULL, &proc_file_fops); - if (NULL == Our_Proc_File) { - proc_remove(Our_Proc_File); + our_proc_file = proc_create(procfs_name, 0644, NULL, &proc_file_fops); + if (NULL == our_proc_file) { + proc_remove(our_proc_file); pr_alert("Error:Could not initialize /proc/%s\n", procfs_name); return -ENOMEM; } @@ -62,7 +59,7 @@ static int __init procfs1_init(void) static void __exit procfs1_exit(void) { - proc_remove(Our_Proc_File); + proc_remove(our_proc_file); pr_info("/proc/%s removed\n", procfs_name); } diff --git a/examples/procfs2.c b/examples/procfs2.c index 29f3934..88717fe 100644 --- a/examples/procfs2.c +++ b/examples/procfs2.c @@ -2,8 +2,8 @@ * procfs2.c - create a "file" in /proc */ -#include /* We're doing kernel work */ -#include /* Specifically, a module */ +#include /* We're doing kernel work */ +#include /* Specifically, a module */ #include /* Necessary because we use the proc fs */ #include /* for copy_from_user */ #include @@ -16,7 +16,7 @@ #define PROCFS_NAME "buffer1k" /* This structure hold information about the /proc file */ -static struct proc_dir_entry *Our_Proc_File; +static struct proc_dir_entry *our_proc_file; /* The buffer used to store character for this module */ static char procfs_buffer[PROCFS_MAX_SIZE]; @@ -25,10 +25,8 @@ static char procfs_buffer[PROCFS_MAX_SIZE]; static unsigned long procfs_buffer_size = 0; /* This function is called then the /proc file is read */ -ssize_t procfile_read(struct file *filePointer, - char *buffer, - size_t buffer_length, - loff_t *offset) +ssize_t procfile_read(struct file *filePointer, char *buffer, + size_t buffer_length, loff_t *offset) { char s[13] = "HelloWorld!\n"; int len = sizeof(s); @@ -46,9 +44,7 @@ ssize_t procfile_read(struct file *filePointer, } /* This function is called with the /proc file is written. */ -static ssize_t procfile_write(struct file *file, - const char *buff, - size_t len, +static ssize_t procfile_write(struct file *file, const char *buff, size_t len, loff_t *off) { procfs_buffer_size = len; @@ -76,9 +72,9 @@ static const struct file_operations proc_file_fops = { static int __init procfs2_init(void) { - Our_Proc_File = proc_create(PROCFS_NAME, 0644, NULL, &proc_file_fops); - if (NULL == Our_Proc_File) { - proc_remove(Our_Proc_File); + our_proc_file = proc_create(PROCFS_NAME, 0644, NULL, &proc_file_fops); + if (NULL == our_proc_file) { + proc_remove(our_proc_file); pr_alert("Error:Could not initialize /proc/%s\n", PROCFS_NAME); return -ENOMEM; } @@ -89,7 +85,7 @@ static int __init procfs2_init(void) static void __exit procfs2_exit(void) { - proc_remove(Our_Proc_File); + proc_remove(our_proc_file); pr_info("/proc/%s removed\n", PROCFS_NAME); } diff --git a/examples/procfs3.c b/examples/procfs3.c index 0a5c11f..f19f169 100644 --- a/examples/procfs3.c +++ b/examples/procfs3.c @@ -16,30 +16,29 @@ #define PROCFS_MAX_SIZE 2048 #define PROCFS_ENTRY_FILENAME "buffer2k" -struct proc_dir_entry *Our_Proc_File; +struct proc_dir_entry *our_proc_file; static char procfs_buffer[PROCFS_MAX_SIZE]; static unsigned long procfs_buffer_size = 0; -static ssize_t procfs_read(struct file *filp, - char *buffer, - size_t length, +static ssize_t procfs_read(struct file *filp, char *buffer, size_t length, loff_t *offset) { static int finished = 0; + if (finished) { pr_debug("procfs_read: END\n"); finished = 0; return 0; } finished = 1; + if (copy_to_user(buffer, procfs_buffer, procfs_buffer_size)) return -EFAULT; + pr_debug("procfs_read: read %lu bytes\n", procfs_buffer_size); return procfs_buffer_size; } -static ssize_t procfs_write(struct file *file, - const char *buffer, - size_t len, +static ssize_t procfs_write(struct file *file, const char *buffer, size_t len, loff_t *off) { if (len > PROCFS_MAX_SIZE) @@ -48,6 +47,7 @@ static ssize_t procfs_write(struct file *file, procfs_buffer_size = len; if (copy_from_user(procfs_buffer, buffer, procfs_buffer_size)) return -EFAULT; + pr_debug("procfs_write: write %lu bytes\n", procfs_buffer_size); return procfs_buffer_size; } @@ -63,14 +63,14 @@ int procfs_close(struct inode *inode, struct file *file) } #ifdef HAVE_PROC_OPS -static struct proc_ops File_Ops_4_Our_Proc_File = { +static struct proc_ops file_ops_4_our_proc_file = { .proc_read = procfs_read, .proc_write = procfs_write, .proc_open = procfs_open, .proc_release = procfs_close, }; #else -static const struct file_operations File_Ops_4_Our_Proc_File = { +static const struct file_operations file_ops_4_our_proc_file = { .read = procfs_read, .write = procfs_write, .open = procfs_open, @@ -80,16 +80,16 @@ static const struct file_operations File_Ops_4_Our_Proc_File = { static int __init procfs3_init(void) { - Our_Proc_File = proc_create(PROCFS_ENTRY_FILENAME, 0644, NULL, - &File_Ops_4_Our_Proc_File); - if (Our_Proc_File == NULL) { + our_proc_file = proc_create(PROCFS_ENTRY_FILENAME, 0644, NULL, + &file_ops_4_our_proc_file); + if (our_proc_file == NULL) { remove_proc_entry(PROCFS_ENTRY_FILENAME, NULL); pr_debug("Error: Could not initialize /proc/%s\n", PROCFS_ENTRY_FILENAME); return -ENOMEM; } - proc_set_size(Our_Proc_File, 80); - proc_set_user(Our_Proc_File, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID); + proc_set_size(our_proc_file, 80); + proc_set_user(our_proc_file, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID); pr_debug("/proc/%s created\n", PROCFS_ENTRY_FILENAME); return 0; diff --git a/examples/procfs4.c b/examples/procfs4.c index 9804d12..e055834 100644 --- a/examples/procfs4.c +++ b/examples/procfs4.c @@ -3,9 +3,9 @@ * This program uses the seq_file library to manage the /proc file. */ -#include /* We are doing kernel work */ -#include /* Specifically, a module */ -#include /* Necessary because we use proc fs */ +#include /* We are doing kernel work */ +#include /* Specifically, a module */ +#include /* Necessary because we use proc fs */ #include /* for seq_file */ #include @@ -29,6 +29,7 @@ static void *my_seq_start(struct seq_file *s, loff_t *pos) /* yes => return a non null value to begin the sequence */ return &counter; } + /* no => it is the end of the sequence, return end to stop reading */ *pos = 0; return NULL; @@ -39,7 +40,7 @@ static void *my_seq_start(struct seq_file *s, loff_t *pos) */ static void *my_seq_next(struct seq_file *s, void *v, loff_t *pos) { - unsigned long *tmp_v = (unsigned long *) v; + unsigned long *tmp_v = (unsigned long *)v; (*tmp_v)++; (*pos)++; return NULL; @@ -54,7 +55,7 @@ static void my_seq_stop(struct seq_file *s, void *v) /* This function is called for each "step" of a sequence. */ static int my_seq_show(struct seq_file *s, void *v) { - loff_t *spos = (loff_t *) v; + loff_t *spos = (loff_t *)v; seq_printf(s, "%Ld\n", *spos); return 0; diff --git a/examples/sched.c b/examples/sched.c index 4bf2d70..1f2da0e 100644 --- a/examples/sched.c +++ b/examples/sched.c @@ -18,7 +18,6 @@ static int __init sched_init(void) queue = alloc_workqueue("HELLOWORLD", WQ_UNBOUND, 1); INIT_WORK(&work, work_handler); schedule_work(&work); - return 0; } diff --git a/examples/sleep.c b/examples/sleep.c index e923a57..e7688fe 100644 --- a/examples/sleep.c +++ b/examples/sleep.c @@ -3,10 +3,10 @@ * at the same time, put all but one to sleep. */ -#include /* We're doing kernel work */ -#include /* Specifically, a module */ +#include /* We're doing kernel work */ +#include /* Specifically, a module */ #include /* Necessary because we use proc fs */ -#include /* For putting processes to sleep and +#include /* For putting processes to sleep and waking them up */ #include /* for get_user and put_user */ #include @@ -19,9 +19,9 @@ * input. */ #define MESSAGE_LENGTH 80 -static char Message[MESSAGE_LENGTH]; +static char message[MESSAGE_LENGTH]; -static struct proc_dir_entry *Our_Proc_File; +static struct proc_dir_entry *our_proc_file; #define PROC_ENTRY_FILENAME "sleep" /* Since we use the file operations struct, we can't use the special proc @@ -29,14 +29,14 @@ static struct proc_dir_entry *Our_Proc_File; * function. */ static ssize_t module_output(struct file *file, /* see include/linux/fs.h */ - char *buf, /* The buffer to put data to + char *buf, /* The buffer to put data to (in the user segment) */ - size_t len, /* The length of the buffer */ + size_t len, /* The length of the buffer */ loff_t *offset) { static int finished = 0; int i; - char message[MESSAGE_LENGTH + 30]; + char output_msg[MESSAGE_LENGTH + 30]; /* Return 0 to signify end of file - that we have nothing more to say * at this point. @@ -46,9 +46,9 @@ static ssize_t module_output(struct file *file, /* see include/linux/fs.h */ return 0; } - sprintf(message, "Last input:%s\n", Message); - for (i = 0; i < len && message[i]; i++) - put_user(message[i], buf + i); + sprintf(output_msg, "Last input:%s\n", message); + for (i = 0; i < len && output_msg[i]; i++) + put_user(output_msg[i], buf + i); finished = 1; return i; /* Return the number of bytes "read" */ @@ -58,9 +58,9 @@ static ssize_t module_output(struct file *file, /* see include/linux/fs.h */ * /proc file. */ static ssize_t module_input(struct file *file, /* The file itself */ - const char *buf, /* The buffer with input */ - size_t length, /* The buffer's length */ - loff_t *offset) /* offset to file - ignore */ + const char *buf, /* The buffer with input */ + size_t length, /* The buffer's length */ + loff_t *offset) /* offset to file - ignore */ { int i; @@ -68,19 +68,19 @@ static ssize_t module_input(struct file *file, /* The file itself */ * to use it. */ for (i = 0; i < MESSAGE_LENGTH - 1 && i < length; i++) - get_user(Message[i], buf + i); + get_user(message[i], buf + i); /* we want a standard, zero terminated string */ - Message[i] = '\0'; + message[i] = '\0'; /* We need to return the number of input characters used */ return i; } /* 1 if the file is currently open by somebody */ -int Already_Open = 0; +int already_open = 0; /* Queue of processes who want our file */ -DECLARE_WAIT_QUEUE_HEAD(WaitQ); +DECLARE_WAIT_QUEUE_HEAD(waitq); /* Called when the /proc file is opened */ static int module_open(struct inode *inode, struct file *file) @@ -90,7 +90,7 @@ static int module_open(struct inode *inode, struct file *file) * we should fail with -EAGAIN, meaning "you will have to try again", * instead of blocking a process which would rather stay awake. */ - if ((file->f_flags & O_NONBLOCK) && Already_Open) + if ((file->f_flags & O_NONBLOCK) && already_open) return -EAGAIN; /* This is the correct place for try_module_get(THIS_MODULE) because if @@ -100,17 +100,17 @@ static int module_open(struct inode *inode, struct file *file) try_module_get(THIS_MODULE); /* If the file is already open, wait until it is not. */ - while (Already_Open) { + while (already_open) { int i, is_sig = 0; /* This function puts the current process, including any system * calls, such as us, to sleep. Execution will be resumed right * after the function call, either because somebody called - * wake_up(&WaitQ) (only module_close does that, when the file + * wake_up(&waitq) (only module_close does that, when the file * is closed) or when a signal, such as Ctrl-C, is sent * to the process */ - wait_event_interruptible(WaitQ, !Already_Open); + wait_event_interruptible(waitq, !already_open); /* If we woke up because we got a signal we're not blocking, * return -EINTR (fail the system call). This allows processes @@ -133,27 +133,27 @@ static int module_open(struct inode *inode, struct file *file) } } - /* If we got here, Already_Open must be zero. */ + /* If we got here, already_open must be zero. */ /* Open the file */ - Already_Open = 1; + already_open = 1; return 0; /* Allow the access */ } /* Called when the /proc file is closed */ int module_close(struct inode *inode, struct file *file) { - /* Set Already_Open to zero, so one of the processes in the WaitQ will - * be able to set Already_Open back to one and to open the file. All - * the other processes will be called when Already_Open is back to one, + /* Set already_open to zero, so one of the processes in the waitq will + * be able to set already_open back to one and to open the file. All + * the other processes will be called when already_open is back to one, * so they'll go back to sleep. */ - Already_Open = 0; + already_open = 0; - /* Wake up all the processes in WaitQ, so if anybody is waiting for the + /* Wake up all the processes in waitq, so if anybody is waiting for the * file, they can have it. */ - wake_up(&WaitQ); + wake_up(&waitq); module_put(THIS_MODULE); @@ -169,14 +169,14 @@ int module_close(struct inode *inode, struct file *file) * means we don't want to deal with something. */ #ifdef HAVE_PROC_OPS -static const struct proc_ops File_Ops_4_Our_Proc_File = { - .proc_read = module_output, /* "read" from the file */ - .proc_write = module_input, /* "write" to the file */ - .proc_open = module_open, /* called when the /proc file is opened */ +static const struct proc_ops file_ops_4_our_proc_file = { + .proc_read = module_output, /* "read" from the 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 */ }; #else -static const struct file_operations File_Ops_4_Our_Proc_File = { +static const struct file_operations file_ops_4_our_proc_file = { .read = module_output, .write = module_input, .open = module_open, @@ -187,15 +187,15 @@ static const struct file_operations File_Ops_4_Our_Proc_File = { /* Initialize the module - register the proc file */ static int __init sleep_init(void) { - Our_Proc_File = - proc_create(PROC_ENTRY_FILENAME, 0644, NULL, &File_Ops_4_Our_Proc_File); - if (Our_Proc_File == NULL) { + our_proc_file = + proc_create(PROC_ENTRY_FILENAME, 0644, NULL, &file_ops_4_our_proc_file); + if (our_proc_file == NULL) { remove_proc_entry(PROC_ENTRY_FILENAME, NULL); pr_debug("Error: Could not initialize /proc/%s\n", PROC_ENTRY_FILENAME); return -ENOMEM; } - proc_set_size(Our_Proc_File, 80); - proc_set_user(Our_Proc_File, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID); + proc_set_size(our_proc_file, 80); + proc_set_user(our_proc_file, GLOBAL_ROOT_UID, GLOBAL_ROOT_GID); pr_info("/proc/%s created\n", PROC_ENTRY_FILENAME); @@ -203,7 +203,7 @@ static int __init sleep_init(void) } /* Cleanup - unregister our file from /proc. This could get dangerous if - * there are still processes waiting in WaitQ, because they are inside our + * there are still processes waiting in waitq, because they are inside our * open function, which will get unloaded. I'll explain how to avoid removal * of a kernel module in such a case in chapter 10. */ diff --git a/examples/syscall.c b/examples/syscall.c index 49c8233..5b6e45c 100644 --- a/examples/syscall.c +++ b/examples/syscall.c @@ -14,7 +14,7 @@ #include #include #include /* which will have params */ -#include /* The list of system calls */ +#include /* The list of system calls */ #include /* For the current (process) structure, we need this to know who the @@ -23,7 +23,6 @@ #include #include - /* The way we access "sys_call_table" varies as kernel internal changes. * - ver <= 5.4 : manual symbol lookup * - 5.4 < ver < 5.7 : kallsyms_lookup_name @@ -56,9 +55,9 @@ */ static unsigned long sym = 0; module_param(sym, ulong, 0644); -#endif +#endif /* CONFIG_KPROBES */ -#endif +#endif /* Version < v5.7 */ unsigned long **sys_call_table; @@ -115,9 +114,9 @@ static unsigned long **aquire_sys_call_table(void) unsigned long **sct; while (offset < ULLONG_MAX) { - sct = (unsigned long **) offset; + sct = (unsigned long **)offset; - if (sct[__NR_close] == (unsigned long *) ksys_close) + if (sct[__NR_close] == (unsigned long *)ksys_close) return sct; offset += sizeof(void *); @@ -128,23 +127,20 @@ static unsigned long **aquire_sys_call_table(void) #ifdef HAVE_PARAM const char sct_name[15] = "sys_call_table"; - char symbol[40] = {0}; + char symbol[40] = { 0 }; if (sym == 0) { - pr_alert( - "For Linux v5.7+, Kprobes is the preferable way to get " - "symbol.\n"); - pr_info( - "If Kprobes is absent, you have to specify the address of " - "sys_call_table symbol\n"); - pr_info( - "by /boot/System.map or /proc/kallsyms, which contains all the " - "symbol addresses, into sym parameter.\n"); + pr_alert("For Linux v5.7+, Kprobes is the preferable way to get " + "symbol.\n"); + pr_info("If Kprobes is absent, you have to specify the address of " + "sys_call_table symbol\n"); + pr_info("by /boot/System.map or /proc/kallsyms, which contains all the " + "symbol addresses, into sym parameter.\n"); return NULL; } sprint_symbol(symbol, sym); if (!strncmp(sct_name, symbol, sizeof(sct_name) - 1)) - return (unsigned long **) sym; + return (unsigned long **)sym; return NULL; #endif @@ -157,11 +153,11 @@ static unsigned long **aquire_sys_call_table(void) if (register_kprobe(&kp) < 0) return NULL; - kallsyms_lookup_name = (unsigned long (*)(const char *name)) kp.addr; + kallsyms_lookup_name = (unsigned long (*)(const char *name))kp.addr; unregister_kprobe(&kp); #endif - return (unsigned long **) kallsyms_lookup_name("sys_call_table"); + return (unsigned long **)kallsyms_lookup_name("sys_call_table"); } #if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 3, 0) @@ -195,10 +191,10 @@ static int __init syscall_start(void) disable_write_protection(); /* keep track of the original open function */ - original_call = (void *) sys_call_table[__NR_open]; + original_call = (void *)sys_call_table[__NR_open]; /* use our open function instead */ - sys_call_table[__NR_open] = (unsigned long *) our_sys_open; + sys_call_table[__NR_open] = (unsigned long *)our_sys_open; enable_write_protection(); @@ -213,7 +209,7 @@ static void __exit syscall_end(void) return; /* Return the system call back to normal */ - if (sys_call_table[__NR_open] != (unsigned long *) our_sys_open) { + if (sys_call_table[__NR_open] != (unsigned long *)our_sys_open) { pr_alert("Somebody else also played with the "); pr_alert("open system call\n"); pr_alert("The system may be left in "); @@ -221,7 +217,7 @@ static void __exit syscall_end(void) } disable_write_protection(); - sys_call_table[__NR_open] = (unsigned long *) original_call; + sys_call_table[__NR_open] = (unsigned long *)original_call; enable_write_protection(); msleep(2000);