projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4fdb793
)
fix unpaired rcu lock in prepend_path()
author
Li Zhong
<zhong@linux.vnet.ibm.com>
Wed, 13 Nov 2013 07:21:51 +0000
(15:21 +0800)
committer
Al Viro
<viro@zeniv.linux.org.uk>
Wed, 13 Nov 2013 12:43:10 +0000
(07:43 -0500)
Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c
patch
|
blob
|
history
diff --git
a/fs/dcache.c
b/fs/dcache.c
index 1f24cd684c512e65e6b0e381e5af0ab8e810919d..eacc853a2e3a64a3081a5cc0866d1e35a90979a7 100644
(file)
--- a/
fs/dcache.c
+++ b/
fs/dcache.c
@@
-2924,6
+2924,7
@@
static int prepend_path(const struct path *path,
restart_mnt:
read_seqbegin_or_lock(&mount_lock, &m_seq);
seq = 0;
+ rcu_read_lock();
restart:
bptr = *buffer;
blen = *buflen;
@@
-2971,6
+2972,9
@@
restart:
goto restart;
}
done_seqretry(&rename_lock, seq);
+
+ if (!(m_seq & 1))
+ rcu_read_unlock();
if (need_seqretry(&mount_lock, m_seq)) {
m_seq = 1;
goto restart_mnt;