Messages in this thread | | | Date | Thu, 05 Oct 2006 08:58:09 -0400 | From | Jeff Garzik <> | Subject | Re: [PATCH] drivers/base: error handling fixes |
| |
Heiko Carstens wrote: >>>>> static int __cpuinit topology_cpu_callback(struct notifier_block *nfb, >>>>> @@ -112,17 +110,18 @@ static int __cpuinit topology_cpu_callba >>>>> { >>>>> unsigned int cpu = (unsigned long)hcpu; >>>>> struct sys_device *sys_dev; >>>>> + int rc = 0; >>>>> sys_dev = get_cpu_sysdev(cpu); >>>>> switch (action) { >>>>> case CPU_ONLINE: >>>>> - topology_add_dev(sys_dev); >>>>> + rc = topology_add_dev(sys_dev); >>>>> break; >>>>> case CPU_DEAD: >>>>> topology_remove_dev(sys_dev); >>>>> break; >>>>> } >>>>> - return NOTIFY_OK; >>>>> + return rc ? NOTIFY_BAD : NOTIFY_OK; >>>>> } >>>> Wouldn't that also require that _cpu_up checked the return code when >>>> doing CPU_ONLINE notification (and clean up on error)? >>> After all code that gets a CPU_ONLINE notification is not supposed to fail. >>> For allocating resources while bringing up a cpu CPU_UP_PREPARE is supposed >>> to be used. That one is allowed to fail. >> It's a bug no matter how you look at it... I just lessen the impact. :) >> >> If someone wants to provide a better fix, let's see the patch... > > If sysfs_remove_group() would also work for non-created (-existent) groups > then the patch below would work. Unfortunately that is not the case. So one > would have to remember if sysfs_create_group() was done and succeeded before > calling sysfs_remove_group()... > There must be an easier way. > > diff --git a/drivers/base/topology.c b/drivers/base/topology.c > index 3ef9d51..d0056c3 100644 > --- a/drivers/base/topology.c > +++ b/drivers/base/topology.c
ACK
- 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/
| |