On Tue, Nov 07, 2017 at 12:59:34PM +0000, Chris Wilson wrote:
> Quoting Chris Wilson (2017-11-07 12:56:23)
> > Smatch warns of
> > 
> > drivers/gpu/drm/i915/intel_pm.c:1161 g4x_compute_wm() warn: signedness bug 
> > returning '(-33554430)'
> > 
> > which is a result of it believing that wm may be INT_MAX following
> > g4x_tlb_miss_wa(). Just declaring g4x_tlb_miss_wa() as returning an
> > unsigned integer is not sufficient, we need to tell smatch that wm itself
> > is unsigned for it to not worry. So mark up the locals we expect to be
> > non-negative, and so silence smatch.
> > 
> > Signed-off-by: Chris Wilson <[email protected]>
> > Cc: Ville Syrjälä <[email protected]>
> Cc: Dan Carpenter <[email protected]>
> 
> Hi Dan, do you mind sharing any insight as to why smatch generates this
> warning and whether the approach in this patch is incorrect?
> 

It comes from this line:

        wm = DIV_ROUND_UP(wm, 64) + 2;

If you take INT_MIN / 64 + 2 then you get -33554430.  The warning is
a false positive, right?  But to me as a reviewer the original min_t()
is suspicious and I would have just done these two lines from the patch:

-       return min_t(int, wm, USHRT_MAX);
+       return min_t(unsigned int, wm, USHRT_MAX);

The rest is pure style preference so it could go either way.

regards,
dan carpenter
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to