aboutsummaryrefslogtreecommitdiffstats
path: root/0001-misc-convert-to-guards.patch
diff options
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-04-28 12:17:46 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-04-28 12:17:46 +0200
commit985526ed455a72d7bfba300899a6c23eb816e031 (patch)
treed1c6a615c5f9235a948b8cc773d09aebb1013878 /0001-misc-convert-to-guards.patch
parent2889759315c1a7a867496fd5cd642c8678917171 (diff)
downloadpatches-985526ed455a72d7bfba300899a6c23eb816e031.tar.gz
updates and refresh
Diffstat (limited to '0001-misc-convert-to-guards.patch')
-rw-r--r--0001-misc-convert-to-guards.patch88
1 files changed, 25 insertions, 63 deletions
diff --git a/0001-misc-convert-to-guards.patch b/0001-misc-convert-to-guards.patch
index be8763cca4551d..a5ca0804a9aaca 100644
--- a/0001-misc-convert-to-guards.patch
+++ b/0001-misc-convert-to-guards.patch
@@ -4,14 +4,12 @@ Date: Mon, 12 Jun 2023 17:34:02 +0200
Subject: [PATCH] misc: convert to guards
---
- drivers/char/misc.c | 69 +++++++++++++++++----------------------------
- 1 file changed, 26 insertions(+), 43 deletions(-)
+ drivers/char/misc.c | 44 +++++++++++++++-----------------------------
+ 1 file changed, 15 insertions(+), 29 deletions(-)
-diff --git a/drivers/char/misc.c b/drivers/char/misc.c
-index 1c44c29a666e..9b0418a3dc0d 100644
--- a/drivers/char/misc.c
+++ b/drivers/char/misc.c
-@@ -123,10 +123,9 @@ static int misc_open(struct inode *inode, struct file *file)
+@@ -137,10 +137,9 @@ static int misc_open(struct inode *inode
{
int minor = iminor(inode);
struct miscdevice *c = NULL, *iter;
@@ -23,7 +21,7 @@ index 1c44c29a666e..9b0418a3dc0d 100644
list_for_each_entry(iter, &misc_list, list) {
if (iter->minor != minor)
-@@ -149,7 +148,7 @@ static int misc_open(struct inode *inode, struct file *file)
+@@ -163,7 +162,7 @@ static int misc_open(struct inode *inode
break;
}
if (!new_fops)
@@ -32,7 +30,7 @@ index 1c44c29a666e..9b0418a3dc0d 100644
}
/*
-@@ -159,13 +158,11 @@ static int misc_open(struct inode *inode, struct file *file)
+@@ -173,13 +172,11 @@ static int misc_open(struct inode *inode
*/
file->private_data = c;
@@ -48,8 +46,8 @@ index 1c44c29a666e..9b0418a3dc0d 100644
+ return 0;
}
- static struct class *misc_class;
-@@ -197,29 +194,24 @@ static const struct file_operations misc_fops = {
+ static char *misc_devnode(const struct device *dev, umode_t *mode)
+@@ -225,37 +222,30 @@ static const struct file_operations misc
int misc_register(struct miscdevice *misc)
{
dev_t dev;
@@ -62,17 +60,18 @@ index 1c44c29a666e..9b0418a3dc0d 100644
+ guard(mutex)(&misc_mtx);
if (is_dynamic) {
- int i = misc_minor_alloc();
+ int i = misc_minor_alloc(misc->minor);
++ if (i < 0)
++ return -EBUSY;
- if (i < 0) {
- err = -EBUSY;
- goto out;
- }
-+ if (i < 0)
-+ return -EBUSY;
misc->minor = i;
} else {
struct miscdevice *c;
+ int i;
list_for_each_entry(c, &misc_list, list) {
- if (c->minor == misc->minor) {
@@ -82,10 +81,19 @@ index 1c44c29a666e..9b0418a3dc0d 100644
+ if (c->minor == misc->minor)
+ return -EBUSY;
}
+
+ i = misc_minor_alloc(misc->minor);
+- if (i < 0) {
+- err = -EBUSY;
+- goto out;
+- }
++ if (i < 0)
++ return -EBUSY;
}
-@@ -233,8 +225,7 @@ int misc_register(struct miscdevice *misc)
- misc_minor_free(misc->minor);
+ dev = MKDEV(MISC_MAJOR, misc->minor);
+@@ -268,8 +258,7 @@ int misc_register(struct miscdevice *mis
+ if (is_dynamic) {
misc->minor = MISC_DYNAMIC_MINOR;
}
- err = PTR_ERR(misc->this_device);
@@ -94,7 +102,7 @@ index 1c44c29a666e..9b0418a3dc0d 100644
}
/*
-@@ -242,9 +233,7 @@ int misc_register(struct miscdevice *misc)
+@@ -277,9 +266,7 @@ int misc_register(struct miscdevice *mis
* earlier defaults
*/
list_add(&misc->list, &misc_list);
@@ -105,62 +113,16 @@ index 1c44c29a666e..9b0418a3dc0d 100644
}
EXPORT_SYMBOL(misc_register);
-@@ -261,11 +250,10 @@ void misc_deregister(struct miscdevice *misc)
+@@ -296,11 +283,10 @@ void misc_deregister(struct miscdevice *
if (WARN_ON(list_empty(&misc->list)))
return;
- mutex_lock(&misc_mtx);
+ guard(mutex)(&misc_mtx);
list_del(&misc->list);
- device_destroy(misc_class, MKDEV(MISC_MAJOR, misc->minor));
+ device_destroy(&misc_class, MKDEV(MISC_MAJOR, misc->minor));
misc_minor_free(misc->minor);
- mutex_unlock(&misc_mtx);
}
EXPORT_SYMBOL(misc_deregister);
-@@ -280,29 +268,24 @@ static char *misc_devnode(const struct device *dev, umode_t *mode)
- return NULL;
- }
-
-+DEFINE_FREE(class_destroy, struct class *, if (_T) class_destroy(_T));
-+DEFINE_FREE(remove_misc_proc, struct proc_dir_entry *, if (_T) remove_proc_entry("misc", NULL));
- static int __init misc_init(void)
- {
-- int err;
-- struct proc_dir_entry *ret;
-+ struct proc_dir_entry *ret __free(remove_misc_proc) = proc_create_seq("misc", 0, NULL, &misc_seq_ops);
-+ struct class *c __free(class_destroy) = class_create("misc");
-
-- ret = proc_create_seq("misc", 0, NULL, &misc_seq_ops);
-- misc_class = class_create("misc");
-- err = PTR_ERR(misc_class);
-- if (IS_ERR(misc_class))
-- goto fail_remove;
-+ if (IS_ERR(c))
-+ return PTR_ERR(c);
-
-- err = -EIO;
- if (register_chrdev(MISC_MAJOR, "misc", &misc_fops))
-- goto fail_printk;
-- misc_class->devnode = misc_devnode;
-- return 0;
-+ return -EIO;
-
--fail_printk:
-- pr_err("unable to get major %d for misc devices\n", MISC_MAJOR);
-- class_destroy(misc_class);
--fail_remove:
-- if (ret)
-- remove_proc_entry("misc", NULL);
-- return err;
-+ c->devnode = misc_devnode;
-+
-+ misc_class = no_free_ptr(c);
-+ no_free_ptr(ret);
-+
-+ return 0;
- }
- subsys_initcall(misc_init);
---
-2.44.0
-