If given buffer size is zero, we forget to rcu_read_unlock()
on error path.

Cc: [email protected]
Cc: Al Viro <[email protected]>
Signed-off-by: Denys Vlasenko <[email protected]>
---
 fs/dcache.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/dcache.c b/fs/dcache.c
index cb4a106..24a01fc 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -3127,8 +3127,11 @@ restart:
        end = buf + buflen;
        len = buflen;
        prepend(&end, &len, "\0", 1);
-       if (buflen < 1)
+       if (buflen < 1) {
+               if (!(seq & 1))
+                       rcu_read_unlock();
                goto Elong;
+       }
        /* Get '/' right */
        retval = end-1;
        *retval = '/';
-- 
1.8.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to