Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1700349

Re: [PATCH] infiniband: avoid overflow warning

From Daniel Micay <danielmicay@gmail.com>
Newsgroups linux.kernel
Subject Re: [PATCH] infiniband: avoid overflow warning
Date 2017-07-31 21:40 +0200
Message-ID <u9oHM-1Rm-21@gated-at.bofh.it> (permalink)
References (2 earlier) <u9dsZ-3oE-5@gated-at.bofh.it> <u9kXx-7Zm-23@gated-at.bofh.it> <u9lqy-8oa-17@gated-at.bofh.it> <u9lAe-8rv-11@gated-at.bofh.it> <u9ooq-1IS-13@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Mon, 2017-07-31 at 21:19 +0200, Arnd Bergmann wrote:
> On Mon, Jul 31, 2017 at 6:17 PM, Bart Van Assche <Bart.VanAssche@wdc.c
> om> wrote:
> > On Mon, 2017-07-31 at 18:04 +0200, Arnd Bergmann wrote:
> > > On Mon, Jul 31, 2017 at 5:32 PM, Bart Van Assche <Bart.VanAssche@w
> > > dc.com> wrote:
> > > > So inetaddr_event() assigns AF_INET so .sin_family and gcc warns
> > > > about code
> > > > that is only executed if .sin_family == AF_INET6? Since this
> > > > warning is the
> > > > result of incorrect interprocedural analysis by gcc, shouldn't
> > > > this be
> > > > reported as a bug to the gcc authors?
> > > 
> > > I think the interprocedural analysis here is just a little worse
> > > than it could
> > > be, but it's not actually correct.  It's not gcc that prints the
> > > warning (if
> > > it did, then I'd agree it would be a gcc bug) but the warning is
> > > triggered
> > > intentionally by the fortified version of memcpy in
> > > include/linux/string.h.
> > > 
> > > The problem as I understand it is that gcc cannot guarantee that
> > > it
> > > tracks the value of addr->sa_family at  least as far as the size
> > > of the
> > > stack object, and it has no strict reason to do so, so the inlined
> > > rdma_ip2gid() will still contain both cases.
> > 
> > Hello Arnd,
> > 
> > Had you already considered to uninline the rdma_ip2gid() function?
> 
> Not really, that would prevent the normal optimization from happening,
> so that would be worse than uninlining addr_event() as I tried.
> 
> It would of course get rid of the warning, so if you think that's a
> better
> solution, I won't complain.
> 
>        Arnd

You could also use __memcpy but using a struct assignment seems cleaner.

The compile-time fortify errors aren't perfect since they rely on GCC
being able to optimize them out and there can be dead code that has
intentional overflows, etc. Their purpose is just to move many runtime
errors (which don't have these false positives) to compile-time since
it's a lot less painful to deal with a few false positives like this
than errors slipping through to runtime (although it's less important
since it's going to be using WARN for the time being).

If the compile-time errors would removed, all of the real overflows
would still be detected at runtime. One option would be having something
like #define __NO_FORTIFY but *only* disabling the compile-time part of
the checks to work around false positives. *shrug*

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 09:00 +0200
  Re: [PATCH] infiniband: avoid overflow warning Moni Shoua <monis@mellanox.com> - 2017-07-31 09:10 +0200
    Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 09:40 +0200
      Re: [PATCH] infiniband: avoid overflow warning Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-07-31 17:40 +0200
        Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 18:10 +0200
          Re: [PATCH] infiniband: avoid overflow warning Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-07-31 18:20 +0200
            Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 21:20 +0200
              Re: [PATCH] infiniband: avoid overflow warning Daniel Micay <danielmicay@gmail.com> - 2017-07-31 21:40 +0200
      Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-07-31 23:00 +0200
        Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-07-31 23:20 +0200
          Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-07-31 23:20 +0200
            Re: [PATCH] infiniband: avoid overflow warning Daniel Micay <danielmicay@gmail.com> - 2017-07-31 23:40 +0200
            Re: [PATCH] infiniband: avoid overflow warning Arnd Bergmann <arnd@arndb.de> - 2017-08-01 00:00 +0200
              Re: [PATCH] infiniband: avoid overflow warning Kees Cook <keescook@chromium.org> - 2017-08-01 00:10 +0200

csiph-web