Hello community,
here is the log from the commit of package kernel-source for openSUSE:11.4
checked in at Tue Apr 26 18:36:22 CEST 2011.
--------
--- old-versions/11.4/UPDATES/all/kernel-source/kernel-debug.changes 2011-04-11 21:43:38.000000000 +0200
+++ 11.4/kernel-source/kernel-debug.changes 2011-04-26 07:00:59.000000000 +0200
@@ -1,0 +2,201 @@
+Mon Apr 25 21:48:33 CEST 2011 - jeffm@suse.com
+
+- xen/i386: Add missing END for spurious_interrupt_bug.
+- commit d0f6e4d
+
+-------------------------------------------------------------------
+Mon Apr 25 16:32:03 CEST 2011 - jeffm@suse.com
+
+- Enabled patches.kabi/sched-autogroup-fix-rt-group-sched.
+- commit 3f5a598
+
+-------------------------------------------------------------------
+Mon Apr 25 16:25:08 CEST 2011 - jeffm@suse.com
+
+- kABI: Guard changes to struct autogroup (bnc#680510).
+- commit 505e072
+
+-------------------------------------------------------------------
+Mon Apr 25 16:14:46 CEST 2011 - jeffm@suse.com
+
+- sched, autogroup: fix CONFIG_RT_GROUP_SCHED sched_setscheduler() failure (bnc#680510).
+ The change is safe other than needing kABI guards.
+- commit f417a2b
+
+-------------------------------------------------------------------
+Fri Apr 22 17:12:34 CEST 2011 - jeffm@suse.com
+
+- Revert "- sched, autogroup: fix CONFIG_RT_GROUP_SCHED sched_setscheduler() failure (bnc#680510)."
+ This reverts commit e4e6f9738a1ac4837777f6480268c6cb56722d0c.
+ This patch modified struct autogroup, which caused massive kABI changes.
+- commit 401f90a
+
+-------------------------------------------------------------------
+Thu Apr 21 19:54:15 CEST 2011 - jbohac@suse.cz
+
+- bridge: fix 802.3ad bonding (bnc#685469).
+- commit 46ab2e4
+
+-------------------------------------------------------------------
+Thu Apr 21 13:06:39 CEST 2011 - sjayaraman@suse.de
+
+- Revert "net/sunrpc: Use static const char arrays" (bnc#668880).
+- commit 446cab2
+
+-------------------------------------------------------------------
+Wed Apr 20 11:26:44 CEST 2011 - jdelvare@suse.de
+
+- i2c-algo-bit: Call pre/post_xfer for bit_test (bnc#669937,
+ freedesktop#36221).
+- commit 0eb4b26
+
+-------------------------------------------------------------------
+Tue Apr 19 22:48:18 CEST 2011 - jack@suse.cz
+
+- ext4: fix ext4_da_block_invalidatepages() to handle page range
+ properly (bnc#679898).
+- commit 9445b77
+
+-------------------------------------------------------------------
+Tue Apr 19 21:40:35 CEST 2011 - jslaby@suse.cz
+
+- mm: prevent concurrent unmap_mapping_range() on the same inode.
+- Refresh
+ patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch.
+- commit f44f181
+
+-------------------------------------------------------------------
+Tue Apr 19 18:57:55 CEST 2011 - jack@suse.cz
+
+- ext4: mark multi-page IO complete on mapping failure
+ (bnc#679898).
+- commit 39ff8fe
+
+-------------------------------------------------------------------
+Tue Apr 19 17:14:09 CEST 2011 - jeffm@suse.com
+
+- Updated Patch-mainline for patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d.
+- commit 3d54583
+
+-------------------------------------------------------------------
+Tue Apr 19 15:39:07 CEST 2011 - jeffm@suse.com
+
+- KABI: Re-export shrink_dcache_for_umount_subtree.
+- commit cc0aa7f
+
+-------------------------------------------------------------------
+Mon Apr 18 19:54:55 CEST 2011 - jslaby@suse.cz
+
+- block: revert __invalidate_device prototype change.
+- Delete
+ patches.kabi/revert-Fix-over-zealous-flush_disk-when-changing-dev.patch.
+- commit be37261
+
+-------------------------------------------------------------------
+Mon Apr 18 19:40:23 CEST 2011 - jslaby@suse.cz
+
+- block: revert __blk_run_queue prototype change.
+- Delete
+ patches.kabi/blk-revert-add-force_kblockd-to-__blk_run_queue.patch.
+- Delete
+ patches.kabi/blk-revert-blk-flush-shouldn-t-call-directly-into-.patch.
+- commit 24a2e21
+
+-------------------------------------------------------------------
+Mon Apr 18 17:33:56 CEST 2011 - jslaby@suse.cz
+
+- Revert "Fix over-zealous flush_disk when changing device size.".
+- commit 1dea4c1
+
+-------------------------------------------------------------------
+Mon Apr 18 17:28:46 CEST 2011 - jslaby@suse.cz
+
+- SoN: fix kABI breakage.
+- Revert "block: add @force_kblockd to __blk_run_queue()".
+- Revert "block: blk-flush shouldn't call directly into
+ q->request_fn() __blk_run_queue()".
+- Revert "mm: prevent concurrent unmap_mapping_range() on the
+ same inode".
+- DRM: revert drm_device num_crtcs change.
+- Block: export lost functions.
+- FUSE: fuse_req kABI guard.
+- MD: mddev_s kABI guard.
+- commit 8e97c09
+
+-------------------------------------------------------------------
+Mon Apr 18 15:49:58 CEST 2011 - jslaby@suse.cz
+
+- ethtool: guard against compat.h.
+- commit 33844c8
+
+-------------------------------------------------------------------
+Mon Apr 18 15:47:24 CEST 2011 - jslaby@suse.cz
+
+- patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch:
+ Move to patches.arch where it belongs.
+- commit a116831
+
+-------------------------------------------------------------------
+Sun Apr 17 22:25:26 CEST 2011 - jeffm@suse.de
+
+- Update reference module symbol versions.
+- commit ed9da6e
+
+-------------------------------------------------------------------
+Fri Apr 15 22:17:21 CEST 2011 - jeffm@suse.com
+
+- libata: DVR-216D can't do SETXFER DVD-RW DVR-216D (bnc#679143).
+- libata: DVR-212D can't do SETXFER DVD-RW DVR-212D.
+- commit b7aca8a
+
+-------------------------------------------------------------------
+Fri Apr 15 00:28:16 CEST 2011 - bphilips@suse.de
+
+- bonding: Incorrect TX queue offset (bnc#687116, CVE-2011-1581).
+- commit 9efcee8
+
+-------------------------------------------------------------------
+Thu Apr 14 19:46:42 CEST 2011 - jeffm@suse.com
+
+- char/tpm: Fix unitialized usage of data buffer (bnc#680040
+ CVE-2011-1160).
+- commit 97c1e00
+
+-------------------------------------------------------------------
+Thu Apr 14 18:44:56 CEST 2011 - jeffm@suse.com
+
+- fs/partitions/efi.c: corrupted GUID partition tables can cause
+ kernel oops (bnc#687113 CVE-2011-1577).
+- commit b350a92
+
+-------------------------------------------------------------------
+Thu Apr 14 01:28:00 CEST 2011 - jeffm@suse.com
+
+- drivers/leds/leds-lp5523.c: world-writable engine* sysfs files
+ (bnc#673934).
+- drivers/leds/leds-lp5521.c: world-writable sysfs engine* files
+ (bnc#673934).
+- mfd: ab8500: world-writable debugfs register-* files
+ (bnc#673934).
+- scsi_transport_iscsi: make priv_sess file writeable only by root
+ (bnc#673934).
+- mfd: ab3500: world-writable debugfs register-* files
+ (bnc#673934).
+- drivers/misc/ep93xx_pwm.c: world-writable sysfs files
+ (bnc#673934).
+- mfd: ab3100: world-writable debugfs *_priv files (bnc#673934).
+- UBIFS: restrict world-writable debugfs files (bnc#673934).
+- scsi: aic94xx: world-writable sysfs update_bios file.
+- drivers/rtc/rtc-ds1511.c: world-writable sysfs nvram file
+ (bnc#673934).
+- video: sn9c102: world-wirtable sysfs files (bnc#673934).
+- commit c30fedb
+
+-------------------------------------------------------------------
+Wed Apr 13 23:57:58 CEST 2011 - jeffm@suse.com
+
+- irda: validate peer name and attribute lengths (bnc#681497
++++ 12 more lines (skipped)
++++ between old-versions/11.4/UPDATES/all/kernel-source/kernel-debug.changes
++++ and 11.4/kernel-source/kernel-debug.changes
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-ec2.changes: same change
kernel-net.changes: same change
kernel-pae.changes: same change
kernel-ppc64.changes: same change
kernel-ps3.changes: same change
kernel-s390.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-trace.changes: same change
kernel-vanilla.changes: same change
kernel-vmi.changes: same change
kernel-xen.changes: same change
calling whatdependson for 11.4-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
kernel-default.spec: same change
kernel-desktop.spec: same change
kernel-docs.spec: same change
kernel-ec2.spec: same change
kernel-net.spec: same change
kernel-pae.spec: same change
kernel-ppc64.spec: same change
kernel-ps3.spec: same change
kernel-s390.spec: same change
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.RKkBBr/_old 2011-04-26 18:29:56.000000000 +0200
+++ /var/tmp/diff_new_pack.RKkBBr/_new 2011-04-26 18:29:56.000000000 +0200
@@ -30,7 +30,7 @@
Name: kernel-source
Summary: The Linux Kernel Sources
Version: 2.6.37.6
-Release: 0.<RELEASE2>
+Release: 0.<RELEASE5>
%if %using_buildservice
%else
%endif
kernel-trace.spec: same change
kernel-vanilla.spec: same change
kernel-vmi.spec: same change
kernel-xen.spec: same change
++++++ kabi.tar.bz2 ++++++
++++ 834869 lines of diff (skipped)
++++++ minmem ++++++
--- /var/tmp/diff_new_pack.RKkBBr/_old 2011-04-26 18:29:58.000000000 +0200
+++ /var/tmp/diff_new_pack.RKkBBr/_new 2011-04-26 18:29:58.000000000 +0200
@@ -1 +1 @@
-2096000
+1048576
++++++ needed_space_in_mb ++++++
--- /var/tmp/diff_new_pack.RKkBBr/_old 2011-04-26 18:29:58.000000000 +0200
+++ /var/tmp/diff_new_pack.RKkBBr/_new 2011-04-26 18:29:58.000000000 +0200
@@ -1 +1 @@
-6000
+6144
++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch new/patches.arch/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch
--- old/patches.arch/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.arch/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch 2011-04-18 15:47:24.000000000 +0200
@@ -0,0 +1,125 @@
+From 0fc33e5e837dc05367bb7ba1117f061ab4151df5 Mon Sep 17 00:00:00 2001
+From: Jiri Slaby
+Date: Wed, 6 Apr 2011 22:37:36 +0200
+Subject: Revert "x86: Cleanup highmap after brk is concluded"
+Patch-mainline: asked to be reverted
+References: bnc#684248
+
+This reverts commit 72f2999e41d09468b29de855ffc02f94e87a675e.
+
+It's crap and breaks resume.
+
+Signed-off-by: Jiri Slaby
+---
+ arch/x86/kernel/head64.c | 3 +++
+ arch/x86/kernel/setup.c | 5 -----
+ arch/x86/mm/init.c | 19 +++++++++++++++++++
+ arch/x86/mm/init_64.c | 11 +++++------
+ 4 files changed, 27 insertions(+), 11 deletions(-)
+
+diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
+index 5655c22..2d2673c 100644
+--- a/arch/x86/kernel/head64.c
++++ b/arch/x86/kernel/head64.c
+@@ -77,6 +77,9 @@ void __init x86_64_start_kernel(char * real_mode_data)
+ /* Make NULL pointers segfault */
+ zap_identity_mappings();
+
++ /* Cleanup the over mapped high alias */
++ cleanup_highmap();
++
+ max_pfn_mapped = KERNEL_IMAGE_SIZE >> PAGE_SHIFT;
+
+ for (i = 0; i < NUM_EXCEPTION_VECTORS; i++) {
+diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
+index e543fe9..d3cfe26 100644
+--- a/arch/x86/kernel/setup.c
++++ b/arch/x86/kernel/setup.c
+@@ -297,9 +297,6 @@ static void __init init_gbpages(void)
+ static inline void init_gbpages(void)
+ {
+ }
+-static void __init cleanup_highmap(void)
+-{
+-}
+ #endif
+
+ static void __init reserve_brk(void)
+@@ -925,8 +922,6 @@ void __init setup_arch(char **cmdline_p)
+ */
+ reserve_brk();
+
+- cleanup_highmap();
+-
+ memblock.current_limit = get_max_mapped();
+ memblock_x86_fill();
+
+diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
+index f13ff3a..947f42a 100644
+--- a/arch/x86/mm/init.c
++++ b/arch/x86/mm/init.c
+@@ -279,6 +279,25 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
+ load_cr3(swapper_pg_dir);
+ #endif
+
++#ifdef CONFIG_X86_64
++ if (!after_bootmem && !start) {
++ pud_t *pud;
++ pmd_t *pmd;
++
++ mmu_cr4_features = read_cr4();
++
++ /*
++ * _brk_end cannot change anymore, but it and _end may be
++ * located on different 2M pages. cleanup_highmap(), however,
++ * can only consider _end when it runs, so destroy any
++ * mappings beyond _brk_end here.
++ */
++ pud = pud_offset(pgd_offset_k(_brk_end), _brk_end);
++ pmd = pmd_offset(pud, _brk_end - 1);
++ while (++pmd <= pmd_offset(pud, (unsigned long)_end - 1))
++ pmd_clear(pmd);
++ }
++#endif
+ __flush_tlb_all();
+
+ if (!after_bootmem && e820_table_end > e820_table_start)
+diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
+index 68f9921..c14a542 100644
+--- a/arch/x86/mm/init_64.c
++++ b/arch/x86/mm/init_64.c
+@@ -51,7 +51,6 @@
+ #include
+ #include
+ #include
+-#include
+
+ static int __init parse_direct_gbpages_off(char *arg)
+ {
+@@ -294,18 +293,18 @@ void __init init_extra_mapping_uc(unsigned long phys, unsigned long size)
+ * to the compile time generated pmds. This results in invalid pmds up
+ * to the point where we hit the physaddr 0 mapping.
+ *
+- * We limit the mappings to the region from _text to _brk_end. _brk_end
+- * is rounded up to the 2MB boundary. This catches the invalid pmds as
++ * We limit the mappings to the region from _text to _end. _end is
++ * rounded up to the 2MB boundary. This catches the invalid pmds as
+ * well, as they are located before _text:
+ */
+ void __init cleanup_highmap(void)
+ {
+ unsigned long vaddr = __START_KERNEL_map;
+- unsigned long vaddr_end = __START_KERNEL_map + (max_pfn_mapped << PAGE_SHIFT);
+- unsigned long end = roundup((unsigned long)_brk_end, PMD_SIZE) - 1;
++ unsigned long end = roundup((unsigned long)_end, PMD_SIZE) - 1;
+ pmd_t *pmd = level2_kernel_pgt;
++ pmd_t *last_pmd = pmd + PTRS_PER_PMD;
+
+- for (; vaddr + PMD_SIZE - 1 < vaddr_end; pmd++, vaddr += PMD_SIZE) {
++ for (; pmd < last_pmd; pmd++, vaddr += PMD_SIZE) {
+ if (pmd_none(*pmd))
+ continue;
+ if (vaddr < (unsigned long) _text || vaddr > end)
+--
+1.7.4.2
+
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bonding-Incorrect-TX-queue-offset.patch new/patches.fixes/bonding-Incorrect-TX-queue-offset.patch
--- old/patches.fixes/bonding-Incorrect-TX-queue-offset.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/bonding-Incorrect-TX-queue-offset.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,61 @@
+From fd0e435b0fe85622f167b84432552885a4856ac8 Mon Sep 17 00:00:00 2001
+From: Phil Oester
+Date: Mon, 14 Mar 2011 06:22:04 +0000
+Subject: [PATCH] bonding: Incorrect TX queue offset
+Git-commit: fd0e435b0fe85622f167b84432552885a4856ac8
+Patch-mainline: v2.6.39-rc1~468^2~15
+Reference: bnc#687116, CVE-2011-1581
+
+When packets come in from a device with >= 16 receive queues
+headed out a bonding interface, syslog gets filled with this:
+
+ kernel: bond0 selects TX queue 16, but real number of TX queues is 16
+
+because queue_mapping is offset by 1. Adjust return value
+to account for the offset.
+
+This is a revision of my earlier patch (which did not use the
+skb_rx_queue_* helpers - thanks to Ben for the suggestion).
+Andy submitted a similar patch which emits a pr_warning on
+invalid queue selection, but I believe the log spew is
+not useful. We can revisit that question in the future,
+but in the interim I believe fixing the core problem is
+worthwhile.
+
+Signed-off-by: Phil Oester
+Signed-off-by: Andy Gospodarek
+Signed-off-by: David S. Miller
+Signed-off-by: Brandon Philips
+
+---
+ drivers/net/bonding/bond_main.c | 11 +++++++++--
+ 1 files changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
+index 3ad4f50..a93d941 100644
+--- a/drivers/net/bonding/bond_main.c
++++ b/drivers/net/bonding/bond_main.c
+@@ -4341,11 +4341,18 @@ static u16 bond_select_queue(struct net_device *dev, struct sk_buff *skb)
+ {
+ /*
+ * This helper function exists to help dev_pick_tx get the correct
+- * destination queue. Using a helper function skips the a call to
++ * destination queue. Using a helper function skips a call to
+ * skb_tx_hash and will put the skbs in the queue we expect on their
+ * way down to the bonding driver.
+ */
+- return skb->queue_mapping;
++ u16 txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0;
++
++ if (unlikely(txq >= dev->real_num_tx_queues)) {
++ do
++ txq -= dev->real_num_tx_queues;
++ while (txq >= dev->real_num_tx_queues);
++ }
++ return txq;
+ }
+
+ static netdev_tx_t bond_start_xmit(struct sk_buff *skb, struct net_device *dev)
+--
+1.7.3.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/bridge-fix-802.3ad-bonding.patch new/patches.fixes/bridge-fix-802.3ad-bonding.patch
--- old/patches.fixes/bridge-fix-802.3ad-bonding.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/bridge-fix-802.3ad-bonding.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,22 @@
+From: Jiri Bohac
+Subject: bridge: fix 802.3ad bonding
+References: bnc#685469
+
+Prevent LACP frames needed for 802.3ad bonding from being mangled by the
+bridging code if the bonding device is part of a bridge.
+Bug introduced by upstream commit 1e253c3b.
+
+
+diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
+index 648a6dc..d0fe8ed 100644
+--- a/net/bridge/br_input.c
++++ b/net/bridge/br_input.c
+@@ -159,7 +159,7 @@ struct sk_buff *br_handle_frame(struct sk_buff *skb)
+ goto drop;
+
+ /* If STP is turned off, then forward */
+- if (p->br->stp_enabled == BR_NO_STP)
++ if (p->br->stp_enabled == BR_NO_STP && skb->protocol != htons(ETH_P_SLOW))
+ goto forward;
+
+ if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/char-tpm-fix-unitialized-usage-of-data-buffer new/patches.fixes/char-tpm-fix-unitialized-usage-of-data-buffer
--- old/patches.fixes/char-tpm-fix-unitialized-usage-of-data-buffer 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/char-tpm-fix-unitialized-usage-of-data-buffer 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,35 @@
+From: Peter Huewe
+Date: Tue, 29 Mar 2011 13:31:25 +0200
+Subject: char/tpm: Fix unitialized usage of data buffer
+Patch-mainline: v2.6.39-rc1
+Git-commit: 1309d7afbed112f0e8e90be9af975550caa0076b
+References: bnc#680040 CVE-2011-1160
+
+This patch fixes information leakage to the userspace by initializing
+the data buffer to zero.
+
+Reported-by: Peter Huewe
+Signed-off-by: Peter Huewe
+Signed-off-by: Marcel Selhorst
+[ Also removed the silly "* sizeof(u8)". If that isn't 1, we have way
+ deeper problems than a simple multiplication can fix. - Linus ]
+Signed-off-by: Linus Torvalds
+Acked-by: Jeff Mahoney
+---
+ drivers/char/tpm/tpm.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c
+index 1f46f1c..7beb0e2 100644
+--- a/drivers/char/tpm/tpm.c
++++ b/drivers/char/tpm/tpm.c
+@@ -980,7 +980,7 @@ int tpm_open(struct inode *inode, struct file *file)
+ return -EBUSY;
+ }
+
+- chip->data_buffer = kmalloc(TPM_BUFSIZE * sizeof(u8), GFP_KERNEL);
++ chip->data_buffer = kzalloc(TPM_BUFSIZE, GFP_KERNEL);
+ if (chip->data_buffer == NULL) {
+ clear_bit(0, &chip->is_open);
+ put_device(chip->dev);
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drivers-leds-leds-lp5521-c-world-writable-sysfs-engine-files new/patches.fixes/drivers-leds-leds-lp5521-c-world-writable-sysfs-engine-files
--- old/patches.fixes/drivers-leds-leds-lp5521-c-world-writable-sysfs-engine-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drivers-leds-leds-lp5521-c-world-writable-sysfs-engine-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,55 @@
+From: Vasiliy Kulikov
+Date: Tue, 22 Mar 2011 16:30:19 -0700
+Subject: drivers/leds/leds-lp5521.c: world-writable sysfs engine* files
+Patch-mainline: v2.6.39-rc1
+Git-commit: 67d1da79b25c05d9a38b820bb5b5d89c91070ab2
+Introduced-by: v2.6.37-rc2
+References: bnc#673934
+
+Don't allow everybody to change LED settings.
+
+Signed-off-by: Vasiliy Kulikov
+Cc: Richard Purdie
+Signed-off-by: Andrew Morton
+Signed-off-by: Linus Torvalds
+Acked-by: Jeff Mahoney
+---
+ drivers/leds/leds-lp5521.c | 14 +++++++-------
+ 1 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/leds/leds-lp5521.c b/drivers/leds/leds-lp5521.c
+index 80a3ae3..c0cff64 100644
+--- a/drivers/leds/leds-lp5521.c
++++ b/drivers/leds/leds-lp5521.c
+@@ -534,7 +534,7 @@ static ssize_t lp5521_selftest(struct device *dev,
+ }
+
+ /* led class device attributes */
+-static DEVICE_ATTR(led_current, S_IRUGO | S_IWUGO, show_current, store_current);
++static DEVICE_ATTR(led_current, S_IRUGO | S_IWUSR, show_current, store_current);
+ static DEVICE_ATTR(max_current, S_IRUGO , show_max_current, NULL);
+
+ static struct attribute *lp5521_led_attributes[] = {
+@@ -548,15 +548,15 @@ static struct attribute_group lp5521_led_attribute_group = {
+ };
+
+ /* device attributes */
+-static DEVICE_ATTR(engine1_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine1_mode, S_IRUGO | S_IWUSR,
+ show_engine1_mode, store_engine1_mode);
+-static DEVICE_ATTR(engine2_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine2_mode, S_IRUGO | S_IWUSR,
+ show_engine2_mode, store_engine2_mode);
+-static DEVICE_ATTR(engine3_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine3_mode, S_IRUGO | S_IWUSR,
+ show_engine3_mode, store_engine3_mode);
+-static DEVICE_ATTR(engine1_load, S_IWUGO, NULL, store_engine1_load);
+-static DEVICE_ATTR(engine2_load, S_IWUGO, NULL, store_engine2_load);
+-static DEVICE_ATTR(engine3_load, S_IWUGO, NULL, store_engine3_load);
++static DEVICE_ATTR(engine1_load, S_IWUSR, NULL, store_engine1_load);
++static DEVICE_ATTR(engine2_load, S_IWUSR, NULL, store_engine2_load);
++static DEVICE_ATTR(engine3_load, S_IWUSR, NULL, store_engine3_load);
+ static DEVICE_ATTR(selftest, S_IRUGO, lp5521_selftest, NULL);
+
+ static struct attribute *lp5521_attributes[] = {
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drivers-leds-leds-lp5523-c-world-writable-engine-sysfs-files new/patches.fixes/drivers-leds-leds-lp5523-c-world-writable-engine-sysfs-files
--- old/patches.fixes/drivers-leds-leds-lp5523-c-world-writable-engine-sysfs-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drivers-leds-leds-lp5523-c-world-writable-engine-sysfs-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,64 @@
+From: Vasiliy Kulikov
+Date: Tue, 22 Mar 2011 16:30:20 -0700
+Subject: drivers/leds/leds-lp5523.c: world-writable engine* sysfs files
+Patch-mainline: v2.6.39-rc1
+Git-commit: ccd7510fd8dea5b4b2af87fb2aef2ebd6b23b76b
+Introduced-by: v2.6.37-rc2
+References: bnc#673934
+
+Don't allow everybody to change LED settings.
+
+Signed-off-by: Vasiliy Kulikov
+Cc: Richard Purdie
+Signed-off-by: Andrew Morton
+Signed-off-by: Linus Torvalds
+Acked-by: Jeff Mahoney
+---
+ drivers/leds/leds-lp5523.c | 20 ++++++++++----------
+ 1 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/leds/leds-lp5523.c b/drivers/leds/leds-lp5523.c
+index d0c4068..e19fed2 100644
+--- a/drivers/leds/leds-lp5523.c
++++ b/drivers/leds/leds-lp5523.c
+@@ -713,7 +713,7 @@ static ssize_t store_current(struct device *dev,
+ }
+
+ /* led class device attributes */
+-static DEVICE_ATTR(led_current, S_IRUGO | S_IWUGO, show_current, store_current);
++static DEVICE_ATTR(led_current, S_IRUGO | S_IWUSR, show_current, store_current);
+ static DEVICE_ATTR(max_current, S_IRUGO , show_max_current, NULL);
+
+ static struct attribute *lp5523_led_attributes[] = {
+@@ -727,21 +727,21 @@ static struct attribute_group lp5523_led_attribute_group = {
+ };
+
+ /* device attributes */
+-static DEVICE_ATTR(engine1_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine1_mode, S_IRUGO | S_IWUSR,
+ show_engine1_mode, store_engine1_mode);
+-static DEVICE_ATTR(engine2_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine2_mode, S_IRUGO | S_IWUSR,
+ show_engine2_mode, store_engine2_mode);
+-static DEVICE_ATTR(engine3_mode, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine3_mode, S_IRUGO | S_IWUSR,
+ show_engine3_mode, store_engine3_mode);
+-static DEVICE_ATTR(engine1_leds, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine1_leds, S_IRUGO | S_IWUSR,
+ show_engine1_leds, store_engine1_leds);
+-static DEVICE_ATTR(engine2_leds, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine2_leds, S_IRUGO | S_IWUSR,
+ show_engine2_leds, store_engine2_leds);
+-static DEVICE_ATTR(engine3_leds, S_IRUGO | S_IWUGO,
++static DEVICE_ATTR(engine3_leds, S_IRUGO | S_IWUSR,
+ show_engine3_leds, store_engine3_leds);
+-static DEVICE_ATTR(engine1_load, S_IWUGO, NULL, store_engine1_load);
+-static DEVICE_ATTR(engine2_load, S_IWUGO, NULL, store_engine2_load);
+-static DEVICE_ATTR(engine3_load, S_IWUGO, NULL, store_engine3_load);
++static DEVICE_ATTR(engine1_load, S_IWUSR, NULL, store_engine1_load);
++static DEVICE_ATTR(engine2_load, S_IWUSR, NULL, store_engine2_load);
++static DEVICE_ATTR(engine3_load, S_IWUSR, NULL, store_engine3_load);
+ static DEVICE_ATTR(selftest, S_IRUGO, lp5523_selftest, NULL);
+
+ static struct attribute *lp5523_attributes[] = {
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drivers-misc-ep93xx_pwm-c-world-writable-sysfs-files new/patches.fixes/drivers-misc-ep93xx_pwm-c-world-writable-sysfs-files
--- old/patches.fixes/drivers-misc-ep93xx_pwm-c-world-writable-sysfs-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drivers-misc-ep93xx_pwm-c-world-writable-sysfs-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,40 @@
+From: Vasiliy Kulikov
+Date: Tue, 22 Mar 2011 16:34:01 -0700
+Subject: drivers/misc/ep93xx_pwm.c: world-writable sysfs files
+Patch-mainline: v2.6.39-rc1
+Git-commit: deb187e72470b0382d4f0cb859e76e1ebc3a1082
+Introduced-by: v2.6.32-rc1
+References: bnc#673934
+
+Don't allow everybody to change device settings.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Hartley Sweeten
+Cc: Matthieu Crapet
+Signed-off-by: Andrew Morton
+Signed-off-by: Linus Torvalds
+Acked-by: Jeff Mahoney
+---
+ drivers/misc/ep93xx_pwm.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/misc/ep93xx_pwm.c b/drivers/misc/ep93xx_pwm.c
+index 46b3439..16d7179 100644
+--- a/drivers/misc/ep93xx_pwm.c
++++ b/drivers/misc/ep93xx_pwm.c
+@@ -249,11 +249,11 @@ static ssize_t ep93xx_pwm_set_invert(struct device *dev,
+
+ static DEVICE_ATTR(min_freq, S_IRUGO, ep93xx_pwm_get_min_freq, NULL);
+ static DEVICE_ATTR(max_freq, S_IRUGO, ep93xx_pwm_get_max_freq, NULL);
+-static DEVICE_ATTR(freq, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(freq, S_IWUSR | S_IRUGO,
+ ep93xx_pwm_get_freq, ep93xx_pwm_set_freq);
+-static DEVICE_ATTR(duty_percent, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(duty_percent, S_IWUSR | S_IRUGO,
+ ep93xx_pwm_get_duty_percent, ep93xx_pwm_set_duty_percent);
+-static DEVICE_ATTR(invert, S_IWUGO | S_IRUGO,
++static DEVICE_ATTR(invert, S_IWUSR | S_IRUGO,
+ ep93xx_pwm_get_invert, ep93xx_pwm_set_invert);
+
+ static struct attribute *ep93xx_pwm_attrs[] = {
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drivers-rtc-rtc-ds1511-c-world-writable-sysfs-nvram-file new/patches.fixes/drivers-rtc-rtc-ds1511-c-world-writable-sysfs-nvram-file
--- old/patches.fixes/drivers-rtc-rtc-ds1511-c-world-writable-sysfs-nvram-file 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drivers-rtc-rtc-ds1511-c-world-writable-sysfs-nvram-file 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,34 @@
+From: Vasiliy Kulikov
+Date: Tue, 22 Mar 2011 16:34:53 -0700
+Subject: drivers/rtc/rtc-ds1511.c: world-writable sysfs nvram file
+Patch-mainline: v2.6.39-rc1
+Git-commit: 49d50fb1c28738ef6bad0c2b87d5355a1653fed5
+Introduced-by: v2.6.25-rc1
+References: bnc#673934
+
+Don't allow everybogy to write to NVRAM.
+
+Signed-off-by: Vasiliy Kulikov
+Cc: Andy Sharp
+Cc: Alessandro Zummo
+Signed-off-by: Andrew Morton
+Signed-off-by: Linus Torvalds
+Acked-by: Jeff Mahoney
+---
+ drivers/rtc/rtc-ds1511.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/rtc/rtc-ds1511.c b/drivers/rtc/rtc-ds1511.c
+index 3fffd70..fbabc77 100644
+--- a/drivers/rtc/rtc-ds1511.c
++++ b/drivers/rtc/rtc-ds1511.c
+@@ -468,7 +468,7 @@ ds1511_nvram_write(struct file *filp, struct kobject *kobj,
+ static struct bin_attribute ds1511_nvram_attr = {
+ .attr = {
+ .name = "nvram",
+- .mode = S_IRUGO | S_IWUGO,
++ .mode = S_IRUGO | S_IWUSR,
+ },
+ .size = DS1511_RAM_MAX,
+ .read = ds1511_nvram_read,
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-radeon-kms-check-AA-resolve-registers-on-r300.patch new/patches.fixes/drm-radeon-kms-check-AA-resolve-registers-on-r300.patch
--- old/patches.fixes/drm-radeon-kms-check-AA-resolve-registers-on-r300.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/drm-radeon-kms-check-AA-resolve-registers-on-r300.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,196 @@
+From: Marek Olšák
+Subject: drm/radeon/kms: check AA resolve registers on r300
+References: bnc#674693
+Patch-Mainline: yes
+Git-commit: fff1ce4dc6113b6fdc4e3a815ca5fd229408f8ef
+
+
+Signed-off-by: Egbert Eich
+
+This is an important security fix because we allowed arbitrary values
+to be passed to AARESOLVE_OFFSET. This also puts the right buffer address
+in the register. Also included fix from Git-commit: 45039c.
+
+Signed-off-by: Marek Olšák
+Signed-off-by: Dave Airlie
+---
+ drivers/gpu/drm/radeon/r100.c | 23 +++++++++++++++++++++++
+ drivers/gpu/drm/radeon/r100_track.h | 4 +++-
+ drivers/gpu/drm/radeon/r300.c | 21 +++++++++++++++++++++
+ drivers/gpu/drm/radeon/r300_reg.h | 2 ++
+ drivers/gpu/drm/radeon/reg_srcs/r300 | 3 ---
+ drivers/gpu/drm/radeon/reg_srcs/r420 | 3 ---
+ drivers/gpu/drm/radeon/reg_srcs/rs600 | 3 ---
+ drivers/gpu/drm/radeon/reg_srcs/rv515 | 3 ---
+ 8 files changed, 49 insertions(+), 13 deletions(-)
+
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r100.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/r100.c
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r100.c
+@@ -3297,6 +3297,26 @@ int r100_cs_track_check(struct radeon_de
+ return -EINVAL;
+ }
+ }
++ if (track->aa_dirty && track->aaresolve) {
++ if (track->aa.robj == NULL) {
++ DRM_ERROR("[drm] No buffer for AA resolve buffer %d !\n", i);
++ return -EINVAL;
++ }
++ /* I believe the format comes from colorbuffer0. */
++ size = track->aa.pitch * track->cb[0].cpp * track->maxy;
++ size += track->aa.offset;
++ if (size > radeon_bo_size(track->aa.robj)) {
++ DRM_ERROR("[drm] Buffer too small for AA resolve buffer %d "
++ "(need %lu have %lu) !\n", i, size,
++ radeon_bo_size(track->aa.robj));
++ DRM_ERROR("[drm] AA resolve buffer %d (%u %u %u %u)\n",
++ i, track->aa.pitch, track->cb[0].cpp,
++ track->aa.offset, track->maxy);
++ return -EINVAL;
++ }
++ }
++ track->aa_dirty = false;
++
+ prim_walk = (track->vap_vf_cntl >> 4) & 0x3;
+ if (track->vap_vf_cntl & (1 << 14)) {
+ nverts = track->vap_alt_nverts;
+@@ -3363,6 +3383,8 @@ void r100_cs_track_clear(struct radeon_d
+ {
+ unsigned i, face;
+
++ track->aa_dirty = true;
++
+ if (rdev->family < CHIP_R300) {
+ track->num_cb = 1;
+ if (rdev->family <= CHIP_RS200)
+@@ -3376,6 +3398,9 @@ void r100_cs_track_clear(struct radeon_d
+ track->num_texture = 16;
+ track->maxy = 4096;
+ track->separate_cube = 0;
++ track->aaresolve = false;
++ track->aa.robj = NULL;
++
+ }
+
+ for (i = 0; i < track->num_cb; i++) {
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r100_track.h
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/r100_track.h
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r100_track.h
+@@ -73,11 +73,14 @@ struct r100_cs_track {
+ struct r100_cs_track_array arrays[11];
+ struct r100_cs_track_cb cb[R300_MAX_CB];
+ struct r100_cs_track_cb zb;
++ struct r100_cs_track_cb aa;
+ struct r100_cs_track_texture textures[R300_TRACK_MAX_TEXTURE];
+ bool z_enabled;
+ bool separate_cube;
+ bool zb_cb_clear;
+ bool blend_read_enable;
++ bool aa_dirty;
++ bool aaresolve;
+ };
+
+ int r100_cs_track_check(struct radeon_device *rdev, struct r100_cs_track *track);
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r300.c
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/r300.c
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r300.c
+@@ -1074,6 +1074,27 @@ static int r300_packet0_check(struct rad
+ break;
+ case 0x4f28: /* ZB_DEPTHCLEARVALUE */
+ break;
++ case R300_RB3D_AARESOLVE_OFFSET:
++ r = r100_cs_packet_next_reloc(p, &reloc);
++ if (r) {
++ DRM_ERROR("No reloc for ib[%d]=0x%04X\n",
++ idx, reg);
++ r100_cs_dump_packet(p, pkt);
++ return r;
++ }
++ track->aa.robj = reloc->robj;
++ track->aa.offset = idx_value;
++ track->aa_dirty = true;
++ ib[idx] = idx_value + ((u32)reloc->lobj.gpu_offset);
++ break;
++ case R300_RB3D_AARESOLVE_PITCH:
++ track->aa.pitch = idx_value & 0x3FFE;
++ track->aa_dirty = true;
++ break;
++ case R300_RB3D_AARESOLVE_CTL:
++ track->aaresolve = idx_value & 0x1;
++ track->aa_dirty = true;
++ break;
+ case 0x4f30: /* ZB_MASK_OFFSET */
+ case 0x4f34: /* ZB_ZMASK_PITCH */
+ case 0x4f44: /* ZB_HIZ_OFFSET */
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r300_reg.h
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/r300_reg.h
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/r300_reg.h
+@@ -1371,6 +1371,8 @@
+ #define R300_RB3D_COLORPITCH2 0x4E40 /* GUESS */
+ #define R300_RB3D_COLORPITCH3 0x4E44 /* GUESS */
+
++#define R300_RB3D_AARESOLVE_OFFSET 0x4E80
++#define R300_RB3D_AARESOLVE_PITCH 0x4E84
+ #define R300_RB3D_AARESOLVE_CTL 0x4E88
+ /* gap */
+
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/r300
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/reg_srcs/r300
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/r300
+@@ -706,9 +706,6 @@ r300 0x4f60
+ 0x4E74 RB3D_CMASK_WRINDEX
+ 0x4E78 RB3D_CMASK_DWORD
+ 0x4E7C RB3D_CMASK_RDINDEX
+-0x4E80 RB3D_AARESOLVE_OFFSET
+-0x4E84 RB3D_AARESOLVE_PITCH
+-0x4E88 RB3D_AARESOLVE_CTL
+ 0x4EA0 RB3D_DISCARD_SRC_PIXEL_LTE_THRESHOLD
+ 0x4EA4 RB3D_DISCARD_SRC_PIXEL_GTE_THRESHOLD
+ 0x4F04 ZB_ZSTENCILCNTL
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/r420
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/reg_srcs/r420
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/r420
+@@ -773,9 +773,6 @@ r420 0x4f60
+ 0x4E74 RB3D_CMASK_WRINDEX
+ 0x4E78 RB3D_CMASK_DWORD
+ 0x4E7C RB3D_CMASK_RDINDEX
+-0x4E80 RB3D_AARESOLVE_OFFSET
+-0x4E84 RB3D_AARESOLVE_PITCH
+-0x4E88 RB3D_AARESOLVE_CTL
+ 0x4EA0 RB3D_DISCARD_SRC_PIXEL_LTE_THRESHOLD
+ 0x4EA4 RB3D_DISCARD_SRC_PIXEL_GTE_THRESHOLD
+ 0x4F04 ZB_ZSTENCILCNTL
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/rs600
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/reg_srcs/rs600
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/rs600
+@@ -772,9 +772,6 @@ rs600 0x6d40
+ 0x4E74 RB3D_CMASK_WRINDEX
+ 0x4E78 RB3D_CMASK_DWORD
+ 0x4E7C RB3D_CMASK_RDINDEX
+-0x4E80 RB3D_AARESOLVE_OFFSET
+-0x4E84 RB3D_AARESOLVE_PITCH
+-0x4E88 RB3D_AARESOLVE_CTL
+ 0x4EA0 RB3D_DISCARD_SRC_PIXEL_LTE_THRESHOLD
+ 0x4EA4 RB3D_DISCARD_SRC_PIXEL_GTE_THRESHOLD
+ 0x4F04 ZB_ZSTENCILCNTL
+Index: linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/rv515
+===================================================================
+--- linux-2.6.37-openSUSE-11.4.orig/drivers/gpu/drm/radeon/reg_srcs/rv515
++++ linux-2.6.37-openSUSE-11.4/drivers/gpu/drm/radeon/reg_srcs/rv515
+@@ -468,9 +468,6 @@ rv515 0x6d40
+ 0x4E74 RB3D_CMASK_WRINDEX
+ 0x4E78 RB3D_CMASK_DWORD
+ 0x4E7C RB3D_CMASK_RDINDEX
+-0x4E80 RB3D_AARESOLVE_OFFSET
+-0x4E84 RB3D_AARESOLVE_PITCH
+-0x4E88 RB3D_AARESOLVE_CTL
+ 0x4EA0 RB3D_DISCARD_SRC_PIXEL_LTE_THRESHOLD
+ 0x4EA4 RB3D_DISCARD_SRC_PIXEL_GTE_THRESHOLD
+ 0x4EF8 RB3D_CONSTANT_COLOR_AR
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ext4-fix-ext4_da_block_invalidatepages-to-handle-pag.patch new/patches.fixes/ext4-fix-ext4_da_block_invalidatepages-to-handle-pag.patch
--- old/patches.fixes/ext4-fix-ext4_da_block_invalidatepages-to-handle-pag.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/ext4-fix-ext4_da_block_invalidatepages-to-handle-pag.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,71 @@
+From: Curt Wohlgemuth
+Subject: [PATCH 2/2] ext4: fix ext4_da_block_invalidatepages() to handle page range properly
+Patch-mainline: yes
+Git-commit: c7f5938adce6727b9d17785f289c1146bd88d678
+References: bnc#679898
+
+If ext4_da_block_invalidatepages() is called because of a
+failure from ext4_map_blocks() in mpage_da_map_and_submit(),
+it's supposed to clean up -- including unlock -- all the
+pages in the mpd structure. But these values may not match
+up, even on a system in which block size == page size:
+
+ mpd->b_blocknr != mpd->first_page
+ mpd->b_size != (mpd->next_page - mpd->first_page)
+
+ext4_da_block_invalidatepages() has been using b_blocknr and
+b_size; this patch changes it to use first_page and
+next_page.
+
+Tested: I injected a small number (5%) of failures in
+ext4_map_blocks() in the case that the flags contain
+EXT4_GET_BLOCKS_DELALLOC_RESERVE, and ran fsstress on this
+kernel. Without this patch, I got hung tasks every time.
+With this patch, I see no hangs in many runs of fsstress.
+
+Signed-off-by: Curt Wohlgemuth
+Signed-off-by: "Theodore Ts'o"
+Acked-by: Jan Kara
+---
+ fs/ext4/inode.c | 11 ++++-------
+ 1 files changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
+index fd369db..e878c3a 100644
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -2165,8 +2165,7 @@ static int mpage_da_submit_io(struct mpage_da_data *mpd,
+ return ret;
+ }
+
+-static void ext4_da_block_invalidatepages(struct mpage_da_data *mpd,
+- sector_t logical, long blk_cnt)
++static void ext4_da_block_invalidatepages(struct mpage_da_data *mpd)
+ {
+ int nr_pages, i;
+ pgoff_t index, end;
+@@ -2174,9 +2173,8 @@ static void ext4_da_block_invalidatepages(struct mpage_da_data *mpd,
+ struct inode *inode = mpd->inode;
+ struct address_space *mapping = inode->i_mapping;
+
+- index = logical >> (PAGE_CACHE_SHIFT - inode->i_blkbits);
+- end = (logical + blk_cnt - 1) >>
+- (PAGE_CACHE_SHIFT - inode->i_blkbits);
++ index = mpd->first_page;
++ end = mpd->next_page - 1;
+ while (index <= end) {
+ nr_pages = pagevec_lookup(&pvec, mapping, index, PAGEVEC_SIZE);
+ if (nr_pages == 0)
+@@ -2312,8 +2310,7 @@ static void mpage_da_map_and_submit(struct mpage_da_data *mpd)
+ ext4_print_free_blocks(mpd->inode);
+ }
+ /* invalidate all the pages */
+- ext4_da_block_invalidatepages(mpd, next,
+- mpd->b_size >> mpd->inode->i_blkbits);
++ ext4_da_block_invalidatepages(mpd);
+
+ /* Mark this page range as having been completed */
+ mpd->io_done = 1;
+--
+1.7.1
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ext4-mark-multi-page-IO-complete-on-mapping-failure.patch new/patches.fixes/ext4-mark-multi-page-IO-complete-on-mapping-failure.patch
--- old/patches.fixes/ext4-mark-multi-page-IO-complete-on-mapping-failure.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/ext4-mark-multi-page-IO-complete-on-mapping-failure.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,45 @@
+From: Curt Wohlgemuth
+Subject: [PATCH 1/2] ext4: mark multi-page IO complete on mapping failure
+Patch-mainline: yes
+References: bnc#679898
+Git-commit: e0fd9b90765f604374c42de8ac59d6584afce264
+
+In mpage_da_map_and_submit(), if we have a delayed block
+allocation failure from ext4_map_blocks(), we need to mark
+the IO as complete, by setting
+
+ mpd->io_done = 1;
+
+Otherwise, we could end up submitting the pages in an outer
+loop; since they are unlocked on mapping failure in
+ext4_da_block_invalidatepages(), this will cause a bug check
+in mpage_da_submit_io().
+
+I tested this by injected failures into ext4_map_blocks().
+Without this patch, a simple fsstress run will bug check;
+with the patch, it works fine.
+
+Signed-off-by: Curt Wohlgemuth
+Signed-off-by: "Theodore Ts'o"
+Acked-by: Jan Kara
+---
+ fs/ext4/inode.c | 3 +++
+ 1 files changed, 3 insertions(+), 0 deletions(-)
+
+diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
+index c6c6b7f..fd369db 100644
+--- a/fs/ext4/inode.c
++++ b/fs/ext4/inode.c
+@@ -2314,6 +2314,9 @@ static void mpage_da_map_and_submit(struct mpage_da_data *mpd)
+ /* invalidate all the pages */
+ ext4_da_block_invalidatepages(mpd, next,
+ mpd->b_size >> mpd->inode->i_blkbits);
++
++ /* Mark this page range as having been completed */
++ mpd->io_done = 1;
+ return;
+ }
+ BUG_ON(blks == 0);
+--
+1.7.1
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops new/patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops
--- old/patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,54 @@
+From: Timo Warns
+Subject: fs/partitions/efi.c: corrupted GUID partition tables can cause kernel oops
+References: bnc#687113 CVE-2011-1577
+Patch-mainline: Probably 2.6.39; In -mm already
+
+The kernel automatically evaluates partition tables of storage devices.
+The code for evaluating GUID partitions (in fs/partitions/efi.c) contains
+a bug that causes a kernel oops on certain corrupted GUID partition
+tables.
+
+This bug has security impacts, because it allows, for example, to
+prepare a storage device that crashes a kernel subsystem upon connecting
+the device (e.g., a "USB Stick of (Partial) Death").
+
+ crc = efi_crc32((const unsigned char *) (*gpt), le32_to_cpu((*gpt)->header_size));
+
+computes a CRC32 checksum over gpt covering (*gpt)->header_size bytes.
+There is no validation of (*gpt)->header_size before the efi_crc32 call.
+
+A corrupted partition table may have large values for (*gpt)->header_size.
+ In this case, the CRC32 computation access memory beyond the memory
+allocated for gpt, which may cause a kernel heap overflow.
+
+Validate value of GUID partition table header size.
+
+Signed-off-by: Timo Warns
+Cc: Matt Domsch
+Cc: Eugene Teo
+Cc: Dave Jones
+Signed-off-by: Andrew Morton
+Acked-by: Jeff Mahoney
+---
+
+ fs/partitions/efi.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/fs/partitions/efi.c
++++ b/fs/partitions/efi.c
+@@ -310,6 +310,15 @@ static int is_gpt_valid(struct parsed_pa
+ goto fail;
+ }
+
++ /* Check the GUID Partition Table header size */
++ if (le32_to_cpu((*gpt)->header_size) >
++ bdev_logical_block_size(state->bdev)) {
++ pr_debug("GUID Partition Table Header size is wrong: %u > %u\n",
++ le32_to_cpu((*gpt)->header_size),
++ bdev_logical_block_size(state->bdev));
++ goto fail;
++ }
++
+ /* Check the GUID Partition Table CRC */
+ origcrc = le32_to_cpu((*gpt)->header_crc32);
+ (*gpt)->header_crc32 = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/i2c-algo-bit-call-pre-post_xfer-for-bit_test.patch new/patches.fixes/i2c-algo-bit-call-pre-post_xfer-for-bit_test.patch
--- old/patches.fixes/i2c-algo-bit-call-pre-post_xfer-for-bit_test.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/i2c-algo-bit-call-pre-post_xfer-for-bit_test.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,82 @@
+From d3b3e15da14ded61c9654db05863b04a2435f4cc Mon Sep 17 00:00:00 2001
+From: Alex Deucher
+Date: Sun, 17 Apr 2011 10:20:19 +0200
+Subject: [PATCH] i2c-algo-bit: Call pre/post_xfer for bit_test
+Patch-mainline: 2.6.39
+References: bnc#669937, freedesktop#36221
+
+Apparently some distros set i2c-algo-bit.bit_test to 1 by
+default. In some cases this causes i2c_bit_add_bus
+to fail and prevents the i2c bus from being added. In the
+radeon case, we fail to add the ddc i2c buses which prevents
+the driver from being able to detect attached monitors.
+The i2c bus works fine even if bit_test fails. This is likely
+due to gpio switching that is required and handled in the
+pre/post_xfer hooks, so call the pre/post_xfer hooks in the
+bit test as well.
+
+Fixes:
+https://bugs.freedesktop.org/show_bug.cgi?id=36221
+
+Signed-off-by: Alex Deucher
+Signed-off-by: Jean Delvare
+Cc: stable@kernel.org [.38 down to .34]
+Acked-by: Jean Delvare
+---
+ drivers/i2c/algos/i2c-algo-bit.c | 24 +++++++++++++++++++-----
+ 1 file changed, 19 insertions(+), 5 deletions(-)
+
+--- a/drivers/i2c/algos/i2c-algo-bit.c
++++ b/drivers/i2c/algos/i2c-algo-bit.c
+@@ -232,9 +232,17 @@ static int i2c_inb(struct i2c_adapter *i
+ * Sanity check for the adapter hardware - check the reaction of
+ * the bus lines only if it seems to be idle.
+ */
+-static int test_bus(struct i2c_algo_bit_data *adap, char *name)
++static int test_bus(struct i2c_adapter *i2c_adap)
+ {
+- int scl, sda;
++ struct i2c_algo_bit_data *adap = i2c_adap->algo_data;
++ const char *name = i2c_adap->name;
++ int scl, sda, ret;
++
++ if (adap->pre_xfer) {
++ ret = adap->pre_xfer(i2c_adap);
++ if (ret < 0)
++ return -ENODEV;
++ }
+
+ if (adap->getscl == NULL)
+ pr_info("%s: Testing SDA only, SCL is not readable\n", name);
+@@ -297,11 +305,19 @@ static int test_bus(struct i2c_algo_bit_
+ "while pulling SCL high!\n", name);
+ goto bailout;
+ }
++
++ if (adap->post_xfer)
++ adap->post_xfer(i2c_adap);
++
+ pr_info("%s: Test OK\n", name);
+ return 0;
+ bailout:
+ sdahi(adap);
+ sclhi(adap);
++
++ if (adap->post_xfer)
++ adap->post_xfer(i2c_adap);
++
+ return -ENODEV;
+ }
+
+@@ -602,10 +618,8 @@ static const struct i2c_algorithm i2c_bi
+ */
+ static int i2c_bit_prepare_bus(struct i2c_adapter *adap)
+ {
+- struct i2c_algo_bit_data *bit_adap = adap->algo_data;
+-
+ if (bit_test) {
+- int ret = test_bus(bit_adap, adap->name);
++ int ret = test_bus(adap);
+ if (ret < 0)
+ return -ENODEV;
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/irda-validate-peer-name-and-attribute-lengths new/patches.fixes/irda-validate-peer-name-and-attribute-lengths
--- old/patches.fixes/irda-validate-peer-name-and-attribute-lengths 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/irda-validate-peer-name-and-attribute-lengths 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,41 @@
+From: Dan Rosenberg
+Date: Sun, 20 Mar 2011 15:32:06 +0000
+Subject: irda: validate peer name and attribute lengths
+Patch-mainline: v2.6.39-rc1
+Git-commit: d370af0ef7951188daeb15bae75db7ba57c67846
+References: bnc#681497 CVE-2011-1180
+
+Length fields provided by a peer for names and attributes may be longer
+than the destination array sizes. Validate lengths to prevent stack
+buffer overflows.
+
+Signed-off-by: Dan Rosenberg
+Cc: stable@kernel.org
+Signed-off-by: David S. Miller
+Acked-by: Jeff Mahoney
+---
+ net/irda/iriap.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/net/irda/iriap.c b/net/irda/iriap.c
+index 5b743bd..3647753 100644
+--- a/net/irda/iriap.c
++++ b/net/irda/iriap.c
+@@ -656,10 +656,16 @@ static void iriap_getvaluebyclass_indication(struct iriap_cb *self,
+ n = 1;
+
+ name_len = fp[n++];
++
++ IRDA_ASSERT(name_len < IAS_MAX_CLASSNAME + 1, return;);
++
+ memcpy(name, fp+n, name_len); n+=name_len;
+ name[name_len] = '\0';
+
+ attr_len = fp[n++];
++
++ IRDA_ASSERT(attr_len < IAS_MAX_ATTRIBNAME + 1, return;);
++
+ memcpy(attr, fp+n, attr_len); n+=attr_len;
+ attr[attr_len] = '\0';
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/libata-dvr-212d-can-t-do-setxfer-dvd-rw-dvr-212d new/patches.fixes/libata-dvr-212d-can-t-do-setxfer-dvd-rw-dvr-212d
--- old/patches.fixes/libata-dvr-212d-can-t-do-setxfer-dvd-rw-dvr-212d 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/libata-dvr-212d-can-t-do-setxfer-dvd-rw-dvr-212d 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,32 @@
+From: Francesco Antonacci
+Date: Tue, 25 Jan 2011 11:54:43 +0100
+Subject: libata: DVR-212D can't do SETXFER DVD-RW DVR-212D
+Patch-mainline: v2.6.38-rc3
+Git-commit: 4a5610a04d415ed94af75bb1159d2621d62c8328
+
+PIONEER DVR-212D can't do SETXFER like its sibling DVRTD08. Add
+ATA_HORKAGE_NOSETXFER for it. Reported in bko#27502.
+
+ https://bugzilla.kernel.org/show_bug.cgi?id=27502
+
+Signed-off-by: Francesco Antonacci
+Acked-by: Tejun Heo
+Signed-off-by: Jeff Garzik
+Acked-by: Jeff Mahoney
+---
+ drivers/ata/libata-core.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
+index a31fe96..d4e52e2 100644
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -4138,6 +4138,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
+ * device and controller are SATA.
+ */
+ { "PIONEER DVD-RW DVRTD08", "1.00", ATA_HORKAGE_NOSETXFER },
++ { "PIONEER DVD-RW DVR-212D", "1.28", ATA_HORKAGE_NOSETXFER },
+
+ /* End Marker */
+ { }
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d new/patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d
--- old/patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,35 @@
+From: Jeff Mahoney
+Subject: libata: DVR-216D can't do SETXFER DVD-RW DVR-216D
+References: bnc#679143
+Patch-mainline: Submitted 19 Apr 2011
+
+ From: Francesco Antonacci
+ Date: Tue, 25 Jan 2011 11:54:43 +0100
+ Subject: libata: DVR-212D can't do SETXFER DVD-RW DVR-212D
+ Patch-mainline: v2.6.38-rc3
+ Git-commit: 4a5610a04d415ed94af75bb1159d2621d62c8328
+
+ PIONEER DVR-212D can't do SETXFER like its sibling DVRTD08. Add
+ ATA_HORKAGE_NOSETXFER for it. Reported in bko#27502.
+
+ https://bugzilla.kernel.org/show_bug.cgi?id=27502
+
+ Signed-off-by: Francesco Antonacci
+ Acked-by: Tejun Heo
+ Signed-off-by: Jeff Garzik
+Signed-off-by: Jeff Mahoney
+---
+ drivers/ata/libata-core.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -4138,6 +4138,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
+ */
+ { "PIONEER DVD-RW DVRTD08", "1.00", ATA_HORKAGE_NOSETXFER },
+ { "PIONEER DVD-RW DVR-212D", "1.28", ATA_HORKAGE_NOSETXFER },
++ { "PIONEER DVD-RW DVR-216D", "1.08", ATA_HORKAGE_NOSETXFER },
+
+ /* End Marker */
+ { }
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/media-video-sn9c102-world-wirtable-sysfs-files new/patches.fixes/media-video-sn9c102-world-wirtable-sysfs-files
--- old/patches.fixes/media-video-sn9c102-world-wirtable-sysfs-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/media-video-sn9c102-world-wirtable-sysfs-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,37 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 09:23:33 -0300
+Subject: [media] video: sn9c102: world-wirtable sysfs files
+Patch-mainline: v2.6.39-rc2
+Git-commit: 14ddc3188d50855ae2a419a6aced995e2834e5d4
+Introduced-by: v2.6.8-rc2
+References: bnc#673934
+
+Don't allow everybody to change video settings.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Mauro Carvalho Chehab
+Acked-by: Luca Risolia
+Signed-off-by: Mauro Carvalho Chehab
+Acked-by: Jeff Mahoney
+---
+ drivers/media/video/sn9c102/sn9c102_core.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c
+index 84984f6..ce56a1c 100644
+--- a/drivers/media/video/sn9c102/sn9c102_core.c
++++ b/drivers/media/video/sn9c102/sn9c102_core.c
+@@ -1430,9 +1430,9 @@ static DEVICE_ATTR(i2c_reg, S_IRUGO | S_IWUSR,
+ sn9c102_show_i2c_reg, sn9c102_store_i2c_reg);
+ static DEVICE_ATTR(i2c_val, S_IRUGO | S_IWUSR,
+ sn9c102_show_i2c_val, sn9c102_store_i2c_val);
+-static DEVICE_ATTR(green, S_IWUGO, NULL, sn9c102_store_green);
+-static DEVICE_ATTR(blue, S_IWUGO, NULL, sn9c102_store_blue);
+-static DEVICE_ATTR(red, S_IWUGO, NULL, sn9c102_store_red);
++static DEVICE_ATTR(green, S_IWUSR, NULL, sn9c102_store_green);
++static DEVICE_ATTR(blue, S_IWUSR, NULL, sn9c102_store_blue);
++static DEVICE_ATTR(red, S_IWUSR, NULL, sn9c102_store_red);
+ static DEVICE_ATTR(frame_header, S_IRUGO, sn9c102_show_frame_header, NULL);
+
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mfd-ab3100-world-writable-debugfs-_priv-files new/patches.fixes/mfd-ab3100-world-writable-debugfs-_priv-files
--- old/patches.fixes/mfd-ab3100-world-writable-debugfs-_priv-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/mfd-ab3100-world-writable-debugfs-_priv-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,41 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 15:23:36 +0300
+Subject: mfd: ab3100: world-writable debugfs *_priv files
+Patch-mainline: v2.6.39-rc1
+Git-commit: f8a0697722d12a201588225999cfc8bfcbc82781
+Introduced-by: v2.6.31-rc1
+References: bnc#673934
+
+Don't allow everybody to change device hardware registers.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Linus Walleij
+Signed-off-by: Samuel Ortiz
+Acked-by: Jeff Mahoney
+---
+ drivers/mfd/ab3100-core.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c
+index 4193af5..1707d22 100644
+--- a/drivers/mfd/ab3100-core.c
++++ b/drivers/mfd/ab3100-core.c
+@@ -613,7 +613,7 @@ static void ab3100_setup_debugfs(struct ab3100 *ab3100)
+ ab3100_get_priv.ab3100 = ab3100;
+ ab3100_get_priv.mode = false;
+ ab3100_get_reg_file = debugfs_create_file("get_reg",
+- S_IWUGO, ab3100_dir, &ab3100_get_priv,
++ S_IWUSR, ab3100_dir, &ab3100_get_priv,
+ &ab3100_get_set_reg_fops);
+ if (!ab3100_get_reg_file) {
+ err = -ENOMEM;
+@@ -623,7 +623,7 @@ static void ab3100_setup_debugfs(struct ab3100 *ab3100)
+ ab3100_set_priv.ab3100 = ab3100;
+ ab3100_set_priv.mode = true;
+ ab3100_set_reg_file = debugfs_create_file("set_reg",
+- S_IWUGO, ab3100_dir, &ab3100_set_priv,
++ S_IWUSR, ab3100_dir, &ab3100_set_priv,
+ &ab3100_get_set_reg_fops);
+ if (!ab3100_set_reg_file) {
+ err = -ENOMEM;
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mfd-ab3500-world-writable-debugfs-register-files new/patches.fixes/mfd-ab3500-world-writable-debugfs-register-files
--- old/patches.fixes/mfd-ab3500-world-writable-debugfs-register-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/mfd-ab3500-world-writable-debugfs-register-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,44 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 15:23:39 +0300
+Subject: mfd: ab3500: world-writable debugfs register-* files
+Patch-mainline: v2.6.39-rc1
+Git-commit: 90c861c2a83d974684974441093ff8a50e6b430b
+Introduced-by: v2.6.35-rc1
+References: bnc#673934
+
+Don't allow everybody to interact with hardware registers.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Linus Walleij
+Signed-off-by: Samuel Ortiz
+Acked-by: Jeff Mahoney
+---
+ drivers/mfd/ab3550-core.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/mfd/ab3550-core.c b/drivers/mfd/ab3550-core.c
+index 5fbca34..681984d 100644
+--- a/drivers/mfd/ab3550-core.c
++++ b/drivers/mfd/ab3550-core.c
+@@ -1053,17 +1053,17 @@ static inline void ab3550_setup_debugfs(struct ab3550 *ab)
+ goto exit_destroy_dir;
+
+ ab3550_bank_file = debugfs_create_file("register-bank",
+- (S_IRUGO | S_IWUGO), ab3550_dir, ab, &ab3550_bank_fops);
++ (S_IRUGO | S_IWUSR), ab3550_dir, ab, &ab3550_bank_fops);
+ if (!ab3550_bank_file)
+ goto exit_destroy_reg;
+
+ ab3550_address_file = debugfs_create_file("register-address",
+- (S_IRUGO | S_IWUGO), ab3550_dir, ab, &ab3550_address_fops);
++ (S_IRUGO | S_IWUSR), ab3550_dir, ab, &ab3550_address_fops);
+ if (!ab3550_address_file)
+ goto exit_destroy_bank;
+
+ ab3550_val_file = debugfs_create_file("register-value",
+- (S_IRUGO | S_IWUGO), ab3550_dir, ab, &ab3550_val_fops);
++ (S_IRUGO | S_IWUSR), ab3550_dir, ab, &ab3550_val_fops);
+ if (!ab3550_val_file)
+ goto exit_destroy_address;
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mfd-ab8500-world-writable-debugfs-register-files new/patches.fixes/mfd-ab8500-world-writable-debugfs-register-files
--- old/patches.fixes/mfd-ab8500-world-writable-debugfs-register-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/mfd-ab8500-world-writable-debugfs-register-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,42 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 15:23:43 +0300
+Subject: mfd: ab8500: world-writable debugfs register-* files
+Patch-mainline: v2.6.39-rc1
+Git-commit: 44bdcb54df2714da18c4a0c6f711a350ab4ed93c
+Introduced-by: v2.6.37-rc1
+References: bnc#673934
+
+Don't allow everybody to interact with hardware registers.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Linus Walleij
+Signed-off-by: Samuel Ortiz
+Acked-by: Jeff Mahoney
+---
+ drivers/mfd/ab8500-debugfs.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/drivers/mfd/ab8500-debugfs.c
++++ b/drivers/mfd/ab8500-debugfs.c
+@@ -585,18 +585,18 @@ static int __devinit ab8500_debug_probe(
+ goto exit_destroy_dir;
+
+ ab8500_bank_file = debugfs_create_file("register-bank",
+- (S_IRUGO | S_IWUGO), ab8500_dir, &plf->dev, &ab8500_bank_fops);
++ (S_IRUGO | S_IWUSR), ab8500_dir, &plf->dev, &ab8500_bank_fops);
+ if (!ab8500_bank_file)
+ goto exit_destroy_reg;
+
+ ab8500_address_file = debugfs_create_file("register-address",
+- (S_IRUGO | S_IWUGO), ab8500_dir, &plf->dev,
++ (S_IRUGO | S_IWUSR), ab8500_dir, &plf->dev,
+ &ab8500_address_fops);
+ if (!ab8500_address_file)
+ goto exit_destroy_bank;
+
+ ab8500_val_file = debugfs_create_file("register-value",
+- (S_IRUGO | S_IWUGO), ab8500_dir, &plf->dev, &ab8500_val_fops);
++ (S_IRUGO | S_IWUSR), ab8500_dir, &plf->dev, &ab8500_val_fops);
+ if (!ab8500_val_file)
+ goto exit_destroy_address;
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch new/patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch
--- old/patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,71 @@
+From: Miklos Szeredi
+Subject: mm: prevent concurrent unmap_mapping_range() on the same inode
+Patch-mainline: never
+
+This was fixed in 2aa15890f3c upstream, but this backported causes
+kABI breakage.
+
+So we revert that the patch in:
+patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch
+
+and introduce this, a bit uglier, fix instead.
+
+Signed-off-by: Miklos Szeredi
+Acked-by: Jiri Slaby
+---
+ include/linux/pagemap.h | 1 +
+ mm/memory.c | 14 ++++++++++++++
+ 2 files changed, 15 insertions(+)
+
+Index: linux.git/include/linux/pagemap.h
+===================================================================
+--- linux.git.orig/include/linux/pagemap.h 2010-11-26 10:52:17.000000000 +0100
++++ linux.git/include/linux/pagemap.h 2010-12-11 13:39:32.000000000 +0100
+@@ -24,6 +24,7 @@ enum mapping_flags {
+ AS_ENOSPC = __GFP_BITS_SHIFT + 1, /* ENOSPC on async write */
+ AS_MM_ALL_LOCKS = __GFP_BITS_SHIFT + 2, /* under mm_take_all_locks() */
+ AS_UNEVICTABLE = __GFP_BITS_SHIFT + 3, /* e.g., ramdisk, SHM_LOCK */
++ AS_UNMAPPING = __GFP_BITS_SHIFT + 4, /* for unmap_mapping_range() */
+ };
+
+ static inline void mapping_set_error(struct address_space *mapping, int error)
+Index: linux.git/mm/memory.c
+===================================================================
+--- linux.git.orig/mm/memory.c 2010-12-11 13:07:28.000000000 +0100
++++ linux.git/mm/memory.c 2010-12-11 14:09:42.000000000 +0100
+@@ -2535,6 +2535,12 @@ static inline void unmap_mapping_range_l
+ }
+ }
+
++static int mapping_sleep(void *x)
++{
++ schedule();
++ return 0;
++}
++
+ /**
+ * unmap_mapping_range - unmap the portion of all mmaps in the specified address_space corresponding to the specified page range in the underlying file.
+ * @mapping: the address space containing mmaps to be unmapped.
+@@ -2572,6 +2578,9 @@ void unmap_mapping_range(struct address_
+ details.last_index = ULONG_MAX;
+ details.i_mmap_lock = &mapping->i_mmap_lock;
+
++ wait_on_bit_lock(&mapping->flags, AS_UNMAPPING, mapping_sleep,
++ TASK_UNINTERRUPTIBLE);
++
+ spin_lock(&mapping->i_mmap_lock);
+
+ /* Protect against endless unmapping loops */
+@@ -2588,6 +2597,11 @@ void unmap_mapping_range(struct address_
+ if (unlikely(!list_empty(&mapping->i_mmap_nonlinear)))
+ unmap_mapping_range_list(&mapping->i_mmap_nonlinear, &details);
+ spin_unlock(&mapping->i_mmap_lock);
++
++ clear_bit_unlock(AS_UNMAPPING, &mapping->flags);
++ smp_mb__after_clear_bit();
++ wake_up_bit(&mapping->flags, AS_UNMAPPING);
++
+ }
+ EXPORT_SYMBOL(unmap_mapping_range);
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file new/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file
--- old/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,26 @@
+From: Vasiliy Kulikov
+Subject: scsi: aic94xx: world-writable sysfs update_bios file
+Introduced-by: v2.6.25-rc1
+Patch-mainline: Submitted 4 Feb 2011
+
+Don't allow everybody to load firmware.
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Jeff Mahoney
+---
+ Compile tested only.
+ drivers/scsi/aic94xx/aic94xx_init.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c
+index 3b7e83d..d5ff142 100644
+--- a/drivers/scsi/aic94xx/aic94xx_init.c
++++ b/drivers/scsi/aic94xx/aic94xx_init.c
+@@ -486,7 +486,7 @@ static ssize_t asd_show_update_bios(struct device *dev,
+ flash_error_table[i].reason);
+ }
+
+-static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUGO,
++static DEVICE_ATTR(update_bios, S_IRUGO|S_IWUSR,
+ asd_show_update_bios, asd_store_update_bios);
+
+ static int asd_create_dev_attrs(struct asd_ha_struct *asd_ha)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/scsi-scsi_transport_iscsi-make-priv_sess-file-writeable-only-by-root new/patches.fixes/scsi-scsi_transport_iscsi-make-priv_sess-file-writeable-only-by-root
--- old/patches.fixes/scsi-scsi_transport_iscsi-make-priv_sess-file-writeable-only-by-root 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/scsi-scsi_transport_iscsi-make-priv_sess-file-writeable-only-by-root 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,31 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 15:24:14 +0300
+Subject: [SCSI] scsi_transport_iscsi: make priv_sess file writeable only by
+ root
+Patch-mainline: v2.6.39-rc1
+Git-commit: 523f3c80bc41d663d5b35c0cd6ce0fad7f3e7188
+Introduced-by: v2.6.36-rc1
+References: bnc#673934
+
+Signed-off-by: Vasiliy Kulikov
+Acked-by: Mike Christie
+Signed-off-by: James Bottomley
+Acked-by: Jeff Mahoney
+---
+ drivers/scsi/scsi_transport_iscsi.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c
+index b421839..3fd16d7 100644
+--- a/drivers/scsi/scsi_transport_iscsi.c
++++ b/drivers/scsi/scsi_transport_iscsi.c
+@@ -1917,7 +1917,7 @@ store_priv_session_##field(struct device *dev, \
+ #define iscsi_priv_session_rw_attr(field, format) \
+ iscsi_priv_session_attr_show(field, format) \
+ iscsi_priv_session_attr_store(field) \
+-static ISCSI_CLASS_ATTR(priv_sess, field, S_IRUGO | S_IWUGO, \
++static ISCSI_CLASS_ATTR(priv_sess, field, S_IRUGO | S_IWUSR, \
+ show_priv_session_##field, \
+ store_priv_session_##field)
+ iscsi_priv_session_rw_attr(recovery_tmo, "%d");
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/sunrpc-gssd-fix-mount-failure-with-rc4-hmac-md5 new/patches.fixes/sunrpc-gssd-fix-mount-failure-with-rc4-hmac-md5
--- old/patches.fixes/sunrpc-gssd-fix-mount-failure-with-rc4-hmac-md5 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/sunrpc-gssd-fix-mount-failure-with-rc4-hmac-md5 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,43 @@
+From: Trond Myklebust
+Subject: Revert "net/sunrpc: Use static const char arrays"
+References: bnc#668880
+Patch-mainline: yes
+Git-commit: 0867659fa3c245bf203d837a82e0f6ea5079c2c5
+
+ This reverts commit 411b5e05617593efebc06241dbc56f42150f2abe.
+
+ Olga Kornievskaia reports:
+
+ Problem: linux client mounting linux server using rc4-hmac-md5
+ enctype. gssd fails with create a context after receiving a reply from
+ the server.
+
+ Diagnose: putting printout statements in the server kernel and
+ kerberos libraries revealed that client and server derived different
+ integrity keys.
+
+ Server kernel code was at fault due the the commit
+
+ [aglo@skydive linux-pnfs]$ git show 411b5e05617593efebc06241dbc56f42150f2abe
+
+ Trond: The problem is that since it relies on virt_to_page(), you cannot
+ call sg_set_buf() for data in the const section.
+
+Reported-by: Olga Kornievskaia
+Signed-off-by: Trond Myklebust
+Acked-by: Suresh Jayaraman
+Cc: stable@kernel.org [2.6.36+]
+
+diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c
+index 9022f0a..0a9a2ec 100644
+--- a/net/sunrpc/auth_gss/gss_krb5_mech.c
++++ b/net/sunrpc/auth_gss/gss_krb5_mech.c
+@@ -427,7 +427,7 @@ static int
+ context_derive_keys_rc4(struct krb5_ctx *ctx)
+ {
+ struct crypto_hash *hmac;
+- static const char sigkeyconstant[] = "signaturekey";
++ char sigkeyconstant[] = "signaturekey";
+ int slen = strlen(sigkeyconstant) + 1; /* include null terminator */
+ struct hash_desc desc;
+ struct scatterlist sg[1];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ubifs-restrict-world-writable-debugfs-files new/patches.fixes/ubifs-restrict-world-writable-debugfs-files
--- old/patches.fixes/ubifs-restrict-world-writable-debugfs-files 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/ubifs-restrict-world-writable-debugfs-files 2011-04-22 17:11:32.000000000 +0200
@@ -0,0 +1,45 @@
+From: Vasiliy Kulikov
+Date: Fri, 4 Feb 2011 15:24:19 +0300
+Subject: UBIFS: restrict world-writable debugfs files
+Patch-mainline: v2.6.39-rc1
+Git-commit: 8c559d30b4e59cf6994215ada1fe744928f494bf
+Introduced-by: v2.6.29-rc1
+References: bnc#673934
+
+Don't allow everybody to dump sensitive information about filesystems.
+
+Signed-off-by: Vasiliy Kulikov
+Signed-off-by: Artem Bityutskiy
+Acked-by: Jeff Mahoney
+---
+ fs/ubifs/debug.c | 6 +++---
+ 1 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/fs/ubifs/debug.c b/fs/ubifs/debug.c
+index 0bee4db..bcb1acb 100644
+--- a/fs/ubifs/debug.c
++++ b/fs/ubifs/debug.c
+@@ -2813,19 +2813,19 @@ int dbg_debugfs_init_fs(struct ubifs_info *c)
+ }
+
+ fname = "dump_lprops";
+- dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
++ dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops);
+ if (IS_ERR(dent))
+ goto out_remove;
+ d->dfs_dump_lprops = dent;
+
+ fname = "dump_budg";
+- dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
++ dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops);
+ if (IS_ERR(dent))
+ goto out_remove;
+ d->dfs_dump_budg = dent;
+
+ fname = "dump_tnc";
+- dent = debugfs_create_file(fname, S_IWUGO, d->dfs_dir, c, &dfs_fops);
++ dent = debugfs_create_file(fname, S_IWUSR, d->dfs_dir, c, &dfs_fops);
+ if (IS_ERR(dent))
+ goto out_remove;
+ d->dfs_dump_tnc = dent;
+
++++++ patches.kabi.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/DRM-revert-drm_device-num_crtcs-change.patch new/patches.kabi/DRM-revert-drm_device-num_crtcs-change.patch
--- old/patches.kabi/DRM-revert-drm_device-num_crtcs-change.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/DRM-revert-drm_device-num_crtcs-change.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,24 @@
+Subject: DRM: revert drm_device num_crtcs change
+From: Jiri Slaby
+Patch-mainline: never
+
+The change broke kABI. But as explained in e62945ccc21, the type
+change is not needed for the fix. So change the type back to satisfy
+kABI checker.
+
+Signed-off-by: Jiri Slaby
+---
+ include/drm/drmP.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/drm/drmP.h
++++ b/include/drm/drmP.h
+@@ -1022,7 +1022,7 @@ struct drm_device {
+ struct platform_device *platformdev; /**< Platform device struture */
+
+ struct drm_sg_mem *sg; /**< Scatter gather memory */
+- unsigned int num_crtcs; /**< Number of CRTCs on this device */
++ int num_crtcs; /**< Number of CRTCs on this device */
+ void *dev_private; /**< device private data */
+ void *mm_private;
+ struct address_space *dev_mapping;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/FUSE-fuse_req-kABI-guard.patch new/patches.kabi/FUSE-fuse_req-kABI-guard.patch
--- old/patches.kabi/FUSE-fuse_req-kABI-guard.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/FUSE-fuse_req-kABI-guard.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,29 @@
+Subject: FUSE: fuse_req kABI guard
+From: Jiri Slaby
+Patch-mainline: never
+
+A stable update changed fuse_req struct. But this structure is FUSE
+internal only, so tell the kabi checker to ignore the change.
+
+Signed-off-by: Jiri Slaby
+---
+ fs/fuse/fuse_i.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/fs/fuse/fuse_i.h
++++ b/fs/fuse/fuse_i.h
+@@ -258,10 +258,14 @@ struct fuse_req {
+ union {
+ struct fuse_forget_in forget_in;
+ struct {
++#ifdef __GENKSYMS__
++ struct fuse_release_in in;
++#else
+ union {
+ struct fuse_release_in in;
+ struct work_struct work;
+ };
++#endif
+ struct path path;
+ } release;
+ struct fuse_init_in init_in;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/SoN-16b-netvm-reserve-inet.patch new/patches.kabi/SoN-16b-netvm-reserve-inet.patch
--- old/patches.kabi/SoN-16b-netvm-reserve-inet.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/SoN-16b-netvm-reserve-inet.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,38 @@
+From: Jiri Slaby
+Subject: SoN: fix kABI breakage
+Patch-mainline: never
+
+patches.suse/SoN-16b-netvm-reserve-inet.patch added 2 includes but
+these define too much for the kabi checker. So avoid the includes for
+the kabi checker.
+
+Signed-off-by: Jiri Slaby
+---
+ net/ipv4/route.c | 2 ++
+ net/ipv6/route.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+--- a/net/ipv4/route.c
++++ b/net/ipv4/route.c
+@@ -91,7 +91,9 @@
+ #include
+ #include
+ #include
++#ifndef __GENKSYMS__
+ #include
++#endif
+ #include
+ #include
+ #include
+--- a/net/ipv6/route.c
++++ b/net/ipv6/route.c
+@@ -42,7 +42,9 @@
+ #include
+ #include
+ #include
++#ifndef __GENKSYMS__
+ #include
++#endif
+ #include
+ #include
+ #include
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/blk-revert-__blk_run_queue-prototype-change.patch new/patches.kabi/blk-revert-__blk_run_queue-prototype-change.patch
--- old/patches.kabi/blk-revert-__blk_run_queue-prototype-change.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/blk-revert-__blk_run_queue-prototype-change.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,176 @@
+From: Jiri Slaby
+Subject: block: revert __blk_run_queue prototype change
+Patch-mainline: never
+
+The stable commit "block: add @force_kblockd to __blk_run_queue()"
+changed prototype of __blk_run_queue. This made the kabi checker
+unhappy. Revert the change because we export __blk_run_queue.
+
+Now we have ____blk_run_queue with the new prototype and
+__blk_run_queue left untouched.
+
+Signed-off-by: Jiri Slaby
+---
+ block/blk-core.c | 16 +++++++++++-----
+ block/blk-flush.c | 2 +-
+ block/cfq-iosched.c | 6 +++---
+ block/elevator.c | 4 ++--
+ drivers/scsi/scsi_lib.c | 2 +-
+ drivers/scsi/scsi_transport_fc.c | 2 +-
+ include/linux/blkdev.h | 3 ++-
+ 7 files changed, 21 insertions(+), 14 deletions(-)
+
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -359,7 +359,7 @@ void blk_start_queue(struct request_queu
+ WARN_ON(!irqs_disabled());
+
+ queue_flag_clear(QUEUE_FLAG_STOPPED, q);
+- __blk_run_queue(q, false);
++ ____blk_run_queue(q, false);
+ }
+ EXPORT_SYMBOL(blk_start_queue);
+
+@@ -408,7 +408,7 @@ void blk_sync_queue(struct request_queue
+ EXPORT_SYMBOL(blk_sync_queue);
+
+ /**
+- * __blk_run_queue - run a single device queue
++ * ____blk_run_queue - run a single device queue
+ * @q: The queue to run
+ * @force_kblockd: Don't run @q->request_fn directly. Use kblockd.
+ *
+@@ -417,7 +417,7 @@ EXPORT_SYMBOL(blk_sync_queue);
+ * held and interrupts disabled.
+ *
+ */
+-void __blk_run_queue(struct request_queue *q, bool force_kblockd)
++void ____blk_run_queue(struct request_queue *q, bool force_kblockd)
+ {
+ blk_remove_plug(q);
+
+@@ -439,6 +439,12 @@ void __blk_run_queue(struct request_queu
+ kblockd_schedule_work(q, &q->unplug_work);
+ }
+ }
++EXPORT_SYMBOL(____blk_run_queue);
++
++void __blk_run_queue(struct request_queue *q)
++{
++ return ____blk_run_queue(q, false);
++}
+ EXPORT_SYMBOL(__blk_run_queue);
+
+ /**
+@@ -454,7 +460,7 @@ void blk_run_queue(struct request_queue
+ unsigned long flags;
+
+ spin_lock_irqsave(q->queue_lock, flags);
+- __blk_run_queue(q, false);
++ ____blk_run_queue(q, false);
+ spin_unlock_irqrestore(q->queue_lock, flags);
+ }
+ EXPORT_SYMBOL(blk_run_queue);
+@@ -1061,7 +1067,7 @@ void blk_insert_request(struct request_q
+
+ drive_stat_acct(rq, 1);
+ __elv_add_request(q, rq, where, 0);
+- __blk_run_queue(q, false);
++ ____blk_run_queue(q, false);
+ spin_unlock_irqrestore(q->queue_lock, flags);
+ }
+ EXPORT_SYMBOL(blk_insert_request);
+--- a/block/blk-flush.c
++++ b/block/blk-flush.c
+@@ -71,7 +71,7 @@ static void blk_flush_complete_seq_end_i
+ * request_fn may confuse the driver. Always use kblockd.
+ */
+ if (was_empty && next_rq)
+- __blk_run_queue(q, true);
++ ____blk_run_queue(q, true);
+ }
+
+ static void pre_flush_end_io(struct request *rq, int error)
+--- a/block/cfq-iosched.c
++++ b/block/cfq-iosched.c
+@@ -3335,7 +3335,7 @@ cfq_rq_enqueued(struct cfq_data *cfqd, s
+ cfqd->busy_queues > 1) {
+ cfq_del_timer(cfqd, cfqq);
+ cfq_clear_cfqq_wait_request(cfqq);
+- __blk_run_queue(cfqd->queue, false);
++ ____blk_run_queue(cfqd->queue, false);
+ } else {
+ cfq_blkiocg_update_idle_time_stats(
+ &cfqq->cfqg->blkg);
+@@ -3350,7 +3350,7 @@ cfq_rq_enqueued(struct cfq_data *cfqd, s
+ * this new queue is RT and the current one is BE
+ */
+ cfq_preempt_queue(cfqd, cfqq);
+- __blk_run_queue(cfqd->queue, false);
++ ____blk_run_queue(cfqd->queue, false);
+ }
+ }
+
+@@ -3711,7 +3711,7 @@ static void cfq_kick_queue(struct work_s
+ struct request_queue *q = cfqd->queue;
+
+ spin_lock_irq(q->queue_lock);
+- __blk_run_queue(cfqd->queue, false);
++ ____blk_run_queue(cfqd->queue, false);
+ spin_unlock_irq(q->queue_lock);
+ }
+
+--- a/block/elevator.c
++++ b/block/elevator.c
+@@ -602,7 +602,7 @@ void elv_quiesce_start(struct request_qu
+ */
+ elv_drain_elevator(q);
+ while (q->rq.elvpriv) {
+- __blk_run_queue(q, false);
++ ____blk_run_queue(q, false);
+ spin_unlock_irq(q->queue_lock);
+ msleep(10);
+ spin_lock_irq(q->queue_lock);
+@@ -651,7 +651,7 @@ void elv_insert(struct request_queue *q,
+ * with anything. There's no point in delaying queue
+ * processing.
+ */
+- __blk_run_queue(q, false);
++ ____blk_run_queue(q, false);
+ break;
+
+ case ELEVATOR_INSERT_SORT:
+--- a/drivers/scsi/scsi_lib.c
++++ b/drivers/scsi/scsi_lib.c
+@@ -443,7 +443,7 @@ static void scsi_run_queue(struct reques
+ &sdev->request_queue->queue_flags);
+ if (flagset)
+ queue_flag_set(QUEUE_FLAG_REENTER, sdev->request_queue);
+- __blk_run_queue(sdev->request_queue, false);
++ ____blk_run_queue(sdev->request_queue, false);
+ if (flagset)
+ queue_flag_clear(QUEUE_FLAG_REENTER, sdev->request_queue);
+ spin_unlock(sdev->request_queue->queue_lock);
+--- a/drivers/scsi/scsi_transport_fc.c
++++ b/drivers/scsi/scsi_transport_fc.c
+@@ -3829,7 +3829,7 @@ fc_bsg_goose_queue(struct fc_rport *rpor
+ !test_bit(QUEUE_FLAG_REENTER, &rport->rqst_q->queue_flags);
+ if (flagset)
+ queue_flag_set(QUEUE_FLAG_REENTER, rport->rqst_q);
+- __blk_run_queue(rport->rqst_q, false);
++ ____blk_run_queue(rport->rqst_q, false);
+ if (flagset)
+ queue_flag_clear(QUEUE_FLAG_REENTER, rport->rqst_q);
+ spin_unlock_irqrestore(rport->rqst_q->queue_lock, flags);
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -700,7 +700,8 @@ extern void blk_start_queue(struct reque
+ extern void blk_stop_queue(struct request_queue *q);
+ extern void blk_sync_queue(struct request_queue *q);
+ extern void __blk_stop_queue(struct request_queue *q);
+-extern void __blk_run_queue(struct request_queue *q, bool force_kblockd);
++extern void __blk_run_queue(struct request_queue *);
++extern void ____blk_run_queue(struct request_queue *q, bool force_kblockd);
+ extern void blk_run_queue(struct request_queue *);
+ extern int blk_rq_map_user(struct request_queue *, struct request *,
+ struct rq_map_data *, void __user *, unsigned long,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/blk-revert-__invalidate_device-prototype-change.patch new/patches.kabi/blk-revert-__invalidate_device-prototype-change.patch
--- old/patches.kabi/blk-revert-__invalidate_device-prototype-change.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/blk-revert-__invalidate_device-prototype-change.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,85 @@
+From: Jiri Slaby
+Subject: block: revert __invalidate_device prototype change
+Patch-mainline: never
+
+The stable commit "Fix over-zealous flush_disk when changing device
+size." changed prototype of __invalidate_device. This made the kabi
+checker unhappy. Revert the change because we export
+__invalidate_device.
+
+Now we have ____invalidate_device with the new prototype and
+__invalidate_device left untouched.
+
+Signed-off-by: Jiri Slaby
+---
+ block/genhd.c | 2 +-
+ drivers/block/floppy.c | 2 +-
+ fs/block_dev.c | 10 ++++++++--
+ include/linux/fs.h | 3 ++-
+ 4 files changed, 12 insertions(+), 5 deletions(-)
+
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -1320,7 +1320,7 @@ int invalidate_partition(struct gendisk
+ struct block_device *bdev = bdget_disk(disk, partno);
+ if (bdev) {
+ fsync_bdev(bdev);
+- res = __invalidate_device(bdev, true);
++ res = ____invalidate_device(bdev, true);
+ bdput(bdev);
+ }
+ return res;
+--- a/drivers/block/floppy.c
++++ b/drivers/block/floppy.c
+@@ -3278,7 +3278,7 @@ static int set_geometry(unsigned int cmd
+ struct block_device *bdev = opened_bdev[cnt];
+ if (!bdev || ITYPE(drive_state[cnt].fd_device) != type)
+ continue;
+- __invalidate_device(bdev, true);
++ ____invalidate_device(bdev, true);
+ }
+ mutex_unlock(&open_lock);
+ } else {
+--- a/fs/block_dev.c
++++ b/fs/block_dev.c
+@@ -1219,7 +1219,7 @@ EXPORT_SYMBOL(open_by_devnum);
+ */
+ static void flush_disk(struct block_device *bdev, bool kill_dirty)
+ {
+- if (__invalidate_device(bdev, kill_dirty)) {
++ if (____invalidate_device(bdev, kill_dirty)) {
+ char name[BDEVNAME_SIZE] = "";
+
+ if (bdev->bd_disk)
+@@ -1776,7 +1776,7 @@ void close_bdev_exclusive(struct block_d
+
+ EXPORT_SYMBOL(close_bdev_exclusive);
+
+-int __invalidate_device(struct block_device *bdev, bool kill_dirty)
++int ____invalidate_device(struct block_device *bdev, bool kill_dirty)
+ {
+ struct super_block *sb = get_super(bdev);
+ int res = 0;
+@@ -1795,4 +1795,10 @@ int __invalidate_device(struct block_dev
+ invalidate_bdev(bdev);
+ return res;
+ }
++EXPORT_SYMBOL(____invalidate_device);
++
++int __invalidate_device(struct block_device *bdev)
++{
++ return ____invalidate_device(bdev, true);
++}
+ EXPORT_SYMBOL(__invalidate_device);
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -2148,7 +2148,8 @@ extern void check_disk_size_change(struc
+ struct block_device *bdev);
+ extern int revalidate_disk(struct gendisk *);
+ extern int check_disk_change(struct block_device *);
+-extern int __invalidate_device(struct block_device *, bool);
++extern int __invalidate_device(struct block_device *);
++extern int ____invalidate_device(struct block_device *, bool);
+ extern int invalidate_partition(struct gendisk *, int);
+ #endif
+ unsigned long invalidate_mapping_pages(struct address_space *mapping,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/block-export-lost-functions.patch new/patches.kabi/block-export-lost-functions.patch
--- old/patches.kabi/block-export-lost-functions.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/block-export-lost-functions.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,138 @@
+Subject: Block: export lost functions
+From: Jiri Slaby
+Patch-mainline: never
+
+The stable patch "blk-throttle: Do not use kblockd workqueue for
+throtl work" unexported the symbols, but we track them for external use.
+So redefine them back.
+
+Signed-off-by: Jiri Slaby
+---
+ block/blk-core.c | 7 +++++++
+ block/blk-throttle.c | 22 ++++++++++++++--------
+ include/linux/blkdev.h | 3 +++
+ 3 files changed, 24 insertions(+), 8 deletions(-)
+
+--- a/block/blk-core.c
++++ b/block/blk-core.c
+@@ -326,6 +326,13 @@ void blk_unplug_timeout(unsigned long da
+ kblockd_schedule_work(q, &q->unplug_work);
+ }
+
++int kblockd_schedule_delayed_work(struct request_queue *q,
++ struct delayed_work *dwork, unsigned long delay)
++{
++ return queue_delayed_work(kblockd_workqueue, dwork, delay);
++}
++EXPORT_SYMBOL(kblockd_schedule_delayed_work);
++
+ void blk_unplug(struct request_queue *q)
+ {
+ /*
+--- a/block/blk-throttle.c
++++ b/block/blk-throttle.c
+@@ -22,7 +22,7 @@ static unsigned long throtl_slice = HZ/1
+
+ /* A workqueue to queue throttle related work */
+ static struct workqueue_struct *kthrotld_workqueue;
+-static void throtl_schedule_delayed_work(struct throtl_data *td,
++static void __throtl_schedule_delayed_work(struct throtl_data *td,
+ unsigned long delay);
+
+ struct throtl_rb_root {
+@@ -342,9 +342,9 @@ static void throtl_schedule_next_dispatc
+ update_min_dispatch_time(st);
+
+ if (time_before_eq(st->min_disptime, jiffies))
+- throtl_schedule_delayed_work(td, 0);
++ __throtl_schedule_delayed_work(td, 0);
+ else
+- throtl_schedule_delayed_work(td, (st->min_disptime - jiffies));
++ __throtl_schedule_delayed_work(td, (st->min_disptime - jiffies));
+ }
+
+ static inline void
+@@ -812,7 +812,7 @@ void blk_throtl_work(struct work_struct
+
+ /* Call with queue lock held */
+ static void
+-throtl_schedule_delayed_work(struct throtl_data *td, unsigned long delay)
++__throtl_schedule_delayed_work(struct throtl_data *td, unsigned long delay)
+ {
+
+ struct delayed_work *dwork = &td->throtl_work;
+@@ -829,6 +829,12 @@ throtl_schedule_delayed_work(struct thro
+ }
+ }
+
++void throtl_schedule_delayed_work(struct request_queue *q, unsigned long delay)
++{
++ __throtl_schedule_delayed_work(q->td, delay);
++}
++EXPORT_SYMBOL(throtl_schedule_delayed_work);
++
+ static void
+ throtl_destroy_tg(struct throtl_data *td, struct throtl_grp *tg)
+ {
+@@ -915,7 +921,7 @@ static void throtl_update_blkio_group_re
+ smp_mb__after_atomic_inc();
+
+ /* Schedule a work now to process the limit change */
+- throtl_schedule_delayed_work(td, 0);
++ __throtl_schedule_delayed_work(td, 0);
+ }
+
+ static void throtl_update_blkio_group_write_bps(void *key,
+@@ -929,7 +935,7 @@ static void throtl_update_blkio_group_wr
+ smp_mb__before_atomic_inc();
+ atomic_inc(&td->limits_changed);
+ smp_mb__after_atomic_inc();
+- throtl_schedule_delayed_work(td, 0);
++ __throtl_schedule_delayed_work(td, 0);
+ }
+
+ static void throtl_update_blkio_group_read_iops(void *key,
+@@ -943,7 +949,7 @@ static void throtl_update_blkio_group_re
+ smp_mb__before_atomic_inc();
+ atomic_inc(&td->limits_changed);
+ smp_mb__after_atomic_inc();
+- throtl_schedule_delayed_work(td, 0);
++ __throtl_schedule_delayed_work(td, 0);
+ }
+
+ static void throtl_update_blkio_group_write_iops(void *key,
+@@ -957,7 +963,7 @@ static void throtl_update_blkio_group_wr
+ smp_mb__before_atomic_inc();
+ atomic_inc(&td->limits_changed);
+ smp_mb__after_atomic_inc();
+- throtl_schedule_delayed_work(td, 0);
++ __throtl_schedule_delayed_work(td, 0);
+ }
+
+ void throtl_shutdown_timer_wq(struct request_queue *q)
+--- a/include/linux/blkdev.h
++++ b/include/linux/blkdev.h
+@@ -1093,6 +1093,7 @@ static inline void put_dev_sector(Sector
+
+ struct work_struct;
+ int kblockd_schedule_work(struct request_queue *q, struct work_struct *work);
++int kblockd_schedule_delayed_work(struct request_queue *q, struct delayed_work *dwork, unsigned long delay);
+
+ #ifdef CONFIG_BLK_CGROUP
+ /*
+@@ -1140,6 +1141,7 @@ static inline uint64_t rq_io_start_time_
+ extern int blk_throtl_init(struct request_queue *q);
+ extern void blk_throtl_exit(struct request_queue *q);
+ extern int blk_throtl_bio(struct request_queue *q, struct bio **bio);
++extern void throtl_schedule_delayed_work(struct request_queue *q, unsigned long delay);
+ extern void throtl_shutdown_timer_wq(struct request_queue *q);
+ #else /* CONFIG_BLK_DEV_THROTTLING */
+ static inline int blk_throtl_bio(struct request_queue *q, struct bio **bio)
+@@ -1149,6 +1151,7 @@ static inline int blk_throtl_bio(struct
+
+ static inline int blk_throtl_init(struct request_queue *q) { return 0; }
+ static inline int blk_throtl_exit(struct request_queue *q) { return 0; }
++static inline void throtl_schedule_delayed_work(struct request_queue *q, unsigned long delay) {}
+ static inline void throtl_shutdown_timer_wq(struct request_queue *q) {}
+ #endif /* CONFIG_BLK_DEV_THROTTLING */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/ethtool-guard-against-compat-h.patch new/patches.kabi/ethtool-guard-against-compat-h.patch
--- old/patches.kabi/ethtool-guard-against-compat-h.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/ethtool-guard-against-compat-h.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,27 @@
+Subject: ethtool: guard against compat.h
+From: Jiri Slaby
+Patch-mainline: never
+
+This patch guards the include of compat.h because it defines a previously
+undefined type, causing kabi breakage.
+
+So ignore it by the kabichecker.
+
+Signed-off-by: Jiri Slaby
+---
+ include/linux/ethtool.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/include/linux/ethtool.h
++++ b/include/linux/ethtool.h
+@@ -14,8 +14,10 @@
+ #define _LINUX_ETHTOOL_H
+
+ #ifdef __KERNEL__
++#ifndef __GENKSYMS__
+ #include
+ #endif
++#endif
+ #include
+ #include
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/md-mddev_s-kABI-guard.patch new/patches.kabi/md-mddev_s-kABI-guard.patch
--- old/patches.kabi/md-mddev_s-kABI-guard.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/md-mddev_s-kABI-guard.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,26 @@
+Subject: MD: mddev_s kABI guard
+From: Jiri Slaby
+Patch-mainline: never
+
+A stable update changed mddev_s struct. But this structure is MD
+internal only, so tell the kabi checker to ignore the change.
+
+Signed-off-by: Jiri Slaby
+---
+ drivers/md/md.h | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/md/md.h
++++ b/drivers/md/md.h
+@@ -269,9 +269,10 @@ struct mddev_s
+ struct mutex reconfig_mutex;
+ atomic_t active; /* general refcount */
+ atomic_t openers; /* number of active opens */
+-
++#ifndef __GENKSYMS__
+ int changed; /* True if we might need to
+ * reread partition info */
++#endif
+ int degraded; /* whether md should consider
+ * adding a spare
+ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/reiserfs-force-inode-evictions-before-umount-to-avoid-crash new/patches.kabi/reiserfs-force-inode-evictions-before-umount-to-avoid-crash
--- old/patches.kabi/reiserfs-force-inode-evictions-before-umount-to-avoid-crash 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/reiserfs-force-inode-evictions-before-umount-to-avoid-crash 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,44 @@
+From: Jeff Mahoney
+Subject: KABI: Re-export shrink_dcache_for_umount_subtree
+Patch-mainline: Never
+
+ shrink_dcache_for_umount_subtree was used by the now-obsolete
+ patches.fixes/reiserfs-xattr-crash-fix patch.
+
+ The newer fix doesn't require it but removing the export breaks the fs
+ kABI. There aren't any users of this export and it is retained only
+ for compatibility.
+
+ DO NOT USE.
+
+Signed-off-by: Jeff Mahoney
+---
+ fs/dcache.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+--- a/fs/dcache.c
++++ b/fs/dcache.c
+@@ -637,7 +637,7 @@ EXPORT_SYMBOL(shrink_dcache_sb);
+ * - see the comments on shrink_dcache_for_umount() for a description of the
+ * locking
+ */
+-static void shrink_dcache_for_umount_subtree(struct dentry *dentry)
++void shrink_dcache_for_umount_subtree(struct dentry *dentry)
+ {
+ struct dentry *parent;
+ unsigned detached = 0;
+@@ -727,6 +727,14 @@ static void shrink_dcache_for_umount_sub
+ }
+
+ /*
++ * No known users; Was used by an older version of a fix
++ * to avoid reiserfs xattr crashes during umount but was
++ * obsoleted by openSUSE-11.4 commit 895e529b.
++ * Export kept to preserve kABI -jeffm
++ */
++EXPORT_SYMBOL_GPL(shrink_dcache_for_umount_subtree);
++
++/*
+ * destroy the dentries attached to a superblock on unmounting
+ * - we don't need to use dentry->d_lock, and only need dcache_lock when
+ * removing the dentry from the system lists and hashes because:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch new/patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch
--- old/patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,194 @@
+From: Jiri Slaby
+Subject: Revert "mm: prevent concurrent unmap_mapping_range() on the same inode"
+Patch-mainline: never
+
+This reverts commit e98b9902196dd0bd598fae9b3bdbfda57a9e352b.
+
+It breaks kabi. We have a non-kabi breaking fix in:
+patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch
+
+Signed-off-by: Jiri Slaby
+---
+ fs/gfs2/main.c | 9 ++++++++-
+ fs/inode.c | 22 +++++++---------------
+ fs/nilfs2/btnode.c | 5 +++++
+ fs/nilfs2/btnode.h | 1 +
+ fs/nilfs2/mdt.c | 4 ++--
+ fs/nilfs2/page.h | 1 +
+ fs/nilfs2/super.c | 2 +-
+ include/linux/fs.h | 2 --
+ mm/memory.c | 2 --
+ 9 files changed, 25 insertions(+), 23 deletions(-)
+
+diff --git a/fs/gfs2/main.c b/fs/gfs2/main.c
+index f910999..ebef7ab 100644
+--- a/fs/gfs2/main.c
++++ b/fs/gfs2/main.c
+@@ -59,7 +59,14 @@ static void gfs2_init_gl_aspace_once(void *foo)
+ struct address_space *mapping = (struct address_space *)(gl + 1);
+
+ gfs2_init_glock_once(gl);
+- address_space_init_once(mapping);
++ memset(mapping, 0, sizeof(*mapping));
++ INIT_RADIX_TREE(&mapping->page_tree, GFP_ATOMIC);
++ spin_lock_init(&mapping->tree_lock);
++ spin_lock_init(&mapping->i_mmap_lock);
++ INIT_LIST_HEAD(&mapping->private_list);
++ spin_lock_init(&mapping->private_lock);
++ INIT_RAW_PRIO_TREE_ROOT(&mapping->i_mmap);
++ INIT_LIST_HEAD(&mapping->i_mmap_nonlinear);
+ }
+
+ /**
+diff --git a/fs/inode.c b/fs/inode.c
+index e45734b..12a7aa5 100644
+--- a/fs/inode.c
++++ b/fs/inode.c
+@@ -280,20 +280,6 @@ static void destroy_inode(struct inode *inode)
+ kmem_cache_free(inode_cachep, (inode));
+ }
+
+-void address_space_init_once(struct address_space *mapping)
+-{
+- memset(mapping, 0, sizeof(*mapping));
+- INIT_RADIX_TREE(&mapping->page_tree, GFP_ATOMIC);
+- spin_lock_init(&mapping->tree_lock);
+- spin_lock_init(&mapping->i_mmap_lock);
+- INIT_LIST_HEAD(&mapping->private_list);
+- spin_lock_init(&mapping->private_lock);
+- INIT_RAW_PRIO_TREE_ROOT(&mapping->i_mmap);
+- INIT_LIST_HEAD(&mapping->i_mmap_nonlinear);
+- mutex_init(&mapping->unmap_mutex);
+-}
+-EXPORT_SYMBOL(address_space_init_once);
+-
+ /*
+ * These are initializations that only need to be done
+ * once, because the fields are idempotent across use
+@@ -307,7 +293,13 @@ void inode_init_once(struct inode *inode)
+ INIT_LIST_HEAD(&inode->i_devices);
+ INIT_LIST_HEAD(&inode->i_wb_list);
+ INIT_LIST_HEAD(&inode->i_lru);
+- address_space_init_once(&inode->i_data);
++ INIT_RADIX_TREE(&inode->i_data.page_tree, GFP_ATOMIC);
++ spin_lock_init(&inode->i_data.tree_lock);
++ spin_lock_init(&inode->i_data.i_mmap_lock);
++ INIT_LIST_HEAD(&inode->i_data.private_list);
++ spin_lock_init(&inode->i_data.private_lock);
++ INIT_RAW_PRIO_TREE_ROOT(&inode->i_data.i_mmap);
++ INIT_LIST_HEAD(&inode->i_data.i_mmap_nonlinear);
+ i_size_ordered_init(inode);
+ #ifdef CONFIG_FSNOTIFY
+ INIT_HLIST_HEAD(&inode->i_fsnotify_marks);
+diff --git a/fs/nilfs2/btnode.c b/fs/nilfs2/btnode.c
+index 3b008b8..5115814 100644
+--- a/fs/nilfs2/btnode.c
++++ b/fs/nilfs2/btnode.c
+@@ -35,6 +35,11 @@
+ #include "btnode.h"
+
+
++void nilfs_btnode_cache_init_once(struct address_space *btnc)
++{
++ nilfs_mapping_init_once(btnc);
++}
++
+ static const struct address_space_operations def_btnode_aops = {
+ .sync_page = block_sync_page,
+ };
+diff --git a/fs/nilfs2/btnode.h b/fs/nilfs2/btnode.h
+index 1b8ebd8..7903749 100644
+--- a/fs/nilfs2/btnode.h
++++ b/fs/nilfs2/btnode.h
+@@ -37,6 +37,7 @@ struct nilfs_btnode_chkey_ctxt {
+ struct buffer_head *newbh;
+ };
+
++void nilfs_btnode_cache_init_once(struct address_space *);
+ void nilfs_btnode_cache_init(struct address_space *, struct backing_dev_info *);
+ void nilfs_btnode_cache_clear(struct address_space *);
+ struct buffer_head *nilfs_btnode_create_block(struct address_space *btnc,
+diff --git a/fs/nilfs2/mdt.c b/fs/nilfs2/mdt.c
+index bdb8de6..39a5b84 100644
+--- a/fs/nilfs2/mdt.c
++++ b/fs/nilfs2/mdt.c
+@@ -460,9 +460,9 @@ int nilfs_mdt_setup_shadow_map(struct inode *inode,
+ struct backing_dev_info *bdi = inode->i_sb->s_bdi;
+
+ INIT_LIST_HEAD(&shadow->frozen_buffers);
+- address_space_init_once(&shadow->frozen_data);
++ nilfs_mapping_init_once(&shadow->frozen_data);
+ nilfs_mapping_init(&shadow->frozen_data, bdi, &shadow_map_aops);
+- address_space_init_once(&shadow->frozen_btnodes);
++ nilfs_mapping_init_once(&shadow->frozen_btnodes);
+ nilfs_mapping_init(&shadow->frozen_btnodes, bdi, &shadow_map_aops);
+ mi->mi_shadow = shadow;
+ return 0;
+diff --git a/fs/nilfs2/page.h b/fs/nilfs2/page.h
+index b7e2726..fb9e8a8 100644
+--- a/fs/nilfs2/page.h
++++ b/fs/nilfs2/page.h
+@@ -61,6 +61,7 @@ void nilfs_free_private_page(struct page *);
+ int nilfs_copy_dirty_pages(struct address_space *, struct address_space *);
+ void nilfs_copy_back_pages(struct address_space *, struct address_space *);
+ void nilfs_clear_dirty_pages(struct address_space *);
++void nilfs_mapping_init_once(struct address_space *mapping);
+ void nilfs_mapping_init(struct address_space *mapping,
+ struct backing_dev_info *bdi,
+ const struct address_space_operations *aops);
+diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c
+index 388e26b..2940a58 100644
+--- a/fs/nilfs2/super.c
++++ b/fs/nilfs2/super.c
+@@ -1263,7 +1263,7 @@ static void nilfs_inode_init_once(void *obj)
+ #ifdef CONFIG_NILFS_XATTR
+ init_rwsem(&ii->xattr_sem);
+ #endif
+- address_space_init_once(&ii->i_btnode_cache);
++ nilfs_btnode_cache_init_once(&ii->i_btnode_cache);
+ ii->i_bmap = &ii->i_bmap_data;
+ inode_init_once(&ii->vfs_inode);
+ }
+diff --git a/include/linux/fs.h b/include/linux/fs.h
+index 0570a28..b9f7a33 100644
+--- a/include/linux/fs.h
++++ b/include/linux/fs.h
+@@ -646,7 +646,6 @@ struct address_space {
+ spinlock_t private_lock; /* for use by the address_space */
+ struct list_head private_list; /* ditto */
+ struct address_space *assoc_mapping; /* ditto */
+- struct mutex unmap_mutex; /* to protect unmapping */
+ } __attribute__((aligned(sizeof(long))));
+ /*
+ * On most architectures that alignment is already the case; but
+@@ -2204,7 +2203,6 @@ extern loff_t vfs_llseek(struct file *file, loff_t offset, int origin);
+
+ extern int inode_init_always(struct super_block *, struct inode *);
+ extern void inode_init_once(struct inode *);
+-extern void address_space_init_once(struct address_space *mapping);
+ extern void ihold(struct inode * inode);
+ extern void iput(struct inode *);
+ extern struct inode * igrab(struct inode *);
+diff --git a/mm/memory.c b/mm/memory.c
+index e8b2f03..02e48aa 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -2572,7 +2572,6 @@ void unmap_mapping_range(struct address_space *mapping,
+ details.last_index = ULONG_MAX;
+ details.i_mmap_lock = &mapping->i_mmap_lock;
+
+- mutex_lock(&mapping->unmap_mutex);
+ spin_lock(&mapping->i_mmap_lock);
+
+ /* Protect against endless unmapping loops */
+@@ -2589,7 +2588,6 @@ void unmap_mapping_range(struct address_space *mapping,
+ if (unlikely(!list_empty(&mapping->i_mmap_nonlinear)))
+ unmap_mapping_range_list(&mapping->i_mmap_nonlinear, &details);
+ spin_unlock(&mapping->i_mmap_lock);
+- mutex_unlock(&mapping->unmap_mutex);
+ }
+ EXPORT_SYMBOL(unmap_mapping_range);
+
+--
+1.7.4.2
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kabi/sched-autogroup-fix-rt-group-sched new/patches.kabi/sched-autogroup-fix-rt-group-sched
--- old/patches.kabi/sched-autogroup-fix-rt-group-sched 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.kabi/sched-autogroup-fix-rt-group-sched 2011-04-25 16:25:08.000000000 +0200
@@ -0,0 +1,30 @@
+From: Jeff Mahoney
+Subject: kABI: Guard changes to struct autogroup
+References: bnc#680510
+Patch-mainline: Never. kABI fix.
+
+ This patch guards the changes to struct autogroup to avoid the kABI checker
+ triggering on it. The structure is referenced from task_struct but is
+ forward declared. The only real declaration is in kernel/, it's dynamically
+ allocated, and only referenced from the autogroup code. The change is
+ safe to include.
+
+Signed-off-by: Jeff Mahoney
+---
+ kernel/sched_autogroup.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/kernel/sched_autogroup.h
++++ b/kernel/sched_autogroup.h
+@@ -7,9 +7,11 @@ struct autogroup {
+ unsigned long id;
+ int nice;
+ #ifdef CONFIG_RT_GROUP_SCHED
++#ifndef __GENKSYMS__
+ struct sched_rt_entity **rt_se;
+ struct rt_rq **rt_rq;
+ #endif
++#endif
+ };
+
+ static inline struct task_group *
++++++ patches.kernel.org.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch new/patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch
--- old/patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch 2011-04-06 22:43:39.000000000 +0200
+++ new/patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,125 +0,0 @@
-From 0fc33e5e837dc05367bb7ba1117f061ab4151df5 Mon Sep 17 00:00:00 2001
-From: Jiri Slaby
-Date: Wed, 6 Apr 2011 22:37:36 +0200
-Subject: Revert "x86: Cleanup highmap after brk is concluded"
-Patch-mainline: asked to be reverted
-References: bnc#684248
-
-This reverts commit 72f2999e41d09468b29de855ffc02f94e87a675e.
-
-It's crap and breaks resume.
-
-Signed-off-by: Jiri Slaby
----
- arch/x86/kernel/head64.c | 3 +++
- arch/x86/kernel/setup.c | 5 -----
- arch/x86/mm/init.c | 19 +++++++++++++++++++
- arch/x86/mm/init_64.c | 11 +++++------
- 4 files changed, 27 insertions(+), 11 deletions(-)
-
-diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
-index 5655c22..2d2673c 100644
---- a/arch/x86/kernel/head64.c
-+++ b/arch/x86/kernel/head64.c
-@@ -77,6 +77,9 @@ void __init x86_64_start_kernel(char * real_mode_data)
- /* Make NULL pointers segfault */
- zap_identity_mappings();
-
-+ /* Cleanup the over mapped high alias */
-+ cleanup_highmap();
-+
- max_pfn_mapped = KERNEL_IMAGE_SIZE >> PAGE_SHIFT;
-
- for (i = 0; i < NUM_EXCEPTION_VECTORS; i++) {
-diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
-index e543fe9..d3cfe26 100644
---- a/arch/x86/kernel/setup.c
-+++ b/arch/x86/kernel/setup.c
-@@ -297,9 +297,6 @@ static void __init init_gbpages(void)
- static inline void init_gbpages(void)
- {
- }
--static void __init cleanup_highmap(void)
--{
--}
- #endif
-
- static void __init reserve_brk(void)
-@@ -925,8 +922,6 @@ void __init setup_arch(char **cmdline_p)
- */
- reserve_brk();
-
-- cleanup_highmap();
--
- memblock.current_limit = get_max_mapped();
- memblock_x86_fill();
-
-diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
-index f13ff3a..947f42a 100644
---- a/arch/x86/mm/init.c
-+++ b/arch/x86/mm/init.c
-@@ -279,6 +279,25 @@ unsigned long __init_refok init_memory_mapping(unsigned long start,
- load_cr3(swapper_pg_dir);
- #endif
-
-+#ifdef CONFIG_X86_64
-+ if (!after_bootmem && !start) {
-+ pud_t *pud;
-+ pmd_t *pmd;
-+
-+ mmu_cr4_features = read_cr4();
-+
-+ /*
-+ * _brk_end cannot change anymore, but it and _end may be
-+ * located on different 2M pages. cleanup_highmap(), however,
-+ * can only consider _end when it runs, so destroy any
-+ * mappings beyond _brk_end here.
-+ */
-+ pud = pud_offset(pgd_offset_k(_brk_end), _brk_end);
-+ pmd = pmd_offset(pud, _brk_end - 1);
-+ while (++pmd <= pmd_offset(pud, (unsigned long)_end - 1))
-+ pmd_clear(pmd);
-+ }
-+#endif
- __flush_tlb_all();
-
- if (!after_bootmem && e820_table_end > e820_table_start)
-diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
-index 68f9921..c14a542 100644
---- a/arch/x86/mm/init_64.c
-+++ b/arch/x86/mm/init_64.c
-@@ -51,7 +51,6 @@
- #include
- #include
- #include
--#include
-
- static int __init parse_direct_gbpages_off(char *arg)
- {
-@@ -294,18 +293,18 @@ void __init init_extra_mapping_uc(unsigned long phys, unsigned long size)
- * to the compile time generated pmds. This results in invalid pmds up
- * to the point where we hit the physaddr 0 mapping.
- *
-- * We limit the mappings to the region from _text to _brk_end. _brk_end
-- * is rounded up to the 2MB boundary. This catches the invalid pmds as
-+ * We limit the mappings to the region from _text to _end. _end is
-+ * rounded up to the 2MB boundary. This catches the invalid pmds as
- * well, as they are located before _text:
- */
- void __init cleanup_highmap(void)
- {
- unsigned long vaddr = __START_KERNEL_map;
-- unsigned long vaddr_end = __START_KERNEL_map + (max_pfn_mapped << PAGE_SHIFT);
-- unsigned long end = roundup((unsigned long)_brk_end, PMD_SIZE) - 1;
-+ unsigned long end = roundup((unsigned long)_end, PMD_SIZE) - 1;
- pmd_t *pmd = level2_kernel_pgt;
-+ pmd_t *last_pmd = pmd + PTRS_PER_PMD;
-
-- for (; vaddr + PMD_SIZE - 1 < vaddr_end; pmd++, vaddr += PMD_SIZE) {
-+ for (; pmd < last_pmd; pmd++, vaddr += PMD_SIZE) {
- if (pmd_none(*pmd))
- continue;
- if (vaddr < (unsigned long) _text || vaddr > end)
---
-1.7.4.2
-
++++++ patches.suse.tar.bz2 ++++++
++++++ patches.xen.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen-i386-add-missing-end-for-spurious_interrupt_bug new/patches.xen/xen-i386-add-missing-end-for-spurious_interrupt_bug
--- old/patches.xen/xen-i386-add-missing-end-for-spurious_interrupt_bug 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.xen/xen-i386-add-missing-end-for-spurious_interrupt_bug 2011-04-25 21:48:33.000000000 +0200
@@ -0,0 +1,32 @@
+From: Jeff Mahoney
+Subject: xen/i386: Add missing END for spurious_interrupt_bug
+Patch-mainline: Whenever Xen gets there
+
+ An update to binutils caused this code to start failing to build. The
+ issue is that the END(spurious_interrupt_bug) outside the ifndef
+ was referencing the undefined start of the block.
+
+Signed-off-by: Jeff Mahoney
+---
+ arch/x86/kernel/entry_32-xen.S | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/arch/x86/kernel/entry_32-xen.S
++++ b/arch/x86/kernel/entry_32-xen.S
+@@ -1219,6 +1219,7 @@ ENTRY(spurious_interrupt_bug)
+ pushl_cfi $do_spurious_interrupt_bug
+ jmp error_code
+ CFI_ENDPROC
++END(spurious_interrupt_bug)
+ #endif /* !CONFIG_XEN */
+
+ ENTRY(fixup_4gb_segment)
+@@ -1226,7 +1227,7 @@ ENTRY(fixup_4gb_segment)
+ pushl_cfi $do_fixup_4gb_segment
+ jmp error_code
+ CFI_ENDPROC
+-END(spurious_interrupt_bug)
++END(fixup_4gb_segment)
+ /*
+ * End of kprobes section
+ */
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.RKkBBr/_old 2011-04-26 18:29:59.000000000 +0200
+++ /var/tmp/diff_new_pack.RKkBBr/_new 2011-04-26 18:29:59.000000000 +0200
@@ -33,7 +33,6 @@
patches.kernel.org/patch-2.6.37.3-4
patches.kernel.org/patch-2.6.37.4-5
patches.kernel.org/patch-2.6.37.5-6
- patches.kernel.org/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch
########################################################
# Build fixes that apply to the vanilla kernel too.
@@ -48,6 +47,14 @@
########################################################
# kABI consistency patches
########################################################
+ patches.kabi/ethtool-guard-against-compat-h.patch
+ patches.kabi/md-mddev_s-kABI-guard.patch
+ patches.kabi/FUSE-fuse_req-kABI-guard.patch
+ patches.kabi/block-export-lost-functions.patch
+ patches.kabi/DRM-revert-drm_device-num_crtcs-change.patch
+ patches.kabi/blk-revert-__blk_run_queue-prototype-change.patch
+ patches.kabi/blk-revert-__invalidate_device-prototype-change.patch
+ patches.kabi/revert-mm-prevent-concurrent-unmap_mapping_range-on-.patch
########################################################
#
@@ -93,6 +100,7 @@
patches.suse/sched-automated-per-session-task-groups
patches.suse/sched-autogroup-fix-rt-group-sched
+ patches.kabi/sched-autogroup-fix-rt-group-sched
patches.fixes/taskstats-better-ifdef
patches.fixes/prevent-rt_sigqueueinfo-from-spoofing-fix.patch
@@ -137,6 +145,7 @@
patches.arch/kvm-replace-kvm-io-delay-pv-ops-with-linux-magic
patches.suse/x86-mark_rodata_rw.patch
+ patches.arch/revert-x86-Cleanup-highmap-after-brk-is-concluded.patch
########################################################
# x86 MCE/MCA (Machine Check Error/Architecture) extensions
@@ -215,6 +224,8 @@
+36 patches.fixes/aggressive-zone-reclaim.patch
patches.suse/readahead-request-tunables.patch
patches.fixes/page_cgroup-reduce-allocation-overhead.patch
+ patches.fixes/fs-partitions-efi-c-corrupted-guid-partition-tables-can-cause-kernel-oops
+ patches.fixes/mm-prevent-concurrent-unmap_mapping_range-on-.patch
########################################################
# IPC patches
@@ -232,6 +243,18 @@
patches.suse/connector-read-mostly
patches.suse/kbd-ignore-gfx.patch
+ patches.fixes/media-video-sn9c102-world-wirtable-sysfs-files
+ patches.fixes/drivers-rtc-rtc-ds1511-c-world-writable-sysfs-nvram-file
+ patches.fixes/scsi-aic94xx-world-writable-sysfs-update_bios-file
+ patches.fixes/ubifs-restrict-world-writable-debugfs-files
+ patches.fixes/mfd-ab3100-world-writable-debugfs-_priv-files
+ patches.fixes/drivers-misc-ep93xx_pwm-c-world-writable-sysfs-files
+ patches.fixes/mfd-ab3500-world-writable-debugfs-register-files
+ patches.fixes/scsi-scsi_transport_iscsi-make-priv_sess-file-writeable-only-by-root
+ patches.fixes/mfd-ab8500-world-writable-debugfs-register-files
+ patches.fixes/drivers-leds-leds-lp5521-c-world-writable-sysfs-engine-files
+ patches.fixes/drivers-leds-leds-lp5523-c-world-writable-engine-sysfs-files
+
########################################################
#
# ACPI patches
@@ -314,6 +337,8 @@
patches.drivers/gro-Reset-dev-pointer-on-reuse.patch
patches.drivers/gro-reset-skb_iif-on-reuse.patch
+ patches.fixes/irda-validate-peer-name-and-attribute-lengths
+ patches.fixes/bonding-Incorrect-TX-queue-offset.patch
########################################################
# NFS
@@ -323,7 +348,7 @@
patches.fixes/nfs-adaptive-readdir-plus
+needs_update37 patches.fixes/nfsd-06-sunrpc-cache-retry-cache-lookups-that-return-ETIMEDO.patch
-
+ patches.fixes/sunrpc-gssd-fix-mount-failure-with-rc4-hmac-md5
########################################################
# lockd + statd
########################################################
@@ -341,6 +366,8 @@
########################################################
# ext4
########################################################
+ patches.fixes/ext4-mark-multi-page-IO-complete-on-mapping-failure.patch
+ patches.fixes/ext4-fix-ext4_da_block_invalidatepages-to-handle-pag.patch
########################################################
# btrfs
@@ -353,6 +380,7 @@
patches.fixes/reiserfs-remove-2-tb-file-size-limit
patches.suse/reiser4-dependencies
patches.fixes/reiserfs-force-inode-evictions-before-umount-to-avoid-crash
+ patches.kabi/reiserfs-force-inode-evictions-before-umount-to-avoid-crash
########################################################
# dlm
@@ -443,6 +471,7 @@
patches.suse/SoN-16-netvm-reserve-inet.patch
patches.suse/SoN-16a-netvm-reserve-inet.patch
patches.suse/SoN-16b-netvm-reserve-inet.patch
+ patches.kabi/SoN-16b-netvm-reserve-inet.patch
patches.suse/SoN-17-netvm-reserve-inet.patch-fix
patches.suse/SoN-18-netvm-skbuff-reserve.patch
patches.suse/SoN-19-netvm-sk_filter.patch
@@ -490,6 +519,8 @@
# libata
patches.drivers/libata-unlock-hpa-by-default
+ patches.fixes/libata-dvr-212d-can-t-do-setxfer-dvd-rw-dvr-212d
+ patches.fixes/libata-dvr-216d-can-t-do-setxfer-dvd-rw-dvr-216d
# Block layer fixes
patches.fixes/scsi-inquiry-too-short-ratelimit
@@ -523,6 +554,7 @@
########################################################
# DRM/Video
########################################################
+ patches.fixes/drm-radeon-kms-check-AA-resolve-registers-on-r300.patch
########################################################
# video4linux
@@ -551,6 +583,7 @@
patches.fixes/bridge-fix-hash-list-corruption.patch
patches.fixes/bridge-fix-timer-arming.patch
patches.fixes/bridge-remove-hash-list.patch
+ patches.fixes/bridge-fix-802.3ad-bonding.patch
patches.fixes/rose-prevent-heap-corruption-with-bad-facilities.patch
patches.fixes/rose-add-length-checks-to-CALL_REQUEST-parsing.patch
@@ -589,6 +622,7 @@
########################################################
# I2C
########################################################
+ patches.fixes/i2c-algo-bit-call-pre-post_xfer-for-bit_test.patch
########################################################
# Input & Console
@@ -681,6 +715,7 @@
# Security stuff
#
##########################################################
+ patches.fixes/char-tpm-fix-unitialized-usage-of-data-buffer
##########################################################
# Audit
@@ -908,3 +943,4 @@
patches.xen/xen-x86_64-dump-user-pgt
patches.xen/xen-x86_64-note-init-p2m
patches.xen/xen-x86_64-unmapped-initrd
+ patches.xen/xen-i386-add-missing-end-for-spurious_interrupt_bug
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.RKkBBr/_old 2011-04-26 18:29:59.000000000 +0200
+++ /var/tmp/diff_new_pack.RKkBBr/_new 2011-04-26 18:29:59.000000000 +0200
@@ -1,3 +1,3 @@
-2011-04-11 19:13:22 +0200
-GIT Revision: fbf0cf7b3cd00c357386d6c7b3c7c08f72fd4736
+2011-04-25 21:48:33 +0200
+GIT Revision: d0f6e4da2c21cf437fe3e5d7ae2556c4d70f571f
GIT Branch: openSUSE-11.4
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org