From 8a291c265d617732e42059562d39d477191d47e6 Mon Sep 17 00:00:00 2001
From: Andras Becsi <andras.becsi@digia.com>
Date: Wed, 5 Nov 2014 15:39:29 +0100
Subject: [PATCH] Debug built crashes on start using Linux kernel > 3.16 due to
 SHMMAX change

https://code.google.com/p/chromium/issues/detail?id=403869
Cherry-pick https://codereview.chromium.org/471893003
Author: brettw@chromium.org

Parse shmmax as a uint64

A recent Linux kernel change changed this to a number larger than 63 bits which causes us to compute 0 size.
I kept the size_t overflow check for cases where size_t is 32-bits.

BUG=403869
R=jamesr@chromium.org

Change-Id: I2ed233ec7d98484e3b25534df3a087d4f8ea26b4
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=289903
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
---
 chromium/base/sys_info_linux.cc | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/chromium/base/sys_info_linux.cc b/chromium/base/sys_info_linux.cc
index 6f1e5eb7d1f..92d3cbe83cf 100644
--- a/chromium/base/sys_info_linux.cc
+++ b/chromium/base/sys_info_linux.cc
@@ -36,12 +36,11 @@ size_t MaxSharedMemorySize() {
     contents.erase(contents.length() - 1);
   }
 
-  int64 limit;
-  if (!base::StringToInt64(contents, &limit)) {
+  uint64 limit;
+  if (!base::StringToUint64(contents, &limit)) {
     limit = 0;
   }
-  if (limit < 0 ||
-      static_cast<uint64>(limit) > std::numeric_limits<size_t>::max()) {
+  if (limit > std::numeric_limits<size_t>::max()) {
     limit = 0;
   }
   DCHECK(limit > 0);
-- 
GitLab