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

Commit 7691b1ec authored by OGAWA Hirofumi's avatar OGAWA Hirofumi Committed by Ingo Molnar
Browse files

perf tools: Misc small fixes



- util/header.c
	"len" is aligned to 64. So, it tries to write the out of
	long_name buffer.

	So, this use "zero_buf" to write aligned area.

- util/trace-event-read.c
	"size" is not including nul byte. So, this allocates it, and set '\0'.

- util/trace-event-parse.c
	It needs parens to calc correct size.

Signed-off-by: default avatarOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <87d42s8iiu.fsf_-_@devron.myhome.or.jp>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 180f95e2
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -187,7 +187,9 @@ static int do_write(int fd, const void *buf, size_t size)

static int __dsos__write_buildid_table(struct list_head *head, int fd)
{
#define NAME_ALIGN	64
	struct dso *pos;
	static const char zero_buf[NAME_ALIGN];

	list_for_each_entry(pos, head, node) {
		int err;
@@ -197,14 +199,17 @@ static int __dsos__write_buildid_table(struct list_head *head, int fd)
		if (!pos->has_build_id)
			continue;
		len = pos->long_name_len + 1;
		len = ALIGN(len, 64);
		len = ALIGN(len, NAME_ALIGN);
		memset(&b, 0, sizeof(b));
		memcpy(&b.build_id, pos->build_id, sizeof(pos->build_id));
		b.header.size = sizeof(b) + len;
		err = do_write(fd, &b, sizeof(b));
		if (err < 0)
			return err;
		err = do_write(fd, pos->long_name, len);
		err = do_write(fd, pos->long_name, pos->long_name_len + 1);
		if (err < 0)
			return err;
		err = do_write(fd, zero_buf, len - pos->long_name_len + 1);
		if (err < 0)
			return err;
	}
+1 −1
Original line number Diff line number Diff line
@@ -177,7 +177,7 @@ void parse_proc_kallsyms(char *file, unsigned int size __unused)
		func_count++;
	}

	func_list = malloc_or_die(sizeof(*func_list) * func_count + 1);
	func_list = malloc_or_die(sizeof(*func_list) * (func_count + 1));

	i = 0;
	while (list) {
+2 −1
Original line number Diff line number Diff line
@@ -145,8 +145,9 @@ static void read_proc_kallsyms(void)
	if (!size)
		return;

	buf = malloc_or_die(size);
	buf = malloc_or_die(size + 1);
	read_or_die(buf, size);
	buf[size] = '\0';

	parse_proc_kallsyms(buf, size);