linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Q: lockdep_assert_held_read() after downgrade_write()
@ 2017-01-30 21:25 J. R. Okajima
  2017-01-30 21:30 ` Jens Axboe
  0 siblings, 1 reply; 20+ messages in thread
From: J. R. Okajima @ 2017-01-30 21:25 UTC (permalink / raw)
  To: peterz; +Cc: linux-kernel, axboe, darrick.wong, david

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

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-03-16 11:26 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-30 21:25 Q: lockdep_assert_held_read() after downgrade_write() J. R. Okajima
2017-01-30 21:30 ` Jens Axboe
2017-01-31 10:36   ` Peter Zijlstra
2017-01-31 11:25     ` Peter Zijlstra
2017-01-31 14:23       ` Waiman Long
2017-01-31 14:26         ` Peter Zijlstra
2017-01-31 15:40   ` J. R. Okajima
2017-01-31 16:32     ` Peter Zijlstra
2017-02-02 16:33       ` J. R. Okajima
2017-02-02 16:38       ` [PATCH 1/3] lockdep: consolidate by new find_held_lock() J. R. Okajima
2017-02-02 16:38         ` [PATCH 2/3] lockdep: consolidate by new validate_held_lock() J. R. Okajima
2017-02-14 12:09           ` Peter Zijlstra
2017-03-16 11:25           ` [tip:locking/core] locking/lockdep: Factor out the validate_held_lock() helper function tip-bot for J. R. Okajima
2017-02-02 16:38         ` [PATCH 3/3] lockdep: new annotation lock_downgrade() J. R. Okajima
2017-02-02 17:59           ` kbuild test robot
2017-02-02 18:45             ` Peter Zijlstra
2017-02-02 21:05               ` J. R. Okajima
2017-02-14 12:11                 ` Peter Zijlstra
2017-03-16 11:25           ` [tip:locking/core] locking/lockdep: Add new check to lock_downgrade() tip-bot for J. R. Okajima
2017-03-16 11:24         ` [tip:locking/core] locking/lockdep: Factor out the find_held_lock() helper function tip-bot for J. R. Okajima

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).