tty/vt: avoid high order pages allocation on GIO_UNIMAP ioctl
authorKonstantin Khorenko <khorenko@virtuozzo.com>
Mon, 15 Apr 2019 11:17:55 +0000 (14:17 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 Apr 2019 13:21:34 +0000 (15:21 +0200)
commitfa2b360f261e31f2a54f997095713f91bac0e503
treeb264f487010f0917e842d8cc1e4ccf3fd50b0229
parentf692f7766f335ca38f0d6d1cb4c32dfad81820d4
tty/vt: avoid high order pages allocation on GIO_UNIMAP ioctl

GIO_UNIMAP can easily result in a high order allocation,
seen 6th order allocation on radeondrmfb:

  fbcon: radeondrmfb (fb0) is primary device
  Console: switching to colour frame buffer device 160x64
  radeon 0000:01:05.0: fb0: radeondrmfb frame buffer device
  WARNING: CPU: 0 PID: 78661 at mm/page_alloc.c:3532
        __alloc_pages_nodemask+0x1b1/0x600
  order 6 >= 3, gfp 0x40d0

The warning is generated by a debug patch.

At the same time it's safe to use kvmalloc() for allocation in
con_get_unimap(), so let's do the substitution.

And do the same for con_set_unimap().

Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/vt/consolemap.c