diff --git a/linux-ramdump-parser-v2/sched_info.py b/linux-ramdump-parser-v2/sched_info.py
index 2c55daf10a217cc5c96ab0811a87e8d5e659e7ac..96007bb0a7349bf3c1841e4651255ae8dde8bc0d 100644
--- a/linux-ramdump-parser-v2/sched_info.py
+++ b/linux-ramdump-parser-v2/sched_info.py
@@ -41,19 +41,18 @@ def verify_active_cpus(ramdump):
     if (cluster_id_off is None):
         print_out_str("\n Invalid cluster topology detected\n")
 
-    clusters = ramdump.read_int(cpu_topology_addr + cluster_id_off + ((nr_cpus - 1) * cpu_topology_size))
-    clusters += 1
-
     # INFO: from 4.19 onwards, core_sibling mask contains only online cpus,
     #       find out cluster cpus dynamically.
 
-    cluster_nrcpus = [0] * (clusters)
+    cluster_nrcpus = [0]
     for j in range(0, nr_cpus):
         c_id = ramdump.read_int(cpu_topology_addr + (j * cpu_topology_size) + cluster_id_off)
+        if len(cluster_nrcpus) <= c_id :
+            cluster_nrcpus.extend([0])
         cluster_nrcpus[c_id] += 1
 
     next_cluster_cpu = 0
-    for i in range(0, clusters):
+    for i in range(0, len(cluster_nrcpus)):
         cluster_cpus = ramdump.read_word(cpu_topology_addr +
                                         (next_cluster_cpu * cpu_topology_size) + core_sib_off)
         cluster_online_cpus = cpu_online_bits & cluster_cpus