All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] proc: don't do dummy rcu_read_lock/rcu_read_unlock on error path
@ 2012-04-07 19:01 Alexey Dobriyan
  0 siblings, 0 replies; only message in thread
From: Alexey Dobriyan @ 2012-04-07 19:01 UTC (permalink / raw)
  To: akpm; +Cc: linux-kernel

rcu_read_lock()/rcu_read_unlock() is nop for TINY_RCU,
but is not a nop for, say, PREEMPT_RCU.

proc_fill_cache() is called without RCU lock,
there is no need to lock/unlock on error path,
simply jump out of the loop.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

 fs/proc/base.c |   13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1943,21 +1943,22 @@ static int proc_readfd_common(struct file * filp, void * dirent,
 			     fd++, filp->f_pos++) {
 				char name[PROC_NUMBUF];
 				int len;
+				int rv;
 
 				if (!fcheck_files(files, fd))
 					continue;
 				rcu_read_unlock();
 
 				len = snprintf(name, sizeof(name), "%d", fd);
-				if (proc_fill_cache(filp, dirent, filldir,
-						    name, len, instantiate,
-						    p, &fd) < 0) {
-					rcu_read_lock();
-					break;
-				}
+				rv = proc_fill_cache(filp, dirent, filldir,
+						     name, len, instantiate, p,
+						     &fd);
+				if (rv < 0)
+					goto out_fd_loop;
 				rcu_read_lock();
 			}
 			rcu_read_unlock();
+out_fd_loop:
 			put_files_struct(files);
 	}
 out:

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2012-04-07 19:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-04-07 19:01 [PATCH 1/2] proc: don't do dummy rcu_read_lock/rcu_read_unlock on error path Alexey Dobriyan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.