From 417363a1cadeccc23988d72acf3cd736192bdd13 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 15 Jan 2022 14:31:01 +0100 Subject: [PATCH 1/5] socket.c: setsockopt now uses sockptr_t This fixes compilation against kernels >= 5.9 containing commit a7b75c5a8c41445f33efb663887ff5f5c3b4454b "net: pass a sockptr_t into ->setsockopt" --- drivers/isdn/mISDN/socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c index f667c62..39d77f8 100644 --- a/drivers/isdn/mISDN/socket.c +++ b/drivers/isdn/mISDN/socket.c @@ -404,7 +404,7 @@ data_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) } static int data_sock_setsockopt(struct socket *sock, int level, int optname, - char __user *optval, unsigned int len) + sockptr_t optval, unsigned int len) { struct sock *sk = sock->sk; int err = 0, opt = 0; @@ -417,7 +417,7 @@ static int data_sock_setsockopt(struct socket *sock, int level, int optname, switch (optname) { case MISDN_TIME_STAMP: - if (get_user(opt, (int __user *)optval)) { + if (copy_from_sockptr(&opt, optval, sizeof(int))) { err = -EFAULT; break; } From 798b6484e6ada9725c846d1aad8837b80f79063e Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sat, 15 Jan 2022 14:32:14 +0100 Subject: [PATCH 2/5] socket.c: remove sock_no_{get,set}sockopt This fixes the build against kernels >= 5.9 containing commit a44d9e72100f7044ac46e4e6dc475f5b4097830f: "net: make ->{get,set}sockopt in proto_ops optional" --- drivers/isdn/mISDN/socket.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c index 39d77f8..11cff4c 100644 --- a/drivers/isdn/mISDN/socket.c +++ b/drivers/isdn/mISDN/socket.c @@ -741,8 +741,8 @@ static const struct proto_ops base_sock_ops = { .recvmsg = sock_no_recvmsg, .listen = sock_no_listen, .shutdown = sock_no_shutdown, - .setsockopt = sock_no_setsockopt, - .getsockopt = sock_no_getsockopt, + .setsockopt = NULL, + .getsockopt = NULL, .connect = sock_no_connect, .socketpair = sock_no_socketpair, .accept = sock_no_accept, From a3042ea9a651a230a3546277e0391b0e53d63f13 Mon Sep 17 00:00:00 2001 From: Martin Hauke Date: Sat, 22 Jan 2022 23:44:44 +0100 Subject: [PATCH 3/5] Support for kernel >= 5.14.0 task_struct::state was renamed ... https://lore.kernel.org/all/20210611082838.550736351@infradead.org/ --- drivers/isdn/mISDN/octvqe/octvqe_linux.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/isdn/mISDN/octvqe/octvqe_linux.c b/drivers/isdn/mISDN/octvqe/octvqe_linux.c index 9861b2c..5f43c8e 100644 --- a/drivers/isdn/mISDN/octvqe/octvqe_linux.c +++ b/drivers/isdn/mISDN/octvqe/octvqe_linux.c @@ -718,12 +718,21 @@ static ssize_t octdev_read( add_wait_queue(&pChan->ReadWaitQueue, &WaitQ); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)) current->state = TASK_INTERRUPTIBLE; +#else + WRITE_ONCE(current->__state, TASK_INTERRUPTIBLE); +#endif if (!signal_pending(current)) schedule(); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)) current->state = TASK_RUNNING; +#else + WRITE_ONCE(current->__state, TASK_RUNNING); +#endif + remove_wait_queue(&pChan->ReadWaitQueue, &WaitQ); if (signal_pending(current)) @@ -843,12 +852,21 @@ static ssize_t octdev_write( add_wait_queue(&pChan->WriteWaitQueue, &WaitQ); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)) current->state = TASK_INTERRUPTIBLE; +#else + WRITE_ONCE(current->__state, TASK_INTERRUPTIBLE); +#endif if (!signal_pending(current)) schedule(); +#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)) current->state = TASK_RUNNING; +#else + WRITE_ONCE(current->__state, TASK_RUNNING); +#endif + remove_wait_queue(&pChan->WriteWaitQueue, &WaitQ); if (signal_pending(current)) From 98b137c5bfd6e4a7c0665e4310b4a879a8081669 Mon Sep 17 00:00:00 2001 From: Martin Hauke Date: Sat, 22 Jan 2022 23:46:33 +0100 Subject: [PATCH 4/5] MODULE_SUPPORTED_DEVICE was removed in kernel 5.12 MODULE_SUPPORTED_DEVICE was added in pre-git era and never was implemented. https://lore.kernel.org/lkml/YFMHYUbPmpS+Kzcj@unreal/T/ --- drivers/isdn/mISDN/octvqe/octvqe_linux.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/isdn/mISDN/octvqe/octvqe_linux.c b/drivers/isdn/mISDN/octvqe/octvqe_linux.c index 5f43c8e..ef651c5 100644 --- a/drivers/isdn/mISDN/octvqe/octvqe_linux.c +++ b/drivers/isdn/mISDN/octvqe/octvqe_linux.c @@ -1226,4 +1226,3 @@ module_exit(octvqe_exit); MODULE_AUTHOR("Octasic Inc."); MODULE_DESCRIPTION("OCTVQE echo canceller"); MODULE_LICENSE("GPL"); -MODULE_SUPPORTED_DEVICE(DEV_NAME); From 7ffba12e60c01a8052bde083207148a8451f3071 Mon Sep 17 00:00:00 2001 From: Martin Hauke Date: Sat, 22 Jan 2022 23:55:15 +0100 Subject: [PATCH 5/5] stdarg.h is not in the kernel --- include/linux/mISDNif.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h index a7330eb..7dd1f01 100644 --- a/include/linux/mISDNif.h +++ b/include/linux/mISDNif.h @@ -18,7 +18,6 @@ #ifndef mISDNIF_H #define mISDNIF_H -#include #include #include #include