Proper checks for SCHED_NORMAL.
It was checked to be in range -20..19 AND 1..99 before.
Fixes: 116135964
Test: boot Pixel 2, check for errors
Change-Id: I8f6d16c6f13a7c99b56c90eb836bff8ddd4c9384
diff --git a/transport/HidlTransportSupport.cpp b/transport/HidlTransportSupport.cpp
index b214f1a..591ccba 100644
--- a/transport/HidlTransportSupport.cpp
+++ b/transport/HidlTransportSupport.cpp
@@ -47,17 +47,24 @@
return false;
}
- if (policy != SCHED_NORMAL && policy != SCHED_FIFO && policy != SCHED_RR) {
- LOG(ERROR) << "Invalid scheduler policy " << policy;
- return false;
- }
-
- if (policy == SCHED_NORMAL && (priority < -20 || priority > 19)) {
- LOG(ERROR) << "Invalid priority for SCHED_NORMAL: " << priority;
- return false;
- } else if (priority < 1 || priority > 99) {
- LOG(ERROR) << "Invalid priority for real-time policy: " << priority;
- return false;
+ switch (policy) {
+ case SCHED_NORMAL: {
+ if (priority < -20 || priority > 19) {
+ LOG(ERROR) << "Invalid priority for SCHED_NORMAL: " << priority;
+ return false;
+ }
+ } break;
+ case SCHED_RR:
+ case SCHED_FIFO: {
+ if (priority < 1 || priority > 99) {
+ LOG(ERROR) << "Invalid priority for " << policy << " policy: " << priority;
+ return false;
+ }
+ } break;
+ default: {
+ LOG(ERROR) << "Invalid scheduler policy " << policy;
+ return false;
+ }
}
// Due to ABI considerations, IBase cannot have a destructor to clean this up.