lkml.org 
[lkml]   [2012]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] dma-debug: Fix deadlock with netconsole or other drivers that use the DMA API
    On Thu, Apr 19, 2012 at 11:48:11AM -0700, Andrew Morton wrote:
    > On Thu, 19 Apr 2012 11:12:53 -0700
    > Roland Dreier <roland@kernel.org> wrote:
    > > ---
    > > lib/dma-debug.c | 2 +-
    > > 1 file changed, 1 insertion(+), 1 deletion(-)
    > >
    > > diff --git a/lib/dma-debug.c b/lib/dma-debug.c
    > > index 13ef233..f198b4e 100644
    > > --- a/lib/dma-debug.c
    > > +++ b/lib/dma-debug.c
    > > @@ -436,8 +436,8 @@ static struct dma_debug_entry *dma_entry_alloc(void)
    > > spin_lock_irqsave(&free_entries_lock, flags);
    > >
    > > if (list_empty(&free_entries)) {
    > > - pr_err("DMA-API: debugging out of memory - disabling\n");
    > > global_disable = true;
    > > + pr_err("DMA-API: debugging out of memory - disabling\n");
    > > goto out;
    > > }
    >
    > So *any* printk can deadlock if free_entries_lock is held and
    > global_disable==false?
    >
    > In that case we're going to need much sterner fixes. Any list_head
    > operation can do a printk if list_head debugging is enabled.
    > dma_debug_resize_entries() does a kfree() under free_entries_lock(!).
    >
    > Methinks we need a more general fix?

    Hmm, I think the best way to fix it is to switch the hash-bucket lists
    to rcu. Then the lock is only needed in hash_bucket_add/del and we
    should be fine.
    But that is probably only a fix for the next merge window.


    Joerg

    --
    AMD Operating System Research Center

    Advanced Micro Devices GmbH Einsteinring 24 85609 Dornach
    General Managers: Alberto Bozzo
    Registration: Dornach, Landkr. Muenchen; Registerger. Muenchen, HRB Nr. 43632



    \
     
     \ /
      Last update: 2012-04-20 13:25    [W:0.029 / U:0.232 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site