[PATCH] UML - Fix locking in skb alloction failure fix - Kernel

This is a discussion on [PATCH] UML - Fix locking in skb alloction failure fix - Kernel ; Add _irqsave/_irqrestore to the locking in update_drop_skb to keep uml_net_rx out while the drop skb is being messed with. Signed-off-by: Jeff Dike --- arch/um/drivers/net_kern.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) Index: linux-2.6.22/arch/um/drivers/net_kern.c ================================================== ================= --- linux-2.6.22.orig/arch/um/drivers/net_kern.c ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: [PATCH] UML - Fix locking in skb alloction failure fix

  1. [PATCH] UML - Fix locking in skb alloction failure fix

    Add _irqsave/_irqrestore to the locking in update_drop_skb to keep
    uml_net_rx out while the drop skb is being messed with.

    Signed-off-by: Jeff Dike
    ---
    arch/um/drivers/net_kern.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    Index: linux-2.6.22/arch/um/drivers/net_kern.c
    ================================================== =================
    --- linux-2.6.22.orig/arch/um/drivers/net_kern.c 2007-09-28 11:10:19.000000000 -0400
    +++ linux-2.6.22/arch/um/drivers/net_kern.c 2007-09-28 11:13:58.000000000 -0400
    @@ -49,9 +49,10 @@ static int drop_max;
    static int update_drop_skb(int max)
    {
    struct sk_buff *new;
    + unsigned long flags;
    int err = 0;

    - spin_lock(&drop_lock);
    + spin_lock_irqsave(&drop_lock, flags);

    if (max <= drop_max)
    goto out;
    @@ -68,7 +69,7 @@ static int update_drop_skb(int max)
    drop_max = max;
    err = 0;
    out:
    - spin_unlock(&drop_lock);
    + spin_unlock_irqrestore(&drop_lock, flags);

    return err;
    }
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH] UML - Fix locking in skb alloction failure fix

    On Fri, 28 Sep 2007 11:43:14 -0400 Jeff Dike wrote:

    > Add _irqsave/_irqrestore to the locking in update_drop_skb to keep
    > uml_net_rx out while the drop skb is being messed with.
    >
    > Signed-off-by: Jeff Dike
    > ---
    > arch/um/drivers/net_kern.c | 5 +++--
    > 1 file changed, 3 insertions(+), 2 deletions(-)
    >
    > Index: linux-2.6.22/arch/um/drivers/net_kern.c
    > ================================================== =================
    > --- linux-2.6.22.orig/arch/um/drivers/net_kern.c 2007-09-28 11:10:19.000000000 -0400
    > +++ linux-2.6.22/arch/um/drivers/net_kern.c 2007-09-28 11:13:58.000000000 -0400
    > @@ -49,9 +49,10 @@ static int drop_max;
    > static int update_drop_skb(int max)
    > {
    > struct sk_buff *new;
    > + unsigned long flags;
    > int err = 0;
    >
    > - spin_lock(&drop_lock);
    > + spin_lock_irqsave(&drop_lock, flags);
    >
    > if (max <= drop_max)
    > goto out;
    > @@ -68,7 +69,7 @@ static int update_drop_skb(int max)
    > drop_max = max;
    > err = 0;
    > out:
    > - spin_unlock(&drop_lock);
    > + spin_unlock_irqrestore(&drop_lock, flags);
    >
    > return err;
    > }


    Doesn't this assume that the arch is only ever uniprocessor, which I don't think is
    true on i386 UML??
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH] UML - Fix locking in skb alloction failure fix

    On Fri, Sep 28, 2007 at 11:26:34AM -0700, Andrew Morton wrote:
    > Doesn't this assume that the arch is only ever uniprocessor, which I
    > don't think is true on i386 UML??


    It is for now, and when that changes, I haven't decided if and when
    interrupts will be received on multiple CPUs.

    Jeff

    --
    Work email - jdike at linux dot intel dot com
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread