Merge branch 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / isdn / gigaset / common.c
index aacedec..9d3ce77 100644 (file)
@@ -287,7 +287,7 @@ struct event_t *gigaset_add_event(struct cardstate *cs,
        tail = cs->ev_tail;
        next = (tail + 1) % MAX_EVENTS;
        if (unlikely(next == cs->ev_head))
-               err("event queue full");
+               dev_err(cs->dev, "event queue full\n");
        else {
                event = cs->events + tail;
                event->type = type;
@@ -637,7 +637,6 @@ struct cardstate *gigaset_initcs(struct gigaset_driver *drv, int channels,
                err("maximum number of devices exceeded");
                return NULL;
        }
-       mutex_init(&cs->mutex);
 
        gig_dbg(DEBUG_INIT, "allocating bcs[0..%d]", channels - 1);
        cs->bcs = kmalloc(channels * sizeof(struct bc_state), GFP_KERNEL);
@@ -898,8 +897,10 @@ int gigaset_shutdown(struct cardstate *cs)
 {
        mutex_lock(&cs->mutex);
 
-       if (!(cs->flags & VALID_MINOR))
+       if (!(cs->flags & VALID_MINOR)) {
+               mutex_unlock(&cs->mutex);
                return -1;
+       }
 
        cs->waiting = 1;
 
@@ -1086,6 +1087,7 @@ struct gigaset_driver *gigaset_initdriver(unsigned minor, unsigned minors,
                drv->cs[i].driver = drv;
                drv->cs[i].ops = drv->ops;
                drv->cs[i].minor_index = i;
+               mutex_init(&drv->cs[i].mutex);
        }
 
        gigaset_if_initdriver(drv, procname, devname);