Fix ABI changes in 4.4.5

This commit is contained in:
Ben Hutchings 2016-03-14 23:33:23 +00:00
parent 278c9dc0b1
commit 20994ffba4
4 changed files with 68 additions and 1 deletions

3
debian/changelog vendored
View File

@ -30,7 +30,6 @@ linux (4.4.5-1) UNRELEASED; urgency=medium
- [x86] drm/amdgpu/gfx8: specify which engine to wait before vm flush
- [x86] drm/amdgpu: return from atombios_dp_get_dpcd only when error
- libata: fix HDIO_GET_32BIT ioctl
- libata: Align ata_device's id on a cacheline
- writeback: flush inode cgroup wb switches instead of pinning super_block
- Adding Intel Lewisburg device IDs for SATA
- [arm64] vmemmap: use virtual projection of linear region
@ -72,6 +71,8 @@ linux (4.4.5-1) UNRELEASED; urgency=medium
[ Ben Hutchings ]
* [x86] drm/i915: Fix oops caused by fbdev initialization failure
* module: Fix ABI change in 4.4.5
* Revert "libata: Align ata_device's id on a cacheline" to avoid ABI change
[ Ian Campbell ]
* [arm64] Enable ARCH_HISI (Hisilicon) and the set of currently available

View File

@ -0,0 +1,40 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Mon, 14 Mar 2016 23:20:37 +0000
Subject: module: Fix ABI change in 4.4.5
Forwarded: not-needed
Move the new kallsyms fields in struct module to the end and hide
them from genksyms. Restore the old fields but leave them zeroed -
nothing outside the module loader and /proc/kallsyms implementation
should be, or appears to be, using them.
---
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -417,9 +417,10 @@ struct module {
#endif
#ifdef CONFIG_KALLSYMS
- /* Protected by RCU and/or module_mutex: use rcu_dereference() */
- struct mod_kallsyms *kallsyms;
- struct mod_kallsyms core_kallsyms;
+ /* bwh: Old kallsyms state; now just padding for ABI compat */
+ Elf_Sym *symtab, *core_symtab;
+ unsigned int num_symtab, core_num_syms;
+ char *strtab, *core_strtab;
/* Section attributes */
struct module_sect_attrs *sect_attrs;
@@ -482,6 +483,12 @@ struct module {
ctor_fn_t *ctors;
unsigned int num_ctors;
#endif
+
+#if defined(CONFIG_KALLSYMS) && !defined(__GENKSYMS__)
+ /* Protected by RCU and/or module_mutex: use rcu_dereference() */
+ struct mod_kallsyms *kallsyms;
+ struct mod_kallsyms core_kallsyms;
+#endif
} ____cacheline_aligned;
#ifndef MODULE_ARCH_INIT
#define MODULE_ARCH_INIT {}

View File

@ -0,0 +1,24 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Mon, 14 Mar 2016 17:47:16 +0000
Subject: Revert "libata: Align ata_device's id on a cacheline"
Forwarded: not-needed
This reverts commit cea2cbff57c5b65375adb6fe65612c10a7301327, which
was commit 4ee34ea3a12396f35b26d90a094c75db95080baa upstream. It's a
real fix but we've lived with the problem for many years and it
doesn't seem worth breaking ABI to fix it right now.
---
include/linux/libata.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -718,7 +718,7 @@ struct ata_device {
union {
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
- } ____cacheline_aligned;
+ };
/* DEVSLP Timing Variables from Identify Device Data Log */
u8 devslp_timing[ATA_LOG_DEVSLP_SIZE];

View File

@ -135,3 +135,5 @@ debian/ipv6-fix-abi-change-in-4.4.4.patch
bugfix/all/revert-drm-radeon-call-hpd_irq_event-on-resume.patch
bugfix/powerpc/powerpc-fix-dedotify-for-binutils-2.26.patch
bugfix/x86/drm-i915-Fix-oops-caused-by-fbdev-initialization-fai.patch
debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
debian/module-fix-abi-change-in-4.4.5.patch