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

Commit 6d1e9a42 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
  pstore: cleanups to pstore_dump()
  [IA64] New syscalls for 2.6.39
parents 95985725 74159827
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -315,11 +315,15 @@
#define __NR_fanotify_init		1323
#define __NR_fanotify_mark		1324
#define __NR_prlimit64			1325
#define __NR_name_to_handle_at		1326
#define __NR_open_by_handle_at  	1327
#define __NR_clock_adjtime		1328
#define __NR_syncfs			1329

#ifdef __KERNEL__


#define NR_syscalls			302 /* length of syscall table */
#define NR_syscalls			306 /* length of syscall table */

/*
 * The following defines stop scripts/checksyscalls.sh from complaining about
+4 −0
Original line number Diff line number Diff line
@@ -1771,6 +1771,10 @@ sys_call_table:
	data8 sys_fanotify_init
	data8 sys_fanotify_mark
	data8 sys_prlimit64			// 1325
	data8 sys_name_to_handle_at
	data8 sys_open_by_handle_at
	data8 sys_clock_adjtime
	data8 sys_syncfs

	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls
#endif /* __IA64_ASM_PARAVIRTUALIZED_NATIVE */
+12 −3
Original line number Diff line number Diff line
@@ -48,6 +48,10 @@ void pstore_set_kmsg_bytes(int bytes)
/* Tag each group of saved records with a sequence number */
static int	oopscount;

static char *reason_str[] = {
	"Oops", "Panic", "Kexec", "Restart", "Halt", "Poweroff", "Emergency"
};

/*
 * callback from kmsg_dump. (s2,l2) has the most recently
 * written bytes, older bytes are in (s1,l1). Save as much
@@ -61,15 +65,20 @@ static void pstore_dump(struct kmsg_dumper *dumper,
	unsigned long	s1_start, s2_start;
	unsigned long	l1_cpy, l2_cpy;
	unsigned long	size, total = 0;
	char		*dst;
	char		*dst, *why;
	u64		id;
	int		hsize, part = 1;

	if (reason < ARRAY_SIZE(reason_str))
		why = reason_str[reason];
	else
		why = "Unknown";

	mutex_lock(&psinfo->buf_mutex);
	oopscount++;
	while (total < kmsg_bytes) {
		dst = psinfo->buf;
		hsize = sprintf(dst, "Oops#%d Part%d\n", oopscount, part++);
		hsize = sprintf(dst, "%s#%d Part%d\n", why, oopscount, part++);
		size = psinfo->bufsize - hsize;
		dst += hsize;

@@ -86,7 +95,7 @@ static void pstore_dump(struct kmsg_dumper *dumper,
		memcpy(dst + l1_cpy, s2 + s2_start, l2_cpy);

		id = psinfo->write(PSTORE_TYPE_DMESG, hsize + l1_cpy + l2_cpy);
		if (pstore_is_mounted())
		if (reason == KMSG_DUMP_OOPS && pstore_is_mounted())
			pstore_mkfile(PSTORE_TYPE_DMESG, psinfo->name, id,
				      psinfo->buf, hsize + l1_cpy + l2_cpy,
				      CURRENT_TIME, psinfo->erase);