On Wed, 21 Feb 2018 17:55:41 -0800 Ram Pai <linuxram@xxxxxxxxxx> wrote: > From: Thiago Jung Bauermann <bauerman@xxxxxxxxxxxxxxxxxx> > > The sig_chld() handler calls dprintf2() taking care of setting > dprint_in_signal so that sigsafe_printf() won't call printf(). > Unfortunately, this precaution is is negated by dprintf_level(), which > has a call to fflush(). > fflush() is not the signal-safe function list, so this makes sense. I wonder if fflush() is needed in sigsafe_printf()? How about? diff --git a/tools/testing/selftests/x86/pkey-helpers.h b/tools/testing/selftests/x86/pkey-helpers.h index b3cb7670e026..2c3b39851f10 100644 --- a/tools/testing/selftests/x86/pkey-helpers.h +++ b/tools/testing/selftests/x86/pkey-helpers.h @@ -29,6 +29,7 @@ static inline void sigsafe_printf(const char *format, ...) va_start(ap, format); if (!dprint_in_signal) { vprintf(format, ap); + fflush(NULL); \ } else { int ret; int len = vsnprintf(dprint_in_signal_buffer, @@ -49,7 +50,6 @@ static inline void sigsafe_printf(const char *format, ...) #define dprintf_level(level, args...) do { \ if (level <= DEBUG_LEVEL) \ sigsafe_printf(args); \ - fflush(NULL); \ } while (0) #define dprintf0(args...) dprintf_level(0, args) #define dprintf1(args...) dprintf_level(1, args) But both are equivalent I guess, so Acked-by: Balbir Singh <bsingharora@xxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html