diff options
Diffstat (limited to 'kernel/exit.c')
| -rw-r--r-- | kernel/exit.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index 03e64fe4a14a..122fadb972fc 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -425,7 +425,7 @@ static void close_files(struct files_struct * files) | |||
| 425 | for (;;) { | 425 | for (;;) { |
| 426 | unsigned long set; | 426 | unsigned long set; |
| 427 | i = j * __NFDBITS; | 427 | i = j * __NFDBITS; |
| 428 | if (i >= fdt->max_fdset || i >= fdt->max_fds) | 428 | if (i >= fdt->max_fds) |
| 429 | break; | 429 | break; |
| 430 | set = fdt->open_fds->fds_bits[j++]; | 430 | set = fdt->open_fds->fds_bits[j++]; |
| 431 | while (set) { | 431 | while (set) { |
| @@ -466,11 +466,9 @@ void fastcall put_files_struct(struct files_struct *files) | |||
| 466 | * you can free files immediately. | 466 | * you can free files immediately. |
| 467 | */ | 467 | */ |
| 468 | fdt = files_fdtable(files); | 468 | fdt = files_fdtable(files); |
| 469 | if (fdt == &files->fdtab) | 469 | if (fdt != &files->fdtab) |
| 470 | fdt->free_files = files; | ||
| 471 | else | ||
| 472 | kmem_cache_free(files_cachep, files); | 470 | kmem_cache_free(files_cachep, files); |
| 473 | free_fdtable(fdt); | 471 | call_rcu(&fdt->rcu, free_fdtable_rcu); |
| 474 | } | 472 | } |
| 475 | } | 473 | } |
| 476 | 474 | ||
