lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 14 Mar 2013 09:47:24 -0000
From:	"David Laight" <David.Laight@...LAB.COM>
To:	"Hannes Frederic Sowa" <hannes@...essinduktion.org>,
	"Stephen Hemminger" <stephen@...workplumber.org>
Cc:	"Eric Dumazet" <eric.dumazet@...il.com>, <netdev@...r.kernel.org>,
	<yoshfuji@...ux-ipv6.org>, <brouer@...hat.com>
Subject: RE: [PATCH RFC] ipv6: use stronger hash for reassembly queue hash table

> On Wed, Mar 13, 2013 at 09:36:52PM -0700, Stephen Hemminger wrote:
> > > +#define INET_FRAG_FIND_CHECK(val)                                      \
> > > +       ({                                                              \
> > > +               static const char ___mem[] =                            \
> > > +                       KERN_ERR pr_fmt(                                \
> > > +                               "inet_frag_find: No memory left."       \
> > > +                               " Dropping fragment.\n");               \
> > > +               static const char ___limit[] =                          \
> > > +                       KERN_WARNING pr_fmt(                            \
> > > +                               "inet_frag_find: Fragment hash bucket"  \
> > > +                               " list length grew above limit "        \
> > > +                               __stringify(INETFRAGS_MAXDEPTH)         \
> > > +                               ". Dropping fragment.\n");              \
> > > +               bool ___b = true;                                       \
> > > +               if (IS_ERR_OR_NULL(val)) {                              \
> > > +                       ___b = false;                                   \
> > > +                       if (PTR_ERR(val) == -ENOBUFS)                   \
> > > +                               LIMIT_NETDEBUG(___limit);               \
> > > +                       else                                            \
> > > +                               LIMIT_NETDEBUG(___mem);                 \
> > > +               }                                                       \
> > > +               ___b;                                                   \
> > > +       })
> > > +
> >
> > Big macros suck, write it as an inline function or better yet a real function.
> 
> I switched to the macro to have string expansion with pr_fmt. So it is visible
> from the dmesg if IPv4, IPv6 or IPv6-nf did generate the message. This could
> be done with a function, too, but would require a bit more string handling.

I'd guess it would be best to have the IS_ERR_OR_NULL() inline calling a
real function on error.
I'd also have thought that INETFRAGS_MAXDEPTH should be run-time tunable.

	David

Powered by blists - more mailing lists