OSDN Git Service

drm/i915: Squelch smatch warning for statement with no effect
authorChris Wilson <chris@chris-wilson.co.uk>
Wed, 13 Sep 2017 10:57:54 +0000 (11:57 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 13 Sep 2017 12:27:20 +0000 (13:27 +0100)
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.

   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>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170913105754.4423-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_drv.h

index ec70121..9dba1b2 100644 (file)
@@ -2835,8 +2835,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
@@ -2848,8 +2848,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 unsigned int i915_sg_segment_size(void)
 {