Message ID | 1439879319-4950-1-git-send-email-sakib@meta.ua |
---|---|
State | Accepted |
Headers | show |
diff --git a/ulog.c b/ulog.c index 776a0c4..80b67ac 100644 --- a/ulog.c +++ b/ulog.c @@ -90,7 +90,7 @@ static void ulog_kmsg(int priority, const char *fmt, va_list ap) { FILE *kmsg; - if ((kmsg = fopen("/dev/kmsg", "w")) != NULL) { + if ((kmsg = fopen("/dev/kmsg", "r+")) != NULL) { fprintf(kmsg, "<%u>", priority); if (_ulog_ident)
Race is possible in ulog_kmsg(): if no /dev/kmsg exists (e.g. while /dev gets re-mounted) regular file created instead. From this point system goes without kernel logger: special character file can't be created anymore, all clients keep overwriting single message in regular file. To avoid this we open file in "r+" mode which doesn't create file if it's not found. Signed-off-by: Sergiy Kibrik <sakib@meta.ua> Cc: John Crispin <blogic@openwrt.org> --- ulog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)