diff --git a/drivers/isdn/mISDN/octvqe/octvqe_linux.c b/drivers/isdn/mISDN/octvqe/octvqe_linux.c index 9861b2c..ef651c5 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)) @@ -1208,4 +1226,3 @@ module_exit(octvqe_exit); MODULE_AUTHOR("Octasic Inc."); MODULE_DESCRIPTION("OCTVQE echo canceller"); MODULE_LICENSE("GPL"); -MODULE_SUPPORTED_DEVICE(DEV_NAME); diff --git a/drivers/isdn/mISDN/socket.c b/drivers/isdn/mISDN/socket.c index f667c62..11cff4c 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; } @@ -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, 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