summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--network/ndiswrapper-kernel/kernel-3.14.patch53
-rw-r--r--network/ndiswrapper-kernel/kernel-4.0.patch41
-rw-r--r--network/ndiswrapper-kernel/ndiswrapper-kernel.SlackBuild4
3 files changed, 98 insertions, 0 deletions
diff --git a/network/ndiswrapper-kernel/kernel-3.14.patch b/network/ndiswrapper-kernel/kernel-3.14.patch
new file mode 100644
index 0000000000..cc40e5c87c
--- /dev/null
+++ b/network/ndiswrapper-kernel/kernel-3.14.patch
@@ -0,0 +1,53 @@
+Description: Kernel 3.14 changes
+
+This is a diff consisting of upstream revisions 3199, 3201, 3203.
+
+* Use prandom_seed() instead of net_srandom() on Linux 3.8+
+net_srandom() is going away.
+
+* Avoid preempt_enable_no_resched(), it's no longer available for modules
+Use preempt_enable() instead. This makes nt_spin_unlock_irqrestore()
+fully complementary to nt_spin_lock_irqsave().
+
+* Define reinit_completion() based on the kernel version
+Checking for INIT_COMPLETION was a temporary hack needed before Linux
+3.13-rc1 was released.
+
+The last patch might not be really related to kernel 3.14, but is included
+as well.
+
+Origin: upstream, http://sourceforge.net/p/ndiswrapper/code/
+
+--- a/driver/crt.c
++++ b/driver/crt.c
+@@ -467,7 +467,7 @@ noregparm int WIN_FUNC(_win_memcmp,3)
+ noregparm void WIN_FUNC(_win_srand,1)
+ (UINT seed)
+ {
+- net_srandom(seed);
++ prandom_seed((__force u32)(seed));
+ }
+
+ noregparm int WIN_FUNC(rand,0)
+--- a/driver/ntoskernel.h
++++ b/driver/ntoskernel.h
+@@ -347,7 +347,7 @@ static inline void netif_poll_disable(st
+ #define netdev_notifier_info_to_dev(x) ((struct net_device *)(x))
+ #endif
+
+-#ifdef INIT_COMPLETION
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)
+ static inline void reinit_completion(struct completion *x)
+ {
+ INIT_COMPLETION(*x);
+@@ -797,9 +797,8 @@ do { \
+ #define nt_spin_unlock_irqrestore(lock, flags) \
+ do { \
+ nt_spin_unlock(lock); \
+- preempt_enable_no_resched(); \
++ preempt_enable(); \
+ local_irq_restore(flags); \
+- preempt_check_resched(); \
+ } while (0)
+
+ static inline ULONG SPAN_PAGES(void *ptr, SIZE_T length)
diff --git a/network/ndiswrapper-kernel/kernel-4.0.patch b/network/ndiswrapper-kernel/kernel-4.0.patch
new file mode 100644
index 0000000000..97ef75d3ed
--- /dev/null
+++ b/network/ndiswrapper-kernel/kernel-4.0.patch
@@ -0,0 +1,41 @@
+From: Julian Andres Klode <jak@debian.org>
+Date: Tue, 12 May 2015 17:11:11 +0200
+Subject: Support kernel 4.0
+
+---
+ driver/ndis.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/driver/ndis.c b/driver/ndis.c
+index 9ace34b..fafd2e7 100644
+--- a/driver/ndis.c
++++ b/driver/ndis.c
+@@ -25,6 +25,10 @@
+ #define MAX_ALLOCATED_NDIS_PACKETS TX_RING_SIZE
+ #define MAX_ALLOCATED_NDIS_BUFFERS TX_RING_SIZE
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,0,0)
++#define strncasecmp strnicmp
++#endif
++
+ static struct work_struct ndis_work;
+ static struct nt_list ndis_work_list;
+ static spinlock_t ndis_work_list_lock;
+@@ -438,7 +442,7 @@ static int read_setting(struct nt_list *setting_list, char *keyname, int length,
+ struct wrap_device_setting *setting;
+ mutex_lock(&loader_mutex);
+ nt_list_for_each_entry(setting, setting_list, list) {
+- if (strnicmp(keyname, setting->name, length) == 0) {
++ if (strncasecmp(keyname, setting->name, length) == 0) {
+ TRACE2("setting %s='%s'", keyname, setting->value);
+ mutex_unlock(&loader_mutex);
+ *param = ndis_encode_setting(setting, type);
+@@ -502,7 +506,7 @@ wstdcall void WIN_FUNC(NdisWriteConfiguration,4)
+
+ mutex_lock(&loader_mutex);
+ nt_list_for_each_entry(setting, &nmb->wnd->wd->settings, list) {
+- if (strnicmp(keyname, setting->name, ansi.length) == 0) {
++ if (strncasecmp(keyname, setting->name, ansi.length) == 0) {
+ mutex_unlock(&loader_mutex);
+ if (ndis_decode_setting(setting, param))
+ *status = NDIS_STATUS_FAILURE;
diff --git a/network/ndiswrapper-kernel/ndiswrapper-kernel.SlackBuild b/network/ndiswrapper-kernel/ndiswrapper-kernel.SlackBuild
index 6082814f3f..0f59df1f70 100644
--- a/network/ndiswrapper-kernel/ndiswrapper-kernel.SlackBuild
+++ b/network/ndiswrapper-kernel/ndiswrapper-kernel.SlackBuild
@@ -78,6 +78,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# Fixes for recent kernels (thanks to Arch)
+patch -p1 < $CWD/kernel-3.14.patch
+patch -p1 < $CWD/kernel-4.0.patch
+
EXTRA_CFLAGS="$SLKCFLAGS" \
make -C driver KVERS=$KERNEL V=1
make install -C driver KVERS=$KERNEL DESTDIR=$PKG