Discussion:
min() and max() have warning: comparison of distinct pointer types lacks a cast
LF.Tan
2014-04-22 05:46:23 UTC
Permalink
Hi all

Have these warning messages when compiling kernel.
Anyone know what's wrong?

Regards.
----------------------------
In file included from mm/readahead.c:10:0:
mm/readahead.c: In function 'max_sane_readahead':
include/linux/kernel.h:713:17: warning: comparison of distinct pointer
types lacks a cast [enabled by default]
(void) (&_min1 == &_min2); \
^
mm/readahead.c:242:9: note: in expansion of macro 'min'
return min(nr, MAX_READAHEAD);
^

-------------------------------------------------------------------------------
mm/rmap.c:1279:22: note: in expansion of macro 'min'
#define CLUSTER_SIZE min(32*PAGE_SIZE, PMD_SIZE)
^
mm/rmap.c:1280:25: note: in expansion of macro 'CLUSTER_SIZE'
#define CLUSTER_MASK (~(CLUSTER_SIZE - 1))
^
mm/rmap.c:1298:39: note: in expansion of macro 'CLUSTER_MASK'
address = (vma->vm_start + cursor) & CLUSTER_MASK;
^
David Rientjes
2014-04-22 23:46:50 UTC
Permalink
Post by LF.Tan
Hi all
Have these warning messages when compiling kernel.
Anyone know what's wrong?
Regards.
----------------------------
include/linux/kernel.h:713:17: warning: comparison of distinct pointer
types lacks a cast [enabled by default]
(void) (&_min1 == &_min2); \
^
mm/readahead.c:242:9: note: in expansion of macro 'min'
return min(nr, MAX_READAHEAD);
^
In min(nr, MAX_READAHEAD), nr is of type unsigned long and MAX_READAHEAD
is of type unsigned long or int depending on the arch. This warns because
of strict type-checking, otherwise the results could be unexpected when
comparing unsigned long to signed long, for example.

I don't think fixing this to do min_t() is the right solution since
PAGE_SIZE is assumbed to be defined to be ul. Please send your arch and
.config.

Loading...