pvcalls-front: properly allocate sk
Don't use kzalloc: it ends up leaving sk->sk_prot not properly initialized. Use sk_alloc instead and define our own trivial struct proto. Signed-off-by: Stefano Stabellini <stefanos@xilinx.com> Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com> Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
This commit is contained in:
parent
96283f9a08
commit
beee1fbe8f
|
@ -31,6 +31,12 @@
|
|||
#define PVCALLS_NR_RSP_PER_RING __CONST_RING_SIZE(xen_pvcalls, XEN_PAGE_SIZE)
|
||||
#define PVCALLS_FRONT_MAX_SPIN 5000
|
||||
|
||||
static struct proto pvcalls_proto = {
|
||||
.name = "PVCalls",
|
||||
.owner = THIS_MODULE,
|
||||
.obj_size = sizeof(struct sock),
|
||||
};
|
||||
|
||||
struct pvcalls_bedata {
|
||||
struct xen_pvcalls_front_ring ring;
|
||||
grant_ref_t ref;
|
||||
|
@ -837,7 +843,7 @@ int pvcalls_front_accept(struct socket *sock, struct socket *newsock, int flags)
|
|||
|
||||
received:
|
||||
map2->sock = newsock;
|
||||
newsock->sk = kzalloc(sizeof(*newsock->sk), GFP_KERNEL);
|
||||
newsock->sk = sk_alloc(sock_net(sock->sk), PF_INET, GFP_KERNEL, &pvcalls_proto, false);
|
||||
if (!newsock->sk) {
|
||||
bedata->rsp[req_id].req_id = PVCALLS_INVALID_ID;
|
||||
map->passive.inflight_req_id = PVCALLS_INVALID_ID;
|
||||
|
|
Loading…
Reference in New Issue