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

Commit 867eacd7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (patches from Andrew)

Merge even more updates from Andrew Morton:

 - a few leftovers

 - fault-injector rework

 - add a module loader test driver

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  kmod: throttle kmod thread limit
  kmod: add test driver to stress test the module loader
  MAINTAINERS: give kmod some maintainer love
  xtensa: use generic fb.h
  fault-inject: add /proc/<pid>/fail-nth
  fault-inject: simplify access check for fail-nth
  fault-inject: make fail-nth read/write interface symmetric
  fault-inject: parse as natural 1-based value for fail-nth write interface
  fault-inject: automatically detect the number base for fail-nth write interface
  kernel/watchdog.c: use better pr_fmt prefix
  MAINTAINERS: move the befs tree to kernel.org
  lib/atomic64_test.c: add a test that atomic64_inc_not_zero() returns an int
  mm: fix overflow check in expand_upwards()
parents 077d2ba5 6d7964a7
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -136,12 +136,13 @@ use the boot option:

o proc entries

- /proc/self/task/<current-tid>/fail-nth:
- /proc/<pid>/fail-nth:
- /proc/self/task/<tid>/fail-nth:

	Write to this file of integer N makes N-th call in the current task fail
	(N is 0-based). Read from this file returns a single char 'Y' or 'N'
	that says if the fault setup with a previous write to this file was
	injected or not, and disables the fault if it wasn't yet injected.
	Write to this file of integer N makes N-th call in the task fail.
	Read from this file returns a integer value. A value of '0' indicates
	that the fault setup with a previous write to this file was injected.
	A positive integer N indicates that the fault wasn't yet injected.
	Note that this file enables all types of faults (slab, futex, etc).
	This setting takes precedence over all other generic debugfs settings
	like probability, interval, times, etc. But per-capability settings
@@ -320,18 +321,19 @@ int main()
	system("echo N > /sys/kernel/debug/failslab/ignore-gfp-wait");
	sprintf(buf, "/proc/self/task/%ld/fail-nth", syscall(SYS_gettid));
	fail_nth = open(buf, O_RDWR);
	for (i = 0;; i++) {
	for (i = 1;; i++) {
		sprintf(buf, "%d", i);
		write(fail_nth, buf, strlen(buf));
		res = socketpair(AF_LOCAL, SOCK_STREAM, 0, fds);
		err = errno;
		read(fail_nth, buf, 1);
		pread(fail_nth, buf, sizeof(buf), 0);
		if (res == 0) {
			close(fds[0]);
			close(fds[1]);
		}
		printf("%d-th fault %c: res=%d/%d\n", i, buf[0], res, err);
		if (buf[0] != 'Y')
		printf("%d-th fault %c: res=%d/%d\n", i, atoi(buf) ? 'N' : 'Y',
			res, err);
		if (atoi(buf))
			break;
	}
	return 0;
@@ -339,7 +341,6 @@ int main()

An example output:

0-th fault Y: res=-1/23
1-th fault Y: res=-1/23
2-th fault Y: res=-1/23
3-th fault Y: res=-1/12
+11 −2
Original line number Diff line number Diff line
@@ -2516,10 +2516,10 @@ S: Supported
F:	drivers/media/platform/sti/delta

BEFS FILE SYSTEM
M:	Luis de Bethencourt <luisbg@osg.samsung.com>
M:	Luis de Bethencourt <luisbg@kernel.org>
M:	Salah Triki <salah.triki@gmail.com>
S:	Maintained
T:	git git://github.com/luisbg/linux-befs.git
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/luisbg/linux-befs.git
F:	Documentation/filesystems/befs.txt
F:	fs/befs/

@@ -7554,6 +7554,15 @@ F: include/linux/kmemleak.h
F:	mm/kmemleak.c
F:	mm/kmemleak-test.c

KMOD MODULE USERMODE HELPER
M:	"Luis R. Rodriguez" <mcgrof@kernel.org>
L:	linux-kernel@vger.kernel.org
S:	Maintained
F:	kernel/kmod.c
F:	include/linux/kmod.h
F:	lib/test_kmod.c
F:	tools/testing/selftests/kmod/

KPROBES
M:	Ananth N Mavinakayanahalli <ananth@linux.vnet.ibm.com>
M:	Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
+1 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ generic-y += dma-contiguous.h
generic-y += emergency-restart.h
generic-y += exec.h
generic-y += extable.h
generic-y += fb.h
generic-y += hardirq.h
generic-y += irq_regs.h
generic-y += irq_work.h

arch/xtensa/include/asm/fb.h

deleted100644 → 0
+0 −12
Original line number Diff line number Diff line
#ifndef _ASM_FB_H_
#define _ASM_FB_H_
#include <linux/fb.h>

#define fb_pgprotect(...) do {} while (0)

static inline int fb_is_primary_device(struct fb_info *info)
{
	return 0;
}

#endif /* _ASM_FB_H_ */
+17 −24
Original line number Diff line number Diff line
@@ -1360,20 +1360,19 @@ static ssize_t proc_fail_nth_write(struct file *file, const char __user *buf,
				   size_t count, loff_t *ppos)
{
	struct task_struct *task;
	int err, n;
	int err;
	unsigned int n;

	err = kstrtouint_from_user(buf, count, 0, &n);
	if (err)
		return err;

	task = get_proc_task(file_inode(file));
	if (!task)
		return -ESRCH;
	WRITE_ONCE(task->fail_nth, n);
	put_task_struct(task);
	if (task != current)
		return -EPERM;
	err = kstrtoint_from_user(buf, count, 10, &n);
	if (err)
		return err;
	if (n < 0 || n == INT_MAX)
		return -EINVAL;
	current->fail_nth = n + 1;

	return count;
}

@@ -1381,21 +1380,18 @@ static ssize_t proc_fail_nth_read(struct file *file, char __user *buf,
				  size_t count, loff_t *ppos)
{
	struct task_struct *task;
	int err;
	char numbuf[PROC_NUMBUF];
	ssize_t len;

	task = get_proc_task(file_inode(file));
	if (!task)
		return -ESRCH;
	len = snprintf(numbuf, sizeof(numbuf), "%u\n",
			READ_ONCE(task->fail_nth));
	len = simple_read_from_buffer(buf, count, ppos, numbuf, len);
	put_task_struct(task);
	if (task != current)
		return -EPERM;
	if (count < 1)
		return -EINVAL;
	err = put_user((char)(current->fail_nth ? 'N' : 'Y'), buf);
	if (err)
		return err;
	current->fail_nth = 0;
	return 1;

	return len;
}

static const struct file_operations proc_fail_nth_operations = {
@@ -2966,6 +2962,7 @@ static const struct pid_entry tgid_base_stuff[] = {
#endif
#ifdef CONFIG_FAULT_INJECTION
	REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations),
	REG("fail-nth", 0644, proc_fail_nth_operations),
#endif
#ifdef CONFIG_ELF_CORE
	REG("coredump_filter", S_IRUGO|S_IWUSR, proc_coredump_filter_operations),
@@ -3358,11 +3355,7 @@ static const struct pid_entry tid_base_stuff[] = {
#endif
#ifdef CONFIG_FAULT_INJECTION
	REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations),
	/*
	 * Operations on the file check that the task is current,
	 * so we create it with 0666 to support testing under unprivileged user.
	 */
	REG("fail-nth", 0666, proc_fail_nth_operations),
	REG("fail-nth", 0644, proc_fail_nth_operations),
#endif
#ifdef CONFIG_TASK_IO_ACCOUNTING
	ONE("io",	S_IRUSR, proc_tid_io_accounting),
Loading