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]
Message-ID: <20150518203431.GF18563@kernel.org>
Date:	Mon, 18 May 2015 17:34:31 -0300
From:	Arnaldo Carvalho de Melo <acme@...nel.org>
To:	Alexei Starovoitov <ast@...mgrid.com>
Cc:	Wang Nan <wangnan0@...wei.com>, paulus@...ba.org,
	a.p.zijlstra@...llo.nl, mingo@...hat.com, namhyung@...nel.org,
	jolsa@...nel.org, dsahern@...il.com, daniel@...earbox.net,
	brendan.d.gregg@...il.com, masami.hiramatsu.pt@...achi.com,
	lizefan@...wei.com, linux-kernel@...r.kernel.org, pi3orama@....com
Subject: Re: [RFC PATCH v3 12/37] bpf tools: Collect version and license from
 ELF sections

Em Mon, May 18, 2015 at 11:27:17AM -0700, Alexei Starovoitov escreveu:
> On 5/17/15 3:56 AM, Wang Nan wrote:
> >Expand bpf_obj_elf_collect() to collect license and kernel version
> >information in eBPF object file. eBPF object file should have a section
> >named 'license', which contains a string. It should also have a section
> >named 'version', contains a u32 LINUX_VERSION_CODE.
> >
> >bpf_obj_validate() is introduced to validate object file after loaded.
> >Currently it only check existance of 'version' section.
> >
> >Signed-off-by: Wang Nan <wangnan0@...wei.com>
> ...
> >+#ifdef min
> >+# undef min
> >+#endif
> >+#define min(x, y) ({				\
> >+	typeof(x) _min1 = (x);			\
> >+	typeof(y) _min2 = (y);			\
> >+	(void) (&_min1 == &_min2);		\
> >+	_min1 < _min2 ? _min1 : _min2; })
> >+
> 
> copy-paste from lib traceevent?
> there is another container_of copy-paste later in the patches.
> please use something like tools/lib/bpf/utils.h file for such
> things, so we can consolidate and share this code later.

Better, ask what the kernel does, find out where it does and replicate
that in tools/include/, i.e. a min function?!? This looks like useful
stuff! ;-)

So, the kernel has this one, in include/linux/kernel.h:

/*
 * min()/max()/clamp() macros that also do
 * strict type-checking.. See the
 * "unnecessary" pointer comparison.
 */
#define min(x, y) ({                            \
        typeof(x) _min1 = (x);                  \
        typeof(y) _min2 = (y);                  \
        (void) (&_min1 == &_min2);              \
        _min1 < _min2 ? _min1 : _min2; })

Looks a lot like that one above, no? :-)

So, lets take a look at: tools/include/linux/kernel.h... bummer, that
one wasn't yet moved from tools/perf/util/include/linux/kernel.h there.
Will do, and then it has this:

#ifndef min
#define min(x, y) ({                            \
        typeof(x) _min1 = (x);                  \
        typeof(y) _min2 = (y);                  \
        (void) (&_min1 == &_min2);              \
        _min1 < _min2 ? _min1 : _min2; })
#endif

We should minimize this mess :-)

- Arnaldo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ