Hi,

Am Do den 20. Dez 2018 um 18:56 schrieb Ben Hutchings:
> This patch is no longer sufficient, as oss4 is further broken by the
> timer API change in Linux 4.15:

I have the patch in attachment in use up to kernel 4.18.

Regards
   Klaus
-- 
Klaus Ethgen                                       http://www.ethgen.ch/
pub  4096R/4E20AF1C 2011-05-16            Klaus Ethgen <kl...@ethgen.ch>
Fingerprint: 85D4 CA42 952C 949B 1753  62B3 79D0 B06F 4E20 AF1C
diff -Nur modules/oss4.orig/core/oss_core.c modules/oss4/core/oss_core.c
--- modules/oss4.orig/core/oss_core.c   2017-07-26 15:03:52.000000000 +0100
+++ modules/oss4/core/oss_core.c        2018-03-10 10:13:12.890910729 +0100
@@ -498,6 +498,9 @@
   int timestamp;
   void (*func) (void *);
   void *arg;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)
+  int data;
+#endif
 
   struct timer_list timer;
 } tmout_desc_t;
@@ -510,8 +513,15 @@
 int timeout_random = 0x12123400;
 
 void
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)
+oss_timer_callback (struct timer_list *t)
+{
+   tmout_desc_t *priv = container_of(t, typeof(*priv), timer);
+   int id = priv->data;
+#else
 oss_timer_callback (unsigned long id)
 {
+#endif
   tmout_desc_t *tmout;
   int ix;
   void *arg;
@@ -570,10 +580,17 @@
   tmout->arg = arg;
   tmout->timestamp = id | (timeout_random & ~0xff);
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)
+  tmout->data = id | (timeout_random & ~0xff);
+  timer_setup (&tmout->timer, oss_timer_callback, 0);
+#else
   init_timer (&tmout->timer);
+#endif
   tmout->timer.expires = jiffies + ticks;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0)
   tmout->timer.data = id | (timeout_random & ~0xff);
   tmout->timer.function = oss_timer_callback;
+#endif
   add_timer (&tmout->timer);
 
   return id | (timeout_random & ~0xff);

Attachment: signature.asc
Description: PGP signature

Reply via email to