From: Greg Kroah-Hartman Date: Thu, 6 Apr 2006 16:16:49 +0000 (-0700) Subject: add more 2.6.16 -stable patches X-Git-Tag: v2.6.16.2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f1d5ac30e848dce4654a75cb24dc6646bcd9c76e;p=thirdparty%2Fkernel%2Fstable-queue.git add more 2.6.16 -stable patches --- diff --git a/queue-2.6.16/isd200-limit-to-blk_dev_ide.patch b/queue-2.6.16/isd200-limit-to-blk_dev_ide.patch new file mode 100644 index 00000000000..b5cadff2020 --- /dev/null +++ b/queue-2.6.16/isd200-limit-to-blk_dev_ide.patch @@ -0,0 +1,34 @@ +From stable-bounces@linux.kernel.org Wed Apr 5 12:01:43 2006 +Date: Wed, 5 Apr 2006 12:03:45 -0700 +From: "Randy.Dunlap" +To: stable@kernel.org, lkml +Message-Id: <20060405120345.6ad380de.rdunlap@xenotime.net> +Cc: +Subject: isd200: limit to BLK_DEV_IDE + + +From: Randy Dunlap + +Limit USB_STORAGE_ISD200 to whatever BLK_DEV_IDE and USB_STORAGE +are set to (y, m) since isd200 calls ide_fix_driveid() in the +BLK_DEV_IDE code. + +Signed-off-by: Randy Dunlap +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/Kconfig | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- linux-2.6.16.1.orig/drivers/usb/storage/Kconfig ++++ linux-2.6.16.1/drivers/usb/storage/Kconfig +@@ -48,7 +48,8 @@ config USB_STORAGE_FREECOM + + config USB_STORAGE_ISD200 + bool "ISD-200 USB/ATA Bridge support" +- depends on USB_STORAGE && BLK_DEV_IDE ++ depends on USB_STORAGE ++ depends on BLK_DEV_IDE=y || BLK_DEV_IDE=USB_STORAGE + ---help--- + Say Y here if you want to use USB Mass Store devices based + on the In-Systems Design ISD-200 USB/ATA bridge. diff --git a/queue-2.6.16/mpbl0010-driver-sysfs-permissions-wide-open.patch b/queue-2.6.16/mpbl0010-driver-sysfs-permissions-wide-open.patch new file mode 100644 index 00000000000..d76b9220d41 --- /dev/null +++ b/queue-2.6.16/mpbl0010-driver-sysfs-permissions-wide-open.patch @@ -0,0 +1,191 @@ +From stable-bounces@linux.kernel.org Wed Apr 5 01:07:24 2006 +Message-Id: <200604050807.k35873Qd030205@shell0.pdx.osdl.net> +To: mbellon@mvista.com, mark.gross@intel.com, stable@kernel.org, + mm-commits@vger.kernel.org +From: akpm@osdl.org +Date: Wed, 05 Apr 2006 01:06:06 -0700 +Cc: +Subject: MPBL0010 driver sysfs permissions wide open + +From: Mark Bellon + +The MPBL0010 Telco clock driver (drivers/char/tlclk.c) uses 0222 (anyone +can write) permissions on its writable sysfs entries. Alter the +permissions to 0220 (owner and group can write). + +The use case for this driver is to configure the fail over behavior of the +clock hardware. That should be done by the more privileged users. + +Signed-off-by: Mark Bellon +Acked-by: "Gross, Mark" +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/tlclk.c | 36 ++++++++++++++++++------------------ + 1 file changed, 18 insertions(+), 18 deletions(-) + +--- linux-2.6.16.1.orig/drivers/char/tlclk.c ++++ linux-2.6.16.1/drivers/char/tlclk.c +@@ -327,7 +327,7 @@ static ssize_t store_received_ref_clk3a( + return strnlen(buf, count); + } + +-static DEVICE_ATTR(received_ref_clk3a, S_IWUGO, NULL, ++static DEVICE_ATTR(received_ref_clk3a, (S_IWUSR|S_IWGRP), NULL, + store_received_ref_clk3a); + + +@@ -349,7 +349,7 @@ static ssize_t store_received_ref_clk3b( + return strnlen(buf, count); + } + +-static DEVICE_ATTR(received_ref_clk3b, S_IWUGO, NULL, ++static DEVICE_ATTR(received_ref_clk3b, (S_IWUSR|S_IWGRP), NULL, + store_received_ref_clk3b); + + +@@ -371,7 +371,7 @@ static ssize_t store_enable_clk3b_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clk3b_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clk3b_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clk3b_output); + + static ssize_t store_enable_clk3a_output(struct device *d, +@@ -392,7 +392,7 @@ static ssize_t store_enable_clk3a_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clk3a_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clk3a_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clk3a_output); + + static ssize_t store_enable_clkb1_output(struct device *d, +@@ -413,7 +413,7 @@ static ssize_t store_enable_clkb1_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clkb1_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clkb1_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clkb1_output); + + +@@ -435,7 +435,7 @@ static ssize_t store_enable_clka1_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clka1_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clka1_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clka1_output); + + static ssize_t store_enable_clkb0_output(struct device *d, +@@ -456,7 +456,7 @@ static ssize_t store_enable_clkb0_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clkb0_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clkb0_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clkb0_output); + + static ssize_t store_enable_clka0_output(struct device *d, +@@ -477,7 +477,7 @@ static ssize_t store_enable_clka0_output + return strnlen(buf, count); + } + +-static DEVICE_ATTR(enable_clka0_output, S_IWUGO, NULL, ++static DEVICE_ATTR(enable_clka0_output, (S_IWUSR|S_IWGRP), NULL, + store_enable_clka0_output); + + static ssize_t store_select_amcb2_transmit_clock(struct device *d, +@@ -519,7 +519,7 @@ static ssize_t store_select_amcb2_transm + return strnlen(buf, count); + } + +-static DEVICE_ATTR(select_amcb2_transmit_clock, S_IWUGO, NULL, ++static DEVICE_ATTR(select_amcb2_transmit_clock, (S_IWUSR|S_IWGRP), NULL, + store_select_amcb2_transmit_clock); + + static ssize_t store_select_amcb1_transmit_clock(struct device *d, +@@ -560,7 +560,7 @@ static ssize_t store_select_amcb1_transm + return strnlen(buf, count); + } + +-static DEVICE_ATTR(select_amcb1_transmit_clock, S_IWUGO, NULL, ++static DEVICE_ATTR(select_amcb1_transmit_clock, (S_IWUSR|S_IWGRP), NULL, + store_select_amcb1_transmit_clock); + + static ssize_t store_select_redundant_clock(struct device *d, +@@ -581,7 +581,7 @@ static ssize_t store_select_redundant_cl + return strnlen(buf, count); + } + +-static DEVICE_ATTR(select_redundant_clock, S_IWUGO, NULL, ++static DEVICE_ATTR(select_redundant_clock, (S_IWUSR|S_IWGRP), NULL, + store_select_redundant_clock); + + static ssize_t store_select_ref_frequency(struct device *d, +@@ -602,7 +602,7 @@ static ssize_t store_select_ref_frequenc + return strnlen(buf, count); + } + +-static DEVICE_ATTR(select_ref_frequency, S_IWUGO, NULL, ++static DEVICE_ATTR(select_ref_frequency, (S_IWUSR|S_IWGRP), NULL, + store_select_ref_frequency); + + static ssize_t store_filter_select(struct device *d, +@@ -623,7 +623,7 @@ static ssize_t store_filter_select(struc + return strnlen(buf, count); + } + +-static DEVICE_ATTR(filter_select, S_IWUGO, NULL, store_filter_select); ++static DEVICE_ATTR(filter_select, (S_IWUSR|S_IWGRP), NULL, store_filter_select); + + static ssize_t store_hardware_switching_mode(struct device *d, + struct device_attribute *attr, const char *buf, size_t count) +@@ -643,7 +643,7 @@ static ssize_t store_hardware_switching_ + return strnlen(buf, count); + } + +-static DEVICE_ATTR(hardware_switching_mode, S_IWUGO, NULL, ++static DEVICE_ATTR(hardware_switching_mode, (S_IWUSR|S_IWGRP), NULL, + store_hardware_switching_mode); + + static ssize_t store_hardware_switching(struct device *d, +@@ -664,7 +664,7 @@ static ssize_t store_hardware_switching( + return strnlen(buf, count); + } + +-static DEVICE_ATTR(hardware_switching, S_IWUGO, NULL, ++static DEVICE_ATTR(hardware_switching, (S_IWUSR|S_IWGRP), NULL, + store_hardware_switching); + + static ssize_t store_refalign (struct device *d, +@@ -684,7 +684,7 @@ static ssize_t store_refalign (struct de + return strnlen(buf, count); + } + +-static DEVICE_ATTR(refalign, S_IWUGO, NULL, store_refalign); ++static DEVICE_ATTR(refalign, (S_IWUSR|S_IWGRP), NULL, store_refalign); + + static ssize_t store_mode_select (struct device *d, + struct device_attribute *attr, const char *buf, size_t count) +@@ -704,7 +704,7 @@ static ssize_t store_mode_select (struct + return strnlen(buf, count); + } + +-static DEVICE_ATTR(mode_select, S_IWUGO, NULL, store_mode_select); ++static DEVICE_ATTR(mode_select, (S_IWUSR|S_IWGRP), NULL, store_mode_select); + + static ssize_t store_reset (struct device *d, + struct device_attribute *attr, const char *buf, size_t count) +@@ -724,7 +724,7 @@ static ssize_t store_reset (struct devic + return strnlen(buf, count); + } + +-static DEVICE_ATTR(reset, S_IWUGO, NULL, store_reset); ++static DEVICE_ATTR(reset, (S_IWUSR|S_IWGRP), NULL, store_reset); + + static struct attribute *tlclk_sysfs_entries[] = { + &dev_attr_current_ref.attr, diff --git a/queue-2.6.16/powerpc-fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch b/queue-2.6.16/powerpc-fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch new file mode 100644 index 00000000000..80154c0c7b7 --- /dev/null +++ b/queue-2.6.16/powerpc-fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch @@ -0,0 +1,43 @@ +From stable-bounces@linux.kernel.org Wed Apr 5 15:45:44 2006 +Message-ID: <17460.18559.549046.697967@cargo.ozlabs.ibm.com> +Date: Thu, 6 Apr 2006 08:45:19 +1000 +From: Paul Mackerras +To: stable@kernel.org +Cc: +Subject: powerpc: fix incorrect SA_ONSTACK behaviour for 64-bit processes + +From: Laurent MEYER + +*) When setting a sighandler using sigaction() call, if the flag +SA_ONSTACK is set and no alternate stack is provided via sigaltstack(), +the kernel still try to install the alternate stack. This behavior is +the opposite of the one which is documented in Single Unix +Specifications V3. + +*) Also when setting an alternate stack using sigaltstack() with the +flag SS_DISABLE, the kernel try to install the alternate stack on +signal delivery. + +These two use cases makes the process crash at signal delivery. + +This fixes it. + +Signed-off-by: Laurent Meyer +Signed-off-by: Paul Mackerras +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/signal_64.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- linux-2.6.16.1.orig/arch/powerpc/kernel/signal_64.c ++++ linux-2.6.16.1/arch/powerpc/kernel/signal_64.c +@@ -213,7 +213,7 @@ static inline void __user * get_sigframe + /* Default to using normal stack */ + newsp = regs->gpr[1]; + +- if (ka->sa.sa_flags & SA_ONSTACK) { ++ if ((ka->sa.sa_flags & SA_ONSTACK) && current->sas_ss_size) { + if (! on_sig_stack(regs->gpr[1])) + newsp = (current->sas_ss_sp + current->sas_ss_size); + } diff --git a/queue-2.6.16/powerpc-iseries-needs-slb_initialize-to-be-called.patch b/queue-2.6.16/powerpc-iseries-needs-slb_initialize-to-be-called.patch new file mode 100644 index 00000000000..10edc03a8a9 --- /dev/null +++ b/queue-2.6.16/powerpc-iseries-needs-slb_initialize-to-be-called.patch @@ -0,0 +1,43 @@ +From stable-bounces@linux.kernel.org Tue Apr 4 17:41:50 2006 +Date: Wed, 5 Apr 2006 10:41:21 +1000 +From: Stephen Rothwell +To: stable@kernel.org +Message-Id: <20060405104121.79b0ebd9.sfr@canb.auug.org.au> +Cc: paulus@samba.org, anton@samba.org +Subject: powerpc: iSeries needs slb_initialize to be called + +Since the powerpc 64k pages patch went in, systems that have SLBs +(like Power4 iSeries) needed to have slb_initialize called to set up +some variables for the SLB miss handler. This was not being called +on the boot processor on iSeries, so on single cpu iSeries machines, +we would get apparent memory curruption as soon as we entered user mode. + +This patch fixes that by calling slb_initialize on the boot cpu if the +processor has an SLB. + +Signed-off-by: Stephen Rothwell +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/kernel/setup_64.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- linux-2.6.16.1.orig/arch/powerpc/kernel/setup_64.c ++++ linux-2.6.16.1/arch/powerpc/kernel/setup_64.c +@@ -256,12 +256,10 @@ void __init early_setup(unsigned long dt + /* + * Initialize stab / SLB management except on iSeries + */ +- if (!firmware_has_feature(FW_FEATURE_ISERIES)) { +- if (cpu_has_feature(CPU_FTR_SLB)) +- slb_initialize(); +- else +- stab_initialize(lpaca->stab_real); +- } ++ if (cpu_has_feature(CPU_FTR_SLB)) ++ slb_initialize(); ++ else if (!firmware_has_feature(FW_FEATURE_ISERIES)) ++ stab_initialize(lpaca->stab_real); + + DBG(" <- early_setup()\n"); + } diff --git a/queue-2.6.16/series b/queue-2.6.16/series new file mode 100644 index 00000000000..12b5e3cfd89 --- /dev/null +++ b/queue-2.6.16/series @@ -0,0 +1,4 @@ +powerpc-iseries-needs-slb_initialize-to-be-called.patch +powerpc-fix-incorrect-sa_onstack-behaviour-for-64-bit-processes.patch +mpbl0010-driver-sysfs-permissions-wide-open.patch +isd200-limit-to-blk_dev_ide.patch