I think having all the allocations in one place, plus the
reduction in the number of lines speaks for itself.  In
any case, this is last in the series and can be dropped if
you don't like it.

---

 linux-2.6.git-dave/checkpoint/ckpt_file.c |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff -puN checkpoint/ckpt_file.c~fix-cr_scan_fds-realloc checkpoint/ckpt_file.c
--- linux-2.6.git/checkpoint/ckpt_file.c~fix-cr_scan_fds-realloc        
2008-12-02 10:26:53.000000000 -0800
+++ linux-2.6.git-dave/checkpoint/ckpt_file.c   2008-12-02 10:26:53.000000000 
-0800
@@ -38,6 +38,7 @@ int cr_scan_fds(struct files_struct *fil
        int i, n = 0;
        int tot = CR_DEFAULT_FDTABLE;
 
+retry:
        fds = kmalloc(tot * sizeof(*fds), GFP_KERNEL);
        if (!fds)
                return -ENOMEM;
@@ -55,18 +56,12 @@ int cr_scan_fds(struct files_struct *fil
                if (!fcheck_files(files, i))
                        continue;
                if (n == tot) {
-                       /*
-                        * fcheck_files() is safe with drop/re-acquire
-                        * of the lock, because it tests:  fd < max_fds
-                        */
+                       /* we undershot the size of fds[] */
                        spin_unlock(&files->file_lock);
                        rcu_read_unlock();
                        tot *= 2;       /* won't overflow: kmalloc will fail */
-                       fds = krealloc(fds, tot * sizeof(*fds), GFP_KERNEL);
-                       if (!fds)
-                               return -ENOMEM;
-                       rcu_read_lock();
-                       spin_lock(&files->file_lock);
+                       kfree(fds);
+                       goto retry;
                }
                fds[n++] = i;
        }
_
_______________________________________________
Containers mailing list
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
Devel@openvz.org
https://openvz.org/mailman/listinfo/devel

Reply via email to