summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/auditsc.c2
-rw-r--r--kernel/printk/printk.c2
-rw-r--r--kernel/sched/fair.c13
3 files changed, 13 insertions, 4 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 2b9a4739381d..e0a4d971dd64 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -1093,7 +1093,7 @@ static void audit_log_execve_info(struct audit_context *context,
}
/* write as much as we can to the audit log */
- if (len_buf > 0) {
+ if (len_buf >= 0) {
/* NOTE: some magic numbers here - basically if we
* can't fit a reasonable amount of data into the
* existing audit buffer, flush it and start with
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 5c8eca7c1edd..8c48fe4b4972 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -941,7 +941,7 @@ void __init setup_log_buf(int early)
{
unsigned long flags;
char *new_log_buf;
- int free;
+ unsigned int free;
if (log_buf != __log_buf)
return;
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index d9d723486759..f3a36f96b65c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -9298,13 +9298,22 @@ out_all_pinned:
sd->nr_balance_failed = 0;
out_one_pinned:
+ ld_moved = 0;
+
+ /*
+ * idle_balance() disregards balance intervals, so we could repeatedly
+ * reach this code, which would lead to balance_interval skyrocketting
+ * in a short amount of time. Skip the balance_interval increase logic
+ * to avoid that.
+ */
+ if (env.idle == CPU_NEWLY_IDLE)
+ goto out;
+
/* tune up the balancing interval */
if (((env.flags & LBF_ALL_PINNED) &&
sd->balance_interval < MAX_PINNED_INTERVAL) ||
(sd->balance_interval < sd->max_interval))
sd->balance_interval *= 2;
-
- ld_moved = 0;
out:
return ld_moved;
}