Re: tty: kmalloc size WARNING in vc_do_resize
From: Dmitry Vyukov
Date: Mon Jan 25 2016 - 12:02:44 EST
On Mon, Jan 25, 2016 at 5:12 PM, One Thousand Gnomes
<gnomes@xxxxxxxxxxxxxxxxxxx> wrote:
>> I think that either the kmalloc should use __GFP_NOWARN or
>> vc_do_resize should do stricter size check.
>
> vc_do_resize doesn't know enough to do a stricter size check. There are
> not many methods it calls but those are:
>
> vgacon_resize doesn't error when stupid things happen because of a silly
> hack for legacy svgatextmode tools.
>
> sisusbcon_resize does the right checks but we can get in a situation
> where we unplug during a resize so attempting to resize and size back
> might fail.
>
> fbcon_resize does the right thing, but again can error if we go
> size/resize/size back.
>
> That means we really have to guess or would have to add 'max size' info
> the structures. Right now it's clamped to 1Gbyte which is a 32767 x 32767
> character display and probably ludicrous. Clamping to 4048 x 1024 chars
> would cover displays up to 16K x 6K even with the 4x6 font (which is
> insane on a 4K display, let alone 4 of them).
OK, then kmalloc call needs to include __GFP_NOWARN for cases when
size is too large (large than 8MB).