rcutorture: Fix module unwind when bad torture_type specified
The rcutorture module has a list of torture types, and specifying a type not on this list is supposed to cleanly fail the module load. Unfortunately, the "fail" happens without the "cleanly". This commit therefore adds the needed clean-up after an incorrect torture_type. Reported-by: David Miller <davem@davemloft.net> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: David Miller <davem@davemloft.net> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
19a5ecde08
commit
889d487a26
@ -1742,15 +1742,15 @@ rcu_torture_init(void)
|
|||||||
for (i = 0; i < ARRAY_SIZE(torture_ops); i++)
|
for (i = 0; i < ARRAY_SIZE(torture_ops); i++)
|
||||||
pr_alert(" %s", torture_ops[i]->name);
|
pr_alert(" %s", torture_ops[i]->name);
|
||||||
pr_alert("\n");
|
pr_alert("\n");
|
||||||
torture_init_end();
|
firsterr = -EINVAL;
|
||||||
return -EINVAL;
|
goto unwind;
|
||||||
}
|
}
|
||||||
if (cur_ops->fqs == NULL && fqs_duration != 0) {
|
if (cur_ops->fqs == NULL && fqs_duration != 0) {
|
||||||
pr_alert("rcu-torture: ->fqs NULL and non-zero fqs_duration, fqs disabled.\n");
|
pr_alert("rcu-torture: ->fqs NULL and non-zero fqs_duration, fqs disabled.\n");
|
||||||
fqs_duration = 0;
|
fqs_duration = 0;
|
||||||
}
|
}
|
||||||
if (cur_ops->init)
|
if (cur_ops->init)
|
||||||
cur_ops->init(); /* no "goto unwind" prior to this point!!! */
|
cur_ops->init();
|
||||||
|
|
||||||
if (nreaders >= 0) {
|
if (nreaders >= 0) {
|
||||||
nrealreaders = nreaders;
|
nrealreaders = nreaders;
|
||||||
|
Loading…
Reference in New Issue
Block a user