css_sch_device_unregister(sch);
                return;
        }
-       spin_lock_irq(sch->lock);
-       sch_set_cdev(sch, cdev);
-       spin_unlock_irq(sch->lock);
        /* Start recognition for the new ccw device. */
        if (io_subchannel_recog(cdev, sch)) {
                spin_lock_irq(sch->lock);
        int rc;
        struct ccw_device_private *priv;
 
-       sch_set_cdev(sch, cdev);
        cdev->ccwlock = sch->lock;
 
        /* Init private data. */
 
        /* Start async. device sensing. */
        spin_lock_irq(sch->lock);
+       sch_set_cdev(sch, cdev);
        rc = ccw_device_recognition(cdev);
        spin_unlock_irq(sch->lock);
        if (rc) {