diff options
Diffstat (limited to 'package/kmod/kmod-0002-add-backup-implementation-of-be32toh.patch')
-rw-r--r-- | package/kmod/kmod-0002-add-backup-implementation-of-be32toh.patch | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/package/kmod/kmod-0002-add-backup-implementation-of-be32toh.patch b/package/kmod/kmod-0002-add-backup-implementation-of-be32toh.patch new file mode 100644 index 0000000000..869c569507 --- /dev/null +++ b/package/kmod/kmod-0002-add-backup-implementation-of-be32toh.patch @@ -0,0 +1,72 @@ +From bda1ed2aefee23b0eedbcd9f82e73c2547908438 Mon Sep 17 00:00:00 2001 +From: Randy MacLeod <Randy.MacLeod@windriver.com> +Date: Mon, 29 Sep 2014 12:32:20 +0200 +Subject: [PATCH] Add back-up implementation of be32toh() + +Older systems may not have the be32toh function defined. Check for this +and fall back to checking the endianness and calling bswap_32 directly +if needed. This works on both old and new systems. + +[Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>: +address comments raised by Lucas De Marchi [1], update commit message] + +Signed-off-by: Thomas De Schampheleire <thomas.de.schampheleire@gmail.com> + +Upstream-status: accepted [2] + +[1] http://www.spinics.net/lists/linux-modules/msg01129.html +[2] https://git.kernel.org/cgit/utils/kernel/kmod/kmod.git/commit/?id=9b34db1ae63427269f918b2868b4cfcb50e6259b + +--- + configure.ac | 3 +++ + libkmod/libkmod-signature.c | 1 + + libkmod/missing.h | 10 ++++++++++ + 3 files changed, 14 insertions(+), 0 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 7781ce1..cd676bc 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -53,6 +53,9 @@ AC_CHECK_MEMBERS([struct stat.st_mtim], [], [], [#include <sys/stat.h>]) + # musl 1.0 and bionic 4.4 don't have strndupa + AC_CHECK_DECLS_ONCE([strndupa]) + ++# RHEL 5 and older do not have be32toh ++AC_CHECK_DECLS_ONCE([be32toh]) ++ + # Check kernel headers + AC_CHECK_HEADERS_ONCE([linux/module.h]) + +diff --git a/libkmod/libkmod-signature.c b/libkmod/libkmod-signature.c +index a3ac15e..28f993e 100644 +--- a/libkmod/libkmod-signature.c ++++ b/libkmod/libkmod-signature.c +@@ -25,6 +25,7 @@ + #include <stdio.h> + + #include "libkmod-internal.h" ++#include "missing.h" + + /* These types and tables were copied from the 3.7 kernel sources. + * As this is just description of the signature format, it should not be +diff --git a/libkmod/missing.h b/libkmod/missing.h +index 8d47af8..4c0d136 100644 +--- a/libkmod/missing.h ++++ b/libkmod/missing.h +@@ -43,3 +43,13 @@ static inline int finit_module(int fd, const char *uargs, int flags) + memcpy(__new, __old, __len); \ + }) + #endif ++ ++#if !HAVE_DECL_BE32TOH ++#include <endian.h> ++#include <byteswap.h> ++#if __BYTE_ORDER == __LITTLE_ENDIAN ++#define be32toh(x) bswap_32 (x) ++#else ++#define be32toh(x) (x) ++#endif ++#endif +-- +1.7.1 + |