From: Randy Dunlap <rdun...@infradead.org>

Fix build error in fs/signalfd.c by using same method that is used in
kernel/signal.c: separate blocks for different signal si_code values.

./fs/signalfd.c: error: 'BUS_MCEERR_AR' undeclared (first use in this function)

Reported-by: Geert Uytterhoeven <ge...@linux-m68k.org>
Signed-off-by: Randy Dunlap <rdun...@infradead.org>
Cc: Eric Biederman <ebied...@xmission.com>
Cc: Alexander Viro <v...@zeniv.linux.org.uk>
---
 fs/signalfd.c |   15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

Applies to mainline 4.16-rc1.

--- linux-next-20180212.orig/fs/signalfd.c
+++ linux-next-20180212/fs/signalfd.c
@@ -118,13 +118,22 @@ static int signalfd_copyinfo(struct sign
                err |= __put_user(kinfo->si_trapno, &uinfo->ssi_trapno);
 #endif
 #ifdef BUS_MCEERR_AO
-               /* 
+               /*
                 * Other callers might not initialize the si_lsb field,
                 * so check explicitly for the right codes here.
                 */
                if (kinfo->si_signo == SIGBUS &&
-                   (kinfo->si_code == BUS_MCEERR_AR ||
-                    kinfo->si_code == BUS_MCEERR_AO))
+                    kinfo->si_code == BUS_MCEERR_AO)
+                       err |= __put_user((short) kinfo->si_addr_lsb,
+                                         &uinfo->ssi_addr_lsb);
+#endif
+#ifdef BUS_MCEERR_AR
+               /*
+                * Other callers might not initialize the si_lsb field,
+                * so check explicitly for the right codes here.
+                */
+               if (kinfo->si_signo == SIGBUS &&
+                   kinfo->si_code == BUS_MCEERR_AR)
                        err |= __put_user((short) kinfo->si_addr_lsb,
                                          &uinfo->ssi_addr_lsb);
 #endif

Reply via email to