The commit is pushed to "branch-rh8-4.18.0-240.1.1.vz8.5.x-ovz" and will appear 
at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-240.1.1.vz8.5.31
------>
commit b11dc0d1fc673f9e1112b67274b27f5f5b92f75b
Author: Vasily Averin <[email protected]>
Date:   Mon May 24 12:08:51 2021 +0300

    fs: Fix race with old fdt parallel reuse
    
    We own files->resize_in_progress in this moment,
    but it's only seen by guys, who expands the fdt.
    If someone wants to use fd inside old fdt max number,
    he just doesn't look at this.
    
    So, let's check old maximum fd after lock is
    acquired to see such the parallel users.
    
    https://jira.sw.ru/browse/PSBM-82984
    
    Signed-off-by: Kirill Tkhai <[email protected]>
    Acked-by: Cyrill Gorcunov <[email protected]>
    
    (cherry picked from vz7 commit 01eb18f336ef ("fs: Fix race with old fdt
    parallel reuse"))
    
    Fixes: c4a4fada18a "ve/fs/files: Shrink big fdtable on close in
    is_pseudosuper mode"
    
    Signed-off-by: Vasily Averin <[email protected]>
---
 fs/file.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/file.c b/fs/file.c
index 0ed1c4cd6eae..b7618d3d4458 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -189,8 +189,7 @@ static int expand_fdtable(struct files_struct *files, 
unsigned int nr, bool shri
        if (unlikely(shrink)) {
                int i;
                i = find_last_bit(cur_fdt->open_fds, cur_fdt->max_fds);
-               i = fdtable_align(i);
-               if (i == cur_fdt->max_fds) {
+               if (i >= new_fdt->max_fds) {
                        __free_fdtable(new_fdt);
                        return 1;
                }
_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to