Re: [PATCH] Fix CPU bitmask truncation

From: William Lee Irwin III (wli@holomorphy.com)
Date: Fri Dec 20 2002 - 05:30:28 EST


On Mon, Dec 16, 2002 at 12:13:29PM -0700, Bjorn Helgaas wrote:
> This patch fixes some obviously incorrect bitmask truncations in 2.4.20.

Linus, this is the 2.5.x version of the same patch originally by Bjorn
for 2.4.x. This fixes an entire class of critical 64-bit bugs.

Against 2.5.52-bk as of 2:25AM 20 Dec 2002. Please apply.

Thanks,
Bill

Fix task->cpus_allowed bitmask truncations. Originally due to
Bjorn Helgaas for 2.4.x.

 include/linux/init_task.h | 2 +-
 kernel/module.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

===== include/linux/init_task.h 1.19 vs edited =====
--- 1.19/include/linux/init_task.h Sun Sep 29 07:02:55 2002
+++ edited/include/linux/init_task.h Fri Dec 20 02:22:04 2002
@@ -63,7 +63,7 @@
         .prio = MAX_PRIO-20, \
         .static_prio = MAX_PRIO-20, \
         .policy = SCHED_NORMAL, \
- .cpus_allowed = -1, \
+ .cpus_allowed = ~0UL, \
         .mm = NULL, \
         .active_mm = &init_mm, \
         .run_list = LIST_HEAD_INIT(tsk.run_list), \
===== kernel/module.c 1.31 vs edited =====
--- 1.31/kernel/module.c Sun Dec 1 22:44:11 2002
+++ edited/kernel/module.c Fri Dec 20 02:19:53 2002
@@ -210,7 +210,7 @@
         struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 };
         setscheduler(current->pid, SCHED_FIFO, &param);
 #endif
- set_cpus_allowed(current, 1 << (unsigned long)cpu);
+ set_cpus_allowed(current, 1UL << (unsigned long)cpu);
 
         /* Ack: we are alive */
         atomic_inc(&stopref_thread_ack);
@@ -271,7 +271,7 @@
 
         /* FIXME: racy with set_cpus_allowed. */
         old_allowed = current->cpus_allowed;
- set_cpus_allowed(current, 1 << (unsigned long)cpu);
+ set_cpus_allowed(current, 1UL << (unsigned long)cpu);
 
         atomic_set(&stopref_thread_ack, 0);
         stopref_num_threads = 0;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Dec 23 2002 - 22:00:26 EST