Hi all, On Thu, 12 Dec 2019 13:45:16 +1100 Stephen Rothwell wrote: > > After merging the rcu tree, today's linux-next build (x86_64 allmodconfig) > failed like this: > > drivers/misc/watch_queue.c: In function 'watch_queue_set_filter': > drivers/misc/watch_queue.c:526:2: error: implicit declaration of function 'rcu_swap_protected' [-Werror=implicit-function-declaration] > 526 | rcu_swap_protected(wqueue->filter, wfilter, > | ^~~~~~~~~~~~~~~~~~ > > Caused by commit > > af8c9224182e ("rcu: Remove rcu_swap_protected()") > > interacting with commit > > fe78d401ca6b ("General notification queue with user mmap()'able ring buffer") > > from the keys tree. > > I have added the following merge fix patch for today: > > From: Stephen Rothwell > Date: Thu, 12 Dec 2019 13:37:52 +1100 > Subject: [PATCH] rcu: fix up for "Remove rcu_swap_protected()" > > Signed-off-by: Stephen Rothwell > --- > drivers/misc/watch_queue.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/misc/watch_queue.c b/drivers/misc/watch_queue.c > index b3fc59b4ef6c..a4a77ec977ac 100644 > --- a/drivers/misc/watch_queue.c > +++ b/drivers/misc/watch_queue.c > @@ -523,8 +523,8 @@ static long watch_queue_set_filter(struct inode *inode, > kfree(tf); > set: > inode_lock(inode); > - rcu_swap_protected(wqueue->filter, wfilter, > - lockdep_is_held(&inode->i_rwsem)); > + wfilter = rcu_replace_pointer(wqueue->filter, wfilter, > + lockdep_is_held(&inode->i_rwsem)); > inode_unlock(inode); > if (wfilter) > kfree_rcu(wfilter, rcu); This has bee replaced with this patch: From: Stephen Rothwell Date: Thu, 12 Dec 2019 13:37:52 +1100 Subject: [PATCH] rcu: fix up for "Remove rcu_swap_protected()" Signed-off-by: Stephen Rothwell --- kernel/watch_queue.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/watch_queue.c b/kernel/watch_queue.c index d48f422f391a..f195cbbbb3d3 100644 --- a/kernel/watch_queue.c +++ b/kernel/watch_queue.c @@ -354,8 +354,8 @@ long watch_queue_set_filter(struct pipe_inode_info *pipe, kfree(tf); set: pipe_lock(pipe); - rcu_swap_protected(wqueue->filter, wfilter, - lockdep_is_held(&pipe->mutex)); + wfilter = rcu_replace_pointer(wqueue->filter, wfilter, + lockdep_is_held(&pipe->mutex)); pipe_unlock(pipe); if (wfilter) kfree_rcu(wfilter, rcu); -- Cheers, Stephen Rothwell