Chengwei Yang
2013-05-07 14:54:16 UTC
This issue introduced by a fix for syscall(-1, ...) is invalid on some
arch. The error thrown by 'make check' likes below.
testsuite/init_module.c: In function 'syscall':
testsuite/init_module.c:317:17: error: '__NR_finit_module' undeclared
(first use in this function)
testsuite/init_module.c:317:17: note: each undeclared identifier is
reported only once for each function it appears in
make[2]: *** [testsuite/init_module.lo] Error 1
make[1]: *** [check-am] Error 2
make: *** [check-recursive] Error 1
---
libkmod/missing.h | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/libkmod/missing.h b/libkmod/missing.h
index b31af84..52dbcc7 100644
--- a/libkmod/missing.h
+++ b/libkmod/missing.h
@@ -12,6 +12,10 @@
# define MODULE_INIT_IGNORE_MODVERSIONS 1
#endif
+#ifndef __NR_finit_module
+# define __NR_finit_module -1
+#endif
+
#ifndef MODULE_INIT_IGNORE_VERMAGIC
# define MODULE_INIT_IGNORE_VERMAGIC 2
#endif
@@ -19,11 +23,11 @@
#ifndef HAVE_FINIT_MODULE
static inline int finit_module(int fd, const char *uargs, int flags)
{
-#ifndef __NR_finit_module
- errno = ENOSYS;
- return -1;
-#else
- return syscall(__NR_finit_module, fd, uargs, flags);
-#endif
+ if (__NR_finit_module == -1) {
+ errno = ENOSYS;
+ return -1;
+ } else {
+ return syscall(__NR_finit_module, fd, uargs, flags);
+ }
}
#endif
arch. The error thrown by 'make check' likes below.
testsuite/init_module.c: In function 'syscall':
testsuite/init_module.c:317:17: error: '__NR_finit_module' undeclared
(first use in this function)
testsuite/init_module.c:317:17: note: each undeclared identifier is
reported only once for each function it appears in
make[2]: *** [testsuite/init_module.lo] Error 1
make[1]: *** [check-am] Error 2
make: *** [check-recursive] Error 1
---
libkmod/missing.h | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/libkmod/missing.h b/libkmod/missing.h
index b31af84..52dbcc7 100644
--- a/libkmod/missing.h
+++ b/libkmod/missing.h
@@ -12,6 +12,10 @@
# define MODULE_INIT_IGNORE_MODVERSIONS 1
#endif
+#ifndef __NR_finit_module
+# define __NR_finit_module -1
+#endif
+
#ifndef MODULE_INIT_IGNORE_VERMAGIC
# define MODULE_INIT_IGNORE_VERMAGIC 2
#endif
@@ -19,11 +23,11 @@
#ifndef HAVE_FINIT_MODULE
static inline int finit_module(int fd, const char *uargs, int flags)
{
-#ifndef __NR_finit_module
- errno = ENOSYS;
- return -1;
-#else
- return syscall(__NR_finit_module, fd, uargs, flags);
-#endif
+ if (__NR_finit_module == -1) {
+ errno = ENOSYS;
+ return -1;
+ } else {
+ return syscall(__NR_finit_module, fd, uargs, flags);
+ }
}
#endif
--
1.7.9.5
1.7.9.5