lkml.org 
[lkml]   [2019]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: "cat /proc/lockdep" after "rmmod <some module>" when !debug_locks will crash the system
From
Date
On Mon, 2019-03-25 at 17:45 +0800, shenghui wrote:
> Sorry to trouble you.
>
> I installed virtualbox-5.2.24 on my system (x86 32) and on bootup I got some warning:
> ---------------------
> 1251 [ 42.640869] DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled)
> 1252 [ 42.640880] WARNING: CPU: 0 PID: 841 at kernel/locking/lockdep.c:4132 check_flags.part.45+0x9e/0x190
> ...
>
> As no crash afterwards, I just ignore the warning and continue using my system.
>
> Later I rmmod some module and run "cat /proc/lockdep", the system crashed.
> (Sorry I cannot capture the crash log as kdump didn't work on my system, but I can
> see some words "...normal kernel read fault...")
>
>
> Then I walked through the code and found:
> 1) DEBUG_LOCKS_WARN_ON(!current->hardirqs_enabled) will turn debug_locks to 0
> 2) if !debug_locks, graph_lock() will return 0
> 3) On module unloading, lockdep_free_key_range_reg() will run.
> But when !debug_locks, lockdep_free_key_range_reg() will do nothing.
>
> 4743 static void lockdep_free_key_range_reg(void *start, unsigned long size)
> 4744 {
> ...
> 4751 raw_local_irq_save(flags);
> 4752 locked = graph_lock();
> 4753 if (!locked)
> 4754 goto out_irq;
> ...
> 4759
> 4760 graph_unlock();
> 4761 out_irq:
> 4762 raw_local_irq_restore(flags);
>
> 4) The result is: module is unloaded, but some lock_class related with the module
> still exist in all_lock_classes.
> 5) 'cat /proc/lockdep' will access elements of all_lock_classes, and will trigger the crash.
>
>
> Seems the usage of "!graph_lock()" can prevent any new changes to all_lock_classes and other hashtables
> if !debug_locks.

Hi Shenghui,

None of the rmmod / cat /proc/lockdep tests I ran triggered the above warning.
It would help if you could share the steps you followed to trigger that warning.

Thanks,

Bart.

\
 
 \ /
  Last update: 2019-03-25 16:27    [W:0.460 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site