|
@@ -711,8 +711,10 @@ static struct files_struct *dup_fd(struct files_struct *oldf, int *errorp)
|
|
|
old_fds = old_fdt->fd;
|
|
|
new_fds = new_fdt->fd;
|
|
|
|
|
|
- memcpy(new_fdt->open_fds->fds_bits, old_fdt->open_fds->fds_bits, open_files/8);
|
|
|
- memcpy(new_fdt->close_on_exec->fds_bits, old_fdt->close_on_exec->fds_bits, open_files/8);
|
|
|
+ memcpy(new_fdt->open_fds->fds_bits,
|
|
|
+ old_fdt->open_fds->fds_bits, open_files/8);
|
|
|
+ memcpy(new_fdt->close_on_exec->fds_bits,
|
|
|
+ old_fdt->close_on_exec->fds_bits, open_files/8);
|
|
|
|
|
|
for (i = open_files; i != 0; i--) {
|
|
|
struct file *f = *old_fds++;
|
|
@@ -745,14 +747,11 @@ static struct files_struct *dup_fd(struct files_struct *oldf, int *errorp)
|
|
|
memset(&new_fdt->close_on_exec->fds_bits[start], 0, left);
|
|
|
}
|
|
|
|
|
|
-out:
|
|
|
return newf;
|
|
|
|
|
|
out_release:
|
|
|
- free_fdset (new_fdt->close_on_exec, new_fdt->max_fdset);
|
|
|
- free_fdset (new_fdt->open_fds, new_fdt->max_fdset);
|
|
|
- free_fd_array(new_fdt->fd, new_fdt->max_fds);
|
|
|
kmem_cache_free(files_cachep, newf);
|
|
|
+out:
|
|
|
return NULL;
|
|
|
}
|
|
|
|