diff --git a/linux-ramdump-parser-v2/parsers/memusage.py b/linux-ramdump-parser-v2/parsers/memusage.py
index e610f429f6d194ae7af46d0523e73f403c82191a..af808dd0b03545f462e5856502121d4f6a30aa03 100644
--- a/linux-ramdump-parser-v2/parsers/memusage.py
+++ b/linux-ramdump-parser-v2/parsers/memusage.py
@@ -69,12 +69,7 @@ def do_dump_process_memory(ramdump):
         next_thread_pid = task_struct + offset_pid
         thread_task_pid = ramdump.read_int(next_thread_pid)
         signal_struct = ramdump.read_word(task_struct + offset_signal)
-        adj = ramdump.read_u16(signal_struct + offset_adj)
-        if adj & 0x8000:
-            adj = adj - 0x10000
-        rss = get_rss(ramdump, task_struct) * 4
-        if rss != 0:
-            task_info.append([thread_task_name, thread_task_pid, rss, adj])
+
         next_task = ramdump.read_word(init_next_task)
         if next_task is None:
             break
@@ -92,13 +87,23 @@ def do_dump_process_memory(ramdump):
         if init_next_task == orig_init_next_task:
             break
 
-    task_info = sorted(task_info, key=lambda l: l[2], reverse=True)
-    str = '{0:<17s}{1:>8s}{2:>17s}{3:>8}\n'.format(
-        'Task name', 'PID', 'RSS in kB', 'ADJ')
+        if signal_struct == 0 or signal_struct == None :
+            continue
+
+        adj = ramdump.read_u16(signal_struct + offset_adj)
+        if adj & 0x8000:
+            adj = adj - 0x10000
+        rss, swap = get_rss(ramdump, task_struct)
+        if rss != 0:
+            task_info.append([thread_task_name, thread_task_pid, rss, swap, rss + swap, adj])
+
+    task_info = sorted(task_info, key=lambda l: l[4], reverse=True)
+    str = '{0:<17s}{1:>8s}{2:>19s}{3:>12s}{4:>8}\n'.format(
+        'Task name', 'PID', 'RSS in kB', 'SWAP in kB', 'ADJ')
     memory_file.write(str)
     for item in task_info:
-        str = '{0:<17s}{1:8d}{2:13,d}({3:2.1f}%) {4:6}\n'.format(
-            item[0], item[1], item[2], (100.0 * item[2]) / total_mem, item[3])
+        str = '{0:<17s}{1:8d}{2:13,d}({4:2.1f}%){3:13,d} {5:6}\n'.format(
+            item[0], item[1], item[2], item[3], (100.0 * item[2]) / total_mem, item[5])
         memory_file.write(str)
     memory_file.close()
     print_out_str('---wrote meminfo to memory.txt')
@@ -107,24 +112,32 @@ def do_dump_process_memory(ramdump):
 def get_rss(ramdump, task_struct):
     offset_mm = ramdump.field_offset('struct task_struct', 'mm')
     offset_rss_stat = ramdump.field_offset('struct mm_struct', 'rss_stat')
-    offset_rss = ramdump.field_offset('struct mm_rss_stat', 'count')
+    offset_file_rss = ramdump.field_offset('struct mm_rss_stat', 'count')
     offset_anon_rss = ramdump.field_offset('struct mm_rss_stat', 'count[1]')
-    offset_file_rss = ramdump.field_offset('struct mm_rss_stat', 'count[2]')
+    offset_swap_rss = ramdump.field_offset('struct mm_rss_stat', 'count[2]')
+    if ramdump.kernel_version >= (4, 9):
+        offset_shmem_rss = ramdump.field_offset('struct mm_rss_stat', 'count[3]')
     mm_struct = ramdump.read_word(task_struct + offset_mm)
     if mm_struct == 0:
-        return 0
+        return 0, 0
     anon_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_anon_rss)
-    rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_rss)
+    swap_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_swap_rss)
     file_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_file_rss)
+    if ramdump.kernel_version >= (4, 9):
+        shmem_rss = ramdump.read_word(mm_struct + offset_rss_stat + offset_shmem_rss)
+    else:
+        shmem_rss = 0
     # Ignore negative RSS values
     if anon_rss > 0x80000000:
         anon_rss = 0
-    if rss > 0x80000000:
-        rss = 0
+    if swap_rss > 0x80000000:
+        swap_rss = 0
     if file_rss > 0x80000000:
         file_rss = 0
-    total_rss = rss + anon_rss + file_rss
-    return total_rss
+    if shmem_rss > 0x80000000:
+        shmem_rss = 0
+    total_rss = anon_rss + file_rss + shmem_rss
+    return total_rss * 4, swap_rss * 4
 
 
 @register_parser('--print-memory-info', 'Print memory usage info')