The function uses too vague variable names like i, j, k for iterators, p, q, p1, p2 for pointers etc. Rename all these, so that it is clear what is going on: - dict: for dictionaries. - d, r, g: for dir, row, glyph iterators -- these are unsigned now. - dir, row: for directory and row pointers. - glyph: for the glyph. - and so on... This is a lot of shuffling, but the result pays off, IMO. Signed-off-by: Jiri Slaby <jslaby@xxxxxxx> --- drivers/tty/vt/consolemap.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/drivers/tty/vt/consolemap.c b/drivers/tty/vt/consolemap.c index cbdc73605148..456aed3f717c 100644 --- a/drivers/tty/vt/consolemap.c +++ b/drivers/tty/vt/consolemap.c @@ -531,24 +531,23 @@ con_insert_unipair(struct uni_pagedict *p, u_short unicode, u_short fontpos) /* Caller must hold the lock */ static int con_do_clear_unimap(struct vc_data *vc) { - struct uni_pagedict *p, *q; + struct uni_pagedict *old = *vc->vc_uni_pagedir_loc; - p = *vc->vc_uni_pagedir_loc; - if (!p || --p->refcount) { - q = kzalloc(sizeof(*p), GFP_KERNEL); - if (!q) { - if (p) - p->refcount++; + if (!old || --old->refcount) { + struct uni_pagedict *new = kzalloc(sizeof(*new), GFP_KERNEL); + if (!new) { + if (old) + old->refcount++; return -ENOMEM; } - q->refcount=1; - *vc->vc_uni_pagedir_loc = q; + new->refcount = 1; + *vc->vc_uni_pagedir_loc = new; } else { - if (p == dflt) + if (old == dflt) dflt = NULL; - p->refcount++; - p->sum = 0; - con_release_unimap(p); + old->refcount++; + old->sum = 0; + con_release_unimap(old); } return 0; } -- 2.36.1