From: Greg Kroah-Hartman Date: Wed, 11 Feb 2009 03:10:32 +0000 (-0800) Subject: start 2.6.27.16 review cycle X-Git-Tag: v2.6.27.16~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=601e538effa6c55a332424ce363c05e7c037a3d6;p=thirdparty%2Fkernel%2Fstable-queue.git start 2.6.27.16 review cycle --- diff --git a/queue-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch b/review-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch similarity index 100% rename from queue-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch rename to review-2.6.27/8250_pci-add-support-for-netmos-9835-ibm-devices.patch diff --git a/queue-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch b/review-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch similarity index 100% rename from queue-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch rename to review-2.6.27/acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch diff --git a/queue-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch b/review-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch similarity index 100% rename from queue-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch rename to review-2.6.27/acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch diff --git a/queue-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch b/review-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch similarity index 100% rename from queue-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch rename to review-2.6.27/acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch diff --git a/queue-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch b/review-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch similarity index 100% rename from queue-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch rename to review-2.6.27/acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch diff --git a/queue-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch b/review-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch similarity index 100% rename from queue-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch rename to review-2.6.27/acpi-proc_dir_entry-video-vga-already-registered.patch diff --git a/queue-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch b/review-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch similarity index 100% rename from queue-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch rename to review-2.6.27/acpi-skip-the-first-two-elements-in-the-_bcl-package.patch diff --git a/queue-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch b/review-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch similarity index 100% rename from queue-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch rename to review-2.6.27/acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch diff --git a/queue-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch b/review-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch similarity index 100% rename from queue-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch rename to review-2.6.27/acpica-add-function-to-dereference-returned-reference-objects.patch diff --git a/queue-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch b/review-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch similarity index 100% rename from queue-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch rename to review-2.6.27/acpica-copy-dynamically-loaded-tables-to-local-buffer.patch diff --git a/queue-2.6.27/acpica-fix-table-entry-truncation-calculation.patch b/review-2.6.27/acpica-fix-table-entry-truncation-calculation.patch similarity index 100% rename from queue-2.6.27/acpica-fix-table-entry-truncation-calculation.patch rename to review-2.6.27/acpica-fix-table-entry-truncation-calculation.patch diff --git a/queue-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch b/review-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch similarity index 100% rename from queue-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch rename to review-2.6.27/add-a-reference-to-sunrpc-in-svc_addsock.patch diff --git a/queue-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch b/review-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch similarity index 100% rename from queue-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch rename to review-2.6.27/add-support-for-8-port-rs-232-mic-3620-from-advantech.patch diff --git a/queue-2.6.27/agp-intel-add-support-for-g41-chipset.patch b/review-2.6.27/agp-intel-add-support-for-g41-chipset.patch similarity index 100% rename from queue-2.6.27/agp-intel-add-support-for-g41-chipset.patch rename to review-2.6.27/agp-intel-add-support-for-g41-chipset.patch diff --git a/queue-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch b/review-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch similarity index 100% rename from queue-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch rename to review-2.6.27/agp-intel-fix-broken-symbol-in-device-name.patch diff --git a/queue-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch b/review-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch similarity index 100% rename from queue-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch rename to review-2.6.27/agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch diff --git a/queue-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch b/review-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch similarity index 100% rename from queue-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch rename to review-2.6.27/alsa-hda-add-missing-coef-initialization-for-alc887.patch diff --git a/queue-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch b/review-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch similarity index 100% rename from queue-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch rename to review-2.6.27/alsa-hda-add-missing-initialization-for-alc272.patch diff --git a/queue-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch b/review-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch similarity index 100% rename from queue-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch rename to review-2.6.27/alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch diff --git a/queue-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch b/review-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch similarity index 100% rename from queue-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch rename to review-2.6.27/dm-mpath-avoid-attempting-to-activate-null-path.patch diff --git a/queue-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch b/review-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch similarity index 100% rename from queue-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch rename to review-2.6.27/e1000-fix-bug-with-shared-interrupt-during-reset.patch diff --git a/queue-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch b/review-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch similarity index 100% rename from queue-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch rename to review-2.6.27/e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch diff --git a/queue-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch b/review-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch similarity index 100% rename from queue-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch rename to review-2.6.27/eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch diff --git a/queue-2.6.27/elf-core-dump-fix-get_user-use.patch b/review-2.6.27/elf-core-dump-fix-get_user-use.patch similarity index 100% rename from queue-2.6.27/elf-core-dump-fix-get_user-use.patch rename to review-2.6.27/elf-core-dump-fix-get_user-use.patch diff --git a/queue-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch b/review-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch similarity index 100% rename from queue-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch rename to review-2.6.27/firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch diff --git a/queue-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch b/review-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch similarity index 100% rename from queue-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch rename to review-2.6.27/firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch diff --git a/queue-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch b/review-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch similarity index 100% rename from queue-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch rename to review-2.6.27/firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch diff --git a/queue-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch b/review-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch similarity index 100% rename from queue-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch rename to review-2.6.27/genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch diff --git a/queue-2.6.27/hso-rfkill-type-should-be-wwan.patch b/review-2.6.27/hso-rfkill-type-should-be-wwan.patch similarity index 100% rename from queue-2.6.27/hso-rfkill-type-should-be-wwan.patch rename to review-2.6.27/hso-rfkill-type-should-be-wwan.patch diff --git a/queue-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch b/review-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch similarity index 100% rename from queue-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch rename to review-2.6.27/ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch diff --git a/queue-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch b/review-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch similarity index 100% rename from queue-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch rename to review-2.6.27/ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch diff --git a/queue-2.6.27/ipw2200-fix-scanning-while-associated.patch b/review-2.6.27/ipw2200-fix-scanning-while-associated.patch similarity index 100% rename from queue-2.6.27/ipw2200-fix-scanning-while-associated.patch rename to review-2.6.27/ipw2200-fix-scanning-while-associated.patch diff --git a/review-2.6.27/mbox b/review-2.6.27/mbox new file mode 100644 index 00000000000..80c48cd2b64 --- /dev/null +++ b/review-2.6.27/mbox @@ -0,0 +1,5585 @@ +From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009 +Message-Id: <20090211001547.628318869@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:40 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Holger Macht , + Len Brown +Subject: [patch 01/56] ACPI: dock: Dont eval _STA on every show_docked sysfs read +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-dock-don-t-eval-_sta-on-every-show_docked-sysfs-read.patch +Content-Length: 1521 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Holger Macht + +commit fc5a9f8841ee87d93376ada5d73117d4d6a373ea upstream. + +Some devices trigger a DEVICE_CHECK on every evalutation of _STA. This +can also be seen in commit 8b59560a3baf2e7c24e0fb92ea5d09eca92805db +(ACPI: dock: avoid check _STA method). If an undock is processed, the +dock driver sends a uevent and userspace might read the show_docked +property in sysfs. This causes an evaluation of _STA of the particular +device which causes the dock driver to immediately dock again. + +In any case, evaluation of _STA (show_docked) does not necessarily mean +that we are docked, so check with the internal device structure. + +http://bugzilla.kernel.org/show_bug.cgi?id=12360 + +Signed-off-by: Holger Macht +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/dock.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/acpi/dock.c ++++ b/drivers/acpi/dock.c +@@ -691,8 +691,14 @@ fdd_out: + static ssize_t show_docked(struct device *dev, + struct device_attribute *attr, char *buf) + { +- return snprintf(buf, PAGE_SIZE, "%d\n", dock_present(dock_station)); ++ struct acpi_device *tmp; + ++ struct dock_station *dock_station = *((struct dock_station **) ++ dev->platform_data); ++ ++ if (ACPI_SUCCESS(acpi_bus_get_device(dock_station->handle, &tmp))) ++ return snprintf(buf, PAGE_SIZE, "1\n"); ++ return snprintf(buf, PAGE_SIZE, "0\n"); + } + static DEVICE_ATTR(docked, S_IRUGO, show_docked, NULL); + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009 +Message-Id: <20090211001547.758692352@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:41 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Venkatesh Pallipadi , + Len Brown +Subject: [patch 02/56] ACPI: Enable bit 11 in _PDC to advertise hw coord +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-enable-bit-11-in-_pdc-to-advertise-hw-coord.patch +Content-Length: 1429 +Lines: 40 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Pallipadi, Venkatesh + +commit d96f94c604453f87fe24154b87e1e9a3a72511f8 upstream. + +Bit 11 in intel PDC definitions is meant for OS capability to handle +hardware coordination of P-states. In Linux we have always supported +hwardware coordination of P-states. Just let the BIOSes know that we +support it, by setting this bit. + +Some BIOSes use this bit to choose between hardware or software coordination +and without this change below, BIOSes switch to software coordination, which +is not very optimal in terms of power consumption and extra wakeups from idle. + +Signed-off-by: Venkatesh Pallipadi +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + include/acpi/pdc_intel.h | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/include/acpi/pdc_intel.h ++++ b/include/acpi/pdc_intel.h +@@ -14,6 +14,7 @@ + #define ACPI_PDC_SMP_T_SWCOORD (0x0080) + #define ACPI_PDC_C_C1_FFH (0x0100) + #define ACPI_PDC_C_C2C3_FFH (0x0200) ++#define ACPI_PDC_SMP_P_HWCOORD (0x0800) + + #define ACPI_PDC_EST_CAPABILITY_SMP (ACPI_PDC_SMP_C1PT | \ + ACPI_PDC_C_C1_HALT | \ +@@ -22,6 +23,7 @@ + #define ACPI_PDC_EST_CAPABILITY_SWSMP (ACPI_PDC_SMP_C1PT | \ + ACPI_PDC_C_C1_HALT | \ + ACPI_PDC_SMP_P_SWCOORD | \ ++ ACPI_PDC_SMP_P_HWCOORD | \ + ACPI_PDC_P_FFH) + + #define ACPI_PDC_C_CAPABILITY_SMP (ACPI_PDC_SMP_C2C3 | \ + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001547.905965958@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:42 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhenyu Wang , + Eric Anholt , + Dave Airlie +Subject: [patch 03/56] agp/intel: add support for G41 chipset +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=agp-intel-add-support-for-g41-chipset.patch +Content-Length: 2134 +Lines: 60 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Zhenyu Wang + +commit a50ccc6c6623ab0e64f2109881e07c176b2d876f upstream. + +Signed-off-by: Zhenyu Wang +Signed-off-by: Eric Anholt +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/agp/intel-agp.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/char/agp/intel-agp.c ++++ b/drivers/char/agp/intel-agp.c +@@ -40,6 +40,8 @@ + #define PCI_DEVICE_ID_INTEL_Q45_IG 0x2E12 + #define PCI_DEVICE_ID_INTEL_G45_HB 0x2E20 + #define PCI_DEVICE_ID_INTEL_G45_IG 0x2E22 ++#define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30 ++#define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32 + + /* cover 915 and 945 variants */ + #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ +@@ -63,7 +65,8 @@ + #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \ + agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ + agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \ +- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB) ++ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \ ++ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB) + + extern int agp_memory_reserved; + +@@ -1196,6 +1199,7 @@ static void intel_i965_get_gtt_range(int + case PCI_DEVICE_ID_INTEL_IGD_E_HB: + case PCI_DEVICE_ID_INTEL_Q45_HB: + case PCI_DEVICE_ID_INTEL_G45_HB: ++ case PCI_DEVICE_ID_INTEL_G41_HB: + *gtt_offset = *gtt_size = MB(2); + break; + default: +@@ -2135,6 +2139,8 @@ static const struct intel_driver_descrip + "Q45/Q43", NULL, &intel_i965_driver }, + { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0, + "G45/G43", NULL, &intel_i965_driver }, ++ { PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0, ++ "G41", NULL, &intel_i965_driver }, + { 0, 0, 0, NULL, NULL, NULL } + }; + +@@ -2332,6 +2338,7 @@ static struct pci_device_id agp_intel_pc + ID(PCI_DEVICE_ID_INTEL_IGD_E_HB), + ID(PCI_DEVICE_ID_INTEL_Q45_HB), + ID(PCI_DEVICE_ID_INTEL_G45_HB), ++ ID(PCI_DEVICE_ID_INTEL_G41_HB), + { } + }; + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.063682722@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:43 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Eric Anholt , + Dave Airlie +Subject: [patch 04/56] agp/intel: Fix broken ® symbol in device name. +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=agp-intel-fix-broken-symbol-in-device-name.patch +Content-Length: 959 +Lines: 24 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Eric Anholt + +commit b854b2ab959e8175d75e01cf8ed452ed2624d0c8 upstream. + +Signed-off-by: Eric Anholt +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/agp/intel-agp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/char/agp/intel-agp.c ++++ b/drivers/char/agp/intel-agp.c +@@ -2132,7 +2132,7 @@ static const struct intel_driver_descrip + { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", + NULL, &intel_g33_driver }, + { PCI_DEVICE_ID_INTEL_GM45_HB, PCI_DEVICE_ID_INTEL_GM45_IG, 0, +- "Mobile Intel? GM45 Express", NULL, &intel_i965_driver }, ++ "Mobile Intel® GM45 Express", NULL, &intel_i965_driver }, + { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0, + "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, + { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.190585164@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:44 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Keith Packard , + Eric Anholt , + Dave Airlie +Subject: [patch 05/56] agp/intel: Reduce extraneous PCI posting reads during init +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=agp-intel-reduce-extraneous-pci-posting-reads-during-init.patch +Content-Length: 1927 +Lines: 50 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Keith Packard + +commit 44d494417278e49f5b42bd3ded1801b6d2254db8 upstream. + +Instead of doing a posting read after each GTT entry update, do a single one +at the end of the writes. This should reduce boot time a tiny amount by +avoiding a lot of extra uncached reads. + +Signed-off-by: Keith Packard +Signed-off-by: Eric Anholt +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/agp/intel-agp.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/drivers/char/agp/intel-agp.c ++++ b/drivers/char/agp/intel-agp.c +@@ -217,8 +217,8 @@ static int intel_i810_configure(void) + if (agp_bridge->driver->needs_scratch_page) { + for (i = 0; i < current_size->num_entries; i++) { + writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4)); +- readl(intel_private.registers+I810_PTE_BASE+(i*4)); /* PCI posting. */ + } ++ readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI posting. */ + } + global_cache_flush(); + return 0; +@@ -778,8 +778,8 @@ static int intel_i830_configure(void) + if (agp_bridge->driver->needs_scratch_page) { + for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) { + writel(agp_bridge->scratch_page, intel_private.registers+I810_PTE_BASE+(i*4)); +- readl(intel_private.registers+I810_PTE_BASE+(i*4)); /* PCI Posting. */ + } ++ readl(intel_private.registers+I810_PTE_BASE+((i-1)*4)); /* PCI Posting. */ + } + + global_cache_flush(); +@@ -994,8 +994,8 @@ static int intel_i915_configure(void) + if (agp_bridge->driver->needs_scratch_page) { + for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) { + writel(agp_bridge->scratch_page, intel_private.gtt+i); +- readl(intel_private.gtt+i); /* PCI Posting. */ + } ++ readl(intel_private.gtt+i-1); /* PCI Posting. */ + } + + global_cache_flush(); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.348595818@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:45 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jesse Brandeburg , + "David S. Miller" +Subject: [patch 06/56] e1000: fix bug with shared interrupt during reset +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=e1000-fix-bug-with-shared-interrupt-during-reset.patch +Content-Length: 1438 +Lines: 40 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Jesse Brandeburg + +commit 15b2bee22a0390d951301b53e83df88d0350c499 upstream. + +A nasty bug was found where an MTU change (or anything else that caused a +reset) could race with the interrupt code. The interrupt code was entered +by a shared interrupt during the MTU change. + +This change prevents the interrupt code from running while the driver is in +the middle of its reset path. + +Signed-off-by: Jesse Brandeburg +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/e1000/e1000_main.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/net/e1000/e1000_main.c ++++ b/drivers/net/e1000/e1000_main.c +@@ -31,7 +31,7 @@ + + char e1000_driver_name[] = "e1000"; + static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver"; +-#define DRV_VERSION "7.3.20-k3-NAPI" ++#define DRV_VERSION "7.3.21-k3-NAPI" + const char e1000_driver_version[] = DRV_VERSION; + static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation."; + +@@ -3835,7 +3835,7 @@ static irqreturn_t e1000_intr(int irq, v + struct e1000_hw *hw = &adapter->hw; + u32 rctl, icr = er32(ICR); + +- if (unlikely(!icr)) ++ if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags))) + return IRQ_NONE; /* Not our interrupt */ + + /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.476071377@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:46 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Karsten Keil , + "David S. Miller" +Subject: [patch 07/56] e1000: Fix PCI enable to honor the need_ioport flag +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=e1000-fix-pci-enable-to-honor-the-need_ioport-flag.patch +Content-Length: 830 +Lines: 28 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Karsten Keil + +commit 4d7155b932b8129c72e2f2714890e20b2a05e0b7 upstream. + +On machine were no IO ports are assigned the call +to pci_enable_device() will fail, even if need_ioport +is false, we need to use pci_enable_device_mem() here. + +Signed-off-by: Karsten Keil +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/e1000/e1000_main.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/e1000/e1000_main.c ++++ b/drivers/net/e1000/e1000_main.c +@@ -927,7 +927,7 @@ static int __devinit e1000_probe(struct + err = pci_enable_device(pdev); + } else { + bars = pci_select_bars(pdev, IORESOURCE_MEM); +- err = pci_enable_device(pdev); ++ err = pci_enable_device_mem(pdev); + } + if (err) + return err; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.630063574@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:47 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Darren Salt , + Len Brown +Subject: [patch 08/56] eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=eeepc-laptop-fix-oops-when-changing-backlight-brightness-during-eeepc-laptop-init.patch +Content-Length: 2365 +Lines: 61 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Darren Salt + +commit 7695fb04aca62e2d8a7ca6ede50f6211e1d71e53 upstream. + +I got the following oops while changing the backlight brightness during +startup. When it happens, it prevents use of the hotkeys, Fn-Fx, and the +lid button. + +It's a clear use-before-init, as I verified by testing with an +appropriately-placed "else printk". + +BUG: unable to handle kernel NULL pointer dereference at 00000000 +*pde = 00000000 +Oops: 0002 [#1] PREEMPT SMP +Pid: 160, comm: kacpi_notify Not tainted (2.6.28.1-eee901 #4) 901 +EIP: 0060:[] [] eeepc_hotk_notify+26/da +EFLAGS: 00010246 CPU: 1 +Using defaults from ksymoops -t elf32-i386 -a i386 +EAX: 00000009 EBX: 00000000 ECX: 00000009 EDX: f70dbf64 +ESI: 00000029 EDI: f7335188 EBP: c02112c9 ESP: f70dbf80 + DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068 + f70731e0 f73acd50 c02164ac f7335180 f70aa040 c02112e6 f733518c c012b62f + f70aa044 f70aa040 c012bdba f70aa04c 00000000 c012be6e 00000000 f70bdf80 + c012e198 f70dbfc4 f70dbfc4 f70aa040 c012bdba 00000000 c012e0c9 c012e091 +Call Trace: + [] ? acpi_ev_notify_dispatch+4c/55 + [] ? acpi_os_execute_deferred+1d/25 + [] ? run_workqueue+71/f1 + [] ? worker_thread+0/bf + [] ? worker_thread+b4/bf + [] ? autoremove_wake_function+0/2b + [] ? worker_thread+0/bf + [] ? kthread+38/5f + [] ? kthread+0/5f + [] ? kernel_thread_helper+7/10 +Code: 00 00 00 00 c3 83 3d 60 5c 50 c0 00 56 89 d6 53 0f 84 c4 00 00 00 8d 42 +e0 83 f8 0f 77 0f 8b 1d 68 5c 50 c0 89 d8 e8 a9 fa ff ff <89> 03 8b 1d 60 5c +50 c0 89 f2 83 e2 7f 0f b7 4c 53 10 8d 41 01 + +Signed-off-by: Darren Salt +Signed-off-by: Andrew Morton +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/misc/eeepc-laptop.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/misc/eeepc-laptop.c ++++ b/drivers/misc/eeepc-laptop.c +@@ -381,7 +381,8 @@ static void notify_wlan(u32 *event) + static void notify_brn(void) + { + struct backlight_device *bd = eeepc_backlight_device; +- bd->props.brightness = read_brightness(bd); ++ if (bd) ++ bd->props.brightness = read_brightness(bd); + } + + static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data) + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:48 2009 +Message-Id: <20090211001548.769388474@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:48 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + NeilBrown +Subject: [patch 09/56] md: Ensure an md array never has too many devices. +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=md-ensure-an-md-array-never-has-too-many-devices.patch +Content-Length: 2541 +Lines: 84 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: NeilBrown + +commit de01dfadf25bf83cfe3d85c163005c4320532658 upstream. + +Each different metadata format supported by md supports a +different maximum number of devices. +We really should be enforcing this maximum in the kernel, but +we aren't quite doing that properly. + +We currently only enforce it at the 'hot_add' point, which is an +older interface which is not used by current userspace. + +We need to also enforce it at 'add_new_disk' time for active arrays +and at 'do_md_run' time when starting a new array. + +So move the test from 'hot_add' into 'bind_rdev_to_array' which is +called from both 'hot_add' and 'add_new_disk, and add a new +test in 'analyse_sbs' which is called from 'do_md_run'. + +This bug (or missing feature) has been around "forever" and so +the patch is suitable for any -stable that is currently maintained. + +Signed-off-by: NeilBrown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/md.c | 24 ++++++++++++++---------- + 1 file changed, 14 insertions(+), 10 deletions(-) + +--- a/drivers/md/md.c ++++ b/drivers/md/md.c +@@ -1454,6 +1454,11 @@ static int bind_rdev_to_array(mdk_rdev_t + if (find_rdev_nr(mddev, rdev->desc_nr)) + return -EBUSY; + } ++ if (mddev->max_disks && rdev->desc_nr >= mddev->max_disks) { ++ printk(KERN_WARNING "md: %s: array is limited to %d devices\n", ++ mdname(mddev), mddev->max_disks); ++ return -EBUSY; ++ } + bdevname(rdev->bdev,b); + while ( (s=strchr(b, '/')) != NULL) + *s = '!'; +@@ -2362,6 +2367,15 @@ static void analyze_sbs(mddev_t * mddev) + + i = 0; + rdev_for_each(rdev, tmp, mddev) { ++ if (rdev->desc_nr >= mddev->max_disks || ++ i > mddev->max_disks) { ++ printk(KERN_WARNING ++ "md: %s: %s: only %d devices permitted\n", ++ mdname(mddev), bdevname(rdev->bdev, b), ++ mddev->max_disks); ++ kick_rdev_from_array(rdev); ++ continue; ++ } + if (rdev != freshest) + if (super_types[mddev->major_version]. + validate_super(mddev, rdev)) { +@@ -4450,13 +4464,6 @@ static int hot_add_disk(mddev_t * mddev, + * noticed in interrupt contexts ... + */ + +- if (rdev->desc_nr == mddev->max_disks) { +- printk(KERN_WARNING "%s: can not hot-add to full array!\n", +- mdname(mddev)); +- err = -EBUSY; +- goto abort_unbind_export; +- } +- + rdev->raid_disk = -1; + + md_update_sb(mddev, 1); +@@ -4470,9 +4477,6 @@ static int hot_add_disk(mddev_t * mddev, + md_new_event(mddev); + return 0; + +-abort_unbind_export: +- unbind_rdev_from_array(rdev); +- + abort_export: + export_rdev(rdev); + return err; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001548.899500891@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:49 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Karsten Keil , + Rusty Russell +Subject: [patch 10/56] module: remove over-zealous check in __module_get() +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=module-remove-over-zealous-check-in-__module_get.patch +Content-Length: 1044 +Lines: 33 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Rusty Russell + +commit 7f9a50a5b89b87f8e754f59ae9968da28be618a5 upstream. + +Impact: fix spurious BUG_ON() triggered under load + +module_refcount() isn't reliable outside stop_machine(), as demonstrated +by Karsten Keil , networking can trigger it under load +(an inc on one cpu and dec on another while module_refcount() is tallying + can give false results, for example). + +Almost noone should be using __module_get, but that's another issue. + +Cc: Karsten Keil +Signed-off-by: Rusty Russell +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/module.h | 1 - + 1 file changed, 1 deletion(-) + +--- a/include/linux/module.h ++++ b/include/linux/module.h +@@ -387,7 +387,6 @@ void symbol_put_addr(void *addr); + static inline void __module_get(struct module *module) + { + if (module) { +- BUG_ON(module_refcount(module) == 0); + local_inc(&module->ref[get_cpu()].count); + put_cpu(); + } + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.085548140@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:50 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Masami Hiramatsu +Subject: [patch 11/56] prevent kprobes from catching spurious page faults +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=prevent-kprobes-from-catching-spurious-page-faults.patch +Content-Length: 1361 +Lines: 47 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Masami Hiramatsu + +commit 9be260a646bf76fa418ee519afa10196b3164681 upstream. + +Prevent kprobes from catching spurious faults which will cause infinite +recursive page-fault and memory corruption by stack overflow. + +Signed-off-by: Masami Hiramatsu +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/mm/fault.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +--- a/arch/x86/mm/fault.c ++++ b/arch/x86/mm/fault.c +@@ -607,8 +607,6 @@ void __kprobes do_page_fault(struct pt_r + + si_code = SEGV_MAPERR; + +- if (notify_page_fault(regs)) +- return; + if (unlikely(kmmio_fault(regs, address))) + return; + +@@ -638,6 +636,9 @@ void __kprobes do_page_fault(struct pt_r + if (spurious_fault(address, error_code)) + return; + ++ /* kprobes don't want to hook the spurious faults. */ ++ if (notify_page_fault(regs)) ++ return; + /* + * Don't take the mm semaphore here. If we fixup a prefetch + * fault we could otherwise deadlock. +@@ -645,6 +646,9 @@ void __kprobes do_page_fault(struct pt_r + goto bad_area_nosemaphore; + } + ++ /* kprobes don't want to hook the spurious faults. */ ++ if (notify_page_fault(regs)) ++ return; + + #ifdef CONFIG_X86_32 + /* It's safe to allow irq's after cr2 has been saved and the vmalloc + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.244577569@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:51 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dean Nelson +Subject: [patch 12/56] sgi-xp: fix writing past the end of kzalloc()d space +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch +Content-Length: 2653 +Lines: 75 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Dean Nelson + +commit 361916a943cd9dbda1c0b00879d0225cc919d868 upstream. + +A missing type cast results in writing way beyond the end of a kzalloc()'d +memory segment resulting in slab corruption. But it seems like the better +solution is to define ->recv_msg_slots as a 'void *' rather than a +'struct xpc_notify_mq_msg_uv *' and add the type cast. + +Signed-off-by: Dean Nelson +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/misc/sgi-xp/xpc.h | 5 +++-- + drivers/misc/sgi-xp/xpc_uv.c | 11 +++++------ + 2 files changed, 8 insertions(+), 8 deletions(-) + +--- a/drivers/misc/sgi-xp/xpc.h ++++ b/drivers/misc/sgi-xp/xpc.h +@@ -3,7 +3,7 @@ + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * +- * Copyright (c) 2004-2008 Silicon Graphics, Inc. All Rights Reserved. ++ * Copyright (c) 2004-2009 Silicon Graphics, Inc. All Rights Reserved. + */ + + /* +@@ -502,7 +502,8 @@ struct xpc_channel_uv { + /* partition's notify mq */ + + struct xpc_send_msg_slot_uv *send_msg_slots; +- struct xpc_notify_mq_msg_uv *recv_msg_slots; ++ void *recv_msg_slots; /* each slot will hold a xpc_notify_mq_msg_uv */ ++ /* structure plus the user's payload */ + + struct xpc_fifo_head_uv msg_slot_free_list; + struct xpc_fifo_head_uv recv_msg_list; /* deliverable payloads */ +--- a/drivers/misc/sgi-xp/xpc_uv.c ++++ b/drivers/misc/sgi-xp/xpc_uv.c +@@ -3,7 +3,7 @@ + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * +- * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. ++ * Copyright (c) 2008-2009 Silicon Graphics, Inc. All Rights Reserved. + */ + + /* +@@ -825,8 +825,8 @@ xpc_allocate_recv_msg_slot_uv(struct xpc + continue; + + for (entry = 0; entry < nentries; entry++) { +- msg_slot = ch_uv->recv_msg_slots + entry * +- ch->entry_size; ++ msg_slot = ch_uv->recv_msg_slots + ++ entry * ch->entry_size; + + msg_slot->hdr.msg_slot_number = entry; + } +@@ -1123,9 +1123,8 @@ xpc_handle_notify_mq_msg_uv(struct xpc_p + /* we're dealing with a normal message sent via the notify_mq */ + ch_uv = &ch->sn.uv; + +- msg_slot = (struct xpc_notify_mq_msg_uv *)((u64)ch_uv->recv_msg_slots + +- (msg->hdr.msg_slot_number % ch->remote_nentries) * +- ch->entry_size); ++ msg_slot = ch_uv->recv_msg_slots + ++ (msg->hdr.msg_slot_number % ch->remote_nentries) * ch->entry_size; + + BUG_ON(msg->hdr.msg_slot_number != msg_slot->hdr.msg_slot_number); + BUG_ON(msg_slot->hdr.size != 0); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.377048945@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:52 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Tony Battersby , + Jiri Kosina , + Hugh Dickins +Subject: [patch 13/56] shm: fix shmctl(SHM_INFO) lockup with !CONFIG_SHMEM +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=shm-fix-shmctl-lockup-with-config_shmem.patch +Content-Length: 1455 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Tony Battersby + +commit a68e61e8ff2d46327a37b69056998b47745db6fa upstream. + +shm_get_stat() assumes that the inode is a "struct shmem_inode_info", +which is incorrect for !CONFIG_SHMEM (see fs/ramfs/inode.c: +ramfs_get_inode() vs. mm/shmem.c: shmem_get_inode()). + +This bad assumption can cause shmctl(SHM_INFO) to lockup when +shm_get_stat() tries to spin_lock(&info->lock). Users of !CONFIG_SHMEM +may encounter this lockup simply by invoking the 'ipcs' command. + +Reported by Jiri Olsa back in February 2008: +http://lkml.org/lkml/2008/2/29/74 + +Signed-off-by: Tony Battersby +Cc: Jiri Kosina +Reported-by: Jiri Olsa +Cc: Hugh Dickins +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + ipc/shm.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/ipc/shm.c ++++ b/ipc/shm.c +@@ -565,11 +565,15 @@ static void shm_get_stat(struct ipc_name + struct hstate *h = hstate_file(shp->shm_file); + *rss += pages_per_huge_page(h) * mapping->nrpages; + } else { ++#ifdef CONFIG_SHMEM + struct shmem_inode_info *info = SHMEM_I(inode); + spin_lock(&info->lock); + *rss += inode->i_mapping->nrpages; + *swp += info->swapped; + spin_unlock(&info->lock); ++#else ++ *rss += inode->i_mapping->nrpages; ++#endif + } + + total++; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.551208160@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:53 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Clemens Ladisch , + Takashi Iwai +Subject: [patch 14/56] sound: usb-audio: handle wMaxPacketSize for FIXED_ENDPOINT devices +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch +Content-Length: 1056 +Lines: 29 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Clemens Ladisch + +commit 894dcd78782842924527598b0b764c9b4e679e21 upstream. + +For audio devices that do not have proper audio descriptors (e.g., +Edirol UA-20), we use hardcoded parameters from our quirks list. +However, we must still read the maximum packet size from the standard +endpoint descriptor; otherwise, we might use packets that are too big +and therefore rejected by the USB core. + +Signed-off-by: Clemens Ladisch +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/usb/usbaudio.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/usb/usbaudio.c ++++ b/sound/usb/usbaudio.c +@@ -2958,6 +2958,7 @@ static int create_fixed_stream_quirk(str + return -EINVAL; + } + alts = &iface->altsetting[fp->altset_idx]; ++ fp->maxpacksize = le16_to_cpu(get_endpoint(alts, 0)->wMaxPacketSize); + usb_set_interface(chip->dev, fp->iface, 0); + init_usb_pitch(chip->dev, fp->iface, alts, fp); + init_usb_sample_rate(chip->dev, fp->iface, alts, fp, fp->rate_max); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.688830399@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:54 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Johannes Weiner , + Peter Zijlstra , + Matthew Wilcox , + Chuck Lever , + Nick Piggin , + Ingo Molnar +Subject: [patch 15/56] wait: prevent exclusive waiter starvation +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=wait-prevent-exclusive-waiter-starvation.patch +Content-Length: 6709 +Lines: 189 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Johannes Weiner + +commit 777c6c5f1f6e757ae49ecca2ed72d6b1f523c007 upstream. + +With exclusive waiters, every process woken up through the wait queue must +ensure that the next waiter down the line is woken when it has finished. + +Interruptible waiters don't do that when aborting due to a signal. And if +an aborting waiter is concurrently woken up through the waitqueue, noone +will ever wake up the next waiter. + +This has been observed with __wait_on_bit_lock() used by +lock_page_killable(): the first contender on the queue was aborting when +the actual lock holder woke it up concurrently. The aborted contender +didn't acquire the lock and therefor never did an unlock followed by +waking up the next waiter. + +Add abort_exclusive_wait() which removes the process' wait descriptor from +the waitqueue, iff still queued, or wakes up the next waiter otherwise. +It does so under the waitqueue lock. Racing with a wake up means the +aborting process is either already woken (removed from the queue) and will +wake up the next waiter, or it will remove itself from the queue and the +concurrent wake up will apply to the next waiter after it. + +Use abort_exclusive_wait() in __wait_event_interruptible_exclusive() and +__wait_on_bit_lock() when they were interrupted by other means than a wake +up through the queue. + +[akpm@linux-foundation.org: coding-style fixes] +Reported-by: Chris Mason +Signed-off-by: Johannes Weiner +Mentored-by: Oleg Nesterov +Cc: Peter Zijlstra +Cc: Matthew Wilcox +Cc: Chuck Lever +Cc: Nick Piggin +Cc: Ingo Molnar +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/wait.h | 11 +++++++-- + kernel/sched.c | 4 +-- + kernel/wait.c | 59 ++++++++++++++++++++++++++++++++++++++++++++------- + 3 files changed, 63 insertions(+), 11 deletions(-) + +--- a/include/linux/wait.h ++++ b/include/linux/wait.h +@@ -141,6 +141,8 @@ static inline void __remove_wait_queue(w + list_del(&old->task_list); + } + ++void __wake_up_common(wait_queue_head_t *q, unsigned int mode, ++ int nr_exclusive, int sync, void *key); + void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key); + extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode); + extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr); +@@ -342,16 +344,19 @@ do { \ + for (;;) { \ + prepare_to_wait_exclusive(&wq, &__wait, \ + TASK_INTERRUPTIBLE); \ +- if (condition) \ ++ if (condition) { \ ++ finish_wait(&wq, &__wait); \ + break; \ ++ } \ + if (!signal_pending(current)) { \ + schedule(); \ + continue; \ + } \ + ret = -ERESTARTSYS; \ ++ abort_exclusive_wait(&wq, &__wait, \ ++ TASK_INTERRUPTIBLE, NULL); \ + break; \ + } \ +- finish_wait(&wq, &__wait); \ + } while (0) + + #define wait_event_interruptible_exclusive(wq, condition) \ +@@ -440,6 +445,8 @@ extern long interruptible_sleep_on_timeo + void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state); + void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state); + void finish_wait(wait_queue_head_t *q, wait_queue_t *wait); ++void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, ++ unsigned int mode, void *key); + int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); + int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key); + +--- a/kernel/sched.c ++++ b/kernel/sched.c +@@ -4556,8 +4556,8 @@ EXPORT_SYMBOL(default_wake_function); + * started to run but is not in state TASK_RUNNING. try_to_wake_up() returns + * zero in this (rare) case, and we handle it by continuing to scan the queue. + */ +-static void __wake_up_common(wait_queue_head_t *q, unsigned int mode, +- int nr_exclusive, int sync, void *key) ++void __wake_up_common(wait_queue_head_t *q, unsigned int mode, ++ int nr_exclusive, int sync, void *key) + { + wait_queue_t *curr, *next; + +--- a/kernel/wait.c ++++ b/kernel/wait.c +@@ -101,6 +101,15 @@ prepare_to_wait_exclusive(wait_queue_hea + } + EXPORT_SYMBOL(prepare_to_wait_exclusive); + ++/* ++ * finish_wait - clean up after waiting in a queue ++ * @q: waitqueue waited on ++ * @wait: wait descriptor ++ * ++ * Sets current thread back to running state and removes ++ * the wait descriptor from the given waitqueue if still ++ * queued. ++ */ + void finish_wait(wait_queue_head_t *q, wait_queue_t *wait) + { + unsigned long flags; +@@ -127,6 +136,39 @@ void finish_wait(wait_queue_head_t *q, w + } + EXPORT_SYMBOL(finish_wait); + ++/* ++ * abort_exclusive_wait - abort exclusive waiting in a queue ++ * @q: waitqueue waited on ++ * @wait: wait descriptor ++ * @state: runstate of the waiter to be woken ++ * @key: key to identify a wait bit queue or %NULL ++ * ++ * Sets current thread back to running state and removes ++ * the wait descriptor from the given waitqueue if still ++ * queued. ++ * ++ * Wakes up the next waiter if the caller is concurrently ++ * woken up through the queue. ++ * ++ * This prevents waiter starvation where an exclusive waiter ++ * aborts and is woken up concurrently and noone wakes up ++ * the next waiter. ++ */ ++void abort_exclusive_wait(wait_queue_head_t *q, wait_queue_t *wait, ++ unsigned int mode, void *key) ++{ ++ unsigned long flags; ++ ++ __set_current_state(TASK_RUNNING); ++ spin_lock_irqsave(&q->lock, flags); ++ if (!list_empty(&wait->task_list)) ++ list_del_init(&wait->task_list); ++ else if (waitqueue_active(q)) ++ __wake_up_common(q, mode, 1, 0, key); ++ spin_unlock_irqrestore(&q->lock, flags); ++} ++EXPORT_SYMBOL(abort_exclusive_wait); ++ + int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key) + { + int ret = default_wake_function(wait, mode, sync, key); +@@ -187,17 +229,20 @@ int __sched + __wait_on_bit_lock(wait_queue_head_t *wq, struct wait_bit_queue *q, + int (*action)(void *), unsigned mode) + { +- int ret = 0; +- + do { ++ int ret; ++ + prepare_to_wait_exclusive(wq, &q->wait, mode); +- if (test_bit(q->key.bit_nr, q->key.flags)) { +- if ((ret = (*action)(q->key.flags))) +- break; +- } ++ if (!test_bit(q->key.bit_nr, q->key.flags)) ++ continue; ++ ret = action(q->key.flags); ++ if (!ret) ++ continue; ++ abort_exclusive_wait(wq, &q->wait, mode, &q->key); ++ return ret; + } while (test_and_set_bit(q->key.bit_nr, q->key.flags)); + finish_wait(wq, &q->wait); +- return ret; ++ return 0; + } + EXPORT_SYMBOL(__wait_on_bit_lock); + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:49 2009 +Message-Id: <20090211001549.811352955@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:55 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Borislav Petkov , + "H. Peter Anvin" +Subject: [patch 16/56] x86: APIC: enable workaround on AMD Fam10h CPUs +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=x86-apic-enable-workaround-on-amd-fam10h-cpus.patch +Content-Length: 1119 +Lines: 33 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Borislav Petkov + +commit 858770619debfb9269add63e4ba8b7c6b5538dd1 upstream. + +Impact: fix to enable APIC for AMD Fam10h on chipsets with a missing/b0rked + ACPI MP table (MADT) + +Booting a 32bit kernel on an AMD Fam10h CPU running on chipsets with +missing/b0rked MP table leads to a hang pretty early in the boot process +due to the APIC not being initialized. Fix that by falling back to the +default APIC base address in 32bit code, as it is done in the 64bit +codepath. + +Signed-off-by: Borislav Petkov +Signed-off-by: H. Peter Anvin +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/apic_32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kernel/apic_32.c ++++ b/arch/x86/kernel/apic_32.c +@@ -1115,7 +1115,7 @@ static int __init detect_init_APIC(void) + switch (boot_cpu_data.x86_vendor) { + case X86_VENDOR_AMD: + if ((boot_cpu_data.x86 == 6 && boot_cpu_data.x86_model > 1) || +- (boot_cpu_data.x86 == 15)) ++ (boot_cpu_data.x86 >= 15)) + break; + goto no_apic; + case X86_VENDOR_INTEL: + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001549.944406877@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:56 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Stefan Richter +Subject: [patch 17/56] ieee1394: ohci1394: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=ieee1394-ohci1394-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch +Content-Length: 1615 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Stefan Richter + +Commit 64c634ef83991b390ec0503e61f16efb0ba3c60b upstream. + +Camcorders have a tendency to fail read requests to their config ROM and +write request to their FCP command register with ack_busy_X. This has +become a problem with newer kernels and especially Panasonic camcorders, +causing AV/C in dvgrab and kino to fail. Dvgrab for example frequently +logs "send oops"; kino reports loss of AV/C control. I suspect that +lower CPU scheduling latencies in newer kernels made this issue more +prominent now. + +According to +https://sourceforge.net/tracker/?func=detail&atid=114103&aid=2492640&group_id=14103 +this can be fixed by configuring the FireWire controller for more +hardware retries for request transmission; these retries are evidently +more successful than libavc1394's own retry loop (typically 3 tries on +top of hardware retries). + +Presumably the same issue has been reported at +https://bugzilla.redhat.com/show_bug.cgi?id=449252 and +https://bugzilla.redhat.com/show_bug.cgi?id=477279 . + +Tested-by: Mathias Beilstein +Signed-off-by: Stefan Richter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ieee1394/ohci1394.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/ieee1394/ohci1394.h ++++ b/drivers/ieee1394/ohci1394.h +@@ -26,7 +26,7 @@ + + #define OHCI1394_DRIVER_NAME "ohci1394" + +-#define OHCI1394_MAX_AT_REQ_RETRIES 0x2 ++#define OHCI1394_MAX_AT_REQ_RETRIES 0xf + #define OHCI1394_MAX_AT_RESP_RETRIES 0x2 + #define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8 + #define OHCI1394_MAX_SELF_ID_ERRORS 16 + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001550.178903091@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:57 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Stefan Richter +Subject: [patch 18/56] firewire: ohci: increase AT req. retries, fix ack_busy_X from Panasonic camcorders and others +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=firewire-ohci-increase-at-req.-retries-fix-ack_busy_x-from-panasonic-camcorders-and-others.patch +Content-Length: 1823 +Lines: 47 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Stefan Richter + +Commit 8b7b6afaa84708d08139daa08538ca3e56c351f1 upstream. + +Camcorders have a tendency to fail read requests to their config ROM and +write request to their FCP command register with ack_busy_X. This has +become a problem with newer kernels and especially Panasonic camcorders, +causing AV/C in dvgrab and kino to fail. Dvgrab for example frequently +logs "send oops"; kino reports loss of AV/C control. I suspect that +lower CPU scheduling latencies in newer kernels made this issue more +prominent now. + +According to +https://sourceforge.net/tracker/?func=detail&atid=114103&aid=2492640&group_id=14103 +this can be fixed by configuring the FireWire controller for more +hardware retries for request transmission; these retries are evidently +more successful than libavc1394's own retry loop (typically 3 tries on +top of hardware retries). + +Presumably the same issue has been reported at +https://bugzilla.redhat.com/show_bug.cgi?id=449252 and +https://bugzilla.redhat.com/show_bug.cgi?id=477279 . + +In a quick test with a JVC camcorder (which didn't malfunction like the +reported camcorders), this change decreased the number of ack_busy_X +from 16 in three runs of dvgrab to 4 in three runs of the same capture +duration. + +Signed-off-by: Stefan Richter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/firewire/fw-ohci.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/firewire/fw-ohci.c ++++ b/drivers/firewire/fw-ohci.c +@@ -226,7 +226,7 @@ static inline struct fw_ohci *fw_ohci(st + #define CONTEXT_DEAD 0x0800 + #define CONTEXT_ACTIVE 0x0400 + +-#define OHCI1394_MAX_AT_REQ_RETRIES 0x2 ++#define OHCI1394_MAX_AT_REQ_RETRIES 0xf + #define OHCI1394_MAX_AT_RESP_RETRIES 0x2 + #define OHCI1394_MAX_PHYS_RESP_RETRIES 0x8 + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001550.319883998@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:58 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Stefan Richter +Subject: [patch 19/56] firewire: sbp2: fix DMA mapping leak on the failure path +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=firewire-sbp2-fix-dma-mapping-leak-on-the-failure-path.patch +Content-Length: 2267 +Lines: 66 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Stefan Richter + +Commit 5e2125677fd72d36396cc537466e07ffcbbd4b2b upstream. + +Reported-by: FUJITA Tomonori +who also provided a first version of the fix. + +Signed-off-by: Stefan Richter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/firewire/fw-sbp2.c | 27 +++++++++++++++++---------- + 1 file changed, 17 insertions(+), 10 deletions(-) + +--- a/drivers/firewire/fw-sbp2.c ++++ b/drivers/firewire/fw-sbp2.c +@@ -1293,6 +1293,19 @@ static struct fw_driver sbp2_driver = { + .id_table = sbp2_id_table, + }; + ++static void sbp2_unmap_scatterlist(struct device *card_device, ++ struct sbp2_command_orb *orb) ++{ ++ if (scsi_sg_count(orb->cmd)) ++ dma_unmap_sg(card_device, scsi_sglist(orb->cmd), ++ scsi_sg_count(orb->cmd), ++ orb->cmd->sc_data_direction); ++ ++ if (orb->request.misc & cpu_to_be32(COMMAND_ORB_PAGE_TABLE_PRESENT)) ++ dma_unmap_single(card_device, orb->page_table_bus, ++ sizeof(orb->page_table), DMA_TO_DEVICE); ++} ++ + static unsigned int + sbp2_status_to_sense_data(u8 *sbp2_status, u8 *sense_data) + { +@@ -1372,15 +1385,7 @@ complete_command_orb(struct sbp2_orb *ba + + dma_unmap_single(device->card->device, orb->base.request_bus, + sizeof(orb->request), DMA_TO_DEVICE); +- +- if (scsi_sg_count(orb->cmd) > 0) +- dma_unmap_sg(device->card->device, scsi_sglist(orb->cmd), +- scsi_sg_count(orb->cmd), +- orb->cmd->sc_data_direction); +- +- if (orb->page_table_bus != 0) +- dma_unmap_single(device->card->device, orb->page_table_bus, +- sizeof(orb->page_table), DMA_TO_DEVICE); ++ sbp2_unmap_scatterlist(device->card->device, orb); + + orb->cmd->result = result; + orb->done(orb->cmd); +@@ -1530,8 +1535,10 @@ static int sbp2_scsi_queuecommand(struct + orb->base.request_bus = + dma_map_single(device->card->device, &orb->request, + sizeof(orb->request), DMA_TO_DEVICE); +- if (dma_mapping_error(device->card->device, orb->base.request_bus)) ++ if (dma_mapping_error(device->card->device, orb->base.request_bus)) { ++ sbp2_unmap_scatterlist(device->card->device, orb); + goto out; ++ } + + sbp2_send_orb(&orb->base, lu, lu->tgt->node_id, lu->generation, + lu->command_block_agent_address + SBP2_ORB_POINTER); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001550.484496051@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:59 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jarod Wilson , + Stefan Richter +Subject: [patch 20/56] firewire: sbp2: add workarounds for 2nd and 3rd generation iPods +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=firewire-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch +Content-Length: 2003 +Lines: 56 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Stefan Richter + +Commit c8c4707cf7ca8ff7dcc1653447e48cb3de0bf114 upstream. + +According to https://bugs.launchpad.net/bugs/294391 + - 3rd generation iPods need the "fix capacity" workaround after all + (apparently they crash after the last sector was accessed), + - 2nd generation iPods need the "128 kB maximum request size" + workaround. + +Alas both iPod generations feature the same model ID in the config ROM, +hence we can only define a shared quirks list entry for them. Luckily +the fix capacity workaround did not show a negative effect in Jarod's +tests with 2nd gen. iPod. + +A side note: Apple computers in target mode (or at least an x86 Mac +mini) don't have firmware_version and model_id, hence none of the iPod +quirks list entries is active for them. + +Tested-by: Jarod Wilson +Acked-by: Jarod Wilson +Signed-off-by: Stefan Richter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/firewire/fw-sbp2.c | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +--- a/drivers/firewire/fw-sbp2.c ++++ b/drivers/firewire/fw-sbp2.c +@@ -350,15 +350,17 @@ static const struct { + .model = ~0, + .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, + }, +- + /* +- * There are iPods (2nd gen, 3rd gen) with model_id == 0, but +- * these iPods do not feature the read_capacity bug according +- * to one report. Read_capacity behaviour as well as model_id +- * could change due to Apple-supplied firmware updates though. ++ * iPod 2nd generation: needs 128k max transfer size workaround ++ * iPod 3rd generation: needs fix capacity workaround + */ +- +- /* iPod 4th generation. */ { ++ { ++ .firmware_revision = 0x0a2700, ++ .model = 0x000000, ++ .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS | ++ SBP2_WORKAROUND_FIX_CAPACITY, ++ }, ++ /* iPod 4th generation */ { + .firmware_revision = 0x0a2700, + .model = 0x000021, + .workarounds = SBP2_WORKAROUND_FIX_CAPACITY, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001550.679581949@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:00 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jarod Wilson , + Stefan Richter +Subject: [patch 21/56] ieee1394: sbp2: add workarounds for 2nd and 3rd generation iPods +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=ieee1394-sbp2-add-workarounds-for-2nd-and-3rd-generation-ipods.patch +Content-Length: 1151 +Lines: 37 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Stefan Richter + +Commit 1448d7c6a2ff96d3b52ecae49e2d0f046a097fe0 upstream. + +As per https://bugs.launchpad.net/bugs/294391. These got one sample of +each iPod generation going. However there still occurred I/O stalls +with the 3rd generation iPod which remain undiagnosed at the time of +this writing. + +Acked-by: Jarod Wilson +Signed-off-by: Stefan Richter +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ieee1394/sbp2.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/drivers/ieee1394/sbp2.c ++++ b/drivers/ieee1394/sbp2.c +@@ -395,6 +395,16 @@ static const struct { + .model_id = SBP2_ROM_VALUE_WILDCARD, + .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, + }, ++ /* ++ * iPod 2nd generation: needs 128k max transfer size workaround ++ * iPod 3rd generation: needs fix capacity workaround ++ */ ++ { ++ .firmware_revision = 0x0a2700, ++ .model_id = 0x000000, ++ .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS | ++ SBP2_WORKAROUND_FIX_CAPACITY, ++ }, + /* iPod 4th generation */ { + .firmware_revision = 0x0a2700, + .model_id = 0x000021, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:50 2009 +Message-Id: <20090211001550.840550381@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:01 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jiri Slaby , + Alan Cox +Subject: [patch 22/56] 8250_pci: add support for netmos 9835 IBM devices +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=8250_pci-add-support-for-netmos-9835-ibm-devices.patch +Content-Length: 1431 +Lines: 45 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Jiri Slaby + +commit 25cf9bc1fcb085daaeb82b09bab0fb3c40570887 upstream. + +Most of netmos 9835 hardware is handled by parport-serial. IBM introduces +a device which doesn't have any parallel ports and have screwed subdevice +PCI id (not corresponding to port numbers). + +Handle this device (9710:9835 1014:0299) properly. + +Signed-off-by: Jiri Slaby +Signed-off-by: Andrew Morton +Signed-off-by: Alan Cox +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/serial/8250_pci.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/serial/8250_pci.c ++++ b/drivers/serial/8250_pci.c +@@ -599,6 +599,10 @@ static int pci_netmos_init(struct pci_de + /* subdevice 0x00PS means

parallel, serial */ + unsigned int num_serial = dev->subsystem_device & 0xf; + ++ if (dev->subsystem_vendor == PCI_VENDOR_ID_IBM && ++ dev->subsystem_device == 0x0299) ++ return 0; ++ + if (num_serial == 0) + return -ENODEV; + return num_serial; +@@ -2846,6 +2850,10 @@ static struct pci_device_id serial_pci_t + 0, + pbn_b0_8_115200 }, + ++ { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9835, ++ PCI_VENDOR_ID_IBM, 0x0299, ++ 0, 0, pbn_b0_bt_2_115200 }, ++ + /* + * These entries match devices with class COMMUNICATION_SERIAL, + * COMMUNICATION_MODEM or COMMUNICATION_MULTISERIAL + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001550.998619772@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:02 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Myron Stowe , + Len Brown +Subject: [patch 23/56] ACPICA: Fix table entry truncation calculation +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpica-fix-table-entry-truncation-calculation.patch +Content-Length: 1501 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Myron Stowe + +commit 386e4a8358239f90275e1f93d5ad11cdc93c6453 upstream. + +During early boot, ACPI RSDT/XSDT table entries are gathered into the +'initial_tables[]' array. This array is currently statically defined (see +./drivers/acpi/tables.c). When there are more table entries than can be +held in the 'initial_tables[]' array, the message "Truncating N table +entries!" is output. As currently implemented, this message will always +erroneously calculate N as 0. + +This patch fixes the calculation that determines how many table entries +will be missing (truncated). + +This modification may be used under either the GPL or the BSD-style +license used for Intel ACPI CA code. + +Signed-off-by: Myron Stowe +Signed-off-by: Andrew Morton +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/tables/tbutils.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/drivers/acpi/tables/tbutils.c ++++ b/drivers/acpi/tables/tbutils.c +@@ -512,10 +512,9 @@ acpi_tb_parse_root_table(acpi_physical_a + if (ACPI_FAILURE(status)) { + ACPI_WARNING((AE_INFO, + "Truncating %u table entries!", +- (unsigned) +- (acpi_gbl_root_table_list.size - +- acpi_gbl_root_table_list. +- count))); ++ (unsigned) (table_count - ++ (acpi_gbl_root_table_list. ++ count - 2)))); + break; + } + } + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.166210765@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:03 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Len Brown +Subject: [patch 24/56] ACPI: disable ACPI cleanly when bad RSDP found +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-disable-acpi-cleanly-when-bad-rsdp-found.patch +Content-Length: 1181 +Lines: 46 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Len Brown + +commit 9e3a9d1ed8cc8db93e5c53e9a5b09065bd95de8b upstream. + +When ACPI is disabled in the BIOS of this VIA C3 box, +it invalidates the RSDP, which Linux notices: + +ACPI Error (tbxfroot-0218): A valid RSDP was not found [20080926] + +Bug Linux neglected to disable ACPI at that stage, +and later scribbled on smp_found_config: + +ACPI: No APIC-table, disabling MPS + +But this box doesn't run well in legacy PIC mode, +it needed IOAPIC mode to perform correctly: + +http://lkml.org/lkml/2009/2/5/39 + +So exit ACPI mode cleanly when we first detect +that it is hopeless. + +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/tables.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/drivers/acpi/tables.c ++++ b/drivers/acpi/tables.c +@@ -293,7 +293,12 @@ static void __init check_multiple_madt(v + + int __init acpi_table_init(void) + { +- acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0); ++ acpi_status status; ++ ++ status = acpi_initialize_tables(initial_tables, ACPI_MAX_TABLES, 0); ++ if (ACPI_FAILURE(status)) ++ return 1; ++ + check_multiple_madt(); + return 0; + } + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.312486130@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:04 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhao Yakui , + Len Brown +Subject: [patch 25/56] ACPI: proc_dir_entry video/VGA already registered +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-proc_dir_entry-video-vga-already-registered.patch +Content-Length: 873 +Lines: 32 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Zhao Yakui + +commit f3b39f1393d5cebe56f43a584ef47efbebd2702c upstream. + +eliminate the duplicate the name of "VGA" + +http://bugzilla.kernel.org/show_bug.cgi?id=12514 + +Signed-off-by: Zhao Yakui +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/video.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -1983,6 +1983,12 @@ static int acpi_video_bus_add(struct acp + device->pnp.bus_id[3] = '0' + instance; + instance ++; + } ++ /* a hack to fix the duplicate name "VGA" problem on Pa 3553 */ ++ if (!strcmp(device->pnp.bus_id, "VGA")) { ++ if (instance) ++ device->pnp.bus_id[3] = '0' + instance; ++ instance++; ++ } + + video->device = device; + strcpy(acpi_device_name(device), ACPI_VIDEO_BUS_NAME); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.448504325@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:05 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhao Yakui , + Len Brown +Subject: [patch 26/56] ACPI: Skip the first two elements in the _BCL package +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-skip-the-first-two-elements-in-the-_bcl-package.patch +Content-Length: 2724 +Lines: 68 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Zhao Yakui + +commit 0a3db1cec5d476804185114ff5d1845aed3936b3 upstream. + +According to the Spec the first two elements in the _BCL package won't be + +regarded as the available brightness level. The first is the brightness when +full power is connected to the box(It means that the AC adapter is plugged). +The second is the brightness level when the box is on battery. + If the first two elements are still used while finding the next brightness +level, it will fall back to the lowest level when keeping on pressing +hotkey. (On some boxes the brightness will be changed twice when hotkey is +pressed once. One is in the ACPI video driver. The other is changed by sys I/F. +In the ACPI video driver the first two elements will be used while changing +the brightness. But the first two elements is skipped while using sys I/F. +In such case there exists the inconsistency). + So he first two elements had better be skipped while showing the available +brightness or finding the next brightness level. + +http://bugzilla.kernel.org/show_bug.cgi?id=12450 + +Signed-off-by: Zhao Yakui +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/video.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -997,7 +997,7 @@ acpi_video_device_brightness_seq_show(st + } + + seq_printf(seq, "levels: "); +- for (i = 0; i < dev->brightness->count; i++) ++ for (i = 2; i < dev->brightness->count; i++) + seq_printf(seq, " %d", dev->brightness->levels[i]); + seq_printf(seq, "\ncurrent: %d\n", dev->brightness->curr); + +@@ -1036,7 +1036,7 @@ acpi_video_device_write_brightness(struc + return -EFAULT; + + /* validate through the list of available levels */ +- for (i = 0; i < dev->brightness->count; i++) ++ for (i = 2; i < dev->brightness->count; i++) + if (level == dev->brightness->levels[i]) { + if (ACPI_SUCCESS + (acpi_video_device_lcd_set_level(dev, level))) +@@ -1689,7 +1689,7 @@ acpi_video_get_next_level(struct acpi_vi + max = max_below = 0; + min = min_above = 255; + /* Find closest level to level_current */ +- for (i = 0; i < device->brightness->count; i++) { ++ for (i = 2; i < device->brightness->count; i++) { + l = device->brightness->levels[i]; + if (abs(l - level_current) < abs(delta)) { + delta = l - level_current; +@@ -1699,7 +1699,7 @@ acpi_video_get_next_level(struct acpi_vi + } + /* Ajust level_current to closest available level */ + level_current += delta; +- for (i = 0; i < device->brightness->count; i++) { ++ for (i = 2; i < device->brightness->count; i++) { + l = device->brightness->levels[i]; + if (l < min) + min = l; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.584590336@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:06 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Michael Bramer , + Alan Cox +Subject: [patch 27/56] Add support for 8-port RS-232 MIC-3620 from advantech +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=add-support-for-8-port-rs-232-mic-3620-from-advantech.patch +Content-Length: 1440 +Lines: 39 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Michael Bramer + +commit 78d70d48132ce4c678a95b771ffa1af4fb5a03ec upstream. + +This Patch add the device information for the +MIC-3620 8-port RS-232 cPCI card from Advantech Co. Ltd. + +Signed-off-by: Michael Bramer +Signed-off-by: Alan Cox +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/serial/8250_pci.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +--- a/drivers/serial/8250_pci.c ++++ b/drivers/serial/8250_pci.c +@@ -770,6 +770,8 @@ pci_default_setup(struct serial_private + #define PCI_SUBDEVICE_ID_OCTPRO422 0x0208 + #define PCI_SUBDEVICE_ID_POCTAL232 0x0308 + #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 ++#define PCI_VENDOR_ID_ADVANTECH 0x13fe ++#define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620 + + /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ + #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 +@@ -2055,6 +2057,10 @@ static int pciserial_resume_one(struct p + #endif + + static struct pci_device_id serial_pci_tbl[] = { ++ /* Advantech use PCI_DEVICE_ID_ADVANTECH_PCI3620 (0x3620) as 'PCI_SUBVENDOR_ID' */ ++ { PCI_VENDOR_ID_ADVANTECH, PCI_DEVICE_ID_ADVANTECH_PCI3620, ++ PCI_DEVICE_ID_ADVANTECH_PCI3620, 0x0001, 0, 0, ++ pbn_b2_8_921600 }, + { PCI_VENDOR_ID_V3, PCI_DEVICE_ID_V3_V960, + PCI_SUBVENDOR_ID_CONNECT_TECH, + PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232, 0, 0, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.706494727@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:07 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takashi Iwai +Subject: [patch 28/56] ALSA: hda - Add missing COEF initialization for ALC887 +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=alsa-hda-add-missing-coef-initialization-for-alc887.patch +Content-Length: 547 +Lines: 22 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Takashi Iwai + +commit 4a5a4c56b443a213fa9c2ad27984a8681a3d7087 upstream. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -948,6 +948,7 @@ do_sku: + case 0x10ec0882: + case 0x10ec0883: + case 0x10ec0885: ++ case 0x10ec0887: + case 0x10ec0889: + snd_hda_codec_write(codec, 0x20, 0, + AC_VERB_SET_COEF_INDEX, 7); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:51 2009 +Message-Id: <20090211001551.830158069@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:08 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takashi Iwai +Subject: [patch 29/56] ALSA: hda - Add missing initialization for ALC272 +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=alsa-hda-add-missing-initialization-for-alc272.patch +Content-Length: 585 +Lines: 25 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Takashi Iwai + +commit c6e8f2daadc6d61a32b7486a1058c8f1f9baa499 upstream. + +ALC272 needs EAPD for speaker outputs as well as other similar ALC +codecs. + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -920,6 +920,7 @@ do_sku: + case 0x10ec0267: + case 0x10ec0268: + case 0x10ec0269: ++ case 0x10ec0272: + case 0x10ec0660: + case 0x10ec0662: + case 0x10ec0663: + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001551.957106816@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:09 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Takashi Iwai +Subject: [patch 30/56] ALSA: hda - Add quirk for FSC Amilo Xi2550 +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=alsa-hda-add-quirk-for-fsc-amilo-xi2550.patch +Content-Length: 1062 +Lines: 28 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Takashi Iwai + +commit f67d8176ba9a3dbc33454cd67057184b2ef5ee31 upstream. + +Added model=fujisu-pi2515 for FSC Amilo Xi2550 with ALC883 codec. + +Refernece: Novell bnc#450979 + https://bugzilla.novell.com/show_bug.cgi?id=450979 + +Signed-off-by: Takashi Iwai +Signed-off-by: Greg Kroah-Hartman + +--- + sound/pci/hda/patch_realtek.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/sound/pci/hda/patch_realtek.c ++++ b/sound/pci/hda/patch_realtek.c +@@ -8061,6 +8061,8 @@ static struct snd_pci_quirk alc883_cfg_t + SND_PCI_QUIRK(0x1558, 0, "Clevo laptop", ALC883_LAPTOP_EAPD), + SND_PCI_QUIRK(0x15d9, 0x8780, "Supermicro PDSBA", ALC883_3ST_6ch), + SND_PCI_QUIRK(0x161f, 0x2054, "Medion laptop", ALC883_MEDION), ++ SND_PCI_QUIRK(0x1734, 0x1107, "FSC AMILO Xi2550", ++ ALC883_FUJITSU_PI2515), + SND_PCI_QUIRK(0x1734, 0x1108, "Fujitsu AMILO Pi2515", ALC883_FUJITSU_PI2515), + SND_PCI_QUIRK(0x17aa, 0x101e, "Lenovo 101e", ALC883_LENOVO_101E_2ch), + SND_PCI_QUIRK(0x17aa, 0x2085, "Lenovo NB0763", ALC883_LENOVO_NB0763), + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.118062328@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:10 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Shaohua Li , + Alex Chiang , + Jesse Barnes +Subject: [patch 31/56] PCI: properly clean up ASPM link state on device remove +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=pci-properly-clean-up-aspm-link-state-on-device-remove.patch +Content-Length: 1573 +Lines: 43 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Alex Chiang + +commit 3419c75e15f82c3ab09bd944fddbde72c9e4b3ea upstream. + +We only want to disable ASPM when the last function is removed from +the parent's device list. We determine this by checking to see if +the parent's device list is completely empty. + +Unfortunately, we never hit that code because the parent is considered +an upstream port, and never had an ASPM link_state associated with it. + +The early check for !link_state causes us to return early, we never +discover that our device list is empty, and thus we never remove the +downstream ports' link_state nodes. + +Instead of checking to see if the parent's device list is empty, we can +check to see if we are the last device on the list, and if so, then we +know that we can clean up properly. + +Cc: Shaohua Li +Signed-off-by: Alex Chiang +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pci/pcie/aspm.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/pci/pcie/aspm.c ++++ b/drivers/pci/pcie/aspm.c +@@ -713,9 +713,9 @@ void pcie_aspm_exit_link_state(struct pc + + /* + * All PCIe functions are in one slot, remove one function will remove +- * the the whole slot, so just wait ++ * the whole slot, so just wait until we are the last function left. + */ +- if (!list_empty(&parent->subordinate->devices)) ++ if (!list_is_last(&pdev->bus_list, &parent->subordinate->devices)) + goto out; + + /* All functions are removed, so just disable ASPM for the link */ + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.244394795@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:11 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Timothy S. Nelson" , + Alex Villacis-Lasso , + Jesse Barnes +Subject: [patch 32/56] PCI: return error on failure to read PCI ROMs +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=pci-return-error-on-failure-to-read-pci-roms.patch +Content-Length: 5654 +Lines: 142 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Timothy S. Nelson + +commit 97c44836cdec1ea713a15d84098a1a908157e68f upstream. + +This patch makes the ROM reading code return an error to user space if +the size of the ROM read is equal to 0. + +The patch also emits a warnings if the contents of the ROM are invalid, +and documents the effects of the "enable" file on ROM reading. + +Signed-off-by: Timothy S. Nelson +Acked-by: Alex Villacis-Lasso +Signed-off-by: Jesse Barnes +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/filesystems/sysfs-pci.txt | 13 ++++++++++++- + arch/ia64/sn/kernel/io_acpi_init.c | 2 +- + arch/ia64/sn/kernel/io_init.c | 2 +- + drivers/pci/pci-sysfs.c | 4 ++-- + drivers/pci/rom.c | 8 +++++--- + include/linux/pci.h | 2 +- + 6 files changed, 22 insertions(+), 9 deletions(-) + +--- a/arch/ia64/sn/kernel/io_acpi_init.c ++++ b/arch/ia64/sn/kernel/io_acpi_init.c +@@ -434,7 +434,7 @@ sn_acpi_slot_fixup(struct pci_dev *dev) + size = pci_resource_len(dev, PCI_ROM_RESOURCE); + addr = ioremap(pcidev_info->pdi_pio_mapped_addr[PCI_ROM_RESOURCE], + size); +- image_size = pci_get_rom_size(addr, size); ++ image_size = pci_get_rom_size(dev, addr, size); + dev->resource[PCI_ROM_RESOURCE].start = (unsigned long) addr; + dev->resource[PCI_ROM_RESOURCE].end = + (unsigned long) addr + image_size - 1; +--- a/arch/ia64/sn/kernel/io_init.c ++++ b/arch/ia64/sn/kernel/io_init.c +@@ -269,7 +269,7 @@ sn_io_slot_fixup(struct pci_dev *dev) + + rom = ioremap(pci_resource_start(dev, PCI_ROM_RESOURCE), + size + 1); +- image_size = pci_get_rom_size(rom, size + 1); ++ image_size = pci_get_rom_size(dev, rom, size + 1); + dev->resource[PCI_ROM_RESOURCE].end = + dev->resource[PCI_ROM_RESOURCE].start + + image_size - 1; +--- a/Documentation/filesystems/sysfs-pci.txt ++++ b/Documentation/filesystems/sysfs-pci.txt +@@ -9,6 +9,7 @@ that support it. For example, a given b + | |-- class + | |-- config + | |-- device ++ | |-- enable + | |-- irq + | |-- local_cpus + | |-- resource +@@ -32,6 +33,7 @@ files, each with their own function. + class PCI class (ascii, ro) + config PCI config space (binary, rw) + device PCI device (ascii, ro) ++ enable Whether the device is enabled (ascii, rw) + irq IRQ number (ascii, ro) + local_cpus nearby CPU mask (cpumask, ro) + resource PCI resource host addresses (ascii, ro) +@@ -57,10 +59,19 @@ used to do actual device programming fro + don't support mmapping of certain resources, so be sure to check the return + value from any attempted mmap. + ++The 'enable' file provides a counter that indicates how many times the device ++has been enabled. If the 'enable' file currently returns '4', and a '1' is ++echoed into it, it will then return '5'. Echoing a '0' into it will decrease ++the count. Even when it returns to 0, though, some of the initialisation ++may not be reversed. ++ + The 'rom' file is special in that it provides read-only access to the device's + ROM file, if available. It's disabled by default, however, so applications + should write the string "1" to the file to enable it before attempting a read +-call, and disable it following the access by writing "0" to the file. ++call, and disable it following the access by writing "0" to the file. Note ++that the device must be enabled for a rom read to return data succesfully. ++In the event a driver is not bound to the device, it can be enabled using the ++'enable' file, documented above. + + Accessing legacy resources through sysfs + ---------------------------------------- +--- a/drivers/pci/pci-sysfs.c ++++ b/drivers/pci/pci-sysfs.c +@@ -694,8 +694,8 @@ pci_read_rom(struct kobject *kobj, struc + return -EINVAL; + + rom = pci_map_rom(pdev, &size); /* size starts out as PCI window size */ +- if (!rom) +- return 0; ++ if (!rom || !size) ++ return -EIO; + + if (off >= size) + count = 0; +--- a/drivers/pci/rom.c ++++ b/drivers/pci/rom.c +@@ -63,7 +63,7 @@ static void pci_disable_rom(struct pci_d + * The PCI window size could be much larger than the + * actual image size. + */ +-size_t pci_get_rom_size(void __iomem *rom, size_t size) ++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size) + { + void __iomem *image; + int last_image; +@@ -72,8 +72,10 @@ size_t pci_get_rom_size(void __iomem *ro + do { + void __iomem *pds; + /* Standard PCI ROMs start out with these bytes 55 AA */ +- if (readb(image) != 0x55) ++ if (readb(image) != 0x55) { ++ dev_err(&pdev->dev, "Invalid ROM contents\n"); + break; ++ } + if (readb(image + 1) != 0xAA) + break; + /* get the PCI data structure and check its signature */ +@@ -158,7 +160,7 @@ void __iomem *pci_map_rom(struct pci_dev + * size is much larger than the actual size of the ROM. + * True size is important if the ROM is going to be copied. + */ +- *size = pci_get_rom_size(rom, *size); ++ *size = pci_get_rom_size(pdev, rom, *size); + return rom; + } + +--- a/include/linux/pci.h ++++ b/include/linux/pci.h +@@ -639,7 +639,7 @@ int pci_select_bars(struct pci_dev *dev, + /* ROM control related routines */ + void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size); + void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); +-size_t pci_get_rom_size(void __iomem *rom, size_t size); ++size_t pci_get_rom_size(struct pci_dev *pdev, void __iomem *rom, size_t size); + + /* Power management related routines */ + int pci_save_state(struct pci_dev *dev); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.378472799@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:12 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Eric Biederman , + Paul Turner , + Alexey Dobriyan , + Al Viro +Subject: [patch 33/56] seq_file: move traverse so it can be used from seq_read +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch +Content-Length: 3433 +Lines: 155 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Eric Biederman + +commit 33da8892a2f9e7d4b2d9a35fc80833ba2d2b1aa6 upstream. + +In 2.6.25 some /proc files were converted to use the seq_file +infrastructure. But seq_files do not correctly support pread(), which +broke some usersapce applications. + +To handle pread correctly we can't assume that f_pos is where we left it +in seq_read. So move traverse() so that we can eventually use it in +seq_read and do thus some day support pread(). + +Signed-off-by: Eric Biederman +Cc: Paul Turner +Cc: Alexey Dobriyan +Cc: Al Viro +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/seq_file.c | 114 +++++++++++++++++++++++++++++----------------------------- + 1 file changed, 57 insertions(+), 57 deletions(-) + +--- a/fs/seq_file.c ++++ b/fs/seq_file.c +@@ -54,6 +54,63 @@ int seq_open(struct file *file, const st + } + EXPORT_SYMBOL(seq_open); + ++static int traverse(struct seq_file *m, loff_t offset) ++{ ++ loff_t pos = 0, index; ++ int error = 0; ++ void *p; ++ ++ m->version = 0; ++ index = 0; ++ m->count = m->from = 0; ++ if (!offset) { ++ m->index = index; ++ return 0; ++ } ++ if (!m->buf) { ++ m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL); ++ if (!m->buf) ++ return -ENOMEM; ++ } ++ p = m->op->start(m, &index); ++ while (p) { ++ error = PTR_ERR(p); ++ if (IS_ERR(p)) ++ break; ++ error = m->op->show(m, p); ++ if (error < 0) ++ break; ++ if (unlikely(error)) { ++ error = 0; ++ m->count = 0; ++ } ++ if (m->count == m->size) ++ goto Eoverflow; ++ if (pos + m->count > offset) { ++ m->from = offset - pos; ++ m->count -= m->from; ++ m->index = index; ++ break; ++ } ++ pos += m->count; ++ m->count = 0; ++ if (pos == offset) { ++ index++; ++ m->index = index; ++ break; ++ } ++ p = m->op->next(m, p, &index); ++ } ++ m->op->stop(m, p); ++ return error; ++ ++Eoverflow: ++ m->op->stop(m, p); ++ kfree(m->buf); ++ m->buf = kmalloc(m->size <<= 1, GFP_KERNEL); ++ return !m->buf ? -ENOMEM : -EAGAIN; ++} ++ + /** + * seq_read - ->read() method for sequential files. + * @file: the file to read from +@@ -186,63 +243,6 @@ Efault: + } + EXPORT_SYMBOL(seq_read); + +-static int traverse(struct seq_file *m, loff_t offset) +-{ +- loff_t pos = 0, index; +- int error = 0; +- void *p; +- +- m->version = 0; +- index = 0; +- m->count = m->from = 0; +- if (!offset) { +- m->index = index; +- return 0; +- } +- if (!m->buf) { +- m->buf = kmalloc(m->size = PAGE_SIZE, GFP_KERNEL); +- if (!m->buf) +- return -ENOMEM; +- } +- p = m->op->start(m, &index); +- while (p) { +- error = PTR_ERR(p); +- if (IS_ERR(p)) +- break; +- error = m->op->show(m, p); +- if (error < 0) +- break; +- if (unlikely(error)) { +- error = 0; +- m->count = 0; +- } +- if (m->count == m->size) +- goto Eoverflow; +- if (pos + m->count > offset) { +- m->from = offset - pos; +- m->count -= m->from; +- m->index = index; +- break; +- } +- pos += m->count; +- m->count = 0; +- if (pos == offset) { +- index++; +- m->index = index; +- break; +- } +- p = m->op->next(m, p, &index); +- } +- m->op->stop(m, p); +- return error; +- +-Eoverflow: +- m->op->stop(m, p); +- kfree(m->buf); +- m->buf = kmalloc(m->size <<= 1, GFP_KERNEL); +- return !m->buf ? -ENOMEM : -EAGAIN; +-} +- + /** + * seq_lseek - ->llseek() method for sequential files. + * @file: the file in question + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.503769729@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:13 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alexey Dobriyan +Subject: [patch 34/56] seq_file: fix big-enough lseek() + read() +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=seq_file-fix-big-enough-lseek-read.patch +Content-Length: 883 +Lines: 31 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Alexey Dobriyan + +commit f01d1d546abb2f4028b5299092f529eefb01253a upstream. + +lseek() further than length of the file will leave stale ->index +(second-to-last during iteration). Next seq_read() will not notice +that ->f_pos is big enough to return 0, but will print last item +as if ->f_pos is pointing to it. + +Introduced in commit cb510b8172602a66467f3551b4be1911f5a7c8c2 +aka "seq_file: more atomicity in traverse()". + +Signed-off-by: Alexey Dobriyan +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/seq_file.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/seq_file.c ++++ b/fs/seq_file.c +@@ -102,6 +102,7 @@ static int traverse(struct seq_file *m, + p = m->op->next(m, p, &index); + } + m->op->stop(m, p); ++ m->index = index; + return error; + + Eoverflow: + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.622557172@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:14 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Niels de Vos , + Alan Cox +Subject: [patch 35/56] serial: set correct baud_base for Oxford Semiconductor Ltd EXSYS EX-41092 Dual 16950 Serial adapter +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch +Content-Length: 1471 +Lines: 42 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Niels de Vos + +commit 39aced68d664291db3324d0fcf0985ab5626aac2 upstream. + +The PCI-card identified as "Oxford Semiconductor Ltd EXSYS EX-41092 Dual +16950 Serial adapter" is only usable with other devices (i.e. not the same +card) after doing a "setserial /dev/ttyS baud_base 115200". This +baud_base should be default for this card. + +Signed-off-by: Niels de Vos +Signed-off-by: Alan Cox +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/serial/8250_pci.c | 3 +++ + include/linux/pci_ids.h | 1 + + 2 files changed, 4 insertions(+) + +--- a/drivers/serial/8250_pci.c ++++ b/drivers/serial/8250_pci.c +@@ -2304,6 +2304,9 @@ static struct pci_device_id serial_pci_t + * For now just used the hex ID 0x950a. + */ + { PCI_VENDOR_ID_OXSEMI, 0x950a, ++ PCI_SUBVENDOR_ID_SIIG, PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL, 0, 0, ++ pbn_b0_2_115200 }, ++ { PCI_VENDOR_ID_OXSEMI, 0x950a, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, + pbn_b0_2_1130000 }, + { PCI_VENDOR_ID_OXSEMI, PCI_DEVICE_ID_OXSEMI_16PCI954, +--- a/include/linux/pci_ids.h ++++ b/include/linux/pci_ids.h +@@ -1755,6 +1755,7 @@ + #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081 + #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082 + #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050 ++#define PCI_SUBDEVICE_ID_SIIG_DUAL_SERIAL 0x2530 + + #define PCI_VENDOR_ID_RADISYS 0x1331 + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:52 2009 +Message-Id: <20090211001552.747182928@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:15 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Roland McGrath +Subject: [patch 36/56] elf core dump: fix get_user use +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=elf-core-dump-fix-get_user-use.patch +Content-Length: 1869 +Lines: 54 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Roland McGrath + +commit 92dc07b1f988e8c237a38e23be660b9b8533e6fd upstream. + +The elf_core_dump() code does its work with set_fs(KERNEL_DS) in force, +so vma_dump_size() needs to switch back with set_fs(USER_DS) to safely +use get_user() for a normal user-space address. + +Checking for VM_READ optimizes out the case where get_user() would fail +anyway. The vm_file check here was already superfluous given the control +flow earlier in the function, so that is a cleanup/optimization unrelated +to other changes but an obvious and trivial one. + +Reported-by: Gerald Schaefer +Signed-off-by: Roland McGrath +Signed-off-by: Greg Kroah-Hartman + +--- + fs/binfmt_elf.c | 14 ++++++++++++-- + 1 file changed, 12 insertions(+), 2 deletions(-) + +--- a/fs/binfmt_elf.c ++++ b/fs/binfmt_elf.c +@@ -1188,9 +1188,11 @@ static unsigned long vma_dump_size(struc + * check for an ELF header. If we find one, dump the first page to + * aid in determining what was mapped here. + */ +- if (FILTER(ELF_HEADERS) && vma->vm_file != NULL && vma->vm_pgoff == 0) { ++ if (FILTER(ELF_HEADERS) && ++ vma->vm_pgoff == 0 && (vma->vm_flags & VM_READ)) { + u32 __user *header = (u32 __user *) vma->vm_start; + u32 word; ++ mm_segment_t fs = get_fs(); + /* + * Doing it this way gets the constant folded by GCC. + */ +@@ -1203,7 +1205,15 @@ static unsigned long vma_dump_size(struc + magic.elfmag[EI_MAG1] = ELFMAG1; + magic.elfmag[EI_MAG2] = ELFMAG2; + magic.elfmag[EI_MAG3] = ELFMAG3; +- if (get_user(word, header) == 0 && word == magic.cmp) ++ /* ++ * Switch to the user "segment" for get_user(), ++ * then put back what elf_core_dump() had in place. ++ */ ++ set_fs(USER_DS); ++ if (unlikely(get_user(word, header))) ++ word = 0; ++ set_fs(fs); ++ if (word == magic.cmp) + return PAGE_SIZE; + } + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001552.877771103@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:16 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Lachlan McIlroy , + Neil Brown +Subject: [patch 37/56] XFS: set b_error from bio error in xfs_buf_bio_end_io +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch +Content-Length: 847 +Lines: 29 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Lachlan McIlroy + +commit cfbe52672fbc6f333892e8dde82c35e0a76aa5f5 upstream. + +Preserve any error returned by the bio layer. + +Reviewed-by: Eric Sandeen +Reviewed-by: Tim Shimmin +Signed-off-by: Lachlan McIlroy +Cc: Neil Brown +Signed-off-by: Greg Kroah-Hartman + +--- + fs/xfs/linux-2.6/xfs_buf.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/fs/xfs/linux-2.6/xfs_buf.c ++++ b/fs/xfs/linux-2.6/xfs_buf.c +@@ -1114,8 +1114,7 @@ xfs_buf_bio_end_io( + unsigned int blocksize = bp->b_target->bt_bsize; + struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; + +- if (!test_bit(BIO_UPTODATE, &bio->bi_flags)) +- bp->b_error = EIO; ++ xfs_buf_ioerror(bp, -error); + + do { + struct page *page = bvec->bv_page; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.033780107@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:17 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Tom Tucker , + "J. Bruce Fields" , + Neil Brown +Subject: [patch 38/56] Add a reference to sunrpc in svc_addsock +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=add-a-reference-to-sunrpc-in-svc_addsock.patch +Content-Length: 1458 +Lines: 48 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Tom Tucker + +commit 2da2c21d7508d34bc6d600df665d84871b65d2b9 upstream. + +The svc_addsock function adds transport instances without taking a +reference on the sunrpc.ko module, however, the generic transport +destruction code drops a reference when a transport instance +is destroyed. + +Add a try_module_get call to the svc_addsock function for transport +instances added by this function. + +Signed-off-by: Tom Tucker +Signed-off-by: J. Bruce Fields +Tested-by: Jeff Moyer +Cc: Neil Brown +Signed-off-by: Greg Kroah-Hartman + +--- + net/sunrpc/svcsock.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +--- a/net/sunrpc/svcsock.c ++++ b/net/sunrpc/svcsock.c +@@ -1171,7 +1171,11 @@ int svc_addsock(struct svc_serv *serv, + else if (so->state > SS_UNCONNECTED) + err = -EISCONN; + else { +- svsk = svc_setup_socket(serv, so, &err, SVC_SOCK_DEFAULTS); ++ if (!try_module_get(THIS_MODULE)) ++ err = -ENOENT; ++ else ++ svsk = svc_setup_socket(serv, so, &err, ++ SVC_SOCK_DEFAULTS); + if (svsk) { + struct sockaddr_storage addr; + struct sockaddr *sin = (struct sockaddr *)&addr; +@@ -1184,7 +1188,8 @@ int svc_addsock(struct svc_serv *serv, + spin_unlock_bh(&serv->sv_lock); + svc_xprt_received(&svsk->sk_xprt); + err = 0; +- } ++ } else ++ module_put(THIS_MODULE); + } + if (err) { + sockfd_put(so); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.165418137@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:18 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + KOSAKI Motohiro , + Christoph Lameter , + Lee Schermerhorn , + Gerald Schaefer , + Dave Hansen , + Nick Piggin +Subject: [patch 39/56] mm: remove UP version of lru_add_drain_all() +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=mm-remove-up-version-of-lru_add_drain_all.patch +Content-Length: 2100 +Lines: 69 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: KOSAKI Motohiro + +commit 6841c8e26357904ef462650273f5d5015f7bb370 upstream. + +Currently, lru_add_drain_all() has two version. + (1) use schedule_on_each_cpu() + (2) don't use schedule_on_each_cpu() + +Gerald Schaefer reported it doesn't work well on SMP (not NUMA) S390 +machine. + + offline_pages() calls lru_add_drain_all() followed by drain_all_pages(). + While drain_all_pages() works on each cpu, lru_add_drain_all() only runs + on the current cpu for architectures w/o CONFIG_NUMA. This let us run + into the BUG_ON(!PageBuddy(page)) in __offline_isolated_pages() during + memory hotplug stress test on s390. The page in question was still on the + pcp list, because of a race with lru_add_drain_all() and drain_all_pages() + on different cpus. + +Actually, Almost machine has CONFIG_UNEVICTABLE_LRU=y. Then almost machine use +(1) version lru_add_drain_all although the machine is UP. + +Then this ifdef is not valueable. +simple removing is better. + +Signed-off-by: KOSAKI Motohiro +Cc: Christoph Lameter +Cc: Lee Schermerhorn +Acked-by: Gerald Schaefer +Cc: Dave Hansen +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Cc: Nick Piggin +Signed-off-by: Greg Kroah-Hartman + +--- + mm/swap.c | 13 ------------- + 1 file changed, 13 deletions(-) + +--- a/mm/swap.c ++++ b/mm/swap.c +@@ -244,7 +244,6 @@ void lru_add_drain(void) + put_cpu(); + } + +-#ifdef CONFIG_NUMA + static void lru_add_drain_per_cpu(struct work_struct *dummy) + { + lru_add_drain(); +@@ -258,18 +257,6 @@ int lru_add_drain_all(void) + return schedule_on_each_cpu(lru_add_drain_per_cpu); + } + +-#else +- +-/* +- * Returns 0 for success +- */ +-int lru_add_drain_all(void) +-{ +- lru_add_drain(); +- return 0; +-} +-#endif +- + /* + * Batched page_cache_release(). Decrement the reference count on all the + * passed pages. If it fell to zero then remove the page from the LRU and + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.299355132@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:19 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Alexander V. Lukyanov" , + Tony Jones +Subject: [patch 40/56] Revert "vt: fix background color on line feed" +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=revert-vt-fix-background-color-on-line-feed.patch +Content-Length: 7858 +Lines: 230 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Linus Torvalds + +commit 93f78da405685a756beeaeae4b5e41fcec39eab3 upstream. + +This reverts commit c9e587abfdec2c2aaa55fab83bcb4972e2f84f9b, and the +subsequent commits that fixed it up: + + - afa9b649 "fbcon: prevent cursor disappearance after switching to 512 + character font" + + - d850a2fa "vt/fbcon: fix background color on line feed" + + - 7fe3915a "vt/fbcon: update scrl_erase_char after 256/512-glyph font + switch" + +by request of Alan Cox. Quoth Alan: + "Unfortunately it's wrong and its been causing breakages because + various apps like ncurses expect our previous (and correct) + behaviour." + +Alexander sent out a similar patch. + +Requested-by: Alan Cox +Tested-by: Jan Engelhardt +Cc: Alexander V. Lukyanov +Signed-off-by: Linus Torvalds +Cc: Tony Jones +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/vt.c | 5 ++--- + drivers/video/console/fbcon.c | 39 ++++++++++----------------------------- + drivers/video/console/mdacon.c | 2 +- + drivers/video/console/sticon.c | 4 ++-- + drivers/video/console/vgacon.c | 4 ++-- + include/linux/console_struct.h | 1 - + 6 files changed, 17 insertions(+), 38 deletions(-) + +--- a/drivers/char/vt.c ++++ b/drivers/char/vt.c +@@ -301,7 +301,7 @@ static void scrup(struct vc_data *vc, un + d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); + s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr)); + scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row); +- scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_scrl_erase_char, ++ scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char, + vc->vc_size_row * nr); + } + +@@ -319,7 +319,7 @@ static void scrdown(struct vc_data *vc, + s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); + step = vc->vc_cols * nr; + scr_memmovew(s + step, s, (b - t - nr) * vc->vc_size_row); +- scr_memsetw(s, vc->vc_scrl_erase_char, 2 * step); ++ scr_memsetw(s, vc->vc_video_erase_char, 2 * step); + } + + static void do_update_region(struct vc_data *vc, unsigned long start, int count) +@@ -434,7 +434,6 @@ static void update_attr(struct vc_data * + vc->vc_blink, vc->vc_underline, + vc->vc_reverse ^ vc->vc_decscnm, vc->vc_italic); + vc->vc_video_erase_char = (build_attr(vc, vc->vc_color, 1, vc->vc_blink, 0, vc->vc_decscnm, 0) << 8) | ' '; +- vc->vc_scrl_erase_char = (build_attr(vc, vc->vc_def_color, 1, false, false, vc->vc_decscnm, false) << 8) | ' '; + } + + /* Note: inverting the screen twice should revert to the original state */ +--- a/drivers/video/console/fbcon.c ++++ b/drivers/video/console/fbcon.c +@@ -1855,8 +1855,6 @@ static int fbcon_scroll(struct vc_data * + struct fb_info *info = registered_fb[con2fb_map[vc->vc_num]]; + struct display *p = &fb_display[vc->vc_num]; + int scroll_partial = info->flags & FBINFO_PARTIAL_PAN_OK; +- unsigned short saved_ec; +- int ret; + + if (fbcon_is_inactive(vc, info)) + return -EINVAL; +@@ -1869,11 +1867,6 @@ static int fbcon_scroll(struct vc_data * + * whole screen (prevents flicker). + */ + +- saved_ec = vc->vc_video_erase_char; +- vc->vc_video_erase_char = vc->vc_scrl_erase_char; +- +- ret = 0; +- + switch (dir) { + case SM_UP: + if (count > vc->vc_rows) /* Maximum realistic size */ +@@ -1890,9 +1883,9 @@ static int fbcon_scroll(struct vc_data * + scr_memsetw((unsigned short *) (vc->vc_origin + + vc->vc_size_row * + (b - count)), +- vc->vc_scrl_erase_char, ++ vc->vc_video_erase_char, + vc->vc_size_row * count); +- ret = 1; ++ return 1; + break; + + case SCROLL_WRAP_MOVE: +@@ -1962,10 +1955,9 @@ static int fbcon_scroll(struct vc_data * + scr_memsetw((unsigned short *) (vc->vc_origin + + vc->vc_size_row * + (b - count)), +- vc->vc_scrl_erase_char, ++ vc->vc_video_erase_char, + vc->vc_size_row * count); +- ret = 1; +- break; ++ return 1; + } + break; + +@@ -1982,9 +1974,9 @@ static int fbcon_scroll(struct vc_data * + scr_memsetw((unsigned short *) (vc->vc_origin + + vc->vc_size_row * + t), +- vc->vc_scrl_erase_char, ++ vc->vc_video_erase_char, + vc->vc_size_row * count); +- ret = 1; ++ return 1; + break; + + case SCROLL_WRAP_MOVE: +@@ -2052,15 +2044,12 @@ static int fbcon_scroll(struct vc_data * + scr_memsetw((unsigned short *) (vc->vc_origin + + vc->vc_size_row * + t), +- vc->vc_scrl_erase_char, ++ vc->vc_video_erase_char, + vc->vc_size_row * count); +- ret = 1; +- break; ++ return 1; + } +- break; + } +- vc->vc_video_erase_char = saved_ec; +- return ret; ++ return 0; + } + + +@@ -2522,9 +2511,6 @@ static int fbcon_do_set_font(struct vc_d + c = vc->vc_video_erase_char; + vc->vc_video_erase_char = + ((c & 0xfe00) >> 1) | (c & 0xff); +- c = vc->vc_scrl_erase_char; +- vc->vc_scrl_erase_char = +- ((c & 0xFE00) >> 1) | (c & 0xFF); + vc->vc_attr >>= 1; + } + } else if (!vc->vc_hi_font_mask && cnt == 512) { +@@ -2555,14 +2541,9 @@ static int fbcon_do_set_font(struct vc_d + if (vc->vc_can_do_color) { + vc->vc_video_erase_char = + ((c & 0xff00) << 1) | (c & 0xff); +- c = vc->vc_scrl_erase_char; +- vc->vc_scrl_erase_char = +- ((c & 0xFF00) << 1) | (c & 0xFF); + vc->vc_attr <<= 1; +- } else { ++ } else + vc->vc_video_erase_char = c & ~0x100; +- vc->vc_scrl_erase_char = c & ~0x100; +- } + } + + } +--- a/drivers/video/console/mdacon.c ++++ b/drivers/video/console/mdacon.c +@@ -533,7 +533,7 @@ static void mdacon_cursor(struct vc_data + + static int mdacon_scroll(struct vc_data *c, int t, int b, int dir, int lines) + { +- u16 eattr = mda_convert_attr(c->vc_scrl_erase_char); ++ u16 eattr = mda_convert_attr(c->vc_video_erase_char); + + if (!lines) + return 0; +--- a/drivers/video/console/sticon.c ++++ b/drivers/video/console/sticon.c +@@ -170,12 +170,12 @@ static int sticon_scroll(struct vc_data + switch (dir) { + case SM_UP: + sti_bmove(sti, t + count, 0, t, 0, b - t - count, conp->vc_cols); +- sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_scrl_erase_char); ++ sti_clear(sti, b - count, 0, count, conp->vc_cols, conp->vc_video_erase_char); + break; + + case SM_DOWN: + sti_bmove(sti, t, 0, t + count, 0, b - t - count, conp->vc_cols); +- sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_scrl_erase_char); ++ sti_clear(sti, t, 0, count, conp->vc_cols, conp->vc_video_erase_char); + break; + } + +--- a/drivers/video/console/vgacon.c ++++ b/drivers/video/console/vgacon.c +@@ -1350,7 +1350,7 @@ static int vgacon_scroll(struct vc_data + } else + c->vc_origin += delta; + scr_memsetw((u16 *) (c->vc_origin + c->vc_screenbuf_size - +- delta), c->vc_scrl_erase_char, ++ delta), c->vc_video_erase_char, + delta); + } else { + if (oldo - delta < vga_vram_base) { +@@ -1363,7 +1363,7 @@ static int vgacon_scroll(struct vc_data + } else + c->vc_origin -= delta; + c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; +- scr_memsetw((u16 *) (c->vc_origin), c->vc_scrl_erase_char, ++ scr_memsetw((u16 *) (c->vc_origin), c->vc_video_erase_char, + delta); + } + c->vc_scr_end = c->vc_origin + c->vc_screenbuf_size; +--- a/include/linux/console_struct.h ++++ b/include/linux/console_struct.h +@@ -53,7 +53,6 @@ struct vc_data { + unsigned short vc_hi_font_mask; /* [#] Attribute set for upper 256 chars of font or 0 if not supported */ + struct console_font vc_font; /* Current VC font set */ + unsigned short vc_video_erase_char; /* Background erase character */ +- unsigned short vc_scrl_erase_char; /* Erase character for scroll */ + /* VT terminal data */ + unsigned int vc_state; /* Escape sequence parser state */ + unsigned int vc_npar,vc_par[NPAR]; /* Parameters of current escape sequence */ + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.433717810@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:20 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + NeilBrown +Subject: [patch 41/56] md: Dont try to set an array to read-auto if it is already in that state. +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch +Content-Length: 841 +Lines: 32 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: NeilBrown + +commit 80268ee9270ebe4847365a7426de91d179e870d0 upstream. + +'read-auto' is a variant of 'readonly' which will switch to writable +on the first write attempt. + +Calling do_md_stop to set the array readonly when it is already readonly +returns an error. So make sure not to do that. + +Signed-off-by: NeilBrown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/md.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/md/md.c ++++ b/drivers/md/md.c +@@ -2742,9 +2742,9 @@ array_state_store(mddev_t *mddev, const + break; + case read_auto: + if (mddev->pers) { +- if (mddev->ro != 1) ++ if (mddev->ro == 0) + err = do_md_stop(mddev, 1, 0); +- else ++ else if (mddev->ro == 1) + err = restart_array(mddev); + if (err == 0) { + mddev->ro = 2; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.556450936@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:21 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + NeilBrown +Subject: [patch 42/56] md: Allow metadata_version to be updated for externally managed metadata. +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch +Content-Length: 1217 +Lines: 39 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: NeilBrown + +commit ea43ddd8491feccf36267349748ea91b1194481e upstream. + +For externally managed metadata, the 'metadata_version' sysfs +attribute is really just a channel for user-space programs to +communicate about how the array is being managed. +It can be useful for this to be changed while the array is active. + +Normally changes to metadata_version are not permitted while the array +is active. Change that so that if the metadata is externally managed, +the metadata_version can be changed to a different flavour of external +management. + +Signed-off-by: NeilBrown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/md.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/drivers/md/md.c ++++ b/drivers/md/md.c +@@ -2960,7 +2960,13 @@ metadata_store(mddev_t *mddev, const cha + { + int major, minor; + char *e; +- if (!list_empty(&mddev->disks)) ++ /* Changing the details of 'external' metadata is ++ * always permitted. Otherwise there must be ++ * no devices attached to the array. ++ */ ++ if (mddev->external && strncmp(buf, "external:", 9) == 0) ++ ; ++ else if (!list_empty(&mddev->disks)) + return -EBUSY; + + if (cmd_match(buf, "none")) { + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.697719310@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:22 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Helmut Schaa , + "John W. Linville" +Subject: [patch 43/56] ipw2200: fix scanning while associated +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=ipw2200-fix-scanning-while-associated.patch +Content-Length: 4195 +Lines: 106 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Helmut Schaa + +commit 14a4dfe2ff8c353f59ae8324059ded1cfe22c7d9 upstream. + +This patch fixes sporadic firmware restarts when scanning while associated. + +The firmware will quietly cancel a scan (while associated) if the dwell time +for a channel to be scanned is larger than the time it may stay away from the +operating channel (because of DTIM catching). Unfortunately the driver is not +notified about the canceled scan and therefore the scan watchdog timeout will +be hit and the driver causes a firmware restart which results in +disassociation. This mainly happens on passive channels which use a dwell time +of 120 whereas a typical beacon interval is around 100. + +The patch changes the dwell time for passive channels to be slightly smaller +than the actual beacon interval to work around the firmware issue. Furthermore +the number of allowed beacon misses is increased from one to three as otherwise +most scans (while associated) won't complete successfully. + +However scanning while associated will still fail in corner cases such as a +beacon intervals below 30. + +Signed-off-by: Helmut Schaa +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/ipw2200.c | 28 ++++++++++++++++++++++------ + drivers/net/wireless/ipw2200.h | 1 + + 2 files changed, 23 insertions(+), 6 deletions(-) + +--- a/drivers/net/wireless/ipw2200.c ++++ b/drivers/net/wireless/ipw2200.c +@@ -4346,7 +4346,8 @@ static void ipw_handle_missed_beacon(str + return; + } + +- if (priv->status & STATUS_SCANNING) { ++ if (priv->status & STATUS_SCANNING && ++ missed_count > IPW_MB_SCAN_CANCEL_THRESHOLD) { + /* Stop scan to keep fw from getting + * stuck (only if we aren't roaming -- + * otherwise we'll never scan more than 2 or 3 +@@ -6276,6 +6277,20 @@ static void ipw_add_scan_channels(struct + } + } + ++static int ipw_passive_dwell_time(struct ipw_priv *priv) ++{ ++ /* staying on passive channels longer than the DTIM interval during a ++ * scan, while associated, causes the firmware to cancel the scan ++ * without notification. Hence, don't stay on passive channels longer ++ * than the beacon interval. ++ */ ++ if (priv->status & STATUS_ASSOCIATED ++ && priv->assoc_network->beacon_interval > 10) ++ return priv->assoc_network->beacon_interval - 10; ++ else ++ return 120; ++} ++ + static int ipw_request_scan_helper(struct ipw_priv *priv, int type, int direct) + { + struct ipw_scan_request_ext scan; +@@ -6319,16 +6334,16 @@ static int ipw_request_scan_helper(struc + scan.full_scan_index = cpu_to_le32(ieee80211_get_scans(priv->ieee)); + + if (type == IW_SCAN_TYPE_PASSIVE) { +- IPW_DEBUG_WX("use passive scanning\n"); +- scan_type = IPW_SCAN_PASSIVE_FULL_DWELL_SCAN; ++ IPW_DEBUG_WX("use passive scanning\n"); ++ scan_type = IPW_SCAN_PASSIVE_FULL_DWELL_SCAN; + scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = +- cpu_to_le16(120); ++ cpu_to_le16(ipw_passive_dwell_time(priv)); + ipw_add_scan_channels(priv, &scan, scan_type); + goto send_request; + } + + /* Use active scan by default. */ +- if (priv->config & CFG_SPEED_SCAN) ++ if (priv->config & CFG_SPEED_SCAN) + scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] = + cpu_to_le16(30); + else +@@ -6338,7 +6353,8 @@ static int ipw_request_scan_helper(struc + scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN] = + cpu_to_le16(20); + +- scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120); ++ scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = ++ cpu_to_le16(ipw_passive_dwell_time(priv)); + scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20); + + #ifdef CONFIG_IPW2200_MONITOR +--- a/drivers/net/wireless/ipw2200.h ++++ b/drivers/net/wireless/ipw2200.h +@@ -244,6 +244,7 @@ enum connection_manager_assoc_states { + #define HOST_NOTIFICATION_S36_MEASUREMENT_REFUSED 31 + + #define HOST_NOTIFICATION_STATUS_BEACON_MISSING 1 ++#define IPW_MB_SCAN_CANCEL_THRESHOLD 3 + #define IPW_MB_ROAMING_THRESHOLD_MIN 1 + #define IPW_MB_ROAMING_THRESHOLD_DEFAULT 8 + #define IPW_MB_ROAMING_THRESHOLD_MAX 30 + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:53 2009 +Message-Id: <20090211001553.833786185@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:23 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Paulius Zaleckas , + Denis Joseph Barrow , + Jeff Garzik , + Frank Seidel +Subject: [patch 44/56] hso: rfkill type should be WWAN +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=hso-rfkill-type-should-be-wwan.patch +Content-Length: 801 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Paulius Zaleckas + +commit db053c6b447d083f3c63e5540b70a3e521b468ca upstream. + +Signed-off-by: Paulius Zaleckas +Cc: Denis Joseph Barrow +Signed-off-by: Jeff Garzik +Signed-off-by: Frank Seidel +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/usb/hso.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/usb/hso.c ++++ b/drivers/net/usb/hso.c +@@ -2047,7 +2047,7 @@ static void hso_create_rfkill(struct hso + char *rfkn; + + hso_net->rfkill = rfkill_allocate(&interface_to_usbdev(interface)->dev, +- RFKILL_TYPE_WLAN); ++ RFKILL_TYPE_WWAN); + if (!hso_net->rfkill) { + dev_err(dev, "%s - Out of memory", __func__); + return; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001553.970131237@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:24 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Chandra Seetharaman , + Alasdair G Kergon , + Hannes Reinecke +Subject: [patch 45/56] dm mpath: avoid attempting to activate null path +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=dm-mpath-avoid-attempting-to-activate-null-path.patch +Content-Length: 1180 +Lines: 38 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Chandra Seetharaman + +commit b81aa1c79201cb424114fd198607951900babe18 upstream. + +Path activation code is called even when the pgpath is NULL. This could +lead to a panic in activate_path(). Such a panic is seen in -rt kernel. + +This problem has been there before the pg_init() was moved to a +workqueue. + +Signed-off-by: Chandra Seetharaman +Signed-off-by: Alasdair G Kergon +Signed-off-by: Hannes Reinecke +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-mpath.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/md/dm-mpath.c ++++ b/drivers/md/dm-mpath.c +@@ -427,13 +427,13 @@ static void process_queued_ios(struct wo + __choose_pgpath(m); + + pgpath = m->current_pgpath; +- m->pgpath_to_activate = m->current_pgpath; + + if ((pgpath && !m->queue_io) || + (!pgpath && !m->queue_if_no_path)) + must_queue = 0; + +- if (m->pg_init_required && !m->pg_init_in_progress) { ++ if (m->pg_init_required && !m->pg_init_in_progress && pgpath) { ++ m->pgpath_to_activate = pgpath; + m->pg_init_count++; + m->pg_init_required = 0; + m->pg_init_in_progress = 1; + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.091714775@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:25 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dennis Noordsij , + Bob Moore , + Lin Ming , + Andi Kleen , + Len Brown , + Thomas Renninger +Subject: [patch 46/56] ACPICA: Copy dynamically loaded tables to local buffer +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpica-copy-dynamically-loaded-tables-to-local-buffer.patch +Content-Length: 6624 +Lines: 203 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Dennis Noordsij + +commit f0e0da8a6cca44396c7a711e308d58084e881617 upstream. + +Previously, dynamically loaded tables were simply mapped, but on some machines +this memory is corrupted after suspend. Now copy the table to a local buffer. +For OpRegion case, added checksum verify. Use the table length from the table header, +not the region length. For Buffer case, use the table length also. + +http://bugzilla.kernel.org/show_bug.cgi?id=10734 + +Signed-off-by: Dennis Noordsij +Signed-off-by: Bob Moore +Signed-off-by: Lin Ming +Signed-off-by: Andi Kleen +Signed-off-by: Len Brown +Signed-off-by: Thomas Renninger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/executer/exconfig.c | 113 ++++++++++++++++++++++++++++----------- + 1 file changed, 82 insertions(+), 31 deletions(-) + +--- a/drivers/acpi/executer/exconfig.c ++++ b/drivers/acpi/executer/exconfig.c +@@ -280,6 +280,7 @@ acpi_ex_load_op(union acpi_operand_objec + struct acpi_walk_state *walk_state) + { + union acpi_operand_object *ddb_handle; ++ struct acpi_table_header *table; + struct acpi_table_desc table_desc; + u32 table_index; + acpi_status status; +@@ -294,9 +295,8 @@ acpi_ex_load_op(union acpi_operand_objec + switch (ACPI_GET_OBJECT_TYPE(obj_desc)) { + case ACPI_TYPE_REGION: + +- ACPI_DEBUG_PRINT((ACPI_DB_EXEC, "Load from Region %p %s\n", +- obj_desc, +- acpi_ut_get_object_type_name(obj_desc))); ++ ACPI_DEBUG_PRINT((ACPI_DB_EXEC, ++ "Load table from Region %p\n", obj_desc)); + + /* Region must be system_memory (from ACPI spec) */ + +@@ -316,61 +316,112 @@ acpi_ex_load_op(union acpi_operand_objec + } + + /* +- * We will simply map the memory region for the table. However, the +- * memory region is technically not guaranteed to remain stable and +- * we may eventually have to copy the table to a local buffer. ++ * Map the table header and get the actual table length. The region ++ * length is not guaranteed to be the same as the table length. ++ */ ++ table = acpi_os_map_memory(obj_desc->region.address, ++ sizeof(struct acpi_table_header)); ++ if (!table) { ++ return_ACPI_STATUS(AE_NO_MEMORY); ++ } ++ ++ length = table->length; ++ acpi_os_unmap_memory(table, sizeof(struct acpi_table_header)); ++ ++ /* Must have at least an ACPI table header */ ++ ++ if (length < sizeof(struct acpi_table_header)) { ++ return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH); ++ } ++ ++ /* ++ * The memory region is not guaranteed to remain stable and we must ++ * copy the table to a local buffer. For example, the memory region ++ * is corrupted after suspend on some machines. Dynamically loaded ++ * tables are usually small, so this overhead is minimal. + */ ++ ++ /* Allocate a buffer for the table */ ++ ++ table_desc.pointer = ACPI_ALLOCATE(length); ++ if (!table_desc.pointer) { ++ return_ACPI_STATUS(AE_NO_MEMORY); ++ } ++ ++ /* Map the entire table and copy it */ ++ ++ table = acpi_os_map_memory(obj_desc->region.address, length); ++ if (!table) { ++ ACPI_FREE(table_desc.pointer); ++ return_ACPI_STATUS(AE_NO_MEMORY); ++ } ++ ++ ACPI_MEMCPY(table_desc.pointer, table, length); ++ acpi_os_unmap_memory(table, length); ++ + table_desc.address = obj_desc->region.address; +- table_desc.length = obj_desc->region.length; +- table_desc.flags = ACPI_TABLE_ORIGIN_MAPPED; + break; + + case ACPI_TYPE_BUFFER: /* Buffer or resolved region_field */ + + ACPI_DEBUG_PRINT((ACPI_DB_EXEC, +- "Load from Buffer or Field %p %s\n", obj_desc, +- acpi_ut_get_object_type_name(obj_desc))); +- +- length = obj_desc->buffer.length; ++ "Load table from Buffer or Field %p\n", ++ obj_desc)); + + /* Must have at least an ACPI table header */ + +- if (length < sizeof(struct acpi_table_header)) { ++ if (obj_desc->buffer.length < sizeof(struct acpi_table_header)) { + return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH); + } + +- /* Validate checksum here. It won't get validated in tb_add_table */ ++ /* Get the actual table length from the table header */ + +- status = +- acpi_tb_verify_checksum(ACPI_CAST_PTR +- (struct acpi_table_header, +- obj_desc->buffer.pointer), length); +- if (ACPI_FAILURE(status)) { +- return_ACPI_STATUS(status); ++ table = ++ ACPI_CAST_PTR(struct acpi_table_header, ++ obj_desc->buffer.pointer); ++ length = table->length; ++ ++ /* Table cannot extend beyond the buffer */ ++ ++ if (length > obj_desc->buffer.length) { ++ return_ACPI_STATUS(AE_AML_BUFFER_LIMIT); ++ } ++ if (length < sizeof(struct acpi_table_header)) { ++ return_ACPI_STATUS(AE_INVALID_TABLE_LENGTH); + } + + /* +- * We need to copy the buffer since the original buffer could be +- * changed or deleted in the future ++ * Copy the table from the buffer because the buffer could be modified ++ * or even deleted in the future + */ + table_desc.pointer = ACPI_ALLOCATE(length); + if (!table_desc.pointer) { + return_ACPI_STATUS(AE_NO_MEMORY); + } + +- ACPI_MEMCPY(table_desc.pointer, obj_desc->buffer.pointer, +- length); +- table_desc.length = length; +- table_desc.flags = ACPI_TABLE_ORIGIN_ALLOCATED; ++ ACPI_MEMCPY(table_desc.pointer, table, length); ++ table_desc.address = ACPI_TO_INTEGER(table_desc.pointer); + break; + + default: + return_ACPI_STATUS(AE_AML_OPERAND_TYPE); + } + +- /* +- * Install the new table into the local data structures +- */ ++ /* Validate table checksum (will not get validated in tb_add_table) */ ++ ++ status = acpi_tb_verify_checksum(table_desc.pointer, length); ++ if (ACPI_FAILURE(status)) { ++ ACPI_FREE(table_desc.pointer); ++ return_ACPI_STATUS(status); ++ } ++ ++ /* Complete the table descriptor */ ++ ++ table_desc.length = length; ++ table_desc.flags = ACPI_TABLE_ORIGIN_ALLOCATED; ++ ++ /* Install the new table into the local data structures */ ++ + status = acpi_tb_add_table(&table_desc, &table_index); + if (ACPI_FAILURE(status)) { + goto cleanup; +@@ -379,7 +430,7 @@ acpi_ex_load_op(union acpi_operand_objec + /* + * Add the table to the namespace. + * +- * Note: We load the table objects relative to the root of the namespace. ++ * Note: Load the table objects relative to the root of the namespace. + * This appears to go against the ACPI specification, but we do it for + * compatibility with other ACPI implementations. + */ +@@ -415,7 +466,7 @@ acpi_ex_load_op(union acpi_operand_objec + cleanup: + if (ACPI_FAILURE(status)) { + +- /* Delete allocated buffer or mapping */ ++ /* Delete allocated table buffer */ + + acpi_tb_delete_table(&table_desc); + } + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.214956276@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:26 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Lin Ming , + Bob Moore , + Andi Kleen , + Len Brown , + Thomas Renninger +Subject: [patch 47/56] ACPICA: Add function to dereference returned reference objects +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpica-add-function-to-dereference-returned-reference-objects.patch +Content-Length: 4502 +Lines: 143 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Lin Ming + +commit bbc241340681557a16982f4d1840f00963bc05b4 upstream. + +Examines the return object from a call to acpi_evaluate_object. +Any Index or RefOf references are automatically dereferenced in +an attempt to return something useful (these reference types +cannot be converted into an external ACPI_OBJECT.) +Lin Ming, Bob Moore. + +http://bugzilla.kernel.org/show_bug.cgi?id=11105 + +Signed-off-by: Lin Ming +Signed-off-by: Bob Moore +Signed-off-by: Andi Kleen +Signed-off-by: Len Brown +Signed-off-by: Thomas Renninger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/namespace/nsxfeval.c | 79 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 79 insertions(+) + +--- a/drivers/acpi/namespace/nsxfeval.c ++++ b/drivers/acpi/namespace/nsxfeval.c +@@ -45,9 +45,14 @@ + #include + #include + #include ++#include + + #define _COMPONENT ACPI_NAMESPACE + ACPI_MODULE_NAME("nsxfeval") ++ ++/* Local prototypes */ ++static void acpi_ns_resolve_references(struct acpi_evaluate_info *info); ++ + #ifdef ACPI_FUTURE_USAGE + /******************************************************************************* + * +@@ -69,6 +74,7 @@ ACPI_MODULE_NAME("nsxfeval") + * be valid (non-null) + * + ******************************************************************************/ ++ + acpi_status + acpi_evaluate_object_typed(acpi_handle handle, + acpi_string pathname, +@@ -283,6 +289,10 @@ acpi_evaluate_object(acpi_handle handle, + + if (ACPI_SUCCESS(status)) { + ++ /* Dereference Index and ref_of references */ ++ ++ acpi_ns_resolve_references(info); ++ + /* Get the size of the returned object */ + + status = +@@ -352,6 +362,74 @@ ACPI_EXPORT_SYMBOL(acpi_evaluate_object) + + /******************************************************************************* + * ++ * FUNCTION: acpi_ns_resolve_references ++ * ++ * PARAMETERS: Info - Evaluation info block ++ * ++ * RETURN: Info->return_object is replaced with the dereferenced object ++ * ++ * DESCRIPTION: Dereference certain reference objects. Called before an ++ * internal return object is converted to an external union acpi_object. ++ * ++ * Performs an automatic dereference of Index and ref_of reference objects. ++ * These reference objects are not supported by the union acpi_object, so this is a ++ * last resort effort to return something useful. Also, provides compatibility ++ * with other ACPI implementations. ++ * ++ * NOTE: does not handle references within returned package objects or nested ++ * references, but this support could be added later if found to be necessary. ++ * ++ ******************************************************************************/ ++static void acpi_ns_resolve_references(struct acpi_evaluate_info *info) ++{ ++ union acpi_operand_object *obj_desc = NULL; ++ struct acpi_namespace_node *node; ++ ++ /* We are interested in reference objects only */ ++ ++ if (ACPI_GET_OBJECT_TYPE(info->return_object) != ++ ACPI_TYPE_LOCAL_REFERENCE) { ++ return; ++ } ++ ++ /* ++ * Two types of references are supported - those created by Index and ++ * ref_of operators. A name reference (AML_NAMEPATH_OP) can be converted ++ * to an union acpi_object, so it is not dereferenced here. A ddb_handle ++ * (AML_LOAD_OP) cannot be dereferenced, nor can it be converted to ++ * an union acpi_object. ++ */ ++ switch (info->return_object->reference.opcode) { ++ case AML_INDEX_OP: ++ ++ obj_desc = *(info->return_object->reference.where); ++ break; ++ ++ case AML_REF_OF_OP: ++ ++ node = info->return_object->reference.object; ++ if (node) { ++ obj_desc = node->object; ++ } ++ break; ++ ++ default: ++ return; ++ } ++ ++ /* Replace the existing reference object */ ++ ++ if (obj_desc) { ++ acpi_ut_add_reference(obj_desc); ++ acpi_ut_remove_reference(info->return_object); ++ info->return_object = obj_desc; ++ } ++ ++ return; ++} ++ ++/******************************************************************************* ++ * + * FUNCTION: acpi_walk_namespace + * + * PARAMETERS: Type - acpi_object_type to search for +@@ -379,6 +457,7 @@ ACPI_EXPORT_SYMBOL(acpi_evaluate_object) + * function, etc. + * + ******************************************************************************/ ++ + acpi_status + acpi_walk_namespace(acpi_object_type type, + acpi_handle start_object, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.344662775@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:27 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Yinghai Lu , + Len Brown , + Thomas Renninger +Subject: [patch 48/56] ACPI: dont load acpi_cpufreq if acpi=off +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-don-t-load-acpi_cpufreq-if-acpi-off.patch +Content-Length: 674 +Lines: 26 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Yinghai Lu + +commit ee297533279a802eac8b1cbea8e65b24b36a1aac upstream. + +Signed-off-by: Yinghai Lu +Signed-off-by: Len Brown +Signed-off-by: Thomas Renninger +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c ++++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +@@ -779,6 +779,9 @@ static int __init acpi_cpufreq_init(void + { + int ret; + ++ if (acpi_disabled) ++ return 0; ++ + dprintk("acpi_cpufreq_init\n"); + + ret = acpi_cpufreq_early_init(); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.468981369@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:28 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Zhang Rui , + Len Brown , + Thomas Renninger +Subject: [patch 49/56] ACPI: video: Fix reversed brightness behavior on ThinkPad SL series +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=acpi-video-fix-reversed-brightness-behavior-on-thinkpad-sl-series.patch +Content-Length: 1806 +Lines: 66 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Zhang Rui + +commit 935e5f290ec1eb0f1c15004421f5fd3154380fd5 upstream. + +Section B.6.2 of ACPI 3.0b specification that defines _BCL method +doesn't require the brightness levels returned to be sorted. +At least ThinkPad SL300 (and probably all IdeaPads) returns the +array reversed (i.e. bightest levels have lowest indexes), which +causes the brightness management behave in completely reversed +manner on these machines (brightness increases when the laptop is +idle, while the display dims when used). + +Sorting the array by brightness level values after reading the list +fixes the issue. + +http://bugzilla.kernel.org/show_bug.cgi?id=12037 + +Signed-off-by: Zhang Rui +Tested-by: Lubomir Rintel +Signed-off-by: Len Brown +Signed-off-by: Thomas Renninger +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/video.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +--- a/drivers/acpi/video.c ++++ b/drivers/acpi/video.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + #include + + #include +@@ -632,6 +633,16 @@ acpi_video_bus_DOS(struct acpi_video_bus + } + + /* ++ * Simple comparison function used to sort backlight levels. ++ */ ++ ++static int ++acpi_video_cmp_level(const void *a, const void *b) ++{ ++ return *(int *)a - *(int *)b; ++} ++ ++/* + * Arg: + * device : video output device (LCD, CRT, ..) + * +@@ -682,6 +693,10 @@ acpi_video_init_brightness(struct acpi_v + count++; + } + ++ /* don't sort the first two brightness levels */ ++ sort(&br->levels[2], count - 2, sizeof(br->levels[2]), ++ acpi_video_cmp_level, NULL); ++ + if (count < 2) + goto out_free_levels; + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.605589723@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:29 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dan Williams +Subject: [patch 50/56] Revert USB: option: add Pantech cards +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=revert-usb-option-add-pantech-cards.patch +Content-Length: 1575 +Lines: 44 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Greg Kroah-Hartman + +commit 6b40c0057a7935bcf63a38a924094c7e61d4731f upstream. + +Revert 8b6346ec899713a90890c9e832f7eff91ea73504 as these devices really +work just fine with the cdc-acm driver, as they follow the spec +properly. + +Thanks to Chuck Ebbert for pointing out the problem here. + +Cc: Chuck Ebbert +Cc: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 9 --------- + 1 file changed, 9 deletions(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -267,12 +267,6 @@ static int option_send_setup(struct tty + #define ERICSSON_VENDOR_ID 0x0bdb + #define ERICSSON_PRODUCT_F3507G 0x1900 + +-/* Pantech products */ +-#define PANTECH_VENDOR_ID 0x106c +-#define PANTECH_PRODUCT_PC5740 0x3701 +-#define PANTECH_PRODUCT_PC5750 0x3702 /* PX-500 */ +-#define PANTECH_PRODUCT_UM150 0x3711 +- + static struct usb_device_id option_ids[] = { + { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, + { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, +@@ -476,9 +470,6 @@ static struct usb_device_id option_ids[] + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) }, + { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) }, + { USB_DEVICE(ERICSSON_VENDOR_ID, ERICSSON_PRODUCT_F3507G) }, +- { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5740) }, +- { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_PC5750) }, +- { USB_DEVICE(PANTECH_VENDOR_ID, PANTECH_PRODUCT_UM150) }, + { } /* Terminating entry */ + }; + MODULE_DEVICE_TABLE(usb, option_ids); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.745610871@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:30 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Oliver Neukum +Subject: [patch 51/56] USB: new id for ti_usb_3410_5052 driver +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=usb-new-id-for-ti_usb_3410_5052-driver.patch +Content-Length: 1970 +Lines: 53 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Oliver Neukum + +commit 1a1fab513734b3a4fca1bee8229e5ff7e1cb873c upstream. + +This adds a new device id + +Signed-off-by: Oliver Neukum +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ti_usb_3410_5052.c | 3 +++ + drivers/usb/serial/ti_usb_3410_5052.h | 2 ++ + 2 files changed, 5 insertions(+) + +--- a/drivers/usb/serial/ti_usb_3410_5052.c ++++ b/drivers/usb/serial/ti_usb_3410_5052.c +@@ -230,6 +230,7 @@ static unsigned int product_5052_count; + static struct usb_device_id ti_id_table_3410[1+TI_EXTRA_VID_PID_COUNT+1] = { + { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, + }; + + static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = { +@@ -237,6 +238,7 @@ static struct usb_device_id ti_id_table_ + { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, + }; + + static struct usb_device_id ti_id_table_combined[] = { +@@ -246,6 +248,7 @@ static struct usb_device_id ti_id_table_ + { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, + { } + }; + +--- a/drivers/usb/serial/ti_usb_3410_5052.h ++++ b/drivers/usb/serial/ti_usb_3410_5052.h +@@ -27,7 +27,9 @@ + + /* Vendor and product ids */ + #define TI_VENDOR_ID 0x0451 ++#define IBM_VENDOR_ID 0x04b3 + #define TI_3410_PRODUCT_ID 0x3410 ++#define IBM_4543_PRODUCT_ID 0x4543 + #define TI_3410_EZ430_ID 0xF430 /* TI ez430 development tool */ + #define TI_5052_BOOT_PRODUCT_ID 0x5052 /* no EEPROM, no firmware */ + #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */ + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:54 2009 +Message-Id: <20090211001554.878178698@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:31 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dirk De Schepper , + Matthias Urlichs +Subject: [patch 52/56] USB: option: New mobile broadband modems to be supported +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=usb-option-new-mobile-broadband-modems-to-be-supported.patch +Content-Length: 9263 +Lines: 129 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Dirk De Schepper + +commit c200b9c9e8ec93cdd262cfa1699ad92e883d4876 upstream. + +- New Novatel and Dell mobile broadband modem products added + - Dell pid variables used in stead of numerical PIDs for known + products + +Signed-off-by: Dirk De Schepper +Signed-off-by: Matthias Urlichs +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/option.c | 84 +++++++++++++++++++++++++++++--------------- + 1 file changed, 56 insertions(+), 28 deletions(-) + +--- a/drivers/usb/serial/option.c ++++ b/drivers/usb/serial/option.c +@@ -192,14 +192,15 @@ static int option_send_setup(struct tty + #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 + + /* FUTURE NOVATEL PRODUCTS */ +-#define NOVATELWIRELESS_PRODUCT_EVDO_1 0x6000 +-#define NOVATELWIRELESS_PRODUCT_HSPA_1 0x7000 +-#define NOVATELWIRELESS_PRODUCT_EMBEDDED_1 0x8000 +-#define NOVATELWIRELESS_PRODUCT_GLOBAL_1 0x9000 +-#define NOVATELWIRELESS_PRODUCT_EVDO_2 0x6001 +-#define NOVATELWIRELESS_PRODUCT_HSPA_2 0x7001 +-#define NOVATELWIRELESS_PRODUCT_EMBEDDED_2 0x8001 +-#define NOVATELWIRELESS_PRODUCT_GLOBAL_2 0x9001 ++#define NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED 0X6000 ++#define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED 0X6001 ++#define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED 0X7000 ++#define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED 0X7001 ++#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED 0X8000 ++#define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0X8001 ++#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0X9000 ++#define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0X9001 ++#define NOVATELWIRELESS_PRODUCT_GLOBAL 0XA001 + + /* AMOI PRODUCTS */ + #define AMOI_VENDOR_ID 0x1614 +@@ -209,6 +210,27 @@ static int option_send_setup(struct tty + + #define DELL_VENDOR_ID 0x413C + ++/* Dell modems */ ++#define DELL_PRODUCT_5700_MINICARD 0x8114 ++#define DELL_PRODUCT_5500_MINICARD 0x8115 ++#define DELL_PRODUCT_5505_MINICARD 0x8116 ++#define DELL_PRODUCT_5700_EXPRESSCARD 0x8117 ++#define DELL_PRODUCT_5510_EXPRESSCARD 0x8118 ++ ++#define DELL_PRODUCT_5700_MINICARD_SPRINT 0x8128 ++#define DELL_PRODUCT_5700_MINICARD_TELUS 0x8129 ++ ++#define DELL_PRODUCT_5720_MINICARD_VZW 0x8133 ++#define DELL_PRODUCT_5720_MINICARD_SPRINT 0x8134 ++#define DELL_PRODUCT_5720_MINICARD_TELUS 0x8135 ++#define DELL_PRODUCT_5520_MINICARD_CINGULAR 0x8136 ++#define DELL_PRODUCT_5520_MINICARD_GENERIC_L 0x8137 ++#define DELL_PRODUCT_5520_MINICARD_GENERIC_I 0x8138 ++ ++#define DELL_PRODUCT_5730_MINICARD_SPRINT 0x8180 ++#define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181 ++#define DELL_PRODUCT_5730_MINICARD_VZW 0x8182 ++ + #define KYOCERA_VENDOR_ID 0x0c88 + #define KYOCERA_PRODUCT_KPC650 0x17da + #define KYOCERA_PRODUCT_KPC680 0x180a +@@ -377,31 +399,37 @@ static struct usb_device_id option_ids[] + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EU870D) }, /* Novatel EU850D/EU860D/EU870D */ + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ + { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_1) }, /* Novatel EVDO product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_1) }, /* Novatel HSPA product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_1) }, /* Novatel Embedded product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_1) }, /* Novatel Global product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_2) }, /* Novatel EVDO product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_2) }, /* Novatel HSPA product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EMBEDDED_2) }, /* Novatel Embedded product */ +- { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL_2) }, /* Novatel Global product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_FULLSPEED) }, /* Novatel EVDO product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED) }, /* Novatel HSPA product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_FULLSPEED) }, /* Novatel EVDO Embedded product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED) }, /* Novatel HSPA Embedded product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED) }, /* Novatel EVDO product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED) }, /* Novatel HSPA product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED) }, /* Novatel EVDO Embedded product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED) }, /* Novatel HSPA Embedded product */ ++ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_GLOBAL) }, /* Novatel Global product */ + + { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) }, + { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) }, + { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H02) }, + +- { USB_DEVICE(DELL_VENDOR_ID, 0x8114) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8115) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8116) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8117) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8118) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8128) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8129) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8133) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8136) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8137) }, /* Dell Wireless HSDPA 5520 */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8138) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */ +- { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite EV620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5500_MINICARD) }, /* Dell Wireless 5500 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5505_MINICARD) }, /* Dell Wireless 5505 Mobile Broadband HSDPA Mini-Card == Novatel Expedite EU740 HSDPA/3G */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_EXPRESSCARD) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO ExpressCard == Novatel Merlin XV620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5510_EXPRESSCARD) }, /* Dell Wireless 5510 Mobile Broadband HSDPA ExpressCard == Novatel Merlin XU870 HSDPA/3G */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_SPRINT) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite E720 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5700_MINICARD_TELUS) }, /* Dell Wireless 5700 Mobile Broadband CDMA/EVDO Mini-Card == Novatel Expedite ET620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_VZW) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_SPRINT) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5720_MINICARD_TELUS) }, /* Dell Wireless 5720 == Novatel EV620 CDMA/EV-DO */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_CINGULAR) }, /* Dell Wireless HSDPA 5520 == Novatel Expedite EU860D */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_L) }, /* Dell Wireless HSDPA 5520 */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5520_MINICARD_GENERIC_I) }, /* Dell Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard */ ++ { USB_DEVICE(DELL_VENDOR_ID, 0x8147) }, /* Dell Wireless 5530 Mobile Broadband (3G HSPA) Mini-Card */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ ++ { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */ + { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */ + { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, + { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) }, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009 +Message-Id: <20090211001555.010135692@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:32 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Oliver Neukum , + Chris Adams +Subject: [patch 53/56] USB: two more usb ids for ti_usb_3410_5052 +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=usb-two-more-usb-ids-for-ti_usb_3410_5052.patch +Content-Length: 2824 +Lines: 66 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Oliver Neukum + +commit 97dcf0416e390fc5c997d4ea60e6f975c7b7a1c3 upstream. + +This patch adds device IDs and balances the counts to make the +hot ID additioning mechanism work. + +Signed-off-by: Oliver Neukum +Cc: Chris Adams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/ti_usb_3410_5052.c | 10 +++++++--- + drivers/usb/serial/ti_usb_3410_5052.h | 2 ++ + 2 files changed, 9 insertions(+), 3 deletions(-) + +--- a/drivers/usb/serial/ti_usb_3410_5052.c ++++ b/drivers/usb/serial/ti_usb_3410_5052.c +@@ -227,13 +227,15 @@ static unsigned int product_5052_count; + /* the array dimension is the number of default entries plus */ + /* TI_EXTRA_VID_PID_COUNT user defined entries plus 1 terminating */ + /* null entry */ +-static struct usb_device_id ti_id_table_3410[1+TI_EXTRA_VID_PID_COUNT+1] = { ++static struct usb_device_id ti_id_table_3410[10+TI_EXTRA_VID_PID_COUNT+1] = { + { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, + { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) }, + }; + +-static struct usb_device_id ti_id_table_5052[4+TI_EXTRA_VID_PID_COUNT+1] = { ++static struct usb_device_id ti_id_table_5052[5+TI_EXTRA_VID_PID_COUNT+1] = { + { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5152_BOOT_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, +@@ -241,7 +243,7 @@ static struct usb_device_id ti_id_table_ + { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, + }; + +-static struct usb_device_id ti_id_table_combined[] = { ++static struct usb_device_id ti_id_table_combined[14+2*TI_EXTRA_VID_PID_COUNT+1] = { + { USB_DEVICE(TI_VENDOR_ID, TI_3410_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_3410_EZ430_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_BOOT_PRODUCT_ID) }, +@@ -249,6 +251,8 @@ static struct usb_device_id ti_id_table_ + { USB_DEVICE(TI_VENDOR_ID, TI_5052_EEPROM_PRODUCT_ID) }, + { USB_DEVICE(TI_VENDOR_ID, TI_5052_FIRMWARE_PRODUCT_ID) }, + { USB_DEVICE(IBM_VENDOR_ID, IBM_4543_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_454B_PRODUCT_ID) }, ++ { USB_DEVICE(IBM_VENDOR_ID, IBM_454C_PRODUCT_ID) }, + { } + }; + +--- a/drivers/usb/serial/ti_usb_3410_5052.h ++++ b/drivers/usb/serial/ti_usb_3410_5052.h +@@ -30,6 +30,8 @@ + #define IBM_VENDOR_ID 0x04b3 + #define TI_3410_PRODUCT_ID 0x3410 + #define IBM_4543_PRODUCT_ID 0x4543 ++#define IBM_454B_PRODUCT_ID 0x454b ++#define IBM_454C_PRODUCT_ID 0x454c + #define TI_3410_EZ430_ID 0xF430 /* TI ez430 development tool */ + #define TI_5052_BOOT_PRODUCT_ID 0x5052 /* no EEPROM, no firmware */ + #define TI_5152_BOOT_PRODUCT_ID 0x5152 /* no EEPROM, no firmware */ + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009 +Message-Id: <20090211001555.146015811@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:33 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alan Stern +Subject: [patch 54/56] USB: usb-storage: add Pentax to the bad-vendor list +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch +Content-Length: 1979 +Lines: 60 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Alan Stern + +commit 506e9469833c66ed6bb9acd902e208f7301b6adb upstream. + +This patch (as1202) adds Pentax to usb-storage's list of bad vendors +whose devices always need the CAPACITY_HEURISTICS flag. This is in +addition to the existing entries: Nokia, Nikon, and Motorola. + +Signed-off-by: Alan Stern +Tested-by: Virgo Pärna +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/storage/scsiglue.c | 2 ++ + drivers/usb/storage/unusual_devs.h | 15 --------------- + 2 files changed, 2 insertions(+), 15 deletions(-) + +--- a/drivers/usb/storage/scsiglue.c ++++ b/drivers/usb/storage/scsiglue.c +@@ -64,6 +64,7 @@ + */ + #define VENDOR_ID_NOKIA 0x0421 + #define VENDOR_ID_NIKON 0x04b0 ++#define VENDOR_ID_PENTAX 0x0a17 + #define VENDOR_ID_MOTOROLA 0x22b8 + + /*********************************************************************** +@@ -150,6 +151,7 @@ static int slave_configure(struct scsi_d + switch (le16_to_cpu(us->pusb_dev->descriptor.idVendor)) { + case VENDOR_ID_NOKIA: + case VENDOR_ID_NIKON: ++ case VENDOR_ID_PENTAX: + case VENDOR_ID_MOTOROLA: + if (!(us->fflags & (US_FL_FIX_CAPACITY | + US_FL_CAPACITY_OK))) +--- a/drivers/usb/storage/unusual_devs.h ++++ b/drivers/usb/storage/unusual_devs.h +@@ -1381,21 +1381,6 @@ UNUSUAL_DEV( 0x0a17, 0x0004, 0x1000, 0x1 + US_SC_DEVICE, US_PR_DEVICE, NULL, + US_FL_FIX_INQUIRY ), + +- +-/* Submitted by Per Winkvist */ +-UNUSUAL_DEV( 0x0a17, 0x006, 0x0000, 0xffff, +- "Pentax", +- "Optio S/S4", +- US_SC_DEVICE, US_PR_DEVICE, NULL, +- US_FL_FIX_INQUIRY ), +- +-/* Reported by Jaak Ristioja */ +-UNUSUAL_DEV( 0x0a17, 0x006e, 0x0100, 0x0100, +- "Pentax", +- "K10D", +- US_SC_DEVICE, US_PR_DEVICE, NULL, +- US_FL_FIX_CAPACITY ), +- + /* These are virtual windows driver CDs, which the zd1211rw driver + * automatically converts into WLAN devices. */ + UNUSUAL_DEV( 0x0ace, 0x2011, 0x0101, 0x0101, + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009 +Message-Id: <20090211001555.278411130@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:34 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Vlad Yasevich , + "David S. Miller" +Subject: [patch 55/56] sctp: Fix another socket race during accept/peeloff +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=sctp-fix-another-socket-race-during-accept-peeloff.patch +Content-Length: 2010 +Lines: 55 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Vlad Yasevich + +commit ae53b5bd77719fed58086c5be60ce4f22bffe1c6 upstream. + +There is a race between sctp_rcv() and sctp_accept() where we +have moved the association from the listening socket to the +accepted socket, but sctp_rcv() processing cached the old +socket and continues to use it. + +The easy solution is to check for the socket mismatch once we've +grabed the socket lock. If we hit a mis-match, that means +that were are currently holding the lock on the listening socket, +but the association is refrencing a newly accepted socket. We need +to drop the lock on the old socket and grab the lock on the new one. + +A more proper solution might be to create accepted sockets when +the new association is established, similar to TCP. That would +eliminate the race for 1-to-1 style sockets, but it would still +existing for 1-to-many sockets where a user wished to peeloff an +association. For now, we'll live with this easy solution as +it addresses the problem. + +Reported-by: Michal Hocko +Reported-by: Karsten Keil +Signed-off-by: Vlad Yasevich +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/sctp/input.c | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +--- a/net/sctp/input.c ++++ b/net/sctp/input.c +@@ -249,6 +249,19 @@ int sctp_rcv(struct sk_buff *skb) + */ + sctp_bh_lock_sock(sk); + ++ if (sk != rcvr->sk) { ++ /* Our cached sk is different from the rcvr->sk. This is ++ * because migrate()/accept() may have moved the association ++ * to a new socket and released all the sockets. So now we ++ * are holding a lock on the old socket while the user may ++ * be doing something with the new socket. Switch our veiw ++ * of the current sk. ++ */ ++ sctp_bh_unlock_sock(sk); ++ sk = rcvr->sk; ++ sctp_bh_lock_sock(sk); ++ } ++ + if (sock_owned_by_user(sk)) { + SCTP_INC_STATS_BH(SCTP_MIB_IN_PKT_BACKLOG); + sctp_add_backlog(sk, skb); + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:55 2009 +Message-Id: <20090211001555.417477757@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:15:35 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dean Nelson , + Ingo Molnar +Subject: [patch 56/56] genirq: NULL struct irq_descs member name in dynamic_irq_cleanup() +References: <20090211001439.873435357@mini.kroah.org> +Content-Disposition: inline; filename=genirq-null-struct-irq_desc-s-member-name-in-dynamic_irq_cleanup.patch +Content-Length: 1223 +Lines: 36 + +2.6.27-stable review patch. If anyone has any objections, please let us know. +------------------ + +From: Dean Nelson + +commit b6f3b7803a9231eddc36d0a2a6d2d8105ef89344 upstream. + +If the member 'name' of the irq_desc structure happens to point to a +character string that is resident within a kernel module, problems ensue +if that module is rmmod'd (at which time dynamic_irq_cleanup() is called) +and then later show_interrupts() is called by someone. + +It is also not a good thing if the character string resided in kmalloc'd +space that has been kfree'd (after having called dynamic_irq_cleanup()). +dynamic_irq_cleanup() fails to NULL the 'name' member and +show_interrupts() references it on a few architectures (like h8300, sh and +x86). + +Signed-off-by: Dean Nelson +Signed-off-by: Ingo Molnar +Signed-off-by: Andrew Morton +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/irq/chip.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/kernel/irq/chip.c ++++ b/kernel/irq/chip.c +@@ -78,6 +78,7 @@ void dynamic_irq_cleanup(unsigned int ir + desc->chip_data = NULL; + desc->handle_irq = handle_bad_irq; + desc->chip = &no_irq_chip; ++ desc->name = NULL; + spin_unlock_irqrestore(&desc->lock, flags); + } + + + +From gregkh@mini.kroah.org Tue Feb 10 16:15:47 2009 +Message-Id: <20090211001439.873435357@mini.kroah.org> +User-Agent: quilt/0.47-1 +Date: Tue, 10 Feb 2009 16:14:39 -0800 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: Justin Forbes , + Zwane Mwaikambo , + Theodore Ts'o , + Randy Dunlap , + Dave Jones , + Chuck Wolber , + Chris Wedgwood , + Michael Krufky , + Chuck Ebbert , + Domenico Andreoli , + Willy Tarreau , + Rodrigo Rubira Branco , + Jake Edge , + Eugene Teo , + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk +Subject: [patch 00/56] 2.6.27-stable review +Status: RO +Content-Length: 4272 +Lines: 84 + +This is the start of the stable review cycle for the 2.6.27.16 release. +There are 56 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 Thursday, February 12 19:00:00 UTC. +Anything received after that time might be too late. + +The whole patch series can be found in one patch at: + kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.27.16-rc1.gz +and the diffstat can be found below. + + +thanks, + +greg k-h + + + Documentation/filesystems/sysfs-pci.txt | 13 +++- + Makefile | 2 +- + arch/ia64/sn/kernel/io_acpi_init.c | 2 +- + arch/ia64/sn/kernel/io_init.c | 2 +- + arch/x86/kernel/apic_32.c | 2 +- + arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 3 + + arch/x86/mm/fault.c | 8 ++- + drivers/acpi/dock.c | 8 ++- + drivers/acpi/executer/exconfig.c | 113 ++++++++++++++++++++-------- + drivers/acpi/namespace/nsxfeval.c | 79 +++++++++++++++++++ + drivers/acpi/tables.c | 7 ++- + drivers/acpi/tables/tbutils.c | 7 +- + drivers/acpi/video.c | 29 ++++++- + drivers/char/agp/intel-agp.c | 17 +++- + drivers/char/vt.c | 5 +- + drivers/firewire/fw-ohci.c | 2 +- + drivers/firewire/fw-sbp2.c | 43 ++++++---- + drivers/ieee1394/ohci1394.h | 2 +- + drivers/ieee1394/sbp2.c | 10 +++ + drivers/md/dm-mpath.c | 4 +- + drivers/md/md.c | 36 ++++++--- + drivers/misc/eeepc-laptop.c | 3 +- + drivers/misc/sgi-xp/xpc.h | 5 +- + drivers/misc/sgi-xp/xpc_uv.c | 11 +-- + drivers/net/e1000/e1000_main.c | 6 +- + drivers/net/usb/hso.c | 2 +- + drivers/net/wireless/ipw2200.c | 28 +++++-- + drivers/net/wireless/ipw2200.h | 1 + + drivers/pci/pci-sysfs.c | 4 +- + drivers/pci/pcie/aspm.c | 4 +- + drivers/pci/rom.c | 8 +- + drivers/serial/8250_pci.c | 17 ++++ + drivers/usb/serial/option.c | 93 ++++++++++++++--------- + drivers/usb/serial/ti_usb_3410_5052.c | 13 +++- + drivers/usb/serial/ti_usb_3410_5052.h | 4 + + drivers/usb/storage/scsiglue.c | 2 + + drivers/usb/storage/unusual_devs.h | 15 ---- + drivers/video/console/fbcon.c | 39 +++------- + drivers/video/console/mdacon.c | 2 +- + drivers/video/console/sticon.c | 4 +- + drivers/video/console/vgacon.c | 4 +- + fs/binfmt_elf.c | 14 +++- + fs/seq_file.c | 115 ++++++++++++++-------------- + fs/xfs/linux-2.6/xfs_buf.c | 3 +- + include/acpi/pdc_intel.h | 2 + + include/linux/console_struct.h | 1 - + include/linux/module.h | 1 - + include/linux/pci.h | 2 +- + include/linux/pci_ids.h | 1 + + include/linux/wait.h | 11 ++- + ipc/shm.c | 4 + + kernel/irq/chip.c | 1 + + kernel/sched.c | 4 +- + kernel/wait.c | 59 +++++++++++++-- + mm/swap.c | 13 --- + net/sctp/input.c | 13 +++ + net/sunrpc/svcsock.c | 9 ++- + sound/pci/hda/patch_realtek.c | 4 + + sound/usb/usbaudio.c | 1 + + 59 files changed, 622 insertions(+), 295 deletions(-) + diff --git a/queue-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch b/review-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch similarity index 100% rename from queue-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch rename to review-2.6.27/md-allow-metadata_version-to-be-updated-for-externally-managed-metadata.patch diff --git a/queue-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch b/review-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch similarity index 100% rename from queue-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch rename to review-2.6.27/md-don-t-try-to-set-an-array-to-read-auto-if-it-is-already-in-that-state.patch diff --git a/queue-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch b/review-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch similarity index 100% rename from queue-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch rename to review-2.6.27/md-ensure-an-md-array-never-has-too-many-devices.patch diff --git a/queue-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch b/review-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch similarity index 100% rename from queue-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch rename to review-2.6.27/mm-remove-up-version-of-lru_add_drain_all.patch diff --git a/queue-2.6.27/module-remove-over-zealous-check-in-__module_get.patch b/review-2.6.27/module-remove-over-zealous-check-in-__module_get.patch similarity index 100% rename from queue-2.6.27/module-remove-over-zealous-check-in-__module_get.patch rename to review-2.6.27/module-remove-over-zealous-check-in-__module_get.patch diff --git a/queue-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch b/review-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch similarity index 100% rename from queue-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch rename to review-2.6.27/pci-properly-clean-up-aspm-link-state-on-device-remove.patch diff --git a/queue-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch b/review-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch similarity index 100% rename from queue-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch rename to review-2.6.27/pci-return-error-on-failure-to-read-pci-roms.patch diff --git a/queue-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch b/review-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch similarity index 100% rename from queue-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch rename to review-2.6.27/prevent-kprobes-from-catching-spurious-page-faults.patch diff --git a/queue-2.6.27/revert-usb-option-add-pantech-cards.patch b/review-2.6.27/revert-usb-option-add-pantech-cards.patch similarity index 100% rename from queue-2.6.27/revert-usb-option-add-pantech-cards.patch rename to review-2.6.27/revert-usb-option-add-pantech-cards.patch diff --git a/queue-2.6.27/revert-vt-fix-background-color-on-line-feed.patch b/review-2.6.27/revert-vt-fix-background-color-on-line-feed.patch similarity index 100% rename from queue-2.6.27/revert-vt-fix-background-color-on-line-feed.patch rename to review-2.6.27/revert-vt-fix-background-color-on-line-feed.patch diff --git a/queue-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch b/review-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch similarity index 100% rename from queue-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch rename to review-2.6.27/sctp-fix-another-socket-race-during-accept-peeloff.patch diff --git a/queue-2.6.27/seq_file-fix-big-enough-lseek-read.patch b/review-2.6.27/seq_file-fix-big-enough-lseek-read.patch similarity index 100% rename from queue-2.6.27/seq_file-fix-big-enough-lseek-read.patch rename to review-2.6.27/seq_file-fix-big-enough-lseek-read.patch diff --git a/queue-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch b/review-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch similarity index 100% rename from queue-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch rename to review-2.6.27/seq_file-move-traverse-so-it-can-be-used-from-seq_read.patch diff --git a/queue-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch b/review-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch similarity index 100% rename from queue-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch rename to review-2.6.27/serial-set-correct-baud_base-for-oxford-semiconductor-ltd-exsys-ex-41092-dual-16950-serial-adapter.patch diff --git a/queue-2.6.27/series b/review-2.6.27/series similarity index 100% rename from queue-2.6.27/series rename to review-2.6.27/series diff --git a/queue-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch b/review-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch similarity index 100% rename from queue-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch rename to review-2.6.27/sgi-xp-fix-writing-past-the-end-of-kzalloc-d-space.patch diff --git a/queue-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch b/review-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch similarity index 100% rename from queue-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch rename to review-2.6.27/shm-fix-shmctl-lockup-with-config_shmem.patch diff --git a/queue-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch b/review-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch similarity index 100% rename from queue-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch rename to review-2.6.27/sound-usb-audio-handle-wmaxpacketsize-for-fixed_endpoint-devices.patch diff --git a/queue-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch b/review-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch similarity index 100% rename from queue-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch rename to review-2.6.27/usb-new-id-for-ti_usb_3410_5052-driver.patch diff --git a/queue-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch b/review-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch similarity index 100% rename from queue-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch rename to review-2.6.27/usb-option-new-mobile-broadband-modems-to-be-supported.patch diff --git a/queue-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch b/review-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch similarity index 100% rename from queue-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch rename to review-2.6.27/usb-two-more-usb-ids-for-ti_usb_3410_5052.patch diff --git a/queue-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch b/review-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch similarity index 100% rename from queue-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch rename to review-2.6.27/usb-usb-storage-add-pentax-to-the-bad-vendor-list.patch diff --git a/queue-2.6.27/wait-prevent-exclusive-waiter-starvation.patch b/review-2.6.27/wait-prevent-exclusive-waiter-starvation.patch similarity index 100% rename from queue-2.6.27/wait-prevent-exclusive-waiter-starvation.patch rename to review-2.6.27/wait-prevent-exclusive-waiter-starvation.patch diff --git a/queue-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch b/review-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch similarity index 100% rename from queue-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch rename to review-2.6.27/x86-apic-enable-workaround-on-amd-fam10h-cpus.patch diff --git a/queue-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch b/review-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch similarity index 100% rename from queue-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch rename to review-2.6.27/xfs-set-b_error-from-bio-error-in-xfs_buf_bio_end_io.patch