--- conf/mount/mount_linux.c	2013-09-08 16:57:35.000000000 +0300
+++ conf/mount/mount_linux.c.new	2013-09-11 14:21:19.000000000 +0300
@@ -239,14 +239,21 @@
 int
 linux_version_code(void)
 {
+  char *token;
+  int i = 0;
   struct utsname my_utsname;
   static int release = 0;
 
-  if ( 0 == release && 0 == uname(&my_utsname)) {
-    release = 65536 * atoi(strtok(my_utsname.release, "."))
-      + 256 * atoi(strtok(NULL, "."))
-      + atoi(strtok(NULL, "."));
+  if ( release || uname(&my_utsname))
+    return release;
+
+  for (token = strtok(my_utsname.release, "."); token && (i < 3); token = strtok(NULL, "."))
+  {
+     int shift = 8 * (2 - i);
+     release |= (atoi(token) << shift);
+     i++;
   }
+
   return release;
 }
 
