]> git.baikalelectronics.ru Git - kernel.git/commitdiff
tty/vt: consolemap: extract con_allocate_new() from con_do_clear_unimap()
authorJiri Slaby <jslaby@suse.cz>
Tue, 7 Jun 2022 10:49:44 +0000 (12:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Jun 2022 11:37:03 +0000 (13:37 +0200)
The first part of con_do_clear_unimap() is needed on another place, so
extract it to a separate function called con_allocate_new(). It will be
used once more in the next patch.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Link: https://lore.kernel.org/r/20220607104946.18710-34-jslaby@suse.cz
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/consolemap.c

index 4d8efe74315c2adb256241492b6293e841d614ee..14d3fbff015ce8067d6e5a5bb250a29a98f988c3 100644 (file)
@@ -530,27 +530,35 @@ con_insert_unipair(struct uni_pagedict *p, u_short unicode, u_short fontpos)
        return 0;
 }
 
+static int con_allocate_new(struct vc_data *vc)
+{
+       struct uni_pagedict *new, *old = *vc->vc_uni_pagedir_loc;
+
+       new = kzalloc(sizeof(*new), GFP_KERNEL);
+       if (!new)
+               return -ENOMEM;
+
+       new->refcount = 1;
+       *vc->vc_uni_pagedir_loc = new;
+
+       if (old)
+               old->refcount--;
+
+       return 0;
+}
+
 /* Caller must hold the lock */
 static int con_do_clear_unimap(struct vc_data *vc)
 {
        struct uni_pagedict *old = *vc->vc_uni_pagedir_loc;
 
-       if (!old || old->refcount > 1) {
-               struct uni_pagedict *new = kzalloc(sizeof(*new), GFP_KERNEL);
-               if (!new)
-                       return -ENOMEM;
-
-               new->refcount = 1;
-               *vc->vc_uni_pagedir_loc = new;
+       if (!old || old->refcount > 1)
+               return con_allocate_new(vc);
 
-               if (old)
-                       old->refcount--;
-       } else {
-               if (old == dflt)
-                       dflt = NULL;
-               old->sum = 0;
-               con_release_unimap(old);
-       }
+       if (old == dflt)
+               dflt = NULL;
+       old->sum = 0;
+       con_release_unimap(old);
 
        return 0;
 }