Oleg Nesterov
89f39af129
fs/super.c: fix race between freeze_super() and thaw_super()
...
Change thaw_super() to check frozen != SB_FREEZE_COMPLETE rather than
frozen == SB_UNFROZEN, otherwise it can race with freeze_super() which
drops sb->s_umount after SB_FREEZE_WRITE to preserve the lock ordering.
In this case thaw_super() will wrongly call s_op->unfreeze_fs() before
it was actually frozen, and call sb_freeze_unlock() which leads to the
unbalanced percpu_up_write(). Unfortunately lockdep can't detect this,
so this triggers misc BUG_ON()'s in kernel/rcu/sync.c.
Reported-and-tested-by: Nikolay Borisov <kernel@kyup.com >
Signed-off-by: Oleg Nesterov <oleg@redhat.com >
Cc: stable@vger.kernel.org
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk >
2016-10-14 20:00:34 -04:00
..
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-11 08:10:19 -07:00
2016-10-10 20:16:43 -07:00
2016-09-14 08:44:57 -06:00
2016-10-10 23:02:51 -04:00
2016-10-11 11:23:06 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 23:02:51 -04:00
2016-10-07 15:15:33 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 09:54:00 -05:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-06-30 23:34:49 -04:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-07-31 16:37:25 -04:00
2016-09-22 11:44:06 -04:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-07-28 12:59:05 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-07 18:46:26 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-09-27 21:06:21 -04:00
2016-10-10 20:16:43 -07:00
2016-10-14 20:00:34 -04:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-08-15 17:43:31 +02:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-07 21:48:36 -04:00
2016-09-27 12:24:29 +02:00
2016-10-10 20:16:43 -07:00
2016-09-27 21:06:21 -04:00
2016-10-11 10:49:44 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-09-27 21:45:46 -04:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-07-25 16:51:49 +10:00
2016-09-14 21:28:10 +02:00
2016-08-02 19:35:15 -04:00
2016-07-28 13:29:12 +10:00
2016-09-27 21:06:22 -04:00
2016-10-05 14:35:13 -06:00
2016-09-27 18:47:38 -04:00
2016-08-23 22:58:51 -07:00
2016-09-27 21:20:53 -04:00
2016-10-07 18:46:28 -07:00
2016-08-07 10:01:14 -04:00
2016-10-03 20:38:55 -04:00
2016-08-04 18:04:44 -04:00
2016-09-27 18:47:38 -04:00
2016-08-09 19:58:06 -06:00
2016-10-10 20:16:43 -07:00
2016-10-10 13:04:49 -07:00
2016-09-15 13:29:52 -07:00
2016-10-03 09:53:59 +11:00
2016-10-07 18:46:29 -07:00
2016-08-12 16:47:05 +01:00
2016-10-10 20:16:43 -07:00
2016-10-10 20:16:43 -07:00
2016-08-31 11:44:36 -04:00
2016-09-30 12:46:48 -05:00
2016-08-07 14:41:02 -06:00
2016-10-10 20:16:43 -07:00
2016-10-10 13:04:49 -07:00
2016-10-10 20:16:43 -07:00
2016-09-16 12:44:21 +02:00
2016-10-10 20:16:43 -07:00
2016-09-30 12:46:48 -05:00
2016-09-30 12:46:48 -05:00
2016-10-10 20:16:43 -07:00
2016-10-14 20:00:34 -04:00
2016-10-07 18:46:30 -07:00
2016-10-10 13:36:06 -04:00
2016-10-14 20:00:34 -04:00
2016-07-26 16:19:19 -07:00
2016-10-08 11:06:08 -04:00
2016-10-07 21:48:36 -04:00