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)
Unified · Split
| @@ -118,13 +118,22 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, · 117 unmodified lines | ||
| 118 | 118 | err |= __put_user(kinfo->si_trapno, &uinfo->ssi_trapno); |
| 119 | 119 | #endif |
| 120 | 120 | #ifdef BUS_MCEERR_AO |
| 121 | − /* | |
| 121 | + /* | |
| 122 | + * Other callers might not initialize the si_lsb field, | |
| 123 | + * so check explicitly for the right codes here. | |
| 124 | + */ | |
| 125 | + if (kinfo->si_signo == SIGBUS && | |
| 126 | + kinfo->si_code == BUS_MCEERR_AO) | |
| 127 | + err |= __put_user((short) kinfo->si_addr_lsb, | |
| 128 | + &uinfo->ssi_addr_lsb); | |
| 129 | +#endif | |
| 130 | +#ifdef BUS_MCEERR_AR | |
| 131 | + /* | |
| 122 | 132 | * Other callers might not initialize the si_lsb field, |
| 123 | 133 | * so check explicitly for the right codes here. |
| 124 | 134 | */ |
| 125 | 135 | if (kinfo->si_signo == SIGBUS && |
| 126 | − (kinfo->si_code == BUS_MCEERR_AR || | |
| 127 | − kinfo->si_code == BUS_MCEERR_AO)) | |
| 136 | + kinfo->si_code == BUS_MCEERR_AR) | |
| 128 | 137 | err |= __put_user((short) kinfo->si_addr_lsb, |
| 129 | 138 | &uinfo->ssi_addr_lsb); |
| 130 | 139 | #endif |