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
| ||
|
Date: Mon, 29 Feb 2016 13:58:23 +0100 From: Michal Hocko <mhocko@...nel.org> To: LKML <linux-kernel@...r.kernel.org> Cc: Peter Zijlstra <peterz@...radead.org>, Ingo Molnar <mingo@...hat.com>, Thomas Gleixner <tglx@...utronix.de>, "H. Peter Anvin" <hpa@...or.com>, "David S. Miller" <davem@...emloft.net>, Tony Luck <tony.luck@...el.com>, Andrew Morton <akpm@...ux-foundation.org>, Chris Zankel <chris@...kel.net>, Max Filippov <jcmvbkbc@...il.com>, x86@...nel.org, linux-alpha@...r.kernel.org, linux-ia64@...r.kernel.org, linux-s390@...r.kernel.org, linux-sh@...r.kernel.org, sparclinux@...r.kernel.org, linux-xtensa@...ux-xtensa.org, linux-arch@...r.kernel.org, Michal Hocko <mhocko@...e.com> Subject: [PATCH 09/11] xtensa, rwsem: provide __down_write_killable From: Michal Hocko <mhocko@...e.com> which uses the same fast path as __down_write except it falls back to rwsem_down_write_failed_killable slow path and return -EINTR if killed. Signed-off-by: Michal Hocko <mhocko@...e.com> --- arch/xtensa/include/asm/rwsem.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/xtensa/include/asm/rwsem.h b/arch/xtensa/include/asm/rwsem.h index 593483f6e1ff..6283823b8040 100644 --- a/arch/xtensa/include/asm/rwsem.h +++ b/arch/xtensa/include/asm/rwsem.h @@ -59,6 +59,19 @@ static inline void __down_write(struct rw_semaphore *sem) rwsem_down_write_failed(sem); } +static inline int __down_write_killable(struct rw_semaphore *sem) +{ + int tmp; + + tmp = atomic_add_return(RWSEM_ACTIVE_WRITE_BIAS, + (atomic_t *)(&sem->count)); + if (tmp != RWSEM_ACTIVE_WRITE_BIAS) + if (IS_ERR(rwsem_down_write_failed_killable(sem))) + return -EINTR; + + return 0; +} + static inline int __down_write_trylock(struct rw_semaphore *sem) { int tmp; -- 2.7.0
Powered by blists - more mailing lists