• Paul Mundt's avatar
    video: sh_mobile_lcdcfb: Don't attempt to map zero-length scatterlists. · 5c1a56b5
    Paul Mundt authored
    More aggressive DMA mapping debugging has uncovered a long-standing
    buglet in the way that the sh_mobile_lcdcfb driver implements its
    deferred I/O callback. When used as a console driver the acceleration
    routines are called by the kernel which subsequently cause the deferred
    I/O work to be scheduled, resulting in the deferred I/O callback being
    entered without any dirty pages on the pagelist (the normal case for
    userspace accesses). It's also possible to get in to this situation via
    explicit calling of fsync() when nothing has dirtied the region.
    
    Unfortunately it's not sufficient to skip over the callback when the
    pagelist is empty given the console driver use case, so instead the
    callback has to conditionalize the work for panel updates and DMA
    mapping depending on whether anything is resident on the pagelist or
    not.
    Reported-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
    Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
    5c1a56b5
sh_mobile_lcdcfb.c 28.6 KB