}
- sock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ sock = palacios_alloc(sizeof(struct palacios_socket));
+
+ if (!sock) {
+ ERROR("Cannot allocate TCP socket\n");
+ return NULL;
+ }
+
memset(sock, 0, sizeof(struct palacios_socket));
err = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &(sock->sock));
if (err < 0) {
- kfree(sock);
+ ERROR("Cannot create TCP socket\n");
+ palacios_free(sock);
return NULL;
}
}
- sock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ sock = palacios_alloc(sizeof(struct palacios_socket));
+ if (!sock) {
+ ERROR("Cannot allocate UDP socket\n");
+ return NULL;
+ }
+
memset(sock, 0, sizeof(struct palacios_socket));
err = sock_create(AF_INET, SOCK_DGRAM, IPPROTO_UDP, &(sock->sock)) ;
if (err < 0){
- kfree(sock);
+ ERROR("Cannot create UDP socket\n");
+ palacios_free(sock);
return NULL;
}
sock->sock->ops->release(sock->sock);
list_del(&(sock->sock_node));
- kfree(sock);
+ palacios_free(sock);
}
}
}
- newsock = kmalloc(sizeof(struct palacios_socket), GFP_KERNEL);
+ newsock = palacios_alloc(sizeof(struct palacios_socket));
+
+ if (!newsock) {
+ ERROR("Cannot allocate new socket on accept\n");
+ return NULL;
+ }
err = sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &(newsock->sock));
if (err < 0) {
- kfree(newsock);
+ ERROR("Cannot create new socket on accept\n");
+ palacios_free(newsock);
return NULL;
}
err = newsock->sock->ops->accept(sock->sock, newsock->sock, 0);
if (err < 0){
- kfree(newsock);
+ ERROR("Cannot accept\n");
+ palacios_free(newsock);
return NULL;
}
{
struct palacios_socket * sock = (struct palacios_socket *)sock_ptr;
struct sockaddr_in src;
- int alen;
struct msghdr msg;
mm_segment_t oldfs;
struct iovec iov;
src.sin_family = AF_INET;
src.sin_port = htons(port);
src.sin_addr.s_addr = htonl(ip_addr);
- alen = sizeof(src);
msg.msg_flags = 0;