All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Chuck Ebbert <cebbert@redhat.com>,
	Domenico Andreoli <cavokz@gmail.com>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Ingo Molnar <mingo@elte.hu>
Subject: [patch 15/29] Fix divide-by-zero in the 2.6.23 scheduler code
Date: Tue, 20 Nov 2007 10:24:25 -0800	[thread overview]
Message-ID: <20071120182425.GQ28611@kroah.com> (raw)
In-Reply-To: <20071120182248.GA28611@kroah.com>

[-- Attachment #1: fix-divide-by-zero-in-the-2.6.23-scheduler-code.patch --]
[-- Type: text/plain, Size: 2549 bytes --]


2.6.23-stable review patch.  If anyone has any objections, please let us
know.

------------------
From: Chuck Ebbert <cebbert@redhat.com>

No patch in mainline as this logic has been removed from 2.6.24 so it is
not necessary.


https://bugzilla.redhat.com/show_bug.cgi?id=340161

The problem code has been removed in 2.6.24. The below patch disables
SCHED_FEAT_PRECISE_CPU_LOAD which causes the offending code to be skipped
but does not prevent the user from enabling it.

The divide-by-zero is here in kernel/sched.c:

static void update_cpu_load(struct rq *this_rq)
{
	u64 fair_delta64, exec_delta64, idle_delta64, sample_interval64, tmp64;
	unsigned long total_load = this_rq->ls.load.weight;
	unsigned long this_load =  total_load;
	struct load_stat *ls = &this_rq->ls;
	int i, scale;

	this_rq->nr_load_updates++;
	if (unlikely(!(sysctl_sched_features & SCHED_FEAT_PRECISE_CPU_LOAD)))
		goto do_avg;

	/* Update delta_fair/delta_exec fields first */
	update_curr_load(this_rq);

	fair_delta64 = ls->delta_fair + 1;
	ls->delta_fair = 0;

	exec_delta64 = ls->delta_exec + 1;
	ls->delta_exec = 0;

	sample_interval64 = this_rq->clock - ls->load_update_last;
	ls->load_update_last = this_rq->clock;

	if ((s64)sample_interval64 < (s64)TICK_NSEC)
		sample_interval64 = TICK_NSEC;

	if (exec_delta64 > sample_interval64)
		exec_delta64 = sample_interval64;

	idle_delta64 = sample_interval64 - exec_delta64;

======>	tmp64 = div64_64(SCHED_LOAD_SCALE * exec_delta64, fair_delta64);
	tmp64 = div64_64(tmp64 * exec_delta64, sample_interval64);

	this_load = (unsigned long)tmp64;

do_avg:

	/* Update our load: */
	for (i = 0, scale = 1; i < CPU_LOAD_IDX_MAX; i++, scale += scale) {
		unsigned long old_load, new_load;

		/* scale is effectively 1 << i now, and >> i divides by scale */

		old_load = this_rq->cpu_load[i];
		new_load = this_load;

		this_rq->cpu_load[i] = (old_load*(scale-1) + new_load) >> i;
	}
}

For stable only; the code has been removed in 2.6.24.

Signed-off-by: Chuck Ebbert <cebbert@redhat.com>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 kernel/sched_fair.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -93,7 +93,7 @@ unsigned int sysctl_sched_features __rea
 		SCHED_FEAT_FAIR_SLEEPERS	*1 |
 		SCHED_FEAT_SLEEPER_AVG		*0 |
 		SCHED_FEAT_SLEEPER_LOAD_AVG	*1 |
-		SCHED_FEAT_PRECISE_CPU_LOAD	*1 |
+		SCHED_FEAT_PRECISE_CPU_LOAD	*0 |
 		SCHED_FEAT_START_DEBIT		*1 |
 		SCHED_FEAT_SKIP_INITIAL		*0;
 

-- 

  parent reply	other threads:[~2007-11-20 18:31 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20071120181733.702234406@mini.kroah.org>
2007-11-20 18:22 ` [patch 00/29] 2.6.23-stable review Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 01/29] i2c-pasemi: Fix NACK detection Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 02/29] i2c/eeprom: Recognize VGN as a valid Sony Vaio name prefix Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 03/29] i2c/eeprom: Hide Sony Vaio serial numbers Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 04/29] drivers/video/ps3fb: fix memset size error Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 05/29] oProfile: oops when profile_pc() returns ~0LU Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 06/29] raid5: fix unending write sequence Greg Kroah-Hartman
2007-11-20 18:23   ` [NFS] [patch 07/29] knfsd: fix spurious EINVAL errors on first access of new filesystem Greg Kroah-Hartman
2007-11-20 18:23   ` Greg Kroah-Hartman
2007-11-20 18:23   ` [NFS] [patch 08/29] nfsd4: recheck for secure ports in fh_verify Greg Kroah-Hartman
2007-11-20 18:23   ` Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 09/29] dmaengine: fix broken device refcounting Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 10/29] x86: disable preemption in delay_tsc() Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 11/29] reiserfs: dont drop PG_dirty when releasing sub-page-sized dirty file Greg Kroah-Hartman
2007-11-20 18:23   ` [patch 13/29] libata: sata_sis: use correct S/G table size Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 12/29] sata_sis: fix SCR read breakage Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 14/29] ACPI: VIDEO: Adjust current level to closest available one Greg Kroah-Hartman
2007-11-20 18:24   ` Greg Kroah-Hartman [this message]
2007-11-20 18:24   ` [patch 16/29] geode: Fix not inplace encryption Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 17/29] libcrc32c: keep intermediate crc state in cpu order Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 18/29] i386: avoid temporarily inconsistent pte-s Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 19/29] x86: fix off-by-one in find_next_zero_string Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 20/29] x86: mark read_crX() asm code as volatile Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 21/29] x86: NX bit handling in change_page_attr() Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 22/29] x86: return correct error code from child_rip in x86_64 entry.S Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 23/29] ntp: fix typo that makes sync_cmos_clock erratic Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 24/29] x86: fix freeze in x86_64 RTC update code in time_64.c Greg Kroah-Hartman
2007-11-20 18:24   ` [patch 25/29] softlockup watchdog fixes and cleanups Greg Kroah-Hartman
2007-11-20 18:25   ` [patch 26/29] softlockup: use cpu_clock() instead of sched_clock() Greg Kroah-Hartman
2007-11-20 18:25   ` [patch 27/29] USB: unusual_devs modification for Nikon D200 Greg Kroah-Hartman
2007-11-20 18:25   ` [patch 28/29] USB: Nikon D40X unusual_devs entry Greg Kroah-Hartman
2007-11-20 18:25   ` [patch 29/29] ipw2200: batch non-user-requested scan result notifications Greg Kroah-Hartman
2007-11-20 18:29   ` [patch 00/29] 2.6.23-stable review Greg Kroah-Hartman
2007-11-20 18:23 ` [patch 12/29] sata_sis: fix SCR read breakage Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071120182425.GQ28611@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cavokz@gmail.com \
    --cc=cebbert@redhat.com \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mkrufky@linuxtv.org \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.