if (con->othercon && and_other) {
/* Will only re-enter once. */
close_connection(con->othercon, false);
+ kmem_cache_free(con_cache, con->othercon);
+ con->othercon = NULL;
}
if (con->rx_page) {
__free_page(con->rx_page);
else {
printk("Extra connection from node %d attempted\n", nodeid);
result = -EAGAIN;
- up_write(&newcon->sock_sem);
+ mutex_unlock(&newcon->sock_mutex);
goto accept_err;
}
}
error = -ENOMEM;
con_cache = kmem_cache_create("dlm_conn", sizeof(struct connection),
__alignof__(struct connection), 0,
- NULL, NULL);
+ NULL);
if (!con_cache)
goto out;