linux/drivers/tty
Meng Xu 8ffb82094b tty: vt: remove multi-fetch, derive font.height from font.data
In con_font_set(), when we need to guess font height (for
compat reasons?), the current approach uses multiple userspace
fetches, i.e., get_user(tmp, &charmap[32*i+h-1]), to derive
the height. This has two drawbacks:

1. performance: accessing userspace memory is less efficient than
directly de-reference the byte

2. security: a more critical problem is that the height derived
might not match with the actual font.data. This is because a user
thread might race condition to change the memory of op->data after
the op->height guessing but before the second fetch: font.data =
memdup_user(op->data, size). Leaving font.height = 32 while the
actual height is 1 or vice-versa.

This patch tries to resolve both issues by re-locating the height
guessing part after the font.data is fetched in. In this way, the
userspace data is fetched in one shot and we directly dereference
the font.data in kernel space to probe for the height.

Signed-off-by: Meng Xu <mengxu.gatech@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-10-20 14:06:45 +02:00
..
hvc powerpc updates for 4.14 2017-09-07 10:15:40 -07:00
ipwireless networking: introduce and use skb_put_data() 2017-06-16 11:48:37 -04:00
serdev tty: Convert to using %pOF instead of full_name 2017-07-30 07:35:28 -07:00
serial serial: sh-sci: Fix init data attribute for struct 'port_cfg' 2017-10-20 13:57:37 +02:00
vt tty: vt: remove multi-fetch, derive font.height from font.data 2017-10-20 14:06:45 +02:00
amiserial.c tty: amiserial: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
bfin_jtag_comm.c
cyclades.c tty: cyclades: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
ehv_bytechan.c tty: Convert to using %pOF instead of full_name 2017-07-30 07:35:28 -07:00
goldfish.c tty: goldfish: Implement support for kernel 'earlycon' parameter 2017-08-31 18:58:45 +02:00
isicom.c tty: isicom: constify pci_device_id. 2017-07-30 07:35:27 -07:00
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next 2017-09-10 09:57:23 -07:00
Makefile sparc64: vcc: Enable VCC module in linux 2017-08-15 21:33:50 -07:00
metag_da.c timers, drivers/tty/metag_da: Initialize the poll timer as pinned 2016-07-07 10:25:14 +02:00
mips_ejtag_fdc.c tty: mips_ejtag_fdc: constify mips_cdmm_device_id 2017-08-28 20:51:22 +02:00
moxa.c tty: moxa: constify pci_device_id. 2017-07-30 07:35:28 -07:00
moxa.h
mxser.c Merge 4.14-rc4 into tty-next 2017-10-09 09:05:05 +02:00
mxser.h
n_gsm.c drivers: tty: n_gsm: use setup_timer() helper. 2017-10-03 20:28:36 +02:00
n_hdlc.c format-security: move static strings to const 2017-05-08 17:15:14 -07:00
n_null.c tty: handle the case where we cannot restore a line discipline 2017-06-03 18:43:46 +09:00
n_r3964.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
n_tracerouter.c
n_tracesink.c
n_tracesink.h
n_tty.c
nozomi.c tty: nozomi: avoid sprintf buffer overflow 2016-11-29 20:20:07 +01:00
pty.c TTY/Serial updates for 4.14-rc1 2017-09-05 10:30:48 -07:00
rocket_int.h
rocket.c tty: rocket: drop broken alt-speed support 2017-06-13 11:49:58 +02:00
rocket.h
synclink_gt.c tty: synclink_gt: constify pci_device_id. 2017-07-30 07:35:28 -07:00
synclink.c tty: synclink: Reuse an existing error handling path 2017-09-18 18:31:48 +02:00
synclinkmp.c tty: synclinkmp: constify pci_device_id. 2017-07-30 07:35:27 -07:00
sysrq.c sysrq : fix Show Regs call trace on ARM 2017-10-04 10:52:00 +02:00
tty_audit.c
tty_baudrate.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_buffer.c tty: fix __tty_insert_flip_char regression 2017-08-02 06:58:17 -07:00
tty_io.c Staging/IIO driver updates for 4.14-rc1 2017-09-05 10:36:26 -07:00
tty_ioctl.c tty: move baudrate handling code to a file of its own 2017-04-18 18:01:52 +02:00
tty_jobctrl.c tty: split job control support into a file of its own 2017-04-18 18:01:52 +02:00
tty_ldisc.c TTY/Serial patches for 4.13-rc1 2017-07-03 20:04:16 -07:00
tty_ldsem.c sched/headers: Prepare to move the get_task_struct()/put_task_struct() and related APIs from <linux/sched.h> to <linux/sched/task.h> 2017-03-02 08:42:40 +01:00
tty_mutex.c
tty_port.c ttyport: trivial fix for some typo in comments 2017-09-18 18:31:48 +02:00
vcc.c drivers: tty: vcc: use setup_timer() helper. 2017-10-03 20:28:36 +02:00