linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/17] -stable review
@ 2006-01-13  2:37 Chris Wright
  2006-01-13  2:37 ` [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() Chris Wright
                   ` (17 more replies)
  0 siblings, 18 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan

This is the start of the stable review cycle for the 2.6.15.1 release.
There are 17 patches in this series, all will be posted as a response to
this one.  If anyone has any issues with these being applied, please let
us know.  If anyone is a maintainer of the proper subsystem, and wants
to add a Signed-off-by: line to the patch, please respond with it.

These patches are sent out with a number of different people on the
Cc: line.  If you wish to be a reviewer, please email stable@kernel.org
to add your name to the list.  If you want to be off the reviewer list,
also email us.

Responses should be made by Sun, Jan 15, 03:00 UTC.  Anything received after
that time, might be too late.

thanks,

the -stable release team
--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13 18:46   ` Ingo Oeser
  2006-01-13  2:37 ` [PATCH 02/17] UFS: inode->i_sem is not released in error path Chris Wright
                   ` (16 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan,
	Stephen Hemminger,  Greg Kroah-Hartman

[-- Attachment #1: bridge-fix-faulty-check-in-br_stp_recalculate_bridge_id.patch --]
[-- Type: text/plain, Size: 1145 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

There is a regression in 2.6.15.
One of the conversions from memcmp to compare_ether_addr is incorrect.
We need to do relative comparison to determine min MAC address to
use in bridge id. This will cause the wrong bridge id to be chosen
which violates 802.1d Spanning Tree Protocol, and may create forwarding
loops.

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

 net/bridge/br_stp_if.c |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.15.y/net/bridge/br_stp_if.c
===================================================================
--- linux-2.6.15.y.orig/net/bridge/br_stp_if.c
+++ linux-2.6.15.y/net/bridge/br_stp_if.c
@@ -158,7 +158,7 @@ void br_stp_recalculate_bridge_id(struct
 
 	list_for_each_entry(p, &br->port_list, list) {
 		if (addr == br_mac_zero ||
-		    compare_ether_addr(p->dev->dev_addr, addr) < 0)
+		    memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
 			addr = p->dev->dev_addr;
 
 	}

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 02/17] UFS: inode->i_sem is not released in error path
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
  2006-01-13  2:37 ` [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 03/17] [PATCH] skge: handle out of memory on ring changes Chris Wright
                   ` (15 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, johnpol, mm-commits
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan,
	 Greg Kroah-Hartman

[-- Attachment #1: ufs-inode-i_sem-is-not-released-in-error-path.patch --]
[-- Type: text/plain, Size: 631 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

---

 fs/ufs/super.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)

Index: linux-2.6.15.y/fs/ufs/super.c
===================================================================
--- linux-2.6.15.y.orig/fs/ufs/super.c
+++ linux-2.6.15.y/fs/ufs/super.c
@@ -1296,8 +1296,10 @@ static ssize_t ufs_quota_write(struct su
 		blk++;
 	}
 out:
-	if (len == towrite)
+	if (len == towrite) {
+		up(&inode->i_sem);
 		return err;
+	}
 	if (inode->i_size < off+len-towrite)
 		i_size_write(inode, off+len-towrite);
 	inode->i_version++;

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 03/17] [PATCH] skge: handle out of memory on ring changes
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
  2006-01-13  2:37 ` [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() Chris Wright
  2006-01-13  2:37 ` [PATCH 02/17] UFS: inode->i_sem is not released in error path Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 04/17] [ATYFB]: Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15} Chris Wright
                   ` (14 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan,
	Stephen Hemminger,  Greg Kroah-Hartman

[-- Attachment #1: skge-handle-out-of-memory-on-ring-changes.patch --]
[-- Type: text/plain, Size: 5932 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Please consider this for 2.6.15.1; it fixes several cases where
the skge driver can get in a bad state and later crash; if an
admin operation that causes a restart fails from out of memory.
Such as changing the MTU or increasing the ring size.

The fixes involve checking the return value and doing necessary
unwinds. Or in some cases avoiding doing a full restart.

The same code is the netdev-2.6 tree for 2.6.16 but as separate pieces

Signed-off-by: Stephen Hemminger <shemminger@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---


 drivers/net/skge.c |   80 +++++++++++++++++++++++++++++++----------------------
 1 files changed, 48 insertions(+), 32 deletions(-)

Index: linux-2.6.15.y/drivers/net/skge.c
===================================================================
--- linux-2.6.15.y.orig/drivers/net/skge.c
+++ linux-2.6.15.y/drivers/net/skge.c
@@ -43,7 +43,7 @@
 #include "skge.h"
 
 #define DRV_NAME		"skge"
-#define DRV_VERSION		"1.2"
+#define DRV_VERSION		"1.3"
 #define PFX			DRV_NAME " "
 
 #define DEFAULT_TX_RING_SIZE	128
@@ -88,15 +88,14 @@ MODULE_DEVICE_TABLE(pci, skge_id_table);
 
 static int skge_up(struct net_device *dev);
 static int skge_down(struct net_device *dev);
+static void skge_phy_reset(struct skge_port *skge);
 static void skge_tx_clean(struct skge_port *skge);
 static int xm_phy_write(struct skge_hw *hw, int port, u16 reg, u16 val);
 static int gm_phy_write(struct skge_hw *hw, int port, u16 reg, u16 val);
 static void genesis_get_stats(struct skge_port *skge, u64 *data);
 static void yukon_get_stats(struct skge_port *skge, u64 *data);
 static void yukon_init(struct skge_hw *hw, int port);
-static void yukon_reset(struct skge_hw *hw, int port);
 static void genesis_mac_init(struct skge_hw *hw, int port);
-static void genesis_reset(struct skge_hw *hw, int port);
 static void genesis_link_up(struct skge_port *skge);
 
 /* Avoid conditionals by using array */
@@ -276,10 +275,9 @@ static int skge_set_settings(struct net_
 	skge->autoneg = ecmd->autoneg;
 	skge->advertising = ecmd->advertising;
 
-	if (netif_running(dev)) {
-		skge_down(dev);
-		skge_up(dev);
-	}
+	if (netif_running(dev))
+		skge_phy_reset(skge);
+
 	return (0);
 }
 
@@ -399,6 +397,7 @@ static int skge_set_ring_param(struct ne
 			       struct ethtool_ringparam *p)
 {
 	struct skge_port *skge = netdev_priv(dev);
+	int err;
 
 	if (p->rx_pending == 0 || p->rx_pending > MAX_RX_RING_SIZE ||
 	    p->tx_pending == 0 || p->tx_pending > MAX_TX_RING_SIZE)
@@ -409,7 +408,11 @@ static int skge_set_ring_param(struct ne
 
 	if (netif_running(dev)) {
 		skge_down(dev);
-		skge_up(dev);
+		err = skge_up(dev);
+		if (err)
+			dev_close(dev);
+		else
+			dev->set_multicast_list(dev);
 	}
 
 	return 0;
@@ -430,21 +433,11 @@ static void skge_set_msglevel(struct net
 static int skge_nway_reset(struct net_device *dev)
 {
 	struct skge_port *skge = netdev_priv(dev);
-	struct skge_hw *hw = skge->hw;
-	int port = skge->port;
 
 	if (skge->autoneg != AUTONEG_ENABLE || !netif_running(dev))
 		return -EINVAL;
 
-	spin_lock_bh(&hw->phy_lock);
-	if (hw->chip_id == CHIP_ID_GENESIS) {
-		genesis_reset(hw, port);
-		genesis_mac_init(hw, port);
-	} else {
-		yukon_reset(hw, port);
-		yukon_init(hw, port);
-	}
-	spin_unlock_bh(&hw->phy_lock);
+	skge_phy_reset(skge);
 	return 0;
 }
 
@@ -516,10 +509,8 @@ static int skge_set_pauseparam(struct ne
 	else
 		skge->flow_control = FLOW_MODE_NONE;
 
-	if (netif_running(dev)) {
-		skge_down(dev);
-		skge_up(dev);
-	}
+	if (netif_running(dev))
+		skge_phy_reset(skge);
 	return 0;
 }
 
@@ -1935,7 +1926,6 @@ static void yukon_link_down(struct skge_
 
 	}
 
-	yukon_reset(hw, port);
 	skge_link_down(skge);
 
 	yukon_init(hw, port);
@@ -2019,6 +2009,22 @@ static void yukon_phy_intr(struct skge_p
 	/* XXX restart autonegotiation? */
 }
 
+static void skge_phy_reset(struct skge_port *skge)
+{
+	struct skge_hw *hw = skge->hw;
+	int port = skge->port;
+
+	netif_stop_queue(skge->netdev);
+	netif_carrier_off(skge->netdev);
+
+	spin_lock_bh(&hw->phy_lock);
+	if (hw->chip_id == CHIP_ID_GENESIS)
+		genesis_mac_init(hw, port);
+	else
+		yukon_init(hw, port);
+	spin_unlock_bh(&hw->phy_lock);
+}
+
 /* Basic MII support */
 static int skge_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
@@ -2187,6 +2193,7 @@ static int skge_up(struct net_device *de
 	kfree(skge->rx_ring.start);
  free_pci_mem:
 	pci_free_consistent(hw->pdev, skge->mem_size, skge->mem, skge->dma);
+	skge->mem = NULL;
 
 	return err;
 }
@@ -2197,6 +2204,9 @@ static int skge_down(struct net_device *
 	struct skge_hw *hw = skge->hw;
 	int port = skge->port;
 
+	if (skge->mem == NULL)
+		return 0;
+
 	if (netif_msg_ifdown(skge))
 		printk(KERN_INFO PFX "%s: disabling interface\n", dev->name);
 
@@ -2253,6 +2263,7 @@ static int skge_down(struct net_device *
 	kfree(skge->rx_ring.start);
 	kfree(skge->tx_ring.start);
 	pci_free_consistent(hw->pdev, skge->mem_size, skge->mem, skge->dma);
+	skge->mem = NULL;
 	return 0;
 }
 
@@ -2413,18 +2424,23 @@ static void skge_tx_timeout(struct net_d
 
 static int skge_change_mtu(struct net_device *dev, int new_mtu)
 {
-	int err = 0;
-	int running = netif_running(dev);
+	int err;
 
 	if (new_mtu < ETH_ZLEN || new_mtu > ETH_JUMBO_MTU)
 		return -EINVAL;
 
+	if (!netif_running(dev)) {
+		dev->mtu = new_mtu;
+		return 0;
+	}
+
+	skge_down(dev);
 
-	if (running)
-		skge_down(dev);
 	dev->mtu = new_mtu;
-	if (running)
-		skge_up(dev);
+
+	err = skge_up(dev);
+	if (err)
+		dev_close(dev);
 
 	return err;
 }
@@ -3398,8 +3414,8 @@ static int skge_resume(struct pci_dev *p
 		struct net_device *dev = hw->dev[i];
 		if (dev) {
 			netif_device_attach(dev);
-			if (netif_running(dev))
-				skge_up(dev);
+			if (netif_running(dev) && skge_up(dev))
+				dev_close(dev);
 		}
 	}
 	return 0;

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 04/17] [ATYFB]: Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15}
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (2 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 03/17] [PATCH] skge: handle out of memory on ring changes Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 05/17] ppc32: Re-add embed_config.c to ml300/ep405 Chris Wright
                   ` (13 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, David S. Miller,
	Luis F. Ortiz

[-- Attachment #1: fix-ATY-video-on-sunblade.patch --]
[-- Type: text/plain, Size: 2528 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

	I have recently been switching from using 2.4.32 on my trusty
old Sparc Blade 100 to using 2.6.15 .  Some of the problems I ran into
were distorted video when the console was active (missing first
character, skipped dots) and when running X windows (colored snow,
stripes, missing pixels).  A quick examination of the 2.6 versus 2.4
source for the ATY driver revealed alot of changes.

         A closer look at the code/data for the 64GR/XL chip revealed
two minor "typos" that the rewriter(s) of the code made.  The first is
a incorrect clock value (230 .vs. 235) and the second is a missing
flag (M64F_SDRAM_MAGIC_PLL).  Making both these changes seems to have
fixed my problem.  I tend to think the 235 value is the correct one,
as there is a 29.4 Mhz clock crystal close to the video chip and 235.2
(29.4*8) is too close to 235 to make it a coincidence.

	The flag for M64F_SDRAM_MAGIC_PLL was dropped during the
changes made by adaplas in file revision 1.72 on the old bitkeeper
repository.

	The change relating to the clock rate has been there forever,
at least in the 2.6 tree.  I'm not sure where to look for the old 2.5
tree or if anyone cares when it happened.

On SPARC Blades 100's, which use the ATY MACH64GR video chipset, the
clock crystal frequency is 235.2 Mhz, not 230 Mhz.  The chipset also
requires the use of M64F_SDRAM_MAGIC_PLL in order to setup the PLL
properly for the DRAM.

Signed-off-by: "Luis F. Ortiz" <lfo@Polyad.Org>
Signed-off-by: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 drivers/video/aty/atyfb_base.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.15.y.orig/drivers/video/aty/atyfb_base.c
+++ linux-2.6.15.y/drivers/video/aty/atyfb_base.c
@@ -403,7 +403,7 @@ static struct {
 	{ PCI_CHIP_MACH64GM, "3D RAGE XL (Mach64 GM, AGP)", 230, 83, 63, ATI_CHIP_264XL },
 	{ PCI_CHIP_MACH64GN, "3D RAGE XL (Mach64 GN, AGP)", 230, 83, 63, ATI_CHIP_264XL },
 	{ PCI_CHIP_MACH64GO, "3D RAGE XL (Mach64 GO, PCI-66/BGA)", 230, 83, 63, ATI_CHIP_264XL },
-	{ PCI_CHIP_MACH64GR, "3D RAGE XL (Mach64 GR, PCI-33MHz)", 230, 83, 63, ATI_CHIP_264XL },
+	{ PCI_CHIP_MACH64GR, "3D RAGE XL (Mach64 GR, PCI-33MHz)", 235, 83, 63, ATI_CHIP_264XL | M64F_SDRAM_MAGIC_PLL },
 	{ PCI_CHIP_MACH64GL, "3D RAGE XL (Mach64 GL, PCI)", 230, 83, 63, ATI_CHIP_264XL },
 	{ PCI_CHIP_MACH64GS, "3D RAGE XL (Mach64 GS, PCI)", 230, 83, 63, ATI_CHIP_264XL },
 

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 05/17] ppc32: Re-add embed_config.c to ml300/ep405
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (3 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 04/17] [ATYFB]: Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15} Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 06/17] [PATCH] vgacon: fix doublescan mode Chris Wright
                   ` (12 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, torvalds
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, akpm, alan, jacmet

[-- Attachment #1: ppc32-re-add-embed_configc-to-ml300-ep405.patch --]
[-- Type: text/plain, Size: 1130 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Commit 3e9e7c1d0b7a36fb8affb973a054c5098e27baa8 (ppc32: cleanup AMCC PPC40x
eval boards to support U-Boot) broke the kernel for ML300 / EP405.

It still compiles as there's a weak definition of the function in
misc-embedded.c, but the kernel crashes as the bd_t fixup isn't performed.

Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 arch/ppc/boot/simple/Makefile |    2 ++
 1 file changed, 2 insertions(+)

--- linux-2.6.15.y.orig/arch/ppc/boot/simple/Makefile
+++ linux-2.6.15.y/arch/ppc/boot/simple/Makefile
@@ -190,6 +190,8 @@ boot-$(CONFIG_REDWOOD_5)	+= embed_config
 boot-$(CONFIG_REDWOOD_6)	+= embed_config.o
 boot-$(CONFIG_8xx)		+= embed_config.o
 boot-$(CONFIG_8260)		+= embed_config.o
+boot-$(CONFIG_EP405)		+= embed_config.o
+boot-$(CONFIG_XILINX_ML300)	+= embed_config.o
 boot-$(CONFIG_BSEIP)		+= iic.o
 boot-$(CONFIG_MBX)		+= iic.o pci.o qspan_pci.o
 boot-$(CONFIG_MV64X60)		+= misc-mv64x60.o

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 06/17] [PATCH] vgacon: fix doublescan mode
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (4 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 05/17] ppc32: Re-add embed_config.c to ml300/ep405 Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 07/17] [PATCH] fix workqueue oops during cpu offline Chris Wright
                   ` (11 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, torvalds
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, akpm, alan, samuel.thibault, dravet

[-- Attachment #1: vgacon-fix-doublescan-mode.patch --]
[-- Type: text/plain, Size: 1113 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

When doublescan mode is in use, scanlines must be doubled.

Thanks to Jason Dravet <dravet@hotmail.com> for reporting and testing.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---

 drivers/video/console/vgacon.c |    8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--- linux-2.6.15.y.orig/drivers/video/console/vgacon.c
+++ linux-2.6.15.y/drivers/video/console/vgacon.c
@@ -503,10 +503,16 @@ static int vgacon_doresize(struct vc_dat
 {
 	unsigned long flags;
 	unsigned int scanlines = height * c->vc_font.height;
-	u8 scanlines_lo, r7, vsync_end, mode;
+	u8 scanlines_lo, r7, vsync_end, mode, max_scan;
 
 	spin_lock_irqsave(&vga_lock, flags);
 
+	outb_p(VGA_CRTC_MAX_SCAN, vga_video_port_reg);
+	max_scan = inb_p(vga_video_port_val);
+
+	if (max_scan & 0x80)
+		scanlines <<= 1;
+
 	outb_p(VGA_CRTC_MODE, vga_video_port_reg);
 	mode = inb_p(vga_video_port_val);
 

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 07/17] [PATCH] fix workqueue oops during cpu offline
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (5 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 06/17] [PATCH] vgacon: fix doublescan mode Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 08/17] [PATCH] netlink oops fix due to incorrect error code Chris Wright
                   ` (10 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, torvalds
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, akpm, alan, ntl

[-- Attachment #1: fix-workqueue-oops-during-cpu-offline.patch --]
[-- Type: text/plain, Size: 3871 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Use first_cpu(cpu_possible_map) for the single-thread workqueue case.  We
used to hardcode 0, but that broke on systems where !cpu_possible(0) when
workqueue_struct->cpu_workqueue_struct was changed from a static array to
alloc_percpu.

Commit id bce61dd49d6ba7799be2de17c772e4c701558f14 ("Fix hardcoded cpu=0 in
workqueue for per_cpu_ptr() calls") fixed that for Ben's funky sparc64
system, but it regressed my Power5.  Offlining cpu 0 oopses upon the next
call to queue_work for a single-thread workqueue, because now we try to
manipulate per_cpu_ptr(wq->cpu_wq, 1), which is uninitialized.

So we need to establish an unchanging "slot" for single-thread workqueues
which will have a valid percpu allocation.  Since alloc_percpu keys off of
cpu_possible_map, which must not change after initialization, make this
slot == first_cpu(cpu_possible_map).

Signed-off-by: Nathan Lynch <ntl@pobox.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---

 kernel/workqueue.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

Index: linux-2.6.15.y/kernel/workqueue.c
===================================================================
--- linux-2.6.15.y.orig/kernel/workqueue.c
+++ linux-2.6.15.y/kernel/workqueue.c
@@ -29,7 +29,8 @@
 #include <linux/kthread.h>
 
 /*
- * The per-CPU workqueue (if single thread, we always use cpu 0's).
+ * The per-CPU workqueue (if single thread, we always use the first
+ * possible cpu).
  *
  * The sequence counters are for flush_scheduled_work().  It wants to wait
  * until until all currently-scheduled works are completed, but it doesn't
@@ -69,6 +70,8 @@ struct workqueue_struct {
 static DEFINE_SPINLOCK(workqueue_lock);
 static LIST_HEAD(workqueues);
 
+static int singlethread_cpu;
+
 /* If it's single threaded, it isn't in the list of workqueues. */
 static inline int is_single_threaded(struct workqueue_struct *wq)
 {
@@ -102,7 +105,7 @@ int fastcall queue_work(struct workqueue
 
 	if (!test_and_set_bit(0, &work->pending)) {
 		if (unlikely(is_single_threaded(wq)))
-			cpu = any_online_cpu(cpu_online_map);
+			cpu = singlethread_cpu;
 		BUG_ON(!list_empty(&work->entry));
 		__queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
 		ret = 1;
@@ -118,7 +121,7 @@ static void delayed_work_timer_fn(unsign
 	int cpu = smp_processor_id();
 
 	if (unlikely(is_single_threaded(wq)))
-		cpu = any_online_cpu(cpu_online_map);
+		cpu = singlethread_cpu;
 
 	__queue_work(per_cpu_ptr(wq->cpu_wq, cpu), work);
 }
@@ -267,7 +270,7 @@ void fastcall flush_workqueue(struct wor
 
 	if (is_single_threaded(wq)) {
 		/* Always use first cpu's area. */
-		flush_cpu_workqueue(per_cpu_ptr(wq->cpu_wq, any_online_cpu(cpu_online_map)));
+		flush_cpu_workqueue(per_cpu_ptr(wq->cpu_wq, singlethread_cpu));
 	} else {
 		int cpu;
 
@@ -320,7 +323,7 @@ struct workqueue_struct *__create_workqu
 	lock_cpu_hotplug();
 	if (singlethread) {
 		INIT_LIST_HEAD(&wq->list);
-		p = create_workqueue_thread(wq, any_online_cpu(cpu_online_map));
+		p = create_workqueue_thread(wq, singlethread_cpu);
 		if (!p)
 			destroy = 1;
 		else
@@ -374,7 +377,7 @@ void destroy_workqueue(struct workqueue_
 	/* We don't need the distraction of CPUs appearing and vanishing. */
 	lock_cpu_hotplug();
 	if (is_single_threaded(wq))
-		cleanup_workqueue_thread(wq, any_online_cpu(cpu_online_map));
+		cleanup_workqueue_thread(wq, singlethread_cpu);
 	else {
 		for_each_online_cpu(cpu)
 			cleanup_workqueue_thread(wq, cpu);
@@ -543,6 +546,7 @@ static int __devinit workqueue_cpu_callb
 
 void init_workqueues(void)
 {
+	singlethread_cpu = first_cpu(cpu_possible_map);
 	hotcpu_notifier(workqueue_cpu_callback, 0);
 	keventd_wq = create_workqueue("events");
 	BUG_ON(!keventd_wq);

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 08/17] [PATCH] netlink oops fix due to incorrect error code
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (6 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 07/17] [PATCH] fix workqueue oops during cpu offline Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 09/17] [NETFILTER]: Fix crash in ip_nat_pptp Chris Wright
                   ` (9 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, Linus Torvalds, Andrew Morton,
	Dmitry Mishin, Stanislav Protassov
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, alan, Kirill Korotaev

[-- Attachment #1: netlink-oops-fix-due-to-incorrect-error-code.patch --]
[-- Type: text/plain, Size: 870 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Fixed oops after failed netlink socket creation.
Wrong parathenses in if() statement caused err to be 1,
instead of negative value.
Trivial fix, not trivial to find though.

Signed-Off-By: Dmitry Mishin <dim@sw.ru>
Signed-Off-By: Kirill Korotaev <dev@openvz.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 net/netlink/af_netlink.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.15.y.orig/net/netlink/af_netlink.c
+++ linux-2.6.15.y/net/netlink/af_netlink.c
@@ -402,7 +402,7 @@ static int netlink_create(struct socket 
 	groups = nl_table[protocol].groups;
 	netlink_unlock_table();
 
-	if ((err = __netlink_create(sock, protocol) < 0))
+	if ((err = __netlink_create(sock, protocol)) < 0)
 		goto out_module;
 
 	nlk = nlk_sk(sock->sk);

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 09/17] [NETFILTER]: Fix crash in ip_nat_pptp
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (7 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 08/17] [PATCH] netlink oops fix due to incorrect error code Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 10/17] [NETFILTER]: Fix another " Chris Wright
                   ` (8 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, Patrick McHardy

[-- Attachment #1: netfilter-fix-crash-in-ip_nat_pptp.patch --]
[-- Type: text/plain, Size: 911 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

When an inbound PPTP_IN_CALL_REQUEST packet is received the
PPTP NAT helper uses a NULL pointer in pointer arithmentic to
calculate the offset in the packet which needs to be mangled
and corrupts random memory or crashes.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 net/ipv4/netfilter/ip_nat_helper_pptp.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.15.y.orig/net/ipv4/netfilter/ip_nat_helper_pptp.c
+++ linux-2.6.15.y/net/ipv4/netfilter/ip_nat_helper_pptp.c
@@ -315,7 +315,7 @@ pptp_inbound_pkt(struct sk_buff **pskb,
 		break;
 	case PPTP_IN_CALL_REQUEST:
 		/* only need to nat in case PAC is behind NAT box */
-		break;
+		return NF_ACCEPT;
 	case PPTP_WAN_ERROR_NOTIFY:
 		pcid = &pptpReq->wanerr.peersCallID;
 		break;

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 10/17] [NETFILTER]: Fix another crash in ip_nat_pptp
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (8 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 09/17] [NETFILTER]: Fix crash in ip_nat_pptp Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 11/17] [EBTABLES] Dont match tcp/udp source/destination port for IP fragments Chris Wright
                   ` (7 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, Patrick McHardy

[-- Attachment #1: netfilter-fix-another-crash-in-ip_nat_pptp.patch --]
[-- Type: text/plain, Size: 5542 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

The PPTP NAT helper calculates the offset at which the packet needs
to be mangled as difference between two pointers to the header. With
non-linear skbs however the pointers may point to two seperate buffers
on the stack and the calculation results in a wrong offset beeing
used.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 net/ipv4/netfilter/ip_nat_helper_pptp.c |   57 +++++++++++++++-----------------
 1 file changed, 27 insertions(+), 30 deletions(-)

--- linux-2.6.15.y.orig/net/ipv4/netfilter/ip_nat_helper_pptp.c
+++ linux-2.6.15.y/net/ipv4/netfilter/ip_nat_helper_pptp.c
@@ -148,14 +148,14 @@ pptp_outbound_pkt(struct sk_buff **pskb,
 {
 	struct ip_ct_pptp_master *ct_pptp_info = &ct->help.ct_pptp_info;
 	struct ip_nat_pptp *nat_pptp_info = &ct->nat.help.nat_pptp_info;
-
-	u_int16_t msg, *cid = NULL, new_callid;
+	u_int16_t msg, new_callid;
+	unsigned int cid_off;
 
 	new_callid = htons(ct_pptp_info->pns_call_id);
 	
 	switch (msg = ntohs(ctlh->messageType)) {
 		case PPTP_OUT_CALL_REQUEST:
-			cid = &pptpReq->ocreq.callID;
+			cid_off = offsetof(union pptp_ctrl_union, ocreq.callID);
 			/* FIXME: ideally we would want to reserve a call ID
 			 * here.  current netfilter NAT core is not able to do
 			 * this :( For now we use TCP source port. This breaks
@@ -172,10 +172,10 @@ pptp_outbound_pkt(struct sk_buff **pskb,
 			ct_pptp_info->pns_call_id = ntohs(new_callid);
 			break;
 		case PPTP_IN_CALL_REPLY:
-			cid = &pptpReq->icreq.callID;
+			cid_off = offsetof(union pptp_ctrl_union, icreq.callID);
 			break;
 		case PPTP_CALL_CLEAR_REQUEST:
-			cid = &pptpReq->clrreq.callID;
+			cid_off = offsetof(union pptp_ctrl_union, clrreq.callID);
 			break;
 		default:
 			DEBUGP("unknown outbound packet 0x%04x:%s\n", msg,
@@ -197,18 +197,15 @@ pptp_outbound_pkt(struct sk_buff **pskb,
 
 	/* only OUT_CALL_REQUEST, IN_CALL_REPLY, CALL_CLEAR_REQUEST pass
 	 * down to here */
-
-	IP_NF_ASSERT(cid);
-
 	DEBUGP("altering call id from 0x%04x to 0x%04x\n",
-		ntohs(*cid), ntohs(new_callid));
+		ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_callid));
 
 	/* mangle packet */
 	if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
-		(void *)cid - ((void *)ctlh - sizeof(struct pptp_pkt_hdr)),
-				 	sizeof(new_callid), 
-					(char *)&new_callid,
-				 	sizeof(new_callid)) == 0)
+	                             cid_off + sizeof(struct pptp_pkt_hdr) +
+	                             sizeof(struct PptpControlHeader),
+	                             sizeof(new_callid), (char *)&new_callid,
+	                             sizeof(new_callid)) == 0)
 		return NF_DROP;
 
 	return NF_ACCEPT;
@@ -299,7 +296,8 @@ pptp_inbound_pkt(struct sk_buff **pskb,
 		 union pptp_ctrl_union *pptpReq)
 {
 	struct ip_nat_pptp *nat_pptp_info = &ct->nat.help.nat_pptp_info;
-	u_int16_t msg, new_cid = 0, new_pcid, *pcid = NULL, *cid = NULL;
+	u_int16_t msg, new_cid = 0, new_pcid;
+	unsigned int pcid_off, cid_off = 0;
 
 	int ret = NF_ACCEPT, rv;
 
@@ -307,23 +305,23 @@ pptp_inbound_pkt(struct sk_buff **pskb,
 
 	switch (msg = ntohs(ctlh->messageType)) {
 	case PPTP_OUT_CALL_REPLY:
-		pcid = &pptpReq->ocack.peersCallID;	
-		cid = &pptpReq->ocack.callID;
+		pcid_off = offsetof(union pptp_ctrl_union, ocack.peersCallID);
+		cid_off = offsetof(union pptp_ctrl_union, ocack.callID);
 		break;
 	case PPTP_IN_CALL_CONNECT:
-		pcid = &pptpReq->iccon.peersCallID;
+		pcid_off = offsetof(union pptp_ctrl_union, iccon.peersCallID);
 		break;
 	case PPTP_IN_CALL_REQUEST:
 		/* only need to nat in case PAC is behind NAT box */
 		return NF_ACCEPT;
 	case PPTP_WAN_ERROR_NOTIFY:
-		pcid = &pptpReq->wanerr.peersCallID;
+		pcid_off = offsetof(union pptp_ctrl_union, wanerr.peersCallID);
 		break;
 	case PPTP_CALL_DISCONNECT_NOTIFY:
-		pcid = &pptpReq->disc.callID;
+		pcid_off = offsetof(union pptp_ctrl_union, disc.callID);
 		break;
 	case PPTP_SET_LINK_INFO:
-		pcid = &pptpReq->setlink.peersCallID;
+		pcid_off = offsetof(union pptp_ctrl_union, setlink.peersCallID);
 		break;
 
 	default:
@@ -345,25 +343,24 @@ pptp_inbound_pkt(struct sk_buff **pskb,
 	 * WAN_ERROR_NOTIFY, CALL_DISCONNECT_NOTIFY pass down here */
 
 	/* mangle packet */
-	IP_NF_ASSERT(pcid);
 	DEBUGP("altering peer call id from 0x%04x to 0x%04x\n",
-		ntohs(*pcid), ntohs(new_pcid));
+		ntohs(*(u_int16_t *)pptpReq + pcid_off), ntohs(new_pcid));
 	
-	rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo, 
-				      (void *)pcid - ((void *)ctlh - sizeof(struct pptp_pkt_hdr)),
+	rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
+	                              pcid_off + sizeof(struct pptp_pkt_hdr) +
+				      sizeof(struct PptpControlHeader),
 				      sizeof(new_pcid), (char *)&new_pcid, 
 				      sizeof(new_pcid));
 	if (rv != NF_ACCEPT) 
 		return rv;
 
 	if (new_cid) {
-		IP_NF_ASSERT(cid);
 		DEBUGP("altering call id from 0x%04x to 0x%04x\n",
-			ntohs(*cid), ntohs(new_cid));
-		rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo, 
-					      (void *)cid - ((void *)ctlh - sizeof(struct pptp_pkt_hdr)), 
-					      sizeof(new_cid),
-					      (char *)&new_cid, 
+			ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_cid));
+		rv = ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
+		                              cid_off + sizeof(struct pptp_pkt_hdr) +
+					      sizeof(struct PptpControlHeader),
+					      sizeof(new_cid), (char *)&new_cid, 
 					      sizeof(new_cid));
 		if (rv != NF_ACCEPT)
 			return rv;

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 11/17] [EBTABLES] Dont match tcp/udp source/destination port for IP fragments
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (9 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 10/17] [NETFILTER]: Fix another " Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 12/17] [SPARC64]: Fix ptrace/strace Chris Wright
                   ` (6 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, David S. Miller,
	Bart De Schuymer

[-- Attachment #1: fix-bridge-netfilter-matching-ip-fragments.patch --]
[-- Type: text/plain, Size: 811 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

---
 net/bridge/netfilter/ebt_ip.c |    3 +++
 1 file changed, 3 insertions(+)

--- linux-2.6.15.y.orig/net/bridge/netfilter/ebt_ip.c
+++ linux-2.6.15.y/net/bridge/netfilter/ebt_ip.c
@@ -15,6 +15,7 @@
 #include <linux/netfilter_bridge/ebtables.h>
 #include <linux/netfilter_bridge/ebt_ip.h>
 #include <linux/ip.h>
+#include <net/ip.h>
 #include <linux/in.h>
 #include <linux/module.h>
 
@@ -51,6 +52,8 @@ static int ebt_filter_ip(const struct sk
 		if (!(info->bitmask & EBT_IP_DPORT) &&
 		    !(info->bitmask & EBT_IP_SPORT))
 			return EBT_MATCH;
+		if (ntohs(ih->frag_off) & IP_OFFSET)
+			return EBT_NOMATCH;
 		pptr = skb_header_pointer(skb, ih->ihl*4,
 					  sizeof(_ports), &_ports);
 		if (pptr == NULL)

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 12/17] [SPARC64]: Fix ptrace/strace
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (10 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 11/17] [EBTABLES] Dont match tcp/udp source/destination port for IP fragments Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 13/17] [SPARC64]: Fix sys_fstat64() entry in 64-bit syscall table Chris Wright
                   ` (5 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, David S. Miller,
	Richard Mortimer

[-- Attachment #1: sparc64-fix-ptrace.patch --]
[-- Type: text/plain, Size: 1413 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Don't clobber register %l0 while checking TI_SYS_NOERROR value in
syscall return path.  This bug was introduced by:

db7d9a4eb700be766cc9f29241483dbb1e748832

Problem narrowed down by Luis F. Ortiz and Richard Mortimer.

I tried using %l2 as suggested by Luis and that works for me.

Looking at the code I wonder if it makes sense to simplify the code
a little bit. The following works for me but I'm not sure how to
exercise the "NOERROR" codepath.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---

 arch/sparc64/kernel/entry.S |    7 ++-----
 1 files changed, 2 insertions(+), 5 deletions(-)

Index: linux-2.6.15.y/arch/sparc64/kernel/entry.S
===================================================================
--- linux-2.6.15.y.orig/arch/sparc64/kernel/entry.S
+++ linux-2.6.15.y/arch/sparc64/kernel/entry.S
@@ -1657,13 +1657,10 @@ ret_sys_call:
 	/* Check if force_successful_syscall_return()
 	 * was invoked.
 	 */
-	ldub		[%curptr + TI_SYS_NOERROR], %l0
-	brz,pt		%l0, 1f
-	 nop
-	ba,pt		%xcc, 80f
+	ldub            [%curptr + TI_SYS_NOERROR], %l2
+	brnz,a,pn       %l2, 80f
 	 stb		%g0, [%curptr + TI_SYS_NOERROR]
 
-1:
 	cmp		%o0, -ERESTART_RESTARTBLOCK
 	bgeu,pn		%xcc, 1f
 	 andcc		%l0, (_TIF_SYSCALL_TRACE|_TIF_SECCOMP|_TIF_SYSCALL_AUDIT), %l6

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 13/17] [SPARC64]: Fix sys_fstat64() entry in 64-bit syscall table.
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (11 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 12/17] [SPARC64]: Fix ptrace/strace Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 14/17] [AF_NETLINK]: Fix DoS in netlink_rcv_skb() (CVE-2006-0035) Chris Wright
                   ` (4 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, David S. Miller

[-- Attachment #1: sparc64-fix-sys_fstat64-entry-in-64-bit-syscall-table.patch --]
[-- Type: text/plain, Size: 1202 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Noticed by Jakub Jelinek.

Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---

 arch/sparc64/kernel/systbls.S |    2 +-
 1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.15.y/arch/sparc64/kernel/systbls.S
===================================================================
--- linux-2.6.15.y.orig/arch/sparc64/kernel/systbls.S
+++ linux-2.6.15.y/arch/sparc64/kernel/systbls.S
@@ -98,7 +98,7 @@ sys_call_table:
 	.word sys_umount, sys_setgid, sys_getgid, sys_signal, sys_geteuid
 /*50*/	.word sys_getegid, sys_acct, sys_memory_ordering, sys_nis_syscall, sys_ioctl
 	.word sys_reboot, sys_nis_syscall, sys_symlink, sys_readlink, sys_execve
-/*60*/	.word sys_umask, sys_chroot, sys_newfstat, sys_stat64, sys_getpagesize
+/*60*/	.word sys_umask, sys_chroot, sys_newfstat, sys_fstat64, sys_getpagesize
 	.word sys_msync, sys_vfork, sys_pread64, sys_pwrite64, sys_nis_syscall
 /*70*/	.word sys_nis_syscall, sys_mmap, sys_nis_syscall, sys64_munmap, sys_mprotect
 	.word sys_madvise, sys_vhangup, sys_nis_syscall, sys_mincore, sys_getgroups

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 14/17] [AF_NETLINK]: Fix DoS in netlink_rcv_skb() (CVE-2006-0035)
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (12 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 13/17] [SPARC64]: Fix sys_fstat64() entry in 64-bit syscall table Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 15/17] [PATCH] moxa serial: add proper capability check Chris Wright
                   ` (3 subsequent siblings)
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, Martin Murray,
	 David S. Miller

[-- Attachment #1: fix-DoS-in-netlink_rcv_skb.patch --]
[-- Type: text/plain, Size: 860 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

Sanity check nlmsg_len during netlink_rcv_skb.  An nlmsg_len == 0 can
cause infinite loop in kernel, effectively DoSing machine.  Noted by
Matin Murray.

Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
 net/netlink/af_netlink.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.15.y.orig/net/netlink/af_netlink.c
+++ linux-2.6.15.y/net/netlink/af_netlink.c
@@ -1422,7 +1422,7 @@ static int netlink_rcv_skb(struct sk_buf
 	while (skb->len >= nlmsg_total_size(0)) {
 		nlh = (struct nlmsghdr *) skb->data;
 
-		if (skb->len < nlh->nlmsg_len)
+		if (nlh->nlmsg_len < NLMSG_HDRLEN || skb->len < nlh->nlmsg_len)
 			return 0;
 
 		total_len = min(NLMSG_ALIGN(nlh->nlmsg_len), skb->len);

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 15/17] [PATCH] moxa serial: add proper capability check
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (13 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 14/17] [AF_NETLINK]: Fix DoS in netlink_rcv_skb() (CVE-2006-0035) Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  9:00   ` Alan Cox
  2006-01-13  2:37 ` [PATCH 16/17] " [PATCH] fix /sys/class/net/" <if>/wireless without dev->get_wireless_stats Chris Wright
                   ` (2 subsequent siblings)
  17 siblings, 1 reply; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, Alan Cox

[-- Attachment #1: moxa-serial-add-proper-capability-check.patch --]
[-- Type: text/plain, Size: 623 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

This requires the proper capabilities for the moxa bios update ioctl's.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 drivers/char/moxa.c |    2 ++
 1 file changed, 2 insertions(+)

--- linux-2.6.15.y.orig/drivers/char/moxa.c
+++ linux-2.6.15.y/drivers/char/moxa.c
@@ -1661,6 +1661,8 @@ int MoxaDriverIoctl(unsigned int cmd, un
 	case MOXA_FIND_BOARD:
 	case MOXA_LOAD_C320B:
 	case MOXA_LOAD_CODE:
+		if (!capable(CAP_SYS_RAWIO))
+			return -EPERM;
 		break;
 	}
 

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 16/17] " [PATCH] fix /sys/class/net/" <if>/wireless without dev->get_wireless_stats
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (14 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 15/17] [PATCH] moxa serial: add proper capability check Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13  2:37 ` [PATCH 17/17] [PATCH] arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies Chris Wright
  2006-01-13 15:15 ` Remove slashed from disk names when creation dev names in sysfs patch in stable? (was: Re: [PATCH 00/17] -stable review) Sander
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable, torvalds
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, akpm, alan, arvidjaar, jgarzik, davem

[-- Attachment #1: fix-sys-class-net-if-wireless-without-dev-get_wireless_stats.patch --]
[-- Type: text/plain, Size: 2696 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

dev->get_wireless_stats is deprecated but removing it also removes wireless
subdirectory in sysfs. This patch puts it back.

akpm: I don't know what's happening here.  This might be appropriate as a
2.6.15.x compatibility backport.  Waiting to hear from Jeff.

Signed-off-by: Andrey Borzenkov <arvidjaar@mail.ru>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Jeff Garzik <jgarzik@pobox.com>
Cc: <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 net/core/net-sysfs.c |   28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)

--- linux-2.6.15.y.orig/net/core/net-sysfs.c
+++ linux-2.6.15.y/net/core/net-sysfs.c
@@ -16,6 +16,7 @@
 #include <net/sock.h>
 #include <linux/rtnetlink.h>
 #include <linux/wireless.h>
+#include <net/iw_handler.h>
 
 #define to_class_dev(obj) container_of(obj,struct class_device,kobj)
 #define to_net_dev(class) container_of(class, struct net_device, class_dev)
@@ -313,13 +314,19 @@ static ssize_t wireless_show(struct clas
 					       char *))
 {
 	struct net_device *dev = to_net_dev(cd);
-	const struct iw_statistics *iw;
+	const struct iw_statistics *iw = NULL;
 	ssize_t ret = -EINVAL;
 	
 	read_lock(&dev_base_lock);
-	if (dev_isalive(dev) && dev->get_wireless_stats 
-	    && (iw = dev->get_wireless_stats(dev)) != NULL) 
-		ret = (*format)(iw, buf);
+	if (dev_isalive(dev)) {
+		if(dev->wireless_handlers &&
+		   dev->wireless_handlers->get_wireless_stats)
+			iw = dev->wireless_handlers->get_wireless_stats(dev);
+		else if (dev->get_wireless_stats)
+			iw = dev->get_wireless_stats(dev);
+		if (iw != NULL)
+			ret = (*format)(iw, buf);
+	}
 	read_unlock(&dev_base_lock);
 
 	return ret;
@@ -420,7 +427,8 @@ void netdev_unregister_sysfs(struct net_
 		sysfs_remove_group(&class_dev->kobj, &netstat_group);
 
 #ifdef WIRELESS_EXT
-	if (net->get_wireless_stats)
+	if (net->get_wireless_stats || (net->wireless_handlers &&
+			net->wireless_handlers->get_wireless_stats))
 		sysfs_remove_group(&class_dev->kobj, &wireless_group);
 #endif
 	class_device_del(class_dev);
@@ -453,10 +461,12 @@ int netdev_register_sysfs(struct net_dev
 		goto out_unreg; 
 
 #ifdef WIRELESS_EXT
-	if (net->get_wireless_stats &&
-	    (ret = sysfs_create_group(&class_dev->kobj, &wireless_group)))
-		goto out_cleanup; 
-
+	if (net->get_wireless_stats || (net->wireless_handlers &&
+			net->wireless_handlers->get_wireless_stats)) {
+		ret = sysfs_create_group(&class_dev->kobj, &wireless_group);
+		if (ret)
+			goto out_cleanup;
+	}
 	return 0;
 out_cleanup:
 	if (net->get_stats)

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 17/17] [PATCH] arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (15 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 16/17] " [PATCH] fix /sys/class/net/" <if>/wireless without dev->get_wireless_stats Chris Wright
@ 2006-01-13  2:37 ` Chris Wright
  2006-01-13 15:15 ` Remove slashed from disk names when creation dev names in sysfs patch in stable? (was: Re: [PATCH 00/17] -stable review) Sander
  17 siblings, 0 replies; 23+ messages in thread
From: Chris Wright @ 2006-01-13  2:37 UTC (permalink / raw)
  To: linux-kernel, stable
  Cc: Justin Forbes, Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap,
	Dave Jones, Chuck Wolber, torvalds, akpm, alan, Adrian Bunk,
	davem

[-- Attachment #1: sparc64-fix-HUGETLB_PAGE_SIZE_64K-dependencies.patch --]
[-- Type: text/plain, Size: 747 bytes --]

-stable review patch.  If anyone has any objections, please let us know.
------------------

This patch fixes a typo in the dependencies of HUGETLB_PAGE_SIZE_64K.

This bug was reported by Jean-Luc Leger <reiga@dspnet.fr.eu.org>.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Chris Wright <chrisw@sous-sol.org>
---
 arch/sparc64/Kconfig |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- linux-2.6.15.y.orig/arch/sparc64/Kconfig
+++ linux-2.6.15.y/arch/sparc64/Kconfig
@@ -179,7 +179,7 @@ config HUGETLB_PAGE_SIZE_512K
 	bool "512K"
 
 config HUGETLB_PAGE_SIZE_64K
-	depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512K
+	depends on !SPARC64_PAGE_SIZE_4MB && !SPARC64_PAGE_SIZE_512KB
 	bool "64K"
 
 endchoice

--

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 15/17] [PATCH] moxa serial: add proper capability check
  2006-01-13  2:37 ` [PATCH 15/17] [PATCH] moxa serial: add proper capability check Chris Wright
@ 2006-01-13  9:00   ` Alan Cox
  0 siblings, 0 replies; 23+ messages in thread
From: Alan Cox @ 2006-01-13  9:00 UTC (permalink / raw)
  To: Chris Wright
  Cc: linux-kernel, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	torvalds, akpm, alan, Alan Cox

On Thu, Jan 12, 2006 at 06:37:53PM -0800, Chris Wright wrote:
> -stable review patch.  If anyone has any objections, please let us know.
> ------------------
> 
> This requires the proper capabilities for the moxa bios update ioctl's.
> 
> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
> Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Alan Cox <alan@redhat.com>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Remove slashed from disk names when creation dev names in sysfs patch in stable? (was: Re: [PATCH 00/17] -stable review)
  2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
                   ` (16 preceding siblings ...)
  2006-01-13  2:37 ` [PATCH 17/17] [PATCH] arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies Chris Wright
@ 2006-01-13 15:15 ` Sander
  17 siblings, 0 replies; 23+ messages in thread
From: Sander @ 2006-01-13 15:15 UTC (permalink / raw)
  To: Chris Wright; +Cc: linux-kernel, stable, Neil Brown

Hi all,

Shouldn't Neil Brown's patch be included in -stable too? It lets one use
software raid on top of a Promise SX8 SATA controller:

http://www.ussg.iu.edu/hypermail/linux/kernel/0601.1/1634.html

To my untrained eyes the patch seems simple enough, and it fixes a real
bug.

Please forgive me if this is not proper -stable material.

	Kind regards, Sander

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2006-01-13  2:37 ` [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() Chris Wright
@ 2006-01-13 18:46   ` Ingo Oeser
  2006-01-13 19:39     ` Chris Wright
  0 siblings, 1 reply; 23+ messages in thread
From: Ingo Oeser @ 2006-01-13 18:46 UTC (permalink / raw)
  To: linux-kernel
  Cc: Chris Wright, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	torvalds, akpm, alan, Stephen Hemminger,  Greg Kroah-Hartman

[-- Attachment #1: Type: text/plain, Size: 674 bytes --]

Hi there,

On Friday 13 January 2006 03:37, Chris Wright wrote:
> One of the conversions from memcmp to compare_ether_addr is incorrect.
> We need to do relative comparison to determine min MAC address to
> use in bridge id. This will cause the wrong bridge id to be chosen
> which violates 802.1d Spanning Tree Protocol, and may create forwarding
> loops.

Why not include a shorter version of this nice explanation
above the list_for_each_entry() loop?

Like:

/* We try to find the min MAC address to use in this bridge id. */

This will prevent the next janitor from converting this again
which avoids future regressions here.

What do you think?


Regards

Ingo Oeser


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2006-01-13 18:46   ` Ingo Oeser
@ 2006-01-13 19:39     ` Chris Wright
  2006-01-14 13:33       ` Ingo Oeser
  0 siblings, 1 reply; 23+ messages in thread
From: Chris Wright @ 2006-01-13 19:39 UTC (permalink / raw)
  To: Ingo Oeser
  Cc: linux-kernel, Chris Wright, stable, Justin Forbes,
	Zwane Mwaikambo, Theodore Ts'o, Randy Dunlap, Dave Jones,
	Chuck Wolber, torvalds, akpm, alan, Stephen Hemminger,
	Greg Kroah-Hartman

* Ingo Oeser (ioe-lkml@rameria.de) wrote:
> Why not include a shorter version of this nice explanation
> above the list_for_each_entry() loop?
> 
> Like:
> 
> /* We try to find the min MAC address to use in this bridge id. */

Send a patch to Stephen ;-)  I'll leave it as is for -stable, since it's
not a candidate for janitorial cleanups.

thanks,
-chris

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id()
  2006-01-13 19:39     ` Chris Wright
@ 2006-01-14 13:33       ` Ingo Oeser
  0 siblings, 0 replies; 23+ messages in thread
From: Ingo Oeser @ 2006-01-14 13:33 UTC (permalink / raw)
  To: linux-kernel
  Cc: Chris Wright, stable, Justin Forbes, Zwane Mwaikambo,
	Theodore Ts'o, Randy Dunlap, Dave Jones, Chuck Wolber,
	torvalds, akpm, alan, Stephen Hemminger, Greg Kroah-Hartman

[-- Attachment #1: Type: text/plain, Size: 517 bytes --]

On Friday 13 January 2006 20:39, Chris Wright wrote:
> * Ingo Oeser (ioe-lkml@rameria.de) wrote:
> > Why not include a shorter version of this nice explanation
> > above the list_for_each_entry() loop?
> > 
> > Like:
> > 
> > /* We try to find the min MAC address to use in this bridge id. */
> 
> Send a patch to Stephen ;-)  I'll leave it as is for -stable, since it's
> not a candidate for janitorial cleanups.

Fine with me. Your argument is perfectly reasonable for me.


Regards

Ingo Oeser


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2006-01-14 13:33 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-01-13  2:37 [PATCH 00/17] -stable review Chris Wright
2006-01-13  2:37 ` [PATCH 01/17] BRIDGE: Fix faulty check in br_stp_recalculate_bridge_id() Chris Wright
2006-01-13 18:46   ` Ingo Oeser
2006-01-13 19:39     ` Chris Wright
2006-01-14 13:33       ` Ingo Oeser
2006-01-13  2:37 ` [PATCH 02/17] UFS: inode->i_sem is not released in error path Chris Wright
2006-01-13  2:37 ` [PATCH 03/17] [PATCH] skge: handle out of memory on ring changes Chris Wright
2006-01-13  2:37 ` [PATCH 04/17] [ATYFB]: Fix onboard video on SPARC Blade 100 for 2.6.{13,14,15} Chris Wright
2006-01-13  2:37 ` [PATCH 05/17] ppc32: Re-add embed_config.c to ml300/ep405 Chris Wright
2006-01-13  2:37 ` [PATCH 06/17] [PATCH] vgacon: fix doublescan mode Chris Wright
2006-01-13  2:37 ` [PATCH 07/17] [PATCH] fix workqueue oops during cpu offline Chris Wright
2006-01-13  2:37 ` [PATCH 08/17] [PATCH] netlink oops fix due to incorrect error code Chris Wright
2006-01-13  2:37 ` [PATCH 09/17] [NETFILTER]: Fix crash in ip_nat_pptp Chris Wright
2006-01-13  2:37 ` [PATCH 10/17] [NETFILTER]: Fix another " Chris Wright
2006-01-13  2:37 ` [PATCH 11/17] [EBTABLES] Dont match tcp/udp source/destination port for IP fragments Chris Wright
2006-01-13  2:37 ` [PATCH 12/17] [SPARC64]: Fix ptrace/strace Chris Wright
2006-01-13  2:37 ` [PATCH 13/17] [SPARC64]: Fix sys_fstat64() entry in 64-bit syscall table Chris Wright
2006-01-13  2:37 ` [PATCH 14/17] [AF_NETLINK]: Fix DoS in netlink_rcv_skb() (CVE-2006-0035) Chris Wright
2006-01-13  2:37 ` [PATCH 15/17] [PATCH] moxa serial: add proper capability check Chris Wright
2006-01-13  9:00   ` Alan Cox
2006-01-13  2:37 ` [PATCH 16/17] " [PATCH] fix /sys/class/net/" <if>/wireless without dev->get_wireless_stats Chris Wright
2006-01-13  2:37 ` [PATCH 17/17] [PATCH] arch/sparc64/Kconfig: fix HUGETLB_PAGE_SIZE_64K dependencies Chris Wright
2006-01-13 15:15 ` Remove slashed from disk names when creation dev names in sysfs patch in stable? (was: Re: [PATCH 00/17] -stable review) Sander

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).