From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932859AbcLMLWM (ORCPT ); Tue, 13 Dec 2016 06:22:12 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:34800 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752971AbcLMLWL (ORCPT ); Tue, 13 Dec 2016 06:22:11 -0500 Date: Tue, 13 Dec 2016 19:21:48 +0800 From: Boqun Feng To: Colin King Cc: "Paul E . McKenney" , Josh Triplett , Steven Rostedt , Mathieu Desnoyers , Lai Jiangshan , linux-kernel@vger.kernel.org Subject: Re: [PATCH] rcu: shift by 1UL rather than 1 to fix sign extension error Message-ID: <20161213112148.GE9728@tardis.cn.ibm.com> References: <20161213105646.9598-1-colin.king@canonical.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="zaRBsRFn0XYhEU69" Content-Disposition: inline In-Reply-To: <20161213105646.9598-1-colin.king@canonical.com> User-Agent: Mutt/1.7.1 (2016-10-04) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --zaRBsRFn0XYhEU69 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Dec 13, 2016 at 10:56:46AM +0000, Colin King wrote: > From: Colin Ian King >=20 > mask and bit are unsigned longs, so if bit is 31 we end up sign > extending the 1 and mask ends up as 0xffffffff80000000. Fix this > by explicitly adding integer suffix UL ensure 1 is a unsigned long > rather than an signed int. >=20 Right, you are, and the tool is ;-) If @bit is greater than 32, we even got an undefined behavior in C ;-( This is my careless mistake, thank you for finding it out and fix it! > Issue found with static analysis with CoverityScan, CID 1388564 >=20 > Fixes: 8965c3ce4718754db ("rcu: Use leaf_node_for_each_mask_possible_cpu(= ) in force_qs_rnp()") > Signed-off-by: Colin Ian King I think Paul only queued that for running tests and I have almost finished a v2. I will fold your fix in my patch and add your SoB along with mine, does that work for you? TBH, this situation is kinda new to me, so if anyone has any suggestion, please let me know ;-) Regards, Boqun > --- > kernel/rcu/tree.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) >=20 > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 10162ac..6ecedd8 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -3051,7 +3051,7 @@ static void force_qs_rnp(struct rcu_state *rsp, > =20 > leaf_node_for_each_mask_possible_cpu(rnp, rnp->qsmask, bit, cpu) > if (f(per_cpu_ptr(rsp->rda, cpu), isidle, maxj)) > - mask |=3D 1 << bit; > + mask |=3D 1UL << bit; > =20 > if (mask !=3D 0) { > /* Idle/offline CPUs, report (releases rnp->lock. */ > --=20 > 2.10.2 >=20 --zaRBsRFn0XYhEU69 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEcBAABCAAGBQJYT9nGAAoJEEl56MO1B/q4tAEH/0fwSWxy9l1FWR+9UEWOeYth OLVTlITWHWevB3YlFuXrInVOIux5VTSBuVR/TJZbq1ZMCdDLSQfudCIthbAfUufS USzn3NWy2WJTzFeeeTwRqMWCpL0bM3r1kXRU7y08+XIjsc8yx9wtlfzjBx5Yoa+r E/OJ3V1tXVhfktFjsOX/zhWbQA7onobHszzVTyREzoAvA6OrvSd8qcdGJIGikoKR 2kvL2pXqjuld1shIL2Hf3Nzn14XB+eo0Tmi1v31UAtWR6DB1uEEWTLefX9bhF9Z8 JvAc17csq4bBw3adFUXg5EIO4fB0EIfjy0j3Z4/a2+3Z/K0BGnH8/WkxsXYlTRQ= =75jY -----END PGP SIGNATURE----- --zaRBsRFn0XYhEU69--