• Wu Fengguang's avatar
    inotify: use GFP_NOFS in kernel_event() to work around a lockdep false-positive · 381a80e6
    Wu Fengguang authored
    There is what we believe to be a false positive reported by lockdep.
    
    inotify_inode_queue_event() => take inotify_mutex => kernel_event() =>
    kmalloc() => SLOB => alloc_pages_node() => page reclaim => slab reclaim =>
    dcache reclaim => inotify_inode_is_dead => take inotify_mutex => deadlock
    
    The plan is to fix this via lockdep annotation, but that is proving to be
    quite involved.
    
    The patch flips the allocation over to GFP_NFS to shut the warning up, for
    the 2.6.30 release.
    
    Hopefully we will fix this for real in 2.6.31.  I'll queue a patch in -mm
    to switch it back to GFP_KERNEL so we don't forget.
    
      =================================
      [ INFO: inconsistent lock state ]
      2.6.30-rc2-next-20090417 #203
      ---------------------------------
      inconsistent {RECLAIM_FS-ON-W} -> {IN-RECLAIM_FS-W} usage.
      kswapd0/380 [HC0[0]:SC0[0]:HE1:SE1] takes:
       (&inode->inotify_mutex){+.+.?.}, at: [<ffffffff8112f1b5>] inotify_inode_is_dead+0x35/0...
    381a80e6
auditfilter.c 45.8 KB