• Stefan Richter's avatar
    V4L/DVB: firedtv: do not DMA-map stack addresses · 3fb80ef3
    Stefan Richter authored
    This is a portability fix and reduces stack usage.
    
    The DMA mapping API cannot map on-stack addresses, as explained in
    Documentation/DMA-mapping.txt.  Convert the two cases of on-stack packet
    payload buffers in firedtv (payload of write requests in avc_write and
    of lock requests in cmp_lock) to slab-allocated memory.
    
    We use the 512 bytes sized FCP frame buffer in struct firedtv for this
    purpose.  Previously it held only incoming FCP responses, now it holds
    pending FCP requests and is then overwriten by an FCP response from the
    tuner subunit.  Ditto for CMP lock requests and responses.  Accesses to
    the payload buffer are serialized by fdtv->avc_mutex.
    
    As a welcome side effect, stack usage of the AV/C transaction functions
    is reduced by 512 bytes.
    
    Alas, avc_register_remote_control() is a special case:  It previously
    did not wait for a response.  To fit better in with the other FCP
    transactions, let it wait for an interim response.
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
    3fb80ef3
firedtv-dvb.c 8.83 KB