1. 05 Jun, 2023 16 commits
  2. 24 May, 2023 1 commit
  3. 19 May, 2023 1 commit
    • Kent Overstreet's avatar
      lockdep: Add lock_set_cmp_fn() annotation · eb1cfd09
      Kent Overstreet authored
      This implements a new interface to lockdep, lock_set_cmp_fn(), for
      defining a custom ordering when taking multiple locks of the same
      class.
      
      This is an alternative to subclasses, but can not fully replace them
      since subclasses allow lock hierarchies with other clasees
      inter-twined, while this relies on pure class nesting.
      
      Specifically, if A is our nesting class then:
      
        A/0 <- B <- A/1
      
      Would be a valid lock order with subclasses (each subclass really is a
      full class from the validation PoV) but not with this annotation,
      which requires all nesting to be consecutive.
      
      Example output:
      
      | ============================================
      | WARNING: possible recursive locking detected
      | 6.2.0-rc8-00003-g7d81e591ca6a-dirty #15 Not tainted
      | --------------------------------------------
      | kworker/14:3/938 is trying to acquire lock:
      | ffff8880143218c8 (&b->lock l=0 0:2803368){++++}-{3:3}, at: bch_btree_node_get.part.0+0x81/0x2b0
      |
      | but task is already holding lock:
      | ffff8880143de8c8 (&b->lock l=1 1048575:9223372036854775807){++++}-{3:3}, at: __bch_btree_map_nodes+0xea/0x1e0
      | and the lock comparison function returns 1:
      |
      | other info that might help us debug this:
      |  Possible unsafe locking scenario:
      |
      |        CPU0
      |        ----
      |   lock(&b->lock l=1 1048575:9223372036854775807);
      |   lock(&b->lock l=0 0:2803368);
      |
      |  *** DEADLOCK ***
      |
      |  May be due to missing lock nesting notation
      |
      | 3 locks held by kworker/14:3/938:
      |  #0: ffff888005ea9d38 ((wq_completion)bcache){+.+.}-{0:0}, at: process_one_work+0x1ec/0x530
      |  #1: ffff8880098c3e70 ((work_completion)(&cl->work)#3){+.+.}-{0:0}, at: process_one_work+0x1ec/0x530
      |  #2: ffff8880143de8c8 (&b->lock l=1 1048575:9223372036854775807){++++}-{3:3}, at: __bch_btree_map_nodes+0xea/0x1e0
      
      [peterz: extended changelog]
      Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
      Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
      Link: https://lkml.kernel.org/r/20230509195847.1745548-1-kent.overstreet@linux.dev
      eb1cfd09
  4. 14 May, 2023 13 commits
  5. 13 May, 2023 9 commits