From ce6482eace34fcd43e2f5310997f5366706f077e Mon Sep 17 00:00:00 2001 From: Glenn L McGrath Date: Tue, 26 Aug 2003 02:14:58 +0000 Subject: Fix overflow for machines greater than 4GB, return unsigned int to avoid a cast and for greater accuracy. --- init/init.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/init/init.c b/init/init.c index 1ecc43e16..e52517e91 100644 --- a/init/init.c +++ b/init/init.c @@ -310,7 +310,7 @@ static void set_term(int fd) /* How much memory does this machine have? Units are kBytes to avoid overflow on 4GB machines */ -static int check_free_memory(void) +static unsigned int check_free_memory(void) { struct sysinfo info; unsigned int result, u, s = 10; @@ -330,10 +330,11 @@ static int check_free_memory(void) s--; } result = (info.totalram >> s) + (info.totalswap >> s); - result = result * u; - if (result < 0) - result = INT_MAX; - return result; + if ((unsigned long long) (result * u) > UINT_MAX) { + return(UINT_MAX); + } else { + return(result * u); + } } static void console_init(void) -- cgit v1.2.3