X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=lib%2Fkernel.ml;h=9b7d3bcc86d0c3675c981ed6bf7cdc1efa159460;hb=fea04ba6838a7fb1f7f6df9ea5b9603603205f3d;hp=efdd41364428a8179672eaa56fd743d841ed8dd0;hpb=f5d8613b2c636b0628336de8379e30f7db6c4b23;p=virt-mem.git diff --git a/lib/kernel.ml b/lib/kernel.ml index efdd413..9b7d3bc 100644 --- a/lib/kernel.ml +++ b/lib/kernel.ml @@ -1255,8 +1255,12 @@ let rec task_struct_follower kernel_version load map addr = let offset = data.task_struct_run_list'next_offset and adj = data.task_struct_run_list'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in - let addr = Int64.sub (Int64.add addr offset) adj in - let map = AddrMap.add addr ("task_struct", None) map in + let map = + if offset <> adj + then + (let addr = Int64.sub (Int64.add addr offset) adj + in AddrMap.add addr ("task_struct", None) map) + else map in let dest_addr = Int64.sub dest_addr adj in let map = task_struct_follower kernel_version load map dest_addr in map in @@ -1265,8 +1269,12 @@ let rec task_struct_follower kernel_version load map addr = let offset = data.task_struct_tasks'next_offset and adj = data.task_struct_tasks'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in - let addr = Int64.sub (Int64.add addr offset) adj in - let map = AddrMap.add addr ("task_struct", None) map in + let map = + if offset <> adj + then + (let addr = Int64.sub (Int64.add addr offset) adj + in AddrMap.add addr ("task_struct", None) map) + else map in let dest_addr = Int64.sub dest_addr adj in let map = task_struct_follower kernel_version load map dest_addr in map @@ -1289,8 +1297,12 @@ and net_device_follower kernel_version load map addr = let offset = data.net_device_dev_list'next_offset and adj = data.net_device_dev_list'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in - let addr = Int64.sub (Int64.add addr offset) adj in - let map = AddrMap.add addr ("net_device", None) map in + let map = + if offset <> adj + then + (let addr = Int64.sub (Int64.add addr offset) adj + in AddrMap.add addr ("net_device", None) map) + else map in let dest_addr = Int64.sub dest_addr adj in let map = net_device_follower kernel_version load map dest_addr in map in @@ -1322,8 +1334,12 @@ and net_follower kernel_version load map addr = let offset = data.net_dev_base_head'next_offset and adj = data.net_dev_base_head'next_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in - let addr = Int64.sub (Int64.add addr offset) adj in - let map = AddrMap.add addr ("net_device", None) map in + let map = + if offset <> adj + then + (let addr = Int64.sub (Int64.add addr offset) adj + in AddrMap.add addr ("net_device", None) map) + else map in let dest_addr = Int64.sub dest_addr adj in let map = net_device_follower kernel_version load map dest_addr in map in let dest_addr = data.net_dev_base_head'prev in @@ -1331,8 +1347,12 @@ and net_follower kernel_version load map addr = let offset = data.net_dev_base_head'prev_offset and adj = data.net_dev_base_head'prev_adjustment in let offset = Int64.of_int offset and adj = Int64.of_int adj in - let addr = Int64.sub (Int64.add addr offset) adj in - let map = AddrMap.add addr ("net_device", None) map in + let map = + if offset <> adj + then + (let addr = Int64.sub (Int64.add addr offset) adj + in AddrMap.add addr ("net_device", None) map) + else map in let dest_addr = Int64.sub dest_addr adj in let map = net_device_follower kernel_version load map dest_addr in map in map)