commit kernel-source for openSUSE:12.3
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 <agruen@suse.de>, SUSE Labs, 2003, 2004, 2005, 2006 Michal Marek <mmarek@suse.de>, 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 <linux/io.h> #include <linux/i2c.h> @@ -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 <jslaby@suse.cz> +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 <jslaby@suse.cz> +Cc: stable <stable@vger.kernel.org> # after 3.9 is out +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + 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 <marcin.slusarz@gmail.com> -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 <peter@hurleysoftware.com> -Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> -Signed-off-by: Ben Skeggs <bskeggs@redhat.com> -Signed-off-by: Jiri Slaby <jslaby@suse.cz> ---- - 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 <lczerner@redhat.com> +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 <lczerner@redhat.com> +Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> +Signed-off-by: Jeff Mahoney <jeffm@suse.com> +--- + 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 <tytso@mit.edu> +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" <tytso@mit.edu> +Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com> +Cc: stable@vger.kernel.org +Acked-by: Jeff Mahoney <jeffm@suse.com> +--- + + 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 <minipli@googlemail.com> +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 <minipli@googlemail.com> +Signed-off-by: David S. Miller <davem@davemloft.net> +Acked-by: Jeff Mahoney <jeffm@suse.com> +--- + 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 <trace/events/ext4.h> -@@ -861,7 +862,11 @@ got: +@@ -908,7 +909,11 @@ got: if (err) goto fail_drop; @@ -113,7 +113,7 @@ #include <trace/events/ext4.h> -@@ -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 <trace/events/ext4.h> /* -@@ -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 <trace/events/ext4.h> -@@ -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 <chris.mason@fusionio.com> +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 <chris.mason@fusionio.com> +Reported-by: Pascal Junod <pascal@junod.info> +Signed-off-by: David Sterba <dsterba@suse.cz> +--- + 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 <olaf@aepfle.de> -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 <olaf@aepfle.de> -Cc: stable@kernel.org -Cc: KY Srinivasan <kys@microsoft.com> -cc: Greg KH <gregkh@linuxfoundation.org> -Acked-by: <ohering@suse.de> ---- - 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 <jbeulich@suse.com> - ---- 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
participants (1)
-
root@hilbert.suse.de