]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/proc/generic.c
jbd2: fix use after free in jbd2_log_do_checkpoint()
[linux.git] / fs / proc / generic.c
index bb1c1625b158d03f5c8685f55e370267e1cc76fb..8ae109429a883939ed0241c1e122db7ba857ac1a 100644 (file)
@@ -286,9 +286,9 @@ int proc_readdir_de(struct file *file, struct dir_context *ctx,
        if (!dir_emit_dots(file, ctx))
                return 0;
 
+       i = ctx->pos - 2;
        read_lock(&proc_subdir_lock);
        de = pde_subdir_first(de);
-       i = ctx->pos - 2;
        for (;;) {
                if (!de) {
                        read_unlock(&proc_subdir_lock);
@@ -309,8 +309,8 @@ int proc_readdir_de(struct file *file, struct dir_context *ctx,
                        pde_put(de);
                        return 0;
                }
-               read_lock(&proc_subdir_lock);
                ctx->pos++;
+               read_lock(&proc_subdir_lock);
                next = pde_subdir_next(de);
                pde_put(de);
                de = next;