diff options
Diffstat (limited to 'net/9p/conv.c')
-rw-r--r-- | net/9p/conv.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/net/9p/conv.c b/net/9p/conv.c index d979d958ea19..aa2aa9884f95 100644 --- a/net/9p/conv.c +++ b/net/9p/conv.c | |||
@@ -547,7 +547,8 @@ error: | |||
547 | } | 547 | } |
548 | EXPORT_SYMBOL(p9_create_tversion); | 548 | EXPORT_SYMBOL(p9_create_tversion); |
549 | 549 | ||
550 | struct p9_fcall *p9_create_tauth(u32 afid, char *uname, char *aname) | 550 | struct p9_fcall *p9_create_tauth(u32 afid, char *uname, char *aname, |
551 | u32 n_uname, int dotu) | ||
551 | { | 552 | { |
552 | int size; | 553 | int size; |
553 | struct p9_fcall *fc; | 554 | struct p9_fcall *fc; |
@@ -555,7 +556,16 @@ struct p9_fcall *p9_create_tauth(u32 afid, char *uname, char *aname) | |||
555 | struct cbuf *bufp = &buffer; | 556 | struct cbuf *bufp = &buffer; |
556 | 557 | ||
557 | /* afid[4] uname[s] aname[s] */ | 558 | /* afid[4] uname[s] aname[s] */ |
558 | size = 4 + 2 + strlen(uname) + 2 + strlen(aname); | 559 | size = 4 + 2 + 2; |
560 | if (uname) | ||
561 | size += strlen(uname); | ||
562 | |||
563 | if (aname) | ||
564 | size += strlen(aname); | ||
565 | |||
566 | if (dotu) | ||
567 | size += 4; /* n_uname */ | ||
568 | |||
559 | fc = p9_create_common(bufp, size, P9_TAUTH); | 569 | fc = p9_create_common(bufp, size, P9_TAUTH); |
560 | if (IS_ERR(fc)) | 570 | if (IS_ERR(fc)) |
561 | goto error; | 571 | goto error; |
@@ -563,6 +573,8 @@ struct p9_fcall *p9_create_tauth(u32 afid, char *uname, char *aname) | |||
563 | p9_put_int32(bufp, afid, &fc->params.tauth.afid); | 573 | p9_put_int32(bufp, afid, &fc->params.tauth.afid); |
564 | p9_put_str(bufp, uname, &fc->params.tauth.uname); | 574 | p9_put_str(bufp, uname, &fc->params.tauth.uname); |
565 | p9_put_str(bufp, aname, &fc->params.tauth.aname); | 575 | p9_put_str(bufp, aname, &fc->params.tauth.aname); |
576 | if (dotu) | ||
577 | p9_put_int32(bufp, n_uname, &fc->params.tauth.n_uname); | ||
566 | 578 | ||
567 | if (buf_check_overflow(bufp)) { | 579 | if (buf_check_overflow(bufp)) { |
568 | kfree(fc); | 580 | kfree(fc); |
@@ -574,7 +586,8 @@ error: | |||
574 | EXPORT_SYMBOL(p9_create_tauth); | 586 | EXPORT_SYMBOL(p9_create_tauth); |
575 | 587 | ||
576 | struct p9_fcall * | 588 | struct p9_fcall * |
577 | p9_create_tattach(u32 fid, u32 afid, char *uname, char *aname) | 589 | p9_create_tattach(u32 fid, u32 afid, char *uname, char *aname, |
590 | u32 n_uname, int dotu) | ||
578 | { | 591 | { |
579 | int size; | 592 | int size; |
580 | struct p9_fcall *fc; | 593 | struct p9_fcall *fc; |
@@ -582,7 +595,16 @@ p9_create_tattach(u32 fid, u32 afid, char *uname, char *aname) | |||
582 | struct cbuf *bufp = &buffer; | 595 | struct cbuf *bufp = &buffer; |
583 | 596 | ||
584 | /* fid[4] afid[4] uname[s] aname[s] */ | 597 | /* fid[4] afid[4] uname[s] aname[s] */ |
585 | size = 4 + 4 + 2 + strlen(uname) + 2 + strlen(aname); | 598 | size = 4 + 4 + 2 + 2; |
599 | if (uname) | ||
600 | size += strlen(uname); | ||
601 | |||
602 | if (aname) | ||
603 | size += strlen(aname); | ||
604 | |||
605 | if (dotu) | ||
606 | size += 4; /* n_uname */ | ||
607 | |||
586 | fc = p9_create_common(bufp, size, P9_TATTACH); | 608 | fc = p9_create_common(bufp, size, P9_TATTACH); |
587 | if (IS_ERR(fc)) | 609 | if (IS_ERR(fc)) |
588 | goto error; | 610 | goto error; |
@@ -591,6 +613,8 @@ p9_create_tattach(u32 fid, u32 afid, char *uname, char *aname) | |||
591 | p9_put_int32(bufp, afid, &fc->params.tattach.afid); | 613 | p9_put_int32(bufp, afid, &fc->params.tattach.afid); |
592 | p9_put_str(bufp, uname, &fc->params.tattach.uname); | 614 | p9_put_str(bufp, uname, &fc->params.tattach.uname); |
593 | p9_put_str(bufp, aname, &fc->params.tattach.aname); | 615 | p9_put_str(bufp, aname, &fc->params.tattach.aname); |
616 | if (dotu) | ||
617 | p9_put_int32(bufp, n_uname, &fc->params.tattach.n_uname); | ||
594 | 618 | ||
595 | error: | 619 | error: |
596 | return fc; | 620 | return fc; |