From 6fb2740835b8e33b6bd66746683a67c85f9319bb Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Fri, 6 Jan 2017 02:25:18 +0000 Subject: [PATCH] core/linux-odroid-c2 to 3.14.79-15 --- ...-add-extra-errata-843419-build-flags.patch | 8 +- ...ix-race-condition-in-packet_set_ring.patch | 92 ------------------- core/linux-odroid-c2/PKGBUILD | 13 +-- core/linux-odroid-c2/config | 6 +- 4 files changed, 12 insertions(+), 107 deletions(-) delete mode 100644 core/linux-odroid-c2/0002-packet-fix-race-condition-in-packet_set_ring.patch diff --git a/core/linux-odroid-c2/0001-add-extra-errata-843419-build-flags.patch b/core/linux-odroid-c2/0001-add-extra-errata-843419-build-flags.patch index 36213be77..5d7478b06 100644 --- a/core/linux-odroid-c2/0001-add-extra-errata-843419-build-flags.patch +++ b/core/linux-odroid-c2/0001-add-extra-errata-843419-build-flags.patch @@ -1,14 +1,14 @@ -From 27611b7b580f13397bc38b19c224f47c38a9cea3 Mon Sep 17 00:00:00 2001 +From 11a0d059489c71a07c4a40b5c1f8cfe5cda96b51 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Thu, 26 May 2016 06:29:07 -0600 -Subject: [PATCH 1/2] add extra errata 843419 build flags +Subject: [PATCH] add extra errata 843419 build flags --- arch/arm64/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile -index 18ea69f..59c5e48 100644 +index 18ea69f55402..59c5e48458d6 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -37,6 +37,7 @@ CHECKFLAGS += -D__aarch64__ @@ -20,5 +20,5 @@ index 18ea69f..59c5e48 100644 # Default value -- -2.10.2 +2.11.0 diff --git a/core/linux-odroid-c2/0002-packet-fix-race-condition-in-packet_set_ring.patch b/core/linux-odroid-c2/0002-packet-fix-race-condition-in-packet_set_ring.patch deleted file mode 100644 index be2652387..000000000 --- a/core/linux-odroid-c2/0002-packet-fix-race-condition-in-packet_set_ring.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 577171f3e8ada245e12261484b5154def1a0c3c9 Mon Sep 17 00:00:00 2001 -From: Philip Pettersson -Date: Wed, 30 Nov 2016 14:55:36 -0800 -Subject: [PATCH 2/2] packet: fix race condition in packet_set_ring - -When packet_set_ring creates a ring buffer it will initialize a -struct timer_list if the packet version is TPACKET_V3. This value -can then be raced by a different thread calling setsockopt to -set the version to TPACKET_V1 before packet_set_ring has finished. - -This leads to a use-after-free on a function pointer in the -struct timer_list when the socket is closed as the previously -initialized timer will not be deleted. - -The bug is fixed by taking lock_sock(sk) in packet_setsockopt when -changing the packet version while also taking the lock at the start -of packet_set_ring. - -Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.") -Signed-off-by: Philip Pettersson -Signed-off-by: Eric Dumazet -Signed-off-by: David S. Miller ---- - net/packet/af_packet.c | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c -index c8078af..cafd6ec 100644 ---- a/net/packet/af_packet.c -+++ b/net/packet/af_packet.c -@@ -3291,19 +3291,25 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv - - if (optlen != sizeof(val)) - return -EINVAL; -- if (po->rx_ring.pg_vec || po->tx_ring.pg_vec) -- return -EBUSY; - if (copy_from_user(&val, optval, sizeof(val))) - return -EFAULT; - switch (val) { - case TPACKET_V1: - case TPACKET_V2: - case TPACKET_V3: -- po->tp_version = val; -- return 0; -+ break; - default: - return -EINVAL; - } -+ lock_sock(sk); -+ if (po->rx_ring.pg_vec || po->tx_ring.pg_vec) { -+ ret = -EBUSY; -+ } else { -+ po->tp_version = val; -+ ret = 0; -+ } -+ release_sock(sk); -+ return ret; - } - case PACKET_RESERVE: - { -@@ -3766,6 +3772,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, - /* Added to avoid minimal code churn */ - struct tpacket_req *req = &req_u->req; - -+ lock_sock(sk); - /* Opening a Tx-ring is NOT supported in TPACKET_V3 */ - if (!closing && tx_ring && (po->tp_version > TPACKET_V2)) { - WARN(1, "Tx-ring is not supported.\n"); -@@ -3847,7 +3854,6 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, - goto out; - } - -- lock_sock(sk); - - /* Detach socket from network */ - spin_lock(&po->bind_lock); -@@ -3896,11 +3902,11 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u, - if (!tx_ring) - prb_shutdown_retire_blk_timer(po, tx_ring, rb_queue); - } -- release_sock(sk); - - if (pg_vec) - free_pg_vec(pg_vec, order, req->tp_block_nr); - out: -+ release_sock(sk); - return err; - } - --- -2.10.2 - diff --git a/core/linux-odroid-c2/PKGBUILD b/core/linux-odroid-c2/PKGBUILD index e96a7b490..0ec114d0a 100644 --- a/core/linux-odroid-c2/PKGBUILD +++ b/core/linux-odroid-c2/PKGBUILD @@ -4,12 +4,12 @@ buildarch=8 pkgbase=linux-odroid-c2 -_commit=1b4fefdf20a84b17d5b666c0686a12a29adcb848 +_commit=1f6564d38aec12e2efaf826e1d993d7eaf1260fb _srcname=linux-${_commit} _kernelname=${pkgbase#linux} _desc="ODROID-C2" pkgver=3.14.79 -pkgrel=14 +pkgrel=15 arch=('aarch64') url="https://github.com/hardkernel/linux/tree/odroidc2-3.14.y" license=('GPL2') @@ -18,15 +18,13 @@ options=('!strip') source=("https://github.com/hardkernel/linux/archive/${_commit}.tar.gz" "git+https://github.com/mdrjr/c2_bootini.git" '0001-add-extra-errata-843419-build-flags.patch' - '0002-packet-fix-race-condition-in-packet_set_ring.patch' 'config' 'linux.preset' 'amlogic.service') -md5sums=('f68219ba8faa1ff6caaede2055cfd929' +md5sums=('2a1f8590a297e116b89714dbc314f7c4' 'SKIP' - '7df92923b447253d37234fec3f3c48b1' - '09ddfd3c3e1b76cd2ffb2e9a61d08bbe' - 'b1d8a7d34532252fa4434911b09c5527' + '4e11a812de6e7d749103b6a2e6bef301' + 'ff55a88a7474f9f475409ee72e001e73' '85fd3026c435ffa6d7c2d7f9767b4251' 'b8956789318f49cec5b8bb0b41654a9b') @@ -42,7 +40,6 @@ prepare() { sed -i '2iexit 0' scripts/depmod.sh patch -p1 -i ../0001-add-extra-errata-843419-build-flags.patch - patch -p1 -i ../0002-packet-fix-race-condition-in-packet_set_ring.patch } build() { diff --git a/core/linux-odroid-c2/config b/core/linux-odroid-c2/config index 1d7981183..310cb40d8 100644 --- a/core/linux-odroid-c2/config +++ b/core/linux-odroid-c2/config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 3.14.79-12 Kernel Configuration +# Linux/arm64 3.14.79-15 Kernel Configuration # CONFIG_ARM64=y CONFIG_ARM64_HAS_SG_CHAIN=y @@ -117,7 +117,7 @@ CONFIG_CGROUP_PERF=y CONFIG_CGROUP_SCHED=y CONFIG_FAIR_GROUP_SCHED=y CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y +# CONFIG_RT_GROUP_SCHED is not set CONFIG_BLK_CGROUP=y # CONFIG_DEBUG_BLK_CGROUP is not set # CONFIG_CHECKPOINT_RESTORE is not set @@ -3529,7 +3529,7 @@ CONFIG_USB_DEFAULT_PERSIST=y # CONFIG_USB_DYNAMIC_MINORS is not set # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set -# CONFIG_USB_MON is not set +CONFIG_USB_MON=m # CONFIG_USB_WUSB_CBAF is not set #