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, 17 Nov 2011 15:32:50 -0800
From:	Andrew Morton <akpm@...ux-foundation.org>
To:	Cristian Rodríguez <crrodriguez@...nsuse.org>
Cc:	Andrei Warkentin <andreiw@...are.com>,
	linux-kernel@...r.kernel.org,
	Rolf Eike Beer <eike-kernel@...tec.de>,
	opensuse-kernel@...nsuse.org,
	Sergiu Iordache <sergiu@...omium.org>,
	Marco Stornelli <marco.stornelli@...il.com>,
	Eddie Wai <eddie.wai@...adcom.com>,
	Jayamohan Kallickal <jayamohan.kallickal@...lex.com>,
	Guennadi Liakhovetski <g.liakhovetski@....de>
Subject: Re: [opensuse-kernel] Re: [PATCH] include/log2.h: Fix
 rounddown_pow_of_two(1)

On Thu, 17 Nov 2011 20:19:06 -0300
Cristian Rodr__guez <crrodriguez@...nsuse.org> wrote:

> On 17/11/11 20:05, Andrew Morton wrote:
> 
> > I assume that nobody has gone off and checked whether all current
> > callers will survive this change.  If they had, they'd have looked in
> > drivers/char/ramoops.c and seen:
> > 
> > 	rounddown_pow_of_two(pdata->mem_size);
> > 	rounddown_pow_of_two(pdata->record_size);
> > 
> > These operations are no-ops.  It should be
> > 
> > 	pdata->mem_size = rounddown_pow_of_two(pdata->mem_size);
> > 	pdata->record_size = rounddown_pow_of_two(pdata->record_size);
> > 
> > That we have this many warts using these interfaces is an indication
> > that the interfaces aren't very good.  Poorly documented, at least.
> > 
> 
> making that macro an inline function and annotating with
> __attribute__((warn_unused_result)) looks like a good start for me.

The problem is:

 * - this can be used to initialise global variables from constant data

I'm surprised that this is true.  Is gcc smart enough to actually do
this?

<tests it>

--- a/fs/open.c~a
+++ a/fs/open.c
@@ -31,6 +31,10 @@
 #include <linux/ima.h>
 #include <linux/dnotify.h>
 
+#include <linux/log2.h>
+
+int blap = rounddown_pow_of_two(42);
+
 #include "internal.h"
 
 int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
_

ooh, it worked.
--
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