Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp1013354yba; Thu, 4 Apr 2019 02:25:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqy35g41Ws2z3ekHc6cJO5fgi2cH6RJdXqVDbqy3gAYqoNuV+GEC9o5klttLCc1e4bBmQt5g X-Received: by 2002:a17:902:b706:: with SMTP id d6mr5273224pls.250.1554369954088; Thu, 04 Apr 2019 02:25:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554369954; cv=none; d=google.com; s=arc-20160816; b=acGAZlp+NZJFCrYyh+y+LKb3s44qtgHjKPA8kgceWVeyzIsuUWUDCmucycpRg/iVBT yXcoHDY/52gl767DBIn51X/O7CTLe6WzH9t2LeqRc3CS3dp85PXQO7nh1pTohUfHYXBA k4I36hGip8GfDgy13uLqXEe84FoCmm+FxbuaDVbMN3x5q1Gumu3E8dz4hLlaPRsvQGSz /6O+3sjJ/mAOABsw9cwDNXTz/KOQs4ZRjX4B0y5vu9dunsPF+fEUzvtAj/N1PBIsqnQv Xw+FEBYi2sabP1ZyjBReUgz1IcRX9HOko58DPHIr+RS+DcLpukHhn4LYA5SIjk5f5l6h X1KQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=w4VwI/aVYQRY8B7zSEPBf9+vZ1cIsVCCQB4VnxW3knw=; b=BPmWpkXwfYhyniWpSOYwIlYOS4kmJn2V+5OozhbMDghd9vfiI1QuZllksxh35Wbk4B zyfqhMZ+xR5LfWyylAvljG2NtCjBN3dZe6192FusZleygTleSQk89f+gGze70XkYCneB ZCMuEXWNmYiDGMcRnSf5IgekYpKohpJilsEj9XKwZJOf2IlTiptFpGmUq3yl+GgN7Sy7 5wa6HM/lF13ONpur34PmFZUg1dxW/ZQlv+JqUYMWQcm7YQvJIhqKrvWCLYjFCgqaWA3q 8P+buoYt2OtXOdZcQ2hNNB50cyoDI/1YELyJerCdJhswqTazHub9D9pbh149tcNlSaLR Qplg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BKxZGWFk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t23si15908670pfa.64.2019.04.04.02.25.39; Thu, 04 Apr 2019 02:25:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BKxZGWFk; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387683AbfDDJON (ORCPT + 99 others); Thu, 4 Apr 2019 05:14:13 -0400 Received: from mail.kernel.org ([198.145.29.99]:54678 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387674AbfDDJOL (ORCPT ); Thu, 4 Apr 2019 05:14:11 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (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 3A4D620643; Thu, 4 Apr 2019 09:14:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554369250; bh=3Zy4JZ+m6UCsvdfDWQlfGRFAMYKgGJRjhIADQIBPDFE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BKxZGWFkPFYiKY/QRSCKaCiSVfBioiLH6Uab4pmd/V2DihL45bTyAVtDF/JQs7SSP 3oi/VdA/4VsLP7brBuW2NEfZhg13bF1qGoKiyuDBta7K1q6IPUk4ADOsmpjDB8NS4X tCb9FPCU9t8LdxRmFT2cxwi7eYNbIq4XLt8hp6QM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Coly Li , Jens Axboe , Sasha Levin Subject: [PATCH 5.0 153/246] bcache: improve sysfs_strtoul_clamp() Date: Thu, 4 Apr 2019 10:47:33 +0200 Message-Id: <20190404084624.527172555@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084619.236418459@linuxfoundation.org> References: <20190404084619.236418459@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 5.0-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 596b5a5dd1bc2fa019fdaaae522ef331deef927f ] Currently sysfs_strtoul_clamp() is defined as, 82 #define sysfs_strtoul_clamp(file, var, min, max) \ 83 do { \ 84 if (attr == &sysfs_ ## file) \ 85 return strtoul_safe_clamp(buf, var, min, max) \ 86 ?: (ssize_t) size; \ 87 } while (0) The problem is, if bit width of var is less then unsigned long, min and max may not protect var from integer overflow, because overflow happens in strtoul_safe_clamp() before checking min and max. To fix such overflow in sysfs_strtoul_clamp(), to make min and max take effect, this patch adds an unsigned long variable, and uses it to macro strtoul_safe_clamp() to convert an unsigned long value in range defined by [min, max]. Then assign this value to var. By this method, if bit width of var is less than unsigned long, integer overflow won't happen before min and max are checking. Now sysfs_strtoul_clamp() can properly handle smaller data type like unsigned int, of cause min and max should be defined in range of unsigned int too. Signed-off-by: Coly Li Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin --- drivers/md/bcache/sysfs.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/md/bcache/sysfs.h b/drivers/md/bcache/sysfs.h index 3fe82425859c..0ad2715a884e 100644 --- a/drivers/md/bcache/sysfs.h +++ b/drivers/md/bcache/sysfs.h @@ -81,9 +81,16 @@ do { \ #define sysfs_strtoul_clamp(file, var, min, max) \ do { \ - if (attr == &sysfs_ ## file) \ - return strtoul_safe_clamp(buf, var, min, max) \ - ?: (ssize_t) size; \ + if (attr == &sysfs_ ## file) { \ + unsigned long v = 0; \ + ssize_t ret; \ + ret = strtoul_safe_clamp(buf, v, min, max); \ + if (!ret) { \ + var = v; \ + return size; \ + } \ + return ret; \ + } \ } while (0) #define strtoul_or_return(cp) \ -- 2.19.1