Hello community,
here is the log from the commit of package kernel-source for openSUSE:12.3 checked in at 2013-03-01 11:24:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.3/kernel-source (Old)
and /work/SRC/openSUSE:12.3/.kernel-source.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kernel-source", Maintainer is "kernel-maintainers@forge.provo.novell.com"
Changes:
--------
--- /work/SRC/openSUSE:12.3/kernel-source/kernel-cubox.changes 2013-02-23 08:58:21.000000000 +0100
+++ /work/SRC/openSUSE:12.3/.kernel-source.new/kernel-cubox.changes 2013-03-01 11:24:46.000000000 +0100
@@ -1,0 +2,75 @@
+Thu Feb 28 16:06:29 CET 2013 - mmarek@suse.cz
+
+- Add missing symtypes files
+- commit 82d3f21
+
+-------------------------------------------------------------------
+Wed Feb 27 20:44:57 CET 2013 - jslaby@suse.cz
+
+- Linux 3.7.10 (CVE-2013-0231 CVE-2013-1763 bnc#792500 bnc#801178
+ bnc#802347 bnc#805633 XSA-43).
+- Refresh patches.xen/xen3-patch-2.6.31.
+- Refresh patches.xen/xen3-patch-3.1.
+- Delete
+ patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch.
+- Delete
+ patches.fixes/sock_diag-fix-out-of-bounds-access-to-sock_diag_handlers.
+- Delete
+ patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch.
+- Delete patches.xen/xen-pciback-ratelimit.
+- commit 331049f
+
+-------------------------------------------------------------------
+Wed Feb 27 14:48:19 CET 2013 - jeffm@suse.de
+
+- Added kABI references for openSUSE 12.3 release.
+- commit 5b76602
+
+-------------------------------------------------------------------
+Tue Feb 26 04:27:14 CET 2013 - jeffm@suse.com
+
+- ext4: release sysfs kobject when failing to enable quotas
+ on mount.
+- commit 5aa1b40
+
+-------------------------------------------------------------------
+Tue Feb 26 04:23:24 CET 2013 - jeffm@suse.com
+
+- sock_diag: Simplify sock_diag_handlers handling in
+ __sock_diag_rcv_msg (bnc#805633 CVE-2013-1763).
+- sock_diag: Fix out-of-bounds access to sock_diag_handlers
+ (bnc#805633 CVE-2013-1763).
+- commit 0fe692b
+
+-------------------------------------------------------------------
+Mon Feb 25 21:22:24 CET 2013 - jeffm@suse.com
+
+- doc/README.SUSE: Updated versions to reflect 3.x kernels.
+- commit e77fcee
+
+-------------------------------------------------------------------
+Mon Feb 25 20:57:27 CET 2013 - jeffm@suse.com
+
+- Fix build breakage due to out-of-order patch refresh.
+- commit 1aa4b69
+
+-------------------------------------------------------------------
+Mon Feb 25 20:40:38 CET 2013 - jeffm@suse.com
+
+- ext4: fix error handling in ext4_fill_super().
+- commit 63c52e2
+
+-------------------------------------------------------------------
+Mon Feb 25 11:25:49 CET 2013 - jslaby@suse.cz
+
+- TTY: do not update atime/mtime on read/write (bnc#797175
+ CVE-2013-0160).
+- commit 7d04bee
+
+-------------------------------------------------------------------
+Fri Feb 22 12:41:08 CET 2013 - dsterba@suse.cz
+
+- Btrfs: fix hash overflow handling (FATE#312888).
+- commit b26c055
+
+-------------------------------------------------------------------
@@ -72,0 +148,6 @@
+
+-------------------------------------------------------------------
+Wed Feb 6 20:46:30 CET 2013 - jeffm@suse.com
+
+- Fix whitespace in several patches to make series2git happy.
+- commit dc7f072
kernel-debug.changes: same change
kernel-default.changes: same change
kernel-desktop.changes: same change
kernel-docs.changes: same change
kernel-ec2.changes: same change
kernel-exynos.changes: same change
kernel-highbank.changes: same change
kernel-imx51.changes: same change
kernel-omap2plus.changes: same change
kernel-pae.changes: same change
kernel-s390.changes: same change
kernel-source.changes: same change
kernel-syms.changes: same change
kernel-trace.changes: same change
kernel-u8500.changes: same change
kernel-vanilla.changes: same change
kernel-versatile.changes: same change
kernel-xen.changes: same change
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kernel-cubox.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -20,7 +20,7 @@
# needssslcertforbuild
%define srcversion 3.7
-%define patchversion 3.7.9
+%define patchversion 3.7.10
%define variant %{nil}
%define vanilla_only 0
@@ -59,7 +59,7 @@
Name: kernel-cubox
Summary: Kernel for SolidRun Cubox
-Version: 3.7.9
+Version: 3.7.10
Release: 0
License: GPL-2.0
Group: System/Kernel
kernel-debug.spec: same change
kernel-default.spec: same change
kernel-desktop.spec: same change
++++++ kernel-docs.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -17,14 +17,14 @@
# norootforbuild
-%define patchversion 3.7.9
+%define patchversion 3.7.10
%define variant %{nil}
%include %_sourcedir/kernel-spec-macros
Name: kernel-docs
Summary: Kernel Documentation
-Version: 3.7.9
+Version: 3.7.10
Release: 0
BuildRequires: docbook-toys docbook-utils ghostscript_any libjpeg-devel texlive transfig xmlto xorg-x11-devel
BuildRequires: kernel-source%variant
++++++ kernel-ec2.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -20,7 +20,7 @@
# needssslcertforbuild
%define srcversion 3.7
-%define patchversion 3.7.9
+%define patchversion 3.7.10
%define variant %{nil}
%define vanilla_only 0
@@ -59,7 +59,7 @@
Name: kernel-ec2
Summary: The Amazon EC2 Xen Kernel
-Version: 3.7.9
+Version: 3.7.10
Release: 0
License: GPL-2.0
Group: System/Kernel
kernel-exynos.spec: same change
kernel-highbank.spec: same change
kernel-imx51.spec: same change
kernel-omap2plus.spec: same change
kernel-pae.spec: same change
kernel-s390.spec: same change
++++++ kernel-source.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -19,7 +19,7 @@
# icecream 0
%define srcversion 3.7
-%define patchversion 3.7.9
+%define patchversion 3.7.10
%define variant %{nil}
%define vanilla_only 0
@@ -29,7 +29,7 @@
Name: kernel-source
Summary: The Linux Kernel Sources
-Version: 3.7.9
+Version: 3.7.10
Release: 0
License: GPL-2.0
Group: Development/Sources
++++++ kernel-syms.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -23,7 +23,7 @@
Name: kernel-syms
Summary: Kernel Symbol Versions (modversions)
-Version: 3.7.9
+Version: 3.7.10
%if %using_buildservice
Release: 0
%else
++++++ kernel-trace.spec ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -20,7 +20,7 @@
# needssslcertforbuild
%define srcversion 3.7
-%define patchversion 3.7.9
+%define patchversion 3.7.10
%define variant %{nil}
%define vanilla_only 0
@@ -59,7 +59,7 @@
Name: kernel-trace
Summary: The Standard Kernel with Tracing Features
-Version: 3.7.9
+Version: 3.7.10
Release: 0
License: GPL-2.0
Group: System/Kernel
kernel-u8500.spec: same change
kernel-vanilla.spec: same change
kernel-versatile.spec: same change
kernel-xen.spec: same change
++++++ README.SUSE ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:53.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:53.000000000 +0100
@@ -1,4 +1,4 @@
-WORKING WITH THE SUSE 2.6.x KERNEL SOURCES
+WORKING WITH THE SUSE KERNEL SOURCES
Andreas Gruenbacher , SUSE Labs, 2003, 2004, 2005, 2006
Michal Marek , SUSE Labs, 2010
@@ -308,12 +308,12 @@
$ for f in patches.*.tar.bz2; do \
tar -xjf "$f" || break; \
done
- $ tar -xjf linux-2.6.5.tar.bz2
+ $ tar -xjf linux-3.7.tar.bz2
# Apply the patches
$ for p in $(./guards < series.conf); do
- patch -d linux-2.6.5 -p1 < $p || break
+ patch -d linux-3.7 -p1 < $p || break
done
The configuration script config.conf which is similar to series.conf is
@@ -334,7 +334,7 @@
The kernel-$FLAVOR packages are based on config/$ARCH/$FLAVOR.
(kernel-default is based on config/$ARCH/default, for example). The
kernel-$FLAVOR packages install their configuration files as
-/boot/config-$VER_STR (for example, /boot/config-2.6.5-99-default). The
+/boot/config-$VER_STR (for example, /boot/config-3.7.6-99-default). The
config is also packaged in the kernel-$FLAVOR-devel package as
/usr/src/linux-obj/$ARCH/$FLAVOR/.config.
@@ -422,21 +422,21 @@
MODULE LOAD PATHS
Modules that belong to a specific kernel release are installed in
-/lib/modules/2.6.5-99-smp and similar. Note that this path contains the
+/lib/modules/3.7.6-99-smp and similar. Note that this path contains the
kernel package release number. Modules from KMPs must be installed
-below /lib/modules/2.6.5-99-smp/updates/ and similar: modules below
+below /lib/modules/3.7.6-99-smp/updates/ and similar: modules below
updates/ have priority over other modules.
When KMPs contain modules that are compatible between multiple installed
kernels, symlinks are used to make those modules available to those
compatible kernels like this:
- /lib/modules/2.6.16-100-smp/weak-updates/foo.ko ->
- /lib/modules/2.6.16-99-smp/updates/foo.ko
+ /lib/modules/3.7.6-100-smp/weak-updates/foo.ko ->
+ /lib/modules/3.7.6-99-smp/updates/foo.ko
Modules in the weak-updates directory have lower priority than modules
-in /lib/modules/2.6.16-100-smp/updates/, and higher priority than other
-modules in /lib/modules/2.6.16-100-smp.
+in /lib/modules/3.7.6-100-smp/updates/, and higher priority than other
+modules in /lib/modules/3.7.6-100-smp.
REFERENCES
++++++ kabi.tar.bz2 ++++++
++++ 1176037 lines of diff (skipped)
++++++ patches.arch.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.arch/arm-origen-regulator.patch new/patches.arch/arm-origen-regulator.patch
--- old/patches.arch/arm-origen-regulator.patch 2012-10-22 18:06:28.000000000 +0200
+++ new/patches.arch/arm-origen-regulator.patch 2013-02-25 19:05:12.000000000 +0100
@@ -28,11 +28,11 @@
@@ -121,6 +121,7 @@ static struct regulator_consumer_supply __initdata ldo14_consumer[] = {
};
static struct regulator_consumer_supply __initdata ldo17_consumer[] = {
- REGULATOR_SUPPLY("vdd33", "swb-a31"), /* AR6003 WLAN & CSR 8810 BT */
+ REGULATOR_SUPPLY("vdd33", "swb-a31"), /* AR6003 WLAN & CSR 8810 BT */
+ REGULATOR_SUPPLY("vmmc", NULL),
};
static struct regulator_consumer_supply __initdata buck1_consumer[] = {
- REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */
+ REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */
--- linus.orig/arch/arm/mach-exynos/mach-smdkv310.c
+++ linus/arch/arm/mach-exynos/mach-smdkv310.c
@@ -14,6 +14,8 @@
@@ -45,7 +45,7 @@
#include
#include
@@ -380,6 +382,14 @@ static void __init smdkv310_reserve(void
- s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
+ s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
}
+static struct regulator_consumer_supply vddmmc_consumers[] __devinitdata = {
@@ -58,15 +58,15 @@
+
static void __init smdkv310_machine_init(void)
{
- s3c_i2c1_set_platdata(NULL);
+ s3c_i2c1_set_platdata(NULL);
@@ -387,6 +397,9 @@ static void __init smdkv310_machine_init
- smdkv310_smsc911x_init();
+ smdkv310_smsc911x_init();
+ regulator_register_always_on(0, "fixed-3.3V", vddmmc_consumers,
+ ARRAY_SIZE(vddmmc_consumers), 3300000);
+
- s3c_sdhci0_set_platdata(&smdkv310_hsmmc0_pdata);
- s3c_sdhci1_set_platdata(&smdkv310_hsmmc1_pdata);
- s3c_sdhci2_set_platdata(&smdkv310_hsmmc2_pdata);
+ s3c_sdhci0_set_platdata(&smdkv310_hsmmc0_pdata);
+ s3c_sdhci1_set_platdata(&smdkv310_hsmmc1_pdata);
+ s3c_sdhci2_set_platdata(&smdkv310_hsmmc2_pdata);
++++++ patches.fixes.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/TTY-do-not-update-atime-mtime-on-read-write.patch new/patches.fixes/TTY-do-not-update-atime-mtime-on-read-write.patch
--- old/patches.fixes/TTY-do-not-update-atime-mtime-on-read-write.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/TTY-do-not-update-atime-mtime-on-read-write.patch 2013-02-26 04:27:14.000000000 +0100
@@ -0,0 +1,55 @@
+From: Jiri Slaby
+Subject: TTY: do not update atime/mtime on read/write
+Patch-mainline: 3.9-rc1
+References: bnc#797175 CVE-2013-0160
+
+On http://vladz.devzero.fr/013_ptmx-timing.php, we can see how to find
+out length of a password using timestamps of /dev/ptmx. It is
+documented in "Timing Analysis of Keystrokes and Timing Attacks on
+SSH". To avoid that problem, do not update time when reading
+from/writing to a TTY.
+
+I am afraid of regressions as this is a behavior we have since 0.97
+and apps may expect the time to be current, e.g. for monitoring
+whether there was a change on the TTY. Now, there is no change. So
+this would better have a lot of testing before it goes upstream.
+
+References: CVE-2013-0160
+
+Signed-off-by: Jiri Slaby
+Cc: stable # after 3.9 is out
+Signed-off-by: Greg Kroah-Hartman
+---
+ drivers/tty/tty_io.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
+index 54a254a..8f44d62 100644
+--- a/drivers/tty/tty_io.c
++++ b/drivers/tty/tty_io.c
+@@ -977,8 +977,7 @@ static ssize_t tty_read(struct file *file, char __user *buf, size_t count,
+ else
+ i = -EIO;
+ tty_ldisc_deref(ld);
+- if (i > 0)
+- inode->i_atime = current_fs_time(inode->i_sb);
++
+ return i;
+ }
+
+@@ -1079,11 +1078,8 @@ static inline ssize_t do_tty_write(
+ break;
+ cond_resched();
+ }
+- if (written) {
+- struct inode *inode = file->f_path.dentry->d_inode;
+- inode->i_mtime = current_fs_time(inode->i_sb);
++ if (written)
+ ret = written;
+- }
+ out:
+ tty_write_unlock(tty);
+ return ret;
+--
+1.8.1.4
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch new/patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch
--- old/patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,43 +0,0 @@
-From: Marcin Slusarz
-Date: Mon, 10 Dec 2012 21:30:51 +0100
-Subject: drm/nouveau/vm: fix memory corruption when pgt allocation fails
-Git-commit: cfd376b6bfccf33782a0748a9c70f7f752f8b869
-Patch-mainline: v3.8-rc6
-References: bnc#802347
-
-If we return freed vm, nouveau_drm_open will happily call nouveau_cli_destroy,
-which will try to free it again.
-
-Reported-by: Peter Hurley
-Signed-off-by: Marcin Slusarz
-Signed-off-by: Ben Skeggs
-Signed-off-by: Jiri Slaby
----
- drivers/gpu/drm/nouveau/core/subdev/vm/base.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
-index 082c11b..77c67fc 100644
---- a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
-+++ b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c
-@@ -352,7 +352,7 @@ nouveau_vm_create(struct nouveau_vmmgr *vmm, u64 offset, u64 length,
- u64 mm_length = (offset + length) - mm_offset;
- int ret;
-
-- vm = *pvm = kzalloc(sizeof(*vm), GFP_KERNEL);
-+ vm = kzalloc(sizeof(*vm), GFP_KERNEL);
- if (!vm)
- return -ENOMEM;
-
-@@ -376,6 +376,8 @@ nouveau_vm_create(struct nouveau_vmmgr *vmm, u64 offset, u64 length,
- return ret;
- }
-
-+ *pvm = vm;
-+
- return 0;
- }
-
---
-1.8.1.2
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ext4-fix-error-handling-in-ext4_fill_super new/patches.fixes/ext4-fix-error-handling-in-ext4_fill_super
--- old/patches.fixes/ext4-fix-error-handling-in-ext4_fill_super 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/ext4-fix-error-handling-in-ext4_fill_super 2013-02-26 04:27:14.000000000 +0100
@@ -0,0 +1,110 @@
+From 07aa2ea13814ea60d12f7330b6d5ccfdb0c3ba4d Mon Sep 17 00:00:00 2001
+From: Lukas Czerner
+Date: Thu, 8 Nov 2012 15:16:54 -0500
+Subject: ext4: fix error handling in ext4_fill_super()
+Git-commit: 07aa2ea13814ea60d12f7330b6d5ccfdb0c3ba4d
+Patch-mainline: v3.8-rc2
+
+Commit 07aa2ea13814ea60d12f7330b6d5ccfdb0c3ba4d upstream.
+
+There are some places in ext4_fill_super() where we would not return
+proper error code if something fails. The confusion is caused probably
+due to the fact that we have two "kind-of" return variables 'ret'and
+'err'.
+
+'ret' is used to return error code from ext4_fill_super() where err is
+used to store return values from other functions within ext4_fill_super().
+However some places were missing the obligatory 'ret = err'. We could
+put the assignment where it is missing, but we can have better "future
+proof" solution. Or we could convert the code to use just one, but it
+would require more rewrites.
+
+This commit fixes the problem by returning value from 'err' variable if
+it is set and 'ret' otherwise in error handling branch of the
+ext4_fill_super(). The reasoning is that 'ret' value is often set to
+default "-EINVAL" or explicit value, where 'err' is used to store
+return value from other functions and should be otherwise zero.
+
+https://bugzilla.kernel.org/show_bug.cgi?id=48431
+
+Signed-off-by: Lukas Czerner
+Signed-off-by: "Theodore Ts'o"
+Signed-off-by: Jeff Mahoney
+---
+ fs/ext4/super.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -3266,7 +3266,7 @@ static int ext4_fill_super(struct super_
+ unsigned int i;
+ int needs_recovery, has_huge_files, has_bigalloc;
+ __u64 blocks_count;
+- int err;
++ int err = 0;
+ unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO;
+ ext4_group_t first_not_zeroed;
+
+@@ -3295,6 +3295,7 @@ static int ext4_fill_super(struct super_
+ for (cp = sb->s_id; (cp = strchr(cp, '/'));)
+ *cp = '!';
+
++ /* -EINVAL is default */
+ ret = -EINVAL;
+ blocksize = sb_min_blocksize(sb, EXT4_MIN_BLOCK_SIZE);
+ if (!blocksize) {
+@@ -3664,7 +3665,6 @@ static int ext4_fill_super(struct super_
+ " too large to mount safely on this system");
+ if (sizeof(sector_t) < 8)
+ ext4_msg(sb, KERN_WARNING, "CONFIG_LBDAF not enabled");
+- ret = err;
+ goto failed_mount;
+ }
+
+@@ -3772,7 +3772,6 @@ static int ext4_fill_super(struct super_
+ }
+ if (err) {
+ ext4_msg(sb, KERN_ERR, "insufficient memory");
+- ret = err;
+ goto failed_mount3;
+ }
+
+@@ -3899,8 +3898,8 @@ no_journal:
+ if (es->s_overhead_clusters)
+ sbi->s_overhead = le32_to_cpu(es->s_overhead_clusters);
+ else {
+- ret = ext4_calculate_overhead(sb);
+- if (ret)
++ err = ext4_calculate_overhead(sb);
++ if (err)
+ goto failed_mount_wq;
+ }
+
+@@ -3912,6 +3911,7 @@ no_journal:
+ alloc_workqueue("ext4-dio-unwritten", WQ_MEM_RECLAIM | WQ_UNBOUND, 1);
+ if (!EXT4_SB(sb)->dio_unwritten_wq) {
+ printk(KERN_ERR "EXT4-fs: failed to create DIO workqueue\n");
++ ret = -ENOMEM;
+ goto failed_mount_wq;
+ }
+
+@@ -4014,8 +4014,8 @@ no_journal:
+ /* Enable quota usage during mount. */
+ if (EXT4_HAS_RO_COMPAT_FEATURE(sb, EXT4_FEATURE_RO_COMPAT_QUOTA) &&
+ !(sb->s_flags & MS_RDONLY)) {
+- ret = ext4_enable_quotas(sb);
+- if (ret)
++ err = ext4_enable_quotas(sb);
++ if (err)
+ goto failed_mount7;
+ }
+ #endif /* CONFIG_QUOTA */
+@@ -4086,7 +4086,7 @@ out_fail:
+ kfree(sbi);
+ out_free_orig:
+ kfree(orig_data);
+- return ret;
++ return err ? err : ret;
+ }
+
+ /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/ext4-release-sysfs-kobject-when-failing-to-enable-quotas-on-mount new/patches.fixes/ext4-release-sysfs-kobject-when-failing-to-enable-quotas-on-mount
--- old/patches.fixes/ext4-release-sysfs-kobject-when-failing-to-enable-quotas-on-mount 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/ext4-release-sysfs-kobject-when-failing-to-enable-quotas-on-mount 2013-02-26 04:27:14.000000000 +0100
@@ -0,0 +1,58 @@
+From: Theodore Ts'o
+Date: Fri, 25 Jan 2013 04:24:54 +0000 (-0500)
+Subject: ext4: release sysfs kobject when failing to enable quotas on mount
+Git-commit: 72ba74508b2857e71d65fc93f0d6b684492fc740
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4.git
+Patch-mainline: Queued in subsystem maintainer repo
+
+ext4: release sysfs kobject when failing to enable quotas on mount
+
+In addition, print the error returned from ext4_enable_quotas()
+
+Signed-off-by: "Theodore Ts'o"
+Reviewed-by: Carlos Maiolino
+Cc: stable@vger.kernel.org
+Acked-by: Jeff Mahoney
+---
+
+ fs/ext4/super.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/fs/ext4/super.c b/fs/ext4/super.c
+index c014edd..3ac3060 100644
+--- a/fs/ext4/super.c
++++ b/fs/ext4/super.c
+@@ -4009,7 +4009,7 @@ no_journal:
+ !(sb->s_flags & MS_RDONLY)) {
+ err = ext4_enable_quotas(sb);
+ if (err)
+- goto failed_mount7;
++ goto failed_mount8;
+ }
+ #endif /* CONFIG_QUOTA */
+
+@@ -4036,6 +4036,10 @@ cantfind_ext4:
+ ext4_msg(sb, KERN_ERR, "VFS: Can't find ext4 filesystem");
+ goto failed_mount;
+
++#ifdef CONFIG_QUOTA
++failed_mount8:
++ kobject_del(&sbi->s_kobj);
++#endif
+ failed_mount7:
+ ext4_unregister_li_request(sb);
+ failed_mount6:
+@@ -5006,9 +5010,9 @@ static int ext4_enable_quotas(struct super_block *sb)
+ DQUOT_USAGE_ENABLED);
+ if (err) {
+ ext4_warning(sb,
+- "Failed to enable quota (type=%d) "
+- "tracking. Please run e2fsck to fix.",
+- type);
++ "Failed to enable quota tracking "
++ "(type=%d, err=%d). Please run "
++ "e2fsck to fix.", type, err);
+ return err;
+ }
+ }
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/kvm-ioapic.patch new/patches.fixes/kvm-ioapic.patch
--- old/patches.fixes/kvm-ioapic.patch 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/kvm-ioapic.patch 2013-02-26 04:27:14.000000000 +0100
@@ -10,8 +10,8 @@
--- a/virt/kvm/ioapic.c
+++ b/virt/kvm/ioapic.c
@@ -205,7 +205,8 @@ int kvm_ioapic_set_irq(struct kvm_ioapic
- irq_level = __kvm_irq_line_state(&ioapic->irq_states[irq],
- irq_source_id, level);
+ irq_level = __kvm_irq_line_state(&ioapic->irq_states[irq],
+ irq_source_id, level);
entry = ioapic->redirtbl[irq];
- irq_level ^= entry.fields.polarity;
+// polarity is always active high in qemu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/kvm-macos.patch new/patches.fixes/kvm-macos.patch
--- old/patches.fixes/kvm-macos.patch 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/kvm-macos.patch 2013-02-26 04:27:14.000000000 +0100
@@ -61,7 +61,7 @@
+ case MSR_NHM_SNB_PKG_CST_CFG_CTL: /* 0xe2 */
data = 0;
break;
- case MSR_P6_PERFCTR0:
+ case MSR_P6_PERFCTR0:
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -1985,7 +1987,7 @@ static void do_cpuid_ent(struct kvm_cpui
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/nfs-connect-timeout new/patches.fixes/nfs-connect-timeout
--- old/patches.fixes/nfs-connect-timeout 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/nfs-connect-timeout 2013-02-26 04:27:14.000000000 +0100
@@ -38,8 +38,8 @@
--- a/include/linux/sunrpc/sched.h
+++ b/include/linux/sunrpc/sched.h
@@ -236,6 +236,7 @@ void rpc_wake_up_queued_task(struct rpc_wait_queue *,
- bool (*)(struct rpc_task *, void *),
- void *);
+ bool (*)(struct rpc_task *, void *),
+ void *);
void rpc_wake_up_status(struct rpc_wait_queue *, int);
+void rpc_wake_up_softconn_status(struct rpc_wait_queue *, int);
int rpc_queue_empty(struct rpc_wait_queue *);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/remount-no-shrink-dcache new/patches.fixes/remount-no-shrink-dcache
--- old/patches.fixes/remount-no-shrink-dcache 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/remount-no-shrink-dcache 2013-02-26 04:27:14.000000000 +0100
@@ -53,7 +53,7 @@
if (remount_ro) {
- if (force) {
+ if (rflags & REMOUNT_FORCE) {
- mark_files_ro(sb);
+ mark_files_ro(sb);
} else {
retval = sb_prepare_remount_readonly(sb);
@@ -728,7 +723,7 @@ int do_remount_sb(struct super_block *sb
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/scsi-dh-queuedata-accessors new/patches.fixes/scsi-dh-queuedata-accessors
--- old/patches.fixes/scsi-dh-queuedata-accessors 2013-02-19 09:08:52.000000000 +0100
+++ new/patches.fixes/scsi-dh-queuedata-accessors 2013-02-26 04:27:14.000000000 +0100
@@ -28,8 +28,8 @@
- sdev = q->queuedata;
+ sdev = scsi_device_from_queue(q);
if (!sdev) {
- spin_unlock_irqrestore(q->queue_lock, flags);
- err = SCSI_DH_NOSYS;
+ spin_unlock_irqrestore(q->queue_lock, flags);
+ err = SCSI_DH_NOSYS;
@@ -484,7 +484,7 @@ int scsi_dh_attach(struct request_queue
return -EINVAL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.fixes/sock_diag-simplify-sock_diag_handlers-handling-in-_sock_diag_rcv_msg new/patches.fixes/sock_diag-simplify-sock_diag_handlers-handling-in-_sock_diag_rcv_msg
--- old/patches.fixes/sock_diag-simplify-sock_diag_handlers-handling-in-_sock_diag_rcv_msg 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.fixes/sock_diag-simplify-sock_diag_handlers-handling-in-_sock_diag_rcv_msg 2013-02-26 04:27:14.000000000 +0100
@@ -0,0 +1,67 @@
+From 8e904550d0fffcda2b18d7ab12750b0c75757e89 Mon Sep 17 00:00:00 2001
+From: Mathias Krause
+Date: Sat, 23 Feb 2013 01:13:48 +0000
+Subject: sock_diag: Simplify sock_diag_handlers[] handling in __sock_diag_rcv_msg
+Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
+Git-commit: 8e904550d0fffcda2b18d7ab12750b0c75757e89
+Patch-mainline: Queued in subsystem maintainer repo
+References: bnc#805633 CVE-2013-1763
+
+The sock_diag_lock_handler() and sock_diag_unlock_handler() actually
+make the code less readable. Get rid of them and make the lock usage
+and access to sock_diag_handlers[] clear on the first sight.
+
+Signed-off-by: Mathias Krause
+Signed-off-by: David S. Miller
+Acked-by: Jeff Mahoney
+---
+ net/core/sock_diag.c | 24 +++++++-----------------
+ 1 files changed, 7 insertions(+), 17 deletions(-)
+
+diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c
+index 750f44f..a29e90c 100644
+--- a/net/core/sock_diag.c
++++ b/net/core/sock_diag.c
+@@ -97,21 +97,6 @@ void sock_diag_unregister(const struct sock_diag_handler *hnld)
+ }
+ EXPORT_SYMBOL_GPL(sock_diag_unregister);
+
+-static const inline struct sock_diag_handler *sock_diag_lock_handler(int family)
+-{
+- if (sock_diag_handlers[family] == NULL)
+- request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
+- NETLINK_SOCK_DIAG, family);
+-
+- mutex_lock(&sock_diag_table_mutex);
+- return sock_diag_handlers[family];
+-}
+-
+-static inline void sock_diag_unlock_handler(const struct sock_diag_handler *h)
+-{
+- mutex_unlock(&sock_diag_table_mutex);
+-}
+-
+ static int __sock_diag_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+ {
+ int err;
+@@ -124,12 +109,17 @@ static int __sock_diag_rcv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+ if (req->sdiag_family >= AF_MAX)
+ return -EINVAL;
+
+- hndl = sock_diag_lock_handler(req->sdiag_family);
++ if (sock_diag_handlers[req->sdiag_family] == NULL)
++ request_module("net-pf-%d-proto-%d-type-%d", PF_NETLINK,
++ NETLINK_SOCK_DIAG, req->sdiag_family);
++
++ mutex_lock(&sock_diag_table_mutex);
++ hndl = sock_diag_handlers[req->sdiag_family];
+ if (hndl == NULL)
+ err = -ENOENT;
+ else
+ err = hndl->dump(skb, nlh);
+- sock_diag_unlock_handler(hndl);
++ mutex_unlock(&sock_diag_table_mutex);
+
+ return err;
+ }
+
++++++ patches.kernel.org.tar.bz2 ++++++
++++ 2478 lines of diff (skipped)
++++++ patches.suse.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/0016-ext4-Implement-richacl-support-in-ext4.patch new/patches.suse/0016-ext4-Implement-richacl-support-in-ext4.patch
--- old/patches.suse/0016-ext4-Implement-richacl-support-in-ext4.patch 2013-02-11 15:18:11.000000000 +0100
+++ new/patches.suse/0016-ext4-Implement-richacl-support-in-ext4.patch 2013-02-25 20:57:27.000000000 +0100
@@ -27,7 +27,7 @@
--- a/fs/ext4/Kconfig
+++ b/fs/ext4/Kconfig
-@@ -83,3 +83,13 @@ config EXT4_DEBUG
+@@ -85,3 +85,13 @@ config EXT4_DEBUG
If you select Y here, then you will be able to turn on debugging
with a command such as "echo 1 > /sys/kernel/debug/ext4/mballoc-debug"
@@ -50,7 +50,7 @@
+ext4-$(CONFIG_EXT4_FS_RICHACL) += richacl.o
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
-@@ -908,6 +908,10 @@ struct ext4_inode_info {
+@@ -924,6 +924,10 @@ struct ext4_inode_info {
/* Precomputed uuid+inum+igen checksum for seeding inode checksums */
__u32 i_csum_seed;
@@ -71,7 +71,7 @@
/*
* Called when an inode is released. Note that this is different
-@@ -258,5 +259,8 @@ const struct inode_operations ext4_file_
+@@ -334,5 +335,8 @@ const struct inode_operations ext4_file_
#endif
.get_acl = ext4_get_acl,
.fiemap = ext4_fiemap,
@@ -90,7 +90,7 @@
#include
-@@ -861,7 +862,11 @@ got:
+@@ -908,7 +909,11 @@ got:
if (err)
goto fail_drop;
@@ -113,7 +113,7 @@
#include
-@@ -3654,6 +3655,9 @@ struct inode *ext4_iget(struct super_blo
+@@ -3828,6 +3829,9 @@ struct inode *ext4_iget(struct super_blo
set_nlink(inode, le16_to_cpu(raw_inode->i_links_count));
ext4_clear_state_flags(ei); /* Only relevant on 32-bit archs */
@@ -123,7 +123,7 @@
ei->i_dir_start_lookup = 0;
ei->i_dtime = le32_to_cpu(raw_inode->i_dtime);
/* We now have enough fields to check if the inode was active or not.
-@@ -4078,7 +4082,11 @@ int ext4_setattr(struct dentry *dentry,
+@@ -4253,7 +4257,11 @@ int ext4_setattr(struct dentry *dentry,
int orphan = 0;
const unsigned int ia_valid = attr->ia_valid;
@@ -136,7 +136,7 @@
if (error)
return error;
-@@ -4178,9 +4186,12 @@ int ext4_setattr(struct dentry *dentry,
+@@ -4361,9 +4369,12 @@ int ext4_setattr(struct dentry *dentry,
if (orphan && inode->i_nlink)
ext4_orphan_del(NULL, inode);
@@ -162,7 +162,7 @@
#include
/*
-@@ -2587,6 +2588,9 @@ const struct inode_operations ext4_dir_i
+@@ -3052,6 +3053,9 @@ const struct inode_operations ext4_dir_i
#endif
.get_acl = ext4_get_acl,
.fiemap = ext4_fiemap,
@@ -172,7 +172,7 @@
};
const struct inode_operations ext4_special_inode_operations = {
-@@ -2598,4 +2602,7 @@ const struct inode_operations ext4_speci
+@@ -3063,4 +3067,7 @@ const struct inode_operations ext4_speci
.removexattr = generic_removexattr,
#endif
.get_acl = ext4_get_acl,
@@ -545,7 +545,7 @@
#define CREATE_TRACE_POINTS
#include
-@@ -921,7 +922,9 @@ static struct inode *ext4_alloc_inode(st
+@@ -937,7 +938,9 @@ static struct inode *ext4_alloc_inode(st
ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);
if (!ei)
return NULL;
@@ -556,7 +556,7 @@
ei->vfs_inode.i_version = 1;
ei->vfs_inode.i_data.writeback_index = 0;
memset(&ei->i_cached_extent, 0, sizeof(struct ext4_ext_cache));
-@@ -1009,6 +1012,13 @@ void ext4_clear_inode(struct inode *inod
+@@ -1030,6 +1033,13 @@ void ext4_clear_inode(struct inode *inod
invalidate_inode_buffers(inode);
clear_inode(inode);
dquot_drop(inode);
@@ -570,7 +570,7 @@
ext4_discard_preallocations(inode);
if (EXT4_I(inode)->jinode) {
jbd2_journal_release_jbd_inode(EXT4_JOURNAL(inode),
-@@ -1171,7 +1181,7 @@ enum {
+@@ -1207,7 +1217,7 @@ enum {
Opt_bsd_df, Opt_minix_df, Opt_grpid, Opt_nogrpid,
Opt_resgid, Opt_resuid, Opt_sb, Opt_err_cont, Opt_err_panic, Opt_err_ro,
Opt_nouid32, Opt_debug, Opt_removed,
@@ -579,7 +579,7 @@
Opt_auto_da_alloc, Opt_noauto_da_alloc, Opt_noload,
Opt_commit, Opt_min_batch_time, Opt_max_batch_time,
Opt_journal_dev, Opt_journal_checksum, Opt_journal_async_commit,
-@@ -1208,6 +1218,7 @@ static const match_table_t tokens = {
+@@ -1245,6 +1255,7 @@ static const match_table_t tokens = {
{Opt_user_xattr, "user_xattr"},
{Opt_nouser_xattr, "nouser_xattr"},
{Opt_acl, "acl"},
@@ -587,7 +587,7 @@
{Opt_noacl, "noacl"},
{Opt_noload, "norecovery"},
{Opt_noload, "noload"},
-@@ -1457,6 +1468,9 @@ static int handle_mount_opt(struct super
+@@ -1508,6 +1519,9 @@ static int handle_mount_opt(struct super
case Opt_nouser_xattr:
ext4_msg(sb, KERN_WARNING, deprecated_msg, opt, "3.5");
break;
@@ -597,7 +597,7 @@
case Opt_sb:
return 1; /* handled by get_sb_block() */
case Opt_removed:
-@@ -1648,6 +1662,10 @@ static int parse_options(char *options,
+@@ -1709,6 +1723,10 @@ static int parse_options(char *options,
return 0;
}
}
@@ -608,9 +608,9 @@
return 1;
}
-@@ -1772,6 +1790,9 @@ static int _ext4_show_options(struct seq
- if (nodefs || sbi->s_max_dir_size_kb)
- SEQ_OPTS_PRINT("max_dir_size_kb=%u", sbi->s_max_dir_size_kb);
+@@ -1837,6 +1855,9 @@ static int _ext4_show_options(struct seq
+ if (nodefs || sbi->s_max_dir_size_kb)
+ SEQ_OPTS_PRINT("max_dir_size_kb=%u", sbi->s_max_dir_size_kb);
+ if (sb->s_flags & MS_RICHACL)
+ SEQ_OPTS_PUTS("richacl");
@@ -618,15 +618,15 @@
ext4_show_quota_options(seq, sb);
return 0;
}
-@@ -2983,6 +3004,7 @@ static int ext4_fill_super(struct super_
- int err;
+@@ -3269,6 +3290,7 @@ static int ext4_fill_super(struct super_
+ int err = 0;
unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO;
ext4_group_t first_not_zeroed;
+ unsigned long acl_flags = 0;
sbi = kzalloc(sizeof(*sbi), GFP_KERNEL);
if (!sbi)
-@@ -3054,7 +3076,7 @@ static int ext4_fill_super(struct super_
+@@ -3383,7 +3405,7 @@ static int ext4_fill_super(struct super_
#ifdef CONFIG_EXT4_FS_XATTR
set_opt(sb, XATTR_USER);
#endif
@@ -635,7 +635,7 @@
set_opt(sb, POSIX_ACL);
#endif
set_opt(sb, MBLK_IO_SUBMIT);
-@@ -3137,8 +3159,12 @@ static int ext4_fill_super(struct super_
+@@ -3457,8 +3479,12 @@ static int ext4_fill_super(struct super_
clear_opt(sb, DELALLOC);
}
@@ -650,7 +650,7 @@
if (le32_to_cpu(es->s_rev_level) == EXT4_GOOD_OLD_REV &&
(EXT4_HAS_COMPAT_FEATURE(sb, ~0U) ||
-@@ -4249,6 +4275,7 @@ static int ext4_remount(struct super_blo
+@@ -4587,6 +4613,7 @@ static int ext4_remount(struct super_blo
ext4_group_t g;
unsigned int journal_ioprio = DEFAULT_JOURNAL_IOPRIO;
int err = 0;
@@ -658,7 +658,7 @@
#ifdef CONFIG_QUOTA
int i;
#endif
-@@ -4283,8 +4310,12 @@ static int ext4_remount(struct super_blo
+@@ -4620,8 +4647,12 @@ static int ext4_remount(struct super_blo
if (sbi->s_mount_flags & EXT4_MF_FS_ABORTED)
ext4_abort(sb, "Abort forced by user");
@@ -705,7 +705,7 @@
struct ext4_xattr_header {
__le32 h_magic; /* magic number for identification */
-@@ -70,6 +71,10 @@ extern const struct xattr_handler ext4_x
+@@ -72,6 +73,10 @@ extern const struct xattr_handler ext4_x
extern const struct xattr_handler ext4_xattr_acl_access_handler;
extern const struct xattr_handler ext4_xattr_acl_default_handler;
extern const struct xattr_handler ext4_xattr_security_handler;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/btrfs-0955-fix-hash-overflow-handling.patch new/patches.suse/btrfs-0955-fix-hash-overflow-handling.patch
--- old/patches.suse/btrfs-0955-fix-hash-overflow-handling.patch 1970-01-01 01:00:00.000000000 +0100
+++ new/patches.suse/btrfs-0955-fix-hash-overflow-handling.patch 2013-02-25 20:57:27.000000000 +0100
@@ -0,0 +1,192 @@
+From: Chris Mason
+Date: Mon, 17 Dec 2012 14:26:57 -0500
+Patch-mainline: 3.8
+Git-commit: 9c52057c698fb96f8f07e7a4bcf4801a092bda89
+References: bnc#804738
+Subject: [PATCH] Btrfs: fix hash overflow handling
+
+The handling for directory crc hash overflows was fairly obscure,
+split_leaf returns EOVERFLOW when we try to extend the item and that is
+supposed to bubble up to userland. For a while it did so, but along the
+way we added better handling of errors and forced the FS readonly if we
+hit IO errors during the directory insertion.
+
+Along the way, we started testing only for EEXIST and the EOVERFLOW case
+was dropped. The end result is that we may force the FS readonly if we
+catch a directory hash bucket overflow.
+
+This fixes a few problem spots. First I add tests for EOVERFLOW in the
+places where we can safely just return the error up the chain.
+
+btrfs_rename is harder though, because it tries to insert the new
+directory item only after it has already unlinked anything the rename
+was going to overwrite. Rather than adding very complex logic, I added
+a helper to test for the hash overflow case early while it is still safe
+to bail out.
+
+Snapshot and subvolume creation had a similar problem, so they are using
+the new helper now too.
+
+Signed-off-by: Chris Mason
+Reported-by: Pascal Junod
+Signed-off-by: David Sterba
+---
+ fs/btrfs/ctree.h | 2 +
+ fs/btrfs/dir-item.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
+ fs/btrfs/inode.c | 26 +++++++++++++++++++--
+ fs/btrfs/ioctl.c | 10 ++++++++
+ fs/btrfs/transaction.c | 2 -
+ 5 files changed, 96 insertions(+), 3 deletions(-)
+
+--- a/fs/btrfs/ctree.h
++++ b/fs/btrfs/ctree.h
+@@ -3157,6 +3157,8 @@ void btrfs_update_root_times(struct btrf
+ struct btrfs_root *root);
+
+ /* dir-item.c */
++int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,
++ const char *name, int name_len);
+ int btrfs_insert_dir_item(struct btrfs_trans_handle *trans,
+ struct btrfs_root *root, const char *name,
+ int name_len, struct inode *dir,
+--- a/fs/btrfs/dir-item.c
++++ b/fs/btrfs/dir-item.c
+@@ -213,6 +213,65 @@ struct btrfs_dir_item *btrfs_lookup_dir_
+ return btrfs_match_dir_item_name(root, path, name, name_len);
+ }
+
++int btrfs_check_dir_item_collision(struct btrfs_root *root, u64 dir,
++ const char *name, int name_len)
++{
++ int ret;
++ struct btrfs_key key;
++ struct btrfs_dir_item *di;
++ int data_size;
++ struct extent_buffer *leaf;
++ int slot;
++ struct btrfs_path *path;
++
++
++ path = btrfs_alloc_path();
++ if (!path)
++ return -ENOMEM;
++
++ key.objectid = dir;
++ btrfs_set_key_type(&key, BTRFS_DIR_ITEM_KEY);
++ key.offset = btrfs_name_hash(name, name_len);
++
++ ret = btrfs_search_slot(NULL, root, &key, path, 0, 0);
++
++ /* return back any errors */
++ if (ret < 0)
++ goto out;
++
++ /* nothing found, we're safe */
++ if (ret > 0) {
++ ret = 0;
++ goto out;
++ }
++
++ /* we found an item, look for our name in the item */
++ di = btrfs_match_dir_item_name(root, path, name, name_len);
++ if (di) {
++ /* our exact name was found */
++ ret = -EEXIST;
++ goto out;
++ }
++
++ /*
++ * see if there is room in the item to insert this
++ * name
++ */
++ data_size = sizeof(*di) + name_len + sizeof(struct btrfs_item);
++ leaf = path->nodes[0];
++ slot = path->slots[0];
++ if (data_size + btrfs_item_size_nr(leaf, slot) +
++ sizeof(struct btrfs_item) > BTRFS_LEAF_DATA_SIZE(root)) {
++ ret = -EOVERFLOW;
++ } else {
++ /* plenty of insertion room */
++ ret = 0;
++ }
++out:
++ btrfs_free_path(path);
++ return ret;
++}
++
+ /*
+ * lookup a directory item based on index. 'dir' is the objectid
+ * we're searching in, and 'mod' tells us if you plan on deleting the
+--- a/fs/btrfs/inode.c
++++ b/fs/btrfs/inode.c
+@@ -4842,9 +4842,9 @@ int btrfs_add_link(struct btrfs_trans_ha
+ ret = btrfs_insert_dir_item(trans, root, name, name_len,
+ parent_inode, &key,
+ btrfs_inode_type(inode), index);
+- if (ret == -EEXIST)
++ if (ret == -EEXIST || ret == -EOVERFLOW) {
+ goto fail_dir_item;
+- else if (ret) {
++ } else if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ return ret;
+ }
+@@ -7308,6 +7308,28 @@ static int btrfs_rename(struct inode *ol
+ if (S_ISDIR(old_inode->i_mode) && new_inode &&
+ new_inode->i_size > BTRFS_EMPTY_DIR_SIZE)
+ return -ENOTEMPTY;
++
++
++ /* check for collisions, even if the name isn't there */
++ ret = btrfs_check_dir_item_collision(root, new_dir->i_ino,
++ new_dentry->d_name.name,
++ new_dentry->d_name.len);
++
++ if (ret) {
++ if (ret == -EEXIST) {
++ /* we shouldn't get
++ * eexist without a new_inode */
++ if (!new_inode) {
++ WARN_ON(1);
++ return ret;
++ }
++ } else {
++ /* maybe -EOVERFLOW */
++ return ret;
++ }
++ }
++ ret = 0;
++
+ /*
+ * we're using rename to replace one file with another.
+ * and the replacement file is large. Start IO on it now so
+--- a/fs/btrfs/ioctl.c
++++ b/fs/btrfs/ioctl.c
+@@ -705,6 +705,16 @@ static noinline int btrfs_mksubvol(struc
+ if (error)
+ goto out_dput;
+
++ /*
++ * even if this name doesn't exist, we may get hash collisions.
++ * check for them now when we can safely fail
++ */
++ error = btrfs_check_dir_item_collision(BTRFS_I(dir)->root,
++ dir->i_ino, name,
++ namelen);
++ if (error)
++ goto out_dput;
++
+ down_read(&BTRFS_I(dir)->root->fs_info->subvol_sem);
+
+ if (btrfs_root_refs(&BTRFS_I(dir)->root->root_item) == 0)
+--- a/fs/btrfs/transaction.c
++++ b/fs/btrfs/transaction.c
+@@ -1191,7 +1191,7 @@ static noinline int create_pending_snaps
+ parent_inode, &key,
+ BTRFS_FT_DIR, index);
+ /* We have check then name at the beginning, so it is impossible. */
+- BUG_ON(ret == -EEXIST);
++ BUG_ON(ret == -EEXIST || ret == -EOVERFLOW);
+ if (ret) {
+ btrfs_abort_transaction(trans, root, ret);
+ goto fail;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch new/patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch
--- old/patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch 2013-02-11 15:18:11.000000000 +0100
+++ new/patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch 1970-01-01 01:00:00.000000000 +0100
@@ -1,46 +0,0 @@
-From b2cd0a665f7d14d48a64459d22ee8342515fc7cb Mon Sep 17 00:00:00 2001
-From: Olaf Hering
-Date: Tue, 15 Jan 2013 14:19:55 +0100
-Subject: [PATCH] x86: Hyper-V: register clocksource only if its advertised
-References: bnc#792500
-Patch-mainline: submitted
-
-Enable hyperv_clocksource only if its advertised as a feature.
-XenServer 6 returns the signature which is checked in
-ms_hyperv_platform(), but it does not offer all features. Currently the
-clocksource is enabled unconditionally in ms_hyperv_init_platform(), and
-the result is a hanging guest.
-
-Hyper-V spec Bit 1 indicates the availability of Partition Reference
-Counter. Register the clocksource only if this bit is set.
-
-The guest in question prints this in dmesg:
- [ 0.000000] Hypervisor detected: Microsoft HyperV
- [ 0.000000] HyperV: features 0x70, hints 0x0
-
-Signed-off-by: Olaf Hering
-Cc: stable@kernel.org
-Cc: KY Srinivasan
-cc: Greg KH
-Acked-by:
----
- arch/x86/kernel/cpu/mshyperv.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
-index 0a630dd..646d192 100644
---- a/arch/x86/kernel/cpu/mshyperv.c
-+++ b/arch/x86/kernel/cpu/mshyperv.c
-@@ -68,7 +68,8 @@ static void __init ms_hyperv_init_platform(void)
- printk(KERN_INFO "HyperV: features 0x%x, hints 0x%x\n",
- ms_hyperv.features, ms_hyperv.hints);
-
-- clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100);
-+ if (ms_hyperv.features & HV_X64_MSR_TIME_REF_COUNT_AVAILABLE)
-+ clocksource_register_hz(&hyperv_cs, NSEC_PER_SEC/100);
- }
-
- const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
---
-1.8.0.1
-
++++++ patches.xen.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen-pciback-ratelimit new/patches.xen/xen-pciback-ratelimit
--- old/patches.xen/xen-pciback-ratelimit 2013-02-21 17:15:10.000000000 +0100
+++ new/patches.xen/xen-pciback-ratelimit 1970-01-01 01:00:00.000000000 +0100
@@ -1,51 +0,0 @@
-From: jbeulich@suse.com
-Subject: xen-pciback: rate limit error messages from xen_pcibk_enable_msi{,x}()
-References: CVE-2013-0231 XSA-43 bnc#801178
-Patch-mainline: n/a
-
-... as being guest triggerable (e.g. by invoking
-XEN_PCI_OP_enable_msi{,x} on a device not being MSI/MSI-X capable).
-
-This is CVE-2013-0231 / XSA-43.
-
-Also make the two messages uniform in both their wording and severity.
-
-Signed-off-by: Jan Beulich
-
---- head.orig/drivers/xen/xen-pciback/pciback_ops.c 2012-04-10 17:21:35.000000000 +0200
-+++ head/drivers/xen/xen-pciback/pciback_ops.c 2013-01-28 16:17:29.000000000 +0100
-@@ -148,7 +148,6 @@ int xen_pcibk_enable_msi(struct xen_pcib
- #ifndef CONFIG_XEN
- struct xen_pcibk_dev_data *dev_data;
- #endif
-- int otherend = pdev->xdev->otherend_id;
- int status;
-
- if (unlikely(verbose_request))
-@@ -157,8 +156,9 @@ int xen_pcibk_enable_msi(struct xen_pcib
- status = pci_enable_msi(dev);
-
- if (status) {
-- printk(KERN_ERR "error enable msi for guest %x status %x\n",
-- otherend, status);
-+ pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI for guest %u: err %d\n",
-+ pci_name(dev), pdev->xdev->otherend_id,
-+ status);
- op->value = 0;
- return XEN_PCI_ERR_op_failed;
- }
-@@ -256,10 +256,10 @@ int xen_pcibk_enable_msix(struct xen_pci
- pci_name(dev), i,
- op->msix_entries[i].vector);
- }
-- } else {
-- printk(KERN_WARNING DRV_NAME ": %s: failed to enable MSI-X: err %d!\n",
-- pci_name(dev), result);
-- }
-+ } else
-+ pr_warn_ratelimited(DRV_NAME ": %s: error enabling MSI-X for guest %u: err %d!\n",
-+ pci_name(dev), pdev->xdev->otherend_id,
-+ result);
- kfree(entries);
-
- op->value = result;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen3-patch-2.6.31 new/patches.xen/xen3-patch-2.6.31
--- old/patches.xen/xen3-patch-2.6.31 2013-02-21 17:15:10.000000000 +0100
+++ new/patches.xen/xen3-patch-2.6.31 2013-02-27 20:44:57.000000000 +0100
@@ -6184,7 +6184,7 @@
struct per_user_data {
struct mutex bind_mutex; /* serialize bind/unbind operations */
@@ -278,6 +285,9 @@ static void evtchn_unbind_from_user(stru
- int irq = irq_from_evtchn(port);
+ BUG_ON(irq < 0);
unbind_from_irqhandler(irq, (void *)(unsigned long)port);
+#ifdef CONFIG_XEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches.xen/xen3-patch-3.1 new/patches.xen/xen3-patch-3.1
--- old/patches.xen/xen3-patch-3.1 2013-02-21 17:15:10.000000000 +0100
+++ new/patches.xen/xen3-patch-3.1 2013-02-27 20:44:57.000000000 +0100
@@ -2813,9 +2813,9 @@
+#ifndef CONFIG_XEN
struct xen_pcibk_dev_data *dev_data;
+#endif
- int otherend = pdev->xdev->otherend_id;
int status;
+ if (unlikely(verbose_request))
@@ -153,14 +166,20 @@ int xen_pcibk_enable_msi(struct xen_pcib
/* The value the guest needs is actually the IDT vector, not the
* the local domain's IRQ number. */
++++++ series.conf ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:58.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:58.000000000 +0100
@@ -36,6 +36,7 @@
patches.kernel.org/patch-3.7.6-7
patches.kernel.org/patch-3.7.7-8
patches.kernel.org/patch-3.7.8-9
+ patches.kernel.org/patch-3.7.9-10
########################################################
# Build fixes that apply to the vanilla kernel too.
@@ -232,12 +233,10 @@
########################################################
# AGP, graphics related stuff
########################################################
- patches.fixes/drm-nouveau-vm-fix-memory-corruption-when-pgt-alloca.patch
########################################################
# Suse specific stuff
########################################################
- patches.suse/suse-hv-register-clocksource-only-if-its-adverti.patch
patches.suse/suse-hv-fate314663-0001-mm-Export-a-function-to-get-vm-committed-memory.patch
patches.suse/suse-hv-fate314663-0002-Drivers-hv-Add-Hyper-V-balloon-driver.patch
patches.suse/suse-hv-fate314663-0003-Drivers-hv-balloon-Fix-a-bug-in-the-definition-of-st.patch
@@ -308,11 +307,14 @@
########################################################
# ext4
########################################################
+ patches.fixes/ext4-fix-error-handling-in-ext4_fill_super
+ patches.fixes/ext4-release-sysfs-kobject-when-failing-to-enable-quotas-on-mount
########################################################
# btrfs
########################################################
patches.suse/btrfs-use-correct-device-for-maps.patch
+ patches.suse/btrfs-0955-fix-hash-overflow-handling.patch
########################################################
# Reiserfs Patches
@@ -437,6 +439,7 @@
########################################################
patches.fixes/tulip-quad-NIC-ifdown
patches.drivers/ehea-modinfo.patch
+ patches.fixes/sock_diag-simplify-sock_diag_handlers-handling-in-_sock_diag_rcv_msg
########################################################
# Wireless Networking
@@ -483,6 +486,7 @@
########################################################
# Char / serial
########################################################
+ patches.fixes/TTY-do-not-update-atime-mtime-on-read-write.patch
########################################################
# Other driver fixes
@@ -713,7 +717,6 @@
patches.xen/xen-netback-generalize
patches.xen/xen-netback-multiple-tasklets
patches.xen/xen-netback-kernel-threads
- patches.xen/xen-pciback-ratelimit
patches.xen/xen-cxgb3
patches.xen/xen-dcdbas
patches.xen/xen-x86-panic-no-reboot
++++++ source-timestamp ++++++
--- /var/tmp/diff_new_pack.tWPnny/_old 2013-03-01 11:24:58.000000000 +0100
+++ /var/tmp/diff_new_pack.tWPnny/_new 2013-03-01 11:24:58.000000000 +0100
@@ -1,3 +1,3 @@
-2013-02-21 17:15:10 +0100
-GIT Revision: 8dec9689de608ccde8b8c596455fc596be0bff90
+2013-02-28 16:06:29 +0100
+GIT Revision: 82d3f2183acfef1671c853eff4ba201fe0702e18
GIT Branch: openSUSE-12.3
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org