if (!list_empty(&sch->dev.children)) { 
if (klist_node_attached(&cdev->dev.knode_parent)) { 
io_subchannel_register(void *data){	struct ccw_device *cdev;	struct subchannel *sch;	int ret;	unsigned long flags;	cdev = (struct ccw_device *) data;	sch = to_subchannel(cdev->dev.parent);	if (!list_empty(&sch->dev.children)) {		bus_rescan_devices(&ccw_bus_type);		goto out;	}	/* make it known to the system */	ret = ccw_device_register(cdev);	if (ret) {		printk (KERN_WARNING "%s: could not register %s\n",			__func__, cdev->dev.bus_id);		put_device(&cdev->dev);		spin_lock_irqsave(&sch->lock, flags);		sch->dev.driver_data = NULL;		spin_unlock_irqrestore(&sch->lock, flags);		kfree (cdev->private);		kfree (cdev);		put_device(&sch->dev);		if (atomic_dec_and_test(&ccw_device_init_count))			wake_up(&ccw_device_init_wq);		return;	}	ret = subchannel_add_files(cdev->dev.parent);	if (ret)		printk(KERN_WARNING "%s: could not add attributes to %s\n",		       __func__, sch->dev.bus_id);	put_device(&cdev->dev);out:	cdev->private->flags.recog_done = 1;	put_device(&sch->dev);	wake_up(&cdev->private->wait_q);	if (atomic_dec_and_test(&ccw_device_init_count))		wake_up(&ccw_device_init_wq);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b0744bd2925a4a24865963322534107d2ad553f9/device.c/buggy/drivers/s390/cio/device.c