[mips*] Fix ABI change in 4.6.2

This commit is contained in:
Ben Hutchings 2016-06-16 12:37:35 +01:00
parent 86e7845331
commit 966488336f
3 changed files with 101 additions and 0 deletions

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
linux (4.6.2-2) UNRELEASED; urgency=medium
* [mips*] Fix ABI change in 4.6.2
-- Ben Hutchings <ben@decadent.org.uk> Thu, 16 Jun 2016 12:37:27 +0100
linux (4.6.2-1) unstable; urgency=medium
* Team upload.

View File

@ -0,0 +1,92 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 16 Jun 2016 11:32:49 +0100
Subject: MIPS: Fix ABI change in 4.6.2
Forwarded: not-needed
genksyms only looks at the (preprocessed) token stream of a struct
definition, not the real types, so commit 5daebc477da4 ("MIPS: Fix
siginfo.h to use strict posix types") results in a different hash
even though it doesn't change types.
--- a/arch/mips/include/uapi/asm/siginfo.h
+++ b/arch/mips/include/uapi/asm/siginfo.h
@@ -30,6 +30,8 @@
#include <asm-generic/siginfo.h>
+#ifndef __GENKSYMS__
+
/* We can't use generic siginfo_t, because our si_code and si_errno are swapped */
typedef struct siginfo {
int si_signo;
@@ -112,6 +114,70 @@ typedef struct siginfo {
} _sifields;
} siginfo_t;
+#else /* __GENKSYMS__ */
+
+/* Definition using the 'wrong' type names, to keep genksyms happy */
+typedef struct siginfo {
+ int si_signo;
+ int si_code;
+ int si_errno;
+ int __pad0[SI_MAX_SIZE / sizeof(int) - SI_PAD_SIZE - 3];
+ union {
+ int _pad[SI_PAD_SIZE];
+ struct {
+ pid_t _pid;
+ __ARCH_SI_UID_T _uid;
+ } _kill;
+ struct {
+ timer_t _tid;
+ int _overrun;
+ char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
+ sigval_t _sigval;
+ int _sys_private;
+ } _timer;
+ struct {
+ pid_t _pid;
+ __ARCH_SI_UID_T _uid;
+ sigval_t _sigval;
+ } _rt;
+ struct {
+ pid_t _pid;
+ __ARCH_SI_UID_T _uid;
+ int _status;
+ clock_t _utime;
+ clock_t _stime;
+ } _sigchld;
+ struct {
+ pid_t _pid;
+ clock_t _utime;
+ int _status;
+ clock_t _stime;
+ } _irix_sigchld;
+ struct {
+ void __user *_addr;
+ short _addr_lsb;
+ union {
+ struct {
+ void __user *_lower;
+ void __user *_upper;
+ } _addr_bnd;
+ __u32 _pkey;
+ };
+ } _sigfault;
+ struct {
+ __ARCH_SI_BAND_T _band;
+ int _fd;
+ } _sigpoll;
+ struct {
+ void __user *_call_addr;
+ int _syscall;
+ unsigned int _arch;
+ } _sigsys;
+ } _sifields;
+} siginfo_t;
+
+#endif /* __GENKSYMS__ */
+
/*
* si_code values
* Again these have been chosen to be IRIX compatible.

View File

@ -113,6 +113,9 @@ bugfix/all/sched-panic-on-corrupted-stack-end.patch
bugfix/all/tipc-fix-an-infoleak-in-tipc_nl_compat_link_dump.patch
bugfix/all/rds-fix-an-infoleak-in-rds_inc_info_copy.patch
# ABI maintenance
debian/mips-fix-abi-change-in-4.6.2.patch
# Tools bug fixes
bugfix/all/usbip-document-tcp-wrappers.patch
bugfix/all/kbuild-fix-recordmcount-dependency.patch