btrfs-progs: fix kernel version parsing on some versions past 3.0

The code fails if the third section is missing (like "4.18") or is followed
by anything but "." or "-".  This happens for example if we're not exactly
at a tag and CONFIG_LOCALVERSION_AUTO=n (which results in "4.18.5+").

Signed-off-by: Adam Borowski <kilobyte@angband.pl>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Adam Borowski 2019-02-25 19:16:43 +01:00 committed by David Sterba
parent 33b4acc7df
commit 3da12f3d5f
1 changed files with 2 additions and 4 deletions

View File

@ -216,11 +216,9 @@ u32 get_running_kernel_version(void)
return (u32)-1;
version |= atoi(tmp) << 8;
tmp = strtok_r(NULL, ".", &saveptr);
if (tmp) {
if (!string_is_numerical(tmp))
return (u32)-1;
/* Relaxed format accepts eg. 1.2.3+ */
if (tmp && string_is_numerical(tmp))
version |= atoi(tmp);
}
return version;
}