* [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure [not found] ` <ext4-masq@mdm.bga.com> @ 2011-04-14 15:41 ` Milton Miller 2011-04-14 15:52 ` Linus Torvalds 0 siblings, 1 reply; 4+ messages in thread From: Milton Miller @ 2011-04-14 15:41 UTC (permalink / raw) To: Nick Piggin, Alexander Viro Cc: Linus Torvalds, Dipankar Sarma, Paul E. McKenney, linux-fsdevel, linux-kernel While checking unregister_filesystem for saftey vs extra calls for "ext4: register ext2 and ext3 alias after ext4" I realized that the synchronize_rcu() was called on the error path but not on the success path. Should we call it in both? Cc: stable (2.6.38) Signed-off-by: Milton Miller <miltonm@bga.com> Index: work.git/fs/filesystems.c =================================================================== --- work.git.orig/fs/filesystems.c 2011-04-14 10:06:44.360068116 -0500 +++ work.git/fs/filesystems.c 2011-04-14 10:08:41.880061794 -0500 @@ -110,14 +110,13 @@ int unregister_filesystem(struct file_sy *tmp = fs->next; fs->next = NULL; write_unlock(&file_systems_lock); + synchronize_rcu(); return 0; } tmp = &(*tmp)->next; } write_unlock(&file_systems_lock); - synchronize_rcu(); - return -EINVAL; } ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure 2011-04-14 15:41 ` [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure Milton Miller @ 2011-04-14 15:52 ` Linus Torvalds 2011-04-14 16:59 ` Marco Stornelli 2011-04-15 0:49 ` Mark Lord 0 siblings, 2 replies; 4+ messages in thread From: Linus Torvalds @ 2011-04-14 15:52 UTC (permalink / raw) To: Milton Miller Cc: Nick Piggin, Alexander Viro, Dipankar Sarma, Paul E. McKenney, linux-fsdevel, linux-kernel On Thu, Apr 14, 2011 at 8:41 AM, Milton Miller <miltonm@bga.com> wrote: > > While checking unregister_filesystem for saftey vs extra calls for > "ext4: register ext2 and ext3 alias after ext4" I realized that > the synchronize_rcu() was called on the error path but not on > the success path. Good catch. I think this is the bug that then caused us to do commit d863b50ab013 ("vfs: call rcu_barrier after ->kill_sb()") That said, that commit says that "synchronize_rcu()" isn't enough, and uses rcu_barrier(). Which _should_ mean that there are no actual users that care about RCU events by the time you actually hit "unregister_filesystem()". So I think your patch is correct, but won't actually matter. But maybe I'm missing something. > Should we call it in both? No, I think the success path is the one that would matter. Comments? Linus ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure 2011-04-14 15:52 ` Linus Torvalds @ 2011-04-14 16:59 ` Marco Stornelli 2011-04-15 0:49 ` Mark Lord 1 sibling, 0 replies; 4+ messages in thread From: Marco Stornelli @ 2011-04-14 16:59 UTC (permalink / raw) To: Linus Torvalds Cc: Milton Miller, Nick Piggin, Alexander Viro, Dipankar Sarma, Paul E. McKenney, linux-fsdevel, linux-kernel Il 14/04/2011 17:52, Linus Torvalds ha scritto: > On Thu, Apr 14, 2011 at 8:41 AM, Milton Miller<miltonm@bga.com> wrote: >> >> While checking unregister_filesystem for saftey vs extra calls for >> "ext4: register ext2 and ext3 alias after ext4" I realized that >> the synchronize_rcu() was called on the error path but not on >> the success path. > > Good catch. > > I think this is the bug that then caused us to do commit d863b50ab013 > ("vfs: call rcu_barrier after ->kill_sb()") > > That said, that commit says that "synchronize_rcu()" isn't enough, and > uses rcu_barrier(). > > Which _should_ mean that there are no actual users that care about RCU > events by the time you actually hit "unregister_filesystem()". > > So I think your patch is correct, but won't actually matter. But maybe > I'm missing something. > >> Should we call it in both? > > No, I think the success path is the one that would matter. > > Comments? > If I well remember the rcu_barrier was needed for the fs module unloading problem. In that case synchronize_rcu() wasn't enough. That said, I agree with you, it won't have any impact. Marco ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure 2011-04-14 15:52 ` Linus Torvalds 2011-04-14 16:59 ` Marco Stornelli @ 2011-04-15 0:49 ` Mark Lord 1 sibling, 0 replies; 4+ messages in thread From: Mark Lord @ 2011-04-15 0:49 UTC (permalink / raw) To: Linus Torvalds Cc: Milton Miller, Nick Piggin, Alexander Viro, Dipankar Sarma, Paul E. McKenney, linux-fsdevel, linux-kernel On 11-04-14 11:52 AM, Linus Torvalds wrote: > On Thu, Apr 14, 2011 at 8:41 AM, Milton Miller <miltonm@bga.com> wrote: >> >> While checking unregister_filesystem for saftey vs extra calls for >> "ext4: register ext2 and ext3 alias after ext4" I realized that >> the synchronize_rcu() was called on the error path but not on >> the success path. > > Good catch. > > I think this is the bug that then caused us to do commit d863b50ab013 > ("vfs: call rcu_barrier after ->kill_sb()") > > That said, that commit says that "synchronize_rcu()" isn't enough, and > uses rcu_barrier(). > > Which _should_ mean that there are no actual users that care about RCU > events by the time you actually hit "unregister_filesystem()". Is that true of older kernels? (eg. 2.6.38 has the same bug) IOW, is this a -stable candidate? ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-04-15 0:49 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <4DA48AF4.5080803@teksavvy.com>
[not found] ` <20110413004938.GE3682@thunk.org>
[not found] ` <4DA5ADA6.5060301@teksavvy.com>
[not found] ` <5A35771F-49B6-491E-B012-DBE68907E382@mit.edu>
[not found] ` <ext4-masq@mdm.bga.com>
2011-04-14 15:41 ` [PATCH] fs: synchronize_rcu when unregister_filesystem success not failure Milton Miller
2011-04-14 15:52 ` Linus Torvalds
2011-04-14 16:59 ` Marco Stornelli
2011-04-15 0:49 ` Mark Lord
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).