[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <alpine.LRH.2.20.1605181808140.20591@math.ut.ee>
Date: Wed, 18 May 2016 21:30:57 +0300 (EEST)
From: Meelis Roos <mroos@...ux.ee>
To: Oleg Nesterov <oleg@...hat.com>
cc: Andrew Morton <akpm@...ux-foundation.org>,
Linux Kernel list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] signal: move the "sig < SIGRTMIN" check into
siginmask(sig)
> All the users of siginmask() must ensure that sig < SIGRTMIN. sig_fatal()
> doesn't and this is wrong:
>
> [ 211.406327] UBSAN: Undefined behaviour in kernel/signal.c:911:6
> [ 211.406365] shift exponent 32 is too large for 32-bit type 'long unsigned int'
>
> the patch doesn't add the neccesary check to sig_fatal(), it moves the
> check into siginmask() and updates other callers.
>
> Reported-by: Meelis Roos <mroos@...ux.ee>
> Signed-off-by: Oleg Nesterov <oleg@...hat.com>
Tested on the same AthlonMP, on HP Proliant DL360G3 and PowerMac G4,
successfully - system still works, warnings are gone.
--
Meelis Roos (mroos@...ux.ee)
Powered by blists - more mailing lists