const struct cred *cur_creds;
        const struct cred *saved_creds;
        struct files_struct *restore_files;
+       struct nsproxy *restore_nsproxy;
        struct fs_struct *restore_fs;
 };
 
 
                task_lock(current);
                current->files = worker->restore_files;
+               current->nsproxy = worker->restore_nsproxy;
                task_unlock(current);
        }
 
 
        worker->flags |= (IO_WORKER_F_UP | IO_WORKER_F_RUNNING);
        worker->restore_files = current->files;
+       worker->restore_nsproxy = current->nsproxy;
        worker->restore_fs = current->fs;
        io_wqe_inc_running(wqe, worker);
 }
        if (work->files && current->files != work->files) {
                task_lock(current);
                current->files = work->files;
+               current->nsproxy = work->nsproxy;
                task_unlock(current);
        }
        if (work->fs && current->fs != work->fs)
 
        struct files_struct *files;
        struct mm_struct *mm;
        const struct cred *creds;
+       struct nsproxy *nsproxy;
        struct fs_struct *fs;
        unsigned long fsize;
        unsigned flags;
 
        spin_unlock_irqrestore(&ctx->inflight_lock, flags);
        req->flags &= ~REQ_F_INFLIGHT;
        put_files_struct(req->work.files);
+       put_nsproxy(req->work.nsproxy);
        req->work.files = NULL;
 }
 
                return 0;
 
        req->work.files = get_files_struct(current);
+       get_nsproxy(current->nsproxy);
+       req->work.nsproxy = current->nsproxy;
        req->flags |= REQ_F_INFLIGHT;
 
        spin_lock_irq(&ctx->inflight_lock);