Messages in this thread | | | Date | Thu, 21 Dec 2006 22:22:02 +0100 | From | Heiko Carstens <> | Subject | Re: [PATCH] ehca: fix kthread_create() error check |
| |
> Index: 2.6-mm/drivers/infiniband/hw/ehca/ehca_irq.c > =================================================================== > --- 2.6-mm.orig/drivers/infiniband/hw/ehca/ehca_irq.c > +++ 2.6-mm/drivers/infiniband/hw/ehca/ehca_irq.c > @@ -670,11 +670,13 @@ static int comp_pool_callback(struct not > { > unsigned int cpu = (unsigned long)hcpu; > struct ehca_cpu_comp_task *cct; > + struct task_struct *task; > > switch (action) { > case CPU_UP_PREPARE: > ehca_gen_dbg("CPU: %x (CPU_PREPARE)", cpu); > - if(!create_comp_task(pool, cpu)) { > + task = create_comp_task(pool, cpu); > + if (IS_ERR(task)) { > ehca_gen_err("Can't create comp_task for cpu: %x", cpu); > return NOTIFY_BAD; > }
If this fails then the code will crash on CPU_UP_CANCELED. Because of kthread_bind(cct->task,...). cct->task would be just the encoded error number.
> @@ -730,7 +732,7 @@ int ehca_create_comp_pool(void) > > for_each_online_cpu(cpu) { > task = create_comp_task(pool, cpu); > - if (task) { > + if (!IS_ERR(task)) { > kthread_bind(task, cpu); > wake_up_process(task); > }
So you silently ignore errors and the module loads anyway? - 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/
| |