+ if (retval == -ELOOP && bprm->recursion_depth == 0) { /* cur, previous */
+ pr_err("Too much recursion with binfmts (0:%s, -1:%s) in file %s, skipping (base %s).\n",
+ bprm->previous_binfmts[0]->name,
+ bprm->previous_binfmts[1]->name,
+ bprm->filename,
+ fmt->name);
+
+ /* Put argv back in its place */
+ bprm->p = bprm->p_no_argv;
+
+ bprm->argc = count(*(bprm->argv_orig), MAX_ARG_STRINGS);
+ retval = copy_strings(bprm->argc, *(bprm->argv_orig), bprm);
+ if (retval < 0)
+ return retval;
+
+ retval = -ENOEXEC;
+ continue;
+ }
}
read_unlock(&binfmt_lock);