[LTP] [RFC] [PATCH] tst_kvcmp: Add support for extra kernel versions

Cyril Hrubis chrubis@suse.cz
Thu Apr 27 15:01:52 CEST 2017


Hi!
> +static int compare_kver(const char *cur_kver, char *kver)
> +{
> +        const char *ver, *exver;
> +        const char *distname = tst_kvcmp_distname(cur_kver);
> +        int v1, v2, v3;
> +
> +        ver = strtok(kver, " ");
> +
> +        while ((exver = strtok(NULL, " "))) {
> +                char *exkver = strchr(exver, ':');
> +
> +                if (!exkver) {
> +                        fprintf(stderr, "Invalid extra version '%s'\n", exver);
> +                        exit(2);
> +                }
> +
> +                *(exkver++) = '\0';
> +
> +                if (!distname || strcmp(distname, exver))
> +                        continue;
> +
> +                return tst_kvexcmp(exkver, cur_kver);
> +        }
> 
> If distname != NULL, that means that this is a distro we recognize.
> And if we reached here, after while loop, that means we didn't
> match any distro specified in "kver", correct?

Correct.

> So, is it OK to make conclusion, that there is a problem in kver?

Not at all. Even if we recognize the distro and the distname is non-NULL
we can have any subset of distribution specific kernel versions
(including empty one) in the input string. Hence if the loop does not
mach any extra version against the currently detected distribution we
simply fall back to the generic kernel version that should be at the
start of the string.

Think about the distribution specific versions as of overrides that
apply only if the distribution version is matched, otherwise we use the
generic kernel version to make the decision.

The only thing that should probably be validated here are the
distribution names passed in the kver string. As it is everything that
is not matched is skipped including possible typos. Hence I was speaking
about adding a function that would check if given distribution name is
valid (known to the library code).

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list