• Alessandro Astone's avatar
    binder: Gracefully handle BINDER_TYPE_FDA objects with num_fds=0 · ef38de92
    Alessandro Astone authored
    Some android userspace is sending BINDER_TYPE_FDA objects with
    num_fds=0. Like the previous patch, this is reproducible when
    playing a video.
    
    Before commit 09184ae9 BINDER_TYPE_FDA objects with num_fds=0
    were 'correctly handled', as in no fixup was performed.
    
    After commit 09184ae9 we aggregate fixup and skip regions in
    binder_ptr_fixup structs and distinguish between the two by using
    the skip_size field: if it's 0, then it's a fixup, otherwise skip.
    When processing BINDER_TYPE_FDA objects with num_fds=0 we add a
    skip region of skip_size=0, and this causes issues because now
    binder_do_deferred_txn_copies will think this was a fixup region.
    
    To address that, return early from binder_translate_fd_array to
    avoid adding an empty skip region.
    
    Fixes: 09184ae9
    
     ("binder: defer copies of pre-patched txn data")
    Acked-by: default avatarTodd Kjos <tkjos@google.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarAlessandro Astone <ales.astone@gmail.com>
    L...
    ef38de92
binder.c 178 KB