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;
^
On Tue, 22 Apr 2014, LF.Tan wrote:
> 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);
> ^
>
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.