lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20180226101951.0136f963@balbir.ozlabs.ibm.com> Date: Mon, 26 Feb 2018 10:19:51 +1100 From: Balbir Singh <bsingharora@...il.com> To: Ram Pai <linuxram@...ibm.com> Cc: shuahkh@....samsung.com, linux-kselftest@...r.kernel.org, mpe@...erman.id.au, linuxppc-dev@...ts.ozlabs.org, linux-mm@...ck.org, x86@...nel.org, linux-arch@...r.kernel.org, linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org, mingo@...hat.com, akpm@...ux-foundation.org, dave.hansen@...el.com, benh@...nel.crashing.org, paulus@...ba.org, khandual@...ux.vnet.ibm.com, aneesh.kumar@...ux.vnet.ibm.com, hbabu@...ibm.com, mhocko@...nel.org, bauerman@...ux.vnet.ibm.com, ebiederm@...ssion.com, arnd@...db.de Subject: Re: [PATCH v12 22/22] selftests/vm: Fix deadlock in protection_keys.c On Wed, 21 Feb 2018 17:55:41 -0800 Ram Pai <linuxram@...ibm.com> wrote: > From: Thiago Jung Bauermann <bauerman@...ux.vnet.ibm.com> > > 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@...il.com>
Powered by blists - more mailing lists