Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 235017
b: refs/heads/master
c: ca41bb3
h: refs/heads/master
i:
  235015: cc6e369
v: v3
  • Loading branch information
Venkateswararao Jujjuri (JV) authored and Eric Van Hensbergen committed Mar 15, 2011
1 parent 213c690 commit 396c062
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 24 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2c66523fd290edeea26cbe8cedd0af167d0f7e5f
refs/heads/master: ca41bb3e21d7b3cb2079e225e3a7e62e6c776518
64 changes: 41 additions & 23 deletions trunk/net/9p/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -443,43 +443,61 @@ static int p9_check_errors(struct p9_client *c, struct p9_req_t *req)
{
int8_t type;
int err;
int ecode;

err = p9_parse_header(req->rc, NULL, &type, NULL, 0);
if (err) {
P9_DPRINTK(P9_DEBUG_ERROR, "couldn't parse header %d\n", err);
return err;
}

if (type == P9_RERROR || type == P9_RLERROR) {
int ecode;

if (!p9_is_proto_dotl(c)) {
char *ename;
if (type != P9_RERROR && type != P9_RLERROR)
return 0;

err = p9pdu_readf(req->rc, c->proto_version, "s?d",
&ename, &ecode);
if (err)
goto out_err;
if (!p9_is_proto_dotl(c)) {
char *ename;

if (req->tc->pbuf_size) {
/* Handle user buffers */
size_t len = req->rc->size - req->rc->offset;
if (req->tc->pubuf) {
/* User Buffer */
err = copy_from_user(
&req->rc->sdata[req->rc->offset],
req->tc->pubuf, len);
if (err) {
err = -EFAULT;
goto out_err;
}
} else {
/* Kernel Buffer */
memmove(&req->rc->sdata[req->rc->offset],
req->tc->pkbuf, len);
}
}
err = p9pdu_readf(req->rc, c->proto_version, "s?d",
&ename, &ecode);
if (err)
goto out_err;

if (p9_is_proto_dotu(c))
err = -ecode;
if (p9_is_proto_dotu(c))
err = -ecode;

if (!err || !IS_ERR_VALUE(err)) {
err = p9_errstr2errno(ename, strlen(ename));
if (!err || !IS_ERR_VALUE(err)) {
err = p9_errstr2errno(ename, strlen(ename));

P9_DPRINTK(P9_DEBUG_9P, "<<< RERROR (%d) %s\n", -ecode, ename);
P9_DPRINTK(P9_DEBUG_9P, "<<< RERROR (%d) %s\n", -ecode,
ename);

kfree(ename);
}
} else {
err = p9pdu_readf(req->rc, c->proto_version, "d", &ecode);
err = -ecode;

P9_DPRINTK(P9_DEBUG_9P, "<<< RLERROR (%d)\n", -ecode);
kfree(ename);
}
} else {
err = p9pdu_readf(req->rc, c->proto_version, "d", &ecode);
err = -ecode;

P9_DPRINTK(P9_DEBUG_9P, "<<< RLERROR (%d)\n", -ecode);
}

} else
err = 0;

return err;

Expand Down

0 comments on commit 396c062

Please sign in to comment.