Message ID | 20180228192823.5191-11-bart.vanassche@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Looks good,
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Bart, > Since it is not safe to use queue_flag_(set|clear)_unlocked() without > holding the queue lock after the sysfs entries for a queue have been > created, complain if this happens. Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index eca31d0ef2df..1f3ec9a7fbc7 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -726,12 +726,18 @@ static inline void queue_lockdep_assert_held(struct request_queue *q) static inline void queue_flag_set_unlocked(unsigned int flag, struct request_queue *q) { + if (test_bit(QUEUE_FLAG_INIT_DONE, &q->queue_flags) && + kref_read(&q->kobj.kref)) + lockdep_assert_held(q->queue_lock); __set_bit(flag, &q->queue_flags); } static inline void queue_flag_clear_unlocked(unsigned int flag, struct request_queue *q) { + if (test_bit(QUEUE_FLAG_INIT_DONE, &q->queue_flags) && + kref_read(&q->kobj.kref)) + lockdep_assert_held(q->queue_lock); __clear_bit(flag, &q->queue_flags); }
Since it is not safe to use queue_flag_(set|clear)_unlocked() without holding the queue lock after the sysfs entries for a queue have been created, complain if this happens. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Cc: Mike Snitzer <snitzer@redhat.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.de> Cc: Johannes Thumshirn <jthumshirn@suse.de> Cc: Ming Lei <ming.lei@redhat.com> --- include/linux/blkdev.h | 6 ++++++ 1 file changed, 6 insertions(+)