Subject: Re: [vserver] Kernel compile warnings
From: Ghislain Adnet <gadnet@aqueos.com>
Date: Tue, 26 Dec 2017 15:08:53 +0100

Le 21/12/2017 à 21:36, Tor Rune Skoglund a écrit :
> Hi List,
> 
> When compiling a 4.1.43 kernel with the latest patch (patch-4.1.42-vs2.3.8.6.diff)
with gcc6.4.0 it show some code
> warnings. (See below. ) It probably does not matter (I don't know), but I thought
I at least should mentioned it in case
> someone or Herbert care.
> 
> BR,
> Tor Rune Skoglund
> 
>   CC      kernel/vserver/proc.o
> kernel/vserver/proc.c: In function 'proc_xid_iterate':
> kernel/vserver/proc.c:620:43: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, ".", 1, ino, DT_DIR) < 0)
>                                           
^
> kernel/vserver/proc.c:626:44: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, "..", 2, ino, DT_DIR) < 0)
>                                            
^
> kernel/vserver/proc.c: In function 'proc_nid_iterate':
> kernel/vserver/proc.c:701:43: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, ".", 1, ino, DT_DIR) < 0)
>                                           
^
> kernel/vserver/proc.c:707:44: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, "..", 2, ino, DT_DIR) < 0)
>                                            
^
> kernel/vserver/proc.c: In function 'proc_virtual_iterate':
> kernel/vserver/proc.c:854:43: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, ".", 1, ino, DT_DIR) < 0)
>                                           
^
> kernel/vserver/proc.c:860:44: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, "..", 2, ino, DT_DIR) < 0)
>                                            
^
> kernel/vserver/proc.c: In function 'proc_virtnet_iterate':
> kernel/vserver/proc.c:935:43: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, ".", 1, ino, DT_DIR) < 0)
>                                           
^
> kernel/vserver/proc.c:941:44: warning: comparison of constant '0' with boolean expression
is always false [-Wbool-compare]
>    if (!dir_emit(ctx, "..", 2, ino, DT_DIR) < 0)
>                                            
^
>   LD      kernel/vserver/vserver.o
> 
> 


from what i see:

static inline bool dir_emit(struct dir_context *ctx,
			    const char *name, int namelen,
			    u64 ino, unsigned type)


dir_emit return ture/false so it cannot be < 0 it can be true or false :)

so should it be

if (dir_emit(ctx, "..", 2, ino, DT_DIR) )
or
if (!dir_emit(ctx, "..", 2, ino, DT_DIR) )

?

Ghis.