Change the sizeof(array element time) * (array size) expressions into
sizeof(array). This fixes the size computations of the classhash_table[]
and chainhash_table[] arrays. Commit a63f38cc4ccf ("locking/lockdep:
Convert hash tables to hlists") namely changed the type of the elements
of that array from struct list_head into struct hlist_head.

Lock chains are only tracked with CONFIG_PROVE_LOCKING=y. Do not report
the memory required for the lock chain array if CONFIG_PROVE_LOCKING=n.
See also commit ca58abcb4a6d ("lockdep: sanitise CONFIG_PROVE_LOCKING").

Include the size of the chain_hlocks[] array.

Cc: Peter Zijlstra <pet...@infradead.org>
Cc: Waiman Long <long...@redhat.com>
Cc: Johannes Berg <johan...@sipsolutions.net>
Signed-off-by: Bart Van Assche <bvanass...@acm.org>
---
 kernel/locking/lockdep.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 95932333a48b..cb3fa7042886 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -4278,20 +4278,21 @@ void __init lockdep_init(void)
        printk("... MAX_LOCKDEP_CHAINS:      %lu\n", MAX_LOCKDEP_CHAINS);
        printk("... CHAINHASH_SIZE:          %lu\n", CHAINHASH_SIZE);
 
-       printk(" memory used by lock dependency info: %lu kB\n",
-               (sizeof(struct lock_class) * MAX_LOCKDEP_KEYS +
-               sizeof(struct list_head) * CLASSHASH_SIZE +
-               sizeof(struct lock_list) * MAX_LOCKDEP_ENTRIES +
-               sizeof(struct lock_chain) * MAX_LOCKDEP_CHAINS +
-               sizeof(struct list_head) * CHAINHASH_SIZE
+       printk(" memory used by lock dependency info: %zu kB\n",
+              (sizeof(list_entries) +
+               sizeof(lock_classes) +
+               sizeof(classhash_table) +
+               sizeof(chainhash_table)
 #ifdef CONFIG_PROVE_LOCKING
-               + sizeof(struct circular_queue)
+               + sizeof(lock_cq)
+               + sizeof(lock_chains)
+               + sizeof(chain_hlocks)
 #endif
                ) / 1024
                );
 
-       printk(" per task-struct memory footprint: %lu bytes\n",
-               sizeof(struct held_lock) * MAX_LOCK_DEPTH);
+       printk(" per task-struct memory footprint: %zu bytes\n",
+              sizeof(((struct task_struct *)NULL)->held_locks));
 }
 
 static void
-- 
2.20.1.97.g81188d93c3-goog

Reply via email to