On Sat, Jan 26, 2013 at 05:49:29PM +0800, Mark Brown wrote: > Oh, ffs. This is a false positive from the compiler - there is no case > where it can actually do this as we will bail out before the walk if the > list is empty so we'll always take at least one trip through our > list_for_each_entry() and either return or set ret. It should be smart > enough to work out that the list_empty() means list_for_each_entry() > will iterate over at least one entry or more conservative in what it > warns about.
Why not code the function in a way that avoids the problem altogether? /* * This should never happen; we return above if we fail to * allocate and we should never be in this code if there are * no registers at all. */ - if (list_empty(&map->debugfs_off_cache)) { - WARN_ON(list_empty(&map->debugfs_off_cache)); - return base; - } + WARN_ON(list_empty(&map->debugfs_off_cache)); + ret = base; /* Find the relevant block */ list_for_each_entry(c, &map->debugfs_off_cache, list) { if (from >= c->min && from <= c->max) { *pos = c->min; return c->base_reg; } *pos = c->min; ret = c->base_reg; } return ret; -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/