mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org,
	stable-review@kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk,
	"Peter Zijlstra" <a.p.zijlstra@chello.nl>,
	"Ingo Molnar" <mingo@elte.hu>, "Mike Galbraith" <efault@gmx.de>,
	"Holger Hoffstätte" <holger.hoffstaette@googlemail.com>,
	"Greg Kroah-Hartman" <gregkh@suse.de>
Subject: [PATCH 71/97] sched: Fix balance vs hotplug race
Date: Mon,  4 Jan 2010 16:33:24 -0800	[thread overview]
Message-ID: <1262651630-7354-71-git-send-email-gregkh@suse.de> (raw)
In-Reply-To: <20100105003133.GA7199@kroah.com>

From: Peter Zijlstra <a.p.zijlstra@chello.nl>

commit 6ad4c18884e864cf4c77f9074d3d1816063f99cd upstream.

Since (e761b77: cpu hotplug, sched: Introduce cpu_active_map and redo
sched domain managment) we have cpu_active_mask which is suppose to rule
scheduler migration and load-balancing, except it never (fully) did.

The particular problem being solved here is a crash in try_to_wake_up()
where select_task_rq() ends up selecting an offline cpu because
select_task_rq_fair() trusts the sched_domain tree to reflect the
current state of affairs, similarly select_task_rq_rt() trusts the
root_domain.

However, the sched_domains are updated from CPU_DEAD, which is after the
cpu is taken offline and after stop_machine is done. Therefore it can
race perfectly well with code assuming the domains are right.

Cure this by building the domains from cpu_active_mask on
CPU_DOWN_PREPARE.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Holger Hoffstätte <holger.hoffstaette@googlemail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 include/linux/cpumask.h |    2 ++
 kernel/cpu.c            |   18 +++++++++++++-----
 kernel/cpuset.c         |   16 +++++++++-------
 kernel/sched.c          |   32 +++++++++++++++++---------------
 4 files changed, 41 insertions(+), 27 deletions(-)

diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 789cf5f..d77b547 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -84,6 +84,7 @@ extern const struct cpumask *const cpu_active_mask;
 #define num_online_cpus()	cpumask_weight(cpu_online_mask)
 #define num_possible_cpus()	cpumask_weight(cpu_possible_mask)
 #define num_present_cpus()	cpumask_weight(cpu_present_mask)
+#define num_active_cpus()	cpumask_weight(cpu_active_mask)
 #define cpu_online(cpu)		cpumask_test_cpu((cpu), cpu_online_mask)
 #define cpu_possible(cpu)	cpumask_test_cpu((cpu), cpu_possible_mask)
 #define cpu_present(cpu)	cpumask_test_cpu((cpu), cpu_present_mask)
@@ -92,6 +93,7 @@ extern const struct cpumask *const cpu_active_mask;
 #define num_online_cpus()	1
 #define num_possible_cpus()	1
 #define num_present_cpus()	1
+#define num_active_cpus()	1
 #define cpu_online(cpu)		((cpu) == 0)
 #define cpu_possible(cpu)	((cpu) == 0)
 #define cpu_present(cpu)	((cpu) == 0)
diff --git a/kernel/cpu.c b/kernel/cpu.c
index 6ba0f1e..b216886 100644
--- a/kernel/cpu.c
+++ b/kernel/cpu.c
@@ -212,6 +212,8 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
 	err = __raw_notifier_call_chain(&cpu_chain, CPU_DOWN_PREPARE | mod,
 					hcpu, -1, &nr_calls);
 	if (err == NOTIFY_BAD) {
+		set_cpu_active(cpu, true);
+
 		nr_calls--;
 		__raw_notifier_call_chain(&cpu_chain, CPU_DOWN_FAILED | mod,
 					  hcpu, nr_calls, NULL);
@@ -223,11 +225,11 @@ static int __ref _cpu_down(unsigned int cpu, int tasks_frozen)
 
 	/* Ensure that we are not runnable on dying cpu */
 	cpumask_copy(old_allowed, &current->cpus_allowed);
-	set_cpus_allowed_ptr(current,
-			     cpumask_of(cpumask_any_but(cpu_online_mask, cpu)));
+	set_cpus_allowed_ptr(current, cpu_active_mask);
 
 	err = __stop_machine(take_cpu_down, &tcd_param, cpumask_of(cpu));
 	if (err) {
+		set_cpu_active(cpu, true);
 		/* CPU didn't die: tell everyone.  Can't complain. */
 		if (raw_notifier_call_chain(&cpu_chain, CPU_DOWN_FAILED | mod,
 					    hcpu) == NOTIFY_BAD)
@@ -292,9 +294,6 @@ int __ref cpu_down(unsigned int cpu)
 
 	err = _cpu_down(cpu, 0);
 
-	if (cpu_online(cpu))
-		set_cpu_active(cpu, true);
-
 out:
 	cpu_maps_update_done();
 	stop_machine_destroy();
@@ -387,6 +386,15 @@ int disable_nonboot_cpus(void)
 	 * with the userspace trying to use the CPU hotplug at the same time
 	 */
 	cpumask_clear(frozen_cpus);
+
+	for_each_online_cpu(cpu) {
+		if (cpu == first_cpu)
+			continue;
+		set_cpu_active(cpu, false);
+	}
+
+	synchronize_sched();
+
 	printk("Disabling non-boot CPUs ...\n");
 	for_each_online_cpu(cpu) {
 		if (cpu == first_cpu)
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index b5cb469..39e5121 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -873,7 +873,7 @@ static int update_cpumask(struct cpuset *cs, struct cpuset *trialcs,
 		if (retval < 0)
 			return retval;
 
-		if (!cpumask_subset(trialcs->cpus_allowed, cpu_online_mask))
+		if (!cpumask_subset(trialcs->cpus_allowed, cpu_active_mask))
 			return -EINVAL;
 	}
 	retval = validate_change(cs, trialcs);
@@ -2011,7 +2011,7 @@ static void scan_for_empty_cpusets(struct cpuset *root)
 		}
 
 		/* Continue past cpusets with all cpus, mems online */
-		if (cpumask_subset(cp->cpus_allowed, cpu_online_mask) &&
+		if (cpumask_subset(cp->cpus_allowed, cpu_active_mask) &&
 		    nodes_subset(cp->mems_allowed, node_states[N_HIGH_MEMORY]))
 			continue;
 
@@ -2020,7 +2020,7 @@ static void scan_for_empty_cpusets(struct cpuset *root)
 		/* Remove offline cpus and mems from this cpuset. */
 		mutex_lock(&callback_mutex);
 		cpumask_and(cp->cpus_allowed, cp->cpus_allowed,
-			    cpu_online_mask);
+			    cpu_active_mask);
 		nodes_and(cp->mems_allowed, cp->mems_allowed,
 						node_states[N_HIGH_MEMORY]);
 		mutex_unlock(&callback_mutex);
@@ -2058,8 +2058,10 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb,
 	switch (phase) {
 	case CPU_ONLINE:
 	case CPU_ONLINE_FROZEN:
-	case CPU_DEAD:
-	case CPU_DEAD_FROZEN:
+	case CPU_DOWN_PREPARE:
+	case CPU_DOWN_PREPARE_FROZEN:
+	case CPU_DOWN_FAILED:
+	case CPU_DOWN_FAILED_FROZEN:
 		break;
 
 	default:
@@ -2068,7 +2070,7 @@ static int cpuset_track_online_cpus(struct notifier_block *unused_nb,
 
 	cgroup_lock();
 	mutex_lock(&callback_mutex);
-	cpumask_copy(top_cpuset.cpus_allowed, cpu_online_mask);
+	cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask);
 	mutex_unlock(&callback_mutex);
 	scan_for_empty_cpusets(&top_cpuset);
 	ndoms = generate_sched_domains(&doms, &attr);
@@ -2115,7 +2117,7 @@ static int cpuset_track_online_nodes(struct notifier_block *self,
 
 void __init cpuset_init_smp(void)
 {
-	cpumask_copy(top_cpuset.cpus_allowed, cpu_online_mask);
+	cpumask_copy(top_cpuset.cpus_allowed, cpu_active_mask);
 	top_cpuset.mems_allowed = node_states[N_HIGH_MEMORY];
 
 	hotcpu_notifier(cpuset_track_online_cpus, 0);
diff --git a/kernel/sched.c b/kernel/sched.c
index 2797859..04144db 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -4139,7 +4139,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
 	unsigned long flags;
 	struct cpumask *cpus = __get_cpu_var(load_balance_tmpmask);
 
-	cpumask_copy(cpus, cpu_online_mask);
+	cpumask_copy(cpus, cpu_active_mask);
 
 	/*
 	 * When power savings policy is enabled for the parent domain, idle
@@ -4302,7 +4302,7 @@ load_balance_newidle(int this_cpu, struct rq *this_rq, struct sched_domain *sd)
 	int all_pinned = 0;
 	struct cpumask *cpus = __get_cpu_var(load_balance_tmpmask);
 
-	cpumask_copy(cpus, cpu_online_mask);
+	cpumask_copy(cpus, cpu_active_mask);
 
 	/*
 	 * When power savings policy is enabled for the parent domain, idle
@@ -4699,7 +4699,7 @@ int select_nohz_load_balancer(int stop_tick)
 		cpumask_set_cpu(cpu, nohz.cpu_mask);
 
 		/* time for ilb owner also to sleep */
-		if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) {
+		if (cpumask_weight(nohz.cpu_mask) == num_active_cpus()) {
 			if (atomic_read(&nohz.load_balancer) == cpu)
 				atomic_set(&nohz.load_balancer, -1);
 			return 0;
@@ -7075,7 +7075,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
 	int ret = 0;
 
 	rq = task_rq_lock(p, &flags);
-	if (!cpumask_intersects(new_mask, cpu_online_mask)) {
+	if (!cpumask_intersects(new_mask, cpu_active_mask)) {
 		ret = -EINVAL;
 		goto out;
 	}
@@ -7097,7 +7097,7 @@ int set_cpus_allowed_ptr(struct task_struct *p, const struct cpumask *new_mask)
 	if (cpumask_test_cpu(task_cpu(p), new_mask))
 		goto out;
 
-	if (migrate_task(p, cpumask_any_and(cpu_online_mask, new_mask), &req)) {
+	if (migrate_task(p, cpumask_any_and(cpu_active_mask, new_mask), &req)) {
 		/* Need help from migration thread: drop lock and wait. */
 		struct task_struct *mt = rq->migration_thread;
 
@@ -7251,19 +7251,19 @@ static void move_task_off_dead_cpu(int dead_cpu, struct task_struct *p)
 
 again:
 	/* Look for allowed, online CPU in same node. */
-	for_each_cpu_and(dest_cpu, nodemask, cpu_online_mask)
+	for_each_cpu_and(dest_cpu, nodemask, cpu_active_mask)
 		if (cpumask_test_cpu(dest_cpu, &p->cpus_allowed))
 			goto move;
 
 	/* Any allowed, online CPU? */
-	dest_cpu = cpumask_any_and(&p->cpus_allowed, cpu_online_mask);
+	dest_cpu = cpumask_any_and(&p->cpus_allowed, cpu_active_mask);
 	if (dest_cpu < nr_cpu_ids)
 		goto move;
 
 	/* No more Mr. Nice Guy. */
 	if (dest_cpu >= nr_cpu_ids) {
 		cpuset_cpus_allowed_locked(p, &p->cpus_allowed);
-		dest_cpu = cpumask_any_and(cpu_online_mask, &p->cpus_allowed);
+		dest_cpu = cpumask_any_and(cpu_active_mask, &p->cpus_allowed);
 
 		/*
 		 * Don't tell them about moving exiting tasks or
@@ -7292,7 +7292,7 @@ move:
  */
 static void migrate_nr_uninterruptible(struct rq *rq_src)
 {
-	struct rq *rq_dest = cpu_rq(cpumask_any(cpu_online_mask));
+	struct rq *rq_dest = cpu_rq(cpumask_any(cpu_active_mask));
 	unsigned long flags;
 
 	local_irq_save(flags);
@@ -7546,7 +7546,7 @@ static ctl_table *sd_alloc_ctl_cpu_table(int cpu)
 static struct ctl_table_header *sd_sysctl_header;
 static void register_sched_domain_sysctl(void)
 {
-	int i, cpu_num = num_online_cpus();
+	int i, cpu_num = num_possible_cpus();
 	struct ctl_table *entry = sd_alloc_ctl_entry(cpu_num + 1);
 	char buf[32];
 
@@ -7556,7 +7556,7 @@ static void register_sched_domain_sysctl(void)
 	if (entry == NULL)
 		return;
 
-	for_each_online_cpu(i) {
+	for_each_possible_cpu(i) {
 		snprintf(buf, 32, "cpu%d", i);
 		entry->procname = kstrdup(buf, GFP_KERNEL);
 		entry->mode = 0555;
@@ -9042,7 +9042,7 @@ match1:
 	if (doms_new == NULL) {
 		ndoms_cur = 0;
 		doms_new = fallback_doms;
-		cpumask_andnot(&doms_new[0], cpu_online_mask, cpu_isolated_map);
+		cpumask_andnot(&doms_new[0], cpu_active_mask, cpu_isolated_map);
 		WARN_ON_ONCE(dattr_new);
 	}
 
@@ -9173,8 +9173,10 @@ static int update_sched_domains(struct notifier_block *nfb,
 	switch (action) {
 	case CPU_ONLINE:
 	case CPU_ONLINE_FROZEN:
-	case CPU_DEAD:
-	case CPU_DEAD_FROZEN:
+	case CPU_DOWN_PREPARE:
+	case CPU_DOWN_PREPARE_FROZEN:
+	case CPU_DOWN_FAILED:
+	case CPU_DOWN_FAILED_FROZEN:
 		partition_sched_domains(1, NULL, NULL);
 		return NOTIFY_OK;
 
@@ -9221,7 +9223,7 @@ void __init sched_init_smp(void)
 #endif
 	get_online_cpus();
 	mutex_lock(&sched_domains_mutex);
-	arch_init_sched_domains(cpu_online_mask);
+	arch_init_sched_domains(cpu_active_mask);
 	cpumask_andnot(non_isolated_cpus, cpu_possible_mask, cpu_isolated_map);
 	if (cpumask_empty(non_isolated_cpus))
 		cpumask_set_cpu(smp_processor_id(), non_isolated_cpus);
-- 
1.6.6


  parent reply	other threads:[~2010-01-05  0:42 UTC|newest]

Thread overview: 123+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-05  0:31 [00/97] 2.6.32.3 stable review Greg KH
2010-01-05  0:32 ` [PATCH 01/97] SCSI: ipr: fix EEH recovery Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 02/97] SCSI: qla2xxx: dpc thread can execute before scsi host has been added Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 03/97] SCSI: st: fix mdata->page_order handling Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 04/97] SCSI: fc class: fix fc_transport_init error handling Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 05/97] sched: Fix task_hot() test order Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 06/97] x86, cpuid: Add "volatile" to asm in native_cpuid() Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 07/97] sched: Select_task_rq_fair() must honour SD_LOAD_BALANCE Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 08/97] clockevents: Prevent clockevent_devices list corruption on cpu hotplug Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 09/97] pata_hpt3x2n: fix clock turnaround Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 10/97] pata_cmd64x: fix overclocking of UDMA0-2 modes Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 11/97] ASoC: wm8974: fix a wrong bit definition Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 12/97] sound: sgio2audio/pdaudiocf/usb-audio: initialize PCM buffer Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 13/97] ALSA: hda - Fix missing capsrc_nids for ALC88x Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 14/97] acerhdf: limit modalias matching to supported Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 15/97] ACPI: EC: Fix MSI DMI detection Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 16/97] ACPI: Use the return result of ACPI lid notifier chain correctly Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 17/97] powerpc: Handle VSX alignment faults correctly in little-endian mode Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 18/97] ASoC: Do not write to invalid registers on the wm9712 Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 19/97] drm/radeon: fix build on 64-bit with some compilers Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 20/97] USB: emi62: fix crash when trying to load EMI 6|2 firmware Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 21/97] USB: option: support hi speed for modem Haier CE100 Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 22/97] USB: Fix a bug on appledisplay.c regarding signedness Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 23/97] USB: musb: gadget_ep0: avoid SetupEnd interrupt Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 24/97] Bluetooth: Prevent ill-timed autosuspend in USB driver Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 25/97] USB: rename usb_configure_device Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 26/97] USB: fix bugs in usb_(de)authorize_device Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 27/97] drivers/net/usb: Correct code taking the size of a pointer Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 28/97] x86: SGI UV: Fix writes to led registers on remote uv hubs Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 29/97] md: Fix unfortunate interaction with evms Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 30/97] dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh' Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 31/97] dma-debug: Do not add notifier when dma debugging is disabled Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 32/97] dma-debug: Fix bug causing build warning Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 33/97] cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS referrals Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 34/97] x86/amd-iommu: Fix initialization failure panic Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 35/97] ioat3: fix p-disabled q-continuation Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 36/97] ioat2,3: put channel hardware in known state at init Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 37/97] KVM: MMU: remove prefault from invlpg handler Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 38/97] KVM: LAPIC: make sure IRR bitmap is scanned after vm load Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 39/97] Libertas: fix buffer overflow in lbs_get_essid() Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 40/97] iwmc3200wifi: fix array out-of-boundary access Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 41/97] mac80211: fix propagation of failed hardware reconfigurations Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 42/97] mac80211: fix WMM AP settings application Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 43/97] mac80211: Fix IBSS merge Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 44/97] cfg80211: fix race between deauth and assoc response Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 45/97] ath5k: fix SWI calibration interrupt storm Greg Kroah-Hartman
2010-01-05  0:32 ` [PATCH 46/97] ath9k: wake hardware for interface IBSS/AP/Mesh removal Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 47/97] ath9k: Fix TX queue draining Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 48/97] ath9k: fix missed error codes in the tx status check Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 49/97] ath9k: wake hardware during AMPDU TX actions Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 50/97] ath9k: fix suspend by waking device prior to stop Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 51/97] ath9k_hw: Fix possible OOB array indexing in gen_timer_index[] on 64-bit Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 52/97] ath9k_hw: Fix AR_GPIO_INPUT_EN_VAL_BT_PRIORITY_BB and its shift value in 0x4054 Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 53/97] iwl3945: disable power save Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 54/97] iwl3945: fix panic in iwl3945 driver Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 55/97] iwlwifi: fix EEPROM/OTP reading endian annotations and a bug Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 56/97] iwlwifi: fix more eeprom endian bugs Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 57/97] iwlwifi: fix 40MHz operation setting on cards that do not allow it Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 58/97] mac80211: fix race with suspend and dynamic_ps_disable_work Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 59/97] NOMMU: Optimise away the {dac_,}mmap_min_addr tests Greg Kroah-Hartman
2010-01-07  2:03   ` Mike Frysinger
2010-01-07 17:58     ` Greg KH
2010-01-08  5:40       ` [PATCH] kernel/sysctl.c: fix stable merge error in NOMMU mmap_min_addr Mike Frysinger
2010-01-05  0:33 ` [PATCH 60/97] 'sysctl_max_map_count' should be non-negative Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 61/97] kernel/sysctl.c: fix the incomplete part of sysctl_max_map_count-should-be-non-negative.patch Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 62/97] V4L/DVB (13596): ov511.c typo: lock => unlock Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 63/97] x86/ptrace: make genregs[32]_get/set more robust Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 64/97] memcg: avoid oom-killing innocent task in case of use_hierarchy Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 65/97] e100: Fix broken cbs accounting due to missing memset Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 66/97] ipv6: reassembly: use seperate reassembly queues for conntrack and local delivery Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 67/97] netfilter: fix crashes in bridge netfilter caused by fragment jumps Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 68/97] hwmon: (sht15) Off-by-one error in array index + incorrect constants Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 69/97] b43: avoid PPC fault during resume Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 70/97] Keys: KEYCTL_SESSION_TO_PARENT needs TIF_NOTIFY_RESUME architecture support Greg Kroah-Hartman
2010-01-05  0:33 ` Greg Kroah-Hartman [this message]
2010-01-05  0:33 ` [PATCH 72/97] drm/radeon/kms: fix crtc vblank update for r600 Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 73/97] drm: disable all the possible outputs/crtcs before entering KMS mode Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 74/97] S390: dasd: support DIAG access for read-only devices Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 75/97] xen: fix is_disconnected_device/exists_disconnected_device Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 76/97] xen: improvement to wait_for_devices() Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 77/97] xen: wait up to 5 minutes for device connetion Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 78/97] orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 79/97] udf: Try harder when looking for VAT inode Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 80/97] Add unlocked version of inode_add_bytes() function Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 81/97] quota: decouple fs reserved space from quota reservation Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 82/97] ext4: Convert to generic reserved quota's space management Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 83/97] ext4: Fix potential quota deadlock Greg Kroah-Hartman
2010-01-05  0:47   ` Jan Kara
2010-01-05 18:56     ` Greg KH
2010-01-05 21:39       ` Jan Kara
2010-01-05 23:16         ` Greg KH
2010-01-06  5:20           ` tytso
2010-01-06 10:43             ` Jan Kara
2010-01-06 18:27             ` [stable] " Greg KH
2010-01-06 19:55               ` Jan Kara
2010-01-05  0:33 ` [PATCH 84/97] ext4: fix sleep inside spinlock issue with quota and dealloc (#14739) Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 85/97] x86, msr: Unify rdmsr_on_cpus/wrmsr_on_cpus Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 86/97] cpumask: use modern cpumask style in drivers/edac/amd64_edac.c Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 87/97] amd64_edac: unify MCGCTL ECC switching Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 88/97] x86, msr: Add support for non-contiguous cpumasks Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 89/97] x86, msr: msrs_alloc/free for CONFIG_SMP=n Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 90/97] amd64_edac: fix driver instance freeing Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 91/97] amd64_edac: make driver loading more robust Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 92/97] amd64_edac: fix forcing module load/unload Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 93/97] sched: Sched_rt_periodic_timer vs cpu hotplug Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 94/97] ext4: Update documentation to correct the inode_readahead_blks option name Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 95/97] lguest: fix bug in setting guest GDT entry Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 96/97] vmscan: do not evict inactive pages when skipping an active list scan Greg Kroah-Hartman
2010-01-05  0:33 ` [PATCH 97/97] Linux 2.6.32.3-rc1 Greg Kroah-Hartman
2010-01-05  1:13   ` [Stable-review] " Jake Edge
2010-01-05 14:58     ` Greg KH
2010-01-05 15:10       ` Jake Edge
2010-01-05 15:26         ` Greg KH
2010-01-05  0:55 ` [Stable-review] [00/97] 2.6.32.3 stable review Luis R. Rodriguez
2010-01-05 18:56   ` Greg KH
2010-01-05 10:26 ` Hugh Dickins
2010-01-05 18:53   ` Greg KH
2010-01-05 19:20 ` Greg KH
2010-01-05 19:21   ` [PATCH 098/101] ksm: fix mlockfreed to munlocked Greg Kroah-Hartman
2010-01-05 19:21     ` [PATCH 099/101] rt2x00: Disable powersaving for rt61pci and rt2800pci Greg Kroah-Hartman
2010-01-05 19:21       ` [PATCH 100/101] generic_permission: MAY_OPEN is not write access Greg Kroah-Hartman
2010-01-05 19:21         ` [PATCH 101/101] Linux 2.6.32.3-rc2 Greg Kroah-Hartman
2010-01-05 20:54       ` [PATCH 099/101] rt2x00: Disable powersaving for rt61pci and rt2800pci Gertjan van Wingerde

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=1262651630-7354-71-git-send-email-gregkh@suse.de \
    --to=gregkh@suse.de \
    --cc=a.p.zijlstra@chello.nl \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=efault@gmx.de \
    --cc=holger.hoffstaette@googlemail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=stable-review@kernel.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome