[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Fixes integer overflow or integer truncation issues in page lookups, ttm place configuration and scatterlist creation
Gwan-gyeong Mun
gwan-gyeong.mun at intel.com
Thu Dec 29 08:35:06 UTC 2022
On 12/28/22 9:51 PM, Patchwork wrote:
> == Series Details ==
>
> Series: Fixes integer overflow or integer truncation issues in page lookups, ttm place configuration and scatterlist creation
> URL : https://patchwork.freedesktop.org/series/112279/
> State : warning
>
> == Summary ==
>
> Error: dim checkpatch failed
> 580bc7c6ee10 drm/i915/gem: Typecheck page lookups
> -:56: WARNING:DEPRECATED_API: Deprecated use of 'kmap_atomic', prefer 'kmap_local_page' instead
> #56: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.c:434:
> + src_map = kmap_atomic(i915_gem_object_get_page(obj, idx));
The kmap_atomic() used in this patch series is not a new addition, but
the input argument used in the existing kmap_atomic() call is replaced
with a local variable.
Therefore, I suggest the discussion of replacing kmap_atomic() with
kmap_local_page() should be considered in a separate patch.
Unlike kmap_local_page(), kmap_atomic() is accompanied by additional
operations (preempt_disable, pagefault_disable).
Therefore, it is necessary to separately review whether there is a side
effect by changing kmap_atomic() to kmap_local_page().
(Note. In the current implementation on i915, only kmap_atomic() is used
(used in 13 places) and kmap_local_page() is not used.)
[include/linux/highmem-internal.h]
static inline void *kmap_atomic(struct page *page)
{
if (IS_ENABLED(CONFIG_PREEMPT_RT))
migrate_disable();
else
preempt_disable();
pagefault_disable();
return page_address(page);
}
...
static inline void *kmap_local_page(struct page *page)
{
return page_address(page);
}
>
> -:76: WARNING:AVOID_BUG: Do not crash the kernel unless it is absolutely unavoidable--use WARN_ON_ONCE() plus recovery code (if feasible) instead of BUG() or variants
> #76: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.c:489:
> + GEM_BUG_ON(overflows_type(offset >> PAGE_SHIFT, pgoff_t));
GEM_BUG_ON() used in this patch series is not a new addition, but the
macro of the argument used for input has been changed from the
previously used GEM_BUG_ON().
Changing GEM_BUG_ON() to a recoverable code should be considered in a
separate patch.
Br,
G.G.
>
> -:150: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #150: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:413:
> +#define i915_gem_object_page_iter_get_sg(obj, it, n, offset) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_page_iter_get_sg(obj, it, n, offset); \
> +})
>
> -:199: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #199: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:458:
> +#define i915_gem_object_get_sg(obj, n, offset) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_sg(obj, n, offset); \
> +})
>
> -:248: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #248: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:503:
> +#define i915_gem_object_get_sg_dma(obj, n, offset) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_sg_dma(obj, n, offset); \
> +})
>
> -:286: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #286: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:539:
> +#define i915_gem_object_get_page(obj, n) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_page(obj, n); \
> +})
>
> -:323: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #323: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:574:
> +#define i915_gem_object_get_dirty_page(obj, n) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_dirty_page(obj, n); \
> +})
>
> -:364: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #364: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:612:
> +#define i915_gem_object_get_dma_address_len(obj, n, len) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_dma_address_len(obj, n, len); \
> +})
>
> -:401: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'n' - possible side-effects?
> #401: FILE: drivers/gpu/drm/i915/gem/i915_gem_object.h:647:
> +#define i915_gem_object_get_dma_address(obj, n) ({ \
> + static_assert(castable_to_type(n, pgoff_t)); \
> + __i915_gem_object_get_dma_address(obj, n); \
> +})
>
> total: 0 errors, 2 warnings, 7 checks, 616 lines checked
> 383085856287 drm/i915: Check for integer truncation on scatterlist creation
> 60d38f11dfc7 drm/i915: Check for integer truncation on the configuration of ttm place
> c51e58da471c drm/i915: Check if the size is too big while creating shmem file
> 96ee63399a5e drm/i915: Use error code as -E2BIG when the size of gem ttm object is too large
> 2402a45e5aac drm/i915: Remove truncation warning for large objects
>
>
More information about the Intel-gfx
mailing list