• Colin Cross's avatar
    ion: hold reference to handle after ion_uhandle_get · 83271f62
    Colin Cross authored
    commit 1262ab1846cf76f7549c66ef709120dbfbe6d49f (ion: replace
    userspace handle cookies with idr) broke the locking in ion.
    The ION_IOC_FREE and ION_IOC_MAP ioctls were relying on
    ion_handle_validate to detect the case where a call raced
    with another ION_IOC_FREE which may have freed the struct
    ion_handle.
    
    Rename ion_uhandle_get to ion_handle_get_by_id, and have it
    take the client lock and return with an extra reference to
    the handle.  Make each caller put its reference once it
    is done with the handle.
    
    Also modify users of ion_handle_validate to continue to hold
    the client lock after calling ion_handle_validate until
    they are done with the handle, and warn if ion_handle_validate
    is called without the client lock held.
    Signed-off-by: default avatarColin Cross <ccross@android.com>
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    83271f62
ion.c 37.4 KB