]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
start 2.6.26.7 review cycle
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 18 Oct 2008 18:49:15 +0000 (11:49 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 18 Oct 2008 18:49:15 +0000 (11:49 -0700)
28 files changed:
review-2.6.26/acpi-ignore-_bqc-object-when-registering-backlight-device.patch [moved from queue-2.6.26/acpi-ignore-_bqc-object-when-registering-backlight-device.patch with 100% similarity]
review-2.6.26/b43legacy-fix-failure-in-rate-adjustment-mechanism.patch [moved from queue-2.6.26/b43legacy-fix-failure-in-rate-adjustment-mechanism.patch with 100% similarity]
review-2.6.26/check-mapped-ranges-on-sysfs-resource-files.patch [moved from queue-2.6.26/check-mapped-ranges-on-sysfs-resource-files.patch with 100% similarity]
review-2.6.26/cifs-make-sure-we-have-the-right-resume-info-before-calling-cifsfindnext.patch [moved from queue-2.6.26/cifs-make-sure-we-have-the-right-resume-info-before-calling-cifsfindnext.patch with 100% similarity]
review-2.6.26/don-t-allow-splice-to-files-opened-with-o_append.patch [moved from queue-2.6.26/don-t-allow-splice-to-files-opened-with-o_append.patch with 100% similarity]
review-2.6.26/drm-i915-fix-ioremap-of-a-user-address-for-non-root.patch [moved from queue-2.6.26/drm-i915-fix-ioremap-of-a-user-address-for-non-root.patch with 100% similarity]
review-2.6.26/dvb-au0828-add-support-for-another-usb-id-for-hauppauge-hvr950q.patch [moved from queue-2.6.26/dvb-au0828-add-support-for-another-usb-id-for-hauppauge-hvr950q.patch with 100% similarity]
review-2.6.26/fbcon_set_all_vcs-fix-kernel-crash-when-switching-the-rotated-consoles.patch [moved from queue-2.6.26/fbcon_set_all_vcs-fix-kernel-crash-when-switching-the-rotated-consoles.patch with 100% similarity]
review-2.6.26/hwmon-prevent-power-off-on-shuttle-sn68pt.patch [moved from queue-2.6.26/hwmon-prevent-power-off-on-shuttle-sn68pt.patch with 100% similarity]
review-2.6.26/libata-always-do-follow-up-srst-if-hardreset-returned-eagain.patch [moved from queue-2.6.26/libata-always-do-follow-up-srst-if-hardreset-returned-eagain.patch with 100% similarity]
review-2.6.26/libata-fix-eh-action-overwriting-in-ata_eh_reset.patch [moved from queue-2.6.26/libata-fix-eh-action-overwriting-in-ata_eh_reset.patch with 100% similarity]
review-2.6.26/libata-lba28-lba48-off-by-one-bug-in-ata.h.patch [moved from queue-2.6.26/libata-lba28-lba48-off-by-one-bug-in-ata.h.patch with 100% similarity]
review-2.6.26/mbox [new file with mode: 0644]
review-2.6.26/modules-fix-module-notes-kobject-leak.patch [moved from queue-2.6.26/modules-fix-module-notes-kobject-leak.patch with 100% similarity]
review-2.6.26/pci-disable-aspm-on-pre-1.1-pcie-devices.patch [moved from queue-2.6.26/pci-disable-aspm-on-pre-1.1-pcie-devices.patch with 100% similarity]
review-2.6.26/pci-disable-aspm-per-acpi-fadt-setting.patch [moved from queue-2.6.26/pci-disable-aspm-per-acpi-fadt-setting.patch with 100% similarity]
review-2.6.26/sched_rt.c-resch-needed-in-rt_rq_enqueue-for-the-root-rt_rq.patch [moved from queue-2.6.26/sched_rt.c-resch-needed-in-rt_rq_enqueue-for-the-root-rt_rq.patch with 100% similarity]
review-2.6.26/series [moved from queue-2.6.26/series with 100% similarity]
review-2.6.26/tty-termios-locking-sort-out-real_tty-confusions-and-lock-reads.patch [moved from queue-2.6.26/tty-termios-locking-sort-out-real_tty-confusions-and-lock-reads.patch with 100% similarity]
review-2.6.26/v4l-bttv-prevent-null-pointer-dereference-in-radio_open.patch [moved from queue-2.6.26/v4l-bttv-prevent-null-pointer-dereference-in-radio_open.patch with 100% similarity]
review-2.6.26/v4l-dvb-fix-buffer-overflow-in-uvc-video.patch [moved from queue-2.6.26/v4l-dvb-fix-buffer-overflow-in-uvc-video.patch with 100% similarity]
review-2.6.26/v4l-dvb-uvcvideo-don-t-use-stack-based-buffers-for-usb-transfers.patch [moved from queue-2.6.26/v4l-dvb-uvcvideo-don-t-use-stack-based-buffers-for-usb-transfers.patch with 100% similarity]
review-2.6.26/v4l-dvb-uvcvideo-return-sensible-min-and-max-values-when-querying-a-boolean-control.patch [moved from queue-2.6.26/v4l-dvb-uvcvideo-return-sensible-min-and-max-values-when-querying-a-boolean-control.patch with 100% similarity]
review-2.6.26/v4l-zr36067-fix-rgbr-pixel-format.patch [moved from queue-2.6.26/v4l-zr36067-fix-rgbr-pixel-format.patch with 100% similarity]
review-2.6.26/x86-avoid-dereferencing-beyond-stack-thread_size.patch [moved from queue-2.6.26/x86-avoid-dereferencing-beyond-stack-thread_size.patch with 100% similarity]
review-2.6.26/x86-early_ioremap-fix-fencepost-error.patch [moved from queue-2.6.26/x86-early_ioremap-fix-fencepost-error.patch with 100% similarity]
review-2.6.26/x86-improve-up-kernel-when-cpu-hotplug-and-smp-is-enabled.patch [moved from queue-2.6.26/x86-improve-up-kernel-when-cpu-hotplug-and-smp-is-enabled.patch with 100% similarity]
review-2.6.26/x86-reserve-first_device_vector-in-used_vectors-bitmap.patch [moved from queue-2.6.26/x86-reserve-first_device_vector-in-used_vectors-bitmap.patch with 100% similarity]

diff --git a/review-2.6.26/mbox b/review-2.6.26/mbox
new file mode 100644 (file)
index 0000000..70a7825
--- /dev/null
@@ -0,0 +1,2761 @@
+From gregkh@mini.kroah.org Sat Oct 18 11:40:21 2008
+Message-Id: <20081018184021.309694769@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:54 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Stefan Bader <stefan.bader@canonical.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 01/26] x86: Reserve FIRST_DEVICE_VECTOR in used_vectors bitmap.
+Content-Disposition: inline; filename=x86-reserve-first_device_vector-in-used_vectors-bitmap.patch
+Content-Length: 1500
+Lines: 45
+
+2.6.26-stable review patch.  If anyone has any objections, please let us
+know.
+
+------------------
+
+From: Stefan Bader <stefan.bader@canonical.com>
+
+Not in upstream above 2.6.27 due to change in the way this code works
+(has been fixed differently there.)
+
+Someone from the community found out, that after repeatedly unloading
+and loading a device driver that uses MSI IRQs, the system eventually
+assigned the vector initially reserved for IRQ0 to the device driver.
+
+The reason for this is, that although IRQ0 is tied to the
+FIRST_DEVICE_VECTOR when declaring the irq_vector table, the
+corresponding bit in the used_vectors map is not set. So, if vectors are
+released and assigned often enough, the vector will get assigned to
+another interrupt. This happens more often with MSI interrupts as those
+are exclusively using a vector.
+
+Fix this by setting the bit for the FIRST_DEVICE_VECTOR in the bitmap.
+
+Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
+Acked-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/io_apic_32.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/arch/x86/kernel/io_apic_32.c
++++ b/arch/x86/kernel/io_apic_32.c
+@@ -2264,6 +2264,9 @@ void __init setup_IO_APIC(void)
+       for (i = FIRST_SYSTEM_VECTOR; i < NR_VECTORS; i++)
+               set_bit(i, used_vectors);
++      /* Mark FIRST_DEVICE_VECTOR which is assigned to IRQ0 as used. */
++      set_bit(FIRST_DEVICE_VECTOR, used_vectors);
++
+       enable_IO_APIC();
+       if (acpi_ioapic)
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:21 2008
+Message-Id: <20081018184021.710542851@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:55 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Thomas Gleixner <tglx@linutronix.de>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 02/26] x86: improve UP kernel when CPU-hotplug and SMP is enabled
+Content-Disposition: inline; filename=x86-improve-up-kernel-when-cpu-hotplug-and-smp-is-enabled.patch
+Content-Length: 1080
+Lines: 35
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Thomas Gleixner <tglx@linutronix.de>
+
+commit 649c6653fa94ec8f3ea32b19c97b790ec4e8e4ac upstream
+
+num_possible_cpus() can be > 1 when disabled CPUs have been accounted.
+
+Disabled CPUs are not in the cpu_present_map, so we can use
+num_present_cpus() as a safe indicator to switch to UP alternatives.
+
+Reported-by: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/alternative.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/alternative.c
++++ b/arch/x86/kernel/alternative.c
+@@ -454,7 +454,7 @@ void __init alternative_instructions(voi
+                                           _text, _etext);
+               /* Only switch to UP mode if we don't immediately boot others */
+-              if (num_possible_cpus() == 1 || setup_max_cpus <= 1)
++              if (num_present_cpus() == 1 || setup_max_cpus <= 1)
+                       alternatives_smp_switch(0);
+       }
+ #endif
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:22 2008
+Message-Id: <20081018184021.865738624@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:56 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Cox <alan@rehat.com>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 03/26] x86, early_ioremap: fix fencepost error
+Content-Disposition: inline; filename=x86-early_ioremap-fix-fencepost-error.patch
+Content-Length: 1224
+Lines: 45
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Alan Cox <alan@redhat.com>
+
+commit c613ec1a7ff3714da11c7c48a13bab03beb5c376 upstream
+
+The x86 implementation of early_ioremap has an off by one error. If we get
+an object which ends on the first byte of a page we undermap by one page and
+this causes a crash on boot with the ASUS P5QL whose DMI table happens to fit
+this alignment.
+
+The size computation is currently
+
+       last_addr = phys_addr + size - 1;
+       npages = (PAGE_ALIGN(last_addr) - phys_addr)
+
+(Consider a request for 1 byte at alignment 0...)
+
+Closes #11693
+
+Debugging work by Ian Campbell/Felix Geyer
+
+Signed-off-by: Alan Cox <alan@rehat.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/mm/ioremap.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/x86/mm/ioremap.c
++++ b/arch/x86/mm/ioremap.c
+@@ -582,7 +582,7 @@ void __init *early_ioremap(unsigned long
+        */
+       offset = phys_addr & ~PAGE_MASK;
+       phys_addr &= PAGE_MASK;
+-      size = PAGE_ALIGN(last_addr) - phys_addr;
++      size = PAGE_ALIGN(last_addr + 1) - phys_addr;
+       /*
+        * Mappings have to fit in the FIX_BTMAP area.
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:22 2008
+Message-Id: <20081018184022.088167034@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:57 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alan Cox <alan@redhat.com>
+Subject: [patch 04/26] tty: Termios locking - sort out real_tty confusions and lock reads
+Content-Disposition: inline; filename=tty-termios-locking-sort-out-real_tty-confusions-and-lock-reads.patch
+Content-Length: 905
+Lines: 34
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Alan Cox <alan@redhat.com>
+
+commit 8f520021837d45c47d0ab57e7271f8d88bf7f3a4 upstream
+
+(only the tty_io.c portion of this commit)
+
+This moves us towards sanity and should mean our termios locking is now
+complete and comprehensive.
+
+Signed-off-by: Alan Cox <alan@redhat.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/tty_io.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/char/tty_io.c
++++ b/drivers/char/tty_io.c
+@@ -3474,7 +3474,7 @@ long tty_ioctl(struct file *file, unsign
+       case TIOCSTI:
+               return tiocsti(tty, p);
+       case TIOCGWINSZ:
+-              return tiocgwinsz(tty, p);
++              return tiocgwinsz(real_tty, p);
+       case TIOCSWINSZ:
+               return tiocswinsz(tty, real_tty, p);
+       case TIOCCONS:
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:22 2008
+Message-Id: <20081018184022.288635320@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:58 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dario Faggioli <raistlin@linux.it>,
+ Michael Trimarchi <trimarchimichael@yahoo.it>,
+ Peter Zijlstra <a.p.zijlstra@chello.nl>,
+ Ingo Molnar <mingo@elte.hu>
+Subject: [patch 05/26] sched_rt.c: resch needed in rt_rq_enqueue() for the root rt_rq
+Content-Disposition: inline; filename=sched_rt.c-resch-needed-in-rt_rq_enqueue-for-the-root-rt_rq.patch
+Content-Length: 2359
+Lines: 65
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Dario Faggioli <raistlin@linux.it>
+
+commit f6121f4f8708195e88cbdf8dd8d171b226b3f858 upstream
+
+While working on the new version of the code for SCHED_SPORADIC I
+noticed something strange in the present throttling mechanism. More
+specifically in the throttling timer handler in sched_rt.c
+(do_sched_rt_period_timer()) and in rt_rq_enqueue().
+
+The problem is that, when unthrottling a runqueue, rt_rq_enqueue() only
+asks for rescheduling if the runqueue has a sched_entity associated to
+it (i.e., rt_rq->rt_se != NULL).
+Now, if the runqueue is the root rq (which has a rt_se = NULL)
+rescheduling does not take place, and it is delayed to some undefined
+instant in the future.
+
+This imply some random bandwidth usage by the RT tasks under throttling.
+For instance, setting rt_runtime_us/rt_period_us = 950ms/1000ms an RT
+task will get less than 95%. In our tests we got something varying
+between 70% to 95%.
+Using smaller time values, e.g., 95ms/100ms, things are even worse, and
+I can see values also going down to 20-25%!!
+
+The tests we performed are simply running 'yes' as a SCHED_FIFO task,
+and checking the CPU usage with top, but we can investigate thoroughly
+if you think it is needed.
+
+Things go much better, for us, with the attached patch... Don't know if
+it is the best approach, but it solved the issue for us.
+
+Signed-off-by: Dario Faggioli <raistlin@linux.it>
+Signed-off-by: Michael Trimarchi <trimarchimichael@yahoo.it>
+Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/sched_rt.c |    8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+--- a/kernel/sched_rt.c
++++ b/kernel/sched_rt.c
+@@ -96,12 +96,12 @@ static void dequeue_rt_entity(struct sch
+ static void sched_rt_rq_enqueue(struct rt_rq *rt_rq)
+ {
++      struct task_struct *curr = rq_of_rt_rq(rt_rq)->curr;
+       struct sched_rt_entity *rt_se = rt_rq->rt_se;
+-      if (rt_se && !on_rt_rq(rt_se) && rt_rq->rt_nr_running) {
+-              struct task_struct *curr = rq_of_rt_rq(rt_rq)->curr;
+-
+-              enqueue_rt_entity(rt_se);
++      if (rt_rq->rt_nr_running) {
++              if (rt_se && !on_rt_rq(rt_se))
++                      enqueue_rt_entity(rt_se);
+               if (rt_rq->highest_prio < curr->prio)
+                       resched_task(curr);
+       }
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:22 2008
+Message-Id: <20081018184022.566972441@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:59 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jeff Layton <jlayton@redhat.com>,
+ Steve French <sfrench@us.ibm.com>
+Subject: [patch 06/26] CIFS: make sure we have the right resume info before calling CIFSFindNext
+Content-Disposition: inline; filename=cifs-make-sure-we-have-the-right-resume-info-before-calling-cifsfindnext.patch
+Content-Length: 7818
+Lines: 214
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Steve French <sfrench@us.ibm.com>
+
+commit 0752f1522a9120f731232919f7ad904e9e22b8ce upstream
+
+When we do a seekdir() or equivalent, we usually end up doing a
+FindFirst call and then call FindNext until we get to the offset that we
+want. The problem is that when we call FindNext, the code usually
+doesn't have the proper info (mostly, the filename of the entry from the
+last search) to resume the search.
+
+Add a "last_entry" field to the cifs_search_info that points to the last
+entry in the search. We calculate this pointer by using the
+LastNameOffset field from the search parms that are returned. We then
+use that info to do a cifs_save_resume_key before we call CIFSFindNext.
+
+This patch allows CIFS to reliably pass the "telldir" connectathon test.
+
+Signed-off-by: Jeff Layton <jlayton@redhat.com>
+Signed-off-by: Steve French <sfrench@us.ibm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/cifs/cifsglob.h |    1 
+ fs/cifs/cifssmb.c  |    4 +
+ fs/cifs/readdir.c  |  128 ++++++++++++++++++++++++++---------------------------
+ 3 files changed, 70 insertions(+), 63 deletions(-)
+
+--- a/fs/cifs/cifsglob.h
++++ b/fs/cifs/cifsglob.h
+@@ -308,6 +308,7 @@ struct cifs_search_info {
+       __u32 resume_key;
+       char *ntwrk_buf_start;
+       char *srch_entries_start;
++      char *last_entry;
+       char *presume_name;
+       unsigned int resume_name_len;
+       bool endOfSearch:1;
+--- a/fs/cifs/cifssmb.c
++++ b/fs/cifs/cifssmb.c
+@@ -3638,6 +3638,8 @@ findFirstRetry:
+                                       le16_to_cpu(parms->SearchCount);
+                       psrch_inf->index_of_last_entry = 2 /* skip . and .. */ +
+                               psrch_inf->entries_in_buffer;
++                      psrch_inf->last_entry = psrch_inf->srch_entries_start +
++                                      le16_to_cpu(parms->LastNameOffset);
+                       *pnetfid = parms->SearchHandle;
+               } else {
+                       cifs_buf_release(pSMB);
+@@ -3753,6 +3755,8 @@ int CIFSFindNext(const int xid, struct c
+                                               le16_to_cpu(parms->SearchCount);
+                       psrch_inf->index_of_last_entry +=
+                               psrch_inf->entries_in_buffer;
++                      psrch_inf->last_entry = psrch_inf->srch_entries_start +
++                                      le16_to_cpu(parms->LastNameOffset);
+ /*  cFYI(1,("fnxt2 entries in buf %d index_of_last %d",
+           psrch_inf->entries_in_buffer, psrch_inf->index_of_last_entry)); */
+--- a/fs/cifs/readdir.c
++++ b/fs/cifs/readdir.c
+@@ -640,6 +640,70 @@ static int is_dir_changed(struct file *f
+ }
++static int cifs_save_resume_key(const char *current_entry,
++      struct cifsFileInfo *cifsFile)
++{
++      int rc = 0;
++      unsigned int len = 0;
++      __u16 level;
++      char *filename;
++
++      if ((cifsFile == NULL) || (current_entry == NULL))
++              return -EINVAL;
++
++      level = cifsFile->srch_inf.info_level;
++
++      if (level == SMB_FIND_FILE_UNIX) {
++              FILE_UNIX_INFO *pFindData = (FILE_UNIX_INFO *)current_entry;
++
++              filename = &pFindData->FileName[0];
++              if (cifsFile->srch_inf.unicode) {
++                      len = cifs_unicode_bytelen(filename);
++              } else {
++                      /* BB should we make this strnlen of PATH_MAX? */
++                      len = strnlen(filename, PATH_MAX);
++              }
++              cifsFile->srch_inf.resume_key = pFindData->ResumeKey;
++      } else if (level == SMB_FIND_FILE_DIRECTORY_INFO) {
++              FILE_DIRECTORY_INFO *pFindData =
++                      (FILE_DIRECTORY_INFO *)current_entry;
++              filename = &pFindData->FileName[0];
++              len = le32_to_cpu(pFindData->FileNameLength);
++              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
++      } else if (level == SMB_FIND_FILE_FULL_DIRECTORY_INFO) {
++              FILE_FULL_DIRECTORY_INFO *pFindData =
++                      (FILE_FULL_DIRECTORY_INFO *)current_entry;
++              filename = &pFindData->FileName[0];
++              len = le32_to_cpu(pFindData->FileNameLength);
++              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
++      } else if (level == SMB_FIND_FILE_ID_FULL_DIR_INFO) {
++              SEARCH_ID_FULL_DIR_INFO *pFindData =
++                      (SEARCH_ID_FULL_DIR_INFO *)current_entry;
++              filename = &pFindData->FileName[0];
++              len = le32_to_cpu(pFindData->FileNameLength);
++              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
++      } else if (level == SMB_FIND_FILE_BOTH_DIRECTORY_INFO) {
++              FILE_BOTH_DIRECTORY_INFO *pFindData =
++                      (FILE_BOTH_DIRECTORY_INFO *)current_entry;
++              filename = &pFindData->FileName[0];
++              len = le32_to_cpu(pFindData->FileNameLength);
++              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
++      } else if (level == SMB_FIND_FILE_INFO_STANDARD) {
++              FIND_FILE_STANDARD_INFO *pFindData =
++                      (FIND_FILE_STANDARD_INFO *)current_entry;
++              filename = &pFindData->FileName[0];
++              /* one byte length, no name conversion */
++              len = (unsigned int)pFindData->FileNameLength;
++              cifsFile->srch_inf.resume_key = pFindData->ResumeKey;
++      } else {
++              cFYI(1, ("Unknown findfirst level %d", level));
++              return -EINVAL;
++      }
++      cifsFile->srch_inf.resume_name_len = len;
++      cifsFile->srch_inf.presume_name = filename;
++      return rc;
++}
++
+ /* find the corresponding entry in the search */
+ /* Note that the SMB server returns search entries for . and .. which
+    complicates logic here if we choose to parse for them and we do not
+@@ -702,6 +766,7 @@ static int find_cifs_entry(const int xid
+       while ((index_to_find >= cifsFile->srch_inf.index_of_last_entry) &&
+             (rc == 0) && !cifsFile->srch_inf.endOfSearch) {
+               cFYI(1, ("calling findnext2"));
++              cifs_save_resume_key(cifsFile->srch_inf.last_entry, cifsFile);
+               rc = CIFSFindNext(xid, pTcon, cifsFile->netfid,
+                                 &cifsFile->srch_inf);
+               if (rc)
+@@ -918,69 +983,6 @@ static int cifs_filldir(char *pfindEntry
+       return rc;
+ }
+-static int cifs_save_resume_key(const char *current_entry,
+-      struct cifsFileInfo *cifsFile)
+-{
+-      int rc = 0;
+-      unsigned int len = 0;
+-      __u16 level;
+-      char *filename;
+-
+-      if ((cifsFile == NULL) || (current_entry == NULL))
+-              return -EINVAL;
+-
+-      level = cifsFile->srch_inf.info_level;
+-
+-      if (level == SMB_FIND_FILE_UNIX) {
+-              FILE_UNIX_INFO *pFindData = (FILE_UNIX_INFO *)current_entry;
+-
+-              filename = &pFindData->FileName[0];
+-              if (cifsFile->srch_inf.unicode) {
+-                      len = cifs_unicode_bytelen(filename);
+-              } else {
+-                      /* BB should we make this strnlen of PATH_MAX? */
+-                      len = strnlen(filename, PATH_MAX);
+-              }
+-              cifsFile->srch_inf.resume_key = pFindData->ResumeKey;
+-      } else if (level == SMB_FIND_FILE_DIRECTORY_INFO) {
+-              FILE_DIRECTORY_INFO *pFindData =
+-                      (FILE_DIRECTORY_INFO *)current_entry;
+-              filename = &pFindData->FileName[0];
+-              len = le32_to_cpu(pFindData->FileNameLength);
+-              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
+-      } else if (level == SMB_FIND_FILE_FULL_DIRECTORY_INFO) {
+-              FILE_FULL_DIRECTORY_INFO *pFindData =
+-                      (FILE_FULL_DIRECTORY_INFO *)current_entry;
+-              filename = &pFindData->FileName[0];
+-              len = le32_to_cpu(pFindData->FileNameLength);
+-              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
+-      } else if (level == SMB_FIND_FILE_ID_FULL_DIR_INFO) {
+-              SEARCH_ID_FULL_DIR_INFO *pFindData =
+-                      (SEARCH_ID_FULL_DIR_INFO *)current_entry;
+-              filename = &pFindData->FileName[0];
+-              len = le32_to_cpu(pFindData->FileNameLength);
+-              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
+-      } else if (level == SMB_FIND_FILE_BOTH_DIRECTORY_INFO) {
+-              FILE_BOTH_DIRECTORY_INFO *pFindData =
+-                      (FILE_BOTH_DIRECTORY_INFO *)current_entry;
+-              filename = &pFindData->FileName[0];
+-              len = le32_to_cpu(pFindData->FileNameLength);
+-              cifsFile->srch_inf.resume_key = pFindData->FileIndex;
+-      } else if (level == SMB_FIND_FILE_INFO_STANDARD) {
+-              FIND_FILE_STANDARD_INFO *pFindData =
+-                      (FIND_FILE_STANDARD_INFO *)current_entry;
+-              filename = &pFindData->FileName[0];
+-              /* one byte length, no name conversion */
+-              len = (unsigned int)pFindData->FileNameLength;
+-              cifsFile->srch_inf.resume_key = pFindData->ResumeKey;
+-      } else {
+-              cFYI(1, ("Unknown findfirst level %d", level));
+-              return -EINVAL;
+-      }
+-      cifsFile->srch_inf.resume_name_len = len;
+-      cifsFile->srch_inf.presume_name = filename;
+-      return rc;
+-}
+ int cifs_readdir(struct file *file, void *direntry, filldir_t filldir)
+ {
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:23 2008
+Message-Id: <20081018184022.798493974@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:00 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Larry Finger <Larry.Finger@lwfinger.net>,
+ "John W. Linville" <linville@tuxdriver.com>
+Subject: [patch 07/26] b43legacy: Fix failure in rate-adjustment mechanism
+Content-Disposition: inline; filename=b43legacy-fix-failure-in-rate-adjustment-mechanism.patch
+Content-Length: 1198
+Lines: 35
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Larry Finger <Larry.Finger@lwfinger.net>
+
+commit c6a2afdacccd56cc0be8e9a7977f0ed1509069f6 upstream
+Date: Sat, 6 Sep 2008 16:51:22 -0500
+Subject: [patch 07/26] b43legacy: Fix failure in rate-adjustment mechanism
+
+A coding error present since b43legacy was incorporated into the
+kernel has prevented the driver from using the rate-setting mechanism
+of mac80211. The driver has been forced to remain at a 1 Mb/s rate.
+
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/b43legacy/xmit.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/b43legacy/xmit.c
++++ b/drivers/net/wireless/b43legacy/xmit.c
+@@ -626,7 +626,7 @@ void b43legacy_handle_hwtxstatus(struct 
+       tmp = hw->count;
+       status.frame_count = (tmp >> 4);
+       status.rts_count = (tmp & 0x0F);
+-      tmp = hw->flags;
++      tmp = hw->flags << 1;
+       status.supp_reason = ((tmp & 0x1C) >> 2);
+       status.pm_indicated = !!(tmp & 0x80);
+       status.intermediate = !!(tmp & 0x40);
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:23 2008
+Message-Id: <20081018184023.144650609@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:01 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Alexey Dobriyan <adobriyan@gmail.com>
+Subject: [patch 08/26] modules: fix module "notes" kobject leak
+Content-Disposition: inline; filename=modules-fix-module-notes-kobject-leak.patch
+Content-Length: 1909
+Lines: 58
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Alexey Dobriyan <adobriyan@gmail.com>
+
+commit e94320939f44e0cbaccc3f259a5778abced4949c upstream
+
+Fix "notes" kobject leak
+
+It happens every rmmod if KALLSYMS=y and SYSFS=y.
+
+       # modprobe foo
+
+kobject: 'foo' (ffffffffa00743d0): kobject_add_internal: parent: 'module', set: 'module'
+kobject: 'holders' (ffff88017e7c5770): kobject_add_internal: parent: 'foo', set: '<NULL>'
+kobject: 'foo' (ffffffffa00743d0): kobject_uevent_env
+kobject: 'foo' (ffffffffa00743d0): fill_kobj_path: path = '/module/foo'
+kobject: 'notes' (ffff88017fa9b668): kobject_add_internal: parent: 'foo', set: '<NULL>'
+         ^^^^^
+
+       # rmmod foo
+
+kobject: 'holders' (ffff88017e7c5770): kobject_cleanup
+kobject: 'holders' (ffff88017e7c5770): auto cleanup kobject_del
+kobject: 'holders' (ffff88017e7c5770): calling ktype release
+kobject: (ffff88017e7c5770): dynamic_kobj_release
+kobject: 'holders': free name
+kobject: 'foo' (ffffffffa00743d0): kobject_cleanup
+kobject: 'foo' (ffffffffa00743d0): does not have a release() function, it is broken and must be fixed.
+kobject: 'foo' (ffffffffa00743d0): auto cleanup 'remove' event
+kobject: 'foo' (ffffffffa00743d0): kobject_uevent_env
+kobject: 'foo' (ffffffffa00743d0): fill_kobj_path: path = '/module/foo'
+kobject: 'foo' (ffffffffa00743d0): auto cleanup kobject_del
+kobject: 'foo': free name
+
+       [whooops]
+
+Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ kernel/module.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/module.c
++++ b/kernel/module.c
+@@ -1143,7 +1143,7 @@ static void free_notes_attrs(struct modu
+               while (i-- > 0)
+                       sysfs_remove_bin_file(notes_attrs->dir,
+                                             &notes_attrs->attrs[i]);
+-              kobject_del(notes_attrs->dir);
++              kobject_put(notes_attrs->dir);
+       }
+       kfree(notes_attrs);
+ }
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:23 2008
+Message-Id: <20081018184023.529535839@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:02 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org,
+ jejb@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Oleg Nesterov <oleg@tv-sign.ru>,
+ Krzysztof Helt <krzysztof.h1@poczta.fm>
+Subject: [patch 09/26] fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles
+Content-Disposition: inline; filename=fbcon_set_all_vcs-fix-kernel-crash-when-switching-the-rotated-consoles.patch
+Content-Length: 4014
+Lines: 89
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Oleg Nesterov <oleg@tv-sign.ru>
+
+commit 232fb69a53a5ec3f22a8104d447abe4806848a8f upstream
+
+echo 3 >> /sys/class/graphics/fbcon/rotate_all, then switch to another
+console. Result:
+
+       BUG: unable to handle kernel paging request at ffffc20005d00000
+       IP: [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
+       PGD 7e228067 PUD 7e229067 PMD 7bc1f067 PTE 0
+       Oops: 0002 [1] SMP
+       CPU 1
+       Modules linked in: [...a lot...]
+       Pid: 10, comm: events/1 Not tainted 2.6.26.5-45.fc9.x86_64 #1
+       RIP: 0010:[bitfill_aligned+149/265]  [bitfill_aligned+149/265] bitfill_aligned+0x95/0x109
+       RSP: 0018:ffff81007d811bc8  EFLAGS: 00010216
+       RAX: ffffc20005d00000 RBX: 0000000000000000 RCX: 0000000000000400
+       RDX: 0000000000000000 RSI: ffffc20005d00000 RDI: ffffffffffffffff
+       RBP: ffff81007d811be0 R08: 0000000000000400 R09: 0000000000000040
+       R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000010000
+       R13: ffffffff811632f0 R14: 0000000000000006 R15: ffff81007cb85400
+       FS:  0000000000000000(0000) GS:ffff81007e004780(0000) knlGS:0000000000000000
+       CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
+       CR2: ffffc20005d00000 CR3: 0000000000201000 CR4: 00000000000006e0
+       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
+       DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
+       Process events/1 (pid: 10, threadinfo ffff81007d810000, task ffff81007d808000)
+       Stack:  ffff81007c9d75a0 0000000000000000 0000000000000000 ffff81007d811c80
+        ffffffff81163a61 ffff810000000000 ffffffff8115f9c8 0000001000000000
+        0000000100aaaaaa 000000007cd0d4a0 fffffd8a00000800 0001000000000000
+       Call Trace:
+        [cfb_fillrect+523/798] cfb_fillrect+0x20b/0x31e
+        [soft_cursor+416/436] ? soft_cursor+0x1a0/0x1b4
+        [ccw_clear_margins+205/263] ccw_clear_margins+0xcd/0x107
+        [fbcon_clear_margins+59/61] fbcon_clear_margins+0x3b/0x3d
+        [fbcon_switch+1291/1466] fbcon_switch+0x50b/0x5ba
+        [redraw_screen+261/481] redraw_screen+0x105/0x1e1
+        [ccw_cursor+0/1869] ? ccw_cursor+0x0/0x74d
+        [complete_change_console+48/190] complete_change_console+0x30/0xbe
+        [change_console+115/120] change_console+0x73/0x78
+        [console_callback+0/292] ? console_callback+0x0/0x124
+        [console_callback+97/292] console_callback+0x61/0x124
+        [schedule_delayed_work+25/30] ? schedule_delayed_work+0x19/0x1e
+        [run_workqueue+139/282] run_workqueue+0x8b/0x11a
+        [worker_thread+221/238] worker_thread+0xdd/0xee
+        [autoremove_wake_function+0/56] ? autoremove_wake_function+0x0/0x38
+        [worker_thread+0/238] ? worker_thread+0x0/0xee
+        [kthread+73/118] kthread+0x49/0x76
+        [child_rip+10/18] child_rip+0xa/0x12
+        [kthread+0/118] ? kthread+0x0/0x76
+        [child_rip+0/18] ? child_rip+0x0/0x12
+
+Because fbcon_set_all_vcs()->FBCON_SWAP() uses display->rotate == 0 instead
+of fbcon_ops->rotate, and vc_resize() has no effect because it is called with
+new_cols/rows == ->vc_cols/rows.
+
+Tested on 2.6.26.5-45.fc9.x86_64, but
+http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git seems to
+have the same problem.
+
+Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru>
+Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/video/console/fbcon.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/video/console/fbcon.c
++++ b/drivers/video/console/fbcon.c
+@@ -2990,8 +2990,8 @@ static void fbcon_set_all_vcs(struct fb_
+               p = &fb_display[vc->vc_num];
+               set_blitting_type(vc, info);
+               var_to_display(p, &info->var, info);
+-              cols = FBCON_SWAP(p->rotate, info->var.xres, info->var.yres);
+-              rows = FBCON_SWAP(p->rotate, info->var.yres, info->var.xres);
++              cols = FBCON_SWAP(ops->rotate, info->var.xres, info->var.yres);
++              rows = FBCON_SWAP(ops->rotate, info->var.yres, info->var.xres);
+               cols /= vc->vc_font.width;
+               rows /= vc->vc_font.height;
+               vc_resize(vc, cols, rows);
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:24 2008
+Message-Id: <20081018184023.988098869@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:03 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tejun Heo <tj@kernel.org>,
+ Jeff Garzik <jgarzik@redhat.com>
+Subject: [patch 10/26] libata: always do follow-up SRST if hardreset returned -EAGAIN
+Content-Disposition: inline; filename=libata-always-do-follow-up-srst-if-hardreset-returned-eagain.patch
+Content-Length: 2483
+Lines: 79
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Tejun Heo <tj@kernel.org>
+
+commit 5dbfc9cb59d4ad75199949d7dd8a8c6d7bc518df upstream
+
+As an optimization, follow-up SRST used to be skipped if
+classification wasn't requested even when hardreset requested it via
+-EAGAIN.  However, some hardresets can't wait for device readiness and
+skipping SRST can cause timeout or other failures during revalidation.
+Always perform follow-up SRST if hardreset returns -EAGAIN.  This
+makes reset paths more predictable and thus less error-prone.
+
+While at it, move hardreset error checking such that it's done right
+after hardreset is finished.  This simplifies followup SRST condition
+check a bit and makes the reset path easier to modify.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c |   20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2050,18 +2050,12 @@ static int ata_do_reset(struct ata_link 
+ }
+ static int ata_eh_followup_srst_needed(struct ata_link *link,
+-                                     int rc, int classify,
+-                                     const unsigned int *classes)
++                                     int rc, const unsigned int *classes)
+ {
+       if ((link->flags & ATA_LFLAG_NO_SRST) || ata_link_offline(link))
+               return 0;
+-      if (rc == -EAGAIN) {
+-              if (classify)
+-                      return 1;
+-              rc = 0;
+-      }
+-      if (rc != 0)
+-              return 0;
++      if (rc == -EAGAIN)
++              return 1;
+       if (sata_pmp_supported(link->ap) && ata_is_host_link(link))
+               return 1;
+       return 0;
+@@ -2174,9 +2168,11 @@ int ata_eh_reset(struct ata_link *link, 
+                       ehc->i.flags |= ATA_EHI_DID_SOFTRESET;
+               rc = ata_do_reset(link, reset, classes, deadline);
++              if (rc && rc != -EAGAIN)
++                      goto fail;
+               if (reset == hardreset &&
+-                  ata_eh_followup_srst_needed(link, rc, classify, classes)) {
++                  ata_eh_followup_srst_needed(link, rc, classes)) {
+                       /* okay, let's do follow-up softreset */
+                       reset = softreset;
+@@ -2191,10 +2187,6 @@ int ata_eh_reset(struct ata_link *link, 
+                       ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
+                       rc = ata_do_reset(link, reset, classes, deadline);
+               }
+-
+-              /* -EAGAIN can happen if we skipped followup SRST */
+-              if (rc && rc != -EAGAIN)
+-                      goto fail;
+       } else {
+               if (verbose)
+                       ata_link_printk(link, KERN_INFO, "no reset method "
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:24 2008
+Message-Id: <20081018184024.464602796@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:04 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tejun Heo <tj@kernel.org>,
+ Jeff Garzik <jgarzik@redhat.com>
+Subject: [patch 11/26] libata: fix EH action overwriting in ata_eh_reset()
+Content-Disposition: inline; filename=libata-fix-eh-action-overwriting-in-ata_eh_reset.patch
+Content-Length: 1151
+Lines: 39
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Tejun Heo <tj@kernel.org>
+
+Commit a674050e068a2919908730279f0b731ae6d2e005 upstream
+
+ehc->i.action got accidentally overwritten to ATA_EH_HARD/SOFTRESET in
+ata_eh_reset().  The original intention was to clear reset action
+which wasn't selected.  This can cause unexpected behavior when other
+EH actions are scheduled together with reset.  Fix it.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/ata/libata-eh.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/ata/libata-eh.c
++++ b/drivers/ata/libata-eh.c
+@@ -2112,10 +2112,10 @@ int ata_eh_reset(struct ata_link *link, 
+       ehc->i.action &= ~ATA_EH_RESET;
+       if (hardreset) {
+               reset = hardreset;
+-              ehc->i.action = ATA_EH_HARDRESET;
++              ehc->i.action |= ATA_EH_HARDRESET;
+       } else if (softreset) {
+               reset = softreset;
+-              ehc->i.action = ATA_EH_SOFTRESET;
++              ehc->i.action |= ATA_EH_SOFTRESET;
+       }
+       if (prereset) {
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:25 2008
+Message-Id: <20081018184024.791340622@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:05 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Tejun Heo <tj@kernel.org>,
+ Taisuke Yamada <tai@rakugaki.org>,
+ Jeff Garzik <jgarzik@redhat.com>
+Subject: [patch 12/26] libata: LBA28/LBA48 off-by-one bug in ata.h
+Content-Disposition: inline; filename=libata-lba28-lba48-off-by-one-bug-in-ata.h.patch
+Content-Length: 3373
+Lines: 91
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Taisuke Yamada <tai@rakugaki.org>
+
+commit 97b697a11b07e2ebfa69c488132596cc5eb24119 upstream
+
+I recently bought 3 HGST P7K500-series 500GB SATA drives and
+had trouble accessing the block right on the LBA28-LBA48 border.
+Here's how it fails (same for all 3 drives):
+
+  # dd if=/dev/sdc bs=512 count=1 skip=268435455 > /dev/null
+  dd: reading `/dev/sdc': Input/output error
+  0+0 records in
+  0+0 records out
+  0 bytes (0 B) copied, 0.288033 seconds, 0.0 kB/s
+  # dmesg
+  ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
+  ata1.00: BMDMA stat 0x25
+  ata1.00: cmd c8/00:08:f8:ff:ff/00:00:00:00:00/ef tag 0 dma 4096 in
+  res 51/04:08:f8:ff:ff/00:00:00:00:00/ef Emask 0x1 (device error)
+  ata1.00: status: { DRDY ERR }
+  ata1.00: error: { ABRT }
+  ata1.00: configured for UDMA/33
+  ata1: EH complete
+  ...
+
+After some investigations, it turned out this seems to be caused
+by misinterpretation of the ATA specification on LBA28 access.
+Following part is the code in question:
+
+  === include/linux/ata.h ===
+  static inline int lba_28_ok(u64 block, u32 n_block)
+  {
+    /* check the ending block number */
+    return ((block + n_block - 1) < ((u64)1 << 28)) && (n_block <= 256);
+  }
+
+HGST drive (sometimes) fails with LBA28 access of {block = 0xfffffff,
+n_block = 1}, and this behavior seems to be comformant. Other drives,
+including other HGST drives are not that strict, through.
+
+>From the ATA specification:
+(http://www.t13.org/Documents/UploadedDocuments/project/d1410r3b-ATA-ATAPI-6.pdf)
+
+  8.15.29  Word (61:60): Total number of user addressable sectors
+  This field contains a value that is one greater than the total number
+  of user addressable sectors (see 6.2). The maximum value that shall
+  be placed in this field is 0FFFFFFFh.
+
+So the driver shouldn't use the value of 0xfffffff for LBA28 request
+as this exceeds maximum user addressable sector. The logical maximum
+value for LBA28 is 0xffffffe.
+
+The obvious fix is to cut "- 1" part, and the patch attached just do
+that. I've been using the patched kernel for about a month now, and
+the same fix is also floating on the net for some time. So I believe
+this fix works reliably.
+
+Just FYI, many Windows/Intel platform users also seems to be struck
+by this, and HGST has issued a note pointing to Intel ICH8/9 driver.
+
+  "28-bit LBA command is being used to access LBAs 29-bits in length"
+http://www.hitachigst.com/hddt/knowtree.nsf/cffe836ed7c12018862565b000530c74/b531b8bce8745fb78825740f00580e23
+
+Also, *BSDs seems to have similar fix included sometime around ~2004,
+through I have not checked out exact portion of the code.
+
+Signed-off-by: Taisuke Yamada <tai@rakugaki.org>
+Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ include/linux/ata.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/ata.h
++++ b/include/linux/ata.h
+@@ -682,7 +682,7 @@ static inline int ata_ok(u8 status)
+ static inline int lba_28_ok(u64 block, u32 n_block)
+ {
+       /* check the ending block number */
+-      return ((block + n_block - 1) < ((u64)1 << 28)) && (n_block <= 256);
++      return ((block + n_block) < ((u64)1 << 28)) && (n_block <= 256);
+ }
+ static inline int lba_48_ok(u64 block, u32 n_block)
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:25 2008
+Message-Id: <20081018184025.100824159@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:06 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jean Delvare <khali@linux-fr.org>,
+ v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>,
+ Mauro Carvalho Chehab <mchehab@redhat.com>
+Subject: [patch 13/26] V4L: bttv: Prevent NULL pointer dereference in radio_open
+Content-Disposition: inline; filename=v4l-bttv-prevent-null-pointer-dereference-in-radio_open.patch
+Content-Length: 1504
+Lines: 43
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Jean Delvare <khali@linux-fr.org>
+
+(cherry picked from commit c37396c19403e249f12626187d51e92c915f2bc9)
+
+Fix the following crash in the bttv driver:
+
+BUG: unable to handle kernel NULL pointer dereference at 000000000000036c
+IP: [<ffffffffa037860a>] radio_open+0x3a/0x170 [bttv]
+
+This happens because radio_open assumes that all present bttv devices
+have a radio function. If a bttv device without radio and one with
+radio are installed on the same system, and the one without radio is
+registered first, then radio_open checks for the radio device number
+of a bttv device that has no radio function, and this breaks. All we
+have to do to fix it is to skip bttv devices without a radio function.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/bt8xx/bttv-driver.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/video/bt8xx/bttv-driver.c
++++ b/drivers/media/video/bt8xx/bttv-driver.c
+@@ -3428,7 +3428,7 @@ static int radio_open(struct inode *inod
+       dprintk("bttv: open minor=%d\n",minor);
+       for (i = 0; i < bttv_num; i++) {
+-              if (bttvs[i].radio_dev->minor == minor) {
++              if (bttvs[i].radio_dev && bttvs[i].radio_dev->minor == minor) {
+                       btv = &bttvs[i];
+                       break;
+               }
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:25 2008
+Message-Id: <20081018184025.355844350@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:07 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jean Delvare <khali@linux-fr.org>,
+ v4l-dvb maintainer list <v4l-dvb-maintainer@linuxtv.org>,
+ Trent Piepho <xyzzy@speakeasy.org>,
+ Mauro Carvalho Chehab <mchehab@infradead.org>,
+ Mauro Carvalho Chehab <mchehab@redhat.com>
+Subject: [patch 14/26] V4L: zr36067: Fix RGBR pixel format
+Content-Disposition: inline; filename=v4l-zr36067-fix-rgbr-pixel-format.patch
+Content-Length: 1142
+Lines: 36
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Jean Delvare <khali@linux-fr.org>
+
+cherry picked from commit a30ee3c747728f9151664118ffcbdeefd202c332
+
+The zr36067 driver is improperly declaring pixel format RGBP twice,
+once as "16-bit RGB LE" and once as "16-bit RGB BE". The latter is
+actually RGBR. Fix the code to properly map both pixel formats.
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Acked-by: Trent Piepho <xyzzy@speakeasy.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/zoran_driver.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/video/zoran_driver.c
++++ b/drivers/media/video/zoran_driver.c
+@@ -134,7 +134,7 @@ const struct zoran_format zoran_formats[
+       }, {
+               .name = "16-bit RGB BE",
+               ZFMT(-1,
+-                   V4L2_PIX_FMT_RGB565, V4L2_COLORSPACE_SRGB),
++                   V4L2_PIX_FMT_RGB565X, V4L2_COLORSPACE_SRGB),
+               .depth = 16,
+               .flags = ZORAN_FORMAT_CAPTURE |
+                        ZORAN_FORMAT_OVERLAY,
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:25 2008
+Message-Id: <20081018184025.549691753@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:08 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jens Axboe <ens.axboe@oracle.com>
+Subject: [patch 15/26] Dont allow splice() to files opened with O_APPEND
+Content-Disposition: inline; filename=don-t-allow-splice-to-files-opened-with-o_append.patch
+Content-Length: 1536
+Lines: 46
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit efc968d450e013049a662d22727cf132618dcb2f upstream
+
+This is debatable, but while we're debating it, let's disallow the
+combination of splice and an O_APPEND destination.
+
+It's not entirely clear what the semantics of O_APPEND should be, and
+POSIX apparently expects pwrite() to ignore O_APPEND, for example.  So
+we could make up any semantics we want, including the old ones.
+
+But Miklos convinced me that we should at least give it some thought,
+and that accepting writes at arbitrary offsets is wrong at least for
+IS_APPEND() files (which always have O_APPEND set, even if the reverse
+isn't true: you can obviously have O_APPEND set on a regular file).
+
+So disallow O_APPEND entirely for now.  I doubt anybody cares, and this
+way we have one less gray area to worry about.
+
+Reported-and-argued-for-by: Miklos Szeredi <miklos@szeredi.hu>
+Acked-by: Jens Axboe <ens.axboe@oracle.com>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/splice.c |    3 +++
+ 1 file changed, 3 insertions(+)
+
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -889,6 +889,9 @@ static long do_splice_from(struct pipe_i
+       if (unlikely(!(out->f_mode & FMODE_WRITE)))
+               return -EBADF;
++      if (unlikely(out->f_flags & O_APPEND))
++              return -EINVAL;
++
+       ret = rw_verify_area(WRITE, out, ppos, len);
+       if (unlikely(ret < 0))
+               return ret;
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:26 2008
+Message-Id: <20081018184025.810507862@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:09 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mauro Carvalho Chehab <mchehab@infradead.org>,
+ Laurent Pinchart <laurent.pinchart@skynet.be>
+Subject: [patch 16/26] V4L/DVB (8498): uvcvideo: Return sensible min and max values when querying a boolean control.
+Content-Disposition: inline; filename=v4l-dvb-uvcvideo-return-sensible-min-and-max-values-when-querying-a-boolean-control.patch
+Content-Length: 1828
+Lines: 62
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Laurent Pinchart <laurent.pinchart@skynet.be>
+
+commit 54812c77bc830e2dbcb62b4c6d8a9c7f97cfdd1b upstream
+
+[required to get the following two patches to apply]
+
+Although the V4L2 spec states that the minimum and maximum fields may not be
+valid for control types other than V4L2_CTRL_TYPE_INTEGER, it makes sense
+to set the bounds to 0 and 1 for boolean controls instead of returning
+uninitialized values.
+
+Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/uvc/uvc_ctrl.c |   13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+--- a/drivers/media/video/uvc/uvc_ctrl.c
++++ b/drivers/media/video/uvc/uvc_ctrl.c
+@@ -592,6 +592,7 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       if (ctrl == NULL)
+               return -EINVAL;
++      memset(v4l2_ctrl, 0, sizeof *v4l2_ctrl);
+       v4l2_ctrl->id = mapping->id;
+       v4l2_ctrl->type = mapping->v4l2_type;
+       strncpy(v4l2_ctrl->name, mapping->name, sizeof v4l2_ctrl->name);
+@@ -608,7 +609,8 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+               v4l2_ctrl->default_value = uvc_get_le_value(data, mapping);
+       }
+-      if (mapping->v4l2_type == V4L2_CTRL_TYPE_MENU) {
++      switch (mapping->v4l2_type) {
++      case V4L2_CTRL_TYPE_MENU:
+               v4l2_ctrl->minimum = 0;
+               v4l2_ctrl->maximum = mapping->menu_count - 1;
+               v4l2_ctrl->step = 1;
+@@ -622,6 +624,15 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+               }
+               return 0;
++
++      case V4L2_CTRL_TYPE_BOOLEAN:
++              v4l2_ctrl->minimum = 0;
++              v4l2_ctrl->maximum = 1;
++              v4l2_ctrl->step = 1;
++              return 0;
++
++      default:
++              break;
+       }
+       if (ctrl->info->flags & UVC_CONTROL_GET_MIN) {
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:26 2008
+Message-Id: <20081018184026.113844878@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:10 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mauro Carvalho Chehab <mchehab@infradead.org>,
+ Bruce Schmid <duck@freescale.com>,
+ Laurent Pinchart <laurent.pinchart@skynet.be>
+Subject: [patch 17/26] V4L/DVB (8617): uvcvideo: dont use stack-based buffers for USB transfers.
+Content-Disposition: inline; filename=v4l-dvb-uvcvideo-don-t-use-stack-based-buffers-for-usb-transfers.patch
+Content-Length: 5036
+Lines: 182
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Laurent Pinchart <laurent.pinchart@skynet.be>
+
+commit 04793dd041bbb88a39b768b714c725de2c339b51 upstream
+
+Data buffers on the stack are not allowed for USB I/O. Use dynamically
+allocated buffers instead.
+
+Signed-off-by: Bruce Schmid <duck@freescale.com>
+Signed-off-by: Laurent Pinchart <laurent.pinchart@skynet.be>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/uvc/uvc_ctrl.c  |   33 +++++++++++++++++++++------------
+ drivers/media/video/uvc/uvc_video.c |   33 ++++++++++++++++++++++-----------
+ 2 files changed, 43 insertions(+), 23 deletions(-)
+
+--- a/drivers/media/video/uvc/uvc_ctrl.c
++++ b/drivers/media/video/uvc/uvc_ctrl.c
+@@ -585,13 +585,17 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       struct uvc_control_mapping *mapping;
+       struct uvc_menu_info *menu;
+       unsigned int i;
+-      __u8 data[8];
++      __u8 *data;
+       int ret;
+       ctrl = uvc_find_control(video, v4l2_ctrl->id, &mapping);
+       if (ctrl == NULL)
+               return -EINVAL;
++      data = kmalloc(8, GFP_KERNEL);
++      if (data == NULL)
++              return -ENOMEM;
++
+       memset(v4l2_ctrl, 0, sizeof *v4l2_ctrl);
+       v4l2_ctrl->id = mapping->id;
+       v4l2_ctrl->type = mapping->v4l2_type;
+@@ -604,8 +608,8 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       if (ctrl->info->flags & UVC_CONTROL_GET_DEF) {
+               if ((ret = uvc_query_ctrl(video->dev, GET_DEF, ctrl->entity->id,
+                               video->dev->intfnum, ctrl->info->selector,
+-                              &data, ctrl->info->size)) < 0)
+-                      return ret;
++                              data, ctrl->info->size)) < 0)
++                      goto out;
+               v4l2_ctrl->default_value = uvc_get_le_value(data, mapping);
+       }
+@@ -623,13 +627,15 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+                       }
+               }
+-              return 0;
++              ret = 0;
++              goto out;
+       case V4L2_CTRL_TYPE_BOOLEAN:
+               v4l2_ctrl->minimum = 0;
+               v4l2_ctrl->maximum = 1;
+               v4l2_ctrl->step = 1;
+-              return 0;
++              ret = 0;
++              goto out;
+       default:
+               break;
+@@ -638,26 +644,29 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       if (ctrl->info->flags & UVC_CONTROL_GET_MIN) {
+               if ((ret = uvc_query_ctrl(video->dev, GET_MIN, ctrl->entity->id,
+                               video->dev->intfnum, ctrl->info->selector,
+-                              &data, ctrl->info->size)) < 0)
+-                      return ret;
++                              data, ctrl->info->size)) < 0)
++                      goto out;
+               v4l2_ctrl->minimum = uvc_get_le_value(data, mapping);
+       }
+       if (ctrl->info->flags & UVC_CONTROL_GET_MAX) {
+               if ((ret = uvc_query_ctrl(video->dev, GET_MAX, ctrl->entity->id,
+                               video->dev->intfnum, ctrl->info->selector,
+-                              &data, ctrl->info->size)) < 0)
+-                      return ret;
++                              data, ctrl->info->size)) < 0)
++                      goto out;
+               v4l2_ctrl->maximum = uvc_get_le_value(data, mapping);
+       }
+       if (ctrl->info->flags & UVC_CONTROL_GET_RES) {
+               if ((ret = uvc_query_ctrl(video->dev, GET_RES, ctrl->entity->id,
+                               video->dev->intfnum, ctrl->info->selector,
+-                              &data, ctrl->info->size)) < 0)
+-                      return ret;
++                              data, ctrl->info->size)) < 0)
++                      goto out;
+               v4l2_ctrl->step = uvc_get_le_value(data, mapping);
+       }
+-      return 0;
++      ret = 0;
++out:
++      kfree(data);
++      return ret;
+ }
+--- a/drivers/media/video/uvc/uvc_video.c
++++ b/drivers/media/video/uvc/uvc_video.c
+@@ -90,17 +90,20 @@ static void uvc_fixup_buffer_size(struct
+ static int uvc_get_video_ctrl(struct uvc_video_device *video,
+       struct uvc_streaming_control *ctrl, int probe, __u8 query)
+ {
+-      __u8 data[34];
+-      __u8 size;
++      __u8 *data;
++      __u16 size;
+       int ret;
+       size = video->dev->uvc_version >= 0x0110 ? 34 : 26;
++      data = kmalloc(size, GFP_KERNEL);
++      if (data == NULL)
++              return -ENOMEM;
++
+       ret = __uvc_query_ctrl(video->dev, query, 0, video->streaming->intfnum,
+-              probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &data, size,
++              probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, data, size,
+               UVC_CTRL_STREAMING_TIMEOUT);
+-
+       if (ret < 0)
+-              return ret;
++              goto out;
+       ctrl->bmHint = le16_to_cpup((__le16 *)&data[0]);
+       ctrl->bFormatIndex = data[2];
+@@ -136,17 +139,22 @@ static int uvc_get_video_ctrl(struct uvc
+        */
+       uvc_fixup_buffer_size(video, ctrl);
+-      return 0;
++out:
++      kfree(data);
++      return ret;
+ }
+ int uvc_set_video_ctrl(struct uvc_video_device *video,
+       struct uvc_streaming_control *ctrl, int probe)
+ {
+-      __u8 data[34];
+-      __u8 size;
++      __u8 *data;
++      __u16 size;
++      int ret;
+       size = video->dev->uvc_version >= 0x0110 ? 34 : 26;
+-      memset(data, 0, sizeof data);
++      data = kzalloc(size, GFP_KERNEL);
++      if (data == NULL)
++              return -ENOMEM;
+       *(__le16 *)&data[0] = cpu_to_le16(ctrl->bmHint);
+       data[2] = ctrl->bFormatIndex;
+@@ -174,10 +182,13 @@ int uvc_set_video_ctrl(struct uvc_video_
+               data[33] = ctrl->bMaxVersion;
+       }
+-      return __uvc_query_ctrl(video->dev, SET_CUR, 0,
++      ret = __uvc_query_ctrl(video->dev, SET_CUR, 0,
+               video->streaming->intfnum,
+-              probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, &data, size,
++              probe ? VS_PROBE_CONTROL : VS_COMMIT_CONTROL, data, size,
+               UVC_CTRL_STREAMING_TIMEOUT);
++
++      kfree(data);
++      return ret;
+ }
+ int uvc_probe_video(struct uvc_video_device *video,
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:26 2008
+Message-Id: <20081018184026.628878074@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:12 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Barnes <jbarnes@virtuousgeek.org>,
+ Shaohua Li <shaohua.li@intel.com>
+Subject: [patch 19/26] PCI: disable ASPM per ACPI FADT setting
+Content-Disposition: inline; filename=pci-disable-aspm-per-acpi-fadt-setting.patch
+Content-Length: 2874
+Lines: 95
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Shaohua Li <shaohua.li@intel.com>
+commit 5fde244d39b88625ac578d83e6625138714de031 upstream
+
+The ACPI FADT table includes an ASPM control bit. If the bit is set, do
+not enable ASPM since it may indicate that the platform doesn't actually
+support the feature.
+
+Tested-by: Jack Howarth <howarth@bromo.msbb.uc.edu>
+Signed-off-by: Shaohua Li <shaohua.li@intel.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci-acpi.c   |    7 +++++++
+ drivers/pci/pcie/aspm.c  |    5 +++++
+ include/acpi/actbl.h     |    1 +
+ include/linux/pci-aspm.h |    5 +++++
+ 4 files changed, 18 insertions(+)
+
+--- a/drivers/pci/pci-acpi.c
++++ b/drivers/pci/pci-acpi.c
+@@ -11,6 +11,7 @@
+ #include <linux/init.h>
+ #include <linux/pci.h>
+ #include <linux/module.h>
++#include <linux/pci-aspm.h>
+ #include <acpi/acpi.h>
+ #include <acpi/acnamesp.h>
+ #include <acpi/acresrc.h>
+@@ -394,6 +395,12 @@ static int __init acpi_pci_init(void)
+               printk(KERN_INFO"ACPI FADT declares the system doesn't support MSI, so disable it\n");
+               pci_no_msi();
+       }
++
++      if (acpi_gbl_FADT.boot_flags & BAF_PCIE_ASPM_CONTROL) {
++              printk(KERN_INFO"ACPI FADT declares the system doesn't support PCIe ASPM, so disable it\n");
++              pcie_no_aspm();
++      }
++
+       ret = register_acpi_bus_type(&acpi_pci_bus);
+       if (ret)
+               return 0;
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -808,6 +808,11 @@ static int __init pcie_aspm_disable(char
+ __setup("pcie_noaspm", pcie_aspm_disable);
++void pcie_no_aspm(void)
++{
++      aspm_disabled = 1;
++}
++
+ #ifdef CONFIG_ACPI
+ #include <acpi/acpi_bus.h>
+ #include <linux/pci-acpi.h>
+--- a/include/acpi/actbl.h
++++ b/include/acpi/actbl.h
+@@ -277,6 +277,7 @@ enum acpi_prefered_pm_profiles {
+ #define BAF_LEGACY_DEVICES              0x0001
+ #define BAF_8042_KEYBOARD_CONTROLLER    0x0002
+ #define BAF_MSI_NOT_SUPPORTED           0x0008
++#define BAF_PCIE_ASPM_CONTROL           0x0010
+ #define FADT2_REVISION_ID               3
+ #define FADT2_MINUS_REVISION_ID         2
+--- a/include/linux/pci-aspm.h
++++ b/include/linux/pci-aspm.h
+@@ -27,6 +27,7 @@ extern void pcie_aspm_init_link_state(st
+ extern void pcie_aspm_exit_link_state(struct pci_dev *pdev);
+ extern void pcie_aspm_pm_state_change(struct pci_dev *pdev);
+ extern void pci_disable_link_state(struct pci_dev *pdev, int state);
++extern void pcie_no_aspm(void);
+ #else
+ static inline void pcie_aspm_init_link_state(struct pci_dev *pdev)
+ {
+@@ -40,6 +41,10 @@ static inline void pcie_aspm_pm_state_ch
+ static inline void pci_disable_link_state(struct pci_dev *pdev, int state)
+ {
+ }
++
++static inline void pcie_no_aspm(void)
++{
++}
+ #endif
+ #ifdef CONFIG_PCIEASPM_DEBUG /* this depends on CONFIG_PCIEASPM */
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:26 2008
+Message-Id: <20081018184026.840852710@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:13 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Barnes <jbarnes@virtuousgeek.org>,
+ Shaohua Li <shaohua.li@intel.com>
+Subject: [patch 20/26] PCI: disable ASPM on pre-1.1 PCIe devices
+Content-Disposition: inline; filename=pci-disable-aspm-on-pre-1.1-pcie-devices.patch
+Content-Length: 2346
+Lines: 76
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Shaohua Li <shaohua.li@intel.com>
+
+commit 149e16372a2066c5474d8a8db9b252afd57eb427 upstream
+
+Disable ASPM on pre-1.1 PCIe devices, as many of them don't implement it
+correctly.
+
+Tested-by: Jack Howarth <howarth@bromo.msbb.uc.edu>
+Signed-off-by: Shaohua Li <shaohua.li@intel.com>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pcie/aspm.c  |   13 +++++++++++++
+ drivers/pci/probe.c      |    3 ++-
+ include/linux/pci_regs.h |    1 +
+ 3 files changed, 16 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/pcie/aspm.c
++++ b/drivers/pci/pcie/aspm.c
+@@ -510,6 +510,7 @@ static int pcie_aspm_sanity_check(struct
+ {
+       struct pci_dev *child_dev;
+       int child_pos;
++      u32 reg32;
+       /*
+        * Some functions in a slot might not all be PCIE functions, very
+@@ -519,6 +520,18 @@ static int pcie_aspm_sanity_check(struct
+               child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP);
+               if (!child_pos)
+                       return -EINVAL;
++
++              /*
++               * Disable ASPM for pre-1.1 PCIe device, we follow MS to use
++               * RBER bit to determine if a function is 1.1 version device
++               */
++              pci_read_config_dword(child_dev, child_pos + PCI_EXP_DEVCAP,
++                      &reg32);
++              if (!(reg32 & PCI_EXP_DEVCAP_RBER)) {
++                      printk("Pre-1.1 PCIe device detected, "
++                              "disable ASPM for %s\n", pci_name(pdev));
++                      return -EINVAL;
++              }
+       }
+       return 0;
+ }
+--- a/drivers/pci/probe.c
++++ b/drivers/pci/probe.c
+@@ -1047,7 +1047,8 @@ int pci_scan_slot(struct pci_bus *bus, i
+               }
+       }
+-      if (bus->self)
++      /* only one slot has pcie device */
++      if (bus->self && nr)
+               pcie_aspm_init_link_state(bus->self);
+       return nr;
+--- a/include/linux/pci_regs.h
++++ b/include/linux/pci_regs.h
+@@ -373,6 +373,7 @@
+ #define  PCI_EXP_DEVCAP_ATN_BUT       0x1000  /* Attention Button Present */
+ #define  PCI_EXP_DEVCAP_ATN_IND       0x2000  /* Attention Indicator Present */
+ #define  PCI_EXP_DEVCAP_PWR_IND       0x4000  /* Power Indicator Present */
++#define  PCI_EXP_DEVCAP_RBER  0x8000  /* Role-Based Error Reporting */
+ #define  PCI_EXP_DEVCAP_PWR_VAL       0x3fc0000 /* Slot Power Limit Value */
+ #define  PCI_EXP_DEVCAP_PWR_SCL       0xc000000 /* Slot Power Limit Scale */
+ #define PCI_EXP_DEVCTL                8       /* Device Control */
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:27 2008
+Message-Id: <20081018184027.044705714@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:14 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Ingo Molnar <mingo@elte.hu>,
+ David Rientjes <rientjes@google.com>
+Subject: [patch 21/26] x86: avoid dereferencing beyond stack + THREAD_SIZE
+Content-Disposition: inline; filename=x86-avoid-dereferencing-beyond-stack-thread_size.patch
+Content-Length: 1293
+Lines: 41
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: David Rientjes <rientjes@google.com>
+
+commit 60e6258cd43f9b06884f04f0f7cefb9c40f17a32 upstream
+
+It's possible for get_wchan() to dereference past task->stack + THREAD_SIZE
+while iterating through instruction pointers if fp equals the upper boundary,
+causing a kernel panic.
+
+Signed-off-by: David Rientjes <rientjes@google.com>
+Signed-off-by: Ingo Molnar <mingo@elte.hu>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/kernel/process_64.c |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/kernel/process_64.c
++++ b/arch/x86/kernel/process_64.c
+@@ -740,12 +740,12 @@ unsigned long get_wchan(struct task_stru
+       if (!p || p == current || p->state==TASK_RUNNING)
+               return 0; 
+       stack = (unsigned long)task_stack_page(p);
+-      if (p->thread.sp < stack || p->thread.sp > stack+THREAD_SIZE)
++      if (p->thread.sp < stack || p->thread.sp >= stack+THREAD_SIZE)
+               return 0;
+       fp = *(u64 *)(p->thread.sp);
+       do { 
+               if (fp < (unsigned long)stack ||
+-                  fp > (unsigned long)stack+THREAD_SIZE)
++                  fp >= (unsigned long)stack+THREAD_SIZE)
+                       return 0; 
+               ip = *(u64 *)(fp+8);
+               if (!in_sched_functions(ip))
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:27 2008
+Message-Id: <20081018184027.296348381@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:15 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jesse Barnes <jbarnes@virtuousgeek.org>
+Subject: [patch 22/26] Check mapped ranges on sysfs resource files
+Content-Disposition: inline; filename=check-mapped-ranges-on-sysfs-resource-files.patch
+Content-Length: 2994
+Lines: 86
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Linus Torvalds <torvalds@linux-foundation.org>
+
+commit b5ff7df3df9efab511244d5a299fce706c71af48 upstream
+
+Check mapped ranges on sysfs resource files
+
+This is loosely based on a patch by Jesse Barnes to check the user-space
+PCI mappings though the sysfs interfaces.  Quoting Jesse's original
+explanation:
+
+  It's fairly common for applications to map PCI resources through sysfs.
+  However, with the current implementation, it's possible for an application
+  to map far more than the range corresponding to the resourceN file it
+  opened.  This patch plugs that hole by checking the range at mmap time,
+  similar to what is done on platforms like sparc64 in their lower level
+  PCI remapping routines.
+
+  It was initially put together to help debug the e1000e NVRAM corruption
+  problem, since we initially thought an X driver might be walking past the
+  end of one of its mappings and clobbering the NVRAM.  It now looks like
+  that's not the case, but doing the check is still important for obvious
+  reasons.
+
+and this version of the patch differs in that it uses a helper function
+to clarify the code, and does all the checks in pages (instead of bytes)
+in order to avoid overflows when doing "<< PAGE_SHIFT" etc.
+
+[cebbert@redhat.com: backport, changing WARN() to printk()]
+
+Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/pci-sysfs.c |   19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+--- a/drivers/pci/pci-sysfs.c
++++ b/drivers/pci/pci-sysfs.c
+@@ -16,6 +16,7 @@
+ #include <linux/kernel.h>
++#include <linux/sched.h>
+ #include <linux/pci.h>
+ #include <linux/stat.h>
+ #include <linux/topology.h>
+@@ -484,6 +485,21 @@ pci_mmap_legacy_mem(struct kobject *kobj
+ #endif /* HAVE_PCI_LEGACY */
+ #ifdef HAVE_PCI_MMAP
++
++static int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma)
++{
++      unsigned long nr, start, size;
++
++      nr = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
++      start = vma->vm_pgoff;
++      size = pci_resource_len(pdev, resno) >> PAGE_SHIFT;
++      if (start < size && size - start >= nr)
++              return 1;
++      printk(KERN_WARNING "WARNING: process \"%s\" tried to map 0x%08lx-0x%08lx on %s BAR %d (size 0x%08lx)\n",
++              current->comm, start, start+nr, pci_name(pdev), resno, size);
++      return 0;
++}
++
+ /**
+  * pci_mmap_resource - map a PCI resource into user memory space
+  * @kobj: kobject for mapping
+@@ -510,6 +526,9 @@ pci_mmap_resource(struct kobject *kobj, 
+       if (i >= PCI_ROM_RESOURCE)
+               return -ENODEV;
++      if (!pci_mmap_fits(pdev, i, vma))
++              return -EINVAL;
++
+       /* pci_mmap_page_range() expects the same kind of entry as coming
+        * from /proc/bus/pci/ which is a "user visible" value. If this is
+        * different from the resource itself, arch will do necessary fixup.
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:27 2008
+Message-Id: <20081018184027.524994899@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:16 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Jean Delvare <khali@linux-fr.org>
+Subject: [patch 23/26] hwmon: (it87) Prevent power-off on Shuttle SN68PT
+Content-Disposition: inline; filename=hwmon-prevent-power-off-on-shuttle-sn68pt.patch
+Content-Length: 3632
+Lines: 114
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Jean Delvare <khali@linux-fr.org>
+
+based on commit 98dd22c3e086d76058083432d4d8fb85f04bab90 upstream
+
+On the Shuttle SN68PT, FAN_CTL2 is apparently not connected to a fan,
+but to something else. One user has reported instant system power-off
+when changing the PWM2 duty cycle, so we disable it.
+
+I use the board name string as the trigger in case the same board is
+ever used in other systems.
+
+This closes lm-sensors ticket #2349:
+pwmconfig causes a hard poweroff
+http://www.lm-sensors.org/ticket/2349
+
+Signed-off-by: Jean Delvare <khali@linux-fr.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/hwmon/it87.c |   39 +++++++++++++++++++++++++++++++++------
+ 1 file changed, 33 insertions(+), 6 deletions(-)
+
+--- a/drivers/hwmon/it87.c
++++ b/drivers/hwmon/it87.c
+@@ -46,6 +46,8 @@
+ #include <linux/err.h>
+ #include <linux/mutex.h>
+ #include <linux/sysfs.h>
++#include <linux/string.h>
++#include <linux/dmi.h>
+ #include <asm/io.h>
+ #define DRVNAME "it87"
+@@ -235,6 +237,8 @@ struct it87_sio_data {
+       enum chips type;
+       /* Values read from Super-I/O config space */
+       u8 vid_value;
++      /* Values set based on DMI strings */
++      u8 skip_pwm;
+ };
+ /* For each registered chip, we need to keep some data in memory.
+@@ -952,6 +956,7 @@ static int __init it87_find(unsigned sho
+ {
+       int err = -ENODEV;
+       u16 chip_type;
++      const char *board_vendor, *board_name;
+       superio_enter();
+       chip_type = force_id ? force_id : superio_inw(DEVID);
+@@ -1009,6 +1014,25 @@ static int __init it87_find(unsigned sho
+                       pr_info("it87: in7 is VCCH (+5V Stand-By)\n");
+       }
++      sio_data->skip_pwm = 0;
++      /* Disable specific features based on DMI strings */
++      board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR);
++      board_name = dmi_get_system_info(DMI_BOARD_NAME);
++      if (board_vendor && board_name) {
++              if (strcmp(board_vendor, "nVIDIA") == 0
++               && strcmp(board_name, "FN68PT") == 0) {
++                      /* On the Shuttle SN68PT, FAN_CTL2 is apparently not
++                         connected to a fan, but to something else. One user
++                         has reported instant system power-off when changing
++                         the PWM2 duty cycle, so we disable it.
++                         I use the board name string as the trigger in case
++                         the same board is ever used in other systems. */
++                      pr_info("it87: Disabling pwm2 due to "
++                              "hardware constraints\n");
++                      sio_data->skip_pwm = (1 << 1);
++              }
++      }
++
+ exit:
+       superio_exit();
+       return err;
+@@ -1157,22 +1181,25 @@ static int __devinit it87_probe(struct p
+               if ((err = device_create_file(dev,
+                    &sensor_dev_attr_pwm1_enable.dev_attr))
+                || (err = device_create_file(dev,
+-                   &sensor_dev_attr_pwm2_enable.dev_attr))
+-               || (err = device_create_file(dev,
+                    &sensor_dev_attr_pwm3_enable.dev_attr))
+                || (err = device_create_file(dev,
+                    &sensor_dev_attr_pwm1.dev_attr))
+                || (err = device_create_file(dev,
+-                   &sensor_dev_attr_pwm2.dev_attr))
+-               || (err = device_create_file(dev,
+                    &sensor_dev_attr_pwm3.dev_attr))
+                || (err = device_create_file(dev,
+                    &dev_attr_pwm1_freq))
+                || (err = device_create_file(dev,
+-                   &dev_attr_pwm2_freq))
+-               || (err = device_create_file(dev,
+                    &dev_attr_pwm3_freq)))
+                       goto ERROR4;
++              if (!(sio_data->skip_pwm & (1 << 1))) {
++                      if ((err = device_create_file(dev,
++                           &sensor_dev_attr_pwm2_enable.dev_attr))
++                       || (err = device_create_file(dev,
++                           &sensor_dev_attr_pwm2.dev_attr))
++                       || (err = device_create_file(dev,
++                           &dev_attr_pwm2_freq)))
++                              goto ERROR4;
++              }
+       }
+       if (data->type == it8712 || data->type == it8716
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:28 2008
+Message-Id: <20081018184027.948938724@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:17 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Zhao Yakui <yakui.zhao@intel.com>,
+ linux-acpi@vger.kernel.org,
+ Zhang Rui <rui.zhang@intel.com>,
+ Andi Kleen <ak@linux.intel.com>,
+ Len Brown <lenb@kernel.org>
+Subject: [patch 24/26] ACPI: Ignore _BQC object when registering backlight device
+Content-Disposition: inline; filename=acpi-ignore-_bqc-object-when-registering-backlight-device.patch
+Content-Length: 2043
+Lines: 60
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+upstream commmit: c2c789057f075022658b38b498755c29c1ba8055
+
+According to acpi spec , the objectes of  _BCL and _BCM are required if
+integrated LCD is present and supports brightness level and the _BQC is
+the optional object. So the _BQC object will be ignored when the backlight
+device is registered.
+At the same time when there is no _BQC object, the current brightness will be
+set to the maximum.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=10206
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Signed-off-by: Zhang Rui  <rui.zhang@intel.com>
+Signed-off-by: Andi Kleen <ak@linux.intel.com>
+Cc: Len Brown <lenb@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/acpi/video.c |   14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/drivers/acpi/video.c
++++ b/drivers/acpi/video.c
+@@ -720,7 +720,7 @@ static void acpi_video_device_find_cap(s
+       kfree(obj);
+-      if (device->cap._BCL && device->cap._BCM && device->cap._BQC && max_level > 0){
++      if (device->cap._BCL && device->cap._BCM && max_level > 0) {
+               int result;
+               static int count = 0;
+               char *name;
+@@ -732,7 +732,17 @@ static void acpi_video_device_find_cap(s
+               device->backlight = backlight_device_register(name,
+                       NULL, device, &acpi_backlight_ops);
+               device->backlight->props.max_brightness = device->brightness->count-3;
+-              device->backlight->props.brightness = acpi_video_get_brightness(device->backlight);
++              /*
++               * If there exists the _BQC object, the _BQC object will be
++               * called to get the current backlight brightness. Otherwise
++               * the brightness will be set to the maximum.
++               */
++              if (device->cap._BQC)
++                      device->backlight->props.brightness =
++                              acpi_video_get_brightness(device->backlight);
++              else
++                      device->backlight->props.brightness =
++                              device->backlight->props.max_brightness;
+               backlight_update_status(device->backlight);
+               kfree(name);
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:28 2008
+Message-Id: <20081018184028.154266356@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:18 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Dave Airlie <airlied@redhat.com>
+Subject: [patch 25/26] drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831)
+Content-Disposition: inline; filename=drm-i915-fix-ioremap-of-a-user-address-for-non-root.patch
+Content-Length: 1461
+Lines: 37
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Matthias Hopf <mhopf@suse.de>
+
+commit 4b40893918203ee1a1f6a114316c2a19c072e9bd upstream
+
+Olaf Kirch noticed that the i915_set_status_page() function of the i915
+kernel driver calls ioremap with an address offset that is supplied by
+userspace via ioctl. The function zeroes the mapped memory via memset
+and tells the hardware about the address. Turns out that access to that
+ioctl is not restricted to root so users could probably exploit that to
+do nasty things. We haven't tried to write actual exploit code though.
+
+It only affects the Intel G33 series and newer.
+
+Signed-off-by: Dave Airlie <airlied@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/drm/i915_dma.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/char/drm/i915_dma.c
++++ b/drivers/char/drm/i915_dma.c
+@@ -836,7 +836,7 @@ struct drm_ioctl_desc i915_ioctls[] = {
+       DRM_IOCTL_DEF(DRM_I915_SET_VBLANK_PIPE,  i915_vblank_pipe_set, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY ),
+       DRM_IOCTL_DEF(DRM_I915_GET_VBLANK_PIPE,  i915_vblank_pipe_get, DRM_AUTH ),
+       DRM_IOCTL_DEF(DRM_I915_VBLANK_SWAP, i915_vblank_swap, DRM_AUTH),
+-      DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH),
++      DRM_IOCTL_DEF(DRM_I915_HWS_ADDR, i915_set_status_page, DRM_AUTH|DRM_MASTER|DRM_ROOT_ONLY),
+ };
+ int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:28 2008
+Message-Id: <20081018184028.591624247@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:19 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mauro Carvalho Chehab <mchehab@redhat.com>
+Subject: [patch 26/26] DVB: au0828: add support for another USB id for Hauppauge HVR950Q
+Content-Disposition: inline; filename=dvb-au0828-add-support-for-another-usb-id-for-hauppauge-hvr950q.patch
+Content-Length: 2303
+Lines: 51
+
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Michael Krufky <mkrufky@linuxtv.org>
+
+(cherry picked from commit a636da6bab3307fc8c6e6a22a63b0b25ba0687be)
+
+DVB: au0828: add support for another USB id for Hauppauge HVR950Q
+
+Add autodetection support for a new revision of the Hauppauge HVR950Q (2040:721e)
+
+Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/video4linux/CARDLIST.au0828 |    2 +-
+ drivers/media/video/au0828/au0828-cards.c |    3 +++
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+--- a/Documentation/video4linux/CARDLIST.au0828
++++ b/Documentation/video4linux/CARDLIST.au0828
+@@ -1,4 +1,4 @@
+   0 -> Unknown board                            (au0828)
+-  1 -> Hauppauge HVR950Q                        (au0828)        [2040:7200,2040:7210,2040:7217,2040:721b,2040:721f,2040:7280,0fd9:0008]
++  1 -> Hauppauge HVR950Q                        (au0828)        [2040:7200,2040:7210,2040:7217,2040:721b,2040:721e,2040:721f,2040:7280,0fd9:0008]
+   2 -> Hauppauge HVR850                         (au0828)        [2040:7240]
+   3 -> DViCO FusionHDTV USB                     (au0828)        [0fe9:d620]
+--- a/drivers/media/video/au0828/au0828-cards.c
++++ b/drivers/media/video/au0828/au0828-cards.c
+@@ -83,6 +83,7 @@ static void hauppauge_eeprom(struct au08
+       case 72221: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and basic analog video */
+       case 72231: /* WinTV-HVR950q (OEM, IR, ATSC/QAM and basic analog video */
+       case 72241: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM and basic analog video */
++      case 72251: /* WinTV-HVR950q (Retail, IR, ATSC/QAM and basic analog video */
+       case 72301: /* WinTV-HVR850 (Retail, IR, ATSC and basic analog video */
+       case 72500: /* WinTV-HVR950q (OEM, No IR, ATSC/QAM */
+               break;
+@@ -187,6 +188,8 @@ struct usb_device_id au0828_usb_id_table
+               .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
+       { USB_DEVICE(0x2040, 0x721b),
+               .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
++      { USB_DEVICE(0x2040, 0x721e),
++              .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
+       { USB_DEVICE(0x2040, 0x721f),
+               .driver_info = AU0828_BOARD_HAUPPAUGE_HVR950Q },
+       { USB_DEVICE(0x2040, 0x7280),
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:26 2008
+Message-Id: <20081018184026.426497114@mini.kroah.org>
+References: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:39:11 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk,
+ Mauro Carvalho Chehab <mchehab@infradead.org>,
+ Laurent Pinchart <laurent.pinchart@skynet.be>,
+ Mauro Carvalho Chehab <mchehab@redhat.com>
+Subject: [patch 18/26] V4L/DVB (9053): fix buffer overflow in uvc-video
+Content-Disposition: inline; filename=v4l-dvb-fix-buffer-overflow-in-uvc-video.patch
+Content-Length: 1439
+Lines: 46
+
+2.6.26-stable review patch.  If anyone has any objections, please let us 
+know.
+
+------------------
+From: Ralph Loader <suckfish@ihug.co.nz>
+
+Commit fe6c700ff34e68e1eb7991e9c5d18986d0005ac1 upstream
+
+V4L/DVB (9053): fix buffer overflow in uvc-video
+
+There is a buffer overflow in drivers/media/video/uvc/uvc_ctrl.c:
+
+INFO: 0xf2c5ce08-0xf2c5ce0b. First byte 0xa1 instead of 0xcc
+INFO: Allocated in uvc_query_v4l2_ctrl+0x3c/0x239 [uvcvideo] age=13 cpu=1 pid=4975
+...
+
+A fixed size 8-byte buffer is allocated, and a variable size field is read
+into it; there is no particular bound on the size of the field (it is
+dependent on hardware and configuration) and it can overflow [also
+verified by inserting printk's.]
+
+The patch attempts to size the buffer to the correctly.
+
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Acked-by: Laurent Pinchart <laurent.pinchart@skynet.be>
+Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
+Cc: Chuck Ebbert <cebbert@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/media/video/uvc/uvc_ctrl.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/media/video/uvc/uvc_ctrl.c
++++ b/drivers/media/video/uvc/uvc_ctrl.c
+@@ -592,7 +592,7 @@ int uvc_query_v4l2_ctrl(struct uvc_video
+       if (ctrl == NULL)
+               return -EINVAL;
+-      data = kmalloc(8, GFP_KERNEL);
++      data = kmalloc(ctrl->info->size, GFP_KERNEL);
+       if (data == NULL)
+               return -ENOMEM;
+
+-- 
+
+From gregkh@mini.kroah.org Sat Oct 18 11:40:20 2008
+Message-Id: <20081018183853.004667035@mini.kroah.org>
+User-Agent: quilt/0.46-1
+Date: Sat, 18 Oct 2008 11:38:53 -0700
+From: Greg KH <gregkh@suse.de>
+To: linux-kernel@vger.kernel.org,
+ stable@kernel.org
+Cc: Justin Forbes <jmforbes@linuxtx.org>,
+ Zwane Mwaikambo <zwane@arm.linux.org.uk>,
+ Theodore Ts'o <tytso@mit.edu>,
+ Randy Dunlap <rdunlap@xenotime.net>,
+ Dave Jones <davej@redhat.com>,
+ Chuck Wolber <chuckw@quantumlinux.com>,
+ Chris Wedgwood <reviews@ml.cw.f00f.org>,
+ Michael Krufky <mkrufky@linuxtv.org>,
+ Chuck Ebbert <cebbert@redhat.com>,
+ Domenico Andreoli <cavokz@gmail.com>,
+ Willy Tarreau <w@1wt.eu>,
+ Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
+ Jake Edge <jake@lwn.net>,
+ Eugene Teo <eteo@redhat.com>,
+ torvalds@linux-foundation.org,
+ akpm@linux-foundation.org,
+ alan@lxorguk.ukuu.org.uk
+Subject: [patch 00/26] 2.6.26-stable review
+Content-Length: 2646
+Lines: 57
+
+This is the start of the stable review cycle for the 2.6.26.7 release.
+There are 26 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 Wed, October 22, 2008 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.26.7-rc1.gz
+and the diffstat can be found below.
+
+
+thanks,
+
+greg k-h
+
+
+ Documentation/video4linux/CARDLIST.au0828 |    2 
+ Makefile                                  |    2 
+ arch/x86/kernel/alternative.c             |    2 
+ arch/x86/kernel/io_apic_32.c              |    3 
+ arch/x86/kernel/process_64.c              |    4 
+ arch/x86/mm/ioremap.c                     |    2 
+ drivers/acpi/video.c                      |   14 ++-
+ drivers/ata/libata-eh.c                   |   24 +----
+ drivers/char/drm/i915_dma.c               |    2 
+ drivers/char/tty_io.c                     |    2 
+ drivers/hwmon/it87.c                      |   39 +++++++--
+ drivers/media/video/au0828/au0828-cards.c |    3 
+ drivers/media/video/bt8xx/bttv-driver.c   |    2 
+ drivers/media/video/uvc/uvc_ctrl.c        |   44 +++++++---
+ drivers/media/video/uvc/uvc_video.c       |   33 +++++--
+ drivers/media/video/zoran_driver.c        |    2 
+ drivers/net/wireless/b43legacy/xmit.c     |    2 
+ drivers/pci/pci-acpi.c                    |    7 +
+ drivers/pci/pci-sysfs.c                   |   19 ++++
+ drivers/pci/pcie/aspm.c                   |   18 ++++
+ drivers/pci/probe.c                       |    3 
+ drivers/video/console/fbcon.c             |    4 
+ fs/cifs/cifsglob.h                        |    1 
+ fs/cifs/cifssmb.c                         |    4 
+ fs/cifs/readdir.c                         |  128 +++++++++++++++---------------
+ fs/splice.c                               |    3 
+ include/acpi/actbl.h                      |    1 
+ include/linux/ata.h                       |    2 
+ include/linux/pci-aspm.h                  |    5 +
+ include/linux/pci_regs.h                  |    1 
+ kernel/module.c                           |    2 
+ kernel/sched_rt.c                         |    8 -
+ 32 files changed, 258 insertions(+), 130 deletions(-)
+
similarity index 100%
rename from queue-2.6.26/series
rename to review-2.6.26/series