diff options
author | Justin M. Forbes <jforbes@redhat.com> | 2016-10-24 16:20:05 -0500 |
---|---|---|
committer | Justin M. Forbes <jforbes@redhat.com> | 2016-10-24 16:20:05 -0500 |
commit | e4b3d2ead04685e1f0f39096a2322c9e4ee56db9 (patch) | |
tree | 27ce1dc7f7a6293c3dc54f6480e2ee6c3b913528 /crash-driver.patch | |
parent | 2ade70cc51ecbb35697bede755a4ae1486a59681 (diff) | |
download | kernel-e4b3d2ead04685e1f0f39096a2322c9e4ee56db9.tar.gz kernel-e4b3d2ead04685e1f0f39096a2322c9e4ee56db9.tar.xz kernel-e4b3d2ead04685e1f0f39096a2322c9e4ee56db9.zip |
Linux v4.8.4 rebase
Diffstat (limited to 'crash-driver.patch')
-rw-r--r-- | crash-driver.patch | 131 |
1 files changed, 115 insertions, 16 deletions
diff --git a/crash-driver.patch b/crash-driver.patch index d88138440..2b05554b7 100644 --- a/crash-driver.patch +++ b/crash-driver.patch @@ -1,3 +1,4 @@ +From 3fbd61fbbbfa7ae15cd3f3e2ff7a97e106be2b43 Mon Sep 17 00:00:00 2001 From: Dave Anderson <anderson@redhat.com> Date: Tue, 26 Nov 2013 12:42:46 -0500 Subject: [PATCH] crash-driver @@ -29,7 +30,7 @@ Upstream-status: Fedora mustard diff --git a/arch/arm/include/asm/crash-driver.h b/arch/arm/include/asm/crash-driver.h new file mode 100644 -index 000000000000..06e7ae916601 +index 0000000..06e7ae9 --- /dev/null +++ b/arch/arm/include/asm/crash-driver.h @@ -0,0 +1,6 @@ @@ -41,7 +42,7 @@ index 000000000000..06e7ae916601 +#endif /* _ARM_CRASH_H */ diff --git a/arch/arm64/include/asm/crash-driver.h b/arch/arm64/include/asm/crash-driver.h new file mode 100644 -index 000000000000..43b26da0c5d6 +index 0000000..43b26da --- /dev/null +++ b/arch/arm64/include/asm/crash-driver.h @@ -0,0 +1,6 @@ @@ -53,7 +54,7 @@ index 000000000000..43b26da0c5d6 +#endif /* _ARM64_CRASH_H */ diff --git a/arch/ia64/include/asm/crash-driver.h b/arch/ia64/include/asm/crash-driver.h new file mode 100644 -index 000000000000..404bcb93c112 +index 0000000..404bcb9 --- /dev/null +++ b/arch/ia64/include/asm/crash-driver.h @@ -0,0 +1,90 @@ @@ -148,7 +149,7 @@ index 000000000000..404bcb93c112 + +#endif /* _ASM_IA64_CRASH_H */ diff --git a/arch/ia64/kernel/ia64_ksyms.c b/arch/ia64/kernel/ia64_ksyms.c -index 096731049538..e88887827906 100644 +index 0967310..e888878 100644 --- a/arch/ia64/kernel/ia64_ksyms.c +++ b/arch/ia64/kernel/ia64_ksyms.c @@ -84,6 +84,9 @@ EXPORT_SYMBOL(ia64_save_scratch_fpregs); @@ -163,7 +164,7 @@ index 096731049538..e88887827906 100644 EXPORT_SYMBOL_GPL(esi_call_phys); diff --git a/arch/powerpc/include/asm/crash-driver.h b/arch/powerpc/include/asm/crash-driver.h new file mode 100644 -index 000000000000..50092d965dc5 +index 0000000..50092d9 --- /dev/null +++ b/arch/powerpc/include/asm/crash-driver.h @@ -0,0 +1,6 @@ @@ -175,7 +176,7 @@ index 000000000000..50092d965dc5 +#endif /* _PPC64_CRASH_H */ diff --git a/arch/s390/include/asm/crash-driver.h b/arch/s390/include/asm/crash-driver.h new file mode 100644 -index 000000000000..552be5e2c571 +index 0000000..552be5e --- /dev/null +++ b/arch/s390/include/asm/crash-driver.h @@ -0,0 +1,60 @@ @@ -240,10 +241,10 @@ index 000000000000..552be5e2c571 + +#endif /* _S390_CRASH_H */ diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c -index 8a993a53fcd6..8f511795b52e 100644 +index 792f9c6..3197995 100644 --- a/arch/s390/mm/maccess.c +++ b/arch/s390/mm/maccess.c -@@ -197,6 +197,7 @@ void *xlate_dev_mem_ptr(phys_addr_t addr) +@@ -201,6 +201,7 @@ void *xlate_dev_mem_ptr(phys_addr_t addr) put_online_cpus(); return bounce; } @@ -251,14 +252,14 @@ index 8a993a53fcd6..8f511795b52e 100644 /* * Free converted buffer for /dev/mem access (if necessary) -@@ -206,3 +207,4 @@ void unxlate_dev_mem_ptr(phys_addr_t addr, void *buf) +@@ -210,3 +211,4 @@ void unxlate_dev_mem_ptr(phys_addr_t addr, void *buf) if ((void *) addr != buf) free_page((unsigned long) buf); } +EXPORT_SYMBOL_GPL(unxlate_dev_mem_ptr); diff --git a/arch/x86/include/asm/crash-driver.h b/arch/x86/include/asm/crash-driver.h new file mode 100644 -index 000000000000..fd4736ec99f5 +index 0000000..fd4736e --- /dev/null +++ b/arch/x86/include/asm/crash-driver.h @@ -0,0 +1,6 @@ @@ -269,7 +270,7 @@ index 000000000000..fd4736ec99f5 + +#endif /* _X86_CRASH_H */ diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index a043107da2af..b272397f306a 100644 +index fdb8f3e..7dd3a49 100644 --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig @@ -4,6 +4,9 @@ @@ -283,18 +284,18 @@ index a043107da2af..b272397f306a 100644 config DEVMEM diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index d8a7579300d2..31c83630f593 100644 +index 55d16bf..a40ace9 100644 --- a/drivers/char/Makefile +++ b/drivers/char/Makefile -@@ -60,3 +60,5 @@ js-rtc-y = rtc.o - +@@ -61,3 +61,5 @@ js-rtc-y = rtc.o obj-$(CONFIG_TILE_SROM) += tile-srom.o obj-$(CONFIG_XILLYBUS) += xillybus/ + obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o + +obj-$(CONFIG_CRASH) += crash.o diff --git a/drivers/char/crash.c b/drivers/char/crash.c new file mode 100644 -index 000000000000..085378a1d539 +index 0000000..085378a --- /dev/null +++ b/drivers/char/crash.c @@ -0,0 +1,128 @@ @@ -428,7 +429,7 @@ index 000000000000..085378a1d539 +MODULE_LICENSE("GPL"); diff --git a/include/asm-generic/crash-driver.h b/include/asm-generic/crash-driver.h new file mode 100644 -index 000000000000..25ab9869d566 +index 0000000..25ab986 --- /dev/null +++ b/include/asm-generic/crash-driver.h @@ -0,0 +1,72 @@ @@ -504,3 +505,101 @@ index 000000000000..25ab9869d566 +#endif /* __KERNEL__ */ + +#endif /* __CRASH_H__ */ +-- +2.9.2 + +From 7523c19e1d22fbabeaeae9520c16a78202c0eefe Mon Sep 17 00:00:00 2001 +From: Fedora Kernel Team <kernel-team@fedoraproject.org> +Date: Tue, 20 Sep 2016 19:39:46 +0200 +Subject: [PATCH] Update of crash driver to handle CONFIG_HARDENED_USERCOPY and + to restrict the supported architectures. + +--- + drivers/char/Kconfig | 1 + + drivers/char/crash.c | 33 ++++++++++++++++++++++++++++++--- + 2 files changed, 31 insertions(+), 3 deletions(-) + +diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig +index 99b99d5..be6a3ae 100644 +--- a/drivers/char/Kconfig ++++ b/drivers/char/Kconfig +@@ -6,6 +6,7 @@ menu "Character devices" + + config CRASH + tristate "Crash Utility memory driver" ++ depends on X86_32 || X86_64 || ARM || ARM64 || PPC64 || S390 + + source "drivers/tty/Kconfig" + +diff --git a/drivers/char/crash.c b/drivers/char/crash.c +index 085378a..0258bf8 100644 +--- a/drivers/char/crash.c ++++ b/drivers/char/crash.c +@@ -32,7 +32,7 @@ + #include <asm/types.h> + #include <asm/crash-driver.h> + +-#define CRASH_VERSION "1.0" ++#define CRASH_VERSION "1.2" + + /* + * These are the file operation functions that allow crash utility +@@ -66,6 +66,7 @@ crash_read(struct file *file, char *buf, size_t count, loff_t *poff) + struct page *page; + u64 offset; + ssize_t read; ++ char *buffer = file->private_data; + + offset = *poff; + if (offset >> PAGE_SHIFT != (offset+count-1) >> PAGE_SHIFT) +@@ -74,8 +75,12 @@ crash_read(struct file *file, char *buf, size_t count, loff_t *poff) + vaddr = map_virtual(offset, &page); + if (!vaddr) + return -EFAULT; +- +- if (copy_to_user(buf, vaddr, count)) { ++ /* ++ * Use bounce buffer to bypass the CONFIG_HARDENED_USERCOPY ++ * kernel text restriction. ++ */ ++ memcpy(buffer, (char *)vaddr, count); ++ if (copy_to_user(buf, buffer, count)) { + unmap_virtual(page); + return -EFAULT; + } +@@ -86,10 +91,32 @@ crash_read(struct file *file, char *buf, size_t count, loff_t *poff) + return read; + } + ++static int ++crash_open(struct inode * inode, struct file * filp) ++{ ++ if (!capable(CAP_SYS_RAWIO)) ++ return -EPERM; ++ ++ filp->private_data = (void *)__get_free_page(GFP_KERNEL); ++ if (!filp->private_data) ++ return -ENOMEM; ++ ++ return 0; ++} ++ ++static int ++crash_release(struct inode *inode, struct file *filp) ++{ ++ free_pages((unsigned long)filp->private_data, 0); ++ return 0; ++} ++ + static struct file_operations crash_fops = { + .owner = THIS_MODULE, + .llseek = crash_llseek, + .read = crash_read, ++ .open = crash_open, ++ .release = crash_release, + }; + + static struct miscdevice crash_dev = { +-- +2.9.3 + |