Ian Kent cc58c1
autofs-5.0.6 - fix kernel verion check of version components
Ian Kent cc58c1
Ian Kent cc58c1
From: Ian Kent <ikent@redhat.com>
Ian Kent cc58c1
Ian Kent cc58c1
Oops, not following the ball.
Ian Kent cc58c1
Ian Kent cc58c1
The kernel may have (or will have at times) a two digit version number.
Ian Kent cc58c1
Fix the version check function to allow for this.
Ian Kent cc58c1
---
Ian Kent cc58c1
Ian Kent cc58c1
 CHANGELOG        |    1 +
Ian Kent cc58c1
 include/mounts.h |   15 +--------------
Ian Kent cc58c1
 lib/mounts.c     |   29 +++++++++++++++++++++++++++++
Ian Kent cc58c1
 3 files changed, 31 insertions(+), 14 deletions(-)
Ian Kent cc58c1
Ian Kent cc58c1
Ian Kent cc58c1
--- autofs-5.0.6.orig/CHANGELOG
Ian Kent cc58c1
+++ autofs-5.0.6/CHANGELOG
Ian Kent cc58c1
@@ -46,6 +46,7 @@
Ian Kent cc58c1
 - duplicate parent options for included maps.
Ian Kent cc58c1
 - update ->timeout() function to not return timeout.
Ian Kent cc58c1
 - move timeout to map_source (allow per direct map timeout).
Ian Kent cc58c1
+- fix kernel verion check of version components.
Ian Kent cc58c1
 
Ian Kent cc58c1
 28/06/2011 autofs-5.0.6
Ian Kent cc58c1
 -----------------------
Ian Kent cc58c1
--- autofs-5.0.6.orig/include/mounts.h
Ian Kent cc58c1
+++ autofs-5.0.6/include/mounts.h
Ian Kent cc58c1
@@ -75,26 +75,13 @@ struct mnt_list {
Ian Kent cc58c1
 	struct list_head ordered;
Ian Kent cc58c1
 };
Ian Kent cc58c1
 
Ian Kent cc58c1
-static inline unsigned int linux_version_code(void)
Ian Kent cc58c1
-{
Ian Kent cc58c1
-	struct utsname my_utsname;
Ian Kent cc58c1
-	unsigned int p, q, r;
Ian Kent cc58c1
-	char *save;
Ian Kent cc58c1
-
Ian Kent cc58c1
-	if (uname(&my_utsname))
Ian Kent cc58c1
-		return 0;
Ian Kent cc58c1
-
Ian Kent cc58c1
-	p = (unsigned int) atoi(strtok_r(my_utsname.release, ".", &save));
Ian Kent cc58c1
-	q = (unsigned int) atoi(strtok_r(NULL, ".", &save));
Ian Kent cc58c1
-	r = (unsigned int) atoi(strtok_r(NULL, ".", &save));
Ian Kent cc58c1
-	return KERNEL_VERSION(p, q, r);
Ian Kent cc58c1
-}
Ian Kent cc58c1
 
Ian Kent cc58c1
 struct nfs_mount_vers {
Ian Kent cc58c1
 	unsigned int major;
Ian Kent cc58c1
 	unsigned int minor;
Ian Kent cc58c1
 	unsigned int fix;
Ian Kent cc58c1
 };
Ian Kent cc58c1
+unsigned int linux_version_code(void);
Ian Kent cc58c1
 int check_nfs_mount_version(struct nfs_mount_vers *, struct nfs_mount_vers *);
Ian Kent cc58c1
 extern unsigned int nfs_mount_uses_string_options;
Ian Kent cc58c1
 
Ian Kent cc58c1
--- autofs-5.0.6.orig/lib/mounts.c
Ian Kent cc58c1
+++ autofs-5.0.6/lib/mounts.c
Ian Kent cc58c1
@@ -46,6 +46,35 @@ static const char mnt_name_template[]
Ian Kent cc58c1
 static struct kernel_mod_version kver = {0, 0};
Ian Kent cc58c1
 static const char kver_options_template[]  = "fd=%d,pgrp=%u,minproto=3,maxproto=5";
Ian Kent cc58c1
 
Ian Kent cc58c1
+unsigned int linux_version_code(void)
Ian Kent cc58c1
+{
Ian Kent cc58c1
+	struct utsname my_utsname;
Ian Kent cc58c1
+	unsigned int p, q, r;
Ian Kent cc58c1
+	char *tmp, *save;
Ian Kent cc58c1
+
Ian Kent cc58c1
+	if (uname(&my_utsname))
Ian Kent cc58c1
+		return 0;
Ian Kent cc58c1
+
Ian Kent cc58c1
+	p = q = r = 0;
Ian Kent cc58c1
+
Ian Kent cc58c1
+	tmp = strtok_r(my_utsname.release, ".", &save);
Ian Kent cc58c1
+	if (!tmp)
Ian Kent cc58c1
+		return 0;
Ian Kent cc58c1
+	p = (unsigned int ) atoi(tmp);
Ian Kent cc58c1
+
Ian Kent cc58c1
+	tmp = strtok_r(NULL, ".", &save);
Ian Kent cc58c1
+	if (!tmp)
Ian Kent cc58c1
+		return KERNEL_VERSION(p, 0, 0);
Ian Kent cc58c1
+	q = (unsigned int) atoi(tmp);
Ian Kent cc58c1
+
Ian Kent cc58c1
+	tmp = strtok_r(NULL, ".", &save);
Ian Kent cc58c1
+	if (!tmp)
Ian Kent cc58c1
+		return KERNEL_VERSION(p, q, 0);
Ian Kent cc58c1
+	r = (unsigned int) atoi(tmp);
Ian Kent cc58c1
+
Ian Kent cc58c1
+	return KERNEL_VERSION(p, q, r);
Ian Kent cc58c1
+}
Ian Kent cc58c1
+
Ian Kent cc58c1
 unsigned int query_kproto_ver(void)
Ian Kent cc58c1
 {
Ian Kent cc58c1
 	struct ioctl_ops *ops = get_ioctl_ops();