diff options
-rw-r--r-- | include/net/9p/client.h | 1 | ||||
-rw-r--r-- | net/9p/client.c | 1 | ||||
-rw-r--r-- | net/9p/protocol.c | 24 |
3 files changed, 14 insertions, 12 deletions
diff --git a/include/net/9p/client.h b/include/net/9p/client.h index 9fe45b3..4012e07 100644 --- a/include/net/9p/client.h +++ b/include/net/9p/client.h @@ -182,6 +182,7 @@ struct p9_fid { struct list_head dlist; /* list of all fids attached to a dentry */ }; +int p9_client_version(struct p9_client *); struct p9_client *p9_client_create(const char *dev_name, char *options); void p9_client_destroy(struct p9_client *clnt); void p9_client_disconnect(struct p9_client *clnt); diff --git a/net/9p/client.c b/net/9p/client.c index bbac2f7..67717f6 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -159,6 +159,7 @@ static struct p9_req_t *p9_tag_alloc(struct p9_client *c, u16 tag) if (!c->reqs[row]) { printk(KERN_ERR "Couldn't grow tag array\n"); + spin_unlock_irqrestore(&c->lock, flags); return ERR_PTR(-ENOMEM); } for (col = 0; col < P9_ROW_MAXTAG; col++) { diff --git a/net/9p/protocol.c b/net/9p/protocol.c index 908e79f..dcd7666 100644 --- a/net/9p/protocol.c +++ b/net/9p/protocol.c @@ -186,7 +186,7 @@ p9pdu_vreadf(struct p9_fcall *pdu, int optional, const char *fmt, va_list ap) } break; case 's':{ - char **ptr = va_arg(ap, char **); + char **sptr = va_arg(ap, char **); int16_t len; int size; @@ -196,17 +196,17 @@ p9pdu_vreadf(struct p9_fcall *pdu, int optional, const char *fmt, va_list ap) size = MAX(len, 0); - *ptr = kmalloc(size + 1, GFP_KERNEL); - if (*ptr == NULL) { + *sptr = kmalloc(size + 1, GFP_KERNEL); + if (*sptr == NULL) { errcode = -EFAULT; break; } - if (pdu_read(pdu, *ptr, size)) { + if (pdu_read(pdu, *sptr, size)) { errcode = -EFAULT; - kfree(*ptr); - *ptr = NULL; + kfree(*sptr); + *sptr = NULL; } else - (*ptr)[size] = 0; + (*sptr)[size] = 0; } break; case 'Q':{ @@ -380,13 +380,13 @@ p9pdu_vwritef(struct p9_fcall *pdu, int optional, const char *fmt, va_list ap) } break; case 's':{ - const char *ptr = va_arg(ap, const char *); + const char *sptr = va_arg(ap, const char *); int16_t len = 0; - if (ptr) - len = MIN(strlen(ptr), USHORT_MAX); + if (sptr) + len = MIN(strlen(sptr), USHORT_MAX); errcode = p9pdu_writef(pdu, optional, "w", len); - if (!errcode && pdu_write(pdu, ptr, len)) + if (!errcode && pdu_write(pdu, sptr, len)) errcode = -EFAULT; } break; @@ -426,7 +426,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int optional, const char *fmt, va_list ap) case 'U':{ int32_t count = va_arg(ap, int32_t); const char __user *udata = - va_arg(ap, const void *); + va_arg(ap, const void __user *); errcode = p9pdu_writef(pdu, optional, "d", count); if (!errcode && pdu_write_u(pdu, udata, count)) |