X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fconnector%2Fcn_queue.c;h=b6fe7e7a2c2fd71e6818a850fd6b8adbfd613bf5;hb=f7160c7573615ec82c691e294cf80d920b5d588d;hp=296f51002b555a4398d0450f92d1c1392d61d70a;hpb=4604096768d3be37ee1a05aee424aceed3e1b56f;p=linux-2.6-omap-h63xx.git diff --git a/drivers/connector/cn_queue.c b/drivers/connector/cn_queue.c index 296f51002b5..b6fe7e7a2c2 100644 --- a/drivers/connector/cn_queue.c +++ b/drivers/connector/cn_queue.c @@ -99,12 +99,11 @@ int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id spin_unlock_bh(&dev->queue_lock); if (found) { - atomic_dec(&dev->refcnt); cn_queue_free_callback(cbq); + atomic_dec(&dev->refcnt); return -EINVAL; } - cbq->nls = dev->nls; cbq->seq = 0; cbq->group = cbq->id.id.idx; @@ -146,9 +145,8 @@ struct cn_queue_dev *cn_queue_alloc_dev(char *name, struct sock *nls) spin_lock_init(&dev->queue_lock); dev->nls = nls; - dev->netlink_groups = 0; - dev->cn_queue = create_workqueue(dev->name); + dev->cn_queue = create_singlethread_workqueue(dev->name); if (!dev->cn_queue) { kfree(dev); return NULL;