--- /dev/null
+From e5ab012c3271990e8457055c25cafddc1ae8aa6b Mon Sep 17 00:00:00 2001
+From: Frederic Weisbecker <fweisbec@gmail.com>
+Date: Wed, 20 Feb 2013 16:15:36 +0100
+Subject: nohz: Make tick_nohz_irq_exit() irq safe
+
+From: Frederic Weisbecker <fweisbec@gmail.com>
+
+commit e5ab012c3271990e8457055c25cafddc1ae8aa6b upstream.
+
+As it stands, irq_exit() may or may not be called with
+irqs disabled, depending on __ARCH_IRQ_EXIT_IRQS_DISABLED
+that the arch can define.
+
+It makes tick_nohz_irq_exit() unsafe. For example two
+interrupts can race in tick_nohz_stop_sched_tick(): the inner
+most one computes the expiring time on top of the timer list,
+then it's interrupted right before reprogramming the
+clock. The new interrupt enqueues a new timer list timer,
+it reprogram the clock to take it into account and it exits.
+The CPUs resumes the inner most interrupt and performs the clock
+reprogramming without considering the new timer list timer.
+
+This regression has been introduced by:
+ 280f06774afedf849f0b34248ed6aff57d0f6908
+ ("nohz: Separate out irq exit and idle loop dyntick logic")
+
+Let's fix it right now with the appropriate protections.
+
+A saner long term solution will be to remove
+__ARCH_IRQ_EXIT_IRQS_DISABLED and mandate that irq_exit() is called
+with interrupts disabled.
+
+Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Ingo Molnar <mingo@kernel.org>
+Cc: Linus Torvalds <torvalds@linuxfoundation.org>
+Link: http://lkml.kernel.org/r/1361373336-11337-1-git-send-email-fweisbec@gmail.com
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Signed-off-by: Lingzhu Xiang <lxiang@redhat.com>
+Reviewed-by: CAI Qian <caiqian@redhat.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/time/tick-sched.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/kernel/time/tick-sched.c
++++ b/kernel/time/tick-sched.c
+@@ -496,12 +496,17 @@ void tick_nohz_idle_enter(void)
+ */
+ void tick_nohz_irq_exit(void)
+ {
++ unsigned long flags;
+ struct tick_sched *ts = &__get_cpu_var(tick_cpu_sched);
+
+ if (!ts->inidle)
+ return;
+
++ local_irq_save(flags);
++
+ tick_nohz_stop_sched_tick(ts);
++
++ local_irq_restore(flags);
+ }
+
+ /**
--- /dev/null
+From 89b1f39eb4189de745fae554b0d614d87c8d5c63 Mon Sep 17 00:00:00 2001
+From: Jan Kara <jack@suse.cz>
+Date: Tue, 5 Feb 2013 13:59:56 +0100
+Subject: udf: Fix bitmap overflow on large filesystems with small block size
+
+From: Jan Kara <jack@suse.cz>
+
+commit 89b1f39eb4189de745fae554b0d614d87c8d5c63 upstream.
+
+For large UDF filesystems with 512-byte blocks the number of necessary
+bitmap blocks is larger than 2^16 so s_nr_groups in udf_bitmap overflows
+(the number will overflow for filesystems larger than 128 GB with
+512-byte blocks). That results in ENOSPC errors despite the filesystem
+has plenty of free space.
+
+Fix the problem by changing s_nr_groups' type to 'int'. That is enough
+even for filesystems 2^32 blocks (UDF maximum) and 512-byte blocksize.
+
+Reported-and-tested-by: v10lator@myway.de
+Signed-off-by: Jan Kara <jack@suse.cz>
+Cc: Jim Trigg <jtrigg@spamcop.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ fs/udf/udf_sb.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/fs/udf/udf_sb.h
++++ b/fs/udf/udf_sb.h
+@@ -82,7 +82,7 @@ struct udf_virtual_data {
+ struct udf_bitmap {
+ __u32 s_extLength;
+ __u32 s_extPosition;
+- __u16 s_nr_groups;
++ int s_nr_groups;
+ struct buffer_head **s_block_bitmap;
+ };
+