Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05818a00 authored by Latchesar Ionkov's avatar Latchesar Ionkov Committed by Linus Torvalds
Browse files

[PATCH] v9fs: v9fs_put_str fix



v9fs_put_str used to store pointer to the source string, instead of the
cbuf copy.  This patch corrects it.

Signed-off-by: default avatarLatchesar Ionkov <lucho@ionkov.net>
Cc: Eric Van Hensbergen <ericvh@ericvh.myip.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 93c615fe
Loading
Loading
Loading
Loading
+19 −9
Original line number Diff line number Diff line
@@ -116,13 +116,19 @@ static void buf_put_int64(struct cbuf *buf, u64 val)
	}
}

static void buf_put_stringn(struct cbuf *buf, const char *s, u16 slen)
static char *buf_put_stringn(struct cbuf *buf, const char *s, u16 slen)
{
	char *ret;

	ret = NULL;
	if (buf_check_size(buf, slen + 2)) {
		buf_put_int16(buf, slen);
		ret = buf->p;
		memcpy(buf->p, s, slen);
		buf->p += slen;
	}

	return ret;
}

static inline void buf_put_string(struct cbuf *buf, const char *s)
@@ -430,15 +436,19 @@ static inline void v9fs_put_int64(struct cbuf *bufp, u64 val, u64 * p)
static void
v9fs_put_str(struct cbuf *bufp, char *data, struct v9fs_str *str)
{
	if (data) {
		str->len = strlen(data);
		str->str = bufp->p;
	} else {
		str->len = 0;
		str->str = NULL;
	}
	int len;
	char *s;

	if (data)
		len = strlen(data);
	else
		len = 0;

	buf_put_stringn(bufp, data, str->len);
	s = buf_put_stringn(bufp, data, len);
	if (str) {
		str->len = len;
		str->str = s;
	}
}

static int