diff options
-rw-r--r-- | net/9p/trans_fd.c | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/net/9p/trans_fd.c b/net/9p/trans_fd.c index ee0d151da31a..6c88e8983750 100644 --- a/net/9p/trans_fd.c +++ b/net/9p/trans_fd.c | |||
@@ -407,11 +407,11 @@ static void p9_mux_poll_stop(struct p9_conn *m) | |||
407 | static struct p9_conn *p9_conn_create(struct p9_trans *trans) | 407 | static struct p9_conn *p9_conn_create(struct p9_trans *trans) |
408 | { | 408 | { |
409 | int i, n; | 409 | int i, n; |
410 | struct p9_conn *m, *mtmp; | 410 | struct p9_conn *m; |
411 | 411 | ||
412 | P9_DPRINTK(P9_DEBUG_MUX, "transport %p msize %d\n", trans, | 412 | P9_DPRINTK(P9_DEBUG_MUX, "transport %p msize %d\n", trans, |
413 | trans->msize); | 413 | trans->msize); |
414 | m = kmalloc(sizeof(struct p9_conn), GFP_KERNEL); | 414 | m = kzalloc(sizeof(struct p9_conn), GFP_KERNEL); |
415 | if (!m) | 415 | if (!m) |
416 | return ERR_PTR(-ENOMEM); | 416 | return ERR_PTR(-ENOMEM); |
417 | 417 | ||
@@ -422,24 +422,14 @@ static struct p9_conn *p9_conn_create(struct p9_trans *trans) | |||
422 | m->trans = trans; | 422 | m->trans = trans; |
423 | m->tagpool = p9_idpool_create(); | 423 | m->tagpool = p9_idpool_create(); |
424 | if (IS_ERR(m->tagpool)) { | 424 | if (IS_ERR(m->tagpool)) { |
425 | mtmp = ERR_PTR(-ENOMEM); | ||
426 | kfree(m); | 425 | kfree(m); |
427 | return mtmp; | 426 | return ERR_PTR(-ENOMEM); |
428 | } | 427 | } |
429 | 428 | ||
430 | m->err = 0; | ||
431 | INIT_LIST_HEAD(&m->req_list); | 429 | INIT_LIST_HEAD(&m->req_list); |
432 | INIT_LIST_HEAD(&m->unsent_req_list); | 430 | INIT_LIST_HEAD(&m->unsent_req_list); |
433 | m->rcall = NULL; | ||
434 | m->rpos = 0; | ||
435 | m->rbuf = NULL; | ||
436 | m->wpos = m->wsize = 0; | ||
437 | m->wbuf = NULL; | ||
438 | INIT_WORK(&m->rq, p9_read_work); | 431 | INIT_WORK(&m->rq, p9_read_work); |
439 | INIT_WORK(&m->wq, p9_write_work); | 432 | INIT_WORK(&m->wq, p9_write_work); |
440 | m->wsched = 0; | ||
441 | memset(&m->poll_waddr, 0, sizeof(m->poll_waddr)); | ||
442 | m->poll_task = NULL; | ||
443 | n = p9_mux_poll_start(m); | 433 | n = p9_mux_poll_start(m); |
444 | if (n) { | 434 | if (n) { |
445 | kfree(m); | 435 | kfree(m); |
@@ -460,10 +450,8 @@ static struct p9_conn *p9_conn_create(struct p9_trans *trans) | |||
460 | for (i = 0; i < ARRAY_SIZE(m->poll_waddr); i++) { | 450 | for (i = 0; i < ARRAY_SIZE(m->poll_waddr); i++) { |
461 | if (IS_ERR(m->poll_waddr[i])) { | 451 | if (IS_ERR(m->poll_waddr[i])) { |
462 | p9_mux_poll_stop(m); | 452 | p9_mux_poll_stop(m); |
463 | mtmp = (void *)m->poll_waddr; /* the error code */ | ||
464 | kfree(m); | 453 | kfree(m); |
465 | m = mtmp; | 454 | return (void *)m->poll_waddr; /* the error code */ |
466 | break; | ||
467 | } | 455 | } |
468 | } | 456 | } |
469 | 457 | ||