diff --git a/00/.config b/00/config similarity index 100% rename from 00/.config rename to 00/config diff --git a/01/main.c b/01/main.c index 5f04a06..e6cadc8 100644 --- a/01/main.c +++ b/01/main.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -5,16 +6,16 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("hello world module"); -static int __init hello_init(void) -{ - pr_info("Hello world!\n"); - return 0; -} +static int __init hello_init(void) +{ + pr_info("Hello world!\n"); + return 0; +} -static void __exit hello_exit(void) -{ - pr_info("Cleaning up module.\n"); -} +static void __exit hello_exit(void) +{ + pr_info("Cleaning up module.\n"); +} -module_init(hello_init); -module_exit(hello_exit); +module_init(hello_init); +module_exit(hello_exit); diff --git a/04/hello-world.c b/04/hello-world.c index 5f04a06..e6cadc8 100644 --- a/04/hello-world.c +++ b/04/hello-world.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -5,16 +6,16 @@ MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("hello world module"); -static int __init hello_init(void) -{ - pr_info("Hello world!\n"); - return 0; -} +static int __init hello_init(void) +{ + pr_info("Hello world!\n"); + return 0; +} -static void __exit hello_exit(void) -{ - pr_info("Cleaning up module.\n"); -} +static void __exit hello_exit(void) +{ + pr_info("Cleaning up module.\n"); +} -module_init(hello_init); -module_exit(hello_exit); +module_init(hello_init); +module_exit(hello_exit); diff --git a/05/main.c b/05/main.c index 02d6117..acd98a4 100644 --- a/05/main.c +++ b/05/main.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -13,30 +14,30 @@ ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off); ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off); static const struct file_operations fops = { - .owner = THIS_MODULE, - .read = dev_read, - .write = dev_write, + .owner = THIS_MODULE, + .read = dev_read, + .write = dev_write, }; static struct miscdevice dev = { - .minor = MISC_DYNAMIC_MINOR, - .name = FILENAME, - .fops = &fops, - .mode = 0666, + .minor = MISC_DYNAMIC_MINOR, + .name = FILENAME, + .fops = &fops, + .mode = 0666, }; -static int __init fortytwo_init(void) -{ +static int __init fortytwo_init(void) +{ pr_info("creating fortytwo misc device\n"); return misc_register(&dev); -} +} -static void __exit fortytwo_exit(void) -{ - pr_info("removing forytwo misc device\n"); +static void __exit fortytwo_exit(void) +{ + pr_info("removing forytwo misc device\n"); misc_deregister(&dev); -} +} -module_init(fortytwo_init); +module_init(fortytwo_init); module_exit(fortytwo_exit); diff --git a/05/rw.c b/05/rw.c index fb71d26..02ff284 100644 --- a/05/rw.c +++ b/05/rw.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -9,27 +10,29 @@ ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off); ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off); -ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off) { - char msg[] = VALUE; +ssize_t dev_read(struct file *f, char __user *buf, size_t len, loff_t *off) +{ + char msg[] = VALUE; + pr_info("someone read from the file\n"); - return simple_read_from_buffer(buf, len, off, msg, sizeof(msg) - 1); + return simple_read_from_buffer(buf, len, off, msg, sizeof(msg) - 1); } +ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off) +{ + char kbuf[64]; -ssize_t dev_write(struct file *f, const char __user *buf, size_t len, loff_t *off) { - char kbuf[64]; - if (len > sizeof(kbuf) - 1) - return -EINVAL; - if (copy_from_user(kbuf, buf, len)) - return -EINVAL; + if (len > sizeof(kbuf) - 1) + return -EINVAL; + if (copy_from_user(kbuf, buf, len)) + return -EINVAL; - kbuf[len] = '\0'; + kbuf[len] = '\0'; - if (strcmp(kbuf, VALUE) == 0) - { + if (strcmp(kbuf, VALUE) == 0) { pr_info("someone wrote the right string\n"); - return len; + return len; } pr_info("someone wrote the wrong string\n"); - return -EINVAL; + return -EINVAL; } diff --git a/07/foo.c b/07/foo.c index c67fe19..8e31703 100644 --- a/07/foo.c +++ b/07/foo.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -13,7 +14,7 @@ ssize_t foo_write(struct file *f, const char __user *buf, size_t len, loff_t *of int init_foo(void); char buffer[PAGE_SIZE]; -size_t buffer_len = 0; +size_t buffer_len; DEFINE_MUTEX(rw_lock); static const struct file_operations fops = { @@ -26,7 +27,7 @@ static const struct file_operations fops = { ssize_t foo_read(struct file *f, char __user *buf, size_t len, loff_t *off) { size_t read; - + mutex_lock(&rw_lock); read = simple_read_from_buffer(buf, len, off, buffer, buffer_len); mutex_unlock(&rw_lock); @@ -39,8 +40,7 @@ ssize_t foo_write(struct file *f, const char __user *buf, size_t len, loff_t *of if (len > sizeof(buffer)) return -EINVAL; mutex_lock(&rw_lock); - if (copy_from_user(buffer, buf, len)) - { + if (copy_from_user(buffer, buf, len)) { mutex_unlock(&rw_lock); return -EINVAL; } @@ -55,6 +55,7 @@ int init_foo(void) mutex_init(&rw_lock); ret = debugfs_create_file("foo", 0644, module_dir, NULL, &fops); - if (IS_ERR(ret)) return PTR_ERR(ret); + if (IS_ERR(ret)) + return PTR_ERR(ret); return 0; } diff --git a/07/id.c b/07/id.c index d418623..1785c4d 100644 --- a/07/id.c +++ b/07/id.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -21,6 +22,7 @@ static const struct file_operations fops = { ssize_t id_read(struct file *f, char __user *buf, size_t len, loff_t *off) { char msg[] = VALUE; + pr_info("someone read from the file\n"); return simple_read_from_buffer(buf, len, off, msg, sizeof(msg) - 1); } @@ -29,6 +31,7 @@ ssize_t id_read(struct file *f, char __user *buf, size_t len, loff_t *off) ssize_t id_write(struct file *f, const char __user *buf, size_t len, loff_t *off) { char kbuf[64]; + if (len > sizeof(kbuf) - 1) return -EINVAL; if (copy_from_user(kbuf, buf, len)) @@ -36,7 +39,7 @@ ssize_t id_write(struct file *f, const char __user *buf, size_t len, loff_t *off kbuf[len] = '\0'; - if (strcmp(kbuf, VALUE) == 0){ + if (strcmp(kbuf, VALUE) == 0) { pr_info("someone wrote the right string\n"); return len; } @@ -47,8 +50,9 @@ ssize_t id_write(struct file *f, const char __user *buf, size_t len, loff_t *off int init_id(void) { struct dentry *ret; + ret = debugfs_create_file("id", 0666, module_dir, NULL, &fops); - if(IS_ERR(ret)) + if (IS_ERR(ret)) return PTR_ERR(ret); return 0; } diff --git a/07/main.c b/07/main.c index 5a7bf5f..148b992 100644 --- a/07/main.c +++ b/07/main.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -15,8 +16,8 @@ int init_foo(void); struct dentry *module_dir; -static int __init fortytwo_debug_init(void) -{ +static int __init fortytwo_debug_init(void) +{ int err = 0; pr_info("creating fortytwo debug dir\n"); @@ -27,18 +28,19 @@ static int __init fortytwo_debug_init(void) debugfs_create_u64("jiffies", 0444, module_dir, (uint64_t *)(&jiffies)); err = init_id(); - if (err) return err; + if (err) + return err; err = init_foo(); - if(err) return err; + if (err) + return err; return 0; -} +} -static void __exit fortytwo_debug_exit(void) -{ - pr_info("removing forytwo debug dir\n"); +static void __exit fortytwo_debug_exit(void) +{ + pr_info("removing forytwo debug dir\n"); debugfs_remove(module_dir); -} +} -module_init(fortytwo_debug_init); +module_init(fortytwo_debug_init); module_exit(fortytwo_debug_exit); - diff --git a/09/main.c b/09/main.c index 82edcd5..1bae908 100644 --- a/09/main.c +++ b/09/main.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -27,18 +28,18 @@ static const struct proc_ops proc_fops = { .proc_release = single_release, }; -static int __init mounts_init(void) -{ +static int __init mounts_init(void) +{ proc_file = proc_create("mymounts", 0444, 0, &proc_fops); - if(IS_ERR(proc_file)) return PTR_ERR(proc_file); + if (IS_ERR(proc_file)) + return PTR_ERR(proc_file); return 0; -} +} -static void __exit mounts_exit(void) -{ +static void __exit mounts_exit(void) +{ proc_remove(proc_file); -} +} -module_init(mounts_init); +module_init(mounts_init); module_exit(mounts_exit); - diff --git a/09/rw.c b/09/rw.c index fca14b5..311fd24 100644 --- a/09/rw.c +++ b/09/rw.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 #include #include #include @@ -21,17 +22,16 @@ int list_mounts(struct seq_file *m, void *v) cur = current->nsproxy->mnt_ns->mnt_first_node; buf = kmalloc(sizeof(char) * PATH_MAX, GFP_KERNEL); - while(cur) - { + while (cur) { mnt = rb_entry(cur, struct mount, mnt_node); struct path p = { - .mnt = &mnt->mnt, - .dentry = mnt->mnt.mnt_root, + .mnt = &mnt->mnt, + .dentry = mnt->mnt.mnt_root, }; path = d_path(&p, buf, PATH_MAX); - if(IS_ERR(path)) + if (IS_ERR(path)) path = 0; seq_printf(m, "%-10s %s\n", mnt->mnt_devname, path); cur = rb_next(cur);