Commit 423b8baf authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'akpm' (patches from Andrew)

Merge misc fixes from Andrew Morton:
 "11 fixes"

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  MAINTAINERS: add files related to kdump
  z3fold: fix use-after-free when freeing handles
  sparc32: use PUD rather than PGD to get PMD in srmmu_nocache_init()
  MAINTAINERS: update email address for Naoya Horiguchi
  sh: include linux/time_types.h for sockios
  kasan: disable branch tracing for core runtime
  selftests/vm/write_to_hugetlbfs.c: fix unused variable warning
  selftests/vm/.gitignore: add mremap_dontunmap
  rapidio: fix an error in get_user_pages_fast() error handling
  x86: bitops: fix build regression
  device-dax: don't leak kernel memory to user space after unloading kmem
parents 23f0dac8 ca6edee6
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -7829,7 +7829,7 @@ T: git git://linuxtv.org/media_tree.git
F:	drivers/media/platform/sti/hva
HWPOISON MEMORY FAILURE HANDLING
M:	Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
M:	Naoya Horiguchi <naoya.horiguchi@nec.com>
L:	linux-mm@kvack.org
S:	Maintained
F:	mm/hwpoison-inject.c
@@ -9185,6 +9185,11 @@ L: kexec@lists.infradead.org
S:	Maintained
W:	http://lse.sourceforge.net/kdump/
F:	Documentation/admin-guide/kdump/
F:	fs/proc/vmcore.c
F:	include/linux/crash_core.h
F:	include/linux/crash_dump.h
F:	include/uapi/linux/vmcore.h
F:	kernel/crash_*.c
KEENE FM RADIO TRANSMITTER DRIVER
M:	Hans Verkuil <hverkuil@xs4all.nl>
+2 −0
Original line number Diff line number Diff line
@@ -2,6 +2,8 @@
#ifndef __ASM_SH_SOCKIOS_H
#define __ASM_SH_SOCKIOS_H

#include <linux/time_types.h>

/* Socket-level I/O control calls. */
#define FIOGETOWN	_IOR('f', 123, int)
#define FIOSETOWN 	_IOW('f', 124, int)
+1 −1
Original line number Diff line number Diff line
@@ -333,7 +333,7 @@ static void __init srmmu_nocache_init(void)
		pgd = pgd_offset_k(vaddr);
		p4d = p4d_offset(__nocache_fix(pgd), vaddr);
		pud = pud_offset(__nocache_fix(p4d), vaddr);
		pmd = pmd_offset(__nocache_fix(pgd), vaddr);
		pmd = pmd_offset(__nocache_fix(pud), vaddr);
		pte = pte_offset_kernel(__nocache_fix(pmd), vaddr);

		pteval = ((paddr >> 4) | SRMMU_ET_PTE | SRMMU_PRIV);
+6 −6
Original line number Diff line number Diff line
@@ -52,9 +52,9 @@ static __always_inline void
arch_set_bit(long nr, volatile unsigned long *addr)
{
	if (__builtin_constant_p(nr)) {
		asm volatile(LOCK_PREFIX "orb %1,%0"
		asm volatile(LOCK_PREFIX "orb %b1,%0"
			: CONST_MASK_ADDR(nr, addr)
			: "iq" (CONST_MASK(nr) & 0xff)
			: "iq" (CONST_MASK(nr))
			: "memory");
	} else {
		asm volatile(LOCK_PREFIX __ASM_SIZE(bts) " %1,%0"
@@ -72,9 +72,9 @@ static __always_inline void
arch_clear_bit(long nr, volatile unsigned long *addr)
{
	if (__builtin_constant_p(nr)) {
		asm volatile(LOCK_PREFIX "andb %1,%0"
		asm volatile(LOCK_PREFIX "andb %b1,%0"
			: CONST_MASK_ADDR(nr, addr)
			: "iq" (CONST_MASK(nr) ^ 0xff));
			: "iq" (~CONST_MASK(nr)));
	} else {
		asm volatile(LOCK_PREFIX __ASM_SIZE(btr) " %1,%0"
			: : RLONG_ADDR(addr), "Ir" (nr) : "memory");
@@ -123,9 +123,9 @@ static __always_inline void
arch_change_bit(long nr, volatile unsigned long *addr)
{
	if (__builtin_constant_p(nr)) {
		asm volatile(LOCK_PREFIX "xorb %1,%0"
		asm volatile(LOCK_PREFIX "xorb %b1,%0"
			: CONST_MASK_ADDR(nr, addr)
			: "iq" ((u8)CONST_MASK(nr)));
			: "iq" (CONST_MASK(nr)));
	} else {
		asm volatile(LOCK_PREFIX __ASM_SIZE(btc) " %1,%0"
			: : RLONG_ADDR(addr), "Ir" (nr) : "memory");
+11 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ int dev_dax_kmem_probe(struct device *dev)
	resource_size_t kmem_size;
	resource_size_t kmem_end;
	struct resource *new_res;
	const char *new_res_name;
	int numa_node;
	int rc;

@@ -48,11 +49,16 @@ int dev_dax_kmem_probe(struct device *dev)
	kmem_size &= ~(memory_block_size_bytes() - 1);
	kmem_end = kmem_start + kmem_size;

	/* Region is permanently reserved.  Hot-remove not yet implemented. */
	new_res = request_mem_region(kmem_start, kmem_size, dev_name(dev));
	new_res_name = kstrdup(dev_name(dev), GFP_KERNEL);
	if (!new_res_name)
		return -ENOMEM;

	/* Region is permanently reserved if hotremove fails. */
	new_res = request_mem_region(kmem_start, kmem_size, new_res_name);
	if (!new_res) {
		dev_warn(dev, "could not reserve region [%pa-%pa]\n",
			 &kmem_start, &kmem_end);
		kfree(new_res_name);
		return -EBUSY;
	}

@@ -63,12 +69,12 @@ int dev_dax_kmem_probe(struct device *dev)
	 * unknown to us that will break add_memory() below.
	 */
	new_res->flags = IORESOURCE_SYSTEM_RAM;
	new_res->name = dev_name(dev);

	rc = add_memory(numa_node, new_res->start, resource_size(new_res));
	if (rc) {
		release_resource(new_res);
		kfree(new_res);
		kfree(new_res_name);
		return rc;
	}
	dev_dax->dax_kmem_res = new_res;
@@ -83,6 +89,7 @@ static int dev_dax_kmem_remove(struct device *dev)
	struct resource *res = dev_dax->dax_kmem_res;
	resource_size_t kmem_start = res->start;
	resource_size_t kmem_size = resource_size(res);
	const char *res_name = res->name;
	int rc;

	/*
@@ -102,6 +109,7 @@ static int dev_dax_kmem_remove(struct device *dev)
	/* Release and free dax resources */
	release_resource(res);
	kfree(res);
	kfree(res_name);
	dev_dax->dax_kmem_res = NULL;

	return 0;
Loading