diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | 0008-BFQ-update-to-v8r11.patch | 116 | ||||
-rw-r--r-- | PKGBUILD | 10 |
3 files changed, 125 insertions, 5 deletions
@@ -1,6 +1,6 @@ pkgbase = linux-rt-bfq pkgver = 4.9.20.16 - pkgrel = 3 + pkgrel = 4 url = http://algo.ing.unimo.it arch = i686 arch = x86_64 @@ -29,6 +29,7 @@ pkgbase = linux-rt-bfq source = 0005-BFQ-update-to-v8r8.patch source = 0006-BFQ-update-to-v8r9.patch source = 0007-BFQ-update-to-v8r10.patch + source = 0008-BFQ-update-to-v8r11.patch validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = 64254695FFF0AA4466CC19E67B96E8162A8CF5D1 @@ -54,6 +55,7 @@ pkgbase = linux-rt-bfq sha512sums = dab3dba300e276dd552cb86c903af5cac9f7c7954b938ac9c300745a175198c553d84cd3a5e58c350d83160f33b07f6dd20a570da4afdce178464c402ac7829b sha512sums = ee41c3d94f16ad34077a84a1bdb49789e5d7979c75abb46970707929627542f7c78e35ae93833b45030ea03ec4ee52f21e410dad37fa967d02d1aeb72f0b5cd8 sha512sums = f57ec6fcdb9554a9e6f9e59168d7a39e93df9b48030f4fad1e4e7d15814ddc0314200ba1d08a6a9171ca1593689d0a710cdfdb4f997c5c65bb74325173fc94bb + sha512sums = 554c5a9b3ed415f42f8ba0e25e6d0449b378ab10933e7628ce1fad07bcfcffe3a2319df05360aed4761ac3388e8f05b36e237e2ff1847128672e3461c99fe2c7 pkgname = linux-rt-bfq pkgdesc = Linux Kernel and modules with the RT patch and the BFQ scheduler. diff --git a/0008-BFQ-update-to-v8r11.patch b/0008-BFQ-update-to-v8r11.patch new file mode 100644 index 000000000000..97ad479b3865 --- /dev/null +++ b/0008-BFQ-update-to-v8r11.patch @@ -0,0 +1,116 @@ +From 1114a7985d8ca1f04210b38a2d90f0e837b4ea05 Mon Sep 17 00:00:00 2001 +From: Paolo Valente <paolo.valente@linaro.org> +Date: Wed, 26 Apr 2017 19:14:04 +0200 +Subject: [PATCH 1/3] block, bfq: use pointer entity->sched_data only if set + +In the function __bfq_deactivate_entity, the pointer +entity->sched_data could happen to be used before being properly +initialized. This led to a NULL pointer dereference. This commit fixes +this bug by just using this pointer only where it is safe to do so. + +Reported-by: Tom Harrison <l12436.tw@gmail.com> +Tested-by: Tom Harrison <l12436.tw@gmail.com> +Signed-off-by: Paolo Valente <paolo.valente@linaro.org> +--- + block/bfq-sched.c | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/block/bfq-sched.c b/block/bfq-sched.c +index 70aac56..8311bdb 100644 +--- a/block/bfq-sched.c ++++ b/block/bfq-sched.c +@@ -1280,14 +1280,23 @@ static bool __bfq_deactivate_entity(struct bfq_entity *entity, + bool ins_into_idle_tree) + { + struct bfq_sched_data *sd = entity->sched_data; +- struct bfq_service_tree *st = bfq_entity_service_tree(entity); +- bool is_in_service = entity == sd->in_service_entity; ++ struct bfq_service_tree *st; ++ bool is_in_service; + + if (!entity->on_st) { /* entity never activated, or already inactive */ +- BUG_ON(entity == entity->sched_data->in_service_entity); ++ BUG_ON(sd && entity == sd->in_service_entity); + return false; + } + ++ /* ++ * If we get here, then entity is active, which implies that ++ * bfq_group_set_parent has already been invoked for the group ++ * represented by entity. Therefore, the field ++ * entity->sched_data has been set, and we can safely use it. ++ */ ++ st = bfq_entity_service_tree(entity); ++ is_in_service = entity == sd->in_service_entity; ++ + BUG_ON(is_in_service && entity->tree && entity->tree != &st->active); + + if (is_in_service) + +From 614555e901cf87767e339ab4a5e632f938841fe6 Mon Sep 17 00:00:00 2001 +From: Colin Ian King <colin.king@canonical.com> +Date: Thu, 20 Apr 2017 15:07:18 +0100 +Subject: [PATCH 2/3] block, bfq: don't dereference bic before null checking it + +The call to bfq_check_ioprio_change will dereference bic, however, +the null check for bic is after this call. Move the the null +check on bic to before the call to avoid any potential null +pointer dereference issues. + +Detected by CoverityScan, CID#1430138 ("Dereference before null check") + +Signed-off-by: Colin Ian King <colin.king@canonical.com> +Signed-off-by: Jens Axboe <axboe@fb.com> +--- + block/bfq-iosched.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c +index 59b1891..77db5a5 100644 +--- a/block/bfq-iosched.c ++++ b/block/bfq-iosched.c +@@ -4561,6 +4561,8 @@ static int bfq_set_request(struct request_queue *q, struct request *rq, + if (!bic) + goto queue_fail; + ++ bfq_check_ioprio_change(bic, bio); ++ + bfq_bic_update_cgroup(bic, bio); + + new_queue: + +From 547022587388ae4e2f27bc45ba23eb040c0558b1 Mon Sep 17 00:00:00 2001 +From: Paolo Valente <paolo.valente@linaro.org> +Date: Mon, 1 May 2017 19:15:43 +0200 +Subject: [PATCH 3/3] BFQ-v8r11 + +Signed-off-by: Paolo Valente <paolo.valente@linaro.org> +--- + block/bfq-iosched.c | 2 +- + block/bfq.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c +index 77db5a5..6d06c3c 100644 +--- a/block/bfq-iosched.c ++++ b/block/bfq-iosched.c +@@ -5259,7 +5259,7 @@ static struct blkcg_policy blkcg_policy_bfq = { + static int __init bfq_init(void) + { + int ret; +- char msg[60] = "BFQ I/O-scheduler: v8r10"; ++ char msg[60] = "BFQ I/O-scheduler: v8r11"; + + #ifdef CONFIG_BFQ_GROUP_IOSCHED + ret = blkcg_policy_register(&blkcg_policy_bfq); +diff --git a/block/bfq.h b/block/bfq.h +index 7cb3240..8cd2b6f 100644 +--- a/block/bfq.h ++++ b/block/bfq.h +@@ -1,5 +1,5 @@ + /* +- * BFQ v8r10 for 4.10.0: data structures and common functions prototypes. ++ * BFQ v8r11 for 4.10.0: data structures and common functions prototypes. + * + * Based on ideas and code from CFQ: + * Copyright (C) 2003 Jens Axboe <axboe@kernel.dk> @@ -55,7 +55,7 @@ _pkgver=4.9.20 _rtver=16 _rtpatchver=rt${_rtver} pkgver=${_pkgver}.${_rtver} -pkgrel=3 +pkgrel=4 arch=('i686' 'x86_64') url="http://algo.ing.unimo.it" license=('GPL2') @@ -89,7 +89,8 @@ source=("http://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz" # patches from https://github.com/linusw/linux-bfq/commits/bfq-v8 '0005-BFQ-update-to-v8r8.patch' '0006-BFQ-update-to-v8r9.patch' - '0007-BFQ-update-to-v8r10.patch') + '0007-BFQ-update-to-v8r10.patch' + '0008-BFQ-update-to-v8r11.patch') _kernelname=${pkgbase#linux} @@ -117,7 +118,7 @@ prepare() { ### Patch source with BFQ msg "Patching source with BFQ patches" - for p in "${srcdir}"/000{1,2,3,4,5,6,7}-*BFQ*.patch; do + for p in "${srcdir}"/000{1,2,3,4,5,6,7,8}-*BFQ*.patch; do msg " $p" patch -Np1 -i "$p" done @@ -478,7 +479,8 @@ sha512sums=('bf67ff812cc3cb7e5059e82cc5db0d9a7c5637f7ed9a42e4730c715bf7047c81ed3 '2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf' 'dab3dba300e276dd552cb86c903af5cac9f7c7954b938ac9c300745a175198c553d84cd3a5e58c350d83160f33b07f6dd20a570da4afdce178464c402ac7829b' 'ee41c3d94f16ad34077a84a1bdb49789e5d7979c75abb46970707929627542f7c78e35ae93833b45030ea03ec4ee52f21e410dad37fa967d02d1aeb72f0b5cd8' - 'f57ec6fcdb9554a9e6f9e59168d7a39e93df9b48030f4fad1e4e7d15814ddc0314200ba1d08a6a9171ca1593689d0a710cdfdb4f997c5c65bb74325173fc94bb') + 'f57ec6fcdb9554a9e6f9e59168d7a39e93df9b48030f4fad1e4e7d15814ddc0314200ba1d08a6a9171ca1593689d0a710cdfdb4f997c5c65bb74325173fc94bb' + '554c5a9b3ed415f42f8ba0e25e6d0449b378ab10933e7628ce1fad07bcfcffe3a2319df05360aed4761ac3388e8f05b36e237e2ff1847128672e3461c99fe2c7') validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds |