From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F541C4360C for ; Sat, 28 Sep 2019 21:24:00 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D94C020866 for ; Sat, 28 Sep 2019 21:23:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="wLdl2VGn" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D94C020866 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 731A56B0003; Sat, 28 Sep 2019 17:23:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6E2466B0005; Sat, 28 Sep 2019 17:23:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5F8376B0006; Sat, 28 Sep 2019 17:23:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0169.hostedemail.com [216.40.44.169]) by kanga.kvack.org (Postfix) with ESMTP id 3F73D6B0003 for ; Sat, 28 Sep 2019 17:23:59 -0400 (EDT) Received: from smtpin14.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with SMTP id 9FB8468B3 for ; Sat, 28 Sep 2019 21:23:58 +0000 (UTC) X-FDA: 75985606956.14.frog66_79fcfb34efc2a X-HE-Tag: frog66_79fcfb34efc2a X-Filterd-Recvd-Size: 3175 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf35.hostedemail.com (Postfix) with ESMTP for ; Sat, 28 Sep 2019 21:23:58 +0000 (UTC) Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id AFAEC2082F; Sat, 28 Sep 2019 21:23:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569705837; bh=IL2VVcFyxpeEUNpyOhzjpMAkldnUFCjDXmLJjSwk0b4=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=wLdl2VGnUe1bttx+zoWYTFG0bVC3xiy9wTHUhXVGdxu0oGh+c2V1lcRZUegpXKI4O bDk12tLvcuBPRlRc+QaY9NVwiuEUXyWwrjig3MiTd2pzE1GZdfzJTxAKehjSZOqBTf G9t6No8G87XcrxeJ2aBKM9W7gl2v6Wr2VIa1YDGY= Date: Sat, 28 Sep 2019 14:23:56 -0700 From: Andrew Morton To: Dan Carpenter Cc: Greg Kroah-Hartman , Andy Shevchenko , tglx@linutronix.de, Enrico Weigelt , Kate Stewart , linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [PATCH] mm, vmpressure: Fix a signedness bug in vmpressure_register_event() Message-Id: <20190928142356.932cff0ad6c17f4a18edc80f@linux-foundation.org> In-Reply-To: <20190925110449.GO3264@mwanda> References: <20190925110449.GO3264@mwanda> X-Mailer: Sylpheed 3.5.1 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, 25 Sep 2019 14:04:49 +0300 Dan Carpenter wrote: > The "mode" and "level" variables are enums and in this context GCC will > treat them as unsigned ints so the error handling is never triggered. > > I also removed the bogus initializer because it isn't required any more > and it's sort of confusing. > A bit picky of me, but it's an eyesore to assign an int to an enum, then compare the casted enum to an int then copy the enum back to an int. How about doing it this way? Only copy the int to the enum once we know it's within range? --- a/mm/vmpressure.c~mm-vmpressure-fix-a-signedness-bug-in-vmpressure_register_event-fix +++ a/mm/vmpressure.c @@ -375,20 +375,18 @@ int vmpressure_register_event(struct mem /* Find required level */ token = strsep(&spec, ","); - level = match_string(vmpressure_str_levels, VMPRESSURE_NUM_LEVELS, token); - if ((int)level < 0) { - ret = level; + ret = match_string(vmpressure_str_levels, VMPRESSURE_NUM_LEVELS, token); + if (ret < 0) goto out; - } + level = ret; /* Find optional mode */ token = strsep(&spec, ","); if (token) { - mode = match_string(vmpressure_str_modes, VMPRESSURE_NUM_MODES, token); - if ((int)mode < 0) { - ret = mode; + ret = match_string(vmpressure_str_modes, VMPRESSURE_NUM_MODES, token); + if (ret < 0) goto out; - } + mode = ret; } ev = kzalloc(sizeof(*ev), GFP_KERNEL); _