diff --git a/alpine/kernel/patches/0002-VSOCK-constify-vmci_transport_notify_ops-structures.patch b/alpine/kernel/patches/0002-VSOCK-constify-vmci_transport_notify_ops-structures.patch index 3a17cf89e..ba54a3e74 100644 --- a/alpine/kernel/patches/0002-VSOCK-constify-vmci_transport_notify_ops-structures.patch +++ b/alpine/kernel/patches/0002-VSOCK-constify-vmci_transport_notify_ops-structures.patch @@ -1,4 +1,4 @@ -From ba1dc9346ba14b24f22ea04db21011f2874c3a67 Mon Sep 17 00:00:00 2001 +From 0260029492a1503e871236767ed86e2fc3862cc2 Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Sat, 21 Nov 2015 18:39:17 +0100 Subject: [PATCH 2/9] VSOCK: constify vmci_transport_notify_ops structures diff --git a/alpine/kernel/patches/0003-AF_VSOCK-Shrink-the-area-influenced-by-prepare_to_wa.patch b/alpine/kernel/patches/0003-AF_VSOCK-Shrink-the-area-influenced-by-prepare_to_wa.patch new file mode 100644 index 000000000..ea277f413 --- /dev/null +++ b/alpine/kernel/patches/0003-AF_VSOCK-Shrink-the-area-influenced-by-prepare_to_wa.patch @@ -0,0 +1,336 @@ +From 6a585c01a353551a69af45bf31606f13115480d1 Mon Sep 17 00:00:00 2001 +From: Claudio Imbrenda +Date: Tue, 22 Mar 2016 17:05:52 +0100 +Subject: [PATCH 3/9] AF_VSOCK: Shrink the area influenced by prepare_to_wait + +When a thread is prepared for waiting by calling prepare_to_wait, sleeping +is not allowed until either the wait has taken place or finish_wait has +been called. The existing code in af_vsock imposed unnecessary no-sleep +assumptions to a broad list of backend functions. +This patch shrinks the influence of prepare_to_wait to the area where it +is strictly needed, therefore relaxing the no-sleep restriction there. + +Signed-off-by: Claudio Imbrenda +Signed-off-by: David S. Miller +(cherry picked from commit f7f9b5e7f8eccfd68ffa7b8d74b07c478bb9e7f0) +--- + net/vmw_vsock/af_vsock.c | 158 +++++++++++++++++++++++++---------------------- + 1 file changed, 85 insertions(+), 73 deletions(-) + +diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c +index 7fd1220..3dce53e 100644 +--- a/net/vmw_vsock/af_vsock.c ++++ b/net/vmw_vsock/af_vsock.c +@@ -1209,10 +1209,14 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr, + + if (signal_pending(current)) { + err = sock_intr_errno(timeout); +- goto out_wait_error; ++ sk->sk_state = SS_UNCONNECTED; ++ sock->state = SS_UNCONNECTED; ++ goto out_wait; + } else if (timeout == 0) { + err = -ETIMEDOUT; +- goto out_wait_error; ++ sk->sk_state = SS_UNCONNECTED; ++ sock->state = SS_UNCONNECTED; ++ goto out_wait; + } + + prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); +@@ -1220,20 +1224,17 @@ static int vsock_stream_connect(struct socket *sock, struct sockaddr *addr, + + if (sk->sk_err) { + err = -sk->sk_err; +- goto out_wait_error; +- } else ++ sk->sk_state = SS_UNCONNECTED; ++ sock->state = SS_UNCONNECTED; ++ } else { + err = 0; ++ } + + out_wait: + finish_wait(sk_sleep(sk), &wait); + out: + release_sock(sk); + return err; +- +-out_wait_error: +- sk->sk_state = SS_UNCONNECTED; +- sock->state = SS_UNCONNECTED; +- goto out_wait; + } + + static int vsock_accept(struct socket *sock, struct socket *newsock, int flags) +@@ -1270,18 +1271,20 @@ static int vsock_accept(struct socket *sock, struct socket *newsock, int flags) + listener->sk_err == 0) { + release_sock(listener); + timeout = schedule_timeout(timeout); ++ finish_wait(sk_sleep(listener), &wait); + lock_sock(listener); + + if (signal_pending(current)) { + err = sock_intr_errno(timeout); +- goto out_wait; ++ goto out; + } else if (timeout == 0) { + err = -EAGAIN; +- goto out_wait; ++ goto out; + } + + prepare_to_wait(sk_sleep(listener), &wait, TASK_INTERRUPTIBLE); + } ++ finish_wait(sk_sleep(listener), &wait); + + if (listener->sk_err) + err = -listener->sk_err; +@@ -1301,19 +1304,15 @@ static int vsock_accept(struct socket *sock, struct socket *newsock, int flags) + */ + if (err) { + vconnected->rejected = true; +- release_sock(connected); +- sock_put(connected); +- goto out_wait; ++ } else { ++ newsock->state = SS_CONNECTED; ++ sock_graft(connected, newsock); + } + +- newsock->state = SS_CONNECTED; +- sock_graft(connected, newsock); + release_sock(connected); + sock_put(connected); + } + +-out_wait: +- finish_wait(sk_sleep(listener), &wait); + out: + release_sock(listener); + return err; +@@ -1557,11 +1556,11 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, + if (err < 0) + goto out; + +- prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); + + while (total_written < len) { + ssize_t written; + ++ prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); + while (vsock_stream_has_space(vsk) == 0 && + sk->sk_err == 0 && + !(sk->sk_shutdown & SEND_SHUTDOWN) && +@@ -1570,27 +1569,33 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, + /* Don't wait for non-blocking sockets. */ + if (timeout == 0) { + err = -EAGAIN; +- goto out_wait; ++ finish_wait(sk_sleep(sk), &wait); ++ goto out_err; + } + + err = transport->notify_send_pre_block(vsk, &send_data); +- if (err < 0) +- goto out_wait; ++ if (err < 0) { ++ finish_wait(sk_sleep(sk), &wait); ++ goto out_err; ++ } + + release_sock(sk); + timeout = schedule_timeout(timeout); + lock_sock(sk); + if (signal_pending(current)) { + err = sock_intr_errno(timeout); +- goto out_wait; ++ finish_wait(sk_sleep(sk), &wait); ++ goto out_err; + } else if (timeout == 0) { + err = -EAGAIN; +- goto out_wait; ++ finish_wait(sk_sleep(sk), &wait); ++ goto out_err; + } + + prepare_to_wait(sk_sleep(sk), &wait, + TASK_INTERRUPTIBLE); + } ++ finish_wait(sk_sleep(sk), &wait); + + /* These checks occur both as part of and after the loop + * conditional since we need to check before and after +@@ -1598,16 +1603,16 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, + */ + if (sk->sk_err) { + err = -sk->sk_err; +- goto out_wait; ++ goto out_err; + } else if ((sk->sk_shutdown & SEND_SHUTDOWN) || + (vsk->peer_shutdown & RCV_SHUTDOWN)) { + err = -EPIPE; +- goto out_wait; ++ goto out_err; + } + + err = transport->notify_send_pre_enqueue(vsk, &send_data); + if (err < 0) +- goto out_wait; ++ goto out_err; + + /* Note that enqueue will only write as many bytes as are free + * in the produce queue, so we don't need to ensure len is +@@ -1620,7 +1625,7 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, + len - total_written); + if (written < 0) { + err = -ENOMEM; +- goto out_wait; ++ goto out_err; + } + + total_written += written; +@@ -1628,14 +1633,13 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, + err = transport->notify_send_post_enqueue( + vsk, written, &send_data); + if (err < 0) +- goto out_wait; ++ goto out_err; + + } + +-out_wait: ++out_err: + if (total_written > 0) + err = total_written; +- finish_wait(sk_sleep(sk), &wait); + out: + release_sock(sk); + return err; +@@ -1716,21 +1720,61 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, + if (err < 0) + goto out; + +- prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); + + while (1) { +- s64 ready = vsock_stream_has_data(vsk); ++ s64 ready; + +- if (ready < 0) { +- /* Invalid queue pair content. XXX This should be +- * changed to a connection reset in a later change. +- */ ++ prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); ++ ready = vsock_stream_has_data(vsk); + +- err = -ENOMEM; +- goto out_wait; +- } else if (ready > 0) { ++ if (ready == 0) { ++ if (sk->sk_err != 0 || ++ (sk->sk_shutdown & RCV_SHUTDOWN) || ++ (vsk->peer_shutdown & SEND_SHUTDOWN)) { ++ finish_wait(sk_sleep(sk), &wait); ++ break; ++ } ++ /* Don't wait for non-blocking sockets. */ ++ if (timeout == 0) { ++ err = -EAGAIN; ++ finish_wait(sk_sleep(sk), &wait); ++ break; ++ } ++ ++ err = transport->notify_recv_pre_block( ++ vsk, target, &recv_data); ++ if (err < 0) { ++ finish_wait(sk_sleep(sk), &wait); ++ break; ++ } ++ release_sock(sk); ++ timeout = schedule_timeout(timeout); ++ lock_sock(sk); ++ ++ if (signal_pending(current)) { ++ err = sock_intr_errno(timeout); ++ finish_wait(sk_sleep(sk), &wait); ++ break; ++ } else if (timeout == 0) { ++ err = -EAGAIN; ++ finish_wait(sk_sleep(sk), &wait); ++ break; ++ } ++ } else { + ssize_t read; + ++ finish_wait(sk_sleep(sk), &wait); ++ ++ if (ready < 0) { ++ /* Invalid queue pair content. XXX This should ++ * be changed to a connection reset in a later ++ * change. ++ */ ++ ++ err = -ENOMEM; ++ goto out; ++ } ++ + err = transport->notify_recv_pre_dequeue( + vsk, target, &recv_data); + if (err < 0) +@@ -1750,42 +1794,12 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, + vsk, target, read, + !(flags & MSG_PEEK), &recv_data); + if (err < 0) +- goto out_wait; ++ goto out; + + if (read >= target || flags & MSG_PEEK) + break; + + target -= read; +- } else { +- if (sk->sk_err != 0 || (sk->sk_shutdown & RCV_SHUTDOWN) +- || (vsk->peer_shutdown & SEND_SHUTDOWN)) { +- break; +- } +- /* Don't wait for non-blocking sockets. */ +- if (timeout == 0) { +- err = -EAGAIN; +- break; +- } +- +- err = transport->notify_recv_pre_block( +- vsk, target, &recv_data); +- if (err < 0) +- break; +- +- release_sock(sk); +- timeout = schedule_timeout(timeout); +- lock_sock(sk); +- +- if (signal_pending(current)) { +- err = sock_intr_errno(timeout); +- break; +- } else if (timeout == 0) { +- err = -EAGAIN; +- break; +- } +- +- prepare_to_wait(sk_sleep(sk), &wait, +- TASK_INTERRUPTIBLE); + } + } + +@@ -1816,8 +1830,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, + err = copied; + } + +-out_wait: +- finish_wait(sk_sleep(sk), &wait); + out: + release_sock(sk); + return err; +-- +2.8.0.rc3 + diff --git a/alpine/kernel/patches/0003-vsock-Fix-blocking-ops-call-in-prepare_to_wait.patch b/alpine/kernel/patches/0003-vsock-Fix-blocking-ops-call-in-prepare_to_wait.patch deleted file mode 100644 index da9e84db7..000000000 --- a/alpine/kernel/patches/0003-vsock-Fix-blocking-ops-call-in-prepare_to_wait.patch +++ /dev/null @@ -1,164 +0,0 @@ -From e4d5bbced996499e080e790508113985963a55d5 Mon Sep 17 00:00:00 2001 -From: Laura Abbott -Date: Thu, 4 Feb 2016 10:50:45 -0800 -Subject: [PATCH 3/9] vsock: Fix blocking ops call in prepare_to_wait - -We receoved a bug report from someone using vmware: - -WARNING: CPU: 3 PID: 660 at kernel/sched/core.c:7389 -__might_sleep+0x7d/0x90() -do not call blocking ops when !TASK_RUNNING; state=1 set at -[] prepare_to_wait+0x2d/0x90 -Modules linked in: vmw_vsock_vmci_transport vsock snd_seq_midi -snd_seq_midi_event snd_ens1371 iosf_mbi gameport snd_rawmidi -snd_ac97_codec ac97_bus snd_seq coretemp snd_seq_device snd_pcm -snd_timer snd soundcore ppdev crct10dif_pclmul crc32_pclmul -ghash_clmulni_intel vmw_vmci vmw_balloon i2c_piix4 shpchp parport_pc -parport acpi_cpufreq nfsd auth_rpcgss nfs_acl lockd grace sunrpc btrfs -xor raid6_pq 8021q garp stp llc mrp crc32c_intel serio_raw mptspi vmwgfx -drm_kms_helper ttm drm scsi_transport_spi mptscsih e1000 ata_generic -mptbase pata_acpi -CPU: 3 PID: 660 Comm: vmtoolsd Not tainted -4.2.0-0.rc1.git3.1.fc23.x86_64 #1 -Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop -Reference Platform, BIOS 6.00 05/20/2014 - 0000000000000000 0000000049e617f3 ffff88006ac37ac8 ffffffff818641f5 - 0000000000000000 ffff88006ac37b20 ffff88006ac37b08 ffffffff810ab446 - ffff880068009f40 ffffffff81c63bc0 0000000000000061 0000000000000000 -Call Trace: - [] dump_stack+0x4c/0x65 - [] warn_slowpath_common+0x86/0xc0 - [] warn_slowpath_fmt+0x55/0x70 - [] ? debug_lockdep_rcu_enabled+0x1d/0x20 - [] ? prepare_to_wait+0x2d/0x90 - [] ? prepare_to_wait+0x2d/0x90 - [] __might_sleep+0x7d/0x90 - [] __might_fault+0x43/0xa0 - [] copy_from_iter+0x87/0x2a0 - [] __qp_memcpy_to_queue+0x9a/0x1b0 [vmw_vmci] - [] ? qp_memcpy_to_queue+0x20/0x20 [vmw_vmci] - [] qp_memcpy_to_queue_iov+0x17/0x20 [vmw_vmci] - [] qp_enqueue_locked+0xa0/0x140 [vmw_vmci] - [] vmci_qpair_enquev+0x4f/0xd0 [vmw_vmci] - [] vmci_transport_stream_enqueue+0x1b/0x20 -[vmw_vsock_vmci_transport] - [] vsock_stream_sendmsg+0x2c5/0x320 [vsock] - [] ? wake_atomic_t_function+0x70/0x70 - [] sock_sendmsg+0x38/0x50 - [] SYSC_sendto+0x104/0x190 - [] ? vfs_read+0x8a/0x140 - [] SyS_sendto+0xe/0x10 - [] entry_SYSCALL_64_fastpath+0x12/0x76 - -transport->stream_enqueue may call copy_to_user so it should -not be called inside a prepare_to_wait. Narrow the scope of -the prepare_to_wait to avoid the bad call. This also applies -to vsock_stream_recvmsg as well. - -Reported-by: Vinson Lee -Tested-by: Vinson Lee -Signed-off-by: Laura Abbott -Signed-off-by: David S. Miller -(cherry picked from commit 5988818008257ca42010d6b43a3e0e48afec9898) ---- - net/vmw_vsock/af_vsock.c | 19 ++++++------------- - 1 file changed, 6 insertions(+), 13 deletions(-) - -diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c -index 7fd1220..bbe65dc 100644 ---- a/net/vmw_vsock/af_vsock.c -+++ b/net/vmw_vsock/af_vsock.c -@@ -1557,8 +1557,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, - if (err < 0) - goto out; - -- prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); -- - while (total_written < len) { - ssize_t written; - -@@ -1578,7 +1576,9 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, - goto out_wait; - - release_sock(sk); -+ prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); - timeout = schedule_timeout(timeout); -+ finish_wait(sk_sleep(sk), &wait); - lock_sock(sk); - if (signal_pending(current)) { - err = sock_intr_errno(timeout); -@@ -1588,8 +1588,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, - goto out_wait; - } - -- prepare_to_wait(sk_sleep(sk), &wait, -- TASK_INTERRUPTIBLE); - } - - /* These checks occur both as part of and after the loop -@@ -1635,7 +1633,6 @@ static int vsock_stream_sendmsg(struct socket *sock, struct msghdr *msg, - out_wait: - if (total_written > 0) - err = total_written; -- finish_wait(sk_sleep(sk), &wait); - out: - release_sock(sk); - return err; -@@ -1716,7 +1713,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - if (err < 0) - goto out; - -- prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); - - while (1) { - s64 ready = vsock_stream_has_data(vsk); -@@ -1727,7 +1723,7 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - */ - - err = -ENOMEM; -- goto out_wait; -+ goto out; - } else if (ready > 0) { - ssize_t read; - -@@ -1750,7 +1746,7 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - vsk, target, read, - !(flags & MSG_PEEK), &recv_data); - if (err < 0) -- goto out_wait; -+ goto out; - - if (read >= target || flags & MSG_PEEK) - break; -@@ -1773,7 +1769,9 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - break; - - release_sock(sk); -+ prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE); - timeout = schedule_timeout(timeout); -+ finish_wait(sk_sleep(sk), &wait); - lock_sock(sk); - - if (signal_pending(current)) { -@@ -1783,9 +1781,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - err = -EAGAIN; - break; - } -- -- prepare_to_wait(sk_sleep(sk), &wait, -- TASK_INTERRUPTIBLE); - } - } - -@@ -1816,8 +1811,6 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, - err = copied; - } - --out_wait: -- finish_wait(sk_sleep(sk), &wait); - out: - release_sock(sk); - return err; --- -2.8.0.rc3 - diff --git a/alpine/kernel/patches/0004-VSOCK-transport-specific-vsock_transport-functions.patch b/alpine/kernel/patches/0004-VSOCK-transport-specific-vsock_transport-functions.patch index b61e422ae..2d822bbba 100644 --- a/alpine/kernel/patches/0004-VSOCK-transport-specific-vsock_transport-functions.patch +++ b/alpine/kernel/patches/0004-VSOCK-transport-specific-vsock_transport-functions.patch @@ -1,4 +1,4 @@ -From 99f109b560a95f17f7d034a48c8479c37a685c5a Mon Sep 17 00:00:00 2001 +From a3f136168f164f66de1de277a08b76f54b289d5a Mon Sep 17 00:00:00 2001 From: Stefan Hajnoczi Date: Thu, 17 Dec 2015 11:10:21 +0800 Subject: [PATCH 4/9] VSOCK: transport-specific vsock_transport functions @@ -34,10 +34,10 @@ index e9eb2d6..23f5525 100644 void vsock_release_pending(struct sock *pending); diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c -index bbe65dc..1e5f5ed 100644 +index 3dce53e..112fa8b 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c -@@ -1987,6 +1987,15 @@ void vsock_core_exit(void) +@@ -2006,6 +2006,15 @@ void vsock_core_exit(void) } EXPORT_SYMBOL_GPL(vsock_core_exit); diff --git a/alpine/kernel/patches/0005-VSOCK-Introduce-virtio_vsock_common.ko.patch b/alpine/kernel/patches/0005-VSOCK-Introduce-virtio_vsock_common.ko.patch index a3114bf96..3048e9acc 100644 --- a/alpine/kernel/patches/0005-VSOCK-Introduce-virtio_vsock_common.ko.patch +++ b/alpine/kernel/patches/0005-VSOCK-Introduce-virtio_vsock_common.ko.patch @@ -1,4 +1,4 @@ -From ec05812c3fd57234fa8f7d211924b3c254988c89 Mon Sep 17 00:00:00 2001 +From 4018aa8a812fd6f1a64e3d227550bf5752127314 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 13 Jun 2013 18:27:00 +0800 Subject: [PATCH 5/9] VSOCK: Introduce virtio_vsock_common.ko diff --git a/alpine/kernel/patches/0006-VSOCK-Introduce-virtio_transport.ko.patch b/alpine/kernel/patches/0006-VSOCK-Introduce-virtio_transport.ko.patch index 5bbf22b99..2132384e1 100644 --- a/alpine/kernel/patches/0006-VSOCK-Introduce-virtio_transport.ko.patch +++ b/alpine/kernel/patches/0006-VSOCK-Introduce-virtio_transport.ko.patch @@ -1,4 +1,4 @@ -From 9e5562c5785843a8247d172112302fb8d1cdfcec Mon Sep 17 00:00:00 2001 +From ccaac837ceb4a9582bb57f71e0cac791f7336b19 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 13 Jun 2013 18:28:48 +0800 Subject: [PATCH 6/9] VSOCK: Introduce virtio_transport.ko diff --git a/alpine/kernel/patches/0007-VSOCK-Introduce-vhost_vsock.ko.patch b/alpine/kernel/patches/0007-VSOCK-Introduce-vhost_vsock.ko.patch index b06c35188..fc39b0ff8 100644 --- a/alpine/kernel/patches/0007-VSOCK-Introduce-vhost_vsock.ko.patch +++ b/alpine/kernel/patches/0007-VSOCK-Introduce-vhost_vsock.ko.patch @@ -1,4 +1,4 @@ -From 2da9f4eef909efa13574326bf29efab439bcc77c Mon Sep 17 00:00:00 2001 +From f52efbc874c742a671939ea6408c59545025007d Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 13 Jun 2013 18:29:21 +0800 Subject: [PATCH 7/9] VSOCK: Introduce vhost_vsock.ko diff --git a/alpine/kernel/patches/0008-VSOCK-Add-Makefile-and-Kconfig.patch b/alpine/kernel/patches/0008-VSOCK-Add-Makefile-and-Kconfig.patch index 0b3cd8742..79d729b4f 100644 --- a/alpine/kernel/patches/0008-VSOCK-Add-Makefile-and-Kconfig.patch +++ b/alpine/kernel/patches/0008-VSOCK-Add-Makefile-and-Kconfig.patch @@ -1,4 +1,4 @@ -From 4293a00ac211e20980a0739498a73aae4d8546bf Mon Sep 17 00:00:00 2001 +From e8c8f5299fd202db5d56a10f1dc0a4e464e9a211 Mon Sep 17 00:00:00 2001 From: Asias He Date: Thu, 13 Jun 2013 18:30:19 +0800 Subject: [PATCH 8/9] VSOCK: Add Makefile and Kconfig diff --git a/alpine/kernel/patches/0009-VSOCK-Only-allow-host-network-namespace-to-use-AF_VS.patch b/alpine/kernel/patches/0009-VSOCK-Only-allow-host-network-namespace-to-use-AF_VS.patch index d2572520b..25e65e28d 100644 --- a/alpine/kernel/patches/0009-VSOCK-Only-allow-host-network-namespace-to-use-AF_VS.patch +++ b/alpine/kernel/patches/0009-VSOCK-Only-allow-host-network-namespace-to-use-AF_VS.patch @@ -1,4 +1,4 @@ -From 366c9c42afb9bd54f92f72518470c09e46f12e88 Mon Sep 17 00:00:00 2001 +From 550ec4c8f90f2bf99c1bcb13b2f8476780f42418 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Mon, 4 Apr 2016 14:50:10 +0100 Subject: [PATCH 9/9] VSOCK: Only allow host network namespace to use AF_VSOCK. @@ -12,10 +12,10 @@ Signed-off-by: Ian Campbell 1 file changed, 3 insertions(+) diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c -index 1e5f5ed..cdb3dd3 100644 +index 112fa8b..ead5127 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c -@@ -1840,6 +1840,9 @@ static const struct proto_ops vsock_stream_ops = { +@@ -1859,6 +1859,9 @@ static const struct proto_ops vsock_stream_ops = { static int vsock_create(struct net *net, struct socket *sock, int protocol, int kern) {