| From: Jiri Slaby <jslaby@suse.cz> |
| Date: Thu, 31 Mar 2016 10:08:15 +0200 |
| Subject: tty: vt, get rid of weird source code flow |
| |
| commit 34902b7f2754e6d890feb0cee34187f1bc75c930 upstream. |
| |
| Some code in vc_allocate is indented by 4 spaces. It is inside a |
| condition. Invert the condition and move the code to the first |
| indentation level (using \tab). And insert some empty lines to have |
| logical code blocks separated. |
| |
| Then, instead of freeing in an 'if' false branch, use goto-error |
| label as fail path. |
| |
| Maybe better to look at this patch with diff -w -b. |
| |
| Signed-off-by: Jiri Slaby <jslaby@suse.cz> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/tty/vt/vt.c | 70 +++++++++++++++++++++++++-------------------- |
| 1 file changed, 39 insertions(+), 31 deletions(-) |
| |
| --- a/drivers/tty/vt/vt.c |
| +++ b/drivers/tty/vt/vt.c |
| @@ -752,46 +752,54 @@ static void visual_init(struct vc_data * |
| |
| int vc_allocate(unsigned int currcons) /* return 0 on success */ |
| { |
| + struct vt_notifier_param param; |
| + struct vc_data *vc; |
| + |
| WARN_CONSOLE_UNLOCKED(); |
| |
| if (currcons >= MAX_NR_CONSOLES) |
| return -ENXIO; |
| - if (!vc_cons[currcons].d) { |
| - struct vc_data *vc; |
| - struct vt_notifier_param param; |
| - |
| - /* due to the granularity of kmalloc, we waste some memory here */ |
| - /* the alloc is done in two steps, to optimize the common situation |
| - of a 25x80 console (structsize=216, screenbuf_size=4000) */ |
| - /* although the numbers above are not valid since long ago, the |
| - point is still up-to-date and the comment still has its value |
| - even if only as a historical artifact. --mj, July 1998 */ |
| - param.vc = vc = kzalloc(sizeof(struct vc_data), GFP_KERNEL); |
| - if (!vc) |
| + |
| + if (vc_cons[currcons].d) |
| + return 0; |
| + |
| + /* due to the granularity of kmalloc, we waste some memory here */ |
| + /* the alloc is done in two steps, to optimize the common situation |
| + of a 25x80 console (structsize=216, screenbuf_size=4000) */ |
| + /* although the numbers above are not valid since long ago, the |
| + point is still up-to-date and the comment still has its value |
| + even if only as a historical artifact. --mj, July 1998 */ |
| + param.vc = vc = kzalloc(sizeof(struct vc_data), GFP_KERNEL); |
| + if (!vc) |
| return -ENOMEM; |
| - vc_cons[currcons].d = vc; |
| - tty_port_init(&vc->port); |
| - INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); |
| - visual_init(vc, currcons, 1); |
| - if (!*vc->vc_uni_pagedir_loc) |
| + |
| + vc_cons[currcons].d = vc; |
| + tty_port_init(&vc->port); |
| + INIT_WORK(&vc_cons[currcons].SAK_work, vc_SAK); |
| + |
| + visual_init(vc, currcons, 1); |
| + |
| + if (!*vc->vc_uni_pagedir_loc) |
| con_set_default_unimap(vc); |
| - vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL); |
| - if (!vc->vc_screenbuf) { |
| - kfree(vc); |
| - vc_cons[currcons].d = NULL; |
| - return -ENOMEM; |
| - } |
| |
| - /* If no drivers have overridden us and the user didn't pass a |
| - boot option, default to displaying the cursor */ |
| - if (global_cursor_default == -1) |
| - global_cursor_default = 1; |
| - |
| - vc_init(vc, vc->vc_rows, vc->vc_cols, 1); |
| - vcs_make_sysfs(currcons); |
| - atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); |
| - } |
| + vc->vc_screenbuf = kmalloc(vc->vc_screenbuf_size, GFP_KERNEL); |
| + if (!vc->vc_screenbuf) |
| + goto err_free; |
| + |
| + /* If no drivers have overridden us and the user didn't pass a |
| + boot option, default to displaying the cursor */ |
| + if (global_cursor_default == -1) |
| + global_cursor_default = 1; |
| + |
| + vc_init(vc, vc->vc_rows, vc->vc_cols, 1); |
| + vcs_make_sysfs(currcons); |
| + atomic_notifier_call_chain(&vt_notifier_list, VT_ALLOCATE, ¶m); |
| + |
| return 0; |
| +err_free: |
| + kfree(vc); |
| + vc_cons[currcons].d = NULL; |
| + return -ENOMEM; |
| } |
| |
| static inline int resize_screen(struct vc_data *vc, int width, int height, |