|
|
@@ -2145,6 +2145,14 @@ static int riocm_add_mport(struct device *dev,
|
|
|
mutex_init(&cm->rx_lock);
|
|
|
riocm_rx_fill(cm, RIOCM_RX_RING_SIZE);
|
|
|
cm->rx_wq = create_workqueue(DRV_NAME "/rxq");
|
|
|
+ if (!cm->rx_wq) {
|
|
|
+ riocm_error("failed to allocate IBMBOX_%d on %s",
|
|
|
+ cmbox, mport->name);
|
|
|
+ rio_release_outb_mbox(mport, cmbox);
|
|
|
+ kfree(cm);
|
|
|
+ return -ENOMEM;
|
|
|
+ }
|
|
|
+
|
|
|
INIT_WORK(&cm->rx_work, rio_ibmsg_handler);
|
|
|
|
|
|
cm->tx_slot = 0;
|