Discussion:
[PATCH] Fix 'make check': undeclared __NR_finit_module
Chengwei Yang
2013-05-07 14:54:16 UTC
Permalink
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
--
1.7.9.5
Lucas De Marchi
2013-05-08 02:57:28 UTC
Permalink
Post by Chengwei Yang
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: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);
+ }
humn... my bad not applying it to testsuite.

But I would expect the same fix being applied to testsuite instead of
changing the check to runtime.

Lucas De Marchi
Yang Chengwei
2013-05-08 07:47:44 UTC
Permalink
Post by Lucas De Marchi
Post by Chengwei Yang
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: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);
+ }
humn... my bad not applying it to testsuite.
But I would expect the same fix being applied to testsuite instead of
changing the check to runtime.
Agreed, I'll upload v2 later.

--
Thanks,
Chengwei
Post by Lucas De Marchi
Lucas De Marchi
Loading...