[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH 2/2] lib/uknetdev: Fix compliation warning about signed/unsigned comparision


  • To: Julien Grall <Julien.Grall@xxxxxxx>, "minios-devel@xxxxxxxxxxxxxxxxxxxx" <minios-devel@xxxxxxxxxxxxxxxxxxxx>, Simon Kuenzer <simon.kuenzer@xxxxxxxxx>, Costin Lupu <costin.lupu@xxxxxxxxx>
  • From: "Justin He (Arm Technology China)" <Justin.He@xxxxxxx>
  • Date: Sat, 12 Oct 2019 02:27:29 +0000
  • Accept-language: en-US, zh-CN
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OhZZAR09p0wHdgfql9CCFEUrZvbhEn+26vDwoefuINI=; b=FzRDLwh/gC4y9lJ8JrjwShM1KMlql5O/FLLuX3RBijPYRxHw8N8EVOusYkKNysytjCXl5jrxB+3c8TWfIFaYnjWE2sfQVtkq7CwQzt8TJuVkQ3h4y0nGMqDVYUqdgO+hN/vx7DHZOlXYxcevTmDNx5+8CnSsLUD8xEwg/upOhfSRAdgpyRlcyjZcCArzo0fvsIssjWzJpZmE7swghgMXyULU7bnwxmxNJv8H8cg3F2CxFAIScxGHrtOoWmDdOt/Ju9xmX/vGOR6pZfeOYxkKh9Nts4ILKlkVMKNDd3H9tVg5pwNoH5JV2aaaYuObwBStK/l4u3apyv17+6SYlHxnrg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JB7UdEAsFNk2rDRbr0Dt1q4blTnYegB/R0RnhtRarWOqQxxvaPCjHj1d4YDrTR4II4vo1PFak/8qe3F3+O4NqZij0KD04brmfL7gy3Eh0Qx66YRnGLnmGE9vK2ZvAds7KONwmfjqI+I/OZNSR6iY/pY+n6dIQ/X0SU3n9lEeyXZvK7P9DGxyGSGrcCRMi1AS3CtCilQgSKwm/pamA8iyDYkZRLI+VXQwdiNGjaW38u7dez0zYvuag4uVjbl3jOLIRWKu9CqAYzzSoCptHStmDEXFoUDcP6e0CrYxOO5fQ0NtbuE2Z2f+8vjBo6DFxsIptOFLsP6/fxKlDbUSB82M2g==
  • Authentication-results: spf=temperror (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; lists.xenproject.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;lists.xenproject.org; dmarc=none action=none header.from=arm.com;
  • Authentication-results-original: spf=none (sender IP is ) smtp.mailfrom=Justin.He@xxxxxxx;
  • Cc: Felipe Huici <felipe.huici@xxxxxxxxx>, "Kaly Xin \(Arm Technology China\)" <Kaly.Xin@xxxxxxx>, nd <nd@xxxxxxx>, "Sharan.Santhanam@xxxxxxxxx" <Sharan.Santhanam@xxxxxxxxx>, "Santiago.Pagani@xxxxxxxxx" <Santiago.Pagani@xxxxxxxxx>
  • Delivery-date: Sat, 12 Oct 2019 02:27:52 +0000
  • List-id: Mini-os development list <minios-devel.lists.xenproject.org>
  • Nodisclaimer: True
  • Original-authentication-results: spf=none (sender IP is ) smtp.mailfrom=Justin.He@xxxxxxx;
  • Thread-index: AQHVgBFYpW1AePeHFEOmdJIaWmit1qdVJFAAgABnTnCAAAWuAIAAsmFA
  • Thread-topic: [UNIKRAFT PATCH 2/2] lib/uknetdev: Fix compliation warning about signed/unsigned comparision


> -----Original Message-----
> From: Julien Grall <julien.grall@xxxxxxx>
> Sent: Friday, October 11, 2019 11:30 PM
> To: Justin He (Arm Technology China) <Justin.He@xxxxxxx>; minios-
> devel@xxxxxxxxxxxxxxxxxxxx; Simon Kuenzer <simon.kuenzer@xxxxxxxxx>;
> Costin Lupu <costin.lupu@xxxxxxxxx>
> Cc: Sharan.Santhanam@xxxxxxxxx; Felipe Huici <felipe.huici@xxxxxxxxx>;
> Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>;
> Santiago.Pagani@xxxxxxxxx; nd <nd@xxxxxxx>
> Subject: Re: [UNIKRAFT PATCH 2/2] lib/uknetdev: Fix compliation warning
> about signed/unsigned comparision
> 
> On 11/10/2019 16:13, Justin He (Arm Technology China) wrote:
> > Hi Julien
> 
> Hi,
> 
> >> -----Original Message-----
> >> From: Julien Grall <julien.grall@xxxxxxx>
> >> Sent: Friday, October 11, 2019 5:00 PM
> >> To: Justin He (Arm Technology China) <Justin.He@xxxxxxx>; minios-
> >> devel@xxxxxxxxxxxxxxxxxxxx; Simon Kuenzer <simon.kuenzer@xxxxxxxxx>;
> >> Costin Lupu <costin.lupu@xxxxxxxxx>
> >> Cc: Sharan.Santhanam@xxxxxxxxx; Felipe Huici <felipe.huici@xxxxxxxxx>;
> >> Kaly Xin (Arm Technology China) <Kaly.Xin@xxxxxxx>;
> >> Santiago.Pagani@xxxxxxxxx; nd <nd@xxxxxxx>
> >> Subject: Re: [UNIKRAFT PATCH 2/2] lib/uknetdev: Fix compliation
> warning
> >> about signed/unsigned comparision
> >>
> >> Hi,
> >>
> >> On 11/10/2019 09:52, Jia He wrote:
> >>> This fixes the compliation warning when compiling libuknetdev
> >>
> >> Typo s/compliation/compilation/
> >>
> >>>
> >>> /root/hj/UK/unikraft/lib/uknetdev/netbuf.c: In function
> >>> 'uk_netbuf_alloc_buf':
> >>> /root/hj/UK/unikraft/lib/uknetdev/netbuf.c:120:35: warning:
> comparison
> >>> between signed and unsigned integer expressions [-Wsign-compare]
> >>>     if (likely(UINT16_MAX - headroom > NETBUF_ADDR_ALIGNMENT)) {
> >>>                                      ^
> >>> /root/hj/UK/unikraft/include/uk/arch/lcpu.h:48:43: note: in definition
> >>> of macro 'likely'
> >>>    #define likely(x)   (__builtin_expect((!!(x)), 1))
> >>>                                              ^
> >>> Signed-off-by: Jia He <justin.he@xxxxxxx>
> >>> ---
> >>>    lib/uknetdev/netbuf.c | 2 +-
> >>>    1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/lib/uknetdev/netbuf.c b/lib/uknetdev/netbuf.c
> >>> index 96a5f68..108bd36 100644
> >>> --- a/lib/uknetdev/netbuf.c
> >>> +++ b/lib/uknetdev/netbuf.c
> >>> @@ -36,7 +36,7 @@
> >>>    #include <uk/print.h>
> >>>
> >>>    /* Used to align netbuf's priv and data areas to `long long` data type
> */
> >>> -#define NETBUF_ADDR_ALIGNMENT (sizeof(long long))
> >>> +#define NETBUF_ADDR_ALIGNMENT (int)(sizeof(long long))
> >>
> >> Maybe I am missing something but:
> >>
> >> UINT16_MAX - headrom should be unsigned, right?
> >>
> >> IIRC, sizeof() is also returning an unsigned. So how this is solving the
> >> problem
> >> here?
> > Because UINT16_MAX and headroom are both unsigned short,
> 
> Looking at the definition, UINT16_MAX is an unsigned int. So I am a bit
> confused.

I tracked the header file including process, I thought UINT16_MAX is int here

build/libnewlibc/origin/newlib-2.5.0.20170922/newlib/libc/include/stdint.h:176:#define
 UINT16_MAX (__UINT16_MAX__)

Then (__UINT16_MAX__) is a builtin of gcc.
I wrote a simple example to indicate this:
int main()
{ 
        unsigned short a;
        size_t b;

        {__UINT16_MAX__ - a < b;}
}

It is 0xffff instead of 0xffffU after pre-compilation

> 
> > Integer types smaller than int are promoted when an operation is
> > performed on them. Thus, the left side of equation is "int", and
> > the right side is size_t.
> 
> It would be nice if you can provide more information in your commit
> message.
> This helps the reviewer to figure out the problem more easily.

Sure

> 
> Although, I am still unsure to understand how this is related to the issue
> here.
> Wouldn't the problem be unsigned integer are promoted to long long?
> 
> Regarding the patch itself, this is only deferring the problem until someone
> come up with a check that will use unsigned value.
> 
> A better approach would be to fix it in the check directly. Maybe:
> 
> (size_t)(UINT16_MAX - headroom)?
Yes, agree with that


--
Cheers,
Justin (Jia He)


_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.