Re: [PATCH 1/2] drm/i915: Squelch smatch warning for statement with no effect

Jani Nikula
2017-01-25T11:25:26Z

On Fri, 20 Jan 2017, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> The sgt iterators cause an
>
> drivers/gpu/drm/i915/i915_gpu_error.c:846 i915_error_object_create() warn: statement has no effect 7
>
> everywhere they are used. If we change the code slightly, we can achieve
> the same increment without altering the output or raising a warning.

I've never liked using logical OR short circuiting for assignments like
this anyway, so I think this is an improvement no matter what.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>

>
> text data bss dec hex filename
> 1267906 20587 3168 1291661 13b58d before
> 1267906 20587 3168 1291661 13b58d after
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 1b340eb0db19..ebe2f6c737f7 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2620,8 +2620,8 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg)
> #define for_each_sgt_dma(__dmap, __iter, __sgt) \
> for ((__iter) = __sgt_iter((__sgt)->sgl, true); \
> ((__dmap) = (__iter).dma + (__iter).curr); \
> - (((__iter).curr += PAGE_SIZE) < (__iter).max) || \
> - ((__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0))
> + (((__iter).curr += PAGE_SIZE) >= (__iter).max) ? \
> + (__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0 : 0)
>
> /**
> * for_each_sgt_page - iterate over the pages of the given sg_table
> @@ -2633,8 +2633,8 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg)
> for ((__iter) = __sgt_iter((__sgt)->sgl, false); \
> ((__pp) = (__iter).pfn == 0 ? NULL : \
> pfn_to_page((__iter).pfn + ((__iter).curr >> PAGE_SHIFT))); \
> - (((__iter).curr += PAGE_SIZE) < (__iter).max) || \
> - ((__iter) = __sgt_iter(__sg_next((__iter).sgp), false), 0))
> + (((__iter).curr += PAGE_SIZE) >= (__iter).max) ? \
> + (__iter) = __sgt_iter(__sg_next((__iter).sgp), false), 0 : 0)
>
> static inline const struct intel_device_info *
> intel_info(const struct drm_i915_private *dev_priv)

--
Jani Nikula, Intel Open Source Technology Center