Message ID | 20170320094335.1266306-2-arnd@arndb.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Mar 20, 2017 at 10:40:28AM +0100, Arnd Bergmann wrote: > We get a warning with gcc-7 about a pointless comparison when > using a linear memmap: > > drivers/gpu/drm/i915/selftests/scatterlist.c: In function 'alloc_table': > drivers/gpu/drm/i915/selftests/scatterlist.c:219:66: error: self-comparison always evaluates to false [-Werror=tautological-compare] > > Splitting out the comparison into a separate function avoids the warning > and makes it slightly more obvious what happens. I worried whether gcc will simply get smarter and apply its warning more consistently, but I agree the helper is good documentation. > Fixes: 935a2f776aa5 ("drm/i915: Add some selftests for sg_table manipulation") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> -Chris
On Tue, Mar 21, 2017 at 09:56:52AM +0000, Chris Wilson wrote: > On Mon, Mar 20, 2017 at 10:40:28AM +0100, Arnd Bergmann wrote: > > We get a warning with gcc-7 about a pointless comparison when > > using a linear memmap: > > > > drivers/gpu/drm/i915/selftests/scatterlist.c: In function 'alloc_table': > > drivers/gpu/drm/i915/selftests/scatterlist.c:219:66: error: self-comparison always evaluates to false [-Werror=tautological-compare] > > > > Splitting out the comparison into a separate function avoids the warning > > and makes it slightly more obvious what happens. > > I worried whether gcc will simply get smarter and apply its warning more > consistently, but I agree the helper is good documentation. > > > Fixes: 935a2f776aa5 ("drm/i915: Add some selftests for sg_table manipulation") > > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> And applied. -Chris
diff --git a/drivers/gpu/drm/i915/selftests/scatterlist.c b/drivers/gpu/drm/i915/selftests/scatterlist.c index eb2cda8e2b9f..c072b0f9180b 100644 --- a/drivers/gpu/drm/i915/selftests/scatterlist.c +++ b/drivers/gpu/drm/i915/selftests/scatterlist.c @@ -189,6 +189,11 @@ static unsigned int random(unsigned long n, return 1 + (prandom_u32_state(rnd) % 1024); } +static inline bool page_contiguous(struct page *first, struct page *last, unsigned long npages) +{ + return first + npages == last; +} + static int alloc_table(struct pfn_table *pt, unsigned long count, unsigned long max, npages_fn_t npages_fn, @@ -216,7 +221,8 @@ static int alloc_table(struct pfn_table *pt, unsigned long npages = npages_fn(n, count, rnd); /* Nobody expects the Sparse Memmap! */ - if (pfn_to_page(pfn + npages) != pfn_to_page(pfn) + npages) { + if (!page_contiguous(pfn_to_page(pfn), + pfn_to_page(pfn + npages), npages)) { sg_free_table(&pt->st); return -ENOSPC; }
We get a warning with gcc-7 about a pointless comparison when using a linear memmap: drivers/gpu/drm/i915/selftests/scatterlist.c: In function 'alloc_table': drivers/gpu/drm/i915/selftests/scatterlist.c:219:66: error: self-comparison always evaluates to false [-Werror=tautological-compare] Splitting out the comparison into a separate function avoids the warning and makes it slightly more obvious what happens. Fixes: 935a2f776aa5 ("drm/i915: Add some selftests for sg_table manipulation") Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/gpu/drm/i915/selftests/scatterlist.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)