Lines Matching defs:fc
60 static int proc_parse_hidepid_param(struct fs_context *fc, struct fs_parameter *param)
62 struct proc_fs_context *ctx = fc->fs_private;
68 return invalf(fc, "proc: unexpected type of hidepid value\n");
72 return invalf(fc, "proc: unknown value of hidepid - %s\n", param->string);
86 return invalf(fc, "proc: unknown value of hidepid - %s\n", param->string);
91 static int proc_parse_subset_param(struct fs_context *fc, char *value)
93 struct proc_fs_context *ctx = fc->fs_private;
105 return invalf(fc, "proc: unsupported subset option - %s\n", value);
115 static int proc_parse_pidns_param(struct fs_context *fc,
119 struct proc_fs_context *ctx = fc->fs_private;
139 errorfc(fc, "could not get file from pidns argument");
144 return invalfc(fc, "pidns argument is not an nsfs file");
147 return invalfc(fc, "pidns argument is not a pidns file");
155 errorfc(fc, "insufficient permissions to set pidns");
159 return invalfc(fc, "cannot set pidns to non-descendant pidns");
163 put_user_ns(fc->user_ns);
164 fc->user_ns = get_user_ns(ctx->pid_ns->user_ns);
169 static int proc_parse_param(struct fs_context *fc, struct fs_parameter *param)
171 struct proc_fs_context *ctx = fc->fs_private;
175 opt = fs_parse(fc, proc_fs_parameters, param, &result);
185 err = proc_parse_hidepid_param(fc, param);
191 err = proc_parse_subset_param(fc, param->string);
205 if (fc->purpose == FS_CONTEXT_FOR_RECONFIGURE) {
206 errorfc(fc, "cannot reconfigure pidns for existing procfs");
209 err = proc_parse_pidns_param(fc, param, &result);
214 errorfc(fc, "pidns mount flag not supported on this system");
227 struct fs_context *fc,
230 struct proc_fs_context *ctx = fc->fs_private;
233 fc->purpose == FS_CONTEXT_FOR_RECONFIGURE &&
235 return invalf(fc, "proc: subset=pid cannot be changed\n");
244 !WARN_ON_ONCE(fc->purpose == FS_CONTEXT_FOR_RECONFIGURE)) {
251 static int proc_fill_super(struct super_block *s, struct fs_context *fc)
253 struct proc_fs_context *ctx = fc->fs_private;
263 fs_info->mounter_cred = get_cred(fc->cred);
264 ret = proc_apply_options(fs_info, fc, current_user_ns());
311 static int proc_reconfigure(struct fs_context *fc)
313 struct super_block *sb = fc->root->d_sb;
318 return proc_apply_options(fs_info, fc, current_user_ns());
321 static int proc_get_tree(struct fs_context *fc)
323 return get_tree_nodev(fc, proc_fill_super);
326 static void proc_fs_context_free(struct fs_context *fc)
328 struct proc_fs_context *ctx = fc->fs_private;
341 static int proc_init_fs_context(struct fs_context *fc)
350 put_user_ns(fc->user_ns);
351 fc->user_ns = get_user_ns(ctx->pid_ns->user_ns);
352 fc->fs_private = ctx;
353 fc->ops = &proc_fs_context_ops;