All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yicong Yang <yangyicong@hisilicon.com>
To: "Luck, Tony" <tony.luck@intel.com>
Cc: <viro@zeniv.linux.org.uk>, <akpm@linux-foundation.org>,
	<David.Laight@aculab.com>, <linux-fsdevel@vger.kernel.org>,
	<akinobu.mita@gmail.com>, <linux-kernel@vger.kernel.org>,
	<linuxarm@huawei.com>, <prime.zeng@huawei.com>
Subject: Re: [PATCH v3] libfs: fix error cast of negative value in simple_attr_write()
Date: Mon, 7 Jun 2021 17:26:41 +0800	[thread overview]
Message-ID: <dfa18dc9-84fd-d21c-b21d-f58bf2c446eb@hisilicon.com> (raw)
In-Reply-To: <20210603160904.GA983893@agluck-desk2.amr.corp.intel.com>

On 2021/6/4 0:09, Luck, Tony wrote:
> On Sat, Nov 14, 2020 at 04:09:16PM +0800, Yicong Yang wrote:
>> 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. Make 'val' unsigned long long as what kstrtoull() takes, this
>> will eliminate the compile warning on no 64-bit architectures.
>>
>> Fixes: f7b88631a897 ("fs/libfs.c: fix simple_attr_write() on 32bit machines")
>> Signed-off-by: Yicong Yang <yangyicong@hisilicon.com>
>> ---
>> Change since v1:
>> - address the compile warning for non-64 bit platform.
>> Change since v2:
>> Link: https://lore.kernel.org/linux-fsdevel/1605000324-7428-1-git-send-email-yangyicong@hisilicon.com/
>> - make 'val' unsigned long long and mentioned in the commit
>> Link: https://lore.kernel.org/linux-fsdevel/1605261369-551-1-git-send-email-yangyicong@hisilicon.com/
> 
> Belated error report on this. Some validation team just moved to
> v5.10 and found their error injection scripts no longer work.
> 
> They have been using:
> 
> # echo $((-1 << 12)) > /sys/kernel/debug/apei/einj/param2
> 
> to write the mask value 0xfffffffffffff000 for many years ... but
> now writing a negative value (-4096) to this file gives an EINVAL error.
> 

ok. i didn't know this usage. I was using debugfs for my driver but
found I cannot figure out whether user has entered a negative value.

> Maybe they've been taking advantage of a bug all this time? The
> comment for debugfs_create_x64() says it is for reading/writing
> an unsigned value. But when a bug fix breaks user code ... then
> we are supposed to ask whether that bug is actually a feature.
> 

ok. sounds reasonable.

> If there was a debugfs_create_s64() I might just fix einj.c to
> use that ... but there isn't :-(

yes, a debugfs_create_s64() seems better for this case.
But it's okay for me to revert this fix if we regard this bug as
a feature.

Thanks
Yicong


      reply	other threads:[~2021-06-07  9:27 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-14  8:09 [PATCH v3] libfs: fix error cast of negative value in simple_attr_write() Yicong Yang
2021-06-03 16:09 ` Luck, Tony
2021-06-07  9:26   ` Yicong Yang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dfa18dc9-84fd-d21c-b21d-f58bf2c446eb@hisilicon.com \
    --to=yangyicong@hisilicon.com \
    --cc=David.Laight@aculab.com \
    --cc=akinobu.mita@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=prime.zeng@huawei.com \
    --cc=tony.luck@intel.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.