UML - Fix locking in skb alloction failure fix
PATCH 1/1 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.
--- arch/um/drivers/net_kern.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
arch/um/drivers/net_kern.c +3 -2
@@ -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; }
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 25 lines · On Fri, 28 Sep 2007 11:43:14 -0400 Jeff Dike <[email protected]> wrote:
Add _irqsave/_irqrestore to the locking in
update_drop_skbto keepuml_net_rxout while the drop skb is being messed with.Signed-off-by Jeff Dike <[email protected]>--- 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
===================================================================arch/um/drivers/net_kern.c +2
-1@@ -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;
arch/um/drivers/net_kern.c static int update_drop_skb(int max) · line 75
Quoted 8 lines
arch/um/drivers/net_kern.c +1
-1@@ -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??
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
User-mode-linux-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel
Quoted 2 lines · Andrew Morton
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
Signature · 10 lines
Work email - jdike at linux dot intel dot com ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ User-mode-linux-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel