Changes in 4.9.288 ALSA: seq: Fix a potential UAF by wrong private_free call order s390: fix strrchr() implementation xhci: Enable trust tx length quirk for Fresco FL11 USB controller cb710: avoid NULL pointer subtraction efi/cper: use stack buffer for error record decoding efi: Change down_interruptible() in virt_efi_reset_system() to down_trylock() Input: xpad - add support for another USB ID of Nacon GC-100 USB: serial: qcserial: add EM9191 QDL support USB: serial: option: add Telit LE910Cx composition 0x1204 nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells iio: adc128s052: Fix the error handling path of 'adc128_probe()' iio: light: opt3001: Fixed timeout error when 0 lux iio: ssp_sensors: add more range checking in ssp_parse_dataframe() iio: ssp_sensors: fix error code in ssp_print_mcu_debug() net: arc: select CRC32 net: korina: select CRC32 net: encx24j600: check error in devm_regmap_init_encx24j600 ethernet: s2io: fix setting mac address during resume nfc: fix error handling of nfc_proto_register() NFC: digital: fix possible memory leak in digital_tg_listen_mdaa() NFC: digital: fix possible memory leak in digital_in_send_sdd_req() pata_legacy: fix a couple uninitialized variable bugs drm/msm: Fix null pointer dereference on pointer edp drm/msm/dsi: fix off by one in dsi_bus_clk_enable error handling r8152: select CRC32 and CRYPTO/CRYPTO_HASH/CRYPTO_SHA256 xtensa: xtfpga: use CONFIG_USE_OF instead of CONFIG_OF xtensa: xtfpga: Try software restart before simulating CPU reset NFSD: Keep existing listeners on portlist error netfilter: ipvs: make global sysctl readonly in non-init netns NIOS2: irqflags: rename a redefined register name can: rcar_can: fix suspend/resume can: peak_usb: pcan_usb_fd_decode_status(): fix back to ERROR_ACTIVE state notification can: peak_pci: peak_pci_remove(): fix UAF ocfs2: fix data corruption after conversion from inline format ocfs2: mount fails with buffer overflow in strlen elfcore: correct reference to CONFIG_UML vfs: check fd has read access in kernel_read_file_from_fd() ALSA: usb-audio: Provide quirk for Sennheiser GSP670 Headset ASoC: DAPM: Fix missing kctl change notifications nfc: nci: fix the UAF of rf_conn_info object isdn: cpai: check ctr->cnr to avoid array index out of bound netfilter: Kconfig: use 'default y' instead of 'm' for bool config option ARM: dts: spear3xx: Fix gmac node isdn: mISDN: Fix sleeping function called from invalid context platform/x86: intel_scu_ipc: Update timeout value in comment ALSA: hda: avoid write to STATESTS if controller is in reset net: mdiobus: Fix memory leak in __mdiobus_register tracing: Have all levels of checks prevent recursion ARM: 9122/1: select HAVE_FUTEX_CMPXCHG Linux 4.9.288 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I8aaac774905fc04e20f969573f54832c3f18ad14
96 lines
2.4 KiB
C
96 lines
2.4 KiB
C
#ifndef _LINUX_ELFCORE_H
|
|
#define _LINUX_ELFCORE_H
|
|
|
|
#include <linux/user.h>
|
|
#include <linux/bug.h>
|
|
#include <asm/elf.h>
|
|
#include <uapi/linux/elfcore.h>
|
|
|
|
struct coredump_params;
|
|
|
|
static inline void elf_core_copy_regs(elf_gregset_t *elfregs, struct pt_regs *regs)
|
|
{
|
|
#ifdef ELF_CORE_COPY_REGS
|
|
ELF_CORE_COPY_REGS((*elfregs), regs)
|
|
#else
|
|
BUG_ON(sizeof(*elfregs) != sizeof(*regs));
|
|
*(struct pt_regs *)elfregs = *regs;
|
|
#endif
|
|
}
|
|
|
|
static inline void elf_core_copy_kernel_regs(elf_gregset_t *elfregs, struct pt_regs *regs)
|
|
{
|
|
#ifdef ELF_CORE_COPY_KERNEL_REGS
|
|
ELF_CORE_COPY_KERNEL_REGS((*elfregs), regs);
|
|
#else
|
|
elf_core_copy_regs(elfregs, regs);
|
|
#endif
|
|
}
|
|
|
|
static inline int elf_core_copy_task_regs(struct task_struct *t, elf_gregset_t* elfregs)
|
|
{
|
|
#if defined (ELF_CORE_COPY_TASK_REGS)
|
|
return ELF_CORE_COPY_TASK_REGS(t, elfregs);
|
|
#elif defined (task_pt_regs)
|
|
elf_core_copy_regs(elfregs, task_pt_regs(t));
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
extern int dump_fpu (struct pt_regs *, elf_fpregset_t *);
|
|
|
|
static inline int elf_core_copy_task_fpregs(struct task_struct *t, struct pt_regs *regs, elf_fpregset_t *fpu)
|
|
{
|
|
#ifdef ELF_CORE_COPY_FPREGS
|
|
return ELF_CORE_COPY_FPREGS(t, fpu);
|
|
#else
|
|
return dump_fpu(regs, fpu);
|
|
#endif
|
|
}
|
|
|
|
#ifdef ELF_CORE_COPY_XFPREGS
|
|
static inline int elf_core_copy_task_xfpregs(struct task_struct *t, elf_fpxregset_t *xfpu)
|
|
{
|
|
return ELF_CORE_COPY_XFPREGS(t, xfpu);
|
|
}
|
|
#endif
|
|
|
|
#if (defined(CONFIG_UML) && defined(CONFIG_X86_32)) || defined(CONFIG_IA64)
|
|
/*
|
|
* These functions parameterize elf_core_dump in fs/binfmt_elf.c to write out
|
|
* extra segments containing the gate DSO contents. Dumping its
|
|
* contents makes post-mortem fully interpretable later without matching up
|
|
* the same kernel and hardware config to see what PC values meant.
|
|
* Dumping its extra ELF program headers includes all the other information
|
|
* a debugger needs to easily find how the gate DSO was being used.
|
|
*/
|
|
extern Elf_Half elf_core_extra_phdrs(void);
|
|
extern int
|
|
elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset);
|
|
extern int
|
|
elf_core_write_extra_data(struct coredump_params *cprm);
|
|
extern size_t elf_core_extra_data_size(void);
|
|
#else
|
|
static inline Elf_Half elf_core_extra_phdrs(void)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
static inline int elf_core_write_extra_phdrs(struct coredump_params *cprm, loff_t offset)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static inline int elf_core_write_extra_data(struct coredump_params *cprm)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
static inline size_t elf_core_extra_data_size(void)
|
|
{
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
#endif /* _LINUX_ELFCORE_H */
|