- bnc#774226 mcelog + systemd: won't start without MCELOG_ADMIN_EMAIL set
- fix uninitialized variable mail_setup OBS-URL: https://build.opensuse.org/package/show/Base:System/mcelog?expand=0&rev=25
This commit is contained in:
parent
7da844b498
commit
8432bbd870
80
email.patch
80
email.patch
@ -1,11 +1,22 @@
|
|||||||
--- mcelog-1.0pre3.6e4e2a000124/Makefile
|
---
|
||||||
|
Makefile | 10 ++-
|
||||||
|
email.c | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
email.h | 34 ++++++++++
|
||||||
|
mcelog.c | 93 +++++++++++++++++++++++++++++
|
||||||
|
mcelog.h | 1
|
||||||
|
msg.c | 8 ++
|
||||||
|
6 files changed, 343 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
Index: mcelog-1.0pre3.6e4e2a000124/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- mcelog-1.0pre3.6e4e2a000124.orig/Makefile
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/Makefile
|
+++ mcelog-1.0pre3.6e4e2a000124/Makefile
|
||||||
@@ -1,3 +1,4 @@
|
@@ -1,3 +1,4 @@
|
||||||
+CONFIG_EMAIL := 1
|
+CONFIG_EMAIL := 1
|
||||||
CFLAGS := -g -Os
|
CFLAGS := -g -Os
|
||||||
prefix := /usr
|
prefix := /usr
|
||||||
etcprefix :=
|
etcprefix :=
|
||||||
@@ -34,7 +35,8 @@
|
@@ -34,7 +35,8 @@ OBJ := p4.o k8.o mcelog.o dmi.o tsc.o co
|
||||||
client.o cache.o sysfs.o yellow.o page.o rbtree.o \
|
client.o cache.o sysfs.o yellow.o page.o rbtree.o \
|
||||||
xeon75xx.o sandy-bridge.o
|
xeon75xx.o sandy-bridge.o
|
||||||
DISKDB_OBJ := diskdb.o dimm.o db.o
|
DISKDB_OBJ := diskdb.o dimm.o db.o
|
||||||
@ -15,7 +26,7 @@
|
|||||||
DOC := mce.pdf
|
DOC := mce.pdf
|
||||||
|
|
||||||
ADD_DEFINES :=
|
ADD_DEFINES :=
|
||||||
@@ -46,6 +48,12 @@
|
@@ -46,6 +48,12 @@ OBJ += ${DISKDB_OBJ}
|
||||||
all: dbquery
|
all: dbquery
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@ -28,9 +39,11 @@
|
|||||||
SRC := $(OBJ:.o=.c)
|
SRC := $(OBJ:.o=.c)
|
||||||
|
|
||||||
mcelog: ${OBJ}
|
mcelog: ${OBJ}
|
||||||
--- mcelog-1.0pre3.6e4e2a000124/email.c
|
Index: mcelog-1.0pre3.6e4e2a000124/email.c
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/email.c
|
+++ mcelog-1.0pre3.6e4e2a000124/email.c
|
||||||
@@ -0,0 +1,184 @@
|
@@ -0,0 +1,199 @@
|
||||||
+#include <unistd.h>
|
+#include <unistd.h>
|
||||||
+#include <signal.h>
|
+#include <signal.h>
|
||||||
+#include <ctype.h>
|
+#include <ctype.h>
|
||||||
@ -86,6 +99,21 @@
|
|||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+int email_env(void)
|
||||||
|
+{
|
||||||
|
+ char *email_env = getenv("MCELOG_EMAIL_DEBUG");
|
||||||
|
+
|
||||||
|
+ if (email_env)
|
||||||
|
+ debug=0;
|
||||||
|
+
|
||||||
|
+ email_env = getenv("MCELOG_ADMIN_EMAIL");
|
||||||
|
+ if (email_env) {
|
||||||
|
+ strncpy(c_recipient, email_env, MAX_STRING_LEN - 1);
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
+/* Callback to prnt the recipient status */
|
+/* Callback to prnt the recipient status */
|
||||||
+static void
|
+static void
|
||||||
+print_recipient_status (smtp_recipient_t recipient,
|
+print_recipient_status (smtp_recipient_t recipient,
|
||||||
@ -215,9 +243,11 @@
|
|||||||
+ smtp_destroy_session (session);
|
+ smtp_destroy_session (session);
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+}
|
+}
|
||||||
--- mcelog-1.0pre3.6e4e2a000124/email.h
|
Index: mcelog-1.0pre3.6e4e2a000124/email.h
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/email.h
|
+++ mcelog-1.0pre3.6e4e2a000124/email.h
|
||||||
@@ -0,0 +1,32 @@
|
@@ -0,0 +1,34 @@
|
||||||
+#ifndef _MCELOG_EMAIL_H_
|
+#ifndef _MCELOG_EMAIL_H_
|
||||||
+#define _MCELOG_EMAIL_H_
|
+#define _MCELOG_EMAIL_H_
|
||||||
+
|
+
|
||||||
@ -229,6 +259,7 @@
|
|||||||
+extern void setup_mail_header(FILE *email_fd, struct mce *m);
|
+extern void setup_mail_header(FILE *email_fd, struct mce *m);
|
||||||
+extern void email_usage(void);
|
+extern void email_usage(void);
|
||||||
+extern int email_cmd(int opt, int ac, char **av);
|
+extern int email_cmd(int opt, int ac, char **av);
|
||||||
|
+extern int email_env(void);
|
||||||
+
|
+
|
||||||
+#define EMAIL_OPTIONS \
|
+#define EMAIL_OPTIONS \
|
||||||
+ { "email", 1, NULL, O_EMAIL_ADDRESS }, \
|
+ { "email", 1, NULL, O_EMAIL_ADDRESS }, \
|
||||||
@ -246,11 +277,14 @@
|
|||||||
+*/
|
+*/
|
||||||
+static void email_usage(void) { return; }
|
+static void email_usage(void) { return; }
|
||||||
+static int email_cmd(int opt, int ac, char **av) { return 0; }
|
+static int email_cmd(int opt, int ac, char **av) { return 0; }
|
||||||
|
+static int email_env(void) { return 0; }
|
||||||
+#define EMAIL_OPTIONS
|
+#define EMAIL_OPTIONS
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
--- mcelog-1.0pre3.6e4e2a000124/mcelog.c
|
Index: mcelog-1.0pre3.6e4e2a000124/mcelog.c
|
||||||
|
===================================================================
|
||||||
|
--- mcelog-1.0pre3.6e4e2a000124.orig/mcelog.c
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/mcelog.c
|
+++ mcelog-1.0pre3.6e4e2a000124/mcelog.c
|
||||||
@@ -37,6 +37,7 @@
|
@@ -37,6 +37,7 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@ -270,7 +304,7 @@
|
|||||||
enum cputype cputype = CPU_GENERIC;
|
enum cputype cputype = CPU_GENERIC;
|
||||||
|
|
||||||
char *logfn = LOG_DEV_FILENAME;
|
char *logfn = LOG_DEV_FILENAME;
|
||||||
@@ -70,7 +74,7 @@
|
@@ -70,7 +74,7 @@ static double cpumhz;
|
||||||
static int cpumhz_forced;
|
static int cpumhz_forced;
|
||||||
int ascii_mode;
|
int ascii_mode;
|
||||||
int dump_raw_ascii;
|
int dump_raw_ascii;
|
||||||
@ -279,7 +313,7 @@
|
|||||||
static char *inputfile;
|
static char *inputfile;
|
||||||
char *processor_flags;
|
char *processor_flags;
|
||||||
static int foreground;
|
static int foreground;
|
||||||
@@ -914,6 +918,7 @@
|
@@ -914,6 +918,7 @@ void usage(void)
|
||||||
"--num-errors N Only process N errors (for testing)\n"
|
"--num-errors N Only process N errors (for testing)\n"
|
||||||
"--pidfile file Write pid of daemon into file\n"
|
"--pidfile file Write pid of daemon into file\n"
|
||||||
);
|
);
|
||||||
@ -287,7 +321,7 @@
|
|||||||
diskdb_usage();
|
diskdb_usage();
|
||||||
print_cputypes();
|
print_cputypes();
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -979,6 +984,7 @@
|
@@ -979,6 +984,7 @@ static struct option options[] = {
|
||||||
{ "pidfile", 1, NULL, O_PIDFILE },
|
{ "pidfile", 1, NULL, O_PIDFILE },
|
||||||
{ "debug-numerrors", 0, NULL, O_DEBUG_NUMERRORS }, /* undocumented: for testing */
|
{ "debug-numerrors", 0, NULL, O_DEBUG_NUMERRORS }, /* undocumented: for testing */
|
||||||
DISKDB_OPTIONS
|
DISKDB_OPTIONS
|
||||||
@ -295,7 +329,7 @@
|
|||||||
{}
|
{}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1153,11 +1159,86 @@
|
@@ -1153,11 +1159,86 @@ static void drop_cred(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,11 +412,11 @@
|
|||||||
int i;
|
int i;
|
||||||
int len;
|
int len;
|
||||||
int finish = 0;
|
int finish = 0;
|
||||||
+ int mail_setup;
|
+ int mail_setup = 0;
|
||||||
|
|
||||||
if (recordlen == 0) {
|
if (recordlen == 0) {
|
||||||
Wprintf("no data in mce record\n");
|
Wprintf("no data in mce record\n");
|
||||||
@@ -1177,12 +1258,16 @@
|
@@ -1177,12 +1258,16 @@ static void process(int fd, unsigned rec
|
||||||
finish = 1;
|
finish = 1;
|
||||||
if (!mce_filter(mce, recordlen))
|
if (!mce_filter(mce, recordlen))
|
||||||
continue;
|
continue;
|
||||||
@ -399,7 +433,7 @@
|
|||||||
flushlog();
|
flushlog();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1293,6 +1378,8 @@
|
@@ -1293,6 +1378,8 @@ int main(int ac, char **av)
|
||||||
exit(0);
|
exit(0);
|
||||||
} else if (diskdb_cmd(opt, ac, av)) {
|
} else if (diskdb_cmd(opt, ac, av)) {
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -408,18 +442,22 @@
|
|||||||
} else if (opt == 0)
|
} else if (opt == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1301,6 +1388,8 @@
|
@@ -1301,6 +1388,10 @@ int main(int ac, char **av)
|
||||||
logfn = av[optind++];
|
logfn = av[optind++];
|
||||||
if (av[optind])
|
if (av[optind])
|
||||||
usage();
|
usage();
|
||||||
|
+ if (email_mode == 0)
|
||||||
|
+ email_mode = email_env();
|
||||||
+ /* email sending only in daemon mode */
|
+ /* email sending only in daemon mode */
|
||||||
+ email_mode &= daemon_mode;
|
+ email_mode &= daemon_mode;
|
||||||
checkdmi();
|
checkdmi();
|
||||||
general_setup();
|
general_setup();
|
||||||
|
|
||||||
--- mcelog-1.0pre3.6e4e2a000124/mcelog.h
|
Index: mcelog-1.0pre3.6e4e2a000124/mcelog.h
|
||||||
|
===================================================================
|
||||||
|
--- mcelog-1.0pre3.6e4e2a000124.orig/mcelog.h
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/mcelog.h
|
+++ mcelog-1.0pre3.6e4e2a000124/mcelog.h
|
||||||
@@ -120,6 +120,7 @@
|
@@ -120,6 +120,7 @@ enum cputype {
|
||||||
enum option_ranges {
|
enum option_ranges {
|
||||||
O_COMMON = 500,
|
O_COMMON = 500,
|
||||||
O_DISKDB = 1000,
|
O_DISKDB = 1000,
|
||||||
@ -427,7 +465,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum syslog_opt {
|
enum syslog_opt {
|
||||||
--- mcelog-1.0pre3.6e4e2a000124/msg.c
|
Index: mcelog-1.0pre3.6e4e2a000124/msg.c
|
||||||
|
===================================================================
|
||||||
|
--- mcelog-1.0pre3.6e4e2a000124.orig/msg.c
|
||||||
+++ mcelog-1.0pre3.6e4e2a000124/msg.c
|
+++ mcelog-1.0pre3.6e4e2a000124/msg.c
|
||||||
@@ -8,10 +8,13 @@
|
@@ -8,10 +8,13 @@
|
||||||
#include "mcelog.h"
|
#include "mcelog.h"
|
||||||
@ -443,7 +483,7 @@
|
|||||||
static char *output_fn;
|
static char *output_fn;
|
||||||
|
|
||||||
int need_stdout(void)
|
int need_stdout(void)
|
||||||
@@ -135,6 +138,11 @@
|
@@ -135,6 +138,11 @@ int Wprintf(char *fmt, ...)
|
||||||
n = vfprintf(output_fh ? output_fh : stdout, fmt, ap);
|
n = vfprintf(output_fh ? output_fh : stdout, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 16 14:41:55 UTC 2012 - trenn@suse.de
|
||||||
|
|
||||||
|
- bnc#774226 mcelog + systemd: won't start without MCELOG_ADMIN_EMAIL set
|
||||||
|
- fix uninitialized variable mail_setup
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jul 18 12:49:43 UTC 2012 - trenn@suse.de
|
Wed Jul 18 12:49:43 UTC 2012 - trenn@suse.de
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Name: mcelog
|
Name: mcelog
|
||||||
Summary: Log Machine Check Events
|
Summary: Log Machine Check Events
|
||||||
License: GPL-2.0+
|
License: GPL-2.0+
|
||||||
|
@ -7,7 +7,7 @@ ConditionPathExists=/dev/mcelog
|
|||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=-/etc/sysconfig/mcelog
|
EnvironmentFile=-/etc/sysconfig/mcelog
|
||||||
#warning: if this fails is due to a known kernel bug, fix that instead !
|
#warning: if this fails is due to a known kernel bug, fix that instead !
|
||||||
ExecStart=/usr/sbin/mcelog --ignorenodev --daemon --foreground --email $MCELOG_ADMIN_EMAIL
|
ExecStart=/usr/sbin/mcelog --ignorenodev --daemon --foreground
|
||||||
StandardOutput=syslog
|
StandardOutput=syslog
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user