PERFORCE change 188977 for review
Edward Tomasz Napierala
trasz at FreeBSD.org
Sun Feb 20 17:20:17 UTC 2011
http://p4web.freebsd.org/@@188977?ac=10
Change 188977 by trasz at trasz_victim on 2011/02/20 17:19:36
Properly pass error from rctl_string_to_rule().
Affected files ...
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_rctl.c#34 edit
Differences ...
==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_rctl.c#34 (text+ko) ====
@@ -780,8 +780,8 @@
return (1);
}
-static struct rctl_rule *
-rctl_rule_from_string(char *rulestr)
+static int
+rctl_string_to_rule(char *rulestr, struct rctl_rule **rulep)
{
int error = 0;
char *subjectstr, *subject_idstr, *resourcestr, *actionstr,
@@ -862,7 +862,7 @@
mtx_unlock(&rule->rr_subject.rs_prison->pr_mtx);
break;
default:
- panic("rctl_rule_from_string: unknown subject type %d",
+ panic("rctl_string_to_rule: unknown subject type %d",
rule->rr_subject_type);
}
}
@@ -903,12 +903,12 @@
}
out:
- if (error != 0) {
+ if (error == 0)
+ *rulep = rule;
+ else
rctl_rule_release(rule);
- return (NULL);
- }
- return (rule);
+ return (error);
}
/*
@@ -1230,12 +1230,12 @@
sx_slock(&allproc_lock);
sx_slock(&allprison_lock);
- filter = rctl_rule_from_string(inputstr);
+ error = rctl_string_to_rule(inputstr, &filter);
free(inputstr, M_RCTL);
- if (filter == NULL) {
+ if (error != 0) {
sx_sunlock(&allprison_lock);
sx_sunlock(&allproc_lock);
- return (EINVAL);
+ return (error);
}
switch (filter->rr_subject_type) {
@@ -1328,12 +1328,12 @@
sx_slock(&allproc_lock);
sx_slock(&allprison_lock);
- filter = rctl_rule_from_string(inputstr);
+ error = rctl_string_to_rule(inputstr, &filter);
free(inputstr, M_RCTL);
- if (filter == NULL) {
+ if (error != 0) {
sx_sunlock(&allprison_lock);
sx_sunlock(&allproc_lock);
- return (EINVAL);
+ return (error);
}
again:
@@ -1404,12 +1404,12 @@
sx_slock(&allproc_lock);
sx_slock(&allprison_lock);
- filter = rctl_rule_from_string(inputstr);
+ error = rctl_string_to_rule(inputstr, &filter);
free(inputstr, M_RCTL);
- if (filter == NULL) {
+ if (error != 0) {
sx_sunlock(&allprison_lock);
sx_sunlock(&allproc_lock);
- return (EINVAL);
+ return (error);
}
if (filter->rr_subject_type == RCTL_SUBJECT_TYPE_UNDEFINED) {
@@ -1480,12 +1480,12 @@
sx_slock(&allproc_lock);
sx_slock(&allprison_lock);
- rule = rctl_rule_from_string(inputstr);
+ error = rctl_string_to_rule(inputstr, &rule);
free(inputstr, M_RCTL);
- if (rule == NULL) {
+ if (error != 0) {
sx_sunlock(&allprison_lock);
sx_sunlock(&allproc_lock);
- return (EINVAL);
+ return (error);
}
/*
* The 'per' part of a rule is optional.
@@ -1525,12 +1525,12 @@
sx_slock(&allproc_lock);
sx_slock(&allprison_lock);
- filter = rctl_rule_from_string(inputstr);
+ error = rctl_string_to_rule(inputstr, &filter);
free(inputstr, M_RCTL);
- if (filter == NULL) {
+ if (error != 0) {
sx_sunlock(&allprison_lock);
sx_sunlock(&allproc_lock);
- return (EINVAL);
+ return (error);
}
error = rctl_rule_remove(filter);
More information about the p4-projects
mailing list