Skip to content

Commit d6408a9

Browse files
author
David Scott
committed
arm: robustify the parsing of /proc/cpuinfo
We should not expect there to be x86-only keys. We should ignore any lines which don't have the 'key: value' format. Signed-off-by: David Scott <[email protected]>
1 parent ed64e25 commit d6408a9

File tree

1 file changed

+25
-21
lines changed

1 file changed

+25
-21
lines changed

ocaml/xapi/create_misc.ml

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -416,29 +416,33 @@ let create_host_cpu ~__context =
416416
let tbl = Hashtbl.create 32 in
417417
let rec get_lines () =
418418
let s = input_line in_chan in
419-
if s = "" then
420-
()
421-
else (
422-
let i = String.index s ':' in
423-
let k = trim_end (String.sub s 0 i) in
424-
let v =
425-
if String.length s < i + 2
426-
then ""
427-
else String.sub s (i + 2) (String.length s - i - 2)
428-
in
429-
Hashtbl.add tbl k v;
430-
get_lines ()
431-
)
432-
in
419+
begin
420+
try
421+
let i = String.index s ':' in
422+
let k = trim_end (String.sub s 0 i) in
423+
let v =
424+
if String.length s < i + 2
425+
then ""
426+
else String.sub s (i + 2) (String.length s - i - 2)
427+
in
428+
Hashtbl.add tbl k v
429+
with e ->
430+
info "cpuinfo: skipping line [%s]" s
431+
end;
432+
if s <> "" then get_lines () in
433433
get_lines ();
434434
close_in in_chan;
435-
Hashtbl.find tbl "vendor_id",
436-
Hashtbl.find tbl "model name",
437-
Hashtbl.find tbl "cpu MHz",
438-
Hashtbl.find tbl "flags",
439-
Hashtbl.find tbl "stepping",
440-
Hashtbl.find tbl "model",
441-
Hashtbl.find tbl "cpu family"
435+
let find key =
436+
if Hashtbl.mem tbl key
437+
then Hashtbl.find tbl key
438+
else "unknown" in
439+
find "vendor_id",
440+
find "model name",
441+
find "cpu MHz",
442+
find "flags",
443+
find "stepping",
444+
find "model",
445+
find "cpu family"
442446
in
443447
let vendor, modelname, cpu_mhz, flags, stepping, model, family = get_cpuinfo () in
444448
let cpu_count, socket_count = get_cpu_layout () in

0 commit comments

Comments
 (0)