linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: 王擎 <wangqing@vivo.com>
To: Qu Wenruo <quwenruo.btrfs@gmx.com>,
	"dsterba@suse.cz" <dsterba@suse.cz>,
	Anand Jain <anand.jain@oracle.com>, Chris Mason <clm@fb.com>,
	Josef Bacik <josef@toxicpanda.com>,
	David Sterba <dsterba@suse.com>,
	"linux-btrfs@vger.kernel.org" <linux-btrfs@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: 回复: [PATCH] btrfs: replace snprintf in show functions with sysfs_emit
Date: Wed, 13 Oct 2021 11:01:27 +0000	[thread overview]
Message-ID: <SL2PR06MB3082B71AFE2C42CABDD5E6D6BDB79@SL2PR06MB3082.apcprd06.prod.outlook.com> (raw)
In-Reply-To: <ADsAzABEEmLRWHzgUOl4Sqr5.9.1634122164687.Hmail.wangqing@vivo.com>


>> On Wed, Oct 13, 2021 at 03:51:33PM +0800, Anand Jain wrote:
>>> On 13/10/2021 11:28, Qing Wang wrote:
>>>> coccicheck complains about the use of snprintf() in sysfs show functions.
>>>
>>> It looks like the reason is snprintf() unaware of the PAGE_SIZE
>>> max_limit of the buf.
>>>
>>>> Fix the following coccicheck warning:
>>>> fs/btrfs/sysfs.c:335:8-16: WARNING: use scnprintf or sprintf.
>
>IIRC sprintf() is less safe than snprintf().
>Is the check really correct to mention sprintf()?

device_attr_show.cocci metions show() must not use snprintf() 
when formatting the value to be returned to user space.
If you can guarantee that an overflow will never happen you
can use sprintf() otherwise you must use scnprintf().

My understanding is this is not only to solve the possible 
overflow issue, snprintf() returns the length of the string, not 
the length actually written. We can directly use sysfs_emit() here.

Thanks,

Qing

>>>
>>> Hm. We use snprintf() at quite a lot more places in sysfs.c and, I don't
>>> see them getting this fix. Why?
>>
>> I guess the patch is only addressing the warning for snprintf, reading
>> the sources would show how many more conversions could have been done of
>> scnprintf calls.
>>
>>>> Use sysfs_emit instead of scnprintf or sprintf makes more sense.
>>>
>>> Below commit has added it. Nice.
>>>
>>> commit 2efc459d06f1630001e3984854848a5647086232
>>> Date:   Wed Sep 16 13:40:38 2020 -0700
>>>
>>>       sysfs: Add sysfs_emit and sysfs_emit_at to format sysfs out
>>
>> The conversion to the standard helper is good, but should be done
>> in the entire file.
>>
>
> Yeah, the same idea, all sysfs interface should convert to the new
> interface, not only the snprintf().
>
> Thanks,
> Qu

  parent reply	other threads:[~2021-10-13 11:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-13  3:28 [PATCH] btrfs: replace snprintf in show functions with sysfs_emit Qing Wang
2021-10-13  7:51 ` Anand Jain
2021-10-13 10:36   ` David Sterba
2021-10-13 10:49     ` Qu Wenruo
     [not found]     ` <ADsAzABEEmLRWHzgUOl4Sqr5.9.1634122164687.Hmail.wangqing@vivo.com>
2021-10-13 11:01       ` 王擎 [this message]
2021-10-13 11:08         ` Qu Wenruo

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=SL2PR06MB3082B71AFE2C42CABDD5E6D6BDB79@SL2PR06MB3082.apcprd06.prod.outlook.com \
    --to=wangqing@vivo.com \
    --cc=anand.jain@oracle.com \
    --cc=clm@fb.com \
    --cc=dsterba@suse.com \
    --cc=dsterba@suse.cz \
    --cc=josef@toxicpanda.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=quwenruo.btrfs@gmx.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).