Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1091949pxb; Fri, 13 Nov 2020 04:07:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJxCTkA1VFvHr6ubrtKHQ53du2EgS/S2heFPiMDOSfmh7wgV+xfC2MR1oxLy/vz1bkcQGYOi X-Received: by 2002:a17:906:6b86:: with SMTP id l6mr1588877ejr.524.1605269278710; Fri, 13 Nov 2020 04:07:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605269278; cv=none; d=google.com; s=arc-20160816; b=LNZISC+OuPqSBAXmceKnZht8X6jPaPkKE/73fnpsxBFIwkZPJucUVbLkHP6BiIPdBm WaFF31Za6pw1wj356P1Yt+cBBLLTHNdyCe0k8HoZX6sqzNI9xnQt2cnNesWf3vviNBsv AnGiZgDWGjpBgDPi6OHO/SQD5cEAEJlqjPgLvvpB4smFAfdGRkGtFp2fdcBKhsQI8HxH KNr5ZljyhrFd1xuGrTrBsniV545AbzhDygzA9e042E94JbMyX6btzKyyIya96YYG01mf sZSUZY7lloPQeikTYqk4E9Yk6Xd3MKDKglqO5iHlfqiXS2srZQtwZgoB9mUsMmG/diYo JNjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=ykwOqHLPAnM4tEZu/XFbNBy5/w84a9WylEE2pnyTMxY=; b=DroEC5FcfQsP87TOr+d3w3JV4LswoDQJQ7yptYI2+VVBxmrlpDVZQFTiDgnKMIXtFR lcQ4favPEYv1xRwSg6cPiWFBLKOdVr0OtIXzWpRGAs7BccMhlV6GMutbB1bLIrK6oyxp zLyd0LRQwFXlkNS3igT0JjIYR7pH6WNVjXnInMs1sUYivMr3SW31RsQY/1VNazfDEbzq AuiYhv/LuzJNO9WE9HZRytZNieJ92I+I53INRfFwXDUMLm+pxTtpO3GOr+EET0MVZCkF yJq58/f/7T/u0gFjPGC4Lb5w72NbpW+6Blq/bXWd/X7+YkJEyQShUgQqJsPZpN4XlK1r O5pQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hs35si5851016ejc.312.2020.11.13.04.07.33; Fri, 13 Nov 2020 04:07:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727094AbgKMMFK convert rfc822-to-8bit (ORCPT + 99 others); Fri, 13 Nov 2020 07:05:10 -0500 Received: from eu-smtp-delivery-151.mimecast.com ([207.82.80.151]:20081 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726514AbgKML1r (ORCPT ); Fri, 13 Nov 2020 06:27:47 -0500 Received: from AcuMS.aculab.com (156.67.243.126 [156.67.243.126]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-74-q55dkbMJN9iy_mSgtJxHNQ-1; Fri, 13 Nov 2020 11:27:42 +0000 X-MC-Unique: q55dkbMJN9iy_mSgtJxHNQ-1 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) by AcuMS.aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 13 Nov 2020 11:27:41 +0000 Received: from AcuMS.Aculab.com ([fe80::43c:695e:880f:8750]) by AcuMS.aculab.com ([fe80::43c:695e:880f:8750%12]) with mapi id 15.00.1347.000; Fri, 13 Nov 2020 11:27:41 +0000 From: David Laight To: 'Yicong Yang' , "viro@zeniv.linux.org.uk" , "akpm@linux-foundation.org" , "linux-fsdevel@vger.kernel.org" CC: "akinobu.mita@gmail.com" , "linux-kernel@vger.kernel.org" , "linuxarm@huawei.com" , "prime.zeng@huawei.com" Subject: RE: [PATCH v2] libfs: fix error cast of negative value in simple_attr_write() Thread-Topic: [PATCH v2] libfs: fix error cast of negative value in simple_attr_write() Thread-Index: AQHWuaN2HYrg6O40uUKH2XiBcGhEHanF7BWQ Date: Fri, 13 Nov 2020 11:27:41 +0000 Message-ID: References: <1605261369-551-1-git-send-email-yangyicong@hisilicon.com> In-Reply-To: <1605261369-551-1-git-send-email-yangyicong@hisilicon.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=C51A453 smtp.mailfrom=david.laight@aculab.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Yicong Yang > Sent: 13 November 2020 09:56 > The attr->set() receive a value of u64, but simple_strtoll() is used > for doing the conversion. It will lead to the error cast if user inputs > a negative value. > > Use kstrtoull() instead of simple_strtoll() to convert a string got > from the user to an unsigned value. The former will return '-EINVAL' if > it gets a negetive value, but the latter can't handle the situation > correctly. > > Fixes: f7b88631a897 ("fs/libfs.c: fix simple_attr_write() on 32bit machines") > Signed-off-by: Yicong Yang > --- > Change since v1: > - address the compile warning for non-64 bit platform > > fs/libfs.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/fs/libfs.c b/fs/libfs.c > index fc34361..3a0d99c 100644 > --- a/fs/libfs.c > +++ b/fs/libfs.c > @@ -977,7 +977,9 @@ ssize_t simple_attr_write(struct file *file, const char __user *buf, > goto out; > > attr->set_buf[size] = '\0'; > - val = simple_strtoll(attr->set_buf, NULL, 0); > + ret = kstrtoull(attr->set_buf, 0, (unsigned long long *)&val); That cast is horrid. Casting 'pointer to integer' types is just asking for trouble. You either need to change the type of 'val' or use an intermediary variable of the correct type. David > + if (ret) > + goto out; > ret = attr->set(attr->data, val); > if (ret == 0) > ret = len; /* on success, claim we got the whole input */ > -- > 2.8.1 - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)