All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	gregkh@linuxfoundation.org, alex.elder@linaro.org,
	Johan Hovold <johan@kernel.org>,
	kbuild test robot <lkp@intel.com>,
	linux-arch@vger.kernel.org, michal.lkml@markovi.net,
	linux-kernel@vger.kernel.org, arnd@arndb.de,
	yamada.masahiro@socionext.com, lgirdwood@gmail.com,
	broonie@kernel.org, rdunlap@infradead.org, x86@kernel.org,
	linux@armlinux.org.uk, changbin.du@intel.com,
	linux-sparse@vger.kernel.org, mingo@redhat.com,
	kbuild-all@01.org, akpm@linux-foundation.org,
	changbin.du@gmail.com, tglx@linutronix.de,
	linux-kbuild@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
Date: Thu, 7 Jun 2018 10:06:37 +0200	[thread overview]
Message-ID: <20180607080637.GQ13775@localhost> (raw)
In-Reply-To: <20180607041718.qpqucjzlvcm5h3gn@vireshk-i7>

On Thu, Jun 07, 2018 at 09:47:18AM +0530, Viresh Kumar wrote:

> On 06-06-18, 14:26, Steven Rostedt wrote:
> > On Wed, 6 Jun 2018 16:26:00 +0200
> > Johan Hovold <johan@kernel.org> wrote:
> > 
> > > Looks like the greybus code above is working as intended by checking for
> > > unterminated string after the strncpy, even if this does now triggers
> > > the truncation warning.
> 
> So why exactly are we generating a warning here ? Is it because it is possible
> that the first n bytes of src may not have the null terminating byte and the
> dest may not be null terminated eventually ?

Yes, new warning in GCC 8:

	https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation

> Maybe I should just use memcpy here then ?

No, as you note below, you use strncpy to clear the rest of the buffer.

> But AFAIR, I used strncpy() specifically because it also sets all the remaining
> bytes after the null terminating byte with the null terminating byte. And so it
> is pretty easy for me to check if the final string is null terminated by
> checking [max - 1] byte against '\0', which the code is doing right now.
> 
> I am not sure what would the best way to get around this incorrect-warning.

It seems gcc just isn't smart enough in this case (where you check for
overflow and never use a non-terminated string), but it is supposed to
detect when the string is unconditionally terminated. So perhaps just
adding a redundant buf[size-1] = '\0' before returning in the error path
or after the error path would shut it up. But that's a bit of a long
shot, I admit.

Probably best to leave things as they are, and let the gcc folks find a
way to handle such false positives.

Thanks,
Johan

WARNING: multiple messages have this Message-ID (diff)
From: johan@kernel.org (Johan Hovold)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations
Date: Thu, 7 Jun 2018 10:06:37 +0200	[thread overview]
Message-ID: <20180607080637.GQ13775@localhost> (raw)
In-Reply-To: <20180607041718.qpqucjzlvcm5h3gn@vireshk-i7>

On Thu, Jun 07, 2018 at 09:47:18AM +0530, Viresh Kumar wrote:

> On 06-06-18, 14:26, Steven Rostedt wrote:
> > On Wed, 6 Jun 2018 16:26:00 +0200
> > Johan Hovold <johan@kernel.org> wrote:
> > 
> > > Looks like the greybus code above is working as intended by checking for
> > > unterminated string after the strncpy, even if this does now triggers
> > > the truncation warning.
> 
> So why exactly are we generating a warning here ? Is it because it is possible
> that the first n bytes of src may not have the null terminating byte and the
> dest may not be null terminated eventually ?

Yes, new warning in GCC 8:

	https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation

> Maybe I should just use memcpy here then ?

No, as you note below, you use strncpy to clear the rest of the buffer.

> But AFAIR, I used strncpy() specifically because it also sets all the remaining
> bytes after the null terminating byte with the null terminating byte. And so it
> is pretty easy for me to check if the final string is null terminated by
> checking [max - 1] byte against '\0', which the code is doing right now.
> 
> I am not sure what would the best way to get around this incorrect-warning.

It seems gcc just isn't smart enough in this case (where you check for
overflow and never use a non-terminated string), but it is supposed to
detect when the string is unconditionally terminated. So perhaps just
adding a redundant buf[size-1] = '\0' before returning in the error path
or after the error path would shut it up. But that's a bit of a long
shot, I admit.

Probably best to leave things as they are, and let the gcc folks find a
way to handle such false positives.

Thanks,
Johan

  parent reply	other threads:[~2018-06-07  8:06 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-05  8:13 [RESEND PATCH v5 0/4] kernel hacking: GCC optimization for better debug experience (-Og) changbin.du
2018-06-05  8:13 ` changbin.du at intel.com
2018-06-05  8:13 ` [PATCH v5 1/4] x86/mm: surround level4_kernel_pgt with #ifdef CONFIG_X86_5LEVEL...#endif changbin.du
2018-06-05  8:13   ` changbin.du at intel.com
2018-06-05  8:13 ` [PATCH v5 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations changbin.du
2018-06-05  8:13   ` changbin.du at intel.com
2018-06-05 21:21   ` kbuild test robot
2018-06-05 21:21     ` kbuild test robot
2018-06-05 21:21     ` kbuild test robot
2018-06-05 21:21     ` kbuild test robot
2018-06-06 13:57     ` Steven Rostedt
2018-06-06 13:57       ` Steven Rostedt
2018-06-06 14:26       ` Johan Hovold
2018-06-06 14:26         ` Johan Hovold
2018-06-06 18:26         ` Steven Rostedt
2018-06-06 18:26           ` Steven Rostedt
2018-06-07  4:17           ` Viresh Kumar
2018-06-07  4:17             ` Viresh Kumar
2018-06-07  7:46             ` Du, Changbin
2018-06-07  7:46               ` Du, Changbin
2018-06-07  8:38               ` Viresh Kumar
2018-06-07  8:38                 ` Viresh Kumar
2018-06-07  9:03                 ` Bernd Petrovitsch
2018-06-07  9:03                   ` Bernd Petrovitsch
2018-06-07  9:03                   ` Bernd Petrovitsch
2018-06-07  9:10                   ` Viresh Kumar
2018-06-07  9:10                     ` Viresh Kumar
2018-06-07  9:18                     ` Johan Hovold
2018-06-07  9:18                       ` Johan Hovold
2018-06-07  9:19                       ` Viresh Kumar
2018-06-07  9:19                         ` Viresh Kumar
2018-06-07 10:12                         ` Alex Elder
2018-06-07 10:12                           ` Alex Elder
2018-06-07 10:27                           ` Johan Hovold
2018-06-07 10:27                             ` Johan Hovold
2018-06-07 10:27                             ` Johan Hovold
2018-06-08 20:03                       ` Steven Rostedt
2018-06-08 20:03                         ` Steven Rostedt
2018-06-11 15:46                         ` Johan Hovold
2018-06-11 15:46                           ` Johan Hovold
2018-06-07  8:06             ` Johan Hovold [this message]
2018-06-07  8:06               ` Johan Hovold
2018-06-05 21:34   ` kbuild test robot
2018-06-05 21:34     ` kbuild test robot
2018-06-05 21:34     ` kbuild test robot
2018-06-05 21:34     ` kbuild test robot
2018-06-06 14:01     ` Steven Rostedt
2018-06-06 14:01       ` Steven Rostedt
2018-06-05  8:13 ` [PATCH v5 3/4] ARM: mm: fix build error in fix_to_virt with CONFIG_CC_OPTIMIZE_FOR_DEBUGGING changbin.du
2018-06-05  8:13   ` changbin.du at intel.com
2018-06-05  8:13 ` [PATCH v5 4/4] kernel hacking: new config CC_OPTIMIZE_FOR_DEBUGGING to apply GCC -Og optimization changbin.du
2018-06-05  8:13   ` changbin.du at intel.com
2018-06-10 10:44   ` kbuild test robot
2018-06-10 10:44     ` kbuild test robot
2018-06-10 10:44     ` kbuild test robot
2018-06-10 10:44     ` kbuild test robot
2018-06-10 15:49   ` kbuild test robot
2018-06-10 15:49     ` kbuild test robot
2018-06-10 15:49     ` kbuild test robot
2018-06-10 15:49     ` kbuild test robot
2018-06-11 16:00     ` Steven Rostedt
2018-06-11 16:00       ` Steven Rostedt
  -- strict thread matches above, loose matches on Subject: below --
2018-05-11  8:09 [PATCH v5 0/4] kernel hacking: GCC optimization for better debug experience (-Og) changbin.du
2018-05-11  8:09 ` [PATCH v5 2/4] kernel hacking: new config NO_AUTO_INLINE to disable compiler auto-inline optimizations changbin.du
2018-05-17 15:49   ` kbuild test robot
2018-05-17 15:49     ` kbuild test robot
2018-05-17 15:49     ` kbuild test robot
2018-05-17 17:58   ` kbuild test robot
2018-05-17 17:58     ` kbuild test robot
2018-05-17 17:58     ` kbuild test robot

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=20180607080637.GQ13775@localhost \
    --to=johan@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=alex.elder@linaro.org \
    --cc=arnd@arndb.de \
    --cc=broonie@kernel.org \
    --cc=changbin.du@gmail.com \
    --cc=changbin.du@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kbuild-all@01.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sparse@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=lkp@intel.com \
    --cc=michal.lkml@markovi.net \
    --cc=mingo@redhat.com \
    --cc=rdunlap@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=viresh.kumar@linaro.org \
    --cc=x86@kernel.org \
    --cc=yamada.masahiro@socionext.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 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.