Add braces to avoid "ambiguous ‘else’" compiler warnings
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 28 Jul 2016 03:03:31 +0000 (20:03 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 28 Jul 2016 03:03:31 +0000 (20:03 -0700)
Some of our "for_each_xyz()" macro constructs make gcc unhappy about
lack of braces around if-statements inside or outside the loop, because
the loop construct itself has a "if-then-else" statement inside of it.

The resulting warnings look something like this:

  drivers/gpu/drm/i915/i915_debugfs.c: In function ‘i915_dump_lrc’:
  drivers/gpu/drm/i915/i915_debugfs.c:2103:6: warning: suggest explicit braces to avoid ambiguous ‘else’ [-Wparentheses]
     if (ctx != dev_priv->kernel_context)
        ^

even if the code itself is fine.

Since the warning is fairly easy to avoid by adding a braces around the
if-statement near the for_each_xyz() construct, do so, rather than
disabling the otherwise potentially useful warning.

(The if-then-else statements used in the "for_each_xyz()" constructs are
designed to be inherently safe even with no braces, but in this case
it's quite understandable that gcc isn't really able to tell that).

This finally leaves the standard "allmodconfig" build with just a
handful of remaining warnings, so new and valid warnings hopefully will
stand out.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/gpu/drm/i915/i915_debugfs.c
drivers/iommu/dmar.c
drivers/iommu/intel-iommu.c

index 103546834b60d9f9af9043a2c6881c5a08d1388d..2a6e12956baf8f285abe480cc100d0c6ff13e761 100644 (file)
@@ -2100,9 +2100,10 @@ static int i915_dump_lrc(struct seq_file *m, void *unused)
                return ret;
 
        list_for_each_entry(ctx, &dev_priv->context_list, link)
-               if (ctx != dev_priv->kernel_context)
+               if (ctx != dev_priv->kernel_context) {
                        for_each_engine(engine, dev_priv)
                                i915_dump_lrc_obj(m, ctx, engine);
+               }
 
        mutex_unlock(&dev->struct_mutex);
 
index 6a86b5d1defa0513f6bc5cc8e88e125aecfaf629..7330a66e2b7ef4d9b88222df3153c07c8f83b1d7 100644 (file)
@@ -1871,10 +1871,11 @@ static int dmar_hp_remove_drhd(struct acpi_dmar_header *header, void *arg)
        /*
         * All PCI devices managed by this unit should have been destroyed.
         */
-       if (!dmaru->include_all && dmaru->devices && dmaru->devices_cnt)
+       if (!dmaru->include_all && dmaru->devices && dmaru->devices_cnt) {
                for_each_active_dev_scope(dmaru->devices,
                                          dmaru->devices_cnt, i, dev)
                        return -EBUSY;
+       }
 
        ret = dmar_ir_hotplug(dmaru, false);
        if (ret == 0)
index 323dac9900ba3cc0a0c1351dfc39de86b4cb06ab..4b9040bb2f1ca5129a90e4d5cce17433fef55daf 100644 (file)
@@ -4272,10 +4272,11 @@ int dmar_check_one_atsr(struct acpi_dmar_header *hdr, void *arg)
        if (!atsru)
                return 0;
 
-       if (!atsru->include_all && atsru->devices && atsru->devices_cnt)
+       if (!atsru->include_all && atsru->devices && atsru->devices_cnt) {
                for_each_active_dev_scope(atsru->devices, atsru->devices_cnt,
                                          i, dev)
                        return -EBUSY;
+       }
 
        return 0;
 }