Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1570123

Q: lockdep_assert_held_read() after downgrade_write()

From "J. R. Okajima" <hooanon05g@gmail.com>
Newsgroups linux.kernel
Subject Q: lockdep_assert_held_read() after downgrade_write()
Date 2017-01-30 22:30 +0100
Message-ID <t5rGq-Ac-35@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


Peter Zijlstra,

May I ask you a question?
v4.10-rc1 got a commit
	f831948 2016-11-30 locking/lockdep: Provide a type check for lock_is_held
I've tested a little and lockdep splat a stack trace.

{
	DECLARE_RWSEM(rw);
	static struct lock_class_key key;
	lockdep_set_class(&rw, &key);

	down_read(&rw);
	lockdep_assert_held_read(&rw);
	up_read(&rw);

	down_write(&rw);
	lockdep_assert_held_exclusive(&rw);
	up_write(&rw);

	downgrade_write(&rw);
	lockdep_assert_held_read(&rw);	<-- here
	up_read(&rw);
}

I was expecting that lockdep_assert_held_read() splat nothing after
downgrade_write(). Is this warning an intentional behaviour?

Also the final up_read() gives me a warning too. It is produced at
	lockdep.c:3514:lock_release(): DEBUG_LOCKS_WARN_ON(depth <= 0)

As an additional information, I increased some lockdep constants.
Do you think this is related?

include/linux/lockdep.h
+#define MAX_LOCKDEP_SUBCLASSES		(8UL + 4)
+#define MAX_LOCKDEP_KEYS_BITS		(13 + 3)

kernel/locking/lockdep_internals.h
+#define MAX_LOCKDEP_ENTRIES	(32768UL << 5)
+#define MAX_LOCKDEP_CHAINS_BITS	(16 + 5)
+#define MAX_STACK_TRACE_ENTRIES	(524288UL << 5)


J. R. Okajima

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

Q: lockdep_assert_held_read() after downgrade_write() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-01-30 22:30 +0100
  Re: Q: lockdep_assert_held_read() after downgrade_write() Peter Zijlstra <peterz@infradead.org> - 2017-01-31 12:10 +0100
    Re: Q: lockdep_assert_held_read() after downgrade_write() Peter Zijlstra <peterz@infradead.org> - 2017-01-31 15:00 +0100
      Re: Q: lockdep_assert_held_read() after downgrade_write() Waiman Long <longman@redhat.com> - 2017-01-31 15:30 +0100
        Re: Q: lockdep_assert_held_read() after downgrade_write() Peter Zijlstra <peterz@infradead.org> - 2017-01-31 15:30 +0100
  Re: Q: lockdep_assert_held_read() after downgrade_write() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-01-31 16:50 +0100
    Re: Q: lockdep_assert_held_read() after downgrade_write() Peter Zijlstra <peterz@infradead.org> - 2017-01-31 18:00 +0100
      Re: Q: lockdep_assert_held_read() after downgrade_write() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-02-02 17:40 +0100
      [PATCH 1/3] lockdep: consolidate by new find_held_lock() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-02-02 17:50 +0100
        [PATCH 3/3] lockdep: new annotation lock_downgrade() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-02-02 17:50 +0100
          Re: [PATCH 3/3] lockdep: new annotation lock_downgrade() kbuild test robot <lkp@intel.com> - 2017-02-02 19:10 +0100
            Re: [PATCH 3/3] lockdep: new annotation lock_downgrade() Peter Zijlstra <peterz@infradead.org> - 2017-02-02 19:50 +0100
              Re: [PATCH 3/3] lockdep: new annotation lock_downgrade() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-02-02 22:10 +0100
        [PATCH 2/3] lockdep: consolidate by new validate_held_lock() "J. R. Okajima" <hooanon05g@gmail.com> - 2017-02-02 17:50 +0100

csiph-web