• Sebastian Ott's avatar
    s390/airq: silence lockdep warning · 0eb69a0c
    Sebastian Ott authored
    airq_iv_(alloc|free) is called by some users with interrupts enabled
    and by some with interrupts disabled which leads to the following
    lockdep warning:
    
    [ INFO: possible irq lock inversion dependency detected ]
    3.14.0-15249-gbf29b7b-dirty #25 Not tainted
    ---------------------------------------------------------
    insmod/2108 just changed the state of lock:
     (&(&iv->lock)->rlock){+.....}, at: [<000000000046ee3e>] airq_iv_alloc+0x62/0x228
    but this lock was taken by another, HARDIRQ-READ-safe lock in the past:
     (&info->lock){.-.-..}
    
    and interrupts could create inverse lock ordering between them.
    
    other info that might help us debug this:
     Possible interrupt unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&(&iv->lock)->rlock);
                                   local_irq_disable();
                                   lock(&info->lock);
                                   lock(&(&iv->lock)->rlock);
      <Interrupt>
        lock(&info->lock);
    
     *** DEADLOCK ***
    
    Although this is a false alarm (since each airq user consistently
    calls these functions from the same context) fix this by ensuring
    that interrupts are disabled when the airq lock is held.
    Reported-by: default avatarFrank Blaschka <frank.blaschka@de.ibm.com>
    Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    0eb69a0c
airq.c 6.78 KB