• C
    dma-buf: avoid using IS_ERR_OR_NULL · fee0c54e
    Colin Cross 提交于
    dma_buf_map_attachment and dma_buf_vmap can return NULL or
    ERR_PTR on a error.  This encourages a common buggy pattern in
    callers:
    	sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL);
    	if (IS_ERR_OR_NULL(sgt))
                    return PTR_ERR(sgt);
    
    This causes the caller to return 0 on an error.  IS_ERR_OR_NULL
    is almost always a sign of poorly-defined error handling.
    
    This patch converts dma_buf_map_attachment to always return
    ERR_PTR, and fixes the callers that incorrectly handled NULL.
    There are a few more callers that were not checking for NULL
    at all, which would have dereferenced a NULL pointer later.
    There are also a few more callers that correctly handled NULL
    and ERR_PTR differently, I left those alone but they could also
    be modified to delete the NULL check.
    
    This patch also converts dma_buf_vmap to always return NULL.
    All the callers to dma_buf_vmap only check for NULL, and would
    have dereferenced an ERR_PTR and panic'd if one was ever
    returned. This is not consistent with the rest of the dma buf
    APIs, but matches the expectations of all of the callers.
    Signed-off-by: NColin Cross <ccross@android.com>
    Reviewed-by: NRob Clark <robdclark@gmail.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    fee0c54e
videobuf2-dma-contig.c 19.1 KB