Skip to content
  • Linus Torvalds's avatar
    fbcon: add lifetime refcount to opened frame buffers · 698b3682
    Linus Torvalds authored
    
    
    This just adds the refcount and the new registration lock logic.  It
    does not (for example) actually change the read/write/ioctl routines to
    actually use the frame buffer that was opened: those function still end
    up alway susing whatever the current frame buffer is at the time of the
    call.
    
    Without this, if something holds the frame buffer open over a
    framebuffer switch, the close() operation after the switch will access a
    fb_info that has been free'd by the unregistering of the old frame
    buffer.
    
    (The read/write/ioctl operations will normally not cause problems,
    because they will - illogically - pick up the new fbcon instead.  But a
    switch that happens just as one of those is going on might see problems
    too, the window is just much smaller: one individual op rather than the
    whole open-close sequence.)
    
    This use-after-free is apparently fairly easily triggered by the Ubuntu
    11.04 boot sequence.
    
    Acked-by: default avatarTim Gardner <tim.gardner@canonical.com>
    Tested-by: default avatarDaniel J Blueman <daniel.blueman@gmail.com>
    Tested-by: default avatarAnca Emanuel <anca.emanuel@gmail.com>
    Cc: Bruno Prémont <bonbons@linux-vserver.org>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: Dave Airlie <airlied@redhat.com>
    Cc: Andy Whitcroft <andy.whitcroft@canonical.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    698b3682