• Ying Xue's avatar
    tipc: add lock nesting notation to quiet lockdep warning · 258f8667
    Ying Xue authored
    TIPC accept() call grabs the socket lock on a newly allocated
    socket while holding the socket lock on an old socket. But lockdep
    worries that this might be a recursive lock attempt:
    
      [ INFO: possible recursive locking detected ]
      ---------------------------------------------
      kworker/u:0/6 is trying to acquire lock:
      (sk_lock-AF_TIPC){+.+.+.}, at: [<c8c1226c>] accept+0x15c/0x310 [tipc]
    
      but task is already holding lock:
      (sk_lock-AF_TIPC){+.+.+.}, at: [<c8c12138>] accept+0x28/0x310 [tipc]
    
      other info that might help us debug this:
      Possible unsafe locking scenario:
    
              CPU0
              ----
              lock(sk_lock-AF_TIPC);
              lock(sk_lock-AF_TIPC);
    
              *** DEADLOCK ***
    
      May be due to missing lock nesting notation
      [...]
    
    Tell lockdep that this locking is safe by using lock_sock_nested().
    This is similar to what was done in commit 5131a184 for
    SCTP code ("SCTP: lock_sock_nested in sctp_sock_migrate").
    
    Also note that this is isn't something that is seen normally,
    as it was uncovered with some experimental work-in-progress
    code not yet ready for mainline.  So no need for stable
    backports or similar of this commit.
    Signed-off-by: default avatarYing Xue <ying.xue@windriver.com>
    Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
    258f8667
socket.c 47.3 KB