In lockdep_sys_exit(), crossrelease_hist_end() is called unconditionally
even when getting here without having started e.g. just after forked.
But it's no problem since it anyway would rollback to an invalid element.
A comment would be helpful to understand this situation.

Signed-off-by: Byungchul Park <byungchul.p...@lge.com>
---
 kernel/locking/lockdep.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index 1114dc4..1ae4258 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -4623,6 +4623,10 @@ asmlinkage __visible void lockdep_sys_exit(void)
        /*
         * The lock history for each syscall should be independent. So wipe the
         * slate clean on return to userspace.
+        *
+        * crossrelease_hist_end() would work well even when getting here
+        * without starting just after forked, it rollbacks back the index
+        * to point to the last which is already invalid.
         */
        crossrelease_hist_end(XHLOCK_PROC);
        crossrelease_hist_start(XHLOCK_PROC);
-- 
1.9.1

Reply via email to